OSDN Git Service

* real.c: Fix comment to reflect actual exponent size.
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2009-10-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2
3         * real.c: Fix comment to reflect actual exponent size.
4
5 2009-10-08  Ben Elliston  <bje@au.ibm.com>
6
7         * config/rs6000/a2.md: Add FSF comment header.
8
9 2009-10-07  Uros Bizjak  <ubizjak@gmail.com>
10
11         * config/i386/i386.md (any_extend): New code iterator.
12         (u, s): New code attributes.
13         (sgnprefix): Ditto.
14         (DWIH): Rewrite as code iterator for SI and DI modes.
15         (DWI): Rewrite as mode attribute.
16         (dwi): New mode attribute.
17         (di): Depend on SI mode and DI mode.
18         (doubleint_general_operand): Remove mode attribute.
19
20         (*lea_1): Macroize insn from *lea_1_rex64 and *lea_1 patterns using
21         DWIH mode iterator.
22
23         (*add<mode>3_doubleword): Use DWIH as the base mode iterator.
24         (*sub<mode>3_doubleword): Ditto.
25
26         (mul<mode>3): Macroize expander from mul{hi,si,di}3 patterns
27         using SWIM248 mode iterator.
28         (*mul<mode>3_1): Macroize insn from mul{si,di}3_1 patterns
29         using SWI48 mode iterator.
30         (<u>mul<mode><dwi>3): Macroize expander from {,u}mul{sidi,diti}3
31         patterns using DWIH mode iterator and any_extend code iterator.
32         (<u>mulqihi3): Macroize expander from {,u}mulqihi3 patterns
33         using any_extend code iterator.
34         (*<u>mul<mode><dwi>3_1): Macroize insn from {,u}mul{sidi,diti}3_1
35         patterns using DWIH mode iterator and any_extend code iterator.
36         (*<u>mulqihi3_1): Macroize insn from {,u}mulqihi3_1 patterns
37         using any_extend code iterator.
38         (<s>mul<mode>3_highpart): Macroize expander from
39         {s,u}mul{si,di}3_highpart patterns using DWIH mode iterator
40         and any_extend code iterator.
41         (*<s>muldi3_highpart_1): Macroize insn from
42         *{s,u}muldi3_highpart_rex64 patterns using any_extend code iterator.
43         (*<s>mulsi3_highpart_1): Macroize insn from *{s,u}mulsi3_highpart_1
44         patterns using any_extend code iterator.
45         (*<s>mulsi3_highpart_zext): Macroize insn from
46         *{s,u}mulsi3_highpart_zext patterns using any_extend code iterator.
47
48 2009-10-07  Jakub Jelinek  <jakub@redhat.com>
49
50         * dwarf2out.c (tree_add_const_value_attribute_for_decl): Don't add
51         DW_AT_const_value if VAR_DIE already has DW_AT_abstract_origin
52         refering to a DIE with DW_AT_const_value.
53
54 2009-10-07  Vladimir Makarov  <vmakarov@redhat.com>
55
56         PR middle-end/22072
57         * ira-lives.c (check_and_make_def_conflict): Process all operands.
58
59 2009-10-06  Jan Hubicka  <jh@suse.cz>
60
61         * cgraph.c (cgraph_node_can_be_local): Handle externally visible nodes
62         correctly.
63
64 2009-10-06  Uros Bizjak  <ubizjak@gmail.com>
65
66         * config/i386/i386.md (*lea_1_rex64, *lea_1, *lea_1_zext,
67         *lea_2_rex64): Move before *add<mode>_1 pattern.
68
69 2009-10-07  Jan Hubicka  <jh@suse.cz>
70
71         * collect2.c (main): Add -fno-whole-program.
72         * gcc.c (set_collect_gcc_options): Do not remove whole program here.
73
74 2009-10-07  Jan Hubicka  <jh@suse.cz>
75
76         * lto-symtab.c (lto_cgraph_replace_node): Assert that inline clones has
77         no address taken.
78         * cgraph.c (cgraph_mark_needed_node): Assert that inline clones are
79         never needed.
80         (cgraph_clone_node): Clear externally_visible flag for clones.
81         * cgraph.h (cgraph_only_called_directly_p,
82         cgraph_can_remove_if_no_direct_calls_p): New predicates.
83         * tree-pass.h (pass_ipa_whole_program_visibility): Declare.
84         * ipa-cp.c (ipcp_cloning_candidate_p): Use new predicate.
85         (ipcp_initialize_node_lattices, ipcp_estimate_growth,
86         ipcp_insert_stage): Likwise.
87         * cgraphunit.c (cgraph_decide_is_function_needed): Do not compute
88         externally_visible flag.
89         (verify_cgraph_node): Verify that inline clones look right.
90         (process_function_and_variable_attributes): Do not set
91         externally_visible flags.
92         (ipa_passes): Avoid executing small_ipa_passes at LTO stage; they've
93         been already run.
94         * lto-cgraph.c (lto_output_node): Assert that inline clones are not
95         boundaries.
96         * ipa-inline.c (cgraph_clone_inlined_nodes): Use new predicates;
97         clear externally_visible when turning into inline clones
98         (cgraph_mark_inline_edge): Use new predicates.
99         (cgraph_estimate_growth): Likewise.
100         (cgraph_decide_inlining): Likewise.
101         * ipa.c (cgraph_postorder): Likewise.
102         (cgraph_remove_unreachable_nodes): Likewise; sanity check
103         that inline clones are not needed.
104         (cgraph_externally_visible_p): New predicate.
105         (function_and_variable_visibility): Add whole_program parameter;
106         always set externally_visible flag; handle COMDAT function
107         privatization.
108         (local_function_and_variable_visibility): New function.
109         (gate_whole_program_function_and_variable_visibility): New function.
110         (whole_program_function_and_variable_visibility): New function.
111         (pass_ipa_whole_program_visibility): New function.
112         * passes.c  (init_optimization_passes): Add whole program visibility
113         pass.
114         (do_per_function_toporder, function_called_by_processed_nodes_p): Do
115         not care about needed/reachable flags.
116         * varpool.c: Include flags.h
117         (decide_is_variable_needed): When doing LTO assume whole-program mode.
118         (varpool_finalize_decl): When we are in LTO read-back, all variables
119         are analyzed.
120         (varpool_analyze_pending_decls): Skip analyzis of analyzed vars.
121
122 2009-10-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
123
124         * config/s390/tpf.h (TARGET_DEFAULT): Remove MASK_HARD_FLOAT and
125         add MASK_HARD_DFP.
126
127 2009-10-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
128
129         * config.gcc: Don't include the makefile fragments intended for
130         libgcc.
131         * config/s390/fixdfdi.h: File removed.
132         * config/s390/libgcc-glibc.ver: File removed.
133         * config/s390/s390.h: Remove the fixdfdi.h hack.
134         * config/s390/t-crtstuff: File moved to libgcc dir.
135         * config/s390/t-linux: Likewise.
136         * config/s390/t-tpf: libgcc specific parts removed.
137         * config/s390/t-linux64: Likewise.
138
139 2009-10-06  Jerry Quinn  <jlquinn@optonline.net>
140
141         * Makefile.in (lto-wrapper): Use COMPILER and ALL_COMPILERFLAGS.
142         (lto-compress.o): Likewise.
143
144 2009-10-07  Danny Smith  <dannysmith@users.sourceforge.net>
145
146         PR target/41512
147         * config/i386/winnt.c (i386_pe_determine_dllexport_p): Don't propagate
148         dllexport to class members here.
149         (i386_pe_determine_dllimport_p): Only check static class data for
150         definition.
151         (i386_pe_encode_section_info): Don't recheck DECL_DLLIMPORT_P.
152         * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Only check
153         functions for vague linkage.
154         (i386_pe_type_dllexport_p): Fix formatting.
155         (maybe_add_dllexport) New function.
156         (i386_pe_adjust_class_at_definition): Use it to propagate dllexport
157         to class members.
158
159 2009-10-07  Ben Elliston  <bje@au.ibm.com>
160
161         * config/rs6000/a2.md: Remove duplicated lines.
162
163 2009-10-07  Ben Elliston  <bje@au.ibm.com>
164
165         * config.gcc (powerpc*-*-*): Handle a2.
166         * config/rs6000/rs6000.md (cpu): Add ppca2.  Include "a2.md".
167         * config/rs6000/a2.md: New file.
168         * config/rs6000/rs6000.opt (mno-update): New.
169         (mupdate): Return to using a mask, not a var.
170         * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add support for a2.
171         (enum processor_type): Add PROCESSOR_PPCA2.
172         * config/rs6000/rs6000.c (ppca2_cost): New costs.
173         (rs6000_override_options): Add "a2" to processor_target_table.
174         Update rs6000_always_hint logic.  Correctly set rs6000_cost for a2.
175         * doc/invoke.texi (RS/6000 and PowerPC Options): Document -mcpu=a2.
176
177 2009-10-06  Uros Bizjak  <ubizjak@gmail.com>
178
179         * config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
180         Use explicit gen_truncxfsf2 and gen_truncxfdf2 references to avoid
181         reference to nonexistent gen_truncxfxf2 function.
182
183 2009-10-06  Uros Bizjak  <ubizjak@gmail.com>
184
185         * config/i386/i386.md (SWI48, SDWIM, DWI): New mode iterators.
186         (DWIH, g, di, doubleint_general_operand): New mode attributes.
187         (general_operand): Handle TI mode.
188         (add<mode>3): Macroize expander from add{qi,hi,si,di,ti}3 patterns
189         using SDWIM mode iterator.
190         (*add<mode>3_doubleword): New insn_and_split pattern.  Macroize
191         pattern from *add{di,ti}3_1 patterns and corresponding splitters
192         using DWI mode iterator.
193         (add<mode>3_carry): Macroize insn from add{qi,hi,si,di}3_carry
194         patterns using SWI mode iterator.
195         (*add<mode>3_cc): Macroize insn from add{si,di}3_cc patterns
196         using SWI48 mode iterator.
197         (*add<mode>_1): Ditto from add{si,di}_1 patterns.
198         (*add<mode>_2): Ditto from add{si,di}_2 patterns.
199         (*add<mode>_3): Ditto from add{si,di}_3 patterns.
200         (*add<mode>_5): Ditto from add{si,di}_5 patterns.
201         (sub<mode>3): Macroize expander from sub{qi,hi,si,di,ti}3 patterns
202         using SDWIM mode iterator.
203         (*sub<mode>3_doubleword): New insn_and_split pattern.  Macroize
204         pattern from *sub{di,ti}3_1 patterns and corresponding splitters
205         using DWI mode iterator.
206         (sub<mode>3_carry): Macroize insn from sub{qi,hi,si,di}3_carry
207         patterns using SWI mode iterator.
208         (*sub<mode>_1): Ditto from from sub{qi,hi,si,di}_1 patterns.
209         (*sub<mode>_2): Ditto from sub{qi,hi,si,di}_2 patterns.
210         (*sub<mode>_3): Ditto from sub{qi,hi,si,di}_3 patterns.
211         (<plusminus_insn>xf3): Macroize expander from addxf3 and subxf3
212         patterns using plusminus code iterator.
213         (<plusminus_insn><mode>3): Macroize expander from add<mode>3 and
214         sub<mode>3 patterns using plusminus code iterator.
215         * config/i386/i386.c (override_options): Update call to
216         gen_subdi_carry_rex64 for renamed function.
217         (ix86_expand_int_addcc): Update calls to gen_subdi3_carry_rex64
218         and gen_adddi3_carry_rex64 for renamed functions.  Use indirect
219         calls to instruction expanders.
220
221 2009-10-06  Martin Jambor  <mjambor@suse.cz>
222
223         PR bootstrap/41395
224         * opts.c (decode_options): Run IPA-SRA at -O2.
225
226 2009-10-06  Richard Guenther  <rguenther@suse.de>
227
228         * lto-symtab.c (lto_symtab_entry_hash): Hash strings, not pointers.
229
230 2009-10-06  Tobias Burnus  <burnus@net-b.de>
231
232         PR lto/41591
233         * doc/invoke.texi (-flto,-fwhole-program): Make clear that the
234         -flto and -fwhole-program flags can be combined.
235
236 2009-10-06  Ryan Mansfield  <rmansfield@qnx.com>
237
238         PR driver/41217
239         * gcc.c (process_command): Check that -o argument was specified.
240
241 2009-10-06  Jerry Quinn  <jlquinn@optonline.net>
242
243         * gimple.c (gimple_type_hash): Use CONST_CAST_TREE to fix
244         compilation.
245
246 2009-10-05  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
247
248         * c.opt (Wjump-misses-init): Fix typo to enable for ObjC.
249         * doc/invoke.texi (Warning Options): Annotate allowed languages
250         for -Wunsuffixed-float-constants.
251
252 2009-10-05  Jakub Jelinek  <jakub@redhat.com>
253
254         * dwarf2out.c (modified_type_die): Don't add DW_AT_name to
255         DW_TAG_{const,volatile}_type if its DW_AT_type already has the
256         same name and isn't the main variant.
257
258         PR debug/41558
259         * dwarf2out.c (loc_by_reference): Removed.
260         (dw_loc_list_1): New function.
261         (dw_loc_list): Remove toplev argument, add want_address argument.
262         Don't look at decl_by_reference_p at all.  Use dw_loc_list_1.
263         (loc_list_from_tree) <case VAR_DECL>: Pass want_address rather than
264         want_address == 2 to dw_loc_list.  For successful dw_loc_list
265         set have_address to 1 only if want_address is not 0.
266
267 2009-10-05  Richard Sandiford  <rdsandiford@googlemail.com>
268
269         * config/mips/mips-protos.h (mips_trampoline_code_size): Declare.
270         * config/mips/mips.h (TRAMPOLINE_SIZE): Redefine as the size of
271         a code block followed by two pointers.
272         (TRAMPOLINE_ALIGNMENT): Define to 64 for 32-bit targets too.
273         * config/mips/mips.c (MIPS_LOAD_PTR): New macro.
274         (MIPS_MOVE): Likewise.
275         (MIPS_LUI): Likewise.
276         (MIPS_JR): Likewise.
277         (MIPS_BAL): Likewise.
278         (MIPS_NOP): Likewise.
279         (mips_asm_trampoline_template): Delete.
280         (mips_trampoline_code_size): New function.
281         (mips_trampoline_init): Add shorter sequences for all cases
282         except Pmode == DImoe && !TARGET_USE_PIC_FN_ADDR_REG.
283         Calculate the opcodes directly, rather than copying from a template.
284         Only flush the code part of the trampoline.
285         (TARGET_ASM_TRAMPOLINE_TEMPLATE): Delete.
286
287 2009-10-05  Richard Sandiford  <rdsandiford@googlemail.com>
288
289         * config/mips/mips.h (DWARF_FRAME_RETURN_COLUMN): Replace
290         GP_REG_FIRST + 31 with RETURN_ADDR_REGNUM.
291         (INCOMING_RETURN_ADDR_RTX): Likewise.
292         (FUNCTION_PROFILER): Likewise.  Replace GP_REG_FIRST + 1
293         with AT_REGNUM.
294         * config/mips/sdemtk.h (FUNCTION_PROFILER): Replace GP_REG_FIRST + 31
295         with RETURN_ADDR_REGNUM.
296         (MIPS_SAVE_REG_FOR_PROFILING_P): Likewise.
297         * config/mips/mips.c (mips16_build_call_stub): Replace
298         GP_REG_FIRST + 31 with RETURN_ADDR_REGNUM, GP_REG_FIRST + 1
299         with AT_REGNUM and 31 with RETURN_ADDR_REGNUM.
300         (mips_print_operand_punctuation): Likewise.
301         (mips_frame_set): Likewise.
302         (mips16e_output_save_restore): Likewise.
303         (mips_cfun_might_clobber_call_saved_reg_p): Likewise.
304         (mips_save_reg_p): Likewise.
305         (mips_return_addr): Likewise.
306         (mips_set_return_address): Likewise.
307         (mips_direct_save_slot_move_p): Likewise.
308         (mips_output_function_prologue): Likewise.
309         (mips_restore_reg): Likewise.
310         (mips_expand_epilogue): Likewise.
311         (mips_epilogue_uses): Likewise.
312         * config/mips/mips.md (RETURN_ADD_REGNUM): Define.
313         (*mov<mode>_ra): Use it instead of a hard-coded 31.
314         (clear_hazard_<mode>): Likewise.
315         (call_internal): Likewise.
316         (call_internal_direct): Likewise.
317         (call_direct_split): Likewise.
318         (call_value_internal): Likewise.
319         (call_value_split): Likewise.
320         (call_value_internal_direct): Likewise.
321         (call_value_direct_split): Likewise.
322         (call_value_multiple_internal): Likewise.
323         (call_value_multiple_split): Likewise.
324
325 2009-10-05  Eric Botcazou  <ebotcazou@adacore.com>
326             Jakub Jelinek  <jakub@redhat.com>
327
328         PR rtl-optimization/41511
329         * combine.c (record_value_for_reg): Pass explicit values as argument
330         to get_last_value_validate.
331         (get_last_value_validate): Document INSN parameter.
332         For non-readonly MEMs, assume they might have been modified if INSN
333         was in another basic block.
334         (get_last_value): Minor reformatting.
335
336 2009-10-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
337
338         PR tree-opt/40992
339         * final.c (asm_str_count): Split out from asm_insn_count.
340         * rtl.h (asm_str_count): New prototype.
341         * tree-inline (estimate_num_insns) <case GIMPLE_ASM>: Call
342         asm_str_count.
343
344 2009-10-05  Sriraman Tallam  <tmsriram@google.com>
345
346         * doc/plugins.texi: Change plugin_pass to register_pass_info.
347
348 2009-10-05  Basile Starynkevitch  <basile@starynkevitch.net>
349             Rafael Espindola  <espindola@google.com>
350
351         * gengtype.c (write_types): Moved call to write_func_for_structure
352         into seperate loops.
353
354 2009-10-05  Richard Guenther  <rguenther@suse.de>
355
356         PR lto/41281
357         * lto-cgraph.c (output_cgraph): Output toplevel asms.
358         (input_cgraph_1): Input toplevel asms.
359
360 2009-10-05  Richard Guenther  <rguenther@suse.de>
361
362         PR lto/40902
363         * lto-symtab.c (lto_compatible_attributes_p): Remove.
364         (external_aggregate_decl_p): Likewise.
365         (lto_symtab_compatible): Re-structure.  Remove dead code.
366         For variables ignore toplevel qualifiers when comparing types.
367         Issue warnings, not errors for mismatched user-alignment.
368
369 2009-10-05  Richard Guenther  <rguenther@suse.de>
370
371         PR lto/41552
372         PR lto/41487
373         * lto-symtab.c (struct lto_symtab_base_def): Remove.
374         (struct lto_symtab_identifier_def): Likewise.
375         (struct lto_symtab_decl_def): Likewise.
376         (struct lto_symtab_entry_def): New.
377         (lto_symtab_identifier_t): Rename to ...
378         (lto_symtab_entry_t): ... this.
379         (lto_symtab_decls): Remove.
380         (lto_symtab_base_hash): Rename to ...
381         (lto_symtab_entry_hash): ... this.
382         (lto_symtab_base_eq): Rename to ...
383         (lto_symtab_entry_eq): ... this.
384         (lto_symtab_base_marked_p): Rename to ...
385         (lto_symtab_entry_marked_p): ... this.
386         (lto_symtab_identifier_marked_p): Remove.
387         (lto_symtab_decl_marked_p): Likewise.
388         (lto_symtab_maybe_init_hash_tables): Rename to ...
389         (lto_symtab_maybe_init_hash_table): ... this.
390         (lto_symtab_set_resolution_and_file_data): Remove.
391         (lto_symtab_register_decl): New function.
392         (lto_symtab_get_identifier): Remove.
393         (lto_symtab_get): New function.
394         (lto_symtab_get_resolution): Adjust.
395         (lto_symtab_get_identifier_decl): Remove.
396         (lto_symtab_set_identifier_decl): Likewise.
397         (lto_symtab_merge_decl): Rename to ...
398         (lto_symtab_merge): ... this.  Rewrite.
399         (lto_symtab_merge_var): Remove.
400         (lto_symtab_merge_fn): Likewise.
401         (lto_symtab_prevailing_decl): Adjust.
402         (lto_cgraph_replace_node): New function.
403         (lto_symtab_merge_decls_2): Likewise.
404         (lto_symtab_merge_decls_1): Likewise.
405         (lto_symtab_fixup_var_decls): Likewise.
406         (lto_symtab_resolve_symbols): Likewise.
407         (lto_symtab_merge_decls): Likewise.
408         (lto_symtab_prevailing_decl): Adjust.
409         (lto_symtab_get_symtab_def): Remove.
410         (lto_symtab_get_file_data): Likewise.
411         (lto_symtab_clear_resolution): Adjust.
412         (lto_symtab_clear_resolution): Likewise.
413         * lto-cgraph.c (input_edge): Do not merge cgraph nodes here.
414         (input_cgraph_1): Likewise.
415         * lto-streamer-in.c (get_resolution): Do not provide fake
416         symbol resolutions here.
417         (deferred_global_decls): Remove.
418         (lto_register_deferred_decls_in_symtab): Likewise.
419         (lto_register_var_decl_in_symtab): Change signature, register
420         variable via lto_symtab_register_decl.
421         (lto_register_function_decl_in_symtab): Likewise.
422         (lto_read_tree): Adjust.
423         * lto-streamer.h (lto_register_deferred_decls_in_symtab): Remove.
424         (lto_symtab_merge_var): Likewise.
425         (lto_symtab_merge_fn): Likewise.
426         (lto_symtab_register_decl): Declare.
427         (lto_symtab_merge_decls): Likewise.
428
429 2009-10-05  Richard Guenther  <rguenther@suse.de>
430
431         PR tree-optimization/23821
432         * tree-vrp.c (vrp_finalize): Do not perform copy propagation.
433         * tree-ssa-dom.c (cprop_operand): Do not propagate copies into
434         simple IV increments.
435
436 2009-10-05  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
437
438         * config/arm/arm.c (arm_override_options): Really initialize
439         flag_dwarf2_cfi_asm to 0.
440
441 2009-10-05  Doug Kwan  <dougkwan@google.com>
442
443         PR rtl-optimization/41574
444         * combine.c (distribute_and_simplify_rtx): Quit if RTX mode is
445         floating point and we are not doing unsafe math optimizations.
446
447 2009-10-03  Simon Baldwin  <simonb@google.com>
448             Cary Coutant  <ccoutant@google.com>
449             Rafael Espindola  <espindola@google.com>
450             Richard Guenther  <rguenther@suse.de>
451             Jan Hubicka  <jh@suse.cz>
452             Doug Kwan <dougkwan@google.com>
453             H.J. Lu  <hongjiu.lu@intel.com>
454             Bill Maddox  <maddox@google.com>
455             Ryan Mansfield  <rmansfield@qnx.com>
456             Diego Novillo  <dnovillo@google.com>
457             Ollie Wild  <aaw@google.com>
458             Kenneth Zadeck <zadeck@naturalbridge.com>
459
460         * lto-cgraph.c: New file.
461         * lto-compress.c: New file.
462         * lto-compress.h: New file.
463         * lto-opts.c: New file.
464         * lto-section-in.c: New file.
465         * lto-section-out.c: New file.
466         * lto-streamer-in.c: New file.
467         * lto-streamer-out.c: New file.
468         * lto-streamer.c: New file.
469         * lto-streamer.h: New file.
470         * lto-symtab.c: New file.
471         * lto-wpa-fixup.c: New file.
472         * lto-wrapper.c: New file.
473
474 2009-10-03  Simon Baldwin  <baldwin@google.com>
475             Ben Elliston  <bje@au.ibm.com>
476             Rafael Espindola  <espindola@google.com>
477             Nathan Froyd  <froydnj@codesourcery.com>
478             Jan Hubicka  <jh@suse.cz>
479             Doug Kwan  <dougkwan@google.com>
480             Diego Novillo  <dnovillo@google.com>
481             Kenneth Zadeck  <zadeck@naturalbridge.com>
482
483         * Makefile.in (enable_lto): New.
484         (site.exp): If @enable_lto@ is set to 'yes' define
485         ENABLE_LTO.
486         (LINKER_PLUGIN_API_H): Define.
487         (LTO_SYMTAB_H): Define.
488         (LTO_STREAMER_H): Define.
489         (TREE_VECTORIZER_H): Define.
490         (INCLUDES): Add LIBELFINC.
491         (OBJS-common): Add lto-cgraph.o, lto-streamer-in.o,
492         lto-streamer-out.o, lto-section-in.o, lto-section-out.o,
493         lto-symtab.o, lto-opts.o, lto-streamer.o, lto-wpa-fixup.o,
494         lto-compress.o.
495         (MOSTLYCLEANFILES): Add lto-wrapper$(exeext)
496         (native): Add lto-wrapper$(exeext)
497         (lto-compress.o, lto-cgraph.o, lto-streamer-in.o,
498         lto-streamer-out.o, lto-section-in.o, lto-section-out.o,
499         lto-symtab.o, lto-opts.o, lto-streamer.o,
500         lto-wpa-fixup.o): New rules.
501         (gimple.o): Add dependency on LTO_HEADER_H and
502         LTO_SECTION_OUT_H.
503         (varasm.o): Add dependency on tree-iterator.h.
504         (cgraph.o): Add dependency on cif-code.def.
505         (ipa-reference.o): Add dependency on LTO_STREAMER_H.
506         (ipa-pure-const.o): Likewise.
507         (GTFILES): Add lto-symtab.c.
508         (install-lto-wrapper): New.
509         * configure.ac: If 'lto' is in enable_languages, define
510         ENABLE_LTO and enable_lto.
511         If LIBELFLIBS is set, define HAVE_libelf.
512         * config.in: Regenerate.
513
514 2009-10-03  Rafael Espindola  <espindola@google.com>
515             Diego Novillo  <dnovillo@google.com>
516
517         * cgraphunit.c (ipa_passes): Prevent lto1 from calling
518         ipa_write_summaries.
519         Call execute_ipa_summary_passes for all_regular_ipa_passes and
520         all_lto_gen_passes.
521         (cgraph_optimize): Make extern.
522
523 2009-10-03  Nathan Froyd  <froydnj@codesourcery.com>
524             Kenneth Zadeck <zadeck@naturalbridge.com>
525
526         * toplev.c (in_lto_p): Declare.
527         * collect2.c (scan_prog_file): Read all the output when reading
528         information for LTO.
529         (enum lto_mode_d): Declare.
530
531 2009-10-03  Richard Guenther  <rguenther@suse.de>
532             Diego Novillo  <dnovillo@google.com>
533
534         * gimple.c: Include target.h and alias.h.
535         (gimple_types): Declare.
536         (type_hash_cache): Declare.
537         (gimple_alloc_stat): Make extern.
538         (gimple_build_eh_must_not_throw): Call
539         gimple_eh_must_not_throw_set_fndecl.
540         (struct type_pair_d): Declare.
541         (type_pair_t): Declare.
542         (type_pair_hash): New.
543         (type_pair_eq): New.
544         (lookup_type_pair): New.
545         (gimple_force_type_merge): New.
546         (compare_type_names_p): New.
547         (compare_field_offset): New.
548         (gimple_types_compatible_p): New.
549         (struct sccs): Declare.
550         (next_dfs_num): Declare.
551         (iterative_hash_gimple_type): New.
552         (visit): New.
553         (iterative_hash_type_name): New.
554         (iterative_hash_gimple_type): New.
555         (gimple_type_hash): New.
556         (gimple_type_eq): New.
557         (gimple_register_type): New.
558         (print_gimple_types_stats): New.
559         (gimple_signed_or_unsigned_type): New.
560         (gimple_unsigned_type): New.
561         (gimple_signed_type): New.
562         (gimple_get_alias_set): New.
563         (gimple_decl_printable_name): Do not use DMGL_TYPES.
564         * gimple.h (gimple_alloc, gimple_alloc_stat): Declare.
565         (gimple_force_type_merge): Declare.
566         (gimple_types_compatible_p): Declare.
567         (gimple_register_type): Declare.
568         (print_gimple_types_stats): Declare.
569         (gimple_unsigned_type): Declare.
570         (gimple_signed_type): Declare.
571         (gimple_get_alias_set): Declare.
572         (gimple_eh_must_not_throw_set_fndecl): New.
573
574 2009-10-03  Jan Hubicka  <jh@suse.cz>
575             Kenneth Zadeck <zadeck@naturalbridge.com>
576
577         * ipa-pure-const.c: Include lto-streamer.h.
578         (register_hooks): Factor out of ...
579         (generate_summary): ... here.
580         (pure_const_write_summary): New.
581         (pure_const_read_summary): New.
582         (pass_ipa_pure_const): Add pure_const_write_summary and
583         pure_const_read_summary.
584         * ipa-reference.c: Include lto-streamer.h.
585         (add_new_function): New.
586         (remove_node_data): New.
587         (duplicate_node_data): New.
588         (ipa_init): Guard against multiple calls.
589         Move hook setup from analyze_function.
590         (write_node_summary_p): New.
591         (ipa_reference_write_summary): New.
592         (ipa_reference_read_summary): New.
593         (pass_ipa_reference): Add ipa_reference_write_summary and
594         ipa_reference_read_summary.
595         * cgraph.h (cgraph_local_info): Add field lto_file_data.
596         (struct cgraph_edge): Add fields lto_stmt_uid and
597         call_stmt_cannot_inline_p.
598         (cgraph_optimize): Declare.
599         (cgraph_decide_is_function_needed): Declare.
600         (reset_inline_failed): Declare.
601         (enum LTO_cgraph_tags): Declare.
602         (LTO_cgraph_tag_names): Declare.
603         (LCC_NOT_FOUND): Define.
604
605 2009-10-03  Doug Kwan  <dougkwan@google.com>
606             Rafael Espindola  <espindola@google.com>
607             Jan Hubicka  <jh@suse.cz>
608             Diego Novillo  <dnovillo@google.com>
609             Kenneth Zadeck  <zadeck@naturalbridge.com>
610
611         * passes.c (all_regular_ipa_passes): New.
612         (all_ipa_passes): Rename to all_small_ipa_passes.
613         (init_optimization_passes): Init all_regular_ipa_passes.
614         * tree-pass.h (all_regular_ipa_passes): New.
615         (all_ipa_passes): Rename to all_small_ipa_passes.
616         * passes.c (all_lto_gen_passes): New.
617         (init_optimization_passes): Initialize all_lto_gen_passes.
618         (execute_ipa_summary_passes): Make non-static.
619         (ipa_write_summaries_1): New.
620         (ipa_write_summaries_2): New.
621         (ipa_write_summaries): New.
622         (ipa_write_summaries_of_cgraph_node_set): New.
623         (ipa_read_summaries_1): New.
624         (ipa_read_summaries): New.
625         (execute_ipa_pass_list): Call cgraph_process_new_functions.
626         (execute_regular_ipa_pass_list): Remove.
627         (init_optimization_passes): Schedule
628         pass_rebuild_cgraph_edges and pass_early_inline outside
629         of pass_all_early_optimizations.  Document reason.
630         (pass_ipa_lto_gimple_out, pass_ipa_lto_wpa_fixup,
631         pass_ipa_lto_finish_out): New pass.
632         (pass_ipa_summary_passes): Start and stop timers if the pass
633         has them.
634         (execute_all_ipa_transforms): New.
635         (execute_one_pass): Don't call execute_one_ipa_transform_pass.
636         (dump_properties, debug_properties): New.
637         * tree-optimize.c (gate_all_early_local_passes): Return
638         false if we are in lto1.
639         (tree_rest_of_compilation): Call execute_all_ipa_transforms.
640         * tree-pass.h (execute_all_ipa_transforms): Declare.
641         (pass_ipa_function_and_variable_visibility): Declare.
642         (pass_ipa_early_inline): Declare.
643         (pass_ipa_lto_gimple_out): Declare.
644         (pass_ipa_lto_wpa_fixup): Declare.
645         (pass_ipa_lto_finish_out): Declare.
646         (all_small_ipa_passes, all_regular_ipa_passes,
647         all_lto_gen_passes): Declare.
648         (execute_ipa_summary_passes): Declare.
649         (execute_all_ipa_transforms): Declare.
650         (ipa_write_summaries): Declare
651         (ipa_write_summaries_of_cgraph_node_set): Declare.
652         (ipa_read_summaries): Declare.
653
654 2009-10-03  Doug Kwan  <dougkwan@google.com>
655             Ollie Wild  <aaw@google.com>
656
657         * ipa-prop.c (ipa_propagate_indirect_call_infos): Do
658         nothing in WPA.
659
660         * collect2.c (LTO_MODE_NONE, LTO_MODE_LTO, LTO_MODE_WPA): New enums.
661         (lto_mode): New variable.
662         (maybe_run_lto_and_relink): Handle the -fwpa option.
663         (main): Handle the -fwpa option.
664         (maybe_unlink_list): New function.
665         * gcc.c (link_lto_options): Replace -flto with -fwpa.
666         * common.opt (flto): New flag.
667         * toplev.c (flag_generate_lto): Declare.
668
669 2009-10-03  Simon Baldwin  <simonb@google.com>
670
671         * common.opt (flto-compression-level): New flag.
672
673         * opts.c: Include lto-opts.h.
674         (handle_option): Call lto_register_user_option for each
675         valid option handled.
676         * (decode_options): Clear registered options before the options
677         handling loop.
678
679 2009-10-03  Cary Coutant  <ccoutant@google.com>
680
681         * collect2.c (is_elf): New function.
682         (scan_prog_file): Require LTO object to be in ELF format.
683
684 2009-10-03  Rafael Espindola  <espindola@google.com>
685
686         * gcc.c (LINK_COMMAND_SPEC): Use the -pass-through option to pass
687         libgcc to the linker.
688
689         * ipa-cp.c (cgraph_gate_cp): Return false if LTRANS is
690         running.
691
692         * collect2.c (maybe_run_lto_and_relink): Execute lto-wrapper.
693         (collect_execute): Add flags argument. Pass flags to pex_run. Update
694         all callers.
695         * collect2.h (collect_execute): Add flags argument.
696         * tlink.c (tlink_execute): Update call to collect_execute.
697         * gcc.c (main): Set the COLLECT_LTO_WRAPPER environment variable.
698         (use_linker_plugin): New.
699         (use_linker_plugin_spec_function): New.
700         (LINK_COMMAND_SPEC): Pass plugin options to the linker.
701         (linker_plugin_file_spec): New.
702         (lto_wrapper_spec): New.
703         (lto_gcc_spec): New.
704         (static_specs): Add linker_plugin_file, lto_wrapper and lto_gcc.
705         (static_spec_functions): Add use-linker-plugin.
706         (process_command): Handle -use-linker-plugin.
707         (main): Use lto_wrapper_spec instead of lto_wrapper. Set
708         linker_plugin_file_spec and lto_gcc_spec.
709         (use_linker_plugin_spec_function): New.
710
711 2009-10-03  Richard Guenther  <rguenther@suse.de>
712
713         PR lto/41547
714         PR lto/41548
715         * tree.h (is_lang_specific): Include LANG_TYPE.
716         * tree.c (find_decls_types_r): Manually add interesting parts
717         of TYPE_FIELDS.  Walk BINFO_VIRTUALS.  Do not walk TYPE_METHODS.
718
719         * gimple.c (type_pair_hash): Make symmetric.
720         (type_pair_eq): Likewise.
721         (lookup_type_pair): Increase initial hashtable size.
722         (gimple_force_type_merge): Rely on type-pair symmetry.
723         (visit): Remove excessive checking code.
724         (iterative_hash_type_name): Do not hash TYPE_NAME of
725         anonymous unions.
726         (gimple_register_type): Remove getenv calls, shrink initial
727         hashtable size.
728
729         PR middle-end/41502
730         * cgraphunit.c (ipa_passes): Do not remove bodies of extern
731         inline functions if not generating lto output.
732
733         PR lto/41379
734         * toplev.c (finalize): In WPA mode remove the asm file.
735
736 2009-10-03  Doug Kwan  <dougkwan@google.com>
737
738         * ipa-inline.c (cgraph_mark_inline): Check
739         edge->call_stmt_cannot_inline_p instead of calling
740         gimple_call_cannot_inline_p.
741         (cgraph_decide_inlining): Do nothing in WPA and LTRANS.
742         (cgraph_gate_ipa_early_inlining): Return false if
743         in_lto_p is set.
744         (inline_generate_summary): Do nothing in LTRANS.
745         * cgraph.c (initialize_inline_failed): Make sure
746         e->call_stmt exists before calling
747         gimple_call_cannot_inline_p.
748         (cgraph_create_edge): Set edge->call_stmt_cannot_inline_p.
749         (cgraph_clone_edge): Add argument STMT_UID.  Modify all
750         callers.
751         Update new_edge->lto_stmt_uid.
752         * cgraphbuild.c (reset_inline_failed): New.
753
754         * common.opt (fwpa): New flag.
755         (fltrans): New option.
756         * gcc.c (gcc_lto_option_t): New type.
757         (current_lto_option): New variable.
758         (lto_single_spec_function): Remove and is replaced by ..
759         (lto_option_spec_function): New function.
760         (LINK_COMMAND_SPEC): Use link_lto_option spec instead of just
761         passing the -flto flag.
762         (cc1_options): Separate non-LTO related parts into ..
763         (cc1_non_lto_options): Non-LTO related options shared by all FEs.
764         (lto1_options): New spec for lto FE.
765         (link_lto_options): New spec for handling LTO flags in linker.
766         (invoke_lto_single): Re-format to fit in 80 column.  Replace
767         lto-single with lto-option.
768         (static_specs): Add cc1_non_lto_options, lto1_options and
769         link_lto_options.
770         (static_spec_function): Replace lto-single with lto-option.
771         (process_command): Handle -flto, -fwpa and -fltran
772         by setting current_lto_option and not passing it to subprocess
773         unconditionally.
774
775 2009-10-03  Bill Maddox  <maddox@google.com>
776
777         Add `gcc' driver support for link-time code generation (LTO).
778
779         * collect2.c (enum pass): Add new literal PASS_LTOINFO.
780         (lto_flag, lto_objects, lto_o_file): New variables.
781         (struct lto_object, struct lto_object_list): New structures.
782         (collect_exit, handler): Remove LTO temporary output file on exit.
783         (add_lto_object): New function.
784         (maybe_run_lto_and_relink): New function. Perform link time code
785         generation and relinking for object files containing LTO information.
786         (main): Invoke maybe_run_lto_and_relink().
787         (dump_argv): New function.  For debugging, currently disabled.
788         (scan_prog_file): Add LTO information pass.
789         * gcc.c (LINK_COMMAND_SPEC): Pass `-flto' switch to linker, i.e.,
790         collect2.
791         * toplev.c (compile_file): Emit assembler directive to create
792         the `gnu_lto_v1' marker symbol when compiling with `-flto'.
793
794 2009-10-03  Diego Novillo  <dnovillo@google.com>
795
796         * c.opt: Add LTO to warn_abi and warn_psabi.
797
798         * tree.c (fld_worklist_push): Rename from PUSH.
799         Convert to static inline function.
800         Ignore language-specific nodes.
801         Update all users.
802         (find_decls_types_r): Do not traverse the subtrees of
803         language-specific nodes.
804         Do not traverse DECL_INITIAL for TYPE_DECLs.
805         * tree.h (is_lang_specific): New.
806         * langhooks.h (struct lang_hooks_for_decls): Remove
807         may_need_assembler_name_p.  Update all users.
808
809         * c-common.c (set_builtin_user_assembler_name): Move ...
810         * builtins.c (set_builtin_user_assembler_name): ... here.
811         (is_builtin_name): Add comment
812         (is_builtin_fn): New.
813         * except.c (output_ttype): Only call
814         lookup_type_for_runtime if TYPE is not a runtime type.
815
816         * passes.c (register_pass): Call position_pass on
817         all_small_ipa_passes, all_regular_ipa_passes and
818         all_lto_gen_passes.
819         * timevar.def (TV_IPA_LTO_GIMPLE_IO): Define.
820         (TV_IPA_LTO_DECL_IO): Define.
821         (TV_IPA_LTO_CGRAPH_IO): Define.
822         (TV_LTO): Define.
823         (TV_WHOPR_WPA): Define.
824         (TV_WHOPR_WPA_IO): Define.
825         (TV_WHOPR_LTRANS): Define.
826         (TV_WHOPR_WPA_FIXUP): Define.
827         (TV_WHOPR_WPA_LTRANS_EXEC): Define.
828         * tree-cfg.c (tree_node_can_be_shared): Make extern.
829         * tree-flow.h (tree_node_can_be_shared): Declare.
830         * tree-inline.c (tree_can_inline_p): Check that E has a
831         statement associated with it.
832         * tree.c (free_lang_data_in_binf): Factor out of ...
833         (free_lang_data_in_type): ... here.
834         Call RECORD_OR_UNION_TYPE_P.
835         (need_assembler_name_p): Ignore DECL if it does not have
836         TREE_PUBLIC set.
837         Call lang_hooks.decls.may_need_assembler_name_p if set.
838         (free_lang_data_in_decl): Do not clear DECL_CONTEXT for
839         CONST_DECLs.
840         (free_lang_data): Set debug_info_level to
841         DINFO_LEVEL_NONE.
842         Set write_symbols to NO_DEBUG.
843         Set debug_hooks to do_nothing_debug_hooks.
844         (gate_free_lang_data): Return true if flag_generate_lto
845         is set.
846         (walk_tree_1): Call RECORD_OR_UNION_TYPE_P.
847         * c-common.h (set_builtin_user_assembler_name): Move ...
848         * tree.h (set_builtin_user_assembler_name): ... here.
849
850         * common.opt (flto-report): New flag.
851         * opts.c (complain_wrong_lang): Do not complain if
852         running lto1.
853         * collect2.c (scan_prog_file): Send the error output of
854         'nm' to HOST_BIT_BUCKET.
855
856 2009-10-03  Ollie Wild  <aaw@google.com>
857
858         * langhooks-def.h (lhd_begin_section): New function declaration.
859         (lhd_write_section): New function declaration.
860         (lhd_end_section): New function declaration.
861         (LANG_HOOKS_BEGIN_SECTION): New macro.
862         (LANG_HOOKS_WRITE_SECTION_DATA): New macro.
863         (LANG_HOOKS_END_SECTION): New macro.
864         (LANG_HOOKS_LTO): New macro.
865         (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_LTO.
866         * langhooks.c (output.h): Add include.
867         (saved_section): New static variable.
868         (lhd_begin_section): New function.
869         (lhd_write_section_data): New function.
870         (lhd_end_section): New function.
871         * langhooks.h (struct lang_hooks_for_lto): New structure.
872         (struct lang_hooks): Add member lto.
873         * Makefile.in (langhooks.o): Add dependency on output.h.
874
875         * c-opts.c (c_common_post_options): Handle -flto and -fwhopr.
876
877 2009-10-03  Richard Guenther  <rguenther@suse.de>
878
879         * config/rs6000/rs6000.c (rs6000_output_function_epilogue):
880         Handle LTO.
881
882 2009-10-03  Simon Baldwin  <simonb@google.com>
883             Richard Guenther  <rguenther@suse.de>
884             Janis Johnson  <janis187@us.ibm.com>
885             Doug Kwan  <dougkwan@google.com>
886             Diego Novillo  <dnovillo@google.com>
887             Ramana Radhakrishnan  <ramana.r@gmail.com>
888             Ollie Wild  <aaw@google.com>
889
890         * doc/install.texi: Add documentation for libelf and --enable-lto.
891         * doc/invoke.texi: Document -fwpa, -flto, -fwhopr,
892         -fltrans, -flto-report, -flto-compression-level and
893         -use-linker-plugin.
894         * doc/sourcebuild.texi: Document use of zlib.
895         Document lto-plugin.
896         Add section for LTO Testing.
897
898 2009-10-02  Cary Coutant  <ccoutant@google.com>
899
900         Add support for comdat type sections for DWARF v4.  Merge from dwarf4
901         branch.
902         * dwarf2out.c (DWARF_TYPE_SIGNATURE_SIZE): New constant.
903         (dw_die_ref): Define vector type.
904         (enum dw_val_class): Add dw_val_class_data8.
905         (struct dw_val_struct): Add v.val_data8.
906         (comdat_type_node_ref): New type.
907         (struct die_struct): Move die_symbol into a union; add new field
908         die_type_node.  Change all uses.
909         (comdat_type_node): New type.
910         (skeleton_chain_node): New type.
911         (DWARF_COMDAT_TYPE_UNIT_HEADER_SIZE): New constant.
912         (comdat_type_list): New variable.
913         (dwarf_tag_name): Add DW_TAG_type_unit.
914         (dwarf_attr_name): Add DW_AT_signature.
915         (add_AT_data8): New function.
916         (replace_child): New function.
917         (move_all_children): New function.
918         (print_signature): New function.
919         (print_die): Print signature information; add dw_val_class_data8.
920         (attr_checksum): Support dw_val_class_data8.
921         (CHECKSUM_STRING): Redefine for DWARF-4 to include
922         trailing NULL byte.
923         (CHECKSUM_SLEB128, CHECKSUM_ULEB128): New macros.
924         (checksum_sleb128, checksum_uleb128): New functions.
925         (checksum_die_context): New function.
926         (loc_checksum_ordered): New function.
927         (attr_checksum_ordered): New function.
928         (struct checksum_attributes): New structure.
929         (collect_checksum_attributes): New function.
930         (die_checksum_ordered): New function.
931         (generate_type_signature): New function.
932         (same_dw_val_p): Add dw_val_class_data8.
933         (is_symbol_die): Use new is_declaration_die function.
934         (is_declaration_die): New function.
935         (should_move_die_to_comdat): New function.
936         (clone_die): New function.
937         (clone_tree): New function.
938         (clone_as_declaration): New function.
939         (copy_declaration_context): New function.
940         (generate_skeleton_ancestor_tree): New function.
941         (generate_skeleton_bottom_up): New function.
942         (generate_skeleton): New function.
943         (remove_child_or_replace_with_skeleton): New function.
944         (break_out_comdat_types): New function.
945         (struct decl_table_entry): New type.
946         (htab_decl_hash): New function.
947         (htab_decl_eq): New function.
948         (htab_decl_del): New function.
949         (copy_ancestor_tree): New function.
950         (copy_decls_walk): New function.
951         (copy_decls_for_unworthy_types): New function.
952         (build_abbrev_table): Don't assert on missing die_symbol when doing
953         comdat type sections.
954         (size_of_die): Use DW_FORM_sig8 for external references; Add
955         dw_val_class_data8.
956         (unmark_dies): Don't assert for unmarked dies when doing comdat
957         type sections.
958         (value_format): Support DW_FORM_sig8 and dw_val_class_data8.
959         (output_signature): New function.
960         (output_die): Likewise.
961         (output_compilation_unit_header): Mark output as DWARF version 3
962         even if generating DWARF 4.
963         (output_comdat_type_unit): New function.
964         (output_line_info): Mark output as DWARF version 3 even if generating
965         DWARF 4.
966         (dwarf2out_start_source_file): Don't do eliminate_dwarf2_dups with
967         DWARF-4.
968         (dwarf2out_end_source_file): Likewise.
969         (prune_unused_types_walk_attribs): Don't follow references into
970         comdat type sections.
971         (prune_unused_types_mark): When generating type units, do not mark
972         children of non-defining declarations of types; do mark children of
973         type entries.
974         (prune_unused_types): Process comdat type sections.
975         (htab_ct_hash): New function.
976         (htab_ct_eq): New function.
977         (dwarf2out_finish): Move types to comdat sections when using DWARF-4.
978         Add a pointer to the line table from type unit entries so
979         DW_AT_decl_file has meaning.
980         * varasm.c (default_elf_asm_named_section): Use identifier name as
981         comdat key instead of lang hook.
982
983 2009-10-02  Neil Vachharajani  <nvachhar@google.com>
984
985         * gcov-io.c (gcov_open): Open files read-only when MODE < 0
986
987 2009-10-02  Uros Bizjak  <ubizjak@gmail.com>
988
989         * config/i386/i386.md (SWIM248): New mode iterator.
990         (divmod<mode>4) Macroize expander from divmoddi4, divmodsi4 and
991         divmodhi4 patterns using SWIM248 macro.
992         (*divmod<mode>4): Macroize insn_and_split pattern from
993         *divmoddi4_cltd_rex64, *divmodsi4_cltd and divmodhi4 insn patterns
994         and their corresponding splitters usign SWIM248 macro.  Split SImode
995         insn to generate cltd and DImode insn to generate cqto instead of
996         move+shift when optimizing for size or TARGET_USE_CLTD is in effect.
997         (*divmoddi4_nocltd_rex64, *divmodsi4_nocltd): Remove insn patterns.
998         (*divmod<mode>4_noext): Macroize insn from *divmoddi_noext_rex64 and
999         *divmodsi_noext patterns using SWIM248 macro.
1000         (udivmod<mode>4): Macroize expander from udivmoddi4, udivmodsi4 and
1001         udivmodhi4 patterns using SWIM248 macro.
1002         (*udivmod<mode>4): Macroize insn_and_split pattern from
1003         *udivmoddi4, udivmodsi4 and udivmodhi4 patterns and their
1004         corresponding splitters using SWIM248 macro.
1005         (*udivmod<mode>4_noext): Macroize insn from *udivmoddi4_noext,
1006         *udivmodsi4_noext and *udivmodhi_noext patterns using SWIM248 macro.
1007
1008 2009-10-02  Eric Botcazou  <ebotcazou@adacore.com>
1009
1010         * stor-layout.c (layout_type) <ARRAY_TYPE>: Make sure that an array
1011         of zero-sized element is zero-sized regardless of its extent.
1012
1013 2009-10-02  Jakub Jelinek  <jakub@redhat.com>
1014
1015         PR debug/40521
1016         * configure.ac (HAVE_GAS_CFI_SECTIONS_DIRECTIVE): New test.
1017         * configure: Regenerated.
1018         * config.in: Regenerated.
1019         * dwarf2out.c (dwarf2out_do_cfi_asm): Return false if
1020         !HAVE_GAS_CFI_SECTIONS_DIRECTIVE and not emitting .eh_frame.
1021         (dwarf2out_init): If HAVE_GAS_CFI_SECTIONS_DIRECTIVE and
1022         not emitting .eh_frame, emit .cfi_sections .debug_frame
1023         directive.
1024
1025         PR debug/41404
1026         PR debug/41353
1027         * cfgexpand.c (expand_debug_expr) <case STRING_CST>: Don't create
1028         CONST_STRING if STRING_CST contains embedded '\0's or doesn't end with
1029         '\0'.
1030         (expand_debug_expr) <case VAR_DECL>: For TREE_STATIC !DECL_EXTERNAL
1031         vars use DECL_RTL with resetting it back to NULL afterwards.
1032         * dwarf2out.c (same_dw_val_p): For dw_val_class_addr compare with
1033         rtx_equal_p instead of asserting it is a SYMBOL_REF.
1034         (value_format): For dw_val_class_addr only use DW_FORM_addr if
1035         the attribute type allows it, otherwise use DW_FORM_dataN.
1036         (mem_loc_descriptor): Handle CONST_STRING.
1037         (add_const_value_attribute): Handle CONST_STRING using add_AT_addr.
1038         Handle MEM with CONST_STRING address using add_AT_string.
1039         (rtl_for_decl_init): Return MEM with CONST_STRING address instead of
1040         CONST_STRING for const arrays initialized with a string literal.
1041         (resolve_one_addr, resolve_addr_in_expr, resolve_addr): New functions.
1042         (dwarf2out_finish): Call resolve_addr.
1043
1044 2009-10-02  Andreas Schwab  <schwab@linux-m68k.org>
1045             Maxim Kuvyrkov  <maxim@codesourcery.com>
1046
1047         * config/m68k/lb1sf68.asm (PICCALL): Use variable sized branch.
1048
1049 2009-10-02  Nick Clifton  <nickc@redhat.com>
1050
1051         * config/mn10300/mn10300.h (USER_LABEL_PREFIX): Define.
1052         (ASM_OUTPUT_LABELREF): Use asm_fprintf and %U.
1053
1054 2009-10-01  Jan Hubicka  <jh@suse.cz>
1055
1056         * cgraph.c (cgraph_clone_node): Add redirect_callers parameter.
1057         (cgraph_create_virtual_clone): Just pass redirect_callers
1058         around.
1059         * cgraph.h (cgraph_clone_node): Update prototype.
1060         * ipa-pure-const.c (self_recursive_p): New function.
1061         (propagate): Use it.
1062         * ipa-inline.c (cgraph_clone_inlined_nodes,
1063         cgraph_decide_recursive_inlining): Update.
1064
1065 2009-10-01  David Daney  <ddaney@caviumnetworks.com>
1066
1067         * gcc/config/mips/mips.c (mips_process_sync_loop) Emit syncw
1068         instructions for TARGET_OCTEON.
1069
1070 2009-10-01  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
1071
1072         * config/arm/arm.c (arm_override_options): Turn off
1073         flag_dwarf2_cfi_asm for AAPCS variants.
1074
1075 2009-10-01  Martin Jambor  <mjambor@suse.cz>
1076
1077         PR middle-end/12392
1078         * tree-sra.c (convert_callers): Do not call
1079         compute_inline_parameters on one caller more than once.
1080
1081 2009-10-01  Nick Clifton  <nickc@redhat.com>
1082
1083         * config/vax/netbsd-elf.h (NETBSD_CC1_AND_CC1PLUS_SPEC): Define as
1084         an empty string if not already defined.
1085
1086 2009-10-01  Martin Jambor  <mjambor@suse.cz>
1087
1088         PR bootstrap/41395
1089         * tree-sra.c (is_va_list_type): New function.
1090         (find_var_candidates): Call is_va_list_type.
1091         (find_param_candidates): Check that the type or the type pointed
1092         to are not va_list types.
1093
1094 2009-10-01  Martin Jambor  <mjambor@suse.cz>
1095
1096         PR c++/41503
1097         * cp/pt.c (function_parameter_expanded_from_pack_p): Return false if
1098         DECL_ARTIFICIAL (param_decl) is true.
1099
1100 2009-09-30  Gabriel Dos Reis  <gdr@cs.tamu.edu>
1101
1102         * tree.h (tree_decl_common::lang_flag_8): New.
1103         * c-common.c (c_common_reswords): Include "constexpr" as C++0x
1104         keyword.
1105         * c-common.h (RID_CONSTEXPR): New.
1106
1107 2009-09-30  Uros Bizjak  <ubizjak@gmail.com>
1108
1109         * config/alpha/alpha.c (alpha_gimplify_va_arg_1):
1110         Use ref-all pointers.
1111         (alpha_gimplify_va_arg): Ditto.
1112
1113 2009-09-30  Jakub Jelinek  <jakub@redhat.com>
1114
1115         PR target/41279
1116         * cfgloopanal.c (num_loop_insns): Don't increment ninsns for each bb
1117         before insn counting loop now that BB_END (bb) is counted.  Ensure
1118         the return value isn't zero.
1119
1120 2009-09-30  Nick Clifton  <nickc@redhat.com>
1121
1122         * config.gcc (sh-symbianelf): Replace definition of extra_objs
1123         with separate definitions of c_target_objs and cxx_target_objs.
1124         * config/sh/t-sh: Add rules to build symbian-cxx.o, symbian-c.o
1125         and symbian-base.o.
1126         * config/sh/sh.c (TARGET_CXX_INPUT_EXPORT_CLASS): Use
1127         sh_symbian_import_export_class.
1128         * config/sh/sh-protos.h: Fix names of exported symbian functions.
1129         * config/sh/symbian.c: Delete, moving code into...
1130         * config/sh/symbian-base.c: ... here
1131         * config/sh/symbian-c.c: ... and here
1132         * config/sh/symbian-cxx.c: ... and here.
1133
1134 2009-09-30  Uros Bizjak  <ubizjak@gmail.com>
1135
1136         PR target/22093
1137         * config/alpha/alpha.md (unaligned_storehi_be): Force operand
1138         of plus RTX into register.
1139
1140 2009-09-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
1141
1142         * doc/install.texi: Linguistic and markup fixes.
1143         (Configuration) <--disable-cpp>: Remove description.
1144         <--enable-maintainer-mode>: Autotools files are affected, too.
1145         <--with-sysroot>: Improve description.
1146         (Building): Bump required GNU make version.
1147
1148 2009-09-29  Harsha Jagasia  <harsha.jagasia@amd.com>
1149
1150         * config.gcc (i[34567]86-*-*): Include fma4intrin.h.
1151         (x86_64-*-*): Ditto.
1152
1153         * config/i386/fma4intrin.h: New file, provide common x86 compiler
1154         intrinisics for FMA4.
1155         * config/i386/cpuid.h (bit_FMA4): Define FMA4 bit.
1156         * config/i386/x86intrin.h: Fix typo to SSE4A instead of SSE4a.
1157         Add FMA4 check and fma4intrin.h.
1158         * config/i386/i386-c.c(ix86_target_macros_internal): Check
1159         ISA_FLAG for FMA4.
1160         * config/i386/i386.h(TARGET_FMA4): New macro for FMA4.
1161         * config/i386/i386.md (UNSPEC_FMA4_INTRINSIC): Add new UNSPEC
1162         constant for FMA4 support.
1163         (UNSPEC_FMA4_FMADDSUB): Ditto.
1164         (UNSPEC_FMA4_FMSUBADD): Ditto.
1165         * config/i386/i386.opt (-mfma4): New switch for FMA4 support.
1166         * config/i386/i386-protos.h (ix86_fma4_valid_op_p): Add declaration.
1167         (ix86_expand_fma4_multiple_memory): Ditto.
1168         * config/i386/i386.c (OPTION_MASK_ISA_FMA4_SET): New.
1169         (OPTION_MASK_ISA_FMA4_UNSET): New.
1170         (OPTION_MASK_ISA_SSE4A_UNSET): Change definition to depend on FMA4.
1171         (OPTION_MASK_ISA_AVX_UNSET): Change definition to depend on FMA4.
1172         (ix86_handle_option): Handle -mfma4.
1173         (isa_opts): Handle -mfma4.
1174         (enum pta_flags): Add PTA_FMA4.
1175         (override_options): Add FMA4 support.
1176         (IX86_BUILTIN_VFMADDSS): New for FMA4 intrinsic.
1177         (IX86_BUILTIN_VFMADDSD): Ditto.
1178         (IX86_BUILTIN_VFMADDPS): Ditto.
1179         (IX86_BUILTIN_VFMADDPD): Ditto.
1180         (IX86_BUILTIN_VFMSUBSS): Ditto.
1181         (IX86_BUILTIN_VFMSUBSD): Ditto.
1182         (IX86_BUILTIN_VFMSUBPS): Ditto.
1183         (IX86_BUILTIN_VFMSUBPD): Ditto.
1184         (IX86_BUILTIN_VFMADDSUBPS): Ditto.
1185         (IX86_BUILTIN_VFMADDSUBPD): Ditto.
1186         (IX86_BUILTIN_VFMSUBADDPS): Ditto.
1187         (IX86_BUILTIN_VFMSUBADDPD): Ditto.
1188         (IX86_BUILTIN_VFNMADDSS): Ditto.
1189         (IX86_BUILTIN_VFNMADDSD): Ditto.
1190         (IX86_BUILTIN_VFNMADDPS): Ditto.
1191         (IX86_BUILTIN_VFNMADDPD): Ditto.
1192         (IX86_BUILTIN_VFNMSUBSS): Ditto.
1193         (IX86_BUILTIN_VFNMSUBSD): Ditto.
1194         (IX86_BUILTIN_VFNMSUBPS): Ditto.
1195         (IX86_BUILTIN_VFNMSUBPD): Ditto.
1196         (IX86_BUILTIN_VFMADDPS256): Ditto.
1197         (IX86_BUILTIN_VFMADDPD256): Ditto.
1198         (IX86_BUILTIN_VFMSUBPS256): Ditto.
1199         (IX86_BUILTIN_VFMSUBPD256): Ditto.
1200         (IX86_BUILTIN_VFMADDSUBPS256): Ditto.
1201         (IX86_BUILTIN_VFMADDSUBPD256): Ditto.
1202         (IX86_BUILTIN_VFMSUBADDPS256): Ditto.
1203         (IX86_BUILTIN_VFMSUBADDPD256): Ditto.
1204         (IX86_BUILTIN_VFNMADDPS256): Ditto.
1205         (IX86_BUILTIN_VFNMADDPD256): Ditto.
1206         (IX86_BUILTIN_VFNMSUBPS256): Ditto.
1207         (IX86_BUILTIN_VFNMSUBPD256): Ditto.
1208         (enum multi_arg_type): New enum for describing the various FMA4
1209         intrinsic argument types.
1210         (bdesc_multi_arg): New table for FMA4 intrinsics.
1211         (ix86_init_mmx_sse_builtins): Add FMA4 intrinsic support.
1212         (ix86_expand_multi_arg_builtin): New function for creating FMA4
1213         intrinsics.
1214         (ix86_expand_builtin): Add FMA4 intrinsic support.
1215         (ix86_fma4_valid_op_p): New function to validate FMA4 3 and 4
1216         operand instructions.
1217         (ix86_expand_fma4_multiple_memory): New function to split the
1218         second memory reference from FMA4 instructions.
1219         * config/i386/sse.md (ssemodesuffixf4): New mode attribute for FMA4.
1220         (ssemodesuffixf2s): Ditto.
1221         (fma4_fmadd<mode>4): Add FMA4 floating point multiply/add
1222         instructions.
1223         (fma4_fmsub<mode>4): Ditto.
1224         (fma4_fnmadd<mode>4): Ditto.
1225         (fma4_fnmsub<mode>4): Ditto.
1226         (fma4_vmfmadd<mode>4): Ditto.
1227         (fma4_vmfmsub<mode>4): Ditto.
1228         (fma4_vmfnmadd<mode>4): Ditto.
1229         (fma4_vmfnmsub<mode>4): Ditto.
1230         (fma4_fmadd<mode>4256): Ditto.
1231         (fma4_fmsub<mode>4256): Ditto.
1232         (fma4_fnmadd<mode>4256): Ditto.
1233         (fma4_fnmsub<mode>4256): Ditto.
1234         (fma4_fmaddsubv8sf4): Ditto.
1235         (fma4_fmaddsubv4sf4): Ditto.
1236         (fma4_fmaddsubv4df4): Ditto.
1237         (fma4_fmaddsubv2df4): Ditto.
1238         (fma4_fmsubaddv8sf4): Ditto.
1239         (fma4_fmsubaddv4sf4): Ditto.
1240         (fma4_fmsubaddv4df4): Ditto.
1241         (fma4_fmsubaddv2df4): Ditto.
1242         (fma4i_fmadd<mode>4): Add FMA4 floating point multiply/add
1243         instructions for intrinsics.
1244         (fma4i_fmsub<mode>4): Ditto.
1245         (fma4i_fnmadd<mode>4): Ditto.
1246         (fma4i_fnmsub<mode>4): Ditto.
1247         (fma4i_vmfmadd<mode>4): Ditto.
1248         (fma4i_vmfmsub<mode>4): Ditto.
1249         (fma4i_vmfnmadd<mode>4): Ditto.
1250         (fma4i_vmfnmsub<mode>4): Ditto.
1251         (fma4i_fmadd<mode>4256): Ditto.
1252         (fma4i_fmsub<mode>4256): Ditto.
1253         (fma4i_fnmadd<mode>4256): Ditto.
1254         (fma4i_fnmsub<mode>4256): Ditto.
1255         (fma4i_fmaddsubv8sf4): Ditto.
1256         (fma4i_fmaddsubv4sf4): Ditto.
1257         (fma4i_fmaddsubv4df4): Ditto.
1258         (fma4i_fmaddsubv2df4): Ditto.
1259         (fma4i_fmsubaddv8sf4): Ditto.
1260         (fma4i_fmsubaddv4sf4): Ditto.
1261         (fma4i_fmsubaddv4df4): Ditto.
1262         (fma4i_fmsubaddv2df4): Ditto.
1263
1264         * doc/invoke.texi (-mfma4): Add documentation.
1265         * doc/extend.texi (x86 intrinsics): Add FMA4 intrinsics.
1266
1267 2009-09-29  Richard Henderson  <rth@redhat.com>
1268
1269         * tree-eh.c (unsplit_eh): Do not unsplit if there's already
1270         an edge to the new destination block.
1271
1272 2009-09-29  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1273
1274         PR target/41393
1275         * pa.c (hppa_profile_hook): Use
1276         make_reg_eh_region_note_nothrow_nononlocal to add REG_EH_REGION note.
1277
1278 2009-09-29  Steve Ellcey  <sje@cup.hp.com>
1279             Alexander Monakov  <amonakov@ispras.ru>
1280
1281         PR target/41365
1282         * config/ia64/predicates.md (not_postinc_destination_operand): New.
1283         (not_postinc_memory_operand): New.
1284         (not_postinc_move_operand): New.
1285         * config/ia64/ia64.md (*cmovdi_internal): Disallow autoincrement.
1286         (*cmovsi_internal): Ditto.
1287
1288 2009-09-29  Pat Haugen  <pthaugen@us.ibm.com>
1289
1290         * config/rs6000/rs6000.c (rs6000_issue_rate): Don't artificially
1291         restrict issue_rate in first pass when scheduling for register
1292         pressure.
1293
1294 2009-09-29  Basile Starynkevitch  <basile@starynkevitch.net>
1295             Rafael Avila de Espindola  <espindola@google.com>
1296
1297         * gengtype.c (plugin_output): New.
1298         (get_output_file_with_visibility): Return plugin_output for plugins.
1299         (main): Parse and use the -P option.
1300         * gty.texi: Update the command line format.
1301
1302 2009-09-29  Jakub Jelinek  <jakub@redhat.com>
1303
1304         PR debug/41438
1305         * dwarf2out.c (const_ok_for_output_1, const_ok_for_output): New
1306         functions.
1307         (mem_loc_descriptor, loc_descriptor, add_const_value_attribute): Bail
1308         out if !const_ok_for_output.
1309
1310         PR debug/41474
1311         * dwarf2out.c (mem_loc_descriptor) <case CONCAT, case CONCATN,
1312         case VAR_LOCATION>: Remove gcc_unreachable ().
1313
1314 2009-09-29  Harsha Jagasia  <harsha.jagasia@amd.com>
1315
1316         * config.gcc (i[34567]86-*-*): Remove mmintrin-common.h.
1317         (x86_64-*-*): Ditto.
1318         * config/i386/smmintrin.h: Move instructions in mmintrin-common.h
1319         back to smmintrin.h.
1320         * config/i386/cpuid.h: (bit_SSE5): Remove SSE5 bit.
1321         * config/i386/x86intrin.h: Remove SSE5.
1322         * config/i386/mmintrin-common.h: Delete file.
1323         * doc/extend.texi (x86 intrinsics): Remove SSE5 flags and builtins.
1324
1325 2009-09-29  Richard Guenther  <rguenther@suse.de>
1326
1327         * alias.c (ao_ref_from_mem): Properly deal with off decl accesses
1328         resulting from stack temporaries on STRICT_ALIGNMENT targets.
1329
1330 2009-09-29  Nick Clifton  <nickc@redhat.com>
1331
1332         * function.c (current_function_name): If there is no current
1333         function just return "<none>".
1334
1335 2009-09-28  Sriraman Tallam  <tmsriram@google.com>
1336
1337         * tree-pass.h (register_pass_info): New structure.
1338         (pass_positioning_ops): Move enum from gcc-plugin.h.
1339         (register_pass): New function.
1340         * gcc-plugin.h (plugin_pass): Delete structure.
1341         (pass_positioning_ops): Delete enum.
1342         * plugin.c (regsiter_pass): Delete function.
1343         (position_pass): Delete function.
1344         (added_pass_nodes): Delete variable.
1345         (prev_added_pass_nodes): Delete variable.
1346         (pass_list_node): Delete structure.
1347         * passes.c (make_pass_instance): New function.
1348         (next_pass_1): Change to call make_pass_instance.
1349         (pass_list_node): Move structure from gcc-plugin.h.
1350         (added_pass_nodes): Move variable from plugin.c.
1351         (prev_added_pass_nodes): Move variable from plugin.c.
1352         (position_pass): New function.
1353         (register_pass): New function.
1354
1355 2009-09-28  Easwaran Raman  <eraman@google.com>
1356
1357         * ifcvt.c (noce_try_abs): Recognize pattern and call
1358         expand_one_cmpl_abs_nojump.
1359         * optabs.c (expand_one_cmpl_abs_nojump): New function.
1360         * optabs.h (expand_one_cmpl_abs_nojump): Declare.
1361
1362 2009-09-28  Ian Lance Taylor  <iant@google.com>
1363
1364         PR middle-end/40500
1365         * c-opts.c (c_common_handle_option): Don't set
1366         warn_jump_misses_init for -Wall.
1367         * doc/invoke.texi (Warning Options): Update documentation.
1368
1369 2009-09-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
1370
1371         * Makefile.in ($(out_object_file)): Depend on
1372         gt-$(basename $(notdir $(out_file))).h.
1373
1374 2009-09-28  Richard Henderson  <rth@redhat.com>
1375
1376         * except.h (struct eh_region_d): Add use_cxa_end_cleanup.
1377         * except.c (gen_eh_region): Set it.
1378         (duplicate_eh_regions_1): Copy it.
1379         * tree-eh.c (lower_resx): Use it to determine which function
1380         to call to resume.
1381
1382         * langhooks.h (struct lang_hooks): Add eh_use_cxa_end_cleanup.
1383         * langhooks-def.h (LANG_HOOKS_EH_USE_CXA_END_CLEANUP): New.
1384         * builtins.def (BUILT_IN_CXA_END_CLEANUP): New.
1385         * tree.c (build_common_builtin_nodes): Remove parameter.  Build
1386         BUILT_IN_CXA_END_CLEANUP if necessary.
1387
1388         * c-common.c (c_define_builtins): Update call to
1389         build_common_builtin_nodes.
1390
1391 2009-09-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1392
1393         * spu.c (get_branch_target): Return NULL for ASM_OPERANDS patterns.
1394
1395 2009-09-28  Michael Matz  <matz@suse.de>
1396
1397         * builtins.c (interclass_mathfn_icode): New helper.
1398         (expand_builtin_interclass_mathfn): Use it here, and split folding
1399         into ...
1400         (fold_builtin_interclass_mathfn): ... this new folder.
1401         (build_call_nofold_loc): New static helper.
1402         (build_call_nofold): New wrapper macro for above.
1403         (expand_builtin_int_roundingfn): Use it instead of build_call_expr.
1404         (expand_builtin_pow): Ditto.
1405         (expand_builtin_memset_args): Ditto.
1406         (expand_builtin_printf): Ditto.
1407         (expand_builtin_fprintf): Ditto.
1408         (expand_builtin_sprintf): Ditto.
1409         (expand_builtin_memory_chk): Ditto.
1410         (expand_builtin_mempcpy_args): Ditto and don't call folders.
1411         (expand_builtin_stpcpy): Ditto.
1412         (expand_builtin_strcmp): Ditto.
1413         (expand_builtin_strncmp): Ditto.
1414         (expand_builtin_strcpy): Remove FNDECL and MODE arguments.
1415         (expand_builtin_strcpy_args): Don't call folders.
1416         (expand_builtin_memcmp): Ditto.
1417         (expand_builtin_strncpy): Ditto, and use target.
1418         (expand_builtin_memcpy): Ditto.
1419         (expand_builtin_strstr, expand_builtin_strchr, expand_builtin_strrchr,
1420         expand_builtin_strpbrk, expand_builtin_memmove,
1421         expand_builtin_memmove_args, expand_builtin_bcopy,
1422         expand_builtin_memchr, expand_builtin_strcat, expand_builtin_strncat,
1423         expand_builtin_strspn, expand_builtin_strcspn,
1424         expand_builtin_fputs): Remove these.
1425         (expand_builtin): Don't call the above, change calls to other
1426         expanders that changed prototype.
1427         (fold_builtin_stpcpy): New folder split out from expand_builtin_stpcpy.
1428         (fold_builtin_1 <ISFINITE, ISINF, ISNORMAL>): Call
1429         fold_builtin_interclass_mathfn.
1430         (fold_builtin_2 <STPCPY>): Call fold_builtin_stpcpy.
1431         (fold_builtin_strcat): Add folding split from expand_builtin_strcat.
1432
1433         * fold-const.c (fold_binary_loc <NE_EXPR>): Add !exp != 0 -> !exp.
1434         * passes.c (init_optimization_passes): Move pass_fold_builtins
1435         after last phiopt pass.
1436         * tree-inline.c (fold_marked_statements): When folding builtins
1437         iterate over all instruction potentially generated.
1438         * tree-ssa-ccp.c (gimplify_and_update_call_from_tree): Declare
1439         earlier.
1440         (fold_gimple_call): Use it to always fold calls (into potentially
1441         multiple instructions).
1442         * tree-ssa-dom.c (optimize_stmt): Resolve __builtin_constant_p
1443         calls into zero at this time.
1444         * tree-ssa-propagate.c (substitute_and_fold): Ignore multiple
1445         statements generated by builtin folding.
1446
1447 2009-09-28  Nick Clifton  <nickc@redhat.com>
1448
1449         * config/m32r/m32r.c (m32r_is_insn): Return false for debugging
1450         insns.
1451
1452 2009-09-28  Duncan Sands  <baldrick@free.fr>
1453
1454         * gcc-plugin.h (PLUGIN_REGISTER_GGC_CACHES): New event.
1455         * plugin.c (plugin_event_name): Add PLUGIN_REGISTER_GGC_CACHES.
1456         (register_callback): Dispatch it.
1457         (invoke_plugin_callbacks): Incorporate in sanity check.
1458         * ggc.h (ggc_register_cache_tab): Add declaration.
1459         * ggc-common.c (ggc_register_root_tab): Simplify.
1460         (const_ggc_cache_tab_t): New typedef.
1461         (extra_cache_vec): New vector of dynamically added cache tables.
1462         (ggc_register_cache_tab): New function.
1463         (ggc_scan_cache_tab): New function.
1464         (ggc_mark_roots): Simplify dynamic roots.  Handle dynamic caches.
1465         * doc/plugins.texi: Document PLUGIN_REGISTER_GGC_CACHES.
1466
1467 2009-09-27  Richard Henderson  <rth@redhat.com>
1468
1469         * tree-ssa-ccp.c (optimize_stack_restore): Relax the conditions under
1470         which we remove __builtin_stack_restore.
1471
1472 2009-09-27  Bernd Schmidt  <bernd.schmidt@analog.com>
1473
1474         * loop-iv.c (iv_analyze_op): Use function_invariant_p, not CONSTANT_P,
1475         to test for GRD_INVARIANT.
1476         (simple_rhs_p): Anything that's function_invariant_p is fine.
1477
1478 2009-09-27  Rafael Avila de Espindola  <espindola@google.com>
1479
1480         * gengtype.c (main): Use plunge_files instead of plugin_output.
1481
1482 2009-09-27  Basile Starynkevitch  <basile@starynkevitch.net>
1483             Rafael Avila de Espindola  <espindola@google.com>
1484
1485         * gengtype.c (write_root, write_roots): Add a emit_pch argument.
1486         Don't print pch related info if it is false.
1487         (main): Don't print pch info in plugin mode.
1488
1489 2009-09-27  Eric Botcazou  <ebotcazou@adacore.com>
1490
1491         * dwarf2out.c (enum dw_val_class): Replace dw_val_class_long_long
1492         with dw_val_class_const_double.
1493         (struct dw_val_struct): Replace val_long_long with val_double and
1494         adjust for above change.
1495         (output_loc_operands): Likewise.
1496         (add_AT_long_long): Rename into...
1497         (add_AT_double): ...this.
1498         (print_die): Replace dw_val_class_long_long with
1499         dw_val_class_const_double and adjust.
1500         (attr_checksum): Likewise.
1501         (same_dw_val_p): Likewise.
1502         (size_of_die): Likewise.
1503         (value_format): Likewise.
1504         (output_die): Likewise.
1505         (loc_descriptor) <CONST_DOUBLE>: Likewise.
1506         (add_const_value_attribute) <CONST_DOUBLE>: Call add_AT_double
1507         instead of add_AT_long_long.
1508         (add_bound_info) <INTEGER_CST>: Generate the bound as an unsigned
1509         value with the precision of its type.
1510
1511 2009-09-27  Andreas Schwab  <schwab@linux-m68k.org>
1512
1513         PR c/41476
1514         * c-typeck.c (build_conditional_expr): Use the readonly and
1515         volatile flags of the operand types, not of the operands itself.
1516
1517 2009-09-27  Peter O'Gorman  <pogma@thewrittenword.com>
1518
1519         collect2.c (main): Look for -brtl before adding libraries.
1520
1521 2009-09-27  Jonathan Gray  <jsg@openbsd.org>
1522
1523         * config.gcc: Update OpenBSD targets.
1524         * config/openbsd-stdint.h: New file.
1525         * config/openbsd-libpthread.h: New file.
1526         * config/openbsd.h: Update and break out LIB_SPEC definition.
1527         * config/alpha/openbsd.h: Overhaul to reflect ELF migration.
1528         * config/i386/openbsdelf.h: Correct types.
1529         * config/m68k/openbsd.h: Likewise.
1530         * config/mips/openbsd.h: Likewise.
1531         * config/vax/openbsd.h: Likewise.
1532
1533 2009-09-27  Eric Botcazou  <ebotcazou@adacore.com>
1534
1535         * fold-const.c (maybe_lvalue_p): Return false for M(IN|AX)_EXPR.
1536         (extract_muldiv_1) <MINUS_EXPR>: Swap operands if necessary.
1537         * stor-layout.c (layout_type) <ARRAY_TYPE>: Do not take the maximum
1538         of the length and zero.
1539
1540 2009-09-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
1541
1542         * Makefile.in (TOPLEV_H): Use $(INPUT_H) not input.h.
1543         (FLAGS_H): Add options.h $(REAL_H).
1544         (SEL_SCHED_IR_H): Add $(BITMAP_H) vecprim.h $(CFGLOOP_H).
1545         (TREE_VECTORIZER_H): New.
1546         (EBITMAP_H): Renamed from EBIMAP_H.
1547         (c-decl.o, c-objc-common.o, c-pretty-print.o, attribs.o, c-omp.o)
1548         (gtype-desc.o, ggc-common.o, ggc-page.o, ggc-zone.o, langhooks.o)
1549         (tree.o, tree-ssa-structalias.o, tree-ssa-ter.o, tree-ssanames.o)
1550         (tree-phinodes.o, tree-ssa-loop.o, tree-ssa-math-opts.o)
1551         (gimple-low.o, omp-low.o, sese.o, graphite-blocking.o)
1552         (graphite-clast-to-gimple.o, graphite-dependences.o)
1553         (graphite-interchange.o, graphite-poly.o, graphite-scop-detection.o)
1554         (graphite-sese-to-poly.o, tree-vect-loop.o, tree-vect-loop-manip.o)
1555         (tree-vect-patterns.o, tree-vect-slp.o, tree-vect-stmts.o)
1556         (tree-vect-data-refs.o, tree-vectorizer.o, gimple.o, tree-mudflap.o)
1557         (targhooks.o, stmt.o, emit-rtl.o, ipa.o, matrix-reorg.o, ipa-inline.o)
1558         (gcse.o, tree-ssa-ccp.o, df-byte-scan.o, vec.o, caller-save.o)
1559         (ira-build.o, ira-costs.o, ira-color.o, ira-emit.o, ira.o)
1560         (haifa-sched.o, sched-rgn.o, sel-sched.o, sel-sched-dump.o)
1561         (sel-sched-ir.o, final.o, $(out_object_file)): Dependencies
1562         updated and fixed as per above changes and per
1563         check_makefile_deps.sh output.
1564
1565         PR bootstrap/40928
1566         * configure.ac: Use $LIBS for '-ldl', not $LDFLAGS.
1567         * configure: Regenerate.
1568
1569 2009-09-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1570
1571         * doc/install.texi: Update minimum MPC version to 0.7.
1572
1573 2009-09-26  Gerald Pfeifer  <gerald@pfeifer.com>
1574
1575         * doc/install.texi (Binaries): Remove reference to the binary
1576         distribution CD-ROM from the FSF.
1577
1578 2009-09-26  Michael Matz  <matz@suse.de>
1579
1580         PR lto/40758
1581         PR middle-end/41470
1582         * tree-ssa-coalesce.c (coalesce_ssa_name): Add only SSA names
1583         that are mentioned in the body.
1584
1585 2009-09-26  Michael Matz  <matz@suse.de>
1586
1587         PR tree-optimization/41454
1588         * tree-ssa-dom (stmts_to_rescan): Remove variable.
1589         (tree_ssa_dominator_optimize): Don't allocate and free it.
1590         (dom_opt_leave_block): Don't iterate over it.
1591         (eliminate_redundant_computations): Don't return a value.
1592         (cprop_operand, cprop_into_stmt): Ditto.
1593         (optimize_stmt): Don't defer updating stmts.
1594
1595 2009-09-25  Dodji Seketeli  <dodji@redhat.com>
1596
1597         * dwarf2out.c (dwarf_tag_name, gen_generic_params_dies,
1598         generic_parameter_die, template_parameter_pack_die,
1599         gen_formal_parameter_die, gen_subprogram_die): Adjust after renaming
1600         DW_TAG_formal_parameter_pack and DW_TAG_template_parameter_pack into
1601         DW_TAG_GNU_formal_parameter_pack and DW_TAG_GNU_template_parameter_pack.
1602
1603 2009-09-25  Anatoly Sokolov  <aesok@post.ru>
1604
1605         * config/v850/v850.h (FUNCTION_VALUE): Remove.
1606         * config/v850/v850.c (v850_function_value): New function.
1607         (TARGET_FUNCTION_VALUE): Define.
1608
1609 2009-09-25  Jakub Jelinek  <jakub@redhat.com>
1610
1611         * tree-vect-stmts.c (vectorizable_call): Call
1612         mark_symbols_for_renaming after vect_finish_stmt_generation.
1613
1614         * dwarf2out.c (tls_mem_loc_descriptor): Pass 1 instead of 2
1615         to loc_descriptor_from_tree.
1616         (add_location_or_const_value_attribute): Pass 0 instead of 2
1617         for decl_by_reference_p decls.
1618
1619 2009-09-25  Richard Guenther  <rguenther@suse.de>
1620
1621         PR middle-end/41463
1622         * tree-dfa.c (get_ref_base_and_extent): Fix issue with trailing
1623         arrays again.
1624
1625 2009-09-25  Ben Elliston  <bje@au.ibm.com>
1626
1627         * doc/invoke.texi (RS/6000 and PowerPC Options): Add missing comma
1628         after `power7'.
1629
1630 2009-09-25  Alan Modra  <amodra@bigpond.net.au>
1631
1632         * config/rs6000/rs6000.md (load_toc_v4_PIC_3c): Correct POWER
1633         form of instruction.
1634
1635 2009-09-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1636
1637         PR middle-end/41435
1638         * fold-const.c (const_binop): Handle complex int division.
1639         * tree-complex.c (expand_complex_div_straight,
1640         expand_complex_div_wide): Update comments.
1641
1642 2009-09-24  DJ Delorie  <dj@redhat.com>
1643
1644         PR target/41456
1645         * config/m32c/m32c.h (REG_CLASS_CONTENTS): Add R13.
1646         (reg_class): Likewise.
1647         (REG_CLASS_NAMES): Likewise.
1648         * config/m32c/m32c.c (m32c_reg_class_from_constraint): Likewise.
1649
1650         * config/m32c/m32c.c (m32c_override_options): Disable -fivopts for
1651         M32C.
1652
1653 2009-09-24  Michael Meissner  <meissner@linux.vnet.ibm.com>
1654
1655         * config/rs6000/predicates.md (indexed_or_indirect_operand):
1656         Delete VSX load/store with update support.
1657         * config/rs6000/rs6000.c (rs6000_legitimate_address_p): Ditto.
1658         * config/rs6000/vsx.md (vsx_mov<mode>): Ditto.
1659         (vsx_movti): Ditto.
1660         (VSX_U): Delete.
1661         (VSbit): Ditto.
1662         (VStype_load_update): Ditto.
1663         (VStype_store_update): Ditto.
1664         (vsx_load<VSX_U:mode>_update_<P:mptrsize>): Ditto.
1665         (vsx_store<VSX_U:mode>_update_<P:mptrsize>): Ditto.
1666
1667         * config/rs6000/rs6000.h (enum rs6000_builtins): Delete VSX
1668         load/store with update builtins.
1669
1670 2009-09-24  Kai Tietz  <kai.tietz@onevision.com>
1671
1672         * libgcc2.c (L_trampoline): Prototype for getpagesize
1673         and mprotect in WINNT case.
1674
1675 2009-09-24  Anatoly Sokolov  <aesok@post.ru>
1676
1677         * config/rs6000/rs6000.h (FUNCTION_VALUE): Remove macro.
1678         * config/rs6000/rs6000-protos.h (rs6000_function_value): Remove.
1679         * config/rs6000/rs6000.c (rs6000_function_value): Make static, add
1680         'outgoing' argument.
1681         (TARGET_FUNCTION_VALUE): Define.
1682
1683 2009-09-24  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
1684
1685         * config/darwin.h (DWARF2_DEBUGGING_INFO): Define as 1.
1686
1687 2009-09-24  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
1688
1689         PR bootstrap/41405
1690         * common.opt: Initialize dwarf_strict to -1.
1691         * toplev.c (process_options): Catch unset dwarf_strict
1692         and set to 0 for all targets not overriding.
1693         * config/darwin.c (darwin_override_options): Catch unset
1694         dwarf_strict and override to 1.
1695
1696 2009-09-24  Jeff Law  <law@redhat.com>
1697
1698         * tree-into-ssa.c (rewrite_into_ssa): Free interesting_blocks.
1699
1700 2009-09-24  Richard Guenther  <rguenther@suse.de>
1701
1702         PR tree-optimization/36143
1703         PR tree-optimization/38747
1704         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Only
1705         create VIEW_CONVERT_EXPRs for TBAA compatible accesses.
1706
1707 2009-09-24  Jakub Jelinek  <jakub@redhat.com>
1708
1709         PR bootstrap/41457
1710         * dwarf2out.c (add_const_value_attribute): For HIGH and CONST_FIXED,
1711         return false instead of gcc_unreachable ().  For CONST return the
1712         value returned by recursive call instead of always returning true.
1713         (tree_add_const_value_attribute): Return the value returned by
1714         add_const_value_attribute instead of always returning true if rtl
1715         is non-NULL.
1716
1717 2009-09-23  Justin Seyster  <jrseys@gmail.com>
1718
1719         * Makefile.in (PLUGIN_HEADERS): Include real.h.
1720
1721 2009-09-24  Jakub Jelinek  <jakub@redhat.com>
1722
1723         * cgraphunit.c (cgraph_lower_function): Revert last change.
1724         * targhooks.c (default_static_chain): Use !DECL_STATIC_CHAIN
1725         instead of DECL_NO_STATIC_CHAIN.
1726         * tree-cfg.c (verify_gimple_call): Likewise.
1727         * tree-nested.c (get_chain_decl, get_chain_field,
1728         convert_tramp_reference_op, convert_gimple_call): Likewise.
1729         (convert_all_function_calls): Likewise.  Always set or clear
1730         DECL_STATIC_CHAIN initially, for !n->outer clear it.
1731         (lower_nested_functions): Remove DECL_NO_STATIC_CHAIN checking code.
1732         * c-parser.c (c_parser_declaration_or_fndef): Set DECL_STATIC_CHAIN
1733         if nested.
1734         * print-tree.c (print_node): Handle DECL_STATIC_CHAIN instead of
1735         DECL_NO_STATIC_CHAIN.
1736         * config/i386/i386.c (ix86_static_chain): Use !DECL_STATIC_CHAIN
1737         instead of DECL_NO_STATIC_CHAIN.
1738         (ix86_function_regparm, find_drap_reg): Likewise.  Don't test
1739         decl_function_context.
1740         * varasm.c (initializer_constant_valid_p): Likewise.
1741         * tree.h (DECL_NO_STATIC_CHAIN): Renamed to ...
1742         (DECL_STATIC_CHAIN): ... this.
1743         * config/moxie/moxie.c (moxie_static_chain): Use !DECL_STATIC_CHAIN
1744         instead of DECL_NO_STATIC_CHAIN.
1745
1746 2009-09-23  Basile Starynkevitch  <basile@starynkevitch.net>
1747             Rafael Avila de Espindola  <espindola@google.com>
1748
1749         * gengtype.c (nb_plugin_files): Make it unsigned to match
1750         num_gt_files. Adjust other variables to avoid warnings.
1751         (main): Allocate an all zero lang_bitmap before each plugin file name
1752         to match regular file names.
1753
1754 2009-09-23  Richard Henderson  <rth@redhat.com>
1755
1756         * doc/tm.texi (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Remove.
1757         (TARGET_STATIC_CHAIN): Mention that this hook must be used for
1758         static chain passed in memory.
1759         * system.h (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Poison.
1760         * targhooks.c (default_static_chain): Don't handle STATIC_CHAIN,
1761         STATIC_CHAIN_INCOMING.  Issue a sorry if there's no
1762         STATIC_CHAIN_REGNUM defined.
1763
1764         * config/picochip/picochip-protos.h: s/class/klass/.
1765         * config/picochip/picochip.c (TARGET_STATIC_CHAIN): New.
1766         (picochip_static_chain): New.
1767         * config/picochip/picochip.h (STATIC_CHAIN): Remove.
1768         (STATIC_CHAIN_INCOMING): Remove.
1769
1770         * config/xtensa/xtensa.c (TARGET_STATIC_CHAIN): New.
1771         (xtensa_static_chain): New.
1772         * config/xtensa/xtensa.h (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Remove.
1773
1774 2009-09-23  Anatoly Sokolov  <aesok@post.ru>
1775
1776         * config/pa/pa.h (FUNCTION_VALUE): Remove macro.
1777         * config/pa/pa-protos.h (function_value): Remove.
1778         * config/pa/pa.c (pa_function_value): Rename from function_value.
1779         Make static, add 'outgoing' argument.
1780         (TARGET_FUNCTION_VALUE): Define.
1781
1782 2009-09-23  Anatoly Sokolov  <aesok@post.ru>
1783
1784         * config/avr/avr.c (avr_regs_to_save): Use current_function_is_leaf
1785         instead of cfun->machine->is_leaf.
1786         * config/avr/avr.h (machine_function): Remove is_leaf field.
1787
1788 2009-09-23  Jakub Jelinek  <jakub@redhat.com>
1789
1790         PR debug/41439
1791         * dwarf2out.c (address_of_int_loc_descriptor): Don't emit
1792         DW_OP_piece after DW_OP_stack_value, adjust size calculations
1793         for it, when DW_OP_stack_value and DW_OP_implicit_value has
1794         the same size, prefer DW_OP_stack_value.
1795         (loc_descriptor, loc_list_for_address_of_addr_expr_of_indirect_ref,
1796         loc_list_from_tree): Don't emit DW_OP_piece after DW_OP_stack_value.
1797
1798 2009-09-23  Alexandre Oliva  <aoliva@redhat.com>
1799
1800         PR debug/41353
1801         * var-tracking.c (add_with_sets): Sort MO_VAL_LOC last among uses.
1802
1803 2009-09-23  Alexandre Oliva  <aoliva@redhat.com>
1804
1805         PR debug/41248
1806         * cfgexpand.c (convert_debug_memory_address): New.
1807         (expand_debug_expr): Convert base address and offset to the same
1808         mode.  Use it to convert addresses to other modes.  Accept
1809         ptr_mode addresses.
1810
1811 2009-09-23  Richard Guenther  <rguenther@suse.de>
1812
1813         * alias.c (ao_ref_from_mem): Correct for negative MEM_OFFSET
1814         produced for bigendian targets with promoted subregs.
1815
1816 2009-09-23  Richard Guenther  <rguenther@suse.de>
1817
1818         * value-prof.c (gimple_ic): Purge old EH edges only after building
1819         the new ones.
1820
1821 2009-09-23  Nick Clifton  <nickc@redhat.com>
1822
1823         * config/arc/arc.c (arc_trampoline_init): Fix typo.
1824
1825 2009-09-23  Jakub Jelinek  <jakub@redhat.com>
1826
1827         PR bootstrap/41405
1828         * doc/invoke.texi: Document -gstrict-dwarf and -gno-strict-dwarf.
1829
1830         PR bootstrap/41436
1831         * cgraphunit.c (cgraph_lower_function): Set DECL_NO_STATIC_CHAIN
1832         on non-nested functions.
1833
1834 2009-09-23  Jakub Jelinek  <jakub@redhat.com>
1835             Jan Hubicka  <jh@suse.cz>
1836
1837         * dwarf2out.c (loc_list_plus_const): Only define if
1838         DWARF2_DEBUGGING_INFO.
1839         (address_of_int_loc_descriptor): Likewise.
1840
1841         PR debug/41411
1842         * dwarf2out.c (mem_loc_descriptor): Handle HIGH.
1843
1844 2009-09-23  Uros Bizjak  <ubizjak@gmail.com>
1845
1846         PR c/39779
1847         * c-typeck.c (build_binary_op) <short_shift>: Check that integer
1848         constant is more than zero.
1849
1850 2009-09-23  Alan Modra  <amodra@bigpond.net.au>
1851
1852         PR target/40473
1853         * config/rs6000/rs6000.c (rs6000_output_function_prologue): Don't
1854         call final to emit non-scheduled prologue, instead insert at entry.
1855
1856 2009-09-22  Loren J. Rittle  <ljrittle@acm.org>
1857             Joseph S. Myers  <joseph@codesourcery.com>
1858
1859         * doc/install.texi (*-*-freebsd*): Add proper format codes.
1860
1861 2009-09-22  Basile Starynkevitch  <basile@starynkevitch.net>
1862             Rafael Avila de Espindola  <espindola@google.com>
1863
1864         * gengtype.c (is_file_equal): New function.
1865         (close_output_files): Use is_file_equal. Free of->buf.
1866
1867 2009-09-22  Basile Starynkevitch  <basile@starynkevitch.net>
1868             Rafael Avila de Espindola  <espindola@google.com>
1869
1870         * gengtype.c (write_types, write_local): Add the output_header
1871         argument. Update all callers.
1872
1873 2009-09-22  Dodji Seketeli  <dodji@redhat.com>
1874
1875         * dwarf2out.c (template_parameter_pack_die,
1876         gen_formal_parameter_pack_die ): New functions.
1877         (make_ith_pack_parameter_name): Remove this function.
1878         (dwarf_tag_name): Support printing DW_TAG_template_parameter_pack and
1879         DW_TAG_formal_parameter_pack.
1880         (gen_generic_params_dies): Represent each template parameter pack
1881         by a DW_TAG_template_parameter_pack DIE. Argument pack elements are
1882         represented by usual DW_TAG_template_*_parameter DIEs that are
1883         children of the DW_TAG_template_parameter_pack element DIE.
1884         (generic_parameter_die): This doesn't deal with parameter pack
1885         names anymore. Don't generate DW_AT_name for some DIEs, e.g. children
1886         of parameter pack DIEs.
1887         (gen_formal_parameter_die): Add a flag to not emit DW_AT_name
1888         in certain cases, e.g. for pack elements.
1889         (gen_formal_types_die, gen_decl_die): Adjust usage of
1890         gen_formal_parameter_die.
1891         (gen_subprogram_die): Represent each function parameter pack by a
1892         DW_TAG_formal_parameter_pack DIE. Arguments of of the pack are
1893         represented by usual DW_TAG_formal_parameter DIEs that are children
1894         of the DW_TAG_formal_parameter_pack DIE. Remove references to
1895         ____builtin_va_alist decls as no part of the compiler uses those
1896         anymore.
1897         * langhooks.h (struct lang_hooks_for_decls): Add
1898         function_parm_expanded_from_pack_p, get_generic_function_decl
1899         and function_parameter_pack_p hooks.  Fix comment for
1900         get_innermost_generic_parms hook.
1901         * langhooks-def.h (LANG_HOOKS_FUNCTION_PARAMETER_PACK_P,
1902         LANG_HOOKS_FUNCTION_PARM_EXPANDED_FROM_PACK_P ): Declare new hook
1903         macros and use them to initialize lang_hook.
1904
1905 2009-09-22  Richard Henderson  <rth@redhat.com>
1906
1907         * system.h (TRAMPOLINE_TEMPLATE, INITIALIZE_TRAMPOLINE): Poison.
1908         (TRAMPOLINE_ADJUST_ADDRESS): Poison.
1909         * target-def.h (TARGET_ASM_TRAMPOLINE_TEMPLATE): Don't conditionalize
1910         on TRAMPOLINE_TEMPLATE.
1911         (TARGET_TRAMPOLINE_ADJUST_ADDRESS): Don't conditionalize on
1912         TRAMPOLINE_ADJUST_ADDRESS.
1913         * targhooks.c (default_asm_trampoline_template): Remove.
1914         (default_trampoline_adjust_address): Remove.
1915         (default_trampoline_init): Don't handle INITIALIZE_TRAMPOLINE.
1916         * targhooks.h: Update decls.
1917
1918 2009-09-22  Dave Korn  <dave.korn.cygwin@gmail.com>
1919
1920         * config/i386/cygming.h (TARGET_USE_JCR_SECTION): Enable.
1921         * config/i386/cygwin.h (LIBGCJ_SONAME): Define.
1922         * config/i386/mingw32.h (LIBGCJ_SONAME): Likewise.
1923
1924 2009-09-22  Alexandre Oliva  <aoliva@redhat.com>
1925
1926         PR debug/41295
1927         * reload1.c (reload): Reset debug insns with pseudos without
1928         equivalences.
1929
1930 2009-09-22  Janis Johnson  <janis187@us.ibm.com>
1931
1932         * config/i386/i386.c (ix86_scalar_mode_supported_p): Don't return
1933         unconditional true for decimal float modes.
1934         * config/rs6000/rs6000.c (rs6000_scalar_mode_supported_p): Ditto.
1935         * config/s390/s390.c (s390_scalar_mode_supported_p): Ditto.
1936
1937 2009-09-22  Loren J. Rittle  <ljrittle@acm.org>
1938
1939         * unwind-dw2-fde-glibc.c: Define and use USE_PT_GNU_EH_FRAME.
1940         Enable a new case for __FreeBSD__ >= 7.
1941         * crtstuff.c:  Define USE_PT_GNU_EH_FRAME for __FreeBSD__ >= 7.
1942         * config/t-freebsd: Define LIB2ADDEH and LIB2ADDEHDEP.
1943         * config/freebsd-spec.h: Conditionally define LINK_EH_SPEC
1944         and USE_LD_AS_NEEDED.
1945
1946         * doc/install.texi (*-*-freebsd*): Update target information.
1947
1948 2009-09-22  Richard Guenther  <rguenther@suse.de>
1949
1950         PR middle-end/41395
1951         * tree-dfa.c (get_ref_base_and_extent): Handle trailing
1952         arrays really properly.
1953
1954 2009-09-22  Richard Henderson  <rth@redhat.com>
1955
1956         PR target/41246
1957         * target.h (struct gcc_target): Add asm_out.trampoline_template,
1958         calls.static_chain, calls.trampoline_init,
1959         calls.trampoline_adjust_address.
1960         * target-def.h (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
1961         (TARGET_STATIC_CHAIN, TARGET_TRAMPOLINE_INIT): New.
1962         (TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
1963         * builtins.c (expand_builtin_setjmp_receiver): Use
1964         targetm.calls.static_chain; only clobber registers.
1965         (expand_builtin_init_trampoline): Use targetm.calls.trampoline_init;
1966         set up memory attributes properly for the trampoline block.
1967         (expand_builtin_adjust_trampoline): Use
1968         targetm.calls.trampoline_adjust_address.
1969         * calls.c (prepare_call_address): Add fndecl argument.  Use
1970         targetm.calls.static_chain.
1971         * df-scan.c (df_need_static_chain_reg): Remove.
1972         (df_get_entry_block_def_set): Use targetm.calls.static_chain;
1973         consolodate static chain handling.
1974         * doc/tm.texi: Document new hooks.
1975         * emit-rtl.c (static_chain_rtx, static_chain_incoming_rtx): Remove.
1976         (init_emit_regs): Don't initialize them.
1977         * expr.h (prepare_call_address): Update decl.
1978         * final.c (profile_function): Use targetm.calls.static_chain.
1979         * function.c (expand_function_start): Likewise.
1980         * rtl.h (static_chain_rtx, static_chain_incoming_rtx): Remove.
1981         * stmt.c (expand_nl_goto_receiver): Use targetm.calls.static_chain;
1982         only clobber registers.
1983         * targhooks.c (default_static_chain): New.
1984         (default_asm_trampoline_template, default_trampoline_init): New.
1985         (default_trampoline_adjust_address): New.
1986         * targhooks.h: Declare them.
1987         * varasm.c (assemble_trampoline_template): Use
1988         targetm.asm_out.trampoline_template.  Make the memory block const
1989         and set its size.
1990
1991         * config/alpha/alpha.c (alpha_trampoline_init): Rename from
1992         alpha_initialize_trampoline.  Make static.  Merge VMS parameter
1993         differences into the TARGET_ABI_OPEN_VMS code block.
1994         (TARGET_TRAMPOLINE_INIT): New.
1995         * config/alpha/alpha.h (TRAMPOLINE_TEMPLATE): Remove.
1996         (TRAMPOLINE_SECTION, INITIALIZE_TRAMPOLINE): Remove.
1997         * config/alpha/vms.h (TRAMPOLINE_SIZE, TRAMPOLINE_ALIGNMENT): Remove.
1998         (INITIALIZE_TRAMPOLINE): Remove.
1999
2000         * config/arc/arc.h (TRAMPOLINE_ALIGNMENT): New.
2001         (TRAMPOLINE_TEMPLATE): Merge with ...
2002         (INITIALIZE_TRAMPOLINE): ... this and move ...
2003         * config/arc/arc.c (arc_trampoline_init): ... here.
2004         (TARGET_TRAMPOLINE_INIT): New.
2005
2006         * config/arm/arm.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
2007         (TARGET_TRAMPOLINE_INIT, TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
2008         (arm_asm_trampoline_template): New.
2009         (arm_trampoline_init, arm_trampoline_adjust_address): New.
2010         * config/arm/arm.h (TRAMPOLINE_TEMPLATE, ARM_TRAMPOLINE_TEMPLATE,
2011         THUMB2_TRAMPOLINE_TEMPLATE, THUMB1_TRAMPOLINE_TEMPLATE): Move all
2012         code to arm_asm_trampoline_template.
2013         (TRAMPOLINE_ADJUST_ADDRESS): Move code to
2014         arm_trampoline_adjust_address.
2015         (INITIALIZE_TRAMPOLINE): Move code to arm_trampoline_init;
2016         adjust for target hook parameters.
2017
2018         * config/avr/avr.h (TRAMPOLINE_TEMPLATE, INITIALIZE_TRAMPOLINE):
2019         Remove.
2020
2021         * config/bfin/bfin-protos.h (initialize_trampoline): Remove.
2022         * config/bfin/bfin.c (bfin_asm_trampoline_template): New.
2023         (bfin_trampoline_init): Rename from initialize_trampoline;
2024         make static; update for target hook parameters.
2025         (TARGET_ASM_TRAMPOLINE_TEMPLATE, TARGET_TRAMPOLINE_INIT): New.
2026         * config/bfin/bfin.h (TRAMPOLINE_TEMPLATE): Move code to
2027         bfin_asm_trampoline_template.
2028         (INITIALIZE_TRAMPOLINE): Remove.
2029
2030         * config/cris/cris.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
2031         TARGET_TRAMPOLINE_INIT, cris_asm_trampoline_template,
2032         cris_trampoline_init): New.
2033         * config/cris/cris.h (TRAMPOLINE_TEMPLATE): Move code to
2034         cris_asm_trampoline_template.
2035         (INITIALIZE_TRAMPOLINE): Move code to cris_trampoline_init;
2036         adjust for target hook parameters.
2037
2038         * config/crx/crx.h (INITIALIZE_TRAMPOLINE): Remove.
2039
2040         * config/fr30/fr30.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
2041         TARGET_TRAMPOLINE_INIT, fr30_asm_trampoline_template,
2042         fr30_trampoline_init): New.
2043         * config/fr30/fr30.h (TRAMPOLINE_TEMPLATE): Move code to
2044         fr30_asm_trampoline_template.
2045         (INITIALIZE_TRAMPOLINE): Move code to fr30_trampoline_init;
2046         adjust for target hook parameters.
2047
2048         * config/frv/frv.c (TARGET_TRAMPOLINE_INIT): New.
2049         (frv_trampoline_init): Rename from frv_initialize_trampoline;
2050         make static, adjust arguments for TARGET_TRAMPOLINE_INIT hook.
2051         * config/frv/frv.h (INITIALIZE_TRAMPOLINE): Remove.
2052         * config/frv/frv-protos.h (frv_initialize_trampoline): Remove.
2053
2054         * config/h8300/h8300.c (h8300_trampoline_init): New.
2055         (TARGET_TRAMPOLINE_INIT): New.
2056         * config/h8300/h8300.h (INITIALIZE_TRAMPOLINE): Move code
2057         to h8300_trampoline_init and adjust for hook parameters.
2058
2059         * config/ia64/ia64-protos.h (ia64_initialize_trampoline): Remove.
2060         * config/ia64/ia64.c (TARGET_TRAMPOLINE_INIT): New.
2061         (ia64_trampoline_init): Rename from ia64_initialize_trampoline;
2062         make static; adjust for hook parameters.
2063         * config/ia64/ia64.h (INITIALIZE_TRAMPOLINE): Remove.
2064
2065         * config/iq2000/iq2000.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
2066         (TARGET_TRAMPOLINE_INIT): New.
2067         (iq2000_asm_trampoline_template, iq2000_trampoline_init): New.
2068         * config/iq2000/iq2000.h (TRAMPOLINE_TEMPLATE): Move code to
2069         iq2000_asm_trampoline_template.
2070         (INITIALIZE_TRAMPOLINE): Move code to iq2000_trampoline_init.
2071         (TRAMPOLINE_CODE_SIZE): New.
2072         (TRAMPOLINE_SIZE): Use it.
2073         (TRAMPOLINE_ALIGNMENT): Follow Pmode.
2074
2075         * config/m32c/m32c-protos.h (m32c_initialize_trampoline): Remove.
2076         * config/m32c/m32c.c (TARGET_TRAMPOLINE_INIT): New.
2077         (m32c_trampoline_init): Rename from m32c_initialize_trampoline;
2078         adjust for hook parameters.
2079         * config/m32c/m32c.h (INITIALIZE_TRAMPOLINE): Remove.
2080
2081         * config/m32r/m32r.c (TARGET_TRAMPOLINE_INIT): New.
2082         (m32r_trampoline_init): New.
2083         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Move code to
2084         m32r_trampoline_init.
2085
2086         * config/m68hc11/m68hc11.c (TARGET_TRAMPOLINE_INIT): New.
2087         (m68hc11_trampoline_init): Rename from m68hc11_initialize_trampoline;
2088         make static; update for hook parameters.
2089         * config/m68hc11/m68hc11-protos.h: Update.
2090         * config/m68hc11/m68hc11.h (INITIALIZE_TRAMPOLINE): Remove.
2091
2092         * config/mcore/mcore.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
2093         (TARGET_TRAMPOLINE_INIT): New.
2094         (mcore_function_value): Fix typo.
2095         (mcore_asm_trampoline_template, mcore_trampoline_init): New.
2096         * config/mcore/mcore.h (TRAMPOLINE_TEMPLATE): Move code
2097         to mcore_asm_trampoline_template.
2098         (INITIALIZE_TRAMPOLINE): Move code to mcore_trampoline_init.
2099
2100         * config/mep/mep.h (INITIALIZE_TRAMPOLINE): Remove.
2101         * config/mep/mep.c (TARGET_TRAMPOLINE_INIT): New.
2102         (mep_trampoline_init): Rename from mep_init_trampoline; make static;
2103         update for hook parameters.
2104         * config/mep/mep-protos.h (mep_init_trampoline): Remove.
2105
2106         * config/mips/mips.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
2107         mips_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
2108         mips_trampoline_init): New.
2109         * config/mips/mips.h (TRAMPOLINE_TEMPLATE): Move code to
2110         mips_asm_trampoline_template.
2111         (INITIALIZE_TRAMPOLINE): Move code to mips_trampoline_init;
2112         update for hook parameters.
2113
2114         * gcc/config/mmix/mmix.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
2115         (TARGET_TRAMPOLINE_INIT): New.
2116         (mmix_trampoline_size): Remove.
2117         (mmix_asm_trampoline_template): Rename from mmix_trampoline_template;
2118         make static.  Remove out-of-date tetra vs octa comment.
2119         (mmix_trampoline_init): Rename from mmix_initialize_trampoline;
2120         make static; update for hook parameters.
2121         * config/mmix/mmix.h (TRAMPOLINE_TEMPLATE): Remove.
2122         (INITIALIZE_TRAMPOLINE): Remove.
2123         (TRAMPOLINE_SIZE): Use a constant instead of mmix_trampoline_size.
2124         (TRAMPOLINE_ALIGNMENT): New.
2125         * gcc/config/mmix/mmix-protos.h: Update.
2126
2127         * config/mn10300/mn10300.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
2128         mn10300_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
2129         mn10300_trampoline_init): New.
2130         * config/mn10300/mn10300.h (TRAMPOLINE_TEMPLATE): Move code to
2131         mn10300_asm_trampoline_template.
2132         (INITIALIZE_TRAMPOLINE): Move code to mn10300_trampoline_init.
2133
2134         * config/moxie/moxie.c (moxie_static_chain,
2135         moxie_asm_trampoline_template, moxie_trampoline_init,
2136         TARGET_STATIC_CHAIN, TARGET_ASM_TRAMPOLINE_TEMPLATE,
2137         TARGET_TRAMPOLINE_INIT): New.
2138         * config/moxie/moxie.h (INITIALIZE_TRAMPOLINE): Move code to
2139         moxie_trampoline_init.
2140         (TRAMPOLINE_TEMPLATE): Move code to moxie_asm_trampoline_template.
2141         (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Remove.
2142
2143         * gcc/config/pa/pa.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
2144         pa_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
2145         pa_trampoline_init, TARGET_TRAMPOLINE_ADJUST_ADDRESS,
2146         pa_trampoline_adjust_address): New.
2147         * config/pa/pa.h (TRAMPOLINE_TEMPLATE): Move code to
2148         pa_asm_trampoline_template.
2149         (TRAMPOLINE_ALIGNMENT): New.
2150         (TRAMPOLINE_CODE_SIZE): Move to pa.c.
2151         (INITIALIZE_TRAMPOLINE): Move code to pa_trampoline_init;
2152         adjust for hook parameters.
2153         (TRAMPOLINE_ADJUST_ADDRESS): Move code to pa_trampoline_adjust_address.
2154
2155         * config/pdp11/pdp11.c (pdp11_trampoline_init): New.
2156         (TARGET_TRAMPOLINE_INIT): New.
2157         * config/pdp11/pdp11.h (TRAMPOLINE_TEMPLATE): Remove.
2158         (INITIALIZE_TRAMPOLINE): Move code to pdp11_trampoline_init.
2159
2160         * config/picochip/picochip.h (INITIALIZE_TRAMPOLINE): Remove.
2161
2162         * config/rs6000/rs6000-protos.h (rs6000_initialize_trampoline): Remove.
2163         * config/rs6000/rs6000.c (TARGET_TRAMPOLINE_INIT): New.
2164         (rs6000_trampoline_init): Rename from rs6000_initialize_trampoline;
2165         make static; adjust parameters for the hook.
2166         * config/rs6000/rs6000.h (INITIALIZE_TRAMPOLINE): Remove.
2167
2168         * config/s390/s390.c (s390_asm_trampoline_template): Rename from
2169         s390_trampoline_template; make static.
2170         (s390_trampoline_init): Rename from s390_initialize_trampoline;
2171         make static; adjust for target hook.
2172         (TARGET_ASM_TRAMPOLINE_TEMPLATE, TARGET_TRAMPOLINE_INIT): New.
2173         * config/s390/s390-protos.h: Remove trampoline decls.
2174         * config/s390/s390.h (INITIALIZE_TRAMPOLINE): Remove.
2175         (TRAMPOLINE_TEMPLATE): Remove.
2176         (TRAMPOLINE_ALIGNMENT): New.
2177
2178         * config/score/score-protos.h (score_initialize_trampoline): Remove.
2179         * config/score/score.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
2180         (TARGET_TRAMPOLINE_INIT): New.
2181         (score_asm_trampoline_template): New.
2182         (score_trampoline_init): Rename from score_initialize_trampoline;
2183         make static; adjust for hook parameters.
2184         * config/score/score.h (TRAMPOLINE_TEMPLATE): Move code to
2185         score[37]_asm_trampoline_template.
2186         (INITIALIZE_TRAMPOLINE): Remove.
2187         * config/score/score3.c (score3_asm_trampoline_template): New.
2188         (score3_trampoline_init): Rename from score3_initialize_trampoline;
2189         adjust for target hook.
2190         * config/score/score7.c (score7_asm_trampoline_template): New.
2191         (score7_trampoline_init): Rename from score7_initialize_trampoline;
2192         adjust for target hook.
2193         * config/score/score3.h, config/score/score7.h: Update.
2194
2195         * config/sh/sh-protos.h (sh_initialize_trampoline): Remove.
2196         * config/sh/sh.c (TARGET_TRAMPOLINE_INIT): New.
2197         (TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
2198         (sh_trampoline_init): Rename from sh_initialize_trampoline;
2199         make static; adjust for target hook parameters.
2200         (sh_trampoline_adjust_address): New.
2201         * config/sh/sh.h (INITIALIZE_TRAMPOLINE): New.
2202         (TRAMPOLINE_ADJUST_ADDRESS): Move code to sh_trampoline_adjust_address.
2203
2204         * config/sparc/sparc.c (TARGET_TRAMPOLINE_INIT): New.
2205         (sparc32_initialize_trampoline): Rename from
2206         sparc_initialize_trampoline; make static; replace tramp parameter
2207         with m_tramp and update memory accesses.
2208         (sparc64_initialize_trampoline): Similarly.
2209         (sparc_trampoline_init): New.
2210         * config/sparc/sparc-protos.h: Remove trampoline decls.
2211         * config/sparc/sparc.h (INITIALIZE_TRAMPOLINE): Remove.
2212         * config/sparc/sparc.md (nonlocal_goto): Don't use static_chain_rtx.
2213
2214         * config/spu/spu.c (TARGET_TRAMPOLINE_INIT): New.
2215         (array_to_constant): Make ARR parameter const.
2216         (spu_trampoline_init): Rename from spu_initialize_trampoline;
2217         make static; update for hook parameters.
2218         * config/spu/spu-protos.h: Update decls.
2219         * config/spu/spu.h (INITIALIZE_TRAMPOLINE): Remove.
2220
2221         * config/stormy16/stormy16.c (xstormy16_trampoline_init): Rename
2222         from xstormy16_initialize_trampoline; make static; update for
2223         hook parameters.
2224         (TARGET_TRAMPOLINE_INIT): New.
2225         * config/stormy16/stormy16.h (INITIALIZE_TRAMPOLINE): Remove.
2226
2227         * config/v850/v850.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
2228         (TARGET_TRAMPOLINE_INIT): New.
2229         (v850_can_eliminate): Make static.
2230         (v850_asm_trampoline_template, v850_trampoline_init): New.
2231         * config/v850/v850.h (TRAMPOLINE_TEMPLATE): Move code to
2232         v850_asm_trampoline_template.
2233         (INITIALIZE_TRAMPOLINE): Move code to v850_trampoline_init
2234         and adjust for target hook parameters.
2235
2236         * config/vax/vax.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
2237         (TARGET_TRAMPOLINE_INIT): New.
2238         (vax_asm_trampoline_template, vax_trampoline_init): New.
2239         * config/vax/vax.h (TRAMPOLINE_TEMPLATE): Move code to
2240         vax_asm_trampoline_template.
2241         (INITIALIZE_TRAMPOLINE): Move code to vax_trampoline_init.
2242
2243         * config/xtensa/xtensa.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
2244         (TARGET_TRAMPOLINE_INIT): New.
2245         (xtensa_asm_trampoline_template): Rename from
2246         xtensa_trampoline_template; make static.
2247         (xtensa_trampoline_init): Rename from xtensa_initialize_trampoline;
2248         make static; update for hook parameters.
2249         * config/xtensa/xtensa-protos.h: Remove trampoline decls.
2250         * config/xtensa/xtensa.h (TRAMPOLINE_TEMPLATE): Remove.
2251         (INITIALIZE_TRAMPOLINE): Remove.
2252
2253         * config/i386/i386.c (ix86_function_regparm): Do not issue an
2254         error for nested functions with regparm=3.
2255         (ix86_compute_frame_layout): Adjust frame pointer offset for
2256         ix86_static_chain_on_stack.
2257         (ix86_expand_prologue): Handle ix86_static_chain_on_stack.
2258         (ix86_emit_restore_reg_using_pop): Increment ix86_cfa_state->offset,
2259         don't reset to UNITS_PER_WORD.
2260         (ix86_emit_leave): Adjust ix86_cfa_state.
2261         (ix86_expand_epilogue): Handle ix86_static_chain_on_stack.
2262         (ix86_static_chain): New.
2263         (ix86_trampoline_init): Rename from x86_initialize_trampoline;
2264         make static; update for target hook parameters; use ix86_static_chain.
2265         (TARGET_STATIC_CHAIN, TARGET_TRAMPOLINE_INIT): New.
2266         * config/i386/i386.h (STATIC_CHAIN_REGNUM): Remove.
2267         (INITIALIZE_TRAMPOLINE): Remove.
2268         (TRAMPOLINE_SIZE): Use 24 for 64-bit.
2269         (struct machine_function): Use BOOL_BITFIELD; rearrange bitfields
2270         to the end.  Add static_chain_on_stack.
2271         (ix86_static_chain_on_stack): New.
2272
2273         * config/m68k/m68k.c (TARGET_TRAMPOLINE_INIT): New.
2274         (m68k_output_mi_thunk): Don't use static_chain_rtx.
2275         (m68k_trampoline_init): New.
2276         * config/m68k/m68k.h (INITIALIZE_TRAMPOLINE): Move code to
2277         m68k_trampoline_init and adjust for hook parameters.
2278         * config/m68k/netbsd-elf.h (TRAMPOLINE_TEMPLATE): Remove.
2279         (TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE): Remove.
2280
2281 2009-09-22  Jakub Jelinek  <jakub@redhat.com>
2282
2283         * config/rs6000/rs6000.c (bdesc_2arg): Fix CODE_FOR_vector_gt* codes
2284         for __builtin_altivec_vcmpgt{sb,uh,sh,uw}.
2285
2286         * reload1.c (reload): Call wrap_constant when substituting
2287         reg for equiv inside of DEBUG_INSNs.
2288
2289         PR bootstrap/41405
2290         * dwarf2out.c (base_type_die, record_type_tag, gen_subprogram_die,
2291         add_call_src_coords_attributes, add_high_low_attributes,
2292         gen_compile_unit_die, gen_type_die_with_usage force_decl_die,
2293         gen_decl_die, dwarf2out_imported_module_or_decl_1, dwarf2out_finish,
2294         dwarf2out_imported_module_or_decl): Avoid using DWARF3 additions
2295         when -gdwarf-2 -gstrict-dwarf.
2296         (loc_list_from_tree): Likewise.  Avoid using DWARF4 additions when
2297         -gdwarf-[23] -gstrict-dwarf.
2298         (address_of_int_loc_descriptor, loc_descriptor,
2299         loc_list_for_address_of_addr_expr_of_indirect_ref): Avoid using
2300         DWARF4 additions when -gdwarf-[23] -gstrict-dwarf.
2301         * common.opt (gno-strict-dwarf, gstrict-dwarf): New options.
2302
2303 2009-09-22  Richard Guenther  <rguenther@suse.de>
2304
2305         PR tree-optimization/41428
2306         * tree-ssa-ccp.c (ccp_fold_stmt): New function.
2307         (ccp_finalize): Pass it to substitute_and_fold.
2308
2309 2009-09-22  Richard Guenther  <rguenther@suse.de>
2310
2311         * tree-ssa-propagate.h (ssa_prop_fold_stmt_fn): Declare.
2312         (substitute_and_fold): Adjust prototype.
2313         * tree-vrp.c (vrp_evaluate_conditional): Make static.
2314         (simplify_stmt_using_ranges): Likewise.
2315         (fold_predicate_in): Move here from tree-ssa-propagate.c.
2316         (vrp_fold_stmt): New function.
2317         (vrp_finalize): Pass it to substitute_and_fold.
2318         * tree-flow.h (vrp_evaluate_conditional): Remove.
2319         (simplify_stmt_using_ranges): Likewise.
2320         * tree-ssa-ccp.c (ccp_finalize): Adjust call to substitute_and_fold.
2321         * tree-ssa-copy.c (fini_copy_prop): Likewise.
2322         * tree-ssa-propagate.c (struct prop_stats_d): Rename num_pred_folded
2323         member.
2324         (fold_predicate_in): Move to tree-vrp.c.
2325         (substitute_and_fold): Use the callback instead of calling into
2326         tree-vrp.c functions directly.
2327
2328 2009-09-22  Jakub Jelinek  <jakub@redhat.com>
2329
2330         * dwarf2out.c (address_of_int_loc_descriptor): Avoid signed/unsigned
2331         comparison warning on rs6000.
2332
2333         PR middle-end/41429
2334         * tree-cfg.c (remove_useless_stmts_tc): Call gsi_next (gsi) even for
2335         GIMPLE_EH_MUST_NOT_THROW cleanup.
2336         (verify_types_in_gimple_stmt): Handle GIMPLE_EH_MUST_NOT_THROW.
2337
2338 2009-09-22  Jack Howarth  <howarth@bromo.med.uc.edu>
2339
2340         PR middle-end/41260
2341         * gcc/config.gcc: Use darwin9.h and darwin10.h on darwin10 and later.
2342         * gcc/config/darwin10.h: Add file to pass -no_compact_unwind on
2343         LIB_SPEC for darwin10 and later since it always uses the unwinder in
2344         libSystem which is derived from the gcc 4.2.1 unwinder.
2345
2346 2009-09-22  Dave Korn  <dave.korn.cygwin@gmail.com>
2347
2348         PR middle-end/41357
2349         * varasm.c (default_encode_section_info): Copy TLS model into
2350         sym_ref flags regardless of backend support for TLS, for all
2351         model types except TLS_MODEL_EMULATED.
2352
2353 2009-09-22  Dave Korn  <dave.korn.cygwin@gmail.com>
2354
2355         PR bootstrap/41404
2356         * dwarf2out.c (mem_loc_descriptor): Punt on CONST_STRING until
2357         we can handle it correctly.
2358
2359 2009-09-21  Gerald Pfeifer  <gerald@pfeifer.com>
2360
2361         * doc/install.texi (os2): Remove section.
2362
2363 2009-09-21  Gerald Pfeifer  <gerald@pfeifer.com>
2364
2365         * doc/standards.texi (Objective-C): Adjust two URLs.
2366
2367 2009-09-21  Giuseppe Scrivano <gscrivano@gnu.org>
2368
2369         * tree-tailcall.c (process_assignment): Don't check if a
2370         multiplication or an addition are already present.
2371         (find_tail_calls): Combine multiple additions and multiplications.
2372         (adjust_accumulator_values): Emit accumulators.
2373
2374 2009-09-21  Kai Tietz  <kai.tietz@onevision.com>
2375
2376         * config/i386/i386.c (ix86_expand_epilogue): Adjust offset for
2377         xmm register restore.
2378
2379 2009-09-21  Jan Hubicka  <jh@suse.cz>
2380
2381         * dwarf2out.c (decl_loc_table_eq): Allow decl_loc_table to be NULL.
2382         (dwarf2out_abstract_function): NULLify decl_loc_table at begginig and
2383         restore at the end.
2384
2385 2009-09-21  Eric Botcazou  <ebotcazou@adacore.com>
2386
2387         * stor-layout.c (layout_type): Remove obsolete code.
2388
2389 2009-09-20  H.J. Lu  <hongjiu.lu@intel.com>
2390
2391         PR middle-end/41395
2392         * opts.c (decode_options): Don't turn on flag_ipa_sra for opt2.
2393
2394 2009-09-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2395
2396         PR middle-end/30789
2397         * builtins.c (do_mpc_arg2): Accept DO_NONFINITE parameter.
2398         (do_mpc_ckconv): Accept FORCE_CONVERT parameter.
2399         (fold_builtin_2, do_mpc_arg1): Update accordingly.
2400         * fold-const.c (const_binop): Likewise.
2401         * real.h (do_mpc_arg2): Update prototype.
2402
2403 2009-09-20  Jan Hubicka  <jh@suse.cz>
2404
2405         * dwarf2out.c (add_const_value_attribute): Return true if successful.
2406         (add_location_or_const_value_attribute): Rewrite using
2407         loc_list_from_tree.
2408         (tree_add_const_value_attribute): Return true if successful.
2409         (tree_add_const_value_attribute_for_decl): Likewise.
2410
2411         * dwarf2out.c (address_of_int_loc_descriptor): Break out from ...
2412         (loc_descriptor): ... here;
2413         (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
2414         (cst_pool_loc_descr): Break out from ...; do not reffer constant
2415         pool items that was not marked for output.
2416         (loc_list_from_tree): ... here; handle special cases of ADDR_EXPR;
2417         (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
2418         (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
2419         handle ALIGN_INDIRECT_REF, MISALIGNED_INDIRECT_REF, REALPART_EXPR,
2420         IMAGPART_EXPR; handle address of INTEGER_CST; improve handling of
2421         CONSTRUCTOR; handle REAL_CST, STRING_CST, COMPLEX_CST; use
2422         DW_OP_stack_value to get address of items that are not available
2423         as addresses.
2424         (dw_loc_list): Handle single element lists correctly.
2425
2426 2009-09-20  Kai Tietz  <kai.tietz@onevision.com>
2427             Pascal Obry  <obry@adacore.com>
2428
2429         * unwind-dw2-fde.c (classify_object_over_fdes):
2430         Cast the constant 1 to _Unwind_Ptr.
2431         (add_fdes): Likewise.
2432         (linear_search_fdes): Likewise.
2433
2434 2009-09-20  Eric Botcazou  <ebotcazou@adacore.com>
2435
2436         * stor-layout.c (set_sizetype): Avoid useless type copy.
2437
2438 2009-09-20  Richard Sandiford  <rdsandiford@googlemail.com>
2439
2440         * configure.ac (gcc_cv_ld_mips_personality_relaxation): New
2441         feature check.
2442         (HAVE_LD_PERSONALITY_RELAXATION): New macro definition.
2443         * configure, config.in: Regenerate.
2444         * dwarf2asm.c (eh_data_format_name): Handle DW_EH_PE_indirect |
2445         DW_EH_PE_absptr.
2446         * config/mips/mips.h (TARGET_WRITABLE_EH_FRAME): New macro.
2447         (ASM_PREFERRED_EH_DATA_FORMAT): Define.  Use MIPS_EH_INDIRECT
2448         for global data if the output could be used in a shared library.
2449         * config/mips/mips.c (mips_override_options): Set flag_dwarf2_cfi_asm
2450         to 0 if TARGET_WRITABLE_EH_FRAME.
2451
2452 2009-09-20  Paolo Bonzini <bonzini@gnu.org>
2453
2454         PR rtl-optimization/39886
2455         * combine.c (update_cfg_for_uncondjump): Set EDGE_FALLTHRU
2456         just when insn is equal to BB_END (bb).
2457
2458 2009-09-19  Adam Nemet  <anemet@caviumnetworks.com>
2459
2460         * config/mips/mips.opt (mrelax-pic-calls): New option.
2461         * config/mips/mips.c (mips_strip_unspec_address): Move it up in
2462         the file.
2463         (mips_unspec_call): Change "unspec_call" expander into this.
2464         (mips_strip_unspec_call): New function.
2465         (mips_got_load): Call mips_unspec_call instead of
2466         gen_unspec_call<mode>.
2467         (mips16_build_call_stub): Fix comment for fp_code.  Adjust call to
2468         MIPS_CALL.
2469         (mips_cfg_in_reorg): New function.
2470         (mips16_lay_out_constants): Use it to decide whether to call
2471         CFG-aware insn splitting.
2472         (r10k_insert_cache_barriers): Move CFG set-up code from here to
2473         mips_reorg.  Move DF set-up code from here ...
2474         (mips_df_reorg): ... to here.  Call r10k_insert_cache_barriers
2475         from here.
2476         (mips_reorg): Call mips_df_reorg instead of
2477         r10k_insert_cache_barriers.  Move CFG set-up code here from
2478         r10k_insert_cache_barriers.
2479         (mips_call_expr_from_insn): New function.
2480         (mips_pic_call_symbol_from_set): Likewise.
2481         (mips_find_pic_call_symbol): Likewise.
2482         (mips_annotate_pic_call_expr): Likewise.
2483         (mips_get_pic_call_symbol): Likewise.
2484         (mips_annotate_pic_calls): Likewise.
2485         (mips_override_options): Disable -mrelax-pic-calls unless PIC
2486         calls are used.
2487         (mips_set_mips16_mode): Disable -mrelax-pic-calls for MIPS16.
2488         * config/mips/mips-protos.h (mips_get_pic_call_symbol): Declare it.
2489         * config/mips/mips.h (MIPS_CALL): Use it to print the .reloc
2490         directive.
2491         * config/mips/mips.md (UNSPEC_CALL_ATTR): New unspec.
2492         (unspec_call<mode>): Remove it.
2493         (sibcall_internal, sibcall_value_internal,
2494         sibcall_value_multiple_internal, call_internal, call_split,
2495         call_value_internal, call_value_split,
2496         call_value_multiple_internal, call_value_multiple_split): Pass
2497         SIZE_OPNO to MIPS_CALL.
2498         (call_internal_direct, call_direct_split,
2499         call_value_internal_direct, call_value_direct_split): Pass -1 as
2500         SIZE_OPNO to MIPS_CALL.
2501         * configure.ac <mips*-*-*>: Add test for .reloc R_MIPS_JALR.
2502         * configure: Regenerate.
2503         * doc/invoke.texi (Option Summary): Add -mrelax-pic-calls
2504         and -mno-relax-pic-calls.
2505         (MIPS Options): Document -mrelax-pic-calls and -mno-relax-pic-calls.
2506
2507 2009-09-19  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
2508
2509         PR bootstrap/35619
2510         * Makefile.in (stmp-fixinc): Ensure `include-fixed' is created
2511         in the directory this rule is called from, rather than the
2512         toplevel 'gcc' directory, to fix in-tree build.
2513
2514 2009-09-19  Chris Demetriou  <cgd@google.com>
2515
2516         PR preprocessor/28435:
2517         * c-opts.c (c_common_handle_option): For -MD and -MMD, indicate
2518         to cpplib that the preprocessor output is needed.
2519
2520 2009-09-19  Jakub Jelinek  <jakub@redhat.com>
2521
2522         * config/rs6000/rs6000.md (*save_gpregs_<mode>, *save_fpregs_<mode>,
2523         *restore_gpregs_<mode>, *return_and_restore_gpregs_<mode>,
2524         *return_and_restore_fpregs_<mode>,
2525         *return_and_restore_fpregs_aix_<mode>): Remove 'z' operand modifier.
2526
2527         PR bootstrap/41397
2528         * dwarf2out.c (mem_loc_descriptor) <case SUBREG>: Recurse
2529         instead of assuming it has always a REG inside of it.
2530
2531 2009-09-18  Gerald Pfeifer  <gerald@pfeifer.com>
2532
2533         * config/freebsd.h: Update comment on types.
2534         (WINT_TYPE): Define.
2535
2536 2009-09-18  Jason Merrill  <jason@redhat.com>
2537
2538         * c.opt: Add -fno-deduce-init-list.
2539
2540 2009-09-18  Neil Vachharajani  <nvachhar@google.com>
2541
2542         * value-prof.c (interesting_stringop_to_profile_p): Added output
2543         argument to indicate which parameter is the size parameter.
2544         * value-prof.c (gimple_stringop_fixed_value): Use
2545         INTERESTING_STRINGOP_TO_PROFILE_P to find size argument.
2546         * value-prof.c (gimple_stringops_transform): Update call sites to
2547         INTERESTING_STRINGOP_TO_PROFILE_P to reflect parameter change.
2548
2549 2009-09-18  Uros Bizjak  <ubizjak@gmail.com>
2550
2551         PR target/38288
2552         From David Binderman <dcb314@hotmail.com>:
2553         * gcc/config/i386/i386.c (ix86_function_regparm): Remove useless
2554         local variable f.  Remove stale comments.
2555         (ix86_compute_frame_layout): Remove useless local variable total_size.
2556         Remove #if 0'd code.
2557         (legitimate_address_p): Remove useless local variables
2558         reason_rtx and reason.
2559         (ix86_split_copysign_const): Remove useless local variable op1.
2560         (scale_counter): Remove useless local variable piece_size_mask.
2561
2562 2009-09-18  Jakub Jelinek  <jakub@redhat.com>
2563
2564         * stmt.c (expand_asm_operands): Set REG_ATTRS on the temporary from
2565         output decl.
2566
2567 2009-09-17  Michael Haubenwallner  <michael.haubenwallner@salomon.at>
2568
2569         PR target/40913
2570         * config/pa/t-hpux-shlib: Set soname in libgcc_s.sl.
2571
2572 2009-09-17  Jakub Jelinek  <jakub@redhat.com>
2573
2574         * c-decl.c (finish_struct): Adjust DECL_SOURCE_LOCATION of
2575         TYPE_STUB_DECL.
2576
2577 2009-09-17  Alexandre Oliva  <aoliva@redhat.com>
2578
2579         * dwarf2out.c (loc_descriptor): Emit DW_OP_stack_value and
2580         DW_OP_implicit_value even without dwarf_version 4.
2581
2582 2009-09-17  Jan Hubicka  <jh@suse.cz>
2583
2584         * dwarf2out.c: Include tree-pass.h and gimple.h.
2585         (loc_list_plus_const): New function.
2586         (loc_descriptor_from_tree_1): Rename to ...
2587         (loc_descriptor_from_tree): ... remove original.
2588         (loc_list_from_tree): New function.
2589         (add_AT_location_description): Accept location list.
2590         (tls_mem_loc_descriptor): Update call of loc_descriptor_from_tree.
2591         (concatn_mem_loc_descriptor): Remove.
2592         (mem_loc_descriptor): Handle CONCAT/CONCATN and VAR_LOCATION by
2593         returning NULL.
2594         (secname_for_decl): Move up.
2595         (hidden_reference_p): New function; break out from ...
2596         (loc_by_refernece): ... here; move up.
2597         (dw_loc_list): New function.
2598         (single_element_loc_list): New function.
2599         (single_element_loc_list_p): New function.
2600         (add_loc_descr_to_each): New function.
2601         (add_loc_list): New function.
2602         (loc_descr_from_tree): Make wraper of loc_list_from_tree.
2603         (loc_list_from_tree): Reroganized from loc_descr_from_tree;
2604         add diagnostics why expansion failed.
2605         (add_location_or_const_value_attribute): Support location lists.
2606         (add_bound_info): Likewise.
2607         (descr_info_loc): Update call of loc_descriptor_from_tree.
2608         (gen_variable_die): Work on location lists.
2609         * final.c (pass_final): Add dump file.
2610         * Makefile.in (dwarf2out.o): Add new dependencies.
2611
2612 2009-09-17  Janis Johnson  <janis187@us.ibm.com>
2613
2614         PR c/41049
2615         * real.c decimal_from_integer, decimal_integer_string): New.
2616         (real_from_integer): Use them as special case for decimal float.
2617         * config/dfp-bit.c (_si_to_sd, _usi_to_sd): Use default rounding.
2618         (_di_to_sd, _di_to_dd, _di_to_td, _udi_to_sd, _udi_to_dd, _udi_to_td):
2619         Do not append zero after the decimal point in string to convert.
2620
2621 2009-09-17  Alexander Monakov  <amonakov@ispras.ru>
2622
2623         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Add bounds only
2624         for ARRAY_REFs.  Use array_ref_{low,up}_bound to determine bounds.
2625
2626 2009-09-17  Martin Jambor  <mjambor@suse.cz>
2627
2628         * common.opt (fipa-sra): New switch.
2629         * opts.c (decode_options): Turn flag_ipa_sra on for opt2.
2630         * timevar.def (TV_IPA_SRA): New timevar.
2631         * params.def (ipa-sra-ptr-growth-factor): New parameter.
2632         * doc/invoke.texi: Document -fipa-sra and ipa-sra-ptr-growth-factor.
2633         * tree-sra.c: Include cgraph.c.
2634         (enum sra_mode): Added SRA_MODE_EARLY_IPA.
2635         (struct access): Added fields stmt, grp_maybe_modified, grp_scalar_ptr
2636         and grp_not_necessarilly_dereferenced.
2637         (func_param_count): New variable.
2638         (encountered_apply_args): New variable.
2639         (bb_dereferences): New variable.
2640         (final_bbs): New variable.
2641         (no_accesses_representant): New variable.
2642         (no_accesses_p): New function.
2643         (dump_access): Dump the new fields.
2644         (sra_initialize): Set encountered_apply_args to false.
2645         (get_ssa_base_param): New function.
2646         (mark_parm_dereference): New function.
2647         (create_access): Caring for INIDRECT_REFs and different handling of
2648         varialble length accesses in early IPA SRA.  Store the stmt - a new
2649         parameter - to the new access.
2650         (build_access_from_expr_1): New parameter stmt, passed to
2651         create_access.  Handle INDIRECT_REFs.
2652         (build_access_from_expr): Pass the current statement to
2653         build_access_from_expr_1.
2654         (disqualify_ops_if_throwing_stmt): Trigger only in intraprocedural
2655         passes.
2656         (build_accesses_from_assign): Pass the current statement to
2657         build_access_from_expr_1.  Do not create assign links in IPA-SRA.
2658         (scan_function): Call handle_ssa_defs on phi nodes.  Set bits in
2659         final_bbs when necessary.  Check for calls to __builtin_apply_args.
2660         Fixup EH info if anythng was changed.
2661         (is_unused_scalar_param): New function.
2662         (ptr_parm_has_direct_uses): New function.
2663         (find_param_candidates): New function.
2664         (mark_maybe_modified): New function.
2665         (analyze_modified_params): New function.
2666         (propagate_dereference_distances): New function.
2667         (dump_dereferences_table): New function.
2668         (analyze_caller_dereference_legality): New function.
2669         (unmodified_by_ref_scalar_representative): New function.
2670         (splice_param_accesses): New function.
2671         (decide_one_param_reduction): New function.
2672         (enum ipa_splicing_result): New type.
2673         (splice_all_param_accesses): New function.
2674         (get_param_index): New function.
2675         (turn_representatives_into_adjustments): New function.
2676         (analyze_all_param_acesses): New function.
2677         (get_replaced_param_substitute): New function.
2678         (get_adjustment_for_base): New function.
2679         (replace_removed_params_ssa_names): New function.
2680         (sra_ipa_reset_debug_stmts): New function.
2681         (sra_ipa_modify_expr): New function.
2682         (sra_ipa_modify_assign): New function.
2683         (convert_callers): New function.
2684         (modify_function): New function.
2685         (ipa_sra_preliminary_function_checks): New function.
2686         (ipa_early_sra): New function.
2687         (ipa_early_sra_gate): New function.
2688         (pass_early_ipa_sra): New variable.
2689         * Makefile.in (tree-sra.o): Add cgraph.h to dependencies.
2690
2691 2009-09-17  Michael Matz  <matz@suse.de>
2692
2693         PR middle-end/41347
2694         * tree.c (build_type_attribute_qual_variant): Export.
2695         * tree.h (build_type_attribute_qual_variant): Declare.
2696         * tree-inline.c (remap_type_1): Use it to build variants with
2697         the original qualifiers and attributes.
2698
2699 2009-09-17  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
2700
2701         * cfglayout.c (fixup_reorder_chain): Accept conditional jumps
2702         without a fallthrough edge.
2703
2704 2009-09-16  DJ Delorie  <dj@redhat.com>
2705
2706         * config/m32c/m32c.c (m32c_emit_epilogue): Check for R8C or M16C
2707         chip and ignore the "fast_interrupt" attribute if so.
2708
2709 2009-09-16  Richard Henderson  <rth@redhat.com>
2710
2711         PR middle-end/41360
2712         * cfgbuild.c (find_bb_boundaries): Really re-instate 2009-09-02
2713         barrier fix.
2714
2715 2009-09-16  Richard Henderson  <rth@redhat.com>
2716
2717         PR target/41246
2718         * tree-cfg.c (verify_gimple_call): Validate that gimple_call_chain
2719         is set only if DECL_NO_STATIC_CHAIN is unset.
2720         * tree-nested.c (iter_nestinfo_start, iter_nestinfo_next): New.
2721         (FOR_EACH_NEST_INFO): New.
2722         (walk_all_functions): Use it.
2723         (finalize_nesting_tree): Likewise.
2724         (unnest_nesting_tree): Likewise.
2725         (free_nesting_tree): Use iter_nestinfo_start, iter_nestinfo_next.
2726         (get_chain_decl, get_chain_field): Reset DECL_NO_STATIC_CHAIN.
2727         (convert_gimple_call): Early out if gimple_call_chain already set.
2728         (convert_all_function_calls): Iterate until no new functions
2729         require a static chain.
2730         (finalize_nesting_tree_1): Assert DECL_NO_STATIC_CHAIN is unset
2731         when building a trampoline.  Use dump_function_to_file instead
2732         of dump_function.
2733         (lower_nested_functions): Open dump_file.  Validate that decls
2734         that have DECL_NO_STATIC_CHAIN from the front end don't have that
2735         bit reset by this pass.
2736
2737 2009-09-16  Michael Matz  <matz@suse.de>
2738
2739         PR fortran/41212
2740         * tree.h (struct tree_decl_common): Add decl_restricted_flag,
2741         shorten decl_common_unused.
2742         (DECL_RESTRICTED_P): New accessor.
2743         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Use it
2744         to disambiguate marked decls and restrict pointers.
2745
2746 2009-09-16  Richard Henderson  <rth@redhat.com>
2747
2748         PR middle-end/41360
2749         * cfgbuild.c (find_bb_boundaries): Re-instate 2009-09-02 barrier fix.
2750
2751 2009-09-16  Jakub Jelinek  <jakub@redhat.com>
2752
2753         * integrate.c (set_block_abstract_flags): Call
2754         set_decl_abstract_flags also on BLOCK_NONLOCALIZED_VARs.
2755
2756 2009-09-16  Richard Guenther  <rguenther@suse.de>
2757
2758         PR middle-end/34011
2759         * tree-flow-inline.h (may_be_aliased): Compute readonly variables
2760         as non-aliased.
2761
2762 2009-09-16  DJ Delorie  <dj@redhat.com>
2763             Kaz Kojima  <kkojima@gcc.gnu.org>
2764
2765         * config/sh/sh.c (output_stack_adjust): Add new argument frame_p.
2766         (sh_expand_prologue): Update calls to output_stack_adjust.
2767         (sh_expand_epilogue): Likewise.
2768
2769 2009-09-15  Adam Nemet  <anemet@caviumnetworks.com>
2770
2771         PR bootstrap/41349
2772         * reorg.c (redundant_insn): Don't count notes or DEBUG_INSNs when
2773         trying to limit the extent of searches in the insn stream.
2774
2775 2009-09-15  Nathan Froyd  <froydnj@codesourcery.com>
2776             Jakub Jelinek  <jakub@redhat.com>
2777
2778         PR target/41175
2779         PR target/40677
2780         * config/rs6000/rs6000.c (no_global_regs_above): Fix precedence
2781         problem.
2782         (SAVRES_NOINLINE_GPRS_SAVES_LR, SAVRES_NOINLINE_FPRS_SAVES_LR,
2783         SAVRES_NOINLINE_FPRS_DOESNT_RESTORE_LR): New strategy bits.
2784         (rs6000_savres_strategy): Always save FP registers inline if the
2785         target doesn't support hardware double-precision.  Set the above
2786         bits in return value when needed.
2787         (rs6000_savres_routine_sym): Fix computation for cache selector.
2788         Mark the generated symbol as a function.  Rename exitp argument to
2789         lr.  Move code for determining the name of the symbol...
2790         (rs6000_savres_routine_name): ...here.  New function.  Add cases for
2791         getting the names right on AIX and 64-bit Linux.
2792         (savres_routine_name): New variable.
2793         (rs6000_make_savres_rtx): Rename exitp argument to lr.  Don't assert
2794         lr isn't set when savep.  Use r12 resp. r1 instead of r11 depending
2795         on what the target routine uses as a base register.  If savep && lr
2796         describe saving of r0 into memory slot.
2797         (rs6000_emit_prologue): Correct use of call_used_regs.  Fix out of
2798         line calls for AIX ABI.
2799         (rs6000_output_function_prologue): Use rs6000_savres_routine_name to
2800         determine FP save/restore functions.
2801         (rs6000_emit_stack_reset): Handle savres if sp_offset != 0 and
2802         frame_reg_rtx != sp_reg_rtx.  Use gen_add3_insn instead of
2803         gen_addsi3.
2804         (rs6000_emit_epilogue): Adjust computation of restore_lr.
2805         Duplicate restoration of LR and execute the appropriate one
2806         depending on whether GPRs are being restored inline.  Set r11 from
2807         offsetted frame_reg_rtx instead of sp_reg_rtx; if frame_reg_rtx is
2808         r11, adjust sp_offset.  Use gen_add3_insn instead of gen_addsi3.
2809         Fix out of line calls for AIX ABI.
2810         * config/rs6000/rs6000.md (*return_and_restore_fpregs_aix_<mode>):
2811         New insn.
2812         * config/rs6000/spe.md (*save_gpregs_spe): Use explicit match for
2813         register 11.
2814         (*restore_gpregs_spe): Likewise.
2815         (*return_and_restore_gpregs_spe): Likewise.
2816         * config/rs6000/linux64.h (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX):
2817         Define to empty string unconditionally.
2818         * config/rs6000/sysv4.h (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX):
2819         Define to empty string unconditionally.
2820         (GP_SAVE_INLINE, FP_SAVE_INLINE): Handle TARGET_64BIT the same as
2821         !TARGET_64BIT.
2822
2823 2009-09-15  Jan Hubicka  <jh@suse.cz>
2824
2825         * doc/invoke.texi (inline-insns-auto): Drop from 60 to 50.
2826         * params.def (inline-insns-auto): Likewise.
2827
2828 2009-09-15  Martin Jambor  <mjambor@suse.cz>
2829
2830         * ipa-inline.c (estimate_function_body_sizes): Dump info about
2831         individual statements only at TDF_DETAILS dump level.  Format
2832         source for 80 characters per line.
2833
2834 2009-09-15  Christian Bruel  <christian.bruel@st.com>
2835
2836         * regrename.c (do_replace): Update REG_DEAD notes.
2837
2838 2009-09-15  Revital Eres  <eres@il.ibm.com>
2839
2840         * doc/tm.texi (TARGET_SUPPORT_VECTOR_MISALIGNMENT): Document.
2841         * targhooks.c (default_builtin_support_vector_misalignment):
2842         New builtin function.
2843         * targhooks.h (default_builtin_support_vector_misalignment):
2844         Declare.
2845         * target.h (builtin_support_vector_misalignment):
2846         New field in struct gcc_target.
2847         * tree-vect-data-refs.c (vect_supportable_dr_alignment): Call
2848         new builtin function.
2849         * target-def.h (TARGET_SUPPORT_VECTOR_MISALIGNMENT):
2850         Define.
2851         * config/rs6000/rs6000.c
2852         (rs6000_builtin_support_vector_misalignment): New function.
2853         (TARGET_SUPPORT_VECTOR_MISALIGNMENT): Define.
2854
2855 2009-09-15  Jie Zhang  <jie.zhang@analog.com>
2856
2857         * config/bfin/bfin.c (length_for_loop): Use NONDEBUG_INSN_P
2858         instead of INSN_P.
2859         (bfin_optimize_loop): Likewise.
2860         (bfin_gen_bundles): Likewise.
2861         (workaround_speculation): Likewise.
2862         (find_load): Return NULL_RTX for debug_insn.
2863
2864 2009-09-15  Uros Bizjak  <ubizjak@gmail.com>
2865
2866         * config/alpha/alpha.md (smaxsf3): Disable for IEEE mode.
2867         (sminsf3): Ditto.
2868
2869 2009-09-14  DJ Delorie  <dj@redhat.com>
2870
2871         * config/mep/mep.h (JUMP_TABLES_IN_TEXT_SECTION): Define.
2872         * config/mep/mep.c (mep_emit_cbranch): Don't use BEQZ/BNEI in
2873         VLIW mode.
2874
2875 2009-09-14  Richard Henderson  <rth@redhat.com>
2876             Jakub Jelinek  <jakub@redhat.com>
2877
2878         * builtins.c (expand_builtin_synchronize): Use gimple_build_asm_vec.
2879         * cfgbuild.c (make_edges): Handle asm goto.
2880         * cfglayout.c (fixup_reorder_chain): Likewise.
2881         * cfgrtl.c (patch_jump_insn): Likewise.
2882         * gimple-pretty-print.c (dump_gimple_asm): Likewise.
2883         * gimple.c (gimple_build_asm_1): Add and use nlabels parameter.
2884         (gimple_build_asm_vec): Add and use labels parameter.
2885         (gimple_build_asm): Remove.
2886         (walk_gimple_asm): Walk labels too.
2887         * gimple.def (GIMPLE_ASM): Update docs.
2888         * gimple.h: Update decls.
2889         (struct gimple_statement_asm): Change nc to use unsigned char;
2890         add nl member.
2891         (gimple_asm_nlabels): New.
2892         (gimple_asm_label_op, gimple_asm_set_label_op): New.
2893         * gimplify.c (gimplify_asm_expr): Copy labels from ASM_EXPR
2894         into gimple_build_asm_vec.
2895         * jump.c (mark_jump_label_asm): New.
2896         (mark_jump_label): Use it.
2897         (redirect_jump_1): Handle asm goto.
2898         (invert_jump_1): Soft fail if X is null.
2899         * recog.c (extract_asm_operands): New.
2900         (asm_noperands): Use it; handle asm labels.
2901         (decode_asm_operands): Use extract_asm_operands.
2902         (asm_operand_ok): Properly handle empty string.
2903         * reg-stack.c (get_asm_operands_in_out): Rename from
2904         get_asm_operand_n_inputs; use extract_asm_operands; return both
2905         inputs and outputs by reference; update all callers.
2906         * rtl.def (ASM_OPERANDS): Add label vector as operand 6.
2907         * rtl.h (ASM_OPERANDS_LABEL_VEC): New.
2908         (ASM_OPERANDS_LABEL_LENGTH, ASM_OPERANDS_LABEL): New.
2909         (ASM_OPERANDS_SOURCE_LOCATION): Renumber.
2910         (extract_asm_operands): Declare.
2911         * stmt.c (expand_asm_operands): Add and use labels parameter.
2912         (check_unique_operand_names): Likewise.
2913         (resolve_asm_operand_names, resolve_operand_name_1): Likewise.
2914         (expand_asm_stmt): Handle asm labels.
2915         * tree-cfg.c (make_gimple_asm_edges): New.
2916         (make_edges): Use it.
2917         (cleanup_dead_labels): Handle asm labels.
2918         (is_ctrl_altering_stmt): Likewise.
2919         (gimple_redirect_edge_and_branch): Likewise.
2920         * tree.def (ASM_EXPR): Add 5th operand.
2921         * tree.h (ASM_LABELS): New.
2922         (resolve_asm_operand_names): Update decl.
2923
2924         * c-parser.c (c_parser_asm_statement): Parse asm goto.
2925         (c_parser_asm_goto_operands): New.
2926         * c-tree.h (build_asm_expr): Update decl.
2927         * c-typeck.c (build_asm_expr): Add and use labels parameter.
2928         * doc/extend.texi: Document asm goto.
2929
2930 2009-09-14  Richard Henderson  <rth@redhat.com>
2931
2932         * except.h: Update declarations.
2933         (struct pointer_map_t): Forward declare.
2934         (ERT_UNKNOWN, ERT_THROW, ERT_CATCH): Remove.
2935         (struct eh_landing_pad_d, eh_landing_pad): New.
2936         (struct eh_catch_d, eh_catch): New.
2937         (struct eh_region_d): Remove next_region_sharing_label, aka,
2938         label, tree_label, landing_pad, post_landing_pad, resume,
2939         may_contain_throw.  Rename region_number to index.  Remove
2940         u.eh_catch, u.eh_throw.  Rename u.eh_try.eh_catch to first_catch.
2941         Add u.must_not_throw, landing_pads, exc_ptr_reg, filter_reg.
2942         (VEC(eh_landing_pad,gc)): New.
2943         (struct eh_status): Remove last_region_number.  Add lp_array,
2944         throw_stmt_table, ttype_data, ehspec_data.
2945         (ehr_next, FOR_ALL_EH_REGION_AT): New.
2946         (FOR_ALL_EH_REGION_FN, FOR_ALL_EH_REGION): New.
2947         * except.c (lang_protect_cleanup_actions): Return tree.
2948         (struct ehl_map_entry): Remove.
2949         (init_eh_for_function): Push zero entries for region and lp_array.
2950         (gen_eh_region): Add to region_array immediately.
2951         (gen_eh_region_catch): Operate on eh_catch objects.
2952         (gen_eh_landing_pad): New.
2953         (get_eh_region_may_contain_throw, get_eh_region_tree_label): Remove.
2954         (get_eh_region_no_tree_label, set_eh_region_tree_label): Remove.
2955         (get_eh_region_from_number, get_eh_region_from_number_fn): New.
2956         (get_eh_landing_pad_from_number_fn): New.
2957         (get_eh_landing_pad_from_number): New.
2958         (get_eh_region_from_lp_number_fn): New.
2959         (get_eh_region_from_lp_number): New.
2960         (expand_resx_stmt, note_eh_region_may_contain_throw): Remove.
2961         (get_exception_pointer, get_exception_filter): Remove.
2962         (collect_eh_region_array, can_be_reached_by_runtime): Remove.
2963         (current_function_has_exception_handlers): Simplify.
2964         (bring_to_root, eh_region_replaceable_by_p): Remove.
2965         (replace_region, hash_type_list, hash_eh_region): Remove.
2966         (eh_regions_equal_p, merge_peers, remove_unreachable_regions): Remove.
2967         (label_to_region_map, num_eh_regions): Remove.
2968         (get_next_region_sharing_label, must_not_throw_labels): Remove.
2969         (find_exception_handler_labels): Remove.
2970         (duplicate_eh_regions_0, find_prev_try): Remove.
2971         (struct duplicate_eh_regions_data): New.
2972         (duplicate_eh_regions_1): Rewrite.
2973         (duplicate_eh_regions): Return a pointer map instead of an
2974         integer offset.
2975         (copy_eh_region_1, copy_eh_region, push_reachable_handler): Remove.
2976         (redirect_eh_edge_to_label): Remove.
2977         (eh_region_outermost): Rewrite using eh_region pointers
2978         instead of integers.
2979         (add_ttypes_entry): Update for ttype_data move to eh_status.
2980         (add_ehspec_entry): Rewrite with VEC instead of varray.
2981         (assign_filter_values): Likewise.  Export.
2982         (build_post_landing_pads, connect_post_landing_pads): Remove.
2983         (dw2_build_landing_pads): Rewrite to use lp_array.
2984         (struct sjlj_lp_info, sjlj_find_directly_reachable_regions): Remove.
2985         (sjlj_assign_call_site_values): Rewrite to use lp_array.
2986         (sjlj_emit_dispatch_table, sjlj_build_landing_pads): Likewise.
2987         (sjlj_mark_call_sites): Update for landing pad numbers.
2988         (finish_eh_generation): Rewrite.
2989         (gate_handle_eh): Do nothing for no eh tree.
2990         (pass_rtl_eh): Move up near finish_eh_generation.
2991         (remove_eh_landing_pad): New.
2992         (remove_eh_handler): Export.
2993         (remove_eh_region, remove_eh_handler_and_replace): Remove.
2994         (for_each_eh_label): Rewrite to use lp_array.
2995         (make_reg_eh_region_note): New.
2996         (make_reg_eh_region_note_nothrow_nononlocal): New.
2997         (insn_could_throw_p): New.
2998         (copy_reg_eh_region_note_forward): New.
2999         (copy_reg_eh_region_note_backward): New.
3000         (check_handled, add_reachable_handler): Remove.
3001         (reachable_next_level, foreach_reachable_handler): Remove.
3002         (arh_to_landing_pad, arh_to_label, reachable_handlers): Remove.
3003         (get_eh_region_and_lp_from_rtx): New.
3004         (get_eh_region_from_rtx): New.
3005         (can_throw_internal_1, can_throw_external_1): Remove.
3006         (can_throw_internal): Use get_eh_region_from_rtx.
3007         (can_throw_external): Use get_eh_region_and_lp_from_rtx.
3008         (insn_nothrow_p, can_nonlocal_goto): New.
3009         (expand_builtin_eh_common, expand_builtin_eh_pointer): New.
3010         (expand_builtin_eh_filter, expand_builtin_eh_copy_values): New.
3011         (add_action_record): Use VEC not varray.
3012         (collect_one_action_chain): Update for eh_region changes.
3013         (convert_to_eh_region_ranges): Make static.  Use VEC not varray.
3014         Use get_eh_region_and_lp_from_rtx.
3015         (gate_convert_to_eh_region_ranges): New.
3016         (pass_convert_to_eh_region_ranges): Use it.
3017         (push_uleb128, push_sleb128): Use VEC not varray.
3018         (output_one_function_exception_table): Likewise.
3019         (dump_eh_tree): Update for eh_region changes.
3020         (verify_eh_tree): Likewise.
3021         (verify_eh_region, default_init_unwind_resume_libfunc): Remove.
3022         * tree-eh.c: Include target.h.
3023         (add_stmt_to_eh_lp_fn): Rename from add_stmt_to_eh_region_fn.
3024         Don't disallow GIMPLE_RESX; adjust argument check.
3025         (add_stmt_to_eh_lp): Rename from add_stmt_to_eh_region.
3026         (record_stmt_eh_region): Update for landing pad numbers;
3027         generate a landing pad if necessary.
3028         (remove_stmt_from_eh_lp): Rename from remove_stmt_from_eh_region.
3029         (remove_stmt_from_eh_lp_fn): Similarly.
3030         (lookup_stmt_eh_lp_fn): Rename from lookup_stmt_eh_region_fn.
3031         Update for lp numbers; don't special case missing throw_stmt_table.
3032         (lookup_expr_eh_lp): Similarly.
3033         (lookup_stmt_eh_lp): Rename from lookup_stmt_eh_region.
3034         (eh_seq, eh_region_may_contain_throw): New.
3035         (struct leh_state): Add ehp_region.
3036         (struct leh_tf_state): Remove eh_label.
3037         (emit_post_landing_pad): New.
3038         (emit_resx, emit_eh_dispatch): New.
3039         (note_eh_region_may_contain_throw): New.
3040         (frob_into_branch_around): Take eh_region not eh label;
3041         emit eh code into eh_seq.
3042         (honor_protect_cleanup_actions): Early exit for no actions.  Don't
3043         handle EXC_PTR_EXPR, FILTER_EXPR.  Use gimple_build_eh_must_not_throw,
3044         lower_eh_must_not_throw.  Emit code to eh_seq.
3045         (lower_try_finally_nofallthru): Emit eh code to eh_seq.
3046         (lower_try_finally_onedest): Likewise.
3047         (lower_try_finally_copy): Likewise.
3048         (lower_try_finally_switch): Likewise.
3049         (lower_try_finally): Initialize ehp_region.
3050         (lower_catch): Update for eh_catch objects.
3051         (lower_eh_filter): Don't handle must_not_throw.
3052         (lower_eh_must_not_throw): New.
3053         (lower_cleanup): Don't set eh_label.
3054         (lower_eh_constructs_2): Resolve eh builtins.
3055         Handle GIMPLE_EH_MUST_NOT_THROW.
3056         (lower_eh_constructs): Initialize eh_region_may_contain_throw.
3057         Add eh_seq to the end of the function body.
3058         (make_eh_dispatch_edges): New.
3059         (make_eh_edge): Remove.
3060         (make_eh_edges): Simplify for landing pads.
3061         (redirect_eh_edge_1): New.
3062         (redirect_eh_edge): Use it.
3063         (redirect_eh_dispatch_edge): New.
3064         (stmt_could_throw_p): Use a switch.  Allow RESX.
3065         (stmt_can_throw_external): Use lookup_stmt_eh_lp.
3066         (stmt_can_throw_internal): Likewise.
3067         (maybe_clean_eh_stmt_fn, maybe_clean_eh_stmt): New.
3068         (maybe_clean_or_replace_eh_stmt): Update for landing pads.
3069         (maybe_duplicate_eh_stmt_fn, maybe_duplicate_eh_stmt): New.
3070         (gate_refactor_eh): New.
3071         (pass_refactor_eh): Use it.
3072         (lower_resx, execute_lower_resx, pass_lower_resx): New.
3073         (lower_eh_dispatch, execute_lower_eh_dispatch): New.
3074         (gate_lower_ehcontrol, pass_lower_eh_dispatch): New.
3075         (remove_unreachable_handlers): Rename from
3076         tree_remove_unreachable_handlers; rewrite for landing pads;
3077         call remove_eh_handler directly.
3078         (remove_unreachable_handlers_no_lp): New.
3079         (unsplit_eh, unsplit_all_eh): New.
3080         (tree_empty_eh_handler_p, all_phis_safe_to_merge): Remove.
3081         (cleanup_empty_eh_merge_phis, cleanup_empty_eh_move_lp): New.
3082         (cleanup_empty_eh_unsplit): New.
3083         (cleanup_empty_eh): Rewrite.
3084         (cleanup_all_empty_eh): New.
3085         (execute_cleanup_eh): Rename from cleanup_eh.  Remove unreachable
3086         handlers first.  Use unsplit_all_eh, cleanup_all_empty_eh.
3087         (gate_cleanup_eh): New.
3088         (pass_cleanup_eh): Use it.
3089         (verify_eh_edges): Move later in file.  Expect one EH edge.
3090         (verify_eh_dispatch_edge): New.
3091
3092         * Makefile.in (FUNCTION_H): Use vecprim.h, not varray.h.
3093         (gtype-desc.o): Add TARGET_H.
3094         (tree.o): Use EXCEPT_H, not except.h.
3095         (cfgbuild.o): Add EXPR_H.
3096         (GTFILES): Add vecprim.h.
3097         * builtins.c (expand_builtin): Handle BUILT_IN_EH_POINTER,
3098         BUILT_IN_EH_FILTER, BUILT_IN_EH_COPY_VALUES.
3099         * builtins.def (BUILT_IN_UNWIND_RESUME, BUILT_IN_EH_POINTER,
3100         BUILT_IN_EH_FILTER, BUILT_IN_EH_COPY_VALUES): New.
3101         * calls.c (emit_call_1): Use make_reg_eh_region_note.
3102         * cfgbuild.c (control_flow_insn_p): Use can_nonlocal_goto; tidy
3103         calls to can_throw_internal.
3104         (rtl_make_eh_edge): Use get_eh_landing_pad_from_rtx.
3105         (make_edges): Don't handle RESX; use can_nonlocal_goto.
3106         * cfgexpand.c (expand_gimple_stmt_1): Don't handle RESX.
3107         (expand_gimple_stmt): Use make_reg_eh_region_note.
3108         (expand_debug_expr): Don't handle EXC_PTR_EXPR and FILTER_EXPR.
3109         (gimple_expand_cfg): Don't call convert_from_eh_region_ranges,
3110         or find_exception_handler_labels.
3111         * cfgrtl.c (rtl_verify_flow_info_1): Don't handle RESX.  Assert
3112         there is exacly one EH edge.  Use can_nonlocal_goto and
3113         can_throw_internal.
3114         * cgraphunit.c (update_call_expr): Use maybe_clean_eh_stmt_fn.
3115         (cgraph_materialize_all_clones): Use maybe_clean_or_replace_eh_stmt.
3116         * combine.c (can_combine_p, try_combine): Use insn_nothrow_p.
3117         * cse.c (count_reg_usage, insn_live_p): Use insn_could_throw_p.
3118         * dce.c (deletable_insn_p_1): Don't test may_trap_p.
3119         (deletable_insn_p): Use insn_nothrow_p; reorder nonjump insn test.
3120         * dse.c (scan_insn): Use insn_could_throw_p.
3121         * emit-rtl.c (try_split): Use copy_reg_eh_region_note_backward.
3122         * expr.c (expand_expr_real): Use make_reg_eh_region_note.
3123         (expand_expr_real_1): Don't handle RESX, EXC_PTR, or FILTER_EXPR.
3124         * fold-const.c (tree_expr_nonnegative_warnv_p): Don't handle
3125         EXC_PTR_EXPR or FILTER_EXPR.
3126         (tree_expr_nonzero_warnv_p): Likewise.
3127         * function.h: Include vecprim.h, not varray.h
3128         (struct rtl_eh): Remove filter, exc_ptr, built_landing_pad members;
3129         move ttype_data and ehspec_data members to struct eh_status; change
3130         action_record_data member to a VEC.
3131         * gcse.c (hash_scan_set): Use can_throw_internal.
3132         * gengtype.c (open_base_files): Add target.h to gtype-desc.c.
3133         * gimple-iterator.c (gsi_replace): Use maybe_clean_or_replace_eh_stmt.
3134         * gimple-low.c (lower_stmt): Handle GIMPLE_EH_MUST_NOT_THROW.
3135         (block_may_fallthru): Don't handle RESX_EXPR.
3136         * gimple-pretty-print.c (dump_gimple_label): Dump EH_LANDING_PAD_NR.
3137         (dump_gimple_eh_must_not_throw, dump_gimple_eh_dispatch): New.
3138         (dump_gimple_stmt): Dump landing pad information with TDF_EH;
3139         handle GIMPLE_EH_MUST_NOT_THROW, GIMPLE_EH_DISPATCH.
3140         * gimple.c (gss_for_code): Handle GIMPLE_EH_MUST_NOT_THROW,
3141         GIMPLE_EH_DISPATCH, GIMPLE_RESX.
3142         (gimple_size): Likewise.
3143         (gimple_build_eh_dispatch, gimple_build_eh_must_not_throw): New.
3144         (gimple_build_resx): Use gimple_build_with_ops.
3145         (DEFTREECODE): Don't handle EXC_PTR_EXPR, FILTER_EXPR.
3146         (is_gimple_val): Likewise.
3147         (is_gimple_stmt): Remove RESX_EXPR.
3148         * gimple.def (GIMPLE_EH_MUST_NOT_THROW, GIMPLE_EH_DISPATCH): New.
3149         (GIMPLE_RESX): Reorder with other EH constructs.
3150         * gimple.h (struct gimple_statement_eh_mnt): New.
3151         (struct gimple_statement_eh_ctrl): Rename from gimple_statement_resx.
3152         (gimple_eh_filter_must_not_throw): Remove.
3153         (gimple_eh_filter_set_must_not_throw): Remove.
3154         (gimple_eh_must_not_throw_fndecl): New.
3155         (gimple_eh_dispatch_region, gimple_eh_dispatch_set_region): New.
3156         (is_gimple_resx): New.
3157         * gimplify.c (gimplify_expr): Don't handle EXC_PTR_EXPR, RESX_EXPR.
3158         Don't copy EH_FILTER_MUST_NOT_THROW.
3159         * gsstruct.def (GSS_EH_MNT, GSS_EHCONTROL): New.
3160         * ipa-inline.c (estimate_function_body_sizes): Don't try to
3161         handle must_not_throw_labels specially.
3162         * ipa-pure-const.c (check_call): Update debug statement for LP.
3163         * ipa-type-escape.c (check_operand): Don't handle EXC_PTR or FILTER.
3164         * ipa-utils.c (get_base_var): Likewise.
3165         * libfunc.h (LTI_unwind_resume, unwind_resume_libfunc): Remove.
3166         * lower-subreg.c (move_eh_region_note): Remove.
3167         (resolve_simple_move): Use copy_reg_eh_region_note_forward.
3168         * omp-low.c (new_omp_context): Update for eh_lp_nr.
3169         (create_task_copyfn): Likewise.
3170         (maybe_catch_exception): Use gimple_build_eh_filter.
3171         * optabs.c (emit_libcall_block): Update test for no-nonlocal-goto
3172         REG_EH_REGION.  Use make_reg_eh_region_note_nothrow_nononlocal.
3173         * passes.c (init_optimization_passes): Add pass_lower_eh_dispatch
3174         and pass_lower_resx.
3175         * print-tree.c (print_node): Dump EH_LANDING_PAD_NR.
3176         * recog.c (peephole2_optimize): Use copy_reg_eh_region_note_backward,
3177         can_throw_internal, can_nonlocal_goto.
3178         * reload1.c (fixup_eh_region_note): Use insn_could_throw_p,
3179         copy_reg_eh_region_note_forward.
3180         (emit_input_reload_insns): Use copy_reg_eh_region_note_forward.
3181         (emit_output_reload_insns): Likewise.
3182         (copy_eh_notes): Remove.
3183         * rtl.def (RESX): Remove.
3184         * rtl.h: Update declarations.
3185         * sese.c (graphite_copy_stmts_from_block): Use maybe_duplicate_eh_stmt.
3186         * tree-cfg.c (make_edges): Handle GIMPLE_EH_DISPATCH.
3187         (update_eh_label): Remove.
3188         (cleanup_dead_labels_eh): New.
3189         (cleanup_deal_labels): Use it instead of update_eh_label.
3190         (gimple_merge_blocks): Update landing pad data structure when
3191         removing a landing pad label.
3192         (remove_useless_stmts_tc): Remove gimple_eh_filter_must_not_throw
3193         test; handle GIMPLE_EH_MUST_NOT_THROW.
3194         (is_ctrl_altering_stmt): Handle GIMPLE_EH_DISPATCH.
3195         (verify_gimple_assign_single): Don't handle EXC_PTR or FILTER_EXPR.
3196         (verify_types_in_gimple_stmt): Handle GIMPLE_EH_DISPATCH.
3197         (verify_stmt): Likewise.  Verify landing pads.
3198         (gimple_redirect_edge_and_branch): Handle GIMPLE_EH_DISPATCH.
3199         (gimple_duplicate_bb): Use maybe_duplicate_eh_stmt.
3200         (struct move_stmt_d): Add eh_map.
3201         (move_stmt_eh_region_nr, move_stmt_eh_region_tree_nr): New.
3202         (move_stmt_r): Remap eh region numbers in builtin calls,
3203         resx and eh_dispatch.
3204         (move_block_to_fn): Remove eh_offset parameter.  Use
3205         maybe_duplicate_eh_stmt_fn.
3206         (find_outermost_region_in_block): Operate on eh_region pointers
3207         instead of region numbers.
3208         (move_sese_region_to_fn): Expect eh_map instead of eh_offset from
3209         duplicate_eh_regions.
3210         * tree-cfgcleanup.c (tree_forwarder_block_p): Move entry block edge
3211         test earlier.  Disallow EH landing pads.
3212         * tree-cfa.c (create_tree_common_ann): Don't set ann->rn.
3213         * tree-flow.h: Update declarations.
3214         (struct tree_ann_common_d): Replace rn with lp_nr.
3215         * tree-inline.c (copy_tree_body_r): Don't handle RESX_EXPR.
3216         (remap_eh_region_nr, remap_eh_region_tree_nr): New.
3217         (remap_gimple_stmt): Remap eh region numbers in builtin calls,
3218         resx and eh_dispatch.
3219         (copy_bb): Use maybe_duplicate_eh_stmt_fn.
3220         (copy_edges_for_bb): Use make_eh_dispatch_edges.
3221         (copy_cfg_body): Expect eh_map instead of eh_region_offset
3222         from duplicate_eh_regions.
3223         (estimate_num_insns): Don't handle EXC_PTR_EXPR or FILTER_EXPR;
3224         update RESX; handle EH_DISPATCH.
3225         (expand_call_inline): Set eh_lp_nr, not eh_region.
3226         (maybe_inline_call_in_expr): Likewise.
3227         * tree-inline.h (struct copy_body_data): Replace eh_region with
3228         eh_lp_nr, eh_region_offset with eh_map.
3229         * tree-optimize.c (execute_fixup_cfg): Use maybe_clean_eh_stmt.
3230         * tree-pass.h (pass_lower_eh_dispatch, pass_lower_resx): New.
3231         * tree-pretty-print.c (dump_generic_node): Don't handle
3232         EXC_PTR_EXPR, FILTER_EXPR, RESX_EXPR.
3233         * tree-sra.c (scan_function): Use maybe_clean_eh_stmt.
3234         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Don't handle
3235         EXC_PTR_EXPR, FILTER_EXPR.
3236         * tree-ssa-operands.c (get_expr_operands): Likewise.
3237         * tree-ssa-propagate.c (valid_gimple_rhs_p): Likewise.
3238         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise.
3239         (ao_ref_init_from_vn_reference): Likewise.
3240         * tree-ssa-sink.c (statement_sink_location): Likewise.
3241         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
3242         (mark_virtual_phi_result_for_renaming): Export.  Tidy.
3243         * tree-ssa-pre.c (get_or_alloc_expr_for): Don't handle
3244         EXC_PTR_EXPR, FILTER_EXPR.
3245         (is_exception_related): Remove.
3246         (compute_avail): Don't call it.
3247         * tree-ssa-structalias.c: Remove VEC definitions for int and unsigned.
3248         * tree.c (find_decls_types_in_eh_region): Update for eh_region changes.
3249         (find_decls_types_in_node): Use FOR_ALL_EH_REGION_FN.
3250         (build_common_builtin_nodes): Add enable_cxa_end_cleanup parameter.
3251         Build EH builtins.
3252         (build_resx): Remove.
3253         * tree.def (EXC_PTR_EXPR, FILTER_EXPR, RESX_EXPR): Remove.
3254         * tree.h: Update declarations.
3255         (EH_FILTER_MUST_NOT_THROW): Remove.
3256         (struct tree_label_decl): Add eh_landing_pad_nr.
3257         (EH_LANDING_PAD_NR): New.
3258         * value-prof.c (gimple_ic): Tidy variable names.  Update for
3259         landing pad numbers.
3260         (gimple_stringop_fixed_value): Tidy variable names.  Assert
3261         that neither call stmt can throw.
3262         * vecprim.h (uchar): New.
3263         (VEC(uchar,heap), VEC(uchar,gc)): New.
3264
3265         * c-common.c (c_define_builtins): Update call to
3266         build_common_builtin_nodes.
3267         * c-parser.c (c_parse_file): Don't call
3268         default_init_unwind_resume_libfunc.
3269
3270 2009-09-14  Richard Sandiford  <rdsandiford@googlemail.com>
3271
3272         * config/mips/mips-protos.h (mips_cfun_has_cprestore_slot_p): Declare.
3273         (mips_cprestore_address_p): Likewise.
3274         (mips_save_gp_to_cprestore_slot): Likewise.
3275         (mips_restore_gp): Rename to...
3276         (mips_restore_gp_from_cprestore_slot): ...this.
3277         (mips_must_initialize_gp_p): Declare.
3278         (mips_emit_save_slot_move): Likewise.
3279         (mips_output_load_label): Return nothing.
3280         (mips_eh_uses): Declare.
3281         * config/mips/mips.h (TARGET_SPLIT_CALLS): Require epilogue_completed.
3282         (TARGET_CPRESTORE_DIRECTIVE): New macro.
3283         (TARGET_ABSOLUTE_JUMPS): Likewise.
3284         (EH_USES): Likewise.
3285         (FIRST_PSEUDO_REGISTER): Update comment.
3286         (MIPS_ABSOLUTE_JUMP): New macro, extracted from...
3287         (MIPS_CALL): ...here.
3288         (REGISTER_NAMES): Add $cprestore.
3289         * config/mips/mips.c (machine_function): Remove has_gp_insn_p.
3290         Add load_label_length, has_inflexible_gp_insn_p,
3291         has_flexible_gp_insn_p, must_initialize_gp_p and
3292         must_restore_gp_when_clobbered_p.
3293         (mips_expand_call): Don't generate split instructions here.
3294         (mips_split_call): Update the call to mips_restore_gp after
3295         the above name change.
3296         (mips16_cfun_returns_in_fpr_p): Move earlier in file.
3297         (mips_find_gp_ref): New function.
3298         (mips_insn_has_inflexible_gp_ref_p): Likewise.
3299         (mips_cfun_has_inflexible_gp_ref_p): Likewise.
3300         (mips_insn_has_flexible_gp_ref_p): Likewise.
3301         (mips_cfun_has_flexible_gp_ref_p): Likewise.
3302         (mips_function_has_gp_insn): Delete.
3303         (mips_global_pointer): Drop the df_regs_ever_live_p check.
3304         Use the new functions above.  Only return INVALID_REGNUM
3305         for TARGET_ABSOLUTE_JUMPS.
3306         (mips_must_initialize_gp_p): New function.
3307         (mips_get_cprestore_base_and_offset): New function, extracted from...
3308         (mips_cprestore_slot): ...here.  Take a bool parameter.
3309         (mips_cfun_has_cprestore_slot_p): New function.
3310         (mips_cprestore_address_p): Likewise.
3311         (mips_save_gp_to_cprestore_slot): Likewise.
3312         (mips_restore_gp): Rename to...
3313         (mips_restore_gp_from_cprestore_slot): ...this.  Assert
3314         epilogue_completed.  Update the call to mips_cprestore_slot.
3315         Test cfun->machine->must_restore_gp_when_clobbered_p.
3316         (mips_direct_save_slot_move_p): New function.
3317         (mips_emit_save_slot_move): Likewise.
3318         (mips_output_cplocal): Test mips_must_initialize_gp_p () instead
3319         of cfun->machine->global_pointer.
3320         (mips_output_function_prologue): Check mips_must_initialize_gp_p ().
3321         (mips_save_reg): Use mips_emit_save_slot_move.
3322         (mips_expand_prologue): Set must_initialize_gp_p.
3323         Use mips_cfun_has_cprestore_slot_p.  Use gen_potential_cprestore
3324         for all cprestore saves.  Emit a use_cprestore instruction after
3325         setting up the cprestore slot.
3326         (mips_restore_reg): Use mips_emit_save_slot_move.
3327         (mips_process_load_label): New function.
3328         (mips_load_label_length): Likewise.
3329         (mips_output_load_label): Don't return asm: output it here instead.
3330         Use mips_process_load_label.
3331         (mips_adjust_insn_length): Adjust the length of branch instructions
3332         that have length MAX_PIC_BRANCH_LENGTH.
3333         (mips_output_conditional_branch): Update the call to
3334         mips_output_load_label.  Assume the branch target is OPERANDS[0]
3335         rather than OPERANDS[1].  Use MIPS_ABSOLUTE_JUMP for absolute jumps.
3336         (mips_output_order_conditional_branch): Swap the meaning of
3337         OPERANDS[0] and OPERANDS[1].
3338         (mips_variable_issue): Don't count ghost instructions.
3339         (mips_expand_ghost_gp_insns): New function.
3340         (mips_reorg): Rerun mips_reorg_process_insns if it returns true.
3341         (mips_output_mi_thunk): Set must_initialize_gp_p.
3342         (mips_eh_uses): New function.
3343         * config/mips/predicates.md (cprestore_save_slot_operand)
3344         (cprestore_load_slot_operand): New predicates.
3345         * config/mips/mips.md (UNSPEC_POTENTIAL_CPRESTORE): New unspec.
3346         (UNSPEC_MOVE_GP): Likewise.
3347         (UNSPEC_CPRESTORE, UNSPEC_RESTORE_GP, UNSPEC_EH_RETURN)
3348         (UNSPEC_CONSTTABLE_INT, UNSPEC_CONSTTABLE_FLOAT): Bump to make room.
3349         (CPRESTORE_SLOT_REGNUM): New register.
3350         (MAX_PIC_BRANCH_LENGTH): New constant.
3351         (jal_macro): Use MIPS_ABSOLUTE_JUMPS.
3352         (length): Use MAX_PIC_BRANCH_LENGTH as a placeholder for PIC long
3353         branches.  Fix commentary.
3354         (loadgp_newabi_<mode>): Change from unspec_volatile to unspec.
3355         Only split if mips_must_initialize_gp_p; expand to nothing otherwise.
3356         Change type to "ghost".
3357         (loadgp_absolute_<mode>): Likewise.
3358         (loadgp_rtp_<mode>): Likewise.
3359         (copygp_mips16): Likewise.
3360         (loadgp_blockage): Remove redundant mode attribute.
3361         (potential_cprestore): New instruction.
3362         (cprestore): Turn into an unspec set.
3363         (use_cprestore): New instruction.
3364         (*branch_fp): Swap operands 0 and 1.  Remove redundant mode attribute.
3365         (*branch_fp_inverted): Likewise.
3366         (*branch_order<mode>): Likewise.
3367         (*branch_order<mode>_inverted): Likewise.
3368         (*branch_equality<mode>): Likewise.
3369         (*branch_equality<mode>_inverted): Likewise.
3370         (*branch_bit<bbv><mode>): Likewise.
3371         (*branch_bit<bbv><mode>_inverted): Likewise.
3372         (*branch_equality<mode>_mips16): Remove redundant mode.
3373         (jump): Turn into a define_expand.
3374         (*jump_absolute): New instruction.
3375         (*jump_pic): Likewise.
3376         (*jump_mips16): Rename previously-unnamed pattern.  Remove
3377         redundant mode attribute.
3378         (restore_gp): Split on epilogue_completed rather than
3379         reload_completed.  Change type to "ghost".
3380         (move_gp<mode>): New instruction.
3381         * config/mips/mips-dsp.md (mips_bposge): Swap operands 0 and 1.
3382         Remove redundant mode attribute.
3383         * config/mips/mips-ps-3d.md (bc1any4t): Likewise.
3384         (bc1any4f, bc1any2t, bc1any2f): Likewise.
3385         (*branch_upper_lower, *branch_upper_lower_inverted): Likewise.
3386
3387 2009-09-14  Michael Meissner  <meissner@linux.vnet.ibm.com>
3388
3389         PR target/41210
3390         * config/rs6000/rs6000.c (rs6000_function_value): V2DF and V2DI
3391         are returned in the same register (vs34 or v2) that Altivec vector
3392         types are returned in.
3393         (rs6000_libcall_value): Ditto.
3394
3395         PR target/41331
3396         * config/rs6000/rs6000.c (rs6000_emit_move): Use gen_add3_insn
3397         instead of explicit addsi3/adddi3 calls.
3398         (rs6000_split_multireg_move): Ditto.
3399         (rs6000_emit_allocate_stack): Ditto.
3400         (rs6000_emit_prologue): Ditto.
3401         (rs6000_output_mi_thunk): Ditto.
3402
3403         * config/rs6000/rs6000.md (bswapdi*): Don't assume the pointer
3404         size is 64 bits if we can use 64-bit registers.
3405
3406 2009-09-14  Bernd Schmidt  <bernd.schmidt@analog.com>
3407
3408         * config/bfin/bfin.c (bfin_longcall_p): Don't use short calls for weak
3409         symbols.
3410
3411         From Jie Zhang <jie.zhang@analog.com>:
3412         * config/bfin/bfin.c (bfin_expand_prologue): Ask do_link to
3413         save FP and RETS with saveall attribute.
3414         (bfin_expand_epilogue): Ask do_unlink to restore FP and RETS
3415         with saveall attribute.
3416
3417         * config/bfin/bfin.c (bfin_expand_builtin,
3418         case BFIN_BUILTIN_MULT_1X32X32): Force constants to registers for the
3419         operands.
3420
3421         From Jie Zhang <jie.zhang@analog.com>:
3422         * config/bfin/bfin.c (bfin_expand_builtin): Initialize icodes
3423         before use in two places.
3424         * config/bfin/bfin.md (AREG): Define mode iterator.
3425         (reload_in, reload_out): Use mode iterator AREG.
3426
3427 2009-09-14  Richard Guenther  <rguenther@suse.de>
3428
3429         PR middle-end/41350
3430         * dwarf2out.c (dwarf2out_begin_prologue): Adjust non-CFI asm
3431         EH personality path.
3432
3433 2009-09-13  Richard Guenther  <rguenther@suse.de>
3434             Rafael Avila de Espindola  <espindola@google.com>
3435
3436         * langhooks-def.h (LANG_HOOKS_EH_RUNTIME_TYPE): Define.
3437         (LANG_HOOKS_EH_PERSONALITY): Likewise.
3438         (LANG_HOOKS_INITIALIZER): Adjust.
3439         (lhd_pass_through_t): Declare.
3440         * langhooks.h (struct lang_hooks): Add eh_runtime_type and
3441         eh_personality.
3442         * langhooks.c (lhd_pass_through_t): New function.
3443         * dwarf2out.c (output_call_frame_info, dwarf2out_do_cfi_startproc,
3444         dwarf2out_begin_prologue): Use personality from current_function_decl.
3445         * expr.h (get_personality_function): Declare.
3446         * expr.c (get_personality_function): New function.
3447         (build_personality_function): Likewise.
3448         * libfuncs.h (libfunc_index): Remove LTI_eh_personality.
3449         (eh_personality_libfunc): Remove.
3450         * optabs.c (build_libfunc_function): New function split out from ...
3451         (init_one_libfunc): ... here.
3452         * tree.h (DECL_FUNCTION_PERSONALITY): New.
3453         (tree_function_decl): Add personality.
3454         (lhd_gcc_personality): Declare.
3455         (build_personality_function): Likewise.
3456         * tree.c (gcc_eh_personality_decl): New.
3457         (lhd_gcc_personality): New function.
3458         * except.h (lang_eh_runtime_type): Remove.
3459         (enum eh_personality_kind): New.
3460         (build_personality_function): Declare.
3461         (function_needs_eh_personality): Declare.
3462         * except.c (lang_eh_runtime_type): Remove.
3463         (function_needs_eh_personality): New function.
3464         (add_type_for_runtime): Call lang_hooks.type_for_runtime instead.
3465         (sjlj_emit_function_enter, output_function_exception_table):
3466         Use personality from current_function_decl.
3467         * tree-eh.c (lower_eh_constructs): Set DECL_FUNCTION_PERSONALITY.
3468         * tree-inline.c (tree_can_inline_p): Do not inline across different
3469         EH personalities.
3470         (expand_call_inline): Likewise.  Adjust the callers EH personality.
3471         (tree_function_versioning): Copy DECL_FUNCTION_PERSONALITY.
3472         * cgraph.c (cgraph_add_new_function): Set DECL_FUNCTION_PERSONALITY.
3473         * Makefile.in (cgraph.o): Add $(EXCEPT_H) dependency.
3474         (c-parser.o): Likewise
3475         * c-tree.h (c_eh_initialized_p): Remove.
3476         (c_maybe_initialize_eh): Likewise.
3477         * c-decl.c (finish_decl): Don't call c_maybe_initialize_eh.
3478         (finish_decl): Don't call c_maybe_initialize_eh.
3479         (c_eh_initialized_p): Remove.
3480         (c_maybe_initialize_eh): Likewise.
3481         * c-parser.c (c_parser_omp_construct): Likewise.
3482         (c_parse_file): Initialize exception handling.
3483
3484 2009-09-13  Kai Tietz  <kai.tietz@onevision.com>
3485
3486         * config.gcc (tm_file): Remove i386/biarch32.h
3487         for i?86-w64-mingw* case.
3488         (i?86-*-mingw* andx86_64-*-mingw*): Add multilib
3489         support.
3490         * config.host: Set for x64 mingw the option
3491         use_long_long_for_widest_fast_int to yes.
3492
3493 2009-09-13  Eric Botcazou  <ebotcazou@adacore.com>
3494
3495         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
3496         * dbxout.c (dbxout_function_end): Do not test DECL_IGNORED_P.
3497         (dbxout_begin_function): Likewise.
3498         * final.c (dwarf2_debug_info_emitted_p): New predicate.
3499         (final_start_function): Do not emit debug info if DECL_IGNORED_P is
3500         set on the function.
3501         (final_end_function): Likewise.
3502         (final_scan_insn): Likewise.
3503         (rest_of_handle_final): Likewise.
3504         * varasm.c (assemble_start_function): Likewise.
3505         * config/rs6000/xcoff.h (ASM_DECLARE_FUNCTION_NAME): Likewise.
3506
3507 2009-09-12  Jason Merrill  <jason@redhat.com>
3508
3509         * dbgcnt.c (dbg_cnt_process_single_pair): constify.
3510         * opts.c (common_handle_option): constify.
3511
3512 2009-09-12  Gerald Pfeifer  <gerald@pfeifer.com>
3513
3514         * doc/install.texi (avr): Remove obsolete reference site.
3515
3516 2009-09-12  Gerald Pfeifer  <gerald@pfeifer.com>
3517
3518         * doc/install.texi (Binaries): Adjust AIX link.
3519
3520 2009-09-12  Akim Demaille  <demaille@gostai.com>
3521
3522         * doc/invoke.texi (-fstrict-aliasing): Correct two examples.
3523         Use an imperative sentence.
3524
3525 2009-09-11  Richard Henderson  <rth@redhat.com>
3526
3527         * gsstruct.def (DEFGSSTRUCT): Remove printable-name argument; add
3528         structure-name and has-tree-operands arguments; update all entries.
3529         * gimple.def (DEFGSCODE): Replace 3rd argument with GSS_symbol;
3530         update all entries.
3531         * gimple.c (gimple_ops_offset_): Use HAS_TREE_OP argument.
3532         (gsstruct_code_size): New.
3533         (gss_for_code_): New.
3534         (gss_for_code): Remove.
3535         (gimple_size): Rewrite using gsstruct_code_size.
3536         (gimple_statement_structure): Move to gimple.h.
3537         * gimple.h (gimple_ops_offset_, gss_for_code_): Declare.
3538         (gss_for_code, gimple_statement_structure): New.
3539         (gimple_ops): Use new arrays; tidy.
3540
3541 2009-09-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3542
3543         * config/pa/predicates.md (symbolic_operand): Require a CONST symbolic
3544         operand to be a PLUS expression.
3545         * config/pa/pa.c (pa_secondary_reload): Likewise.
3546
3547 2009-09-11  Jakub Jelinek  <jakub@redhat.com>
3548
3549         * combine.c (propagate_for_debug_subst): Call wrap_constant on top.
3550
3551         * print-rtl.c (print_rtx): Use JUMP_LABEL (in_rtx) instead of
3552         XEXP (in_rtx, 8).
3553
3554 2009-09-11  Bernd Schmidt  <bernd.schmidt@analog.com>
3555
3556         From Jie Zhang <jie.zhang@analog.com>:
3557         * doc/extend.texi (node Function Attributes): Document l2
3558         function attribute.
3559         (node Blackfin Variable Attributes): Document l2 variable attributes.
3560
3561 2009-09-11  Loren J. Rittle  <ljrittle@acm.org>
3562
3563         * config.gcc (*-*-freebsd*): Enable default_use_cxa_atexit
3564         to match the system compiler's configuration at inflection point.
3565         Add comment to remark a remaining difference with system compiler.
3566
3567         * configure.ac (*-*-freebsd*): Enable check for __stack_chk_fail.
3568         * configure: Regenerate.
3569
3570 2009-09-11  Bernd Schmidt  <bernd.schmidt@analog.com>
3571
3572         From Jie Zhang <jie.zhang@analog.com>:
3573         * config/bfin/bfin.c (bfin_expand_call): Handle L2 functions.
3574         (bfin_handle_l2_attribute): New.
3575         (bfin_attribute_table): Add l2 attribute.
3576
3577 2009-09-11  Michael Matz  <matz@suse.de>
3578
3579         PR middle-end/41275
3580         * tree-inline.c (remap_decls): Don't put DECL_EXTERNAL decls
3581         on the local_decls list.
3582
3583 2009-09-11  Alexandre Oliva  <aoliva@redhat.com>
3584
3585         PR debug/41276
3586         PR debug/41307
3587         * cselib.c (cselib_expand_value_rtx_cb): Document callback
3588         interface.
3589         (cselib_expand_value_rtx_1): Use callback for SUBREGs.  Adjust
3590         for VALUEs, to implement the documented interface.
3591         * var-tracking.c (vt_expand_loc_callback): Handle SUBREGs.
3592         Adjust for VALUEs and anything else, to implement the
3593         documented interface.
3594
3595 2009-09-10  Nathan Froyd  <froydnj@codesourcery.com>
3596
3597         * config/rs6000/rs6000.h (DATA_ALIGNMENT): Check that we are dealing
3598         with actual SPE/paired vector modes before using 64-bit alignment.
3599         Check that TYPE is a REAL_TYPE for TARGET_E500_DOUBLE.
3600
3601 2009-09-10  DJ Delorie  <dj@redhat.com>
3602
3603         * config/mep/mep.md (eh_epilogue): Defer until after epilogue is
3604         emitted.
3605
3606         * config/mep/mep.h (LEGITIMATE_CONSTANT_P): New.
3607         * config/mep/mep.c (mep_legitimate_constant_p): New.
3608         * config/mep/mep-protos.h: Prototype it.
3609
3610 2009-09-10  Richard Henderson  <rth@redhat.com>
3611
3612         * print-rtl.c (print_rtx): Fix JUMP_LABEL index.
3613
3614 2009-09-10  Jason Merrill  <jason@redhat.com>
3615
3616         * tree.c (chain_index): New fn.
3617         * tree.h: Declare it.
3618
3619 2009-09-10  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
3620
3621         * config/sol2-c.c (cmn_err_length_specs): Initialize
3622         scalar_identity_flag.
3623
3624 2009-09-10  Richard Henderson  <rth@redhat.com>
3625
3626         * tree.h (struct tree_decl_common): Move align member earlier;
3627         move label_decl_uid member ...
3628         (struct tree_label_decl): ... here.
3629         (LABEL_DECL_UID): Update to match.
3630
3631         * tree-cfg.c (dump_function_to_file): Dump eh tree with TDF_EH,
3632         not TDF_DETAILS.
3633
3634         * tree-cfg.c (gimple_redirect_edge_and_branch): Do
3635         gimple_try_redirect_by_replacing_jump test after no-op and EH tests.
3636
3637         * tree-cfg.c (split_edge_bb_loc): Don't disallow placement at
3638         dest_prev if the edge is complex.
3639
3640         * tree-cfg.c (is_ctrl_stmt): Use a switch.
3641
3642         * tree-cfg.c (gimple_can_merge_blocks_p): Move label and
3643         loop latch tests earlier.
3644
3645         * gimple-iterator.c (gimple_find_edge_insert_loc): Insert
3646         before GIMPLE_RETURN, not after its predecessor; insert
3647         before GIMPLE_RESX.
3648
3649         * gimple-iterator.c (gimple_find_edge_insert_loc): Use
3650         gimple_seq_empty_p to test for no PHI nodes.
3651         * tree-cfg.c (split_critical_edges): Likewise.
3652
3653         * c-common.h (c_dialect_cxx, c_dialect_objc): Boolify.
3654
3655 2009-09-10  Hariharan Sandanagobalane  <hariharan@picochip.com>
3656
3657         * final.c (shorten_branches) : Ignore DEBUG_INSN_P instructions
3658         introduced by the VTA branch merge.
3659
3660 2009-09-10  Uros Bizjak  <ubizjak@gmail.com>
3661
3662         * ira-conflicts.c: Use fputs or putc instead of fprintf
3663         where appropriate.
3664         * cfg.c: Ditto.
3665         * toplev.c: Ditto.
3666         * tree-switch-conversion.c: Ditto.
3667
3668 2009-09-10  Hariharan Sandanagobalane  <hariharan@picochip.com>
3669
3670         * config/picochip/picochip.c : Ignore DEBUG_INSN_P instructions
3671         introduced by the VTA branch merge.
3672
3673 2009-09-10  Uros Bizjak  <ubizjak@gmail.com>
3674
3675         Revert:
3676         2009-09-09  Uros Bizjak  <ubizjak@gmail.com>
3677
3678         PR rtl-optimization/39779
3679         * expr.c (convert_modes): Return when mode == oldmode after
3680         CONST_INTs are processed.
3681
3682 2009-09-10  Nick Clifton  <nickc@redhat.com>
3683
3684         * config/mep/mep.c (mep_encode_section_info): Copy weakness
3685         attribute and referring decl when creating renamed symbol.
3686
3687 2009-09-10  Richard Guenther  <rguenther@suse.de>
3688
3689         PR middle-end/41257
3690         * cgraphunit.c (cgraph_emit_thunks): Emit thunks only for
3691         reachable nodes.
3692         (cgraph_finalize_compilation_unit): Compute reachability
3693         before emitting thunks.  Properly process aliases before
3694         possibly removing unreachable nodes.
3695
3696 2009-09-10  Richard Guenther  <rguenther@suse.de>
3697
3698         PR middle-end/41254
3699         * tree.c (struct free_lang_data_d): Add worklist member.
3700         (find_decls_types_r): Push onto the worklist instead of recursing.
3701         Handle TREE_BINFOs properly.
3702         (find_decls_types): New function wrapped around find_decls_types_r
3703         to process the worklist.
3704         (find_decls_types_in_eh_region): Use it.
3705         (find_decls_types_in_node): Likewise.
3706         (find_decls_types_in_var): Likewise.
3707         (free_lang_data_in_cgraph): Likewise.  Free the worklist.
3708         * tree.h (RECORD_OR_UNION_TYPE_P): New.
3709         (AGGREGATE_TYPE_P): Adjust.
3710
3711 2009-09-09  Jason Merrill  <jason@redhat.com>
3712
3713         * configure.ac: Check glibc version even if we have an in-tree
3714         assembler.
3715
3716 2009-09-09  Anthony Green  <green@moxielogic.com>
3717
3718         * config/moxie/moxie.md (*movsi, *movhi, *movqi): Use xor to load
3719         the constant 0 when appropriate.
3720         * config/moxie/constraints.md: Add constraint O.
3721
3722         * config/moxie/moxie.c (moxie_setup_incoming_varargs): Adjust
3723         to pass up to 6 32-bit argument values in registers.
3724         (moxie_function_arg): Ditto.
3725         (moxie_arg_partial_bytes): Ditto.
3726         * config/moxie/moxie.h (FUNCTION_ARG_ADVANCE): Ditto.
3727         (REG_PARM_STACK_SPACE): Ditto.
3728         (FUNCTION_ARG_REGNO_P): Ditto.
3729
3730         * config/moxie/moxie.c (moxie_expand_prologue): Use dec
3731         instruction to allocate stack space.
3732
3733 2009-09-09  Segher Boessenkool  <segher@kernel.crashing.org>
3734
3735         * config/rs6000/rs6000.md (bswapdi2_64bit): Fix
3736         unnecessarily stringent constraints.  Fix address
3737         calculation in the splitters.
3738
3739 2009-09-09  Uros Bizjak  <ubizjak@gmail.com>
3740
3741         PR rtl-optimization/39779
3742         * expr.c (convert_modes): Return when mode == oldmode after
3743         CONST_INTs are processed.
3744
3745 2009-09-09  Kai Tietz  <kai.tietz@onevision.com>
3746
3747         PR/41315
3748         * config/i386.c (ix86_can_use_return_insn_p): Check for padding0, too.
3749         (ix86_expand_prologue): Take frame.padding0 into logic of
3750         to_allocate checks.
3751         (ix86_expand_epilogue): Likewise.
3752
3753 2009-09-09  Jakub Jelinek  <jakub@redhat.com>
3754
3755         * config/t-slibgcc-elf-ver (SHLIB_MAKE_SOLINK, SHLIB_INSTALL_SOLINK):
3756         New variables.
3757         (SHLIB_LINK, SHLIB_INSTALL): Use them.
3758         * config/t-slibgcc-libgcc: New file.
3759         * config.gcc (powerpc*-*-linux*, powerpc*-*-gnu*): Use it.
3760
3761 2009-09-09  Martin Jambor  <mjambor@suse.cz>
3762
3763         PR tree-optimization/41089
3764         * tree-sra.c (find_var_candidates): Do not consider va_lists in
3765         early SRA.
3766
3767 2009-09-09  Richard Henderson  <rth@redhat.com>
3768
3769         * gimple.h (CASE_GIMPLE_OMP): New.
3770         (is_gimple_omp): Use it.
3771         * tree-cfg.c (is_ctrl_altering_stmt): Likewise.
3772         (verify_gimple_debug): Likewise.
3773
3774 2009-09-09  Richard Guenther  <rguenther@suse.de>
3775
3776         PR tree-optimization/41101
3777         * tree-ssa-pre.c (maximal_set): Remove.
3778         (compute_antic_aux): Treat the maximal set as implicitly all ones.
3779         Defer all blocks we didn't visit at least one successor.
3780         (add_to_exp_gen): Do not add to the maximal set.
3781         (make_values_for_phi): Likewise.
3782         (compute_avail): Likewise.
3783         (init_pre): Do not allocate the maximal set.
3784         (execute_pre): Do not dump it.
3785
3786 2009-09-09  Martin Jambor  <mjambor@suse.cz>
3787
3788         * tree-cfg.c (verify_gimple_phi): Check that gimple_phi_result is
3789         an SSA_NAME rather than a is_gimple_variable.
3790
3791 2009-09-09  Richard Guenther  <rguenther@suse.de>
3792
3793         PR middle-end/41317
3794         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Remove
3795         code dealing with plain pointer bases.
3796         (maybe_fold_offset_to_reference): Likewise.
3797         (maybe_fold_stmt_addition): Adjust.
3798
3799 2009-09-09  Richard Guenther  <rguenther@suse.de>
3800
3801         * tree.c (free_lang_data_in_type): Do not free the type variant
3802         chains.
3803         (free_lang_data): Merge char_type_node with its properly signed
3804         variant.
3805         (pass_ipa_free): Collect after freeing language specific data.
3806
3807 2009-09-09  Michael Matz  <matz@suse.de>
3808
3809         PR middle-end/41268
3810         * cfgexpand.c (expand_gimple_stmt_1): Use an int for storing
3811         SUBREG_PROMOTED_UNSIGNED_P, instead of a bool.
3812         * rtl.h (struct rtx, SUBREG_PROMOTED_UNSIGNED_P): Update comments
3813         to reflect reality.
3814
3815 2009-09-08  DJ Delorie  <dj@redhat.com>
3816
3817         * config/mep/mep.c (conversions[]): Add "ml" pattern.
3818
3819 2009-09-04  Jason Merrill  <jason@redhat.com>
3820
3821         * tree.c (tree_find_value): Remove.
3822         * tree.h: Remove prototype.
3823         * varasm.c (assemble_external): Use value_member instead.
3824
3825 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
3826
3827         * toplev.c (process_options): Choose default debugging type when
3828         gtoggle enables debug info and type is unset.
3829
3830 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
3831
3832         PR debug/41276
3833         PR debug/41307
3834         * cselib.c (cselib_expand_value_rtx_1): Don't return copy of
3835         invalid subreg.
3836
3837 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
3838
3839         * configure: Rebuilt with modified libtool.m4.
3840
3841 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
3842
3843         PR debug/41229
3844         PR debug/41291
3845         PR debug/41300
3846         * tree-ssa.c (execute_update_addresses_taken): Update debug insns.
3847
3848 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
3849
3850         * tree-ssa-loop-ivopts.c (get_phi_with_result): Remove.
3851         (remove_statement): Likewise.
3852         (rewrite_use_nonlinear_expr): Adjust.
3853         (remove_unused_ivs): Collect SSA NAMEs to remove and call...
3854         * tree-ssa.c (release_defs_bitset): ... this.  New.
3855         * tree-flow.h (release_defs_bitset): Declare.
3856
3857 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
3858
3859         PR debug/41232
3860         * tree-ssa-phiopt.c (minmax_replacement): Skip debug stmts
3861         in the middle block.
3862
3863 2009-09-08  Kai Tietz  <kai.tietz@onevision.com>
3864
3865         * tree-ssa-reassoc.c (find_operand_rank): Cast pointer
3866         via intptr_t to long type.
3867         (insert_operand_rank): Cast long type via intptr_t to
3868         pointer type.
3869         * genattrtab.c (RTL_HASH): Use intptr_t to cast from
3870         pointer to scalar.
3871         * c-pretty-print.c (pp_c_tree_decl_identifier): Cast
3872         from pointer to unsigned via uintptr_t.
3873
3874         * configure.ac (GCC_STDINT_TYPES): Initialize intptr_t,
3875         uintptr_t, HAVE_INTTYPES_H, HAVE_STDINT_H, HAVE_UINTPTR_T,
3876         and HAVE_INTPTR_T.
3877         * configure: Regenerated.
3878         * config.in: Regenerated
3879         * system.h (stdint.h): Add include.
3880         (inttypes.h): Likewise.
3881         * Makefile.in (aclocal): Add config/stdint.m4.
3882         * aclocal.m4: Regenerated.
3883
3884 2009-09-08  Bernd Schmidt  <bernd.schmidt@analog.com>
3885
3886         * config/bfin/bfin.c (np_check_regno, np_after_branch): New static
3887         variables.
3888         (note_np_check_stores): New function.
3889         (harmless_null_pointer_p): New function.
3890         (trapping_loads_p): New args NP_REG and AFTER_NP_BRANCH.  Callers
3891         changed.  Take into account whether we're in the shadow of a condjump
3892         that tested NP_REG for NULL.
3893         Lose all code that tested for SEQUENCEs.
3894         (workaround_speculation): Avoid inserting NOPs for loads that are
3895         either always executed or a NULL pointer.
3896
3897 2009-09-08  Jan Hubicka  <jh@suse.cz>
3898
3899         * doc/invoke.texi (early-inlining-insns): Reduce from 12 to 8.
3900         * params.def (early-inlining-insns): Likewise.
3901
3902 2009-09-08  Jakub Jelinek  <jakub@redhat.com>
3903
3904         PR rtl-optimization/41239
3905         * sched-int.h (struct deps): Add last_function_call_may_noreturn field.
3906         * sched-rgn.c (deps_join): Join also last_function_call_may_noreturn
3907         lists.
3908         * sched-deps.c (sched_analyze_insn): Prevent moving trapping insns
3909         across calls, as the calls might not always return normally.
3910         (call_may_noreturn_p): New function.
3911         (deps_analyze_insn): Update last_function_call_may_noreturn list.
3912         (init_deps): Initialize it.
3913         (remove_from_deps): Also remove calls from
3914         last_function_call_may_noreturn list.
3915
3916 2009-09-07  Richard Henderson  <rth@redhat.com>
3917
3918         * tree-ssa-sccvn.c (vn_reference_lookup_3): Don't assume there are
3919         more VR->OPERANDS than LHS operands.  Free LHS before returning.
3920
3921 2009-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
3922
3923         * config/bfin/bfin.md (UNSPEC_VOLATILE_STALL): New constant.
3924         (attr "addrtype"): New member "spreg".
3925         Use it if mem_spfp_address_operand is true for the address.
3926         (attr "type"): New entry "stall".
3927         (cpu_unit "load"): New.
3928         (insn_reservations "load32", "loadp", "loadi"): Add reservation of
3929         "load".
3930         (insn_reservation "loadsp"): New.
3931         (insn_reservation "load_stall1"): New.
3932         (insn_reservation "load_stall3"): New.
3933         (stall): New insn.
3934         * config/bfin/predicates.md (const1_operand, const3_operand): New.
3935         (mem_p_address_operand): Exclude stack and frame pointer based
3936         addresses.
3937         (mem_spfp_address_operand): New; match them here.
3938         * config/bfin/bfin.c (add_sched_insns_for_speculation): New function.
3939         (bfin_reorg): Call it if scheduling insns.
3940         (bfin_gen_bundles): Remove dummy insns created by
3941         add_sched_insns_for_speculation.
3942
3943         From Jie Zhang <jie.zhang@analog.com>:
3944         * config/bfin/bfin-protos.h (enum bfin_cpu_type, bfin_cpu_type,
3945         bfin_si_revision, bfin_workarounds): Move these ...
3946         * config/bfin/bfin.h: ... here.
3947
3948         From Mike Frysinger  <michael.frysinger@analog.com>
3949         * config/bfin/bfin-protos.h (bfin_cpu_type): Add BFIN_CPU_BF542M,
3950         BFIN_CPU_BF544M, BFIN_CPU_BF547M, BFIN_CPU_BF548M, and BFIN_CPU_BF549M.
3951         * config/bfin/bfin.c (bfin_cpus[]): Add 0.3 for bf542m, bf544m,
3952         bf547m, bf548m, and bf549m.
3953         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF542M__
3954         for BFIN_CPU_BF542M, __ADSPBF544M__ for BFIN_CPU_BF544M,
3955         __ADSPBF547M__ for BFIN_CPU_BF547M, __ADSPBF548M__ for
3956         BFIN_CPU_BF548M, and __ADSPBF549M__ for BFIN_CPU_BF549M.
3957         * config/bfin/t-bfin-elf (MULTILIB_MATCHES): Select bf532-none for
3958         bf542m-none, bf544m-none, bf547m-none, bf548m-none, and bf549m-none.
3959         * config/bfin/t-bfin-linux (MULTILIB_MATCHES): Likewise.
3960         * config/bfin/t-bfin-uclinux (MULTILIB_MATCHES): Likewise.
3961         * doc/invoke.texi (Blackfin Options): Document that -mcpu now accepts
3962         bf542m, bf544m, bf547m, bf548m, and bf549m.
3963
3964         From Jie Zhang <jie.zhang@analog.com>:
3965         * config/bfin/predicates.md (p_register_operand): New predicate.
3966         (dp_register_operand): New predicate.
3967         * config/bfin/bfin-protos.h (WA_05000074): Define.
3968         (ENABLE_WA_05000074): Define.
3969         * config/bfin/bfin.c (bfin_cpus[]): Add WA_05000074 for all cpus.
3970         (bfin_gen_bundles): Put dsp32shiftimm instruction in slot[0].
3971         * config/bfin/bfin.md (define_attr type): Add dsp32shiftimm.
3972         (define_attr addrtype): Allow load/store register to be P register.
3973         (define_attr storereg): New.
3974         (define_cpu_unit anomaly_05000074): New.
3975         (define_insn_reservation dsp32shiftimm): New.
3976         (define_insn_reservation dsp32shiftimm_anomaly_05000074): New.
3977         (define_insn_reservation loadp): Cannot use slot2.
3978         (define_insn_reservation loadsp): Cannot use slot2.
3979         (define_insn_reservation storep): Cannot use slot2. Does not
3980         apply when working around 05000074.
3981         (define_insn_reservation storep_anomaly_05000074): New.
3982         (define_insn_reservation storei): Does not apply when working
3983         around 05000074.
3984         (define_insn_reservation storei_anomaly_05000074): New.
3985         (define_attr length): Add dsp32shiftimm case.
3986         (define_insn movsi_insn32, movsi_insv, ashlsi3_insn, ashrsi3,
3987         ror_one, rol_one, lshrsi3, lshrpdi3, ashrpdi3, movhiv2hi_low,
3988         movhiv2hi_high, composev2hi, packv2hi, movv2hi_hi,
3989         ssashiftv2hi3, ssashifthi3, ssashiftsi3, lshiftv2hi3, lshifthi3):
3990         Set type as dsp32shiftimm for dsp32shiftimm alternatives.
3991
3992 2009-09-07  Martin Jambor  <mjambor@suse.cz>
3993
3994         PR middle-end/41282
3995         * tree-sra.c (create_artificial_child_access): Return NULL if
3996         build_ref_for_offset fails.
3997         (propagate_subacesses_accross_link): Allow build_ref_for_offset
3998         and create_artificial_child_access to fail.
3999
4000 2009-09-06  Dmitry Gorbachev  <d.g.gorbachev@gmail.com>
4001
4002         PR c++/41214
4003         * unwind-dw2.c (uw_init_context_1): Mark noinline.
4004         * config/ia64/unwind-ia64.c (uw_init_context_1): Likewise.
4005         * config/xtensa/unwind-dw2-xtensa.c (uw_init_context_1): Likewise.
4006
4007 2009-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
4008
4009         * config/bfin/bfin.c (bfin_optimize_loop): When creating a new basic
4010         block, ensure it has an exit edge.  Emit a barrier after a jump.
4011
4012 2009-09-07  Nick Clifton  <nickc@redhat.com>
4013
4014         * gcc.c (this_is_linker_script): New variable.  Like
4015         this_is_library_file but for the %T constructor.
4016         (end_going_arg): If this_is_linker_script is set then locate the
4017         script and insert a --script switch before it
4018         (do_spec_2): Initialise this_is_linker_script.
4019         (do_spec_1): Likewise.  Handle %T construct.
4020         (eval_spec_function): Preserve this_is_linker_script.
4021         * doc/invoke.texi: Document %T construct in spec files.
4022         * config/m32c/m32c.h (LIB_SPEC): Use it.
4023
4024 2009-09-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
4025
4026         * rtl.h (PREFETCH_SCHEDULE_BARRIER_P): New macro.
4027         * sched-deps.c (sched_analyze_2): Make prefetches a hard barrier
4028         when volatile flag is set.
4029         * doc/rtl.texi (PREFETCH_SCHEDULE_BARRIER_P): Add documentation pieces.
4030
4031 2009-09-06  Eric Botcazou  <ebotcazou@adacore.com>
4032
4033         PR bootstrap/41241
4034         * combine-stack-adj.c (try_apply_stack_adjustment): Handle stores.
4035         (combine_stack_adjustments_for_block): Allow insns between stack
4036         adjustments and stores with corresponding pre-(dec|inc)rement or
4037         pre-modify operation.
4038
4039 2009-09-06  Jakub Jelinek  <jakub@redhat.com>
4040
4041         PR bootstrap/41241
4042         * combine-stack-adj.c (struct csa_memlist): Rename to...
4043         (struct csa_reflist): ... this.  Rename mem field to ref.
4044         (free_csa_memlist): Rename to...
4045         (free_csa_reflist): ... this.
4046         (record_one_stack_memref): Rename to...
4047         (record_one_stack_ref): ... this.  Handle also REG_P.
4048         (try_apply_stack_adjustment): Handle also REG_P.
4049         (struct record_stack_memrefs_data): Rename to...
4050         (struct record_stack_refs_data): ... this.  Rename memlist field to
4051         reflist.
4052         (record_stack_memrefs): Rename to...
4053         (record_stack_refs): ... this.  For DEBUG_INSNs keep traversing
4054         subexpressions instead of failing when a MEM contains SP references.
4055         For SP itself in DEBUG_INSNs queue it also onto reflist chain.
4056         (combine_stack_adjustments_for_block): Adjust for mem to ref renaming.
4057
4058 2009-09-06  Richard Guenther  <rguenther@suse.de>
4059
4060         PR middle-end/41144
4061         * tree.c (build_array_type): Do not record types marked
4062         with structural equality in the canonical type hashtable.
4063
4064 2009-09-06  Richard Guenther  <rguenther@suse.de>
4065
4066         PR middle-end/41261
4067         * tree-ssa-alias.c (refs_may_alias_p_1): Bail out for function decls.
4068
4069 2009-09-05  Richard Guenther  <rguenther@suse.de>
4070
4071         PR middle-end/41181
4072         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Use the correct type.
4073
4074 2009-09-05  Richard Guenther  <rguenther@suse.de>
4075
4076         PR debug/41273
4077         * tree-ssa-operands.c (get_tmr_operands): Pass through opf_no_vops.
4078
4079 2009-09-05  Richard Guenther  <rguenther@suse.de>
4080
4081         PR middle-end/41271
4082         * tree-ssa.c (useless_type_conversion_p): Drop qualifiers
4083         before comparing function argument types.
4084
4085 2009-09-05  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
4086
4087         PR target/41024
4088         * config/i386/mingw-w64.h (ASM_SPEC): Pass -v instead of -V to
4089         the assembler.
4090
4091 2009-09-04  Uros Bizjak  <ubizjak@gmail.com>
4092
4093         Revert:
4094         2009-08-18  Uros Bizjak  <ubizjak@gmail.com>
4095
4096         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Allocate insn
4097         locators before emit_insn is called.
4098
4099 2009-09-04  Vladimir Makarov  <vmakarov@redhat.com>
4100
4101         PR bootstrap/41241
4102         * ira.c (update_equiv_reg): Revert my previous patch for the PR.
4103         * reginfo.c (resize_reg_info): Call allocate_reg_info if necessary.
4104         (reginfo_init): Don't call allocate_reg_info.
4105
4106 2009-09-04  Uros Bizjak  <ubizjak@gmail.com>
4107
4108         PR target/41262
4109         * config/alpha/alpha.c (alpha_does_function_need_gp): Use
4110         NONDEBUG_INSN_P instead of INSN_P.
4111
4112 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
4113
4114         PR debug/41225
4115         * tree-vect-stmts.c (vect_stmt_relevant_p): Skip debug uses.
4116
4117 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
4118
4119         PR target/41252
4120         * config/arm/vfp.md (*cmpdf_split_vfp): Fix src mode in the second
4121         pattern of the split.
4122
4123 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
4124
4125         * toplev.c (process_options): Move setter of flag_var_tracking
4126         before other tests that depend on it.  Move down setter of
4127         flag_rename_registers.  Don't enable var-tracking-assignments
4128         by default if selective scheduling is enabled.  Warn if both
4129         are enabled.
4130
4131 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
4132
4133         * var-tracking.c (dv_is_decl_p): Adjust NULL behavior to match
4134         comment.  Use switch statement to catch overlaps between rtx
4135         and tree codes.  Accept FUNCTION_DECLs in addition to those in...
4136         (IS_DECL_CODE): ... here. Remove.
4137         (check_value_is_not_decl): Remove.
4138         (dv_from_decl, dv_from_value): Check after conversion.
4139
4140 2009-09-04  Richard Guenther  <rguenther@suse.de>
4141
4142         PR middle-end/41257
4143         * (cgraph_finalize_compilation_unit): Move finalizing aliases
4144         after emitting tunks.  Move emitting thunks and ctors from ...
4145         (cgraph_optimize): ... here.  Remove redundant
4146         cgraph_analyze_functions.
4147         * varasm.c (find_decl_and_mark_needed): Remove no longer
4148         necessary check.
4149         (finish_aliases_1): Adjust check for thunk aliases.
4150
4151 2009-09-04  Daniel Gutson  <dgutson@codesourcery.com>
4152
4153         * config/arm/arm.md (ctzsi2): Added braces
4154         to avoid warning that broke booststrap.
4155
4156 2009-09-04  Martin Jambor  <mjambor@suse.cz>
4157
4158         PR tree-optimization/41112
4159         * tree-sra.c (build_ref_for_offset_1): Signal that we cannot
4160         handle variable-bounded arrays.
4161         (expr_with_var_bounded_array_refs_p): New function.
4162         (analyze_access_subtree): Call expr_with_var_bounded_array_refs_p.
4163
4164 2009-09-04  Wolfgang Gellerich  <gellerich@de.ibm.com>
4165
4166         * config/s390/2097.md: Removed two incorrect bypasses.
4167         (z10_fsimpdf): Fixed latency.
4168         (z10_fhex): New insn_reservation.
4169         (z10_floaddf): Fixed latency.
4170         (z10_floadsf): Fixed latency.
4171         (z10_ftrunctf): Fixed latency.
4172         (z10_ftruncdf): Fixed latency.
4173         * config/s390/s390.c (z10_cost): Fixed values.
4174         (s390_adjust_priority): Added z10 path.
4175         * config/s390/s390.md (type): Added fhex.
4176         (*mov<mode>_64dfp): Updated type attribute.
4177         (*mov<mode>_64): Updated type attribute.
4178         (*mov<mode>_31): Updated type attribute.
4179         (*mov<mode>"): Likewise.
4180         * config/s390/2084.md (x_fsimpdf): Updated condition.
4181
4182 2009-09-04  Andreas Krebbel  <krebbel1@de.ibm.com>
4183
4184         * config/s390/s390.md ("*fmadd<mode>", "*fmsub<mode>"): Enable mem
4185         RTXs in the predicate for operand 1.
4186
4187 2009-09-03  Daniel Gutson  <dgutson@codesourcery.com>
4188
4189         * config/arm/arm.md (UNSPEC_RBIT): New constant.
4190         (rbitsi2): New insn.
4191         (ctzsi2): New expand.
4192         * config/arm/arm.h (CTZ_DEFINED_VALUE_AT_ZERO): New macro.
4193
4194 2009-09-03  Martin Jambor  <mjambor@suse.cz>
4195
4196         * tree-sra.c (duplicate_expr_for_different_base): Removed.
4197         (create_artificial_child_access): Use build_ref_for_offset instead
4198         of duplicate_expr_for_different_base.
4199         (propagate_subacesses_accross_link): Likewise.
4200
4201 2009-09-03  Richard Sandiford  <rdsandiford@googlemail.com>
4202
4203         * config/mips/mips.c (USEFUL_INSN_P): Use NONDEBUG_INSN_P instead
4204         of INSN_P.
4205         (mips16e_collect_argument_saves): Skip debug instructions.
4206         (mips_74k_agen_init): Use CALL_P || JUMP_P instead of !NONJUMP_INSN_P.
4207         (mips16_lay_out_constants): Use USEFUL_INSN_P instead of INSN_P.
4208         (r10k_insert_cache_barriers): Likewise.
4209         (mips_reorg_process_insns): Likewise.
4210
4211 2009-09-03  Vladimir Makarov  <vmakarov@redhat.com>
4212
4213         PR bootstrap/41241
4214         * ira.c (update_equiv_reg): Remove check on class likely spill.
4215
4216 2009-09-03  Jakub Jelinek  <jakub@redhat.com>
4217
4218         PR debug/41236
4219         * dwarf2out.c (loc_descriptor): Don't use SUBREG_REG macro on
4220         SIGN_EXTEND or ZERO_EXTEND.  Don't assume there is a REG inside of
4221         it or SUBREG.
4222
4223         PR debug/41238
4224         * function.c (assign_parm_find_stack_rtl): Don't set mem attributes on
4225         the stack slot if it is passed by invisible reference.
4226         * var-tracking.c (vt_add_function_parameters): Handle arguments passed
4227         by invisible reference.
4228
4229 2009-09-03  Bernd Schmidt  <bernd.schmidt@analog.com>
4230
4231         * config/bfin/linux.h (TARGET_SUPPORTS_SYNC_CALLS): Define to 1.
4232         * config/bfin/uclinux.h (TARGET_SUPPORTS_SYNC_CALLS): Define to 1.
4233         * config/bfin/bfin.h (TARGET_SUPPORTS_SYNC_CALLS): Provide default of
4234         0.
4235         * config/bfin/sync.md: New file.
4236         * config/bfin/bfin.md: Include it.
4237         (UNSPEC_ATOMIC): New.
4238         (UNSPEC_ONES): Provide a unique number.
4239
4240         From Jie Zhang <jie.zhang@analog.com>:
4241         * config/bfin/bfin.c (ret_regs): New.
4242         (must_save_fp_p): Don't return true because of frame_pointer_needed.
4243         (must_save_rets_p): New.
4244         (n_regs_saved_by_prologue): Use must_save_rets_p instead of
4245         current_function_is_leaf.
4246         (do_link): Likewise.
4247         (do_unlink): Likewise.
4248         (expand_interrupt_handler_prologue): Use ret_regs array.
4249         (expand_interrupt_handler_epilogue): Use ret_regs array and
4250         pass return register to gen_return_internal.
4251         (bfin_expand_epilogue): Pass return register to
4252         gen_return_internal.
4253         (bfin_expand_call): Explicitly clobber RETS.
4254         * config/bfin/bfin.h (FUNCTION_RETURN_REGISTERS): Define.
4255         * config/bfin/bfin.md (call_symbol_fdpic, call_value_symbol_fdpic,
4256         call_insn_fdpic, call_value_insn_fdpic, call_symbol,
4257         call_value_symbol, call_insn, call_value_insn): Explicitly clobber
4258         RETS.
4259         (return_internal): Take a reg rtx rather than the register number.
4260
4261 2009-09-03  H.J. Lu  <hongjiu.lu@intel.com>
4262
4263         * tree-parloops.c (parallelize_loops): Cast to HOST_WIDE_INT
4264         when comparing against estimated_loop_iterations_int return.
4265
4266 2009-09-03  Richard Guenther  <rguenther@suse.de>
4267
4268         * dwarf2out.c (dwarf2out_do_cfi_asm): Remove check of
4269         eh_personality_libfunc.
4270
4271 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
4272
4273         * tree-parloops.c (separate_decls_in_region): Add space.
4274
4275 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
4276
4277         * tree-parloops.c (separate_decls_in_region): Change the condition
4278         checking if there are reductions in the loop.
4279
4280 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
4281
4282         PR tree-optimization/38275
4283         * tree-parloops.c (parallelize_loops): Replace profitability condition
4284         for expected number of iterations.
4285
4286 2009-09-03  Alexandre Oliva  <aoliva@redhat.com>
4287
4288         * doc/invoke.texi (BUILD_CONFIG): Document --with-build-config.
4289         (bootstrap-debug): Explain conditions in which it becomes default.
4290         (bootstrap-debug-big): Rather than duplicate bootstrap-debug,
4291         make it add to it.
4292
4293 2009-09-03  Namhyung Kim  <namhyung@gmail.com>
4294
4295         * doc/invoke.texi (Optimize Options): Move
4296         -finline-small-functions to the -O2 list.
4297
4298 2009-09-03  Alexandre Oliva  <aoliva@redhat.com>
4299
4300         * toplev.c (process_options): Enable var-tracking-assignments
4301         by default if var-tracking is enabled.
4302
4303 2009-09-02  David Daney  <ddaney@caviumnetworks.com>
4304
4305         * cfgbuild.c (find_bb_boundaries): Split blocks containing a
4306         barrier.
4307         * emit-rtl.c (prev_nonnote_insn_bb): New function.
4308         * rtl.h (prev_nonnote_insn_bb): Declare it.
4309
4310 2009-09-03  Diego Novillo  <dnovillo@google.com>
4311
4312         * cgraph.c (cgraph_node_for_decl): New.
4313         * cgraph.h (cgraph_node_for_decl): Declare.
4314         * tree.c (host_integerp): Return 0 if T is NULL.
4315
4316 2009-09-03  Diego Novillo  <dnovillo@google.com>
4317
4318         * tree.h (struct alias_pair): Move from varasm.c.
4319         (alias_pairs): Likewise.
4320         (TYPE_MAXVAL): Define.
4321         (TYPE_MINVAL): Define.
4322         (iterative_hash_host_wide_int): Declare.
4323         (remove_unreachable_alias_pairs): Declare.
4324         * tree-pass.h (pass_ipa_free_lang_data): Declare.
4325         * diagnostic.c (default_diagnostic_starter): Make extern.
4326         (default_diagnostic_finalizer): Make extern.
4327         * diagnostic.h (default_diagnostic_starter): Declare.
4328         (default_diagnostic_finalizer): Declare.
4329         (default_tree_printer): Declare.
4330         * toplev.c (default_tree_printer): Make extern.
4331
4332 2009-09-03  Richard Guenther  <rguenther@suse.de>
4333             Diego Novillo  <dnovillo@google.com>
4334
4335         * cgraph.c (cgraph_add_new_function): Remove gimplification.
4336         * cgraphunit.c (cgraph_expand_function): Do not emit
4337         associated thunks from here.
4338         (cgraph_emit_thunks): New.
4339         (cgraph_optimize): Call it.
4340         Return if any IPA pass finds an error.
4341         * varasm.c (finish_aliases_1): Ignore errorneous aliases used
4342         by thunks.
4343
4344 2009-09-03  Simon Baldwin  <simonb@google.com>
4345             Rafael Espindola  <espindola@google.com>
4346             Richard Guenther  <rguenther@suse.de>
4347             Doug Kwan  <dougkwan@google.com>
4348             Diego Novillo  <dnovillo@google.com>
4349
4350         * tree.c: Include tree-pass.h, langhooks-def.h,
4351         diagnostic.h, cgraph.h, timevar.h, except.h and debug.h.
4352         (free_lang_data_in_type): New.
4353         (need_assembler_name_p): New.
4354         (free_lang_data_in_block): New.
4355         (free_lang_data_in_decl): New.
4356         (struct free_lang_data_d): New.
4357         (add_tree_to_fld_list): New.
4358         (find_decls_types_r): New.
4359         (get_eh_types_for_runtime): New.
4360         (find_decls_types_in_eh_region): New.
4361         (find_decls_types_in_node): New.
4362         (find_decls_types_in_var): New.
4363         (free_lang_data_in_cgraph): New.
4364         (free_lang_data): New.
4365         (gate_free_lang_data): New.
4366         (pass_ipa_free_lang_data): New.
4367
4368 2009-09-03  Diego Novillo  <dnovillo@google.com>
4369
4370         * timevar.def (TV_IPA_FREE_LANG_DATA): Define.
4371         * langhooks.h (struct lang_hooks): Add field free_lang_data.
4372         (lang_hooks): Remove const qualifier.
4373         * ipa.c (cgraph_remove_unreachable_nodes): Call
4374         remove_unreachable_alias_pairs.
4375         * except.c (add_type_for_runtime): Check if TYPE has
4376         already been converted.
4377         (lookup_type_for_runtime): Likewise.
4378         (check_handled): Handle converted types.
4379         * varasm.c (remove_unreachable_alias_pairs): New.
4380         * gimple.c: Include demangle.h.
4381         (gimple_decl_printable_name): New.
4382         (gimple_fold_obj_type_ref): New.
4383         * gimple.h (gimple_decl_printable_name): Declare.
4384         (gimple_fold_obj_type_ref): Declare.
4385         * passes.c (init_optimization_passes): Add pass
4386         pass_ipa_free_lang_data.
4387         * langhooks-def.h (LANG_HOOKS_FREE_LANG_DATA): Define.
4388         (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_FREE_LANG_DATA.
4389
4390 2009-09-03  Diego Novillo  <dnovillo@google.com>
4391
4392         * c-lang.c (lang_hooks): Remove const qualifier.
4393
4394 2009-09-02  Loren James Rittle  <ljrittle@acm.org>
4395
4396         * doc/install.texi (*-*-freebsd*): Update target information.
4397
4398 2009-09-02  Anatoly Sokolov  <aesok@post.ru>
4399
4400         * hard-reg-set.h (call_fixed_regs): Remove.
4401         * reginfo.c (call_fixed_regs): Remove.
4402         (init_reg_sets_1): Remove initialization of call_fixed_regs.
4403         (globalize_reg): Don't use call_fixed_regs.
4404         * caller-save.c (init_caller_save): Use call_fixed_reg_set instead of
4405         call_fixed_regs.
4406
4407 2009-09-01  Michael Matz  <matz@suse.de>
4408
4409         * expr.h (emit_storent_insn, expand_expr_real_1,
4410         expand_expr_real_2): Declare.
4411         * expr.c (emit_storent_insn, expand_expr_real_1,
4412         expand_expr_real_2): Export.
4413         (store_expr): Setting and evaluating dont_return_target is useless.
4414         (expand_expr_real_1, <case GOTO_EXPR, RETURN_EXPR, SWITCH_EXPR,
4415         LABEL_EXPR and ASM_EXPR>): Move to gcc_unreachable.
4416         * except.c (expand_resx_expr): Rename to ...
4417         (expand_resx_stmt): ... this.  Rewrite to take gimple statement.
4418         * except.h (expand_resx_stmt): Declare.
4419         * stmt.c: Add include gimple.h
4420         (expand_asm_expr): Rename to ...
4421         (expand_asm_stmt): ... this. Rewrite to take gimple statement.
4422         (expand_case): Rewrite to take gimple statement.
4423         * tree.h (expand_asm_stmt): Declare.
4424         (expand_case): Change prototype.
4425         * Makefile.in (stmt.o): Depend on gimple.h.
4426         * builtins.c (expand_builtin_synchronize): Build gimple asm
4427         statement, not an ASM_EXPR.
4428         * cfgexpand.c (gimple_cond_pred_to_tree, set_expr_location_r,
4429         gimple_to_tree, release_stmt_tree): Remove.
4430         (expand_gimple_cond): Don't call gimple_cond_pred_to_tree or
4431         ggc_free, but hold comparison code and operands separately.
4432         Call jumpif_1 and jumpifnot_1 instead of jumpif and jumpifnot.
4433         (expand_call_stmt, expand_gimple_stmt_1,
4434         expand_gimple_stmt): New helpers.
4435         (expand_gimple_tailcall): Don't call gimple_to_tree, expand_expr_stmt,
4436         release_stmt_tree.  Call expand_gimple_stmt instead.
4437         (expand_gimple_basic_block): Ditto.
4438
4439         * calls.c (emit_call_1): Don't look at EH regions here, make
4440         fntree parameter useless.
4441         (expand_call): New local rettype for TREE_TYPE(exp), use it
4442         throughout.  Remove local p, use addr instead.
4443         Don't look at EH regions here.
4444
4445 2009-09-02  Vladimir Makarov  <vmakarov@redhat.com>
4446
4447         * doc/invoke.texi (-fsched-pressure): Document it.
4448         (-fsched-reg-pressure-heuristic): Remove it.
4449
4450         * reload.c (ira.h): Include.
4451         (find_reloads): Add choosing reload on number of small spilled
4452         classes.
4453
4454         * haifa-sched.c (ira.h): Include.
4455         (sched_pressure_p, sched_regno_cover_class, curr_reg_pressure,
4456         saved_reg_pressure, curr_reg_live, saved_reg_live,
4457         region_ref_regs): New variables.
4458         (sched_init_region_reg_pressure_info, mark_regno_birth_or_death,
4459         initiate_reg_pressure_info, setup_ref_regs,
4460         initiate_bb_reg_pressure_info, save_reg_pressure,
4461         restore_reg_pressure, dying_use_p, print_curr_reg_pressure): New
4462         functions.
4463         (setup_insn_reg_pressure_info): New function.
4464         (rank_for_schedule): Add pressure checking and insn issue time.
4465         Remove comparison of insn reg weights.
4466         (ready_sort): Set insn reg pressure info.
4467         (update_register_pressure, setup_insn_max_reg_pressure,
4468         update_reg_and_insn_max_reg_pressure,
4469         sched_setup_bb_reg_pressure_info): New functions.
4470         (schedule_insn): Add code for printing and updating reg pressure info.
4471         (find_set_reg_weight, find_insn_reg_weight): Remove.
4472         (ok_for_early_queue_removal): Do nothing if pressure_only_p.
4473         (debug_ready_list): Print reg pressure info.
4474         (schedule_block): Ditto.  Check insn issue time.
4475         (sched_init): Set up sched_pressure_p.  Allocate and set up some
4476         reg pressure related info.
4477         (sched_finish): Free some reg pressure related info.
4478         (fix_tick_ready): Make insn always ready if pressure_p.
4479         (init_h_i_d): Don't call find_insn_reg_weight.
4480         (haifa_finish_h_i_d): Free insn reg pressure info.
4481
4482         * ira-int.h (ira_hard_regno_cover_class, ira_reg_class_nregs,
4483         ira_memory_move_cost, ira_class_hard_regs,
4484         ira_class_hard_regs_num, ira_no_alloc_regs,
4485         ira_available_class_regs, ira_reg_class_cover_size,
4486         ira_reg_class_cover, ira_class_translate): Move to ira.h.
4487
4488         * ira-lives.c (single_reg_class): Check mode to find how many
4489         registers are necessary for operand.
4490         (ira_implicitly_set_insn_hard_regs): New.
4491
4492         * common.opt (fsched-pressure): New options.
4493         (fsched-reg-pressure-heuristic): Remove.
4494
4495         * ira.c (setup_eliminable_regset): Rename to
4496         ira_setup_eliminable_regset.  Make it external.
4497         (expand_reg_info): Pass cover class to setup_reg_classes.
4498         (ira): Call resize_reg_info instead of allocate_reg_info.
4499
4500         * sched-deps.c: Include ira.h.
4501         (implicit_reg_pending_clobbers, implicit_reg_pending_uses): New.
4502         (create_insn_reg_use, create_insn_reg_set, setup_insn_reg_uses,
4503         reg_pressure_info, insn_use_p, mark_insn_pseudo_birth,
4504         mark_insn_hard_regno_birth, mark_insn_reg_birth,
4505         mark_pseudo_death, mark_hard_regno_death, mark_reg_death,
4506         mark_insn_reg_store, mark_insn_reg_clobber,
4507         setup_insn_reg_pressure_info): New.
4508         (sched_analyze_1): Update implicit_reg_pending_uses.
4509         (sched_analyze_insn): Find implicit sets, uses, clobbers of regs.
4510         Use them to create dependencies.  Set insn reg uses and pressure
4511         info.  Process reg_pending_uses in one place.
4512         (free_deps): Free implicit sets.
4513         (remove_from_deps): Remove implicit sets if necessary.  Check
4514         implicit sets when clearing reg_last_in_use.
4515         (init_deps_global): Clear implicit_reg_pending_clobbers and
4516         implicit_reg_pending_uses.
4517
4518         * ira.h (ira_hard_regno_cover_class, ira_reg_class_nregs,
4519         ira_memory_move_cost, ira_class_hard_regs,
4520         ira_class_hard_regs_num, ira_no_alloc_regs,
4521         ira_available_class_regs, ira_reg_class_cover_size,
4522         ira_reg_class_cover, ira_class_translate): Move from ira-int.h.
4523         (ira_setup_eliminable_regset, ira_set_pseudo_classes,
4524         ira_implicitly_set_insn_hard_regs): New prototypes.
4525
4526         * ira-costs.c (pseudo_classes_defined_p, allocno_p,
4527         cost_elements_num): New variables.
4528         (allocno_costs, total_costs): Rename to costs and
4529         total_allocno_costs.
4530         (COSTS_OF_ALLOCNO): Rename to COSTS.
4531         (allocno_pref): Rename to pref.
4532         (allocno_pref_buffer): Rename to pref_buffer.
4533         (common_classes): Rename to regno_cover_class.
4534         (COST_INDEX): New.
4535         (record_reg_classes): Set allocno attributes only if allocno_p.
4536         (record_address_regs): Ditto.  Use COST_INDEX instead of ALLOCNO_NUM.
4537         (scan_one_insn): Use COST_INDEX and COSTS instead of ALLOCNO_NUM
4538         and COSTS_OF_ALLOCNO.
4539         (print_costs): Rename to print_allocno_costs.
4540         (print_pseudo_costs): New.
4541         (process_bb_node_for_costs): Split into 2 functions with new
4542         function process_bb_for_costs.  Pass BB to process_bb_for_costs.
4543         (find_allocno_class_costs): Rename to find_costs_and_classes.  Add
4544         new parameter dump_file.  Use cost_elements_num instead of
4545         ira_allocnos_num.  Make one iteration if preferred classes were
4546         already calculated for scheduler.  Make 2 versions of code
4547         depending on allocno_p.
4548         (setup_allocno_cover_class_and_costs): Check allocno_p.  Use
4549         regno_cover_class and COSTS instead of common_classes and
4550         COSTS_OF_ALLOCNO.
4551         (init_costs, finish_costs): New.
4552         (ira_costs): Set up allocno_p and cost_elements_num.  Call
4553         init_costs and finish_costs.
4554         (ira_set_pseudo_classes): New.
4555
4556         * rtl.h (allocate_reg_info): Remove.
4557         (resize_reg_info): Change return type.
4558         (reg_cover_class): New.
4559         (setup_reg_classes): Add new parameter.
4560
4561         * sched-int.h (struct deps_reg): New member implicit_sets.
4562         (sched_pressure_p, sched_regno_cover_class): New external definitions.
4563         (INCREASE_BITS): New macro.
4564         (struct reg_pressure_data, struct reg_use_data): New.
4565         (struct _haifa_insn_data): Remove reg_weight.  Add members
4566         reg_pressure, reg_use_list, reg_set_list, and
4567         reg_pressure_excess_cost_change.
4568         (struct deps): New member implicit_sets.
4569         (pressure_p): New variable.
4570         (COVER_CLASS_BITS, INCREASE_BITS): New macros.
4571         (struct reg_pressure_data, struct reg_use_data): New.
4572         (INSN_REG_WEIGHT): Remove.
4573         (INSN_REG_PRESSURE, INSN_MAX_REG_PRESSURE, INSN_REG_USE_LIST,
4574         INSN_REG_SET_LIST, INSN_REG_PRESSURE_EXCESS_COST_CHANGE): New macros.
4575         (sched_init_region_reg_pressure_info,
4576         sched_setup_bb_reg_pressure_info): New prototypes.
4577
4578         * reginfo.c (struct reg_pref): New member coverclass.
4579         (reg_cover_class): New function.
4580         (reginfo_init, pass_reginfo_init): Move after free_reg_info.
4581         (reg_info_size): New variable.
4582         (allocate_reg_info): Make static.  Setup reg_info_size.
4583         (resize_reg_info): Use reg_info_size.  Return flag of resizing.
4584         (setup_reg_classes): Add a new parameter.  Setup cover class too.
4585
4586         * Makefile.in (reload.o, haifa-sched.o, sched-deps.o): Add ira.h to
4587         the dependencies.
4588
4589         * sched-rgn.c (deps_join): Set up implicit_sets.
4590         (schedule_region): Set up region and basic blocks pressure
4591         relative info.
4592
4593         * passes.c (init_optimization_passes): Move
4594         pass_subregs_of_mode_init before pass_sched.
4595
4596 2009-09-02  Martin Jambor  <mjambor@suse.cz>
4597
4598         * tree-sra.c (struct access): New field grp_hint.
4599         (dump_access): Dump grp_hint.
4600         (sort_and_splice_var_accesses): Set grp_hint if a group is read
4601         multiple times.
4602         (analyze_access_subtree): Only scalarize accesses with grp_hint set or
4603         those which have been specifically read and somehow written to.
4604         (propagate_subacesses_accross_link): Set grp_hint of right child and
4605         also possibly of the left child.
4606
4607 2009-09-02  Jakub Jelinek  <jakub@redhat.com>
4608
4609         * tree-object-size.c (addr_object_size): Always use object_size_type
4610         0 or 2 when determining the pointer pointed object size.
4611
4612 2009-09-02  Richard Guenther  <rguenther@suse.de>
4613
4614         Revert
4615         2009-08-31  Richard Guenther  <rguenther@suse.de>
4616
4617         * builtins.c (fold_builtin_memory_op): Use the alias oracle
4618         to query if the memory regions for memmove overlap.
4619         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Relax the
4620         asserts on pointers, instead deal with odd trees.
4621         (ptr_derefs_may_alias_p): Likewise.
4622         (refs_may_alias_p_1): Constructor bases also never alias.
4623
4624 2009-08-01  Christian Bruel  <christian.bruel@st.com>
4625
4626         Revert:
4627         2009-07-31  Christian Bruel  <christian.bruel@st.com>
4628         * gcc/config.gcc (sh*-*-elf): test with_libgloss.
4629
4630 2009-09-01  Alexandre Oliva  <aoliva@redhat.com>
4631
4632         * doc/invoke.texi (-fvar-tracking-assignments): New.
4633         (-fvar-tracking-assignments-toggle): New.
4634         (-fdump-final-insns=file): Mark filename as optional.
4635         (--param min-nondebug-insn-uid): New.
4636         (-gdwarf-@{version}): Mention version 4.
4637         * opts.c (common_handle_option): Accept it.
4638         * tree-vrp.c (find_assert_locations_1): Skip debug stmts.
4639         * regrename.c (regrename_optimize): Drop last.  Don't count debug
4640         insns as uses.  Don't reject change because of debug insn.
4641         (do_replace): Reject DEBUG_INSN as chain starter.  Take base_regno
4642         from the chain starter, and check for inexact matches in DEBUG_INSNS.
4643         (scan_rtx_reg): Accept inexact matches in DEBUG_INSNs.
4644         (build_def_use): Simplify and fix the marking of DEBUG_INSNs.
4645         * sched-ebb.c (schedule_ebbs): Skip boundary debug insns.
4646         * fwprop.c (forward_propagate_and_simplify): ...into debug insns.
4647         * doc/gimple.texi (is_gimple_debug): New.
4648         (gimple_debug_bind_p): New.
4649         (is_gimple_call, gimple_assign_cast_p): End sentence with period.
4650         * doc/install.texi (bootstrap-debug): More details.
4651         (bootstrap-debug-big, bootstrap-debug-lean): Document.
4652         (bootstrap-debug-lib): More details.
4653         (bootstrap-debug-ckovw): Update.
4654         (bootstrap-time): New.
4655         * tree-into-ssa.c (mark_def_sites): Skip debug stmts.
4656         (insert_phi_nodes_for): Insert debug stmts.
4657         (rewrite_stmt): Take iterator.  Insert debug stmts.
4658         (rewrite_enter_block): Adjust.
4659         (maybe_replace_use_in_debug_stmt): New.
4660         (rewrite_update_stmt): Use it.
4661         (mark_use_interesting): Return early for debug stmts.
4662         * tree-ssa-loop-im.c (rewrite_bittest): Propagate DEFs into debug
4663         stmts before replacing stmt.
4664         (move_computations_stmt): Likewise.
4665         * ira-conflicts.c (add_copies): Skip debug insns.
4666         * regstat.c (regstat_init_n_sets_and_refs): Discount debug insns.
4667         (regstat_bb_compute_ri): Skip debug insns.
4668         * tree-ssa-threadupdate.c (redirection_block_p): Skip debug stmts.
4669         * tree-ssa-loop-manip.c (find_uses_to_rename_stmt,
4670         check_loop_closed_ssa_stmt): Skip debug stmts.
4671         * tree-tailcall.c (find_tail_calls): Likewise.
4672         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Likewise.
4673         * tree.h (MAY_HAVE_DEBUG_STMTS): New.
4674         (build_var_debug_value_stat): Declare.
4675         (build_var_debug_value): Define.
4676         (target_for_debug_bind): Declare.
4677         * reload.c (find_equiv_reg): Skip debug insns.
4678         * rtlanal.c (reg_used_between_p): Skip debug insns.
4679         (side_effects_p): Likewise.
4680         (canonicalize_condition): Likewise.
4681         * ddg.c (create_ddg_dep_from_intra_loop_link): Check that non-debug
4682         insns never depend on debug insns.
4683         (create_ddg_dep_no_link): Likewise.
4684         (add_cross_iteration_register_deps): Use ANTI_DEP for debug insns.
4685         Don't add inter-loop dependencies for debug insns.
4686         (build_intra_loop_deps): Likewise.
4687         (create_ddg): Count debug insns.
4688         * ddg.h (struct ddg::num_debug): New.
4689         (num_backargs): Pair up with previous int field.
4690         * diagnostic.c (diagnostic_report_diagnostic): Skip notes on
4691         -fcompare-debug-second.
4692         * final.c (get_attr_length_1): Skip debug insns.
4693         (rest_of_clean-state): Don't dump CFA_RESTORE_STATE.
4694         * gcc.c (invoke_as): Call compare-debug-dump-opt.
4695         (driver_self_specs): Map -fdump-final-insns to
4696         -fdump-final-insns=..
4697         (get_local_tick): New.
4698         (compare_debug_dump_opt_spec_function): Test for . argument and
4699         compute output name.  Compute temp output spec without flag name.
4700         Compute -frandom-seed.
4701         (OPT): Undef after use.
4702         * cfgloopanal.c (num_loop_insns): Skip debug insns.
4703         (average_num_loop_insns): Likewise.
4704         * params.h (MIN_NONDEBUG_INSN_UID): New.
4705         * gimple.def (GIMPLE_DEBUG): New.
4706         * ipa-reference.c (scan_stmt_for_static_refs): Skip debug stmts.
4707         * auto-inc-dec.c (merge_in_block): Skip debug insns.
4708         (merge_in_block): Fix whitespace.
4709         * toplev.c (flag_var_tracking): Update comment.
4710         (flag_var_tracking_assignments): New.
4711         (flag_var_tracking_assignments_toggle): New.
4712         (process_options): Don't open final insns dump file if we're not
4713         going to write to it.  Compute defaults for var_tracking.
4714         * df-scan.c (df_insn_rescan_debug_internal): New.
4715         (df_uses_record): Handle debug insns.
4716         * haifa-sched.c (ready): Initialize n_debug.
4717         (contributes_to_priority): Skip debug insns.
4718         (dep_list_size): New.
4719         (priority): Use it.
4720         (rank_for_schedule): Likewise.  Schedule debug insns as soon as
4721         they're ready.  Disregard previous debug insns to make decisions.
4722         (queue_insn): Never queue debug insns.
4723         (ready_add, ready_remove_first, ready_remove): Count debug insns.
4724         (schedule_insn): Don't reject debug insns because of issue rate.
4725         (get_ebb_head_tail, no_real_insns_p): Skip boundary debug insns.
4726         (queue_to_ready): Skip and discount debug insns.
4727         (choose_ready): Let debug insns through.
4728         (schedule_block): Check boundary debug insns.  Discount debug
4729         insns, schedule them early.  Adjust whitespace.
4730         (set_priorities): Check for boundary debug insns.
4731         (add_jump_dependencies): Use dep_list_size.
4732         (prev_non_location_insn): New.
4733         (check_cfg): Use it.
4734         * tree-ssa-loop-ivopts.c (find-interesting_users): Skip debug
4735         stmts.
4736         (remove_unused_ivs): Reset debug stmts.
4737         * modulo-sched.c (const_iteration_count): Skip debug insns.
4738         (res_MII): Discount debug insns.
4739         (loop_single_full_bb_p): Skip debug insns.
4740         (sms_schedule): Likewise.
4741         (sms_schedule_by_order): Likewise.
4742         (ps_has_conflicts): Likewise.
4743         * caller-save.c (refmarker_fn): New.
4744         (save_call_clobbered_regs): Replace regs with saved mem in
4745         debug insns.
4746         (mark_referenced_regs): Take pointer, mark and arg.  Adjust.
4747         Call refmarker_fn mark for hardregnos.
4748         (mark_reg_as_referenced): New.
4749         (replace_reg_with_saved_mem): New.
4750         * ipa-pure-const.c (check_stmt): Skip debug stmts.
4751         * cse.c (cse_insn): Canonicalize debug insns.  Skip them when
4752         searching back.
4753         (cse_extended_basic_block): Skip debug insns.
4754         (count_reg_usage): Likewise.
4755         (is_dead_reg): New, split out of...
4756         (set_live_p): ... here.
4757         (insn_live_p): Use it for debug insns.
4758         * tree-stdarg.c (check_all_va_list_escapes): Skip debug stmts.
4759         (execute_optimize_stdarg): Likewise.
4760         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
4761         * tree-ssa-propagate.c (substitute_and_fold): Don't regard
4762         changes in debug stmts as changes.
4763         * sel-sched.c (moving_insn_creates_bookkeeping_block_p): New.
4764         (moveup_expr): Don't move across debug insns.  Don't move
4765         debug insn if it would create a bookkeeping block.
4766         (moveup_expr_cached): Don't use cache for debug insns that
4767         are heads of blocks.
4768         (compute_av_set_inside_bb): Skip debug insns.
4769         (sel_rank_for_schedule): Schedule debug insns first.  Remove
4770         dead code.
4771         (block_valid_for_bookkeeping_p); Support lax searches.
4772         (create_block_for_bookkeeping): Adjust block numbers when
4773         encountering debug-only blocks.
4774         (find_place_for_bookkeeping): Deal with debug-only blocks.
4775         (generate_bookkeeping_insn): Accept no place to insert.
4776         (remove_temp_moveop_nops): New argument full_tidying.
4777         (prepare_place_to_insert): Deal with debug insns.
4778         (advance_state_on_fence): Debug insns don't start cycles.
4779         (update_boundaries): Take fence as argument.  Deal with
4780         debug insns.
4781         (schedule_expr_on_boundary): No full_tidying on debug insns.
4782         (fill_insns): Deal with debug insns.
4783         (track_scheduled_insns_and_blocks): Don't count debug insns.
4784         (need_nop_to_preserve_insn_bb): New, split out of...
4785         (remove_insn_from_stream): ... this.
4786         (fur_orig_expr_not_found): Skip debug insns.
4787         * rtl.def (VALUE): Move up.
4788         (DEBUG_INSN): New.
4789         * tree-ssa-sink.c (all_immediate_uses_same_place): Skip debug stmts.
4790         (nearest_common_dominator_of_uses): Take debug_stmts argument.
4791         Set it if debug stmts are found.
4792         (statement_sink_location): Skip debug stmts.  Propagate
4793         moving defs into debug stmts.
4794         * ifcvt.c (first_active_insn): Skip debug insns.
4795         (last_active_insns): Likewise.
4796         (cond_exec_process_insns): Likewise.
4797         (noce_process_if_block): Likewise.
4798         (check_cond_move_block): Likewise.
4799         (cond_move_convert_if_block): Likewise.
4800         (block_jumps_and_fallthru_p): Likewise.
4801         (dead_or_predicable): Likewise.
4802         * dwarf2out.c (debug_str_hash_forced): New.
4803         (find_AT_string): Add comment.
4804         (gen_label_for_indirect_string): New.
4805         (get_debug_string_label): New.
4806         (AT_string_form): Use it.
4807         (mem_loc_descriptor): Handle non-TLS symbols.  Handle MINUS , DIV,
4808         MOD, AND, IOR, XOR, NOT, ABS, NEG, and CONST_STRING.  Accept but
4809         discard COMPARE, IF_THEN_ELSE, ROTATE, ROTATERT, TRUNCATE and
4810         several operations that cannot be represented with DWARF opcodes.
4811         (loc_descriptor): Ignore SIGN_EXTEND and ZERO_EXTEND.  Require
4812         dwarf_version 4 for DW_OP_implicit_value and DW_OP_stack_value.
4813         (dwarf2out_var_location): Take during-call mark into account.
4814         (output_indirect_string): Update comment.  Output if there are
4815         label and references.
4816         (prune_indirect_string): New.
4817         (prune_unused_types): Call it if debug_str_hash_forced.
4818         More in dwarf2out.c, from Jakub Jelinek <jakub@redhat.com>:
4819         (dw_long_long_const): Remove.
4820         (struct dw_val_struct): Change val_long_long type to rtx.
4821         (print_die, attr_checksum, same_dw_val_p, loc_descriptor): Adjust for
4822         val_long_long change to CONST_DOUBLE rtx from a long hi/lo pair.
4823         (output_die): Likewise.  Use HOST_BITS_PER_WIDE_INT size of each
4824         component instead of HOST_BITS_PER_LONG.
4825         (output_loc_operands): Likewise.  For const8* assert
4826         HOST_BITS_PER_WIDE_INT rather than HOST_BITS_PER_LONG is >= 64.
4827         (output_loc_operands_raw): For const8* assert HOST_BITS_PER_WIDE_INT
4828         rather than HOST_BITS_PER_LONG is >= 64.
4829         (add_AT_long_long): Remove val_hi and val_lo arguments, add
4830         val_const_double.
4831         (size_of_die): Use HOST_BITS_PER_WIDE_INT size multiplier instead of
4832         HOST_BITS_PER_LONG for dw_val_class_long_long.
4833         (add_const_value_attribute): Adjust add_AT_long_long caller.  Don't
4834         handle TLS SYMBOL_REFs.  If CONST wraps a constant, tail recurse.
4835         (dwarf_stack_op_name): Handle DW_OP_implicit_value and
4836         DW_OP_stack_value.
4837         (size_of_loc_descr, output_loc_operands, output_loc_operands_raw):
4838         Handle DW_OP_implicit_value.
4839         (extract_int): Move prototype earlier.
4840         (mem_loc_descriptor): For SUBREG punt if inner
4841         mode size is wider than DWARF2_ADDR_SIZE.  Handle SIGN_EXTEND
4842         and ZERO_EXTEND by DW_OP_shl and DW_OP_shr{a,}.  Handle
4843         EQ, NE, GT, GE, LT, LE, GTU, GEU, LTU, LEU, SMIN, SMAX, UMIN,
4844         UMAX, SIGN_EXTRACT, ZERO_EXTRACT.
4845         (loc_descriptor): Compare mode size with DWARF2_ADDR_SIZE
4846         instead of Pmode size.
4847         (loc_descriptor): Add MODE argument.  Handle CONST_INT, CONST_DOUBLE,
4848         CONST_VECTOR, CONST, LABEL_REF and SYMBOL_REF if mode != VOIDmode,
4849         attempt to handle other expressions.  Don't handle TLS SYMBOL_REFs.
4850         (concat_loc_descriptor, concatn_loc_descriptor,
4851         loc_descriptor_from_tree_1): Adjust loc_descriptor callers.
4852         (add_location_or_const_value_attribute): Likewise.  For single
4853         location loc_lists attempt to use add_const_value_attribute
4854         for constant decls.  Add DW_AT_const_value even if
4855         NOTE_VAR_LOCATION is VAR_LOCATION with CONSTANT_P or CONST_STRING
4856         in its expression.
4857         * cfgbuild.c (inside_basic_block_p): Handle debug insns.
4858         (control_flow_insn_p): Likewise.
4859         * tree-parloops.c (eliminate_local_variables_stmt): Handle debug stmt.
4860         (separate_decls_in_region_debug_bind): New.
4861         (separate_decls_in_region): Process debug bind stmts afterwards.
4862         * recog.c (verify_changes): Handle debug insns.
4863         (extract_insn): Likewise.
4864         (peephole2_optimize): Skip debug insns.
4865         * dse.c (scan_insn): Skip debug insns.
4866         * sel-sched-ir.c (return_nop_to_pool): Take full_tidying argument.
4867         Pass it on.
4868         (setup_id_for_insn): Handle debug insns.
4869         (maybe_tidy_empty_bb): Adjust whitespace.
4870         (tidy_control_flow): Skip debug insns.
4871         (sel_remove_insn): Adjust for debug insns.
4872         (sel_estimate_number_of_insns): Skip debug insns.
4873         (create_insn_rtx_from_pattern): Handle debug insns.
4874         (create_copy_of_insn_rtx): Likewise.
4875         * sel-sched-.h (sel_bb_end): Declare.
4876         (sel_bb_empty_or_nop_p): New.
4877         (get_all_loop_exits): Use it.
4878         (_eligible_successor_edge_p): Likewise.
4879         (return_nop_to_pool): Adjust.
4880         * tree-eh.c (tre_empty_eh_handler_p): Skip debug stmts.
4881         * ira-lives.c (process_bb_node_lives): Skip debug insns.
4882         * gimple-pretty-print.c (dump_gimple_debug): New.
4883         (dump_gimple_stmt): Use it.
4884         (dump_bb_header): Skip gimple debug stmts.
4885         * regmove.c (optimize_reg_copy_1): Discount debug insns.
4886         (fixup_match_2): Likewise.
4887         (regmove_backward_pass): Likewise.  Simplify combined
4888         replacement.  Handle debug insns.
4889         * function.c (instantiate_virtual_regs): Handle debug insns.
4890         * function.h (struct emit_status): Add x_cur_debug_insn_uid.
4891         * print-rtl.h: Include cselib.h.
4892         (print_rtx): Print VALUEs.  Split out and recurse for VAR_LOCATIONs.
4893         * df.h (df_inns_rescan_debug_internal): Declare.
4894         * gcse.c (alloc_hash_table): Estimate n_insns.
4895         (cprop_insn): Don't regard debug insns as changes.
4896         (bypass_conditional_jumps): Skip debug insns.
4897         (one_pre_gcse_pass): Adjust.
4898         (one_code_hoisting_pass): Likewise.
4899         (compute_ld_motion_mems): Skip debug insns.
4900         (one_cprop_pass): Adjust.
4901         * tree-if-conv.c (tree_if_convert_stmt): Reset debug stmts.
4902         (if_convertible_stmt_p): Handle debug stmts.
4903         * init-regs.c (initialize_uninitialized_regs): Skip debug insns.
4904         * tree-vect-loop.c (vect_is_simple_reduction): Skip debug stmts.
4905         * ira-build.c (create_bb_allocnos): Skip debug insns.
4906         * tree-flow-inline.h (has_zero_uses): Discount debug stmts.
4907         (has_single_use): Likewise.
4908         (single_imm_use): Likewise.
4909         (num_imm_uses): Likewise.
4910         * tree-ssa-phiopt.c (empty_block_p): Skip debug stmts.
4911         * tree-ssa-coalesce.c (build_ssa_conflict_graph): Skip debug stmts.
4912         (create_outofssa_var_map): Likewise.
4913         * lower-subreg.c (adjust_decomposed_uses): New.
4914         (resolve_debug): New.
4915         (decompose_multiword_subregs): Use it.
4916         * tree-dfa.c (find_referenced_vars): Skip debug stmts.
4917         * emit-rtl.c: Include params.h.
4918         (cur_debug_insn_uid): Define.
4919         (set_new_first_and_last_insn): Set cur_debug_insn_uid too.
4920         (copy_rtx_if_shared_1): Handle debug insns.
4921         (reset_used_flags): Likewise.
4922         (set_used_flags): LIkewise.
4923         (get_max_insn_count): New.
4924         (next_nondebug_insn): New.
4925         (prev_nondebug_insn): New.
4926         (make_debug_insn_raw): New.
4927         (emit_insn_before_noloc): Handle debug insns.
4928         (emit_jump_insn_before_noloc): Likewise.
4929         (emit_call_insn_before_noloc): Likewise.
4930         (emit_debug_insn_before_noloc): New.
4931         (emit_insn_after_noloc): Handle debug insns.
4932         (emit_jump_insn_after_noloc): Likewise.
4933         (emit_call_insn_after_noloc): Likewise.
4934         (emit_debug_insn_after_noloc): Likewise.
4935         (emit_insn_after): Take loc from earlier non-debug insn.
4936         (emit_jump_insn_after): Likewise.
4937         (emit_call_insn_after): Likewise.
4938         (emit_debug_insn_after_setloc): New.
4939         (emit_debug_insn_after): New.
4940         (emit_insn_before): Take loc from later non-debug insn.
4941         (emit_jump_insn_before): Likewise.
4942         (emit_call_insn_before): Likewise.
4943         (emit_debug_insn_before_setloc): New.
4944         (emit_debug_insn_before): New.
4945         (emit_insn): Handle debug insns.
4946         (emit_debug_insn): New.
4947         (emit_jump_insn): Handle debug insns.
4948         (emit_call_insn): Likewise.
4949         (emit): Likewise.
4950         (init_emit): Take min-nondebug-insn-uid into account.
4951         Initialize cur_debug_insn_uid.
4952         (emit_copy_of_insn_after): Handle debug insns.
4953         * cfgexpand.c (gimple_assign_rhs_to_tree): Do not overwrite
4954         location of single rhs in place.
4955         (maybe_dump_rtl_for_gimple_stmt): Dump lineno.
4956         (floor_sdiv_adjust): New.
4957         (cell_sdiv_adjust): New.
4958         (cell_udiv_adjust): New.
4959         (round_sdiv_adjust): New.
4960         (round_udiv_adjust): New.
4961         (wrap_constant): Moved from cselib.
4962         (unwrap_constant): New.
4963         (expand_debug_expr): New.
4964         (expand_debug_locations): New.
4965         (expand_gimple_basic_block): Drop hiding redeclaration.  Expand
4966         debug bind stmts.
4967         (gimple_expand_cfg): Expand debug locations.
4968         * cselib.c: Include tree-pass.h.
4969         (struct expand_value_data): New.
4970         (cselib_record_sets_hook): New.
4971         (PRESERVED_VALUE_P, LONG_TERM_PRESERVED_VALUE_P): New.
4972         (cselib_clear_table): Move, and implemnet in terms of...
4973         (cselib_reset_table_with_next_value): ... this.
4974         (cselib_get_next_unknown_value): New.
4975         (discard_useless_locs): Don't discard preserved values.
4976         (cselib_preserve_value): New.
4977         (cselib_preserved_value_p): New.
4978         (cselib_preserve_definitely): New.
4979         (cselib_clear_preserve): New.
4980         (cselib_preserve_only_values): New.
4981         (new_cselib_val): Take rtx argument.  Dump it in details.
4982         (cselib_lookup_mem): Adjust.
4983         (expand_loc): Take regs_active in struct.  Adjust.  Silence
4984         dumps unless details are requested.
4985         (cselib_expand_value_rtx_cb): New.
4986         (cselib_expand_value_rtx): Rename and reimplment in terms of...
4987         (cselib_expand_value_rtx_1): ... this.  Adjust.  Silence dumps
4988         without details.  Copy more subregs.  Try to resolve values
4989         using a callback.  Wrap constants.
4990         (cselib_subst_to_values): Adjust.
4991         (cselib_log_lookup): New.
4992         (cselib_lookup): Call it.
4993         (cselib_invalidate_regno): Don't count preserved values as useless.
4994         (cselib_invalidate_mem): Likewise.
4995         (cselib_record_set): Likewise.
4996         (struct set): Renamed to cselib_set, moved to cselib.h.
4997         (cselib_record_sets): Adjust.  Call hook.
4998         (cselib_process_insn): Reset table when it would be cleared.
4999         (dump_cselib_val): New.
5000         (dump_cselib_table): New.
5001         * tree-cfgcleanup.c (tree_forwarded_block_p): Skip debug stmts.
5002         (remove_forwarder_block): Support moving debug stmts.
5003         * cselib.h (cselib_record_sets_hook): Declare.
5004         (cselib_expand_callback): New type.
5005         (cselib_expand_value_rtx_cb): Declare.
5006         (cselib_reset_table_with_next_value): Declare.
5007         (cselib_get_next_unknown_value): Declare.
5008         (cselib_preserve_value): Declare.
5009         (cselib_preserved_value_p): Declare.
5010         (cselib_preserve_only_values): Declare.
5011         (dump_cselib_table): Declare.
5012         * cfgcleanup.c (flow_find_cross_jump): Skip debug insns.
5013         (try_crossjump_to_edge): Likewise.
5014         (delete_unreachable_blocks): Remove dominant GIMPLE blocks after
5015         dominated blocks when debug stmts are present.
5016         * simplify-rtx.c (delegitimize_mem_from_attrs): New.
5017         * tree-ssa-live.c (remove_unused_locals): Skip debug stmts.
5018         (set_var_live_on_entry): Likewise.
5019         * loop-invariant.c (find_invariants_bb): Skip debug insns.
5020         * cfglayout.c (curr_location, last_location): Make static.
5021         (set_curr_insn_source_location): Don't avoid bouncing.
5022         (get_curr_insn_source_location): New.
5023         (get_curr_insn_block): New.
5024         (duplicate_insn_chain): Handle debug insns.
5025         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Propagate
5026         into debug stmts.
5027         * common.opt (fcompare-debug): Move to sort order.
5028         (fdump-unnumbered-links): Likewise.
5029         (fvar-tracking-assignments): New.
5030         (fvar-tracking-assignments-toggle): New.
5031         * tree-ssa-dce.c (mark_stmt_necessary): Don't mark blocks
5032         because of debug stmts.
5033         (mark_stmt_if_obviously_necessary): Mark debug stmts.
5034         (eliminate_unnecessary_stmts): Walk dominated blocks before
5035         dominators.
5036         * tree-ssa-ter.c (find_replaceable_in_bb): Skip debug stmts.
5037         * ira.c (memref_used_between_p): Skip debug insns.
5038         (update_equiv_regs): Likewise.
5039         * sched-deps.c (sd_lists_size): Accept empty list.
5040         (sd_init_insn): Mark debug insns.
5041         (sd_finish_insn): Unmark them.
5042         (sd_add_dep): Reject non-debug deps on debug insns.
5043         (fixup_sched_groups): Give debug insns group treatment.
5044         Skip debug insns.
5045         (sched_analyze_reg): Don't mark debug insns for sched before call.
5046         (sched_analyze_2): Handle debug insns.
5047         (sched_analyze_insn): Compute next non-debug insn.  Handle debug
5048         insns.
5049         (deps_analyze_insn): Handle debug insns.
5050         (deps_start_bb): Skip debug insns.
5051         (init_deps): Initialize last_debug_insn.
5052         * tree-ssa.c (target_for_debug_bind): New.
5053         (find_released_ssa_name): New.
5054         (propagate_var_def_into_debug_stmts): New.
5055         (propagate_defs_into_debug_stmts): New.
5056         (verify_ssa): Skip debug bind stmts without values.
5057         (warn_uninialized_vars): Skip debug stmts.
5058         * target-def.h (TARGET_DELEGITIMIZE_ADDRESS): Set default.
5059         * rtl.c (rtx_equal_p_cb): Handle VALUEs.
5060         (rtx_equal_p): Likewise.
5061         * ira-costs.c (scan_one_insn): Skip debug insns.
5062         (process_bb_node_for_hard_reg_moves): Likewise.
5063         * rtl.h (DEBUG_INSN_P): New.
5064         (NONDEBUG_INSN_P): New.
5065         (MAY_HAVE_DEBUG_INSNS): New.
5066         (INSN_P): Accept debug insns.
5067         (RTX_FRAME_RELATED_P): Likewise.
5068         (INSN_DELETED_P): Likewise
5069         (PAT_VAR_LOCATION_DECL): New.
5070         (PAT_VAR_LOCATION_LOC): New.
5071         (PAT_VAR_OCATION_STATUS): New.
5072         (NOTE_VAR_LOCATION_DECL): Reimplement.
5073         (NOTE_VAR_LOCATION_LOC): Likewise.
5074         (NOTE_VAR_LOCATION_STATUS): Likewise.
5075         (INSN_VAR_LOCATION): New.
5076         (INSN_VAR_LOCATION_DECL): New.
5077         (INSN_VAR_LOCATION_LOC): New.
5078         (INSN_VAR_LOCATION_STATUS): New.
5079         (gen_rtx_UNKNOWN_VAR_LOC): New.
5080         (VAR_LOC_UNKNOWN_P): New.
5081         (NOTE_DURING_CALL_P): New.
5082         (SCHED_GROUP_P): Accept debug insns.
5083         (emit_debug_insn_before): Declare.
5084         (emit_debug_insn_before_noloc): Declare.
5085         (emit_debug_insn_beore_setloc): Declare.
5086         (emit_debug_insn_after): Declare.
5087         (emit_debug_insn_after_noloc): Declare.
5088         (emit_debug_insn_after_setloc): Declare.
5089         (emit_debug_insn): Declare.
5090         (make_debug_insn_raw): Declare.
5091         (prev_nondebug_insn): Declare.
5092         (next_nondebug_insn): Declare.
5093         (delegitimize_mem_from_attrs): Declare.
5094         (get_max_insn_count): Declare.
5095         (wrap_constant): Declare.
5096         (unwrap_constant): Declare.
5097         (get_curr_insn_source_location): Declare.
5098         (get_curr_insn_block): Declare.
5099         * tree-inline.c (insert_debug_decl_map): New.
5100         (processing_debug_stmt): New.
5101         (remap_decl): Don't create new mappings in debug stmts.
5102         (remap_gimple_op_r): Don't add references in debug stmts.
5103         (copy_tree_body_r): Likewise.
5104         (remap_gimple_stmt): Handle debug bind stmts.
5105         (copy_bb): Skip debug stmts.
5106         (copy_edges_for_bb): Likewise.
5107         (copy_debug_stmt): New.
5108         (copy_debug_stmts): New.
5109         (copy_body): Copy debug stmts at the end.
5110         (insert_init_debug_bind): New.
5111         (insert_init_stmt): Take id.  Skip and emit debug stmts.
5112         (setup_one_parameter): Remap variable earlier, register debug mapping.
5113         (estimate_num_insns): Skip debug stmts.
5114         (expand_call_inline): Preserve debug_map.
5115         (optimize_inline_calls): Check for no debug_stmts left-overs.
5116         (unsave_expr_now): Preserve debug_map.
5117         (copy_gimple_seq_and_replace_locals): Likewise.
5118         (tree_function_versioning): Check for no debug_stmts left-overs.
5119         Init and destroy debug_map as needed.  Split edges unconditionally.
5120         (build_duplicate_type): Init and destroy debug_map as needed.
5121         * tree-inline.h: Include gimple.h instead of pointer-set.h.
5122         (struct copy_body_data): Add debug_stmts and debug_map.
5123         * sched-int.h (struct ready_list): Add n_debug.
5124         (struct deps): Add last_debug_insn.
5125         (DEBUG_INSN_SCHED_P): New.
5126         (BOUNDARY_DEBUG_INSN_P): New.
5127         (SCHEDULE_DEBUG_INSN_P): New.
5128         (sd_iterator_cond): Accept empty list.
5129         * combine.c (create_log_links): Skip debug insns.
5130         (combine_instructions): Likewise.
5131         (cleanup_auto_inc_dec): New.  From Jakub Jelinek: Make sure the
5132         return value is always unshared.
5133         (struct rtx_subst_pair): New.
5134         (auto_adjust_pair): New.
5135         (propagate_for_debug_subst): New.
5136         (propagate_for_debug): New.
5137         (try_combine): Skip debug insns.  Propagate removed defs into
5138         debug insns.
5139         (next_nonnote_nondebug_insn): New.
5140         (distribute_notes): Use it.  Skip debug insns.
5141         (distribute_links): Skip debug insns.
5142         * tree-outof-ssa.c (set_location_for_edge): Likewise.
5143         * resource.c (mark_target_live_regs): Likewise.
5144         * var-tracking.c: Include cselib.h and target.h.
5145         (enum micro_operation_type): Add MO_VAL_USE, MO_VAL_LOC, and
5146         MO_VAL_SET.
5147         (micro_operation_type_name): New.
5148         (enum emit_note_where): Add EMIT_NOTE_AFTER_CALL_INSN.
5149         (struct micro_operation_def): Update comments.
5150         (decl_or_value): New type.  Use instead of decls.
5151         (struct emit_note_data_def): Add vars.
5152         (struct attrs_def): Use decl_or_value.
5153         (struct variable_tracking_info_def): Add permp, flooded.
5154         (struct location_chain_def): Update comment.
5155         (struct variable_part_def): Use decl_or_value.
5156         (struct variable_def): Make var_part a variable length array.
5157         (valvar_pool): New.
5158         (scratch_regs): New.
5159         (cselib_hook_called): New.
5160         (dv_is_decl_p): New.
5161         (dv_is_value_p): New.
5162         (dv_as_decl): New.
5163         (dv_as_value): New.
5164         (dv_as_opaque): New.
5165         (dv_onepart_p): New.
5166         (dv_pool): New.
5167         (IS_DECL_CODE): New.
5168         (check_value_is_not_decl): New.
5169         (dv_from_decl): New.
5170         (dv_from_value): New.
5171         (dv_htab_hash): New.
5172         (variable_htab_hash): Use it.
5173         (variable_htab_eq): Support values.
5174         (variable_htab_free): Free from the right pool.
5175         (attrs_list_member, attrs_list_insert): Use decl_or_value.
5176         (attrs_list_union): Adjust.
5177         (attrs_list_mpdv_union): New.
5178         (tie_break_pointers): New.
5179         (canon_value_cmp): New.
5180         (unshare_variable): Return possibly-modified slot.
5181         (vars_copy_1): Adjust.
5182         (var_reg_decl_set): Adjust.  Split out of...
5183         (var_reg_set): ... this.
5184         (get_init_value): Adjust.
5185         (var_reg_delete_and_set): Adjust.
5186         (var_reg_delete): Adjust.
5187         (var_regno_delete): Adjust.
5188         (var_mem_decl_set): Split out of...
5189         (var_mem_set): ... this.
5190         (var_mem_delete_and_set): Adjust.
5191         (var_mem_delete): Adjust.
5192         (val_store): New.
5193         (val_reset): New.
5194         (val_resolve): New.
5195         (variable_union): Adjust.  Speed up merge of 1-part vars.
5196         (variable_canonicalize): Use unshared slot.
5197         (VALUED_RECURSED_INTO): New.
5198         (find_loc_in_1pdv): New.
5199         (struct dfset_merge): New.
5200         (insert_into_intersection): New.
5201         (intersect_loc_chains): New.
5202         (loc_cmp): New.
5203         (canonicalize_loc_order_check): New.
5204         (canonicalize_values_mark): New.
5205         (canonicalize_values_star): New.
5206         (variable_merge_over_cur): New.
5207         (variable_merge_over_src): New.
5208         (dataflow_set_merge): New.
5209         (dataflow_set_equiv_regs): New.
5210         (remove_duplicate_values): New.
5211         (struct dfset_post_merge): New.
5212         (variable_post_merge_new_vals): New.
5213         (variable_post_merge_perm_vals): New.
5214         (dataflow_post_merge_adjust): New.
5215         (find_mem_expr_in_1pdv): New.
5216         (dataflow_set_preserve_mem_locs): New.
5217         (dataflow_set_remove_mem_locs): New.
5218         (dataflow_set_clear_at_call): New.
5219         (onepart_variable_different_p): New.
5220         (variable_different_p): Use it.
5221         (dataflow_set_different_1): Adjust.  Make detailed dump more verbose.
5222         (track_expr_p): Add need_rtl parameter.  Don't generate rtl
5223         if not needed.
5224         (track_loc_p): Pass it true.
5225         (struct count_use_info): New.
5226         (find_use_val): New.
5227         (replace_expr_with_values): New.
5228         (log_op_type): New.
5229         (use_type): New, partially split out of...
5230         (count_uses): ... this.  Count new micro-ops.
5231         (count_uses_1): Adjust.
5232         (count_stores): Adjust.
5233         (count_with_sets): New.
5234         (VAL_NEEDS_RESOLUTION): New.
5235         (VAL_HOLDS_TRACK_EXPR): New.
5236         (VAL_EXPR_IS_COPIED): New.
5237         (VAL_EXPR_IS_CLOBBERED): New.
5238         (add_uses): Adjust.  Generate new micro-ops.
5239         (add_uses_1): Adjust.
5240         (add_stores): Generate new micro-ops.
5241         (add_with_sets): New.
5242         (find_src_status): Adjust.
5243         (find_src_set_src): Adjust.
5244         (compute_bb_dataflow): Use dataflow_set_clear_at_call.
5245         Handle new micro-ops.  Canonicalize value equivalances.
5246         (vt_find_locations): Compute total size of hash tables for
5247         dumping.  Perform merge for var-tracking-assignments.  Don't
5248         disregard single-block loops.
5249         (dump_attrs_list): Handle decl_or_value.
5250         (dump_variable): Take variable.  Deal with decl_or_value.
5251         (dump_variable_slot): New.
5252         (dump_vars): Use it.
5253         (dump_dataflow_sets): Adjust.
5254         (set_slot_part): New, extended to support one-part variables
5255         after splitting out of...
5256         (set_variable_part): ... this.
5257         (clobber_slot_part): New, split out of...
5258         (clobber_variable_part): ... this.
5259         (delete_slot_part): New, split out of...
5260         (delete_variable_part): .... this.
5261         (check_wrap_constant): New.
5262         (vt_expand_loc_callback): New.
5263         (vt_expand_loc): New.
5264         (emit_note_insn_var_location): Adjust.  Handle values.  Handle
5265         EMIT_NOTE_AFTER_CALL_INSN.
5266         (emit_notes_for_differences_1): Adjust.  Handle values.
5267         (emit_notes_for_differences_2): Likewise.
5268         (emit_notes_for_differences): Adjust.
5269         (emit_notes_in_bb): Take pointer to set.  Emit AFTER_CALL_INSN notes.
5270         Adjust.  Handle new micro-ops.
5271         (vt_add_function_parameters): Adjust.  Create and bind values.
5272         (vt_initialize): Adjust.  Initialize scratch_regs and
5273         valvar_pool, flooded and perm..  Initialize and use cselib.  Log
5274         operations.  Move some code to count_with_sets and add_with_sets.
5275         (delete_debug_insns): New.
5276         (vt_debug_insns_local): New.
5277         (vt_finalize): Release permp, valvar_pool, scratch_regs.  Finish
5278         cselib.
5279         (var_tracking_main): If var-tracking-assignments is enabled
5280         but var-tracking isn't, delete debug insns and leave.  Likewise
5281         if we exceed limits or fail the stack adjustments tests, and
5282         after all var-tracking processing.
5283         More in var-tracking, from Jakub Jelinek <jakub@redhat.com>:
5284         (dataflow_set): Add traversed_vars.
5285         (value_chain, const_value_chain): New typedefs.
5286         (value_chain_pool, value_chains): New variables.
5287         (value_chain_htab_hash, value_chain_htab_eq, add_value_chain,
5288         add_value_chains, add_cselib_value_chains, remove_value_chain,
5289         remove_value_chains, remove_cselib_value_chains): New functions.
5290         (shared_hash_find_slot_unshare_1, shared_hash_find_slot_1,
5291         shared_hash_find_slot_noinsert_1, shared_hash_find_1): New
5292         static inlines.
5293         (shared_hash_find_slot_unshare, shared_hash_find_slot,
5294         shared_hash_find_slot_noinsert, shared_hash_find): Update.
5295         (dst_can_be_shared): New variable.
5296         (unshare_variable): Unshare set->vars if shared, use shared_hash_*.
5297         Clear dst_can_be_shared.  If set->traversed_vars is non-NULL and
5298         different from set->vars, look up slot again instead of using the
5299         passed in slot.
5300         (dataflow_set_init): Initialize traversed_vars.
5301         (variable_union): Use shared_hash_*.  Use initially NO_INSERT
5302         lookup if set->vars is shared.  Don't keep slot cleared before
5303         calling unshare_variable.  Unshare set->vars if needed.  Adjust
5304         unshare_variable callers.  Clear dst_can_be_shared if needed.
5305         Even ->refcount == 1 vars must be unshared if set->vars is shared
5306         and var needs to be modified.
5307         (dataflow_set_union): Set traversed_vars during canonicalization.
5308         (VALUE_CHANGED, DECL_CHANGED): Define.
5309         (set_dv_changed, dv_changed_p): New static inlines.
5310         (track_expr_p): Clear DECL_CHANGED.
5311         (dump_dataflow_sets): Set it.
5312         (variable_was_changed): Call set_dv_changed.
5313         (emit_note_insn_var_location): Likewise.
5314         (changed_variables_stack): New variable.
5315         (check_changed_vars_1, check_changed_vars_2): New functions.
5316         (emit_notes_for_changes): Do nothing if changed_variables is
5317         empty.  Traverse changed_variables with check_changed_vars_1,
5318         call check_changed_vars_2 on each changed_variables_stack entry.
5319         (emit_notes_in_bb): Add SET argument.  Just clear it at the
5320         beginning, use it instead of local &set, don't destroy it at the end.
5321         (vt_emit_notes): Call dataflow_set_clear early on all
5322         VTI(bb)->out sets, never use them, instead use emit_notes_in_bb
5323         computed set, dataflow_set_clear also VTI(bb)->in when we are
5324         done with the basic block.  Initialize changed_variables_stack,
5325         free it afterwards.  If ENABLE_CHECKING verify that after noting
5326         differences to an empty set value_chains hash table is empty.
5327         (vt_initialize): Initialize value_chains and value_chain_pool.
5328         (vt_finalize): Delete value_chains htab, free value_chain_pool.
5329         (variable_tracking_main): Call dump_dataflow_sets before calling
5330         vt_emit_notes, not after it.
5331         * tree-flow.h (propagate_defs_into_debug_stmts): Declare.
5332         (propagate_var_def_into_debug_stmts): Declare.
5333         * df-problems.c (df_lr_bb_local_compute): Skip debug insns.
5334         (df_set_note): Reject debug insns.
5335         (df_whole_mw_reg_dead_p): Take added_notes_p argument.  Don't
5336         add notes to debug insns.
5337         (df_note_bb_compute): Adjust.  Likewise.
5338         (df_simulate_uses): Skip debug insns.
5339         (df_simulate_initialize_backwards): Likewise.
5340         * reg-stack.c (subst_stack_regs_in_debug_insn): New.
5341         (subst_stack_regs_pat): Reject debug insns.
5342         (convert_regs_1): Handle debug insns.
5343         * Makefile.in (TREE_INLINE_H): Take pointer-set.h from GIMPLE_H.
5344         (print-rtl.o): Depend on cselib.h.
5345         (cselib.o): Depend on TREE_PASS_H.
5346         (var-tracking.o): Depend on cselib.h and TARGET_H.
5347         * sched-rgn.c (rgn_estimate_number_of_insns): Discount debug insns.
5348         (init_ready_list): Skip boundary debug insns.
5349         (add_branch_dependences): Skip debug insns.
5350         (free_block_dependencies): Check for blocks with only debug insns.
5351         (compute_priorities): Likewise.
5352         * gimple.c (gss_for_code): Handle GIMPLE_DEBUG.
5353         (gimple_build_with_ops_stat): Take subcode as unsigned.  Adjust
5354         all callers.
5355         (gimple_build_debug_bind_stat): New.
5356         (empty_body_p): Skip debug stmts.
5357         (gimple_has_side_effects): Likewise.
5358         (gimple_rhs_has_side_effects): Likewise.
5359         * gimple.h (enum gimple_debug_subcode, GIMPLE_DEBUG_BIND): New.
5360         (gimple_build_debug_bind_stat): Declare.
5361         (gimple_build_debug_bind): Define.
5362         (is_gimple_debug): New.
5363         (gimple_debug_bind_p): New.
5364         (gimple_debug_bind_get_var): New.
5365         (gimple_debug_bind_get_value): New.
5366         (gimple_debug_bind_get_value_ptr): New.
5367         (gimple_debug_bind_set_var): New.
5368         (gimple_debug_bind_set_value): New.
5369         (GIMPLE_DEBUG_BIND_NOVALUE): New internal temporary macro.
5370         (gimple_debug_bind_reset_value): New.
5371         (gimple_debug_bind_has_value_p): New.
5372         (gsi_next_nondebug): New.
5373         (gsi_prev_nondebug): New.
5374         (gsi_start_nondebug_bb): New.
5375         (gsi_last_nondebug_bb): New.
5376         * sched-vis.c (print_pattern): Handle VAR_LOCATION.
5377         (print_insn): Handle DEBUG_INSN.
5378         * tree-cfg.c (remove_bb): Walk stmts backwards.  Let loc
5379         of first insn prevail.
5380         (first_stmt): Skip debug stmts.
5381         (first_non_label_stmt): Likewise.
5382         (last_stmt): Likewise.
5383         (has_zero_uses_1): New.
5384         (single_imm_use_1): New.
5385         (verify_gimple_debug): New.
5386         (verify_types_in_gimple_stmt): Handle debug stmts.
5387         (verify_stmt): Likewise.
5388         (debug_loop_num): Skip debug stmts.
5389         (remove_edge_and_dominated_blocks): Remove dominators last.
5390         * tree-ssa-reasssoc.c (rewrite_expr_tree): Propagate into debug stmts.
5391         (linearize_expr): Likewise.
5392         * config/i386/i386.c (ix86_delegitimize_address): Call
5393         default implementation.
5394         * config/ia64/ia64.c (ia64_safe_itanium_class): Handle debug insns.
5395         (group_barrier_needed): Skip debug insns.
5396         (emit_insn_group_barriers): Likewise.
5397         (emit_all_insn_group_barriers): Likewise.
5398         (ia64_variable_issue): Handle debug insns.
5399         (ia64_dfa_new_cycle): Likewise.
5400         (final_emit_insn_group_barriers): Skip debug insns.
5401         (ia64_dwarf2out_def_steady_cfa): Take frame argument.  Don't
5402         def cfa without frame.
5403         (process_set): Likewise.
5404         (process_for_unwind_directive): Pass frame on.
5405         * config/rs6000/rs6000.c (TARGET_DELEGITIMIZE_ADDRESS): Define.
5406         (rs6000_delegitimize_address): New.
5407         (rs6000_debug_adjust_cost): Handle debug insns.
5408         (is_microcoded_insn): Likewise.
5409         (is_cracked_insn): Likewise.
5410         (is_nonpipeline_insn): Likewise.
5411         (insn_must_be_first_in_group): Likewise.
5412         (insn_must_be_last_in_group): Likewise.
5413         (force_new_group): Likewise.
5414         * cfgrtl.c (rtl_split_block): Emit INSN_DELETED note if block
5415         contains only debug insns.
5416         (rtl_merge_blocks): Skip debug insns.
5417         (purge_dead_edges): Likewise.
5418         (rtl_block_ends_with_call_p): Skip debug insns.
5419         * dce.c (deletable_insn_p): Handle VAR_LOCATION.
5420         (mark_reg_dependencies): Skip debug insns.
5421         * params.def (PARAM_MIN_NONDEBUG_INSN_UID): New.
5422         * tree-ssanames.c (release_ssa_name): Propagate def into debug stmts.
5423         * tree-ssa-threadedge.c
5424         (record_temporary_equivalences_from_stmts): Skip debug stmts.
5425         * regcprop.c (replace_oldest_value_addr): Skip debug insns.
5426         (replace_oldest_value_mem): Use ALL_REGS for debug insns.
5427         (copyprop_hardreg_forward_1): Handle debug insns.
5428         * reload1.c (reload): Skip debug insns.  Replace unassigned
5429         pseudos in debug insns with their equivalences.
5430         (eliminate_regs_in_insn): Skip debug insns.
5431         (emit_input_reload_insns): Skip debug insns at first, adjust
5432         them later.
5433         * tree-ssa-operands.c (add_virtual_operand): Reject debug stmts.
5434         (get_indirect_ref_operands): Pass opf_no_vops on.
5435         (get_expr_operands): Likewise.  Skip debug stmts.
5436         (parse_ssa_operands): Scan debug insns with opf_no_vops.
5437
5438 2009-09-01  Richard Henderson  <rth@redhat.com>
5439
5440         * tree-ssa-ccp.c (ccp_initialize): Make sure to simulate
5441         stmt_ends_pp_p statements at least once.
5442         * tree-vrp.c (vrp_initialize): Likewise.
5443         (vrp_visit_stmt): Be prepared for non-interesting stmts.
5444
5445 2009-09-01  Dodji Seketeli  <dodji@redhat.com>
5446
5447         PR bootstrap/41205
5448         Fix AIX bootstrap after PR debug/30161
5449         * dwarf2out.c (make_ith_pack_parameter_name): Don't used strnlen
5450         that is a GNU extension.
5451         (tmpl_value_parm_die_table): Move the definition of this global
5452         outside #ifdef DWARF2_DEBUGGING_INFO region.
5453
5454 2009-09-01  Richard Guenther  <rguenther@suse.de>
5455
5456         * tree.c (tree_expr_size): New function.
5457         * tree.h (tree_expr_size): Declare.
5458         * rtlanal.c (rtx_addr_can_trap_p_1): Adjust comment.
5459         * builtins.c (fold_builtin_memory_op): Use tree_expr_size.
5460         * langhooks.c (lhd_expr_size): Remove.
5461         * langhooks.h (struct lang_hooks): Remove expr_size.
5462         * explow.c (expr_size): Use tree_expr_size.
5463         (int_expr_size): Likewise.
5464         * langhooks-def.h (lhd_expr_size): Remove.
5465         (LANG_HOOKS_EXPR_SIZE): Likewise.
5466         (LANG_HOOKS_INITIALIZER): Adjust.
5467
5468 2009-09-01  Richard Guenther  <rguenther@suse.de>
5469
5470         * tree-flow.h (mark_addressable): Move declaration ...
5471         * tree.h (mark_addressable): ... here.
5472         * stmt.c (expand_asm_operands): Use mark_addressable, not
5473         lang_hooks.mark_addressable.
5474         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
5475         LANG_HOOKS_MARK_ADDRESSABLE.
5476         * langhooks.h (struct lang_hooks): Remove mark_addressable langhook.
5477         * c-objc-common.h (LANG_HOOKS_MARK_ADDRESSABLE): Remove.
5478
5479 2009-08-31  Chris Demetriou  <cgd@google.com>
5480
5481         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Never
5482         vectorize if not TARGET_SSE2.
5483
5484 2009-08-31  DJ Delorie  <dj@redhat.com>
5485
5486         * config/mep/mep.h (FUNCTION_ARG_REGNO_P): Exclude coprocessor
5487         registers if no coprocessor is enabled.
5488
5489 2009-08-31  Dodji Seketeli  <dodji@redhat.com>
5490
5491         PR debug/30161
5492         * cgraph.h (cgraph_get_node): Declare ...
5493         * cgraph.c (cgraph_get_node): ... new function.
5494         * dwarf2out.c (gen_generic_params_dies,
5495         generic_parameter_die, tree_add_const_value_attribute_for_decl,
5496         make_ith_pack_parameter_name,
5497         append_entry_to_tmpl_value_parm_die_table,
5498         gen_remaining_tmpl_value_param_die_attribute): New functions.
5499         (gen_subprogram_die): Generate debug info for template parameters
5500         if debug info level is higher than DINFO_LEVEL_TERSE.
5501         Use tree_add_const_value_attribute_for_decl instead of
5502         tree_add_const_value_attribute.
5503         (gen_const_die): Use tree_add_const_value_attribute_for_decl
5504         instead of tree_add_const_value_attribute.
5505         (gen_struct_or_union_type_die): Generate debug
5506         info for template parameters if debug info level is higher than
5507         DINFO_LEVEL_TERSE.
5508         (tree_add_const_value_attribute): Handle integral and pointer
5509         constants. Update comment.
5510         (dwarf_tag_name): Support DW_TAG_GNU_template_template_param.
5511         (dwarf_attr_name): Support DW_AT_GNU_template_name.
5512         (reference_to_unused): Fix thinko. Remove redundant predicates from
5513         tests.
5514         (tree_add_const_value_attribute): Make this work for constant
5515         expressions only.
5516         tree_add_const_value_attribute_for_decl is to be used for variable
5517         DECLs now.
5518         (add_location_or_const_value_attribute): Use
5519         tree_add_const_value_attribute_for_decl now.
5520         (dwarf2out_finish): Emit the DW_AT_const_value attribute of
5521         DW_TAG_template_value_param DIEs after function DIEs have been
5522         emitted.
5523         * langhooks.h (lang_hooks_for_types): Add
5524         get_argument_pack_elems.
5525         (lang_hooks_for_decls): Add generic_generic_parameter_decl_p.
5526         (lang_hooks): Added get_innermost_generic_parms,
5527         get_innermost_generic_args.
5528         * langhooks-def.h (LANG_HOOKS_GET_INNERMOST_GENERIC_PARMS,
5529         LANG_HOOKS_GET_INNERMOST_GENERIC_ARGS,
5530         LANG_HOOKS_GET_ARGUMENT_PACK_ELEMS,
5531         LANG_HOOKS_GENERIC_GENERIC_PARAMETER_DECL_P): New language hooks.
5532
5533 2009-08-31  DJ Delorie  <dj@redhat.com>
5534
5535         * config/mep/mep.c (machine_function): Add frame_locked flag.  Set
5536         it once we start generating the prologue or epilogue.
5537         (mep_call_saves_register): If the frame is locked, re-use
5538         cached values.
5539         (mep_assign_save_slots): New, broken out from mep_expand_prologue.
5540         (mep_expand_prologue): Call it.
5541         (mep_expand_epilogue): Likewise.
5542         (mep_start_function): Use the same logic as mep_expand_prologue.
5543         (mep_pass_by_reference): Make logic more readable.
5544         (mep_return_in_memory): Zero-sized objects are passed in memory.
5545         (mep_reorg_noframe): Make sure we have accurate REG_DEAD notes.
5546
5547 2009-08-31  Richard Guenther  <rguenther@suse.de>
5548
5549         * builtins.c (fold_builtin_memory_op): Use the alias oracle
5550         to query if the memory regions for memmove overlap.
5551         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Relax the
5552         asserts on pointers, instead deal with odd trees.
5553         (ptr_derefs_may_alias_p): Likewise.
5554         (refs_may_alias_p_1): Constructor bases also never alias.
5555
5556 2009-08-31  Gerald Pfeifer  <gerald@pfeifer.com>
5557
5558         * doc/install.texi (Final install): Adjust reference on where to
5559         order printed manuals.
5560
5561 2009-08-30  Olivier Hainque  <hainque@adacore.com>
5562
5563         * dwarf2out.c (switch_to_frame_table_section): Move
5564         definition prior to first use.
5565
5566 2009-08-30  Richard Guenther  <rguenther@suse.de>
5567
5568         PR tree-optimization/41186
5569         * tree-ssa-alias.c (ptr_deref_may_alias_ref_p): Remove.
5570         (ao_ref_init_from_ptr_and_size): New function.
5571         (ref_maybe_used_by_call_p_1): Be more precise tracking
5572         used ranges for builtin functions.
5573         (ref_maybe_used_by_call_p): Adjust.
5574         (call_may_clobber_ref_p_1): Be more precise tracking clobbered
5575         ranges for builtin functions.
5576         * tree-ssa-alias.h (ao_ref_init_from_ptr_and_size): Declare.
5577
5578 2009-08-30  Alan Modra  <amodra@bigpond.net.au>
5579
5580         PR target/41081
5581         * fwprop.c (get_reg_use_in): Delete.
5582         (free_load_extend): New function.
5583         (forward_propagate_subreg): Use it.
5584
5585 2009-08-29  Kaz Kojima  <kkojima@gcc.gnu.org>
5586
5587         * config.gcc (sh*-*-elf): Add superh stuff only for sh*-superh-elf.
5588
5589 2009-08-29  Kai Tietz<kai.tietz@onevision.com>
5590
5591         PR/41184
5592         * config/i386.c (ix86_expand_epilogue): Correct stack adjustment for
5593         padding.
5594
5595 2009-08-29  Douglas B Rupp  <rupp@gnat.com>
5596
5597         * crtstuff.c (__do_global_dtors_aux): Use atexit if no
5598         fini or fini_array section.
5599
5600 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
5601
5602         * graphite-dependences.c (graphite_legal_transform_bb): Call
5603         pbb_remove_duplicate_pdrs.
5604         * graphite-poly.c (can_collapse_pdr): Removed.
5605         (pdr_find_duplicate): Removed.
5606         (can_collapse_pdrs): New.
5607         (pbb_remove_duplicate_pdrs): New.
5608         (new_poly_dr): Do not look for duplicates.
5609         * graphite-poly.h (struct poly_bb): New field pdr_duplicates_removed.
5610         (PBB_PDR_DUPLICATES_REMOVED): New.
5611         (pbb_remove_duplicate_pdrs): Declared.
5612
5613 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
5614
5615         * graphite-interchange.c (pbb_interchange_profitable_p): Adjust
5616         the strides by multiplying by PDR_NB_REFS.
5617         * graphite-poly.c (can_collapse_pdr): New.
5618         (pdr_find_duplicate): New.
5619         (new_poly_dr): Call pdr_find_duplicate.  Collapse duplicate PDRs.
5620         Initialize PDR_NB_REFS.
5621         * graphite-poly.h (struct poly_dr): Add field nb_refs.
5622         (PDR_NB_REFS): New.
5623         (new_poly_dr): Number of subscripts is a graphite_dim_t.
5624
5625 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
5626
5627         PR middle-end/40965
5628         * graphite-poly.c (apply_poly_transforms): Remove legality test before
5629         any transform.
5630
5631 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
5632
5633         * graphite-dependences.c (pddr_original_scattering): Return NULL
5634         for read-read dependence relations.
5635         * graphite-poly.h (enum poly_dr_type): Fix comment.
5636         (pdr_read_p): New.
5637         (pdr_write_p): New.
5638         (pdr_may_write_p): New.
5639
5640 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
5641
5642         * graphite-poly.h (enum POLY_DR_TYPE): Renamed poly_dr_type.
5643         (struct poly_dr): Same.
5644         (new_poly_dr): Same.
5645         * graphite-poly.c (new_poly_dr): Same.
5646         * graphite-dependences.c (dot_deps): Disable call to system.
5647
5648 2009-08-28  Cary Coutant  <ccoutant@google.com>
5649
5650         PR debug/41063
5651         * dwarf2out.c (gen_type_die_with_usage): Use proper context for
5652         struct/union/enum types local to a function.
5653
5654 2009-08-28  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
5655             Sebastian Pop  <sebastian.pop@amd.com>
5656
5657         * graphite-blocking.c (pbb_strip_mine_loop_depth): Renamed
5658         pbb_strip_mine_time_depth.  Changed the implementation so that
5659         transformation is expressed as a transformation on
5660         time (scatttering) dimensions.  Also, ensures that the 2d+1
5661         scheduling format is preserved.
5662         (pbb_strip_mine_profitable_p): Profitability is based on the
5663         iteration number of a given time (scattering) dimension,
5664         and not on a original loop depth dimension.
5665         (pbb_strip_mine): Call pbb_number_of_iterations_at_time.
5666         (pbb_do_strip_mine): Call psct_dynamic_dim.
5667         * graphite-poly.c (pbb_number_of_iterations_at_time): New.
5668         * graphite-poly.h (pbb_number_of_iterations_at_time): Declared.
5669         (pbb_nb_dynamic_scattering_transform): New.
5670         (psct_dynamic_dim): New.
5671
5672 2009-08-28  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
5673
5674         * graphite-ppl.c (ppl_max_for_le): Renamed ppl_max_for_le_pointset.
5675         * graphite-ppl.h (ppl_max_for_le): Renamed ppl_max_for_le_pointset.
5676         * graphite-poly.c (pbb_number_of_iterations): Rename ppl_max_for_le.
5677         * graphite-interchange.c (build_linearized_memory_access): Same.
5678         (memory_stride_in_loop): Same.
5679
5680 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
5681
5682         * graphite-dependences.c (pddr_original_scattering): New.
5683         (graphite_legal_transform_dr): Call pddr_original_scattering.
5684         (dot_deps_1): New.
5685         (dot_deps): New.
5686         * graphite-dependences.h (dot_deps): Declared.
5687         * graphite-poly.c (new_poly_dr): Initialize PDR_ID.
5688         (print_pdr): Print PDR_ID.
5689         * graphite-poly.h (struct poly_dr): Add field id.
5690         (PDR_ID): New.
5691         (pbb_index): New.
5692         * graphite-scop-detection.c (dot_all_scops_1): Cleanup comment.
5693
5694 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
5695
5696         * graphite-dependences.c (graphite_carried_dependence_level_k): Do
5697         not delete the original dependence relation.
5698
5699 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
5700
5701         * graphite-dependences.c (new_poly_dr_pair): Renamed new_poly_ddr.
5702         (eq_poly_dr_pair_p): Renamed eq_poly_ddr_p.
5703         (hash_poly_dr_pair_p): Renamed hash_poly_ddr_p.
5704         (free_poly_ddr): New.
5705         (pddr_is_empty): New.
5706         (dependence_polyhedron_1): Now returns a poly_ddr_p.
5707         (dependence_polyhedron): Same.  Remove useless gcc_assert.
5708         Remove fprintfs.
5709         (graphite_legal_transform_dr): Call pddr_is_empty and free_poly_ddr.
5710         (graphite_carried_dependence_level_k): Call pddr_is_empty.
5711         * graphite-dependences.h (enum poly_dependence_kind): New.
5712         (poly_dr_pair): Renamed poly_ddr.  Added a field kind.
5713         (PDRP_SOURCE): Renamed PDDR_SOURCE.
5714         (PDRP_SINK): Renamed PDDR_SINK.
5715         (PDRP_DDP): Renamed PDDR_DDP.
5716         (PDDR_KIND): New.
5717         (free_poly_ddr): Declared.
5718         * graphite-poly.c (new_scop): Use the new hash function names.
5719         * graphite-poly.h (struct scop): Renamed field original_pdr_pairs
5720         into original_pddrs.
5721         (SCOP_ORIGINAL_PDR_PAIRS): Renamed SCOP_ORIGINAL_PDDRS.
5722
5723 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
5724
5725         * cfgloopmanip.c (create_empty_loop_on_edge): Generate upper
5726         bounds with LT_EXPR to make niter analysis more precise on code
5727         generated by Graphite.
5728
5729 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
5730
5731         * graphite-dependences.c (graphite_legal_transform_dr): Fix formatting.
5732         (graphite_legal_transform_bb): Same.
5733         (poly_drs_may_alias_p): Same.
5734
5735 2009-08-28  Richard Guenther  <rguenther@suse.de>
5736
5737         * tree.def: Remove note about obsolete TYPE_NONCOPIED_PARTS.
5738
5739 2009-08-28  Jan Beulich  <jbeulich@novell.com>
5740
5741         * config/i386/netware.c: Include langhooks.h.
5742         (i386_nlm_encode_section_info): Simplify.
5743         (netware_override_options): Delete.
5744         * config/i386/netware.h (netware_override_options): Delete
5745         declaration.
5746         (OVERRIDE_OPTIONS): Delete definition.
5747         (SUBTARGET_OVERRIDE_OPTIONS): Define.
5748         (ASM_COMMENT_START): Define.
5749         * config/i386/nwld.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Define.
5750
5751 2009-08-28  Jan Beulich  <jbeulich@novell.com>
5752
5753         * configure.ac: For in-tree ld, do a plain version check to
5754         determine whether comdat groups are supported.
5755         * configure: Regenerate.
5756
5757 2009-08-28  Olivier Hainque  <hainque@adacore.com>
5758
5759         * collect2.c (DO_COLLECT_EXPORT_LIST): New internal macro,
5760         always defined.  Reflect definition or absence of such for
5761         COLLECT_EXPORT_LIST.  Readability helper.
5762         (scanfilter): New enum, to help control what symbols
5763         are to be considered or ignored by scan_prog_file.
5764         (enum pass): Rename as "scanpass", moved together with scanfilter
5765         prior to scan_prog_file's prototype.
5766         (scan_prog_file): Accept and honor scanpass and scanfilter arguments.
5767         Group prototype with the scanpass/scanfilter definitions, factorize
5768         head comments for the several implementations at the prototype.
5769         (main): Reorganize the first pass link control to let AIX
5770         drag only the needed frame tables in executables.  Prevent
5771         frame tables collection during the scan aimed at static ctors.
5772         Pre-link and scan for frame tables later to compensate.
5773         * doc/tm.texi (ASM_OUTPUT_DWARF_TABLE_REF): New macro.
5774         A C statement to issue assembly directives that create a reference
5775         to the given DWARF table identifier label from the current function
5776         section.
5777         * dwarf2out.c (switch_to_eh_frame_section): Add a BACK argument
5778         to differentiate first time section entry.  Only emit a .data
5779         tables start identifier label the first time around.
5780         (switch_to_frame_table_section): New function.  Helper for
5781         output_call_frame_info to switch possibly BACK into the eh_frame
5782         or the debug_frame section depending on FOR_EH.
5783         (output_call_frame_info): Use helper to first enter the proper
5784         frame section.
5785         (output_fde): Use ASM_OUTPUT_DWARF_TABLE_REF when defined to
5786         emit a link to the frame table start label from each function
5787         section.
5788         * config/rs6000/rs6000.c (rs6000_aix_asm_output_dwarf_table_ref):
5789         New function.  Implementation of ASM_OUTPUT_DWARF_TABLE_REF.
5790         * config/rs6000/rs6000-protos.h: Declare it.
5791         * config/rs6000/aix.h (ASM_OUTPUT_DWARF_TABLE_REF): Define.
5792
5793 2009-08-27  Kaz Kojima  <kkojima@gcc.gnu.org>
5794
5795         * config/sh/sh.c (split_branches): Check the result of
5796         next_active_insn.
5797
5798 2009-08-27  Steve Ellcey  <sje@cup.hp.com>
5799
5800         * config/ia64/hpux.h (LIB_SPEC): Add -lrt for when
5801         using -pthread -fopenmp
5802
5803 2009-08-27  Gerald Pfeifer  <gerald@pfeifer.com>
5804
5805         * doc/service.texi (service directory): Update URL.
5806
5807 2009-08-27  Uros Bizjak  <ubizjak@gmail.com>
5808
5809         PR rtl-optimization/40861
5810         * simplify-rtx.c (simplify_subreg): Do not call simplify_gen_subreg to
5811         extract word from a multi-word subreg for negative byte positions.
5812
5813 2009-08-27  Tristan Gingold  <gingold@adacore.com>
5814             Douglas B Rupp  <rupp@gnat.com>
5815
5816         * config/ia64/ia64.c (ia64_attribute_table): Add "common_object" entry.
5817         (SECTION_VMS_OVERLAY): Define.
5818         (ia64_vms_common_object_attribute): Added.  Handle the "common_object"
5819         attribute.
5820         (ia64_vms_elf_asm_named_section): Added.  Generate .section pseudo-op
5821         for common_object.
5822         (ia64_vms_output_aligned_decl_common): Added.  Generate pseudo-op for
5823         common_object declarations.
5824         (ia64_section_type_flags): Set section flag for common_object.
5825         * config/ia64/ia64-protos.h
5826         (ia64_vms_output_aligned_decl_common): Declare.
5827         (ia64_vms_elf_asm_named_section): Declare.
5828
5829 2009-08-27  Michael Matz  <matz@suse.de>
5830
5831         * expr.c (expand_expr_real_2): New function taking exploded
5832         unary or binary expression, split out from ...
5833         (expand_expr_real_1): ... here.  Move over all unary/binary
5834         switch parts to above function, in particular these codes:
5835         PAREN_EXPR, NOP_EXPR, CONVERT_EXPR, POINTER_PLUS_EXPR, PLUS_EXPR,
5836         MINUS_EXPR, MULT_EXPR, TRUNC_DIV_EXPR, FLOOR_DIV_EXPR, CEIL_DIV_EXPR,
5837         ROUND_DIV_EXPR, EXACT_DIV_EXPR, RDIV_EXPR, TRUNC_MOD_EXPR,
5838         FLOOR_MOD_EXPR, CEIL_MOD_EXPR, ROUND_MOD_EXPR, FIXED_CONVERT_EXPR,
5839         FIX_TRUNC_EXPR, FLOAT_EXPR, NEGATE_EXPR, ABS_EXPR, MAX_EXPR, MIN_EXPR,
5840         BIT_NOT_EXPR, TRUTH_AND_EXPR, BIT_AND_EXPR, TRUTH_OR_EXPR,
5841         BIT_IOR_EXPR, TRUTH_XOR_EXPR, BIT_XOR_EXPR, LROTATE_EXPR, RROTATE_EXPR,
5842         LSHIFT_EXPR, RSHIFT_EXPR, LT_EXPR, LE_EXPR, GT_EXPR, GE_EXPR, EQ_EXPR,
5843         NE_EXPR, UNORDERED_EXPR, ORDERED_EXPR, UNLT_EXPR, UNLE_EXPR, UNGT_EXPR,
5844         UNGE_EXPR, UNEQ_EXPR, LTGT_EXPR, TRUTH_NOT_EXPR, COMPLEX_EXPR,
5845         WIDEN_SUM_EXPR, REDUC_MAX_EXPR, REDUC_MIN_EXPR, REDUC_PLUS_EXPR,
5846         VEC_EXTRACT_EVEN_EXPR, VEC_EXTRACT_ODD_EXPR, VEC_INTERLEAVE_HIGH_EXPR,
5847         VEC_INTERLEAVE_LOW_EXPR, VEC_LSHIFT_EXPR, VEC_RSHIFT_EXPR,
5848         VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR, VEC_UNPACK_FLOAT_HI_EXPR,
5849         VEC_UNPACK_FLOAT_LO_EXPR, VEC_WIDEN_MULT_HI_EXPR,
5850         VEC_WIDEN_MULT_LO_EXPR, VEC_PACK_TRUNC_EXPR, VEC_PACK_SAT_EXPR,
5851         VEC_PACK_FIX_TRUNC_EXPR.
5852         (<case PAREN_EXPR>): Call set_mem_attributes() with type, not the
5853         full expression.
5854
5855 2009-08-27  Richard Guenther  <rguenther@suse.de>
5856
5857         * gengtype.c (main): Handle uint64_t.
5858         * ipa-utils.c (get_base_var): Indent properly.
5859         * tree-ssa-live.c (debug_scope_block): New function.
5860         * tree-flow.h (debug_scope_block): Declare.
5861         * tree-ssa-copy.c (replace_exp_1): Add vertical space.
5862         * basic-block.h (enum profile_status): Rename to
5863         enum profile_status_d.
5864         (x_profile_status): Adjust type.
5865
5866 2009-08-27  Dodji Seketeli  <dodji@redhat.com>
5867
5868         PR debug/41170
5869         * dwarf2out.c (get_context_die): Declare this static function.
5870         (gen_type_die_with_usage): Make sure a DIE is a generated for
5871         the context of a typedef.
5872
5873 2009-08-26  Anatoly Sokolov  <aesok@post.ru>
5874
5875         * doc/invoke.texi (AVR Options): Remove documentation of -minit-stack
5876         switch.
5877
5878 2009-08-26  Richard Sandiford  <rdsandiford@googlemail.com>
5879
5880         * config/mips/mips-protos.h (mips_output_sync): Declare.
5881         (mips_sync_loop_insns): Likewise.
5882         (mips_output_sync_loop): Replace first two parameters with an rtx.
5883         * config/mips/mips.c (mips_multi_member): New structure.
5884         (mips_multi_members): New variable.
5885         (mips_multi_start): New function.
5886         (mips_multi_add): Likewise.
5887         (mips_multi_add_insn): Likewise.
5888         (mips_multi_add_label): Likewise.
5889         (mips_multi_last_index): Likewise.
5890         (mips_multi_copy_insn): Likewise.
5891         (mips_multi_set_operand): Likewise.
5892         (mips_multi_write): Likewise.
5893         (mips_print_operand_punctuation): Remove '%|' and '%-'.
5894         (mips_init_print_operand_punct): Update accordingly.
5895         (mips_start_ll_sc_sync_block): New function.
5896         (mips_end_ll_sc_sync_block): Likewise.
5897         (mips_output_sync): Likewise.
5898         (mips_sync_insn1_template): Likewise.
5899         (mips_sync_insn2_template): Likewise.
5900         (mips_get_sync_operand): Likewise.
5901         (mips_process_sync_loop): Likewise.
5902         (mips_output_sync_loop): Use mips_process_sync_loop.
5903         (mips_sync_loop_insns): New function.
5904         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP): Delete.
5905         (MIPS_COMPARE_AND_SWAP_12): Likewise.
5906         (MIPS_COMPARE_AND_SWAP_12_ZERO_OP): Likewise.
5907         (MIPS_COMPARE_AND_SWAP_12_NONZERO_OP): Likewise.
5908         (MIPS_SYNC_OP, MIPS_SYNC_OP_12): Likewise.
5909         (MIPS_SYNC_OP_12_AND, MIPS_SYNC_OP_12_XOR): Likewise.
5910         (MIPS_SYNC_OLD_OP_12): Likewise.
5911         (MIPS_SYNC_OLD_OP_12_AND, MIPS_SYNC_OLD_OP_12_XOR): Likewise.
5912         (MIPS_SYNC_NEW_OP_12): Likewise.
5913         (MIPS_SYNC_NEW_OP_12_AND, MIPS_SYNC_NEW_OP_12_XOR): Likewise.
5914         (MIPS_SYNC_OLD_OP, MIPS_SYNC_NEW_OP): Likewise.
5915         (MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND, MIPS_SYNC_NEW_NAND): Likewise.
5916         (MIPS_SYNC_EXCHANGE, MIPS_SYNC_EXCHANGE_12): Likewise.
5917         (MIPS_SYNC_EXCHANGE_12_ZERO_OP): Likewise.
5918         (MIPS_SYNC_EXCHANGE_12_NONZER_OP): Likewise.
5919         * config/mips/mips.md (sync_mem): New attribute.
5920         (sync_oldval, sync_newval, sync_inclusive_mask): Likewise.
5921         (sync_exclusive_mask, sync_required_oldval): Likewise.
5922         (sync_insn1_op2, sync_insn1, sync_insn2): Likewise.
5923         (sync_release_barrier): Likewise.
5924         (length): Handle sync loops.
5925         (sync): Use mips_output_sync.
5926         * config/mips/sync.md (*memory_barrier): Use mips_output_sync.
5927         (sync_compare_and_swap<mode>): Set the new sync_* attributes
5928         and use mips_output_sync_loop.
5929         (compare_and_swap_12, sync_add<mode>, sync_<optab>_12): Likewise.
5930         (sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12): Likewise.
5931         (sync_old_nand_12, sync_new_nand_12, sync_sub<mode>): Likewise.
5932         (sync_old_add<mode>, sync_old_sub<mode>): Likewise.
5933         (sync_new_add<mode>, sync_new_sub<mode>): Likewise.
5934         (sync_<optab><mode>, sync_old_<optab><mode>): Likewise.
5935         (sync_new_<optab><mode>, sync_nand<mode>): Likewise.
5936         (sync_old_nand<mode>, sync_new_nand<mode>): Likewise.
5937         (sync_lock_test_and_set<mode>, test_and_set_12): Likewise.
5938
5939 2009-08-26  Richard Guenther  <rguenther@suse.de>
5940
5941         PR middle-end/41163
5942         * gimplify.c (gimplify_addr_expr): Canonicalize ADDR_EXPRs if
5943         the types to not match.
5944         * tree-cfg.c (verify_gimple_assign_single): Adjust ADDR_EXPR
5945         verification.
5946         * tree-ssa.c (useless_type_conversion_p): Conversions to
5947         pointers to unprototyped functions are useless.
5948
5949 2009-08-26  Richard Guenther  <rguenther@suse.de>
5950
5951         * tree-ssa-structalias.c (create_variable_info_for): Remove strange
5952         whole-program condition, prepare to be called for non-globals.
5953         (intra_create_variable_infos): For restrict qualified DECL_BY_REFERENCE
5954         params build a representative with known type and track its fields.
5955
5956 2009-08-26  Uros Bizjak  <ubizjak@gmail.com>
5957
5958         * config/alpha/sync.md: Update comment about unpredictable LL/SC lock
5959         clearing by a taken branch.
5960         (sync_<fetchop_name><mode>): Split when epilogue_completed is set,
5961         effectively after bbro pass.
5962         (sync_nand<mode>): Ditto.
5963         (sync_old_<fetchop_name><mode>): Ditto.
5964         (sync_old_nand<mode>): Ditto.
5965         (sync_new_<fetchop_name><mode>): Dito.
5966         (sync_new_nand<mode>): Ditto.
5967         (sync_compare_and_swap<mode>_1): Ditto.
5968         (*sync_compare_and_swap<mode>): Ditto.
5969         (sync_lock_test_and_set<mode>_1): Ditto.
5970         ("sync_lock_test_and_set<mode>): Ditto.
5971
5972 2009-08-25  Douglas B Rupp  <rupp@gnat.com>
5973
5974         * hwint.h (HOST_LONG_FORMAT): New macro
5975         * bitmap.c, c-decl.c, mips-tfile.c, print-rtl.c, print-tree.c:
5976         Use HOST_PTR_PRINTF.
5977         * system.h (HOST_PTR_PRINTF): Resurrect old macro
5978         * doc/hostconfig.texi (HOST_LONG_FORMAT): Document.
5979         (HOST_PTR_PRINTF): Document.
5980
5981 2009-08-25 Jan Hubicka  <jh@suse.cz>
5982
5983         * config/i386/bmmintrin.h: Replace by #error.
5984
5985         Revert:
5986         Michael Meissner  <michael.meissner@amd.com>
5987         Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
5988         Tony Linthicum  <tony.linthicum@amd.com>
5989
5990         * config/i386/i386.h (TARGET_SSE5): New macro for SSE5.
5991         (TARGET_ROUND): New macro for the round/ptest instructions which
5992         are shared between SSE4.1 and SSE5.
5993         (OPTION_MASK_ISA_ROUND): Ditto.
5994         (OPTION_ISA_ROUND): Ditto.
5995         (TARGET_FUSED_MADD): New macro for -mfused-madd swtich.
5996         (TARGET_CPU_CPP_BUILTINS): Add SSE5 support.
5997
5998         * config/i386/i386.opt (-msse5): New switch for SSE5 support.
5999         (-mfused-madd): New switch to give users control over whether the
6000         compiler optimizes to use the multiply/add SSE5 instructions.
6001
6002         * config/i386/i386.c (enum pta_flags): Add PTA_SSE5.
6003         (ix86_handle_option): Turn off 3dnow if -msse5.
6004         (override_options): Add SSE5 support.
6005         (print_operand): %Y prints comparison codes for SSE5 com/pcom
6006         instructions.
6007         (ix86_expand_sse_movcc): Add SSE5 support.
6008         (ix86_expand_sse5_unpack): New function to use pperm to unpack a
6009         vector type to the next largest size.
6010         (ix86_expand_sse5_pack): New function to use pperm to pack a
6011         vector type to the next smallest size.
6012         (IX86_BUILTIN_FMADDSS): New for SSE5 intrinsic.
6013         (IX86_BUILTIN_FMADDSD): Ditto.
6014         (IX86_BUILTIN_FMADDPS): Ditto.
6015         (IX86_BUILTIN_FMADDPD): Ditto.
6016         (IX86_BUILTIN_FMSUBSS): Ditto.
6017         (IX86_BUILTIN_FMSUBSD): Ditto.
6018         (IX86_BUILTIN_FMSUBPS): Ditto.
6019         (IX86_BUILTIN_FMSUBPD): Ditto.
6020         (IX86_BUILTIN_FNMADDSS): Ditto.
6021         (IX86_BUILTIN_FNMADDSD): Ditto.
6022         (IX86_BUILTIN_FNMADDPS): Ditto.
6023         (IX86_BUILTIN_FNMADDPD): Ditto.
6024         (IX86_BUILTIN_FNMSUBSS): Ditto.
6025         (IX86_BUILTIN_FNMSUBSD): Ditto.
6026         (IX86_BUILTIN_FNMSUBPS): Ditto.
6027         (IX86_BUILTIN_FNMSUBPD): Ditto.
6028         (IX86_BUILTIN_PCMOV_V2DI): Ditto.
6029         (IX86_BUILTIN_PCMOV_V4SI): Ditto.
6030         (IX86_BUILTIN_PCMOV_V8HI): Ditto.
6031         (IX86_BUILTIN_PCMOV_V16QI): Ditto.
6032         (IX86_BUILTIN_PCMOV_V4SF): Ditto.
6033         (IX86_BUILTIN_PCMOV_V2DF): Ditto.
6034         (IX86_BUILTIN_PPERM): Ditto.
6035         (IX86_BUILTIN_PERMPS): Ditto.
6036         (IX86_BUILTIN_PERMPD): Ditto.
6037         (IX86_BUILTIN_PMACSSWW): Ditto.
6038         (IX86_BUILTIN_PMACSWW): Ditto.
6039         (IX86_BUILTIN_PMACSSWD): Ditto.
6040         (IX86_BUILTIN_PMACSWD): Ditto.
6041         (IX86_BUILTIN_PMACSSDD): Ditto.
6042         (IX86_BUILTIN_PMACSDD): Ditto.
6043         (IX86_BUILTIN_PMACSSDQL): Ditto.
6044         (IX86_BUILTIN_PMACSSDQH): Ditto.
6045         (IX86_BUILTIN_PMACSDQL): Ditto.
6046         (IX86_BUILTIN_PMACSDQH): Ditto.
6047         (IX86_BUILTIN_PMADCSSWD): Ditto.
6048         (IX86_BUILTIN_PMADCSWD): Ditto.
6049         (IX86_BUILTIN_PHADDBW): Ditto.
6050         (IX86_BUILTIN_PHADDBD): Ditto.
6051         (IX86_BUILTIN_PHADDBQ): Ditto.
6052         (IX86_BUILTIN_PHADDWD): Ditto.
6053         (IX86_BUILTIN_PHADDWQ): Ditto.
6054         (IX86_BUILTIN_PHADDDQ): Ditto.
6055         (IX86_BUILTIN_PHADDUBW): Ditto.
6056         (IX86_BUILTIN_PHADDUBD): Ditto.
6057         (IX86_BUILTIN_PHADDUBQ): Ditto.
6058         (IX86_BUILTIN_PHADDUWD): Ditto.
6059         (IX86_BUILTIN_PHADDUWQ): Ditto.
6060         (IX86_BUILTIN_PHADDUDQ): Ditto.
6061         (IX86_BUILTIN_PHSUBBW): Ditto.
6062         (IX86_BUILTIN_PHSUBWD): Ditto.
6063         (IX86_BUILTIN_PHSUBDQ): Ditto.
6064         (IX86_BUILTIN_PROTB): Ditto.
6065         (IX86_BUILTIN_PROTW): Ditto.
6066         (IX86_BUILTIN_PROTD): Ditto.
6067         (IX86_BUILTIN_PROTQ): Ditto.
6068         (IX86_BUILTIN_PROTB_IMM): Ditto.
6069         (IX86_BUILTIN_PROTW_IMM): Ditto.
6070         (IX86_BUILTIN_PROTD_IMM): Ditto.
6071         (IX86_BUILTIN_PROTQ_IMM): Ditto.
6072         (IX86_BUILTIN_PSHLB): Ditto.
6073         (IX86_BUILTIN_PSHLW): Ditto.
6074         (IX86_BUILTIN_PSHLD): Ditto.
6075         (IX86_BUILTIN_PSHLQ): Ditto.
6076         (IX86_BUILTIN_PSHAB): Ditto.
6077         (IX86_BUILTIN_PSHAW): Ditto.
6078         (IX86_BUILTIN_PSHAD): Ditto.
6079         (IX86_BUILTIN_PSHAQ): Ditto.
6080         (IX86_BUILTIN_FRCZSS): Ditto.
6081         (IX86_BUILTIN_FRCZSD): Ditto.
6082         (IX86_BUILTIN_FRCZPS): Ditto.
6083         (IX86_BUILTIN_FRCZPD): Ditto.
6084         (IX86_BUILTIN_CVTPH2PS): Ditto.
6085         (IX86_BUILTIN_CVTPS2PH): Ditto.
6086         (IX86_BUILTIN_COMEQSS): Ditto.
6087         (IX86_BUILTIN_COMNESS): Ditto.
6088         (IX86_BUILTIN_COMLTSS): Ditto.
6089         (IX86_BUILTIN_COMLESS): Ditto.
6090         (IX86_BUILTIN_COMGTSS): Ditto.
6091         (IX86_BUILTIN_COMGESS): Ditto.
6092         (IX86_BUILTIN_COMUEQSS): Ditto.
6093         (IX86_BUILTIN_COMUNESS): Ditto.
6094         (IX86_BUILTIN_COMULTSS): Ditto.
6095         (IX86_BUILTIN_COMULESS): Ditto.
6096         (IX86_BUILTIN_COMUGTSS): Ditto.
6097         (IX86_BUILTIN_COMUGESS): Ditto.
6098         (IX86_BUILTIN_COMORDSS): Ditto.
6099         (IX86_BUILTIN_COMUNORDSS): Ditto.
6100         (IX86_BUILTIN_COMFALSESS): Ditto.
6101         (IX86_BUILTIN_COMTRUESS): Ditto.
6102         (IX86_BUILTIN_COMEQSD): Ditto.
6103         (IX86_BUILTIN_COMNESD): Ditto.
6104         (IX86_BUILTIN_COMLTSD): Ditto.
6105         (IX86_BUILTIN_COMLESD): Ditto.
6106         (IX86_BUILTIN_COMGTSD): Ditto.
6107         (IX86_BUILTIN_COMGESD): Ditto.
6108         (IX86_BUILTIN_COMUEQSD): Ditto.
6109         (IX86_BUILTIN_COMUNESD): Ditto.
6110         (IX86_BUILTIN_COMULTSD): Ditto.
6111         (IX86_BUILTIN_COMULESD): Ditto.
6112         (IX86_BUILTIN_COMUGTSD): Ditto.
6113         (IX86_BUILTIN_COMUGESD): Ditto.
6114         (IX86_BUILTIN_COMORDSD): Ditto.
6115         (IX86_BUILTIN_COMUNORDSD): Ditto.
6116         (IX86_BUILTIN_COMFALSESD): Ditto.
6117         (IX86_BUILTIN_COMTRUESD): Ditto.
6118         (IX86_BUILTIN_COMEQPS): Ditto.
6119         (IX86_BUILTIN_COMNEPS): Ditto.
6120         (IX86_BUILTIN_COMLTPS): Ditto.
6121         (IX86_BUILTIN_COMLEPS): Ditto.
6122         (IX86_BUILTIN_COMGTPS): Ditto.
6123         (IX86_BUILTIN_COMGEPS): Ditto.
6124         (IX86_BUILTIN_COMUEQPS): Ditto.
6125         (IX86_BUILTIN_COMUNEPS): Ditto.
6126         (IX86_BUILTIN_COMULTPS): Ditto.
6127         (IX86_BUILTIN_COMULEPS): Ditto.
6128         (IX86_BUILTIN_COMUGTPS): Ditto.
6129         (IX86_BUILTIN_COMUGEPS): Ditto.
6130         (IX86_BUILTIN_COMORDPS): Ditto.
6131         (IX86_BUILTIN_COMUNORDPS): Ditto.
6132         (IX86_BUILTIN_COMFALSEPS): Ditto.
6133         (IX86_BUILTIN_COMTRUEPS): Ditto.
6134         (IX86_BUILTIN_COMEQPD): Ditto.
6135         (IX86_BUILTIN_COMNEPD): Ditto.
6136         (IX86_BUILTIN_COMLTPD): Ditto.
6137         (IX86_BUILTIN_COMLEPD): Ditto.
6138         (IX86_BUILTIN_COMGTPD): Ditto.
6139         (IX86_BUILTIN_COMGEPD): Ditto.
6140         (IX86_BUILTIN_COMUEQPD): Ditto.
6141         (IX86_BUILTIN_COMUNEPD): Ditto.
6142         (IX86_BUILTIN_COMULTPD): Ditto.
6143         (IX86_BUILTIN_COMULEPD): Ditto.
6144         (IX86_BUILTIN_COMUGTPD): Ditto.
6145         (IX86_BUILTIN_COMUGEPD): Ditto.
6146         (IX86_BUILTIN_COMORDPD): Ditto.
6147         (IX86_BUILTIN_COMUNORDPD): Ditto.
6148         (IX86_BUILTIN_COMFALSEPD): Ditto.
6149         (IX86_BUILTIN_COMTRUEPD): Ditto.
6150         (IX86_BUILTIN_PCOMEQUB): Ditto.
6151         (IX86_BUILTIN_PCOMNEUB): Ditto.
6152         (IX86_BUILTIN_PCOMLTUB): Ditto.
6153         (IX86_BUILTIN_PCOMLEUB): Ditto.
6154         (IX86_BUILTIN_PCOMGTUB): Ditto.
6155         (IX86_BUILTIN_PCOMGEUB): Ditto.
6156         (IX86_BUILTIN_PCOMFALSEUB): Ditto.
6157         (IX86_BUILTIN_PCOMTRUEUB): Ditto.
6158         (IX86_BUILTIN_PCOMEQUW): Ditto.
6159         (IX86_BUILTIN_PCOMNEUW): Ditto.
6160         (IX86_BUILTIN_PCOMLTUW): Ditto.
6161         (IX86_BUILTIN_PCOMLEUW): Ditto.
6162         (IX86_BUILTIN_PCOMGTUW): Ditto.
6163         (IX86_BUILTIN_PCOMGEUW): Ditto.
6164         (IX86_BUILTIN_PCOMFALSEUW): Ditto.
6165         (IX86_BUILTIN_PCOMTRUEUW): Ditto.
6166         (IX86_BUILTIN_PCOMEQUD): Ditto.
6167         (IX86_BUILTIN_PCOMNEUD): Ditto.
6168         (IX86_BUILTIN_PCOMLTUD): Ditto.
6169         (IX86_BUILTIN_PCOMLEUD): Ditto.
6170         (IX86_BUILTIN_PCOMGTUD): Ditto.
6171         (IX86_BUILTIN_PCOMGEUD): Ditto.
6172         (IX86_BUILTIN_PCOMFALSEUD): Ditto.
6173         (IX86_BUILTIN_PCOMTRUEUD): Ditto.
6174         (IX86_BUILTIN_PCOMEQUQ): Ditto.
6175         (IX86_BUILTIN_PCOMNEUQ): Ditto.
6176         (IX86_BUILTIN_PCOMLTUQ): Ditto.
6177         (IX86_BUILTIN_PCOMLEUQ): Ditto.
6178         (IX86_BUILTIN_PCOMGTUQ): Ditto.
6179         (IX86_BUILTIN_PCOMGEUQ): Ditto.
6180         (IX86_BUILTIN_PCOMFALSEUQ): Ditto.
6181         (IX86_BUILTIN_PCOMTRUEUQ): Ditto.
6182         (IX86_BUILTIN_PCOMEQB): Ditto.
6183         (IX86_BUILTIN_PCOMNEB): Ditto.
6184         (IX86_BUILTIN_PCOMLTB): Ditto.
6185         (IX86_BUILTIN_PCOMLEB): Ditto.
6186         (IX86_BUILTIN_PCOMGTB): Ditto.
6187         (IX86_BUILTIN_PCOMGEB): Ditto.
6188         (IX86_BUILTIN_PCOMFALSEB): Ditto.
6189         (IX86_BUILTIN_PCOMTRUEB): Ditto.
6190         (IX86_BUILTIN_PCOMEQW): Ditto.
6191         (IX86_BUILTIN_PCOMNEW): Ditto.
6192         (IX86_BUILTIN_PCOMLTW): Ditto.
6193         (IX86_BUILTIN_PCOMLEW): Ditto.
6194         (IX86_BUILTIN_PCOMGTW): Ditto.
6195         (IX86_BUILTIN_PCOMGEW): Ditto.
6196         (IX86_BUILTIN_PCOMFALSEW): Ditto.
6197         (IX86_BUILTIN_PCOMTRUEW): Ditto.
6198         (IX86_BUILTIN_PCOMEQD): Ditto.
6199         (IX86_BUILTIN_PCOMNED): Ditto.
6200         (IX86_BUILTIN_PCOMLTD): Ditto.
6201         (IX86_BUILTIN_PCOMLED): Ditto.
6202         (IX86_BUILTIN_PCOMGTD): Ditto.
6203         (IX86_BUILTIN_PCOMGED): Ditto.
6204         (IX86_BUILTIN_PCOMFALSED): Ditto.
6205         (IX86_BUILTIN_PCOMTRUED): Ditto.
6206         (IX86_BUILTIN_PCOMEQQ): Ditto.
6207         (IX86_BUILTIN_PCOMNEQ): Ditto.
6208         (IX86_BUILTIN_PCOMLTQ): Ditto.
6209         (IX86_BUILTIN_PCOMLEQ): Ditto.
6210         (IX86_BUILTIN_PCOMGTQ): Ditto.
6211         (IX86_BUILTIN_PCOMGEQ): Ditto.
6212         (IX86_BUILTIN_PCOMFALSEQ): Ditto.
6213         (IX86_BUILTIN_PCOMTRUEQ): Ditto.
6214         (enum multi_arg_type): New enum for describing the various SSE5
6215         intrinsic argument types.
6216         (bdesc_multi_arg): New table for SSE5 intrinsics.
6217         (ix86_init_mmx_sse_builtins): Add SSE5 intrinsic support.
6218         (ix86_expand_multi_arg_builtin): New function for creating SSE5
6219         intrinsics.
6220         (ix86_expand_builtin): Add SSE5 intrinsic support.
6221         (ix86_sse5_valid_op_p): New function to validate SSE5 3 and 4
6222         operand instructions.
6223         (ix86_expand_sse5_multiple_memory): New function to split the
6224         second memory reference from SSE5 instructions.
6225         (type_has_variadic_args_p): Delete in favor of stdarg_p.
6226         (ix86_return_pops_args): Use stdarg_p to determine if the function
6227         has variable arguments.
6228         (ix86_setup_incoming_varargs): Ditto.
6229         (x86_this_parameter): Ditto.
6230
6231         * config/i386/i386-protos.h (ix86_expand_sse5_unpack): Add
6232         declaration.
6233         (ix86_expand_sse5_pack): Ditto.
6234         (ix86_sse5_valid_op_p): Ditto.
6235         (ix86_expand_sse5_multiple_memory): Ditto.
6236
6237         * config/i386/i386.md (UNSPEC_SSE5_INTRINSIC): Add new UNSPEC
6238         constant for SSE5 support.
6239         (UNSPEC_SSE5_UNSIGNED_CMP): Ditto.
6240         (UNSPEC_SSE5_TRUEFALSE): Ditto.
6241         (UNSPEC_SSE5_PERMUTE): Ditto.
6242         (UNSPEC_SSE5_ASHIFT): Ditto.
6243         (UNSPEC_SSE5_LSHIFT): Ditto.
6244         (UNSPEC_FRCZ): Ditto.
6245         (UNSPEC_CVTPH2PS): Ditto.
6246         (UNSPEC_CVTPS2PH): Ditto.
6247         (PCOM_FALSE): Add new constant for true/false SSE5 comparisons.
6248         (PCOM_TRUE): Ditto.
6249         (COM_FALSE_S): Ditto.
6250         (COM_FALSE_P): Ditto.
6251         (COM_TRUE_S): Ditto.
6252         (COM_TRUE_P): Ditto.
6253         (type attribute): Add ssemuladd, sseiadd1, ssecvt1, sse4arg types.
6254         (unit attribute): Add support for ssemuladd, ssecvt1, sseiadd1 sse4arg
6255         types.
6256         (memory attribute): Ditto.
6257         (sse4_1_round<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
6258         Use SSE4_1_ROUND_* constants instead of hard coded numbers.
6259         (rint<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
6260         (floor<mode>2): Ditto.
6261         (ceil<mode>2): Ditto.
6262         (btrunc<mode>2): Ditto.
6263         (nearbyintdf2): Ditto.
6264         (nearbyintsf2): Ditto.
6265         (sse_setccsf): Disable if SSE5.
6266         (sse_setccdf): Ditto.
6267         (sse5_setcc<mode>): New support for SSE5 conditional move.
6268         (sse5_pcmov_<mode>): Ditto.
6269
6270         * config/i386/sse.md (SSEMODE1248): New mode iterator for SSE5.
6271         (SSEMODEF4): Ditto.
6272         (SSEMODEF2P): Ditto.
6273         (ssemodesuffixf4): New mode attribute for SSE5.
6274         (ssemodesuffixf2s): Ditto.
6275         (ssemodesuffixf2c): Ditto.
6276         (sserotatemax): Ditto.
6277         (ssescalarmode): Ditto.
6278         (sse_maskcmpv4sf3): Disable if SSE5.
6279         (sse_maskcmpv2df3): Ditto.
6280         (sse_vmmaskcmpv4sf3): Ditto.
6281         (sse5_fmadd<mode>4): Add SSE5 floating point multiply/add instructions.
6282         (sse5_vmfmadd<mode>4): Ditto.
6283         (sse5_fmsub<mode>4): Ditto.
6284         (sse5_vmfmsub<mode>4): Ditto.
6285         (sse5_fnmadd<mode>4): Ditto.
6286         (sse5_vmfnmadd<mode>4): Ditto.
6287         (sse5_fnmsub<mode>4): Ditto.
6288         (sse5_vmfnmsub<mode>4): Ditto.
6289         (sse5i_fmadd<mode>4): Ditto.
6290         (sse5i_fmsub<mode>4): Ditto.
6291         (sse5i_fnmadd<mode>4): Ditto.
6292         (sse5i_fnmsub<mode>4): Ditto.
6293         (sse5i_vmfmadd<mode>4): Ditto.
6294         (sse5i_vmfmsub<mode>4): Ditto.
6295         (sse5i_vmfnmadd<mode>4): Ditto.
6296         (sse5i_vmfnmsub<mode>4): Ditto.
6297         (mulv16qi3): Add SSE5 support.
6298         (mulv4si3): Ditto.
6299         (sse5_mulv4si3): New insn for 32-bit multiply support on SSE5.
6300         (sse2_mulv4si3): Disable if SSE5.
6301         (sse4_1_roundpd): Use TARGET_ROUND instead of TARGET_SSE4_1.
6302         (sse4_1_roundps): Ditto.
6303         (sse4_1_roundsd): Ditto.
6304         (sse4_1_roundss): Ditto.
6305         (sse_maskcmpv4sf3): Disable if SSE5 so the SSE5 instruction will
6306         be generated.
6307         (sse_maskcmpsf3): Ditto.
6308         (sse_vmmaskcmpv4sf3): Ditto.
6309         (sse2_maskcmpv2df3): Ditto.
6310         (sse2_maskcmpdf3): Ditto.
6311         (sse2_vmmaskcmpv2df3): Ditto.
6312         (sse2_eq<mode>3): Ditto.
6313         (sse2_gt<mode>3): Ditto.
6314         (sse5_pcmov_<mode>): Add SSE5 support.
6315         (vec_unpacku_hi_v16qi): Ditto.
6316         (vec_unpacks_hi_v16qi): Ditto.
6317         (vec_unpacku_lo_v16qi): Ditto.
6318         (vec_unpacks_lo_v16qi): Ditto.
6319         (vec_unpacku_hi_v8hi): Ditto.
6320         (vec_unpacks_hi_v8hi): Ditto.
6321         (vec_unpacku_lo_v8hi): Ditto.
6322         (vec_unpacks_lo_v8hi): Ditto.
6323         (vec_unpacku_hi_v4si): Ditto.
6324         (vec_unpacks_hi_v4si): Ditto.
6325         (vec_unpacku_lo_v4si): Ditto.
6326         (vec_unpacks_lo_v4si): Ditto.
6327         (sse5_pmacsww): New SSE5 intrinsic insn.
6328         (sse5_pmacssww): Ditto.
6329         (sse5_pmacsdd): Ditto.
6330         (sse5_pmacssdd): Ditto.
6331         (sse5_pmacssdql): Ditto.
6332         (sse5_pmacssdqh): Ditto.
6333         (sse5_pmacsdqh): Ditto.
6334         (sse5_pmacsswd): Ditto.
6335         (sse5_pmacswd): Ditto.
6336         (sse5_pmadcsswd): Ditto.
6337         (sse5_pmadcswd): Ditto.
6338         (sse5_pcmov_<move>): Conditional move support on SSE5.
6339         (sse5_phaddbw): New SSE5 intrinsic insn.
6340         (sse5_phaddbd): Ditto.
6341         (sse5_phaddbq): Ditto.
6342         (sse5_phaddwd): Ditto.
6343         (sse5_phaddwq): Ditto.
6344         (sse5_phadddq): Ditto.
6345         (sse5_phaddubw): Ditto.
6346         (sse5_phaddubd): Ditto.
6347         (sse5_phaddubq): Ditto.
6348         (sse5_phadduwd): Ditto.
6349         (sse5_phadduwq): Ditto.
6350         (sse5_phaddudq): Ditto.
6351         (sse5_phsubbw): Ditto.
6352         (sse5_phsubwd): Ditto.
6353         (sse5_phsubdq): Ditto.
6354         (sse5_pperm): Ditto.
6355         (sse5_pperm_sign_v16qi_v8hi): New insns for pack/unpack with SSE5.
6356         (sse5_pperm_zero_v16qi_v8hi): Ditto.
6357         (sse5_pperm_sign_v8hi_v4si): Ditto.
6358         (sse5_pperm_zero_v8hi_v4si): Ditto.
6359         (sse5_pperm_sign_v4si_v2di): Ditto.
6360         (sse5_pperm_sign_v4si_v2di): Ditto.
6361         (sse5_pperm_pack_v2di_v4si): Ditto.
6362         (sse5_pperm_pack_v4si_v8hi): Ditto.
6363         (sse5_pperm_pack_v8hi_v16qi): Ditto.
6364         (sse5_perm<mode>): New SSE5 intrinsic insn.
6365         (rotl<mode>3): Ditto.
6366         (sse5_rotl<mode>3): Ditto.
6367         (sse5_ashl<mode>3): Ditto.
6368         (sse5_lshl<mode>3): Ditto.
6369         (sse5_frcz<mode>2): Ditto.
6370         (sse5s_frcz<mode>2): Ditto.
6371         (sse5_cvtph2ps): Ditto.
6372         (sse5_cvtps2ph): Ditto.
6373         (sse5_vmmaskcmp<mode>3): Ditto.
6374         (sse5_com_tf<mode>3): Ditto.
6375         (sse5_maskcmp<mode>3): Ditto.
6376         (sse5_maskcmp_uns<mode>3): Ditto.
6377         (sse5_maskcmp_uns2<mode>3): Ditto.
6378         (sse5_pcom_tf<mode>3): Ditto.
6379
6380         * config/i386/predicates.md (sse5_comparison_float_operator):
6381         New predicate to match the comparison operators supported by
6382         the SSE5 com instruction.
6383         (ix86_comparison_int_operator): New predicate to match just the
6384         signed int comparisons.
6385         (ix86_comparison_uns_operator): New predicate to match just the
6386         unsigned int comparisons.
6387
6388         * doc/invoke.texi (-msse5): Add documentation.
6389         (-mfused-madd): Ditto.
6390
6391         * doc/extend.texi (x86 intrinsics): Document new SSE5 intrinsics.
6392
6393         * config.gcc (i[34567]86-*-*): Include bmmintrin.h and
6394         mmintrin-common.h.
6395         (x86_64-*-*): Ditto.
6396
6397         * config/i386/cpuid.h (bit_SSE5): Define SSE5 bit.
6398
6399         * config/i386/bmmintrin.h: New file, provide common x86 compiler
6400         intrinisics for SSE5.
6401
6402         * config/i386/smmintrin.h: Move instructions shared with SSE5 to
6403         mmintrin-common.h.
6404
6405         * config/i386/mmintrin-common.h: New file, to contain common
6406         instructions between SSE4.1 and SSE5.
6407
6408         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration): Use
6409         FOREACH_FUNCTION_ARGS to iterate over the argument list.
6410         (gen_regparm_prefix): Ditto.
6411
6412         * config/i386/winnt.c (gen_stdcall_or_fastcall_suffix): Use
6413         FOREACH_FUNCTION_ARGS to iterate over the argument list.  Use
6414         prototype_p to determine if a function is prototyped.
6415
6416 2009-08-25 Ville Voutilainen <ville.voutilainen@gmail.com>
6417
6418         * c-common.c (c_common_reswords) add the alignof keyword,
6419         with same RID as __alignof and __alignof__
6420
6421 2009-08-25  Anatoly Sokolov  <aesok@post.ru>
6422
6423         * hooks.h (hook_bool_const_int_const_int_true): Declare.
6424         * hooks.c (hook_bool_const_int_const_int_true): New function.
6425         * target.h (struct gcc_target): Add can_eliminate field.
6426         * target-def.h (TARGET_CAN_ELIMINATE): Define.
6427         (TARGET_INITIALIZER): Use TARGET_CAN_ELIMINATE.
6428         * ira.c (setup_eliminable_regset): Use can_eliminate target hook.
6429         * reload1.c (update_eliminables, init_elim_table): (Ditto.).
6430         (elim_table): Revise comment.
6431         * system.h (CAN_ELIMINATE): Poison.
6432         * defaults.h (CAN_ELIMINATE): Remove.
6433         * doc/tm.texi (CAN_ELIMINATE): Revise documentation.
6434
6435         * config/alpha/vms.h (CAN_ELIMINATE): Remove macro.
6436         * config/alpha/alpha.c (TARGET_CAN_ELIMINATE) [TARGET_ABI_OPEN_VMS]:
6437         Define macro.
6438         (alpha_vms_can_eliminate): Declare as static, change return type to
6439         bool.
6440         * config/alpha/alpha-protos.h (alpha_vms_can_eliminate): Remove.
6441
6442         * config/arm/arm.h (CAN_ELIMINATE): Remove macro.
6443         * config/arm/arm.c (TARGET_CAN_ELIMINATE): Define macro.
6444         (arm_can_eliminate): New function.
6445
6446         * config/avr/avr.h (CAN_ELIMINATE): Remove macro.
6447         * config/avr/avr.c (TARGET_CAN_ELIMINATE): Define macro.
6448         (avr_can_eliminate): Declare as static.
6449         * config/avr/avr-protos.h (avr_can_eliminate): Remove.
6450
6451         * config/bfin/bfin.h (CAN_ELIMINATE): Remove macro.
6452         * config/bfin/bfin.c (TARGET_CAN_ELIMINATE): Define macro.
6453         (bfin_can_eliminate): New function.
6454
6455         * config/crx/crx.h (CAN_ELIMINATE): Remove macro.
6456         * config/crx/crx.c (TARGET_CAN_ELIMINATE): Define macro.
6457         (crx_can_eliminate): New function.
6458
6459         * config/fr30/fr30.h (CAN_ELIMINATE): Remove macro.
6460         * config/fr30/fr30.c (TARGET_CAN_ELIMINATE): Define macro.
6461         (fr30_can_eliminate): New function.
6462
6463         * config/frv/frv.h (CAN_ELIMINATE): Remove macro.
6464         * config/frv/frv.c (TARGET_CAN_ELIMINATE): Define macro.
6465         (frv_can_eliminate): New function.
6466
6467         * config/h8300/h8300.h (CAN_ELIMINATE): Remove macro.
6468         * config/h8300/h8300.c (TARGET_CAN_ELIMINATE): Define macro.
6469         (h8300_can_eliminate): New function.
6470
6471         * config/i386/i386.h (CAN_ELIMINATE): Remove macro.
6472         * config/i386/i386.c (TARGET_CAN_ELIMINATE): Define macro.
6473         (i386_can_eliminate): Declare as static, change return type to bool.
6474         * config/i386/i386-protos.h (i386_can_eliminate): Remove.
6475
6476         * config/ia64/ia64.h (CAN_ELIMINATE): Remove macro.
6477         * config/ia64/ia64.c (TARGET_CAN_ELIMINATE): Define macro.
6478         (ia64_can_eliminate): New function.
6479
6480         * config/iq2000/iq2000.h (CAN_ELIMINATE): Remove macro.
6481         * config/iq2000/iq2000.c (TARGET_CAN_ELIMINATE): Define macro.
6482         (iq2000_can_eliminate): New function.
6483
6484         * config/m32r/m32r.h (CAN_ELIMINATE): Remove macro.
6485         * config/m32r/m32r.c (TARGET_CAN_ELIMINATE): Define macro.
6486         (m32r_can_eliminate): New function.
6487
6488         * config/m68hc11/m68hc11.h (CAN_ELIMINATE): Remove macro.
6489         * config/m68hc11/m68hc11.c (TARGET_CAN_ELIMINATE): Define macro.
6490         (m68hc11_can_eliminate): New function.
6491
6492         * config/m68k/m68k.h (CAN_ELIMINATE): Remove macro.
6493         * config/m68k/m68k.c (TARGET_CAN_ELIMINATE): Define macro.
6494         (m68k_can_eliminate): New function.
6495
6496         * config/mep/mep.h (CAN_ELIMINATE): Remove macro.
6497         * config/mep/mep.c (TARGET_CAN_ELIMINATE): Define macro.
6498         (mep_can_eliminate): New function.
6499
6500         * config/mips/mips.h (CAN_ELIMINATE): Remove macro.
6501         * config/mips/mips.c (TARGET_CAN_ELIMINATE): Define macro.
6502         (mips_can_eliminate): New function.
6503
6504         * config/rs6000/rs6000.h (CAN_ELIMINATE): Remove macro.
6505         * config/rs6000/rs6000.c (TARGET_CAN_ELIMINATE): Define macro.
6506         (rs6000_can_eliminate): New function.
6507
6508         * config/s390/s390.h (CAN_ELIMINATE): Remove macro.
6509         * config/s390/s390.c (TARGET_CAN_ELIMINATE): Define macro.
6510         (s390_can_eliminate): Declare as static.
6511         * config/s390/s390-protos.h (sparc_can_eliminate): Remove.
6512
6513         * config/score/score.h (CAN_ELIMINATE): Remove macro.
6514         * config/score/score.c (TARGET_CAN_ELIMINATE): Define macro.
6515         (score_can_eliminate): New function.
6516
6517         * config/sparc/sparc.h (CAN_ELIMINATE): Remove macro.
6518         * config/sparc/sparc.c (TARGET_CAN_ELIMINATE): Define macro.
6519         (sparc_can_eliminate): Declare as static.
6520         * config/sparc/sparc-protos.h (sparc_can_eliminate): Remove.
6521
6522         * config/stormy16/stormy16.h (CAN_ELIMINATE): Remove macro.
6523         * config/stormy16/stormy16.c (TARGET_CAN_ELIMINATE): Define macro.
6524         (xstormy16_can_eliminate): New function.
6525
6526         * config/v850/v850.h (CAN_ELIMINATE): Remove macro.
6527         * config/v850/v850.c (TARGET_CAN_ELIMINATE): Define macro.
6528         (v850_can_eliminate): New function.
6529
6530 2009-08-25  Uros Bizjak  <ubizjak@gmail.com>
6531
6532         * config/alpha/alpha.md (*cmpdf_ieee_ext[123]): Remove.
6533         (*cmpdf_internal): Enable for all ALPHA_FPTM levels.
6534         (*movdfcc_ext[1234]): Disable for IEEE mode.
6535
6536 2009-08-25  Eric Botcazou  <ebotcazou@adacore.com>
6537
6538         * gimplify.c (prepare_gimple_addressable): New static function.
6539         (gimplify_modify_expr_to_memcpy): Invoke it on the RHS before marking
6540         it addressable.
6541         (gimplify_addr_expr): Invoke it similarly on the operand instead of
6542         manually fiddling with it.
6543
6544 2009-08-25  Michael Matz  <matz@suse.de>
6545
6546         * expr.h (jumpifnot_1, jumpif_1, do_jump_1): Declare.
6547         * dojump.c (do_jump_by_parts_greater): Take two operands instead of
6548         full expression.
6549         (do_jump_by_parts_equality, do_compare_and_jump): Ditto.
6550         (jumpifnot_1, jumpif_1): New wrappers for do_jump_1.
6551         (do_jump): Split out code for simple binary comparisons into ...
6552         (do_jump_1): ... this, taking the individual operands and code.
6553         Change callers to helper function above accordingly.
6554         * expr.c (expand_expr_real_1): Use jumpifnot_1 for simple binary
6555         comparisons.
6556
6557 2009-08-25  Michael Matz  <matz@suse.de>
6558
6559         * expr.h (struct separate_ops, sepops): New type for passing
6560         around an exploded simple expression.
6561         * optabs.c (expand_widen_pattern_expr, expand_vec_shift_expr):
6562         Use this structure instead of expression tree.
6563         (get_vcond_icode, expand_vec_cond_expr_p): Don't take whole
6564         expression, only its type.
6565         (expand_vec_cond_expr): Take type and individual operands instead
6566         of full expression.
6567         * optabs.h (expand_widen_pattern_expr, expand_vec_cond_expr,
6568         expand_vec_shift_expr): Change prototype accordingly.
6569         * tree-vect-stmts.c (vectorizable_condition): Change call of
6570         expand_vec_cond_expr_p to pass only type.
6571         * expr.c (do_store_flags): Change prototype and implementation
6572         to take an exploded expression.
6573         (expand_expr_real_1): New local ops initialized with details
6574         of the full expression.  Use it instead of full
6575         expression in calls to do_store_flags, expand_vec_cond_expr,
6576         expand_widen_pattern_expr and expand_vec_shift_expr.
6577
6578 2009-08-25  Michael Matz  <matz@suse.de>
6579
6580         * expr.c (expand_expr_real_1): New local treeop0, treeop1,
6581         treeop2 initialized with first three operands of the full expression.
6582         Substitute all TREE_OPERAND (exp, [012]) calls with them.
6583
6584 2009-08-25  Kai Tietz  <kai.tietz@onevision.com>
6585
6586         * gcc/gthr-win32.h (__UNUSED_PARAM): Define, if not already present.
6587         (__gthread_objc_condition_allocate): Mark arguments as unused.
6588         (__gthread_objc_condition_deallocate): Likewise.
6589         (__gthread_objc_condition_wait): Likewise.
6590         (__gthread_objc_condition_broadcast): Likewise.
6591         (__gthread_objc_condition_signal): Likewise.
6592         (__gthread_objc_thread_detach): Cast via INT_PTR to pointer.
6593         (__gthread_objc_thread_id): Likewise.
6594
6595 2009-08-25  Janus Weil  <janus@gcc.gnu.org>
6596
6597         PR middle-end/41149
6598         * tree-pretty-print.c (print_call_name): Print the correct call name
6599         for procedure pointer components.
6600
6601 2009-08-24  Steve Ellcey  <sje@cup.hp.com>
6602
6603         * config/ia64/ia64.c (ia64_promote_function_mode): Call
6604         default_promote_function_mode when not VMS.
6605
6606 2009-08-24  Olivier Hainque  <hainque@adacore.com>
6607
6608         * convert.c (convert_to_integer): Don't assume an input pointer is
6609         POINTER_SIZE wide.  Fetch from the type instead.
6610
6611 2009-08-24  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
6612
6613         * configure.ac (AC_PREREQ): Bump to 2.64.
6614
6615 2009-08-24  Rafael Avila de Espindola  <espindola@google.com>
6616
6617         * gcc.c (standard_exec_prefix_1,standard_exec_prefix_2): Remove.
6618         (process_command): Don't search standard_exec_prefix_1 and
6619         standard_exec_prefix_2.
6620
6621 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
6622
6623         * config/arm/arm.c (output_return_instruction): Handle for
6624         unified syntax.
6625
6626 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
6627
6628         * config/arm/arm.c (arm_select_cc_mode): Handle subreg.
6629
6630 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
6631
6632         * config/arm/vfp.md (*arm_movdi_vfp): Mark as predicable.
6633         (*arm_movdf_vfp): Likewise.
6634
6635 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
6636
6637         * config/arm/neon.md (vashl<mode>3): Rename from ashl<mode>3.
6638         (vashr<mode>3): Rename from ashr<mode>3.
6639         (vlshr<mode>3): Rename from lshr<mode>3.
6640
6641 2009-08-24  Kai Tietz  <kai.tietz@onevision.com>
6642
6643         PR/40786
6644         * c-format.c (format_wanted_type): Add new member scalar_identity_flag.
6645         (check_format_info_main): Use scalar_identify_flag.
6646         (check_format_types): Check for scalar size identity if
6647         scalar_identify_flag is set.
6648         (printf_length_specs): Extend by new field.
6649         (asm_fprintf_length_specs): Likewise.
6650         (gcc_diag_length_specs): Likewise.
6651         (scanf_length_specs): Likewise.
6652         (strfmon_length_specs): Likewise.
6653         (gcc_gfc_length_specs): Likewise.
6654         * config/i386/msformat-c.c (ms_printf_length_specs): Likewise.
6655         (ms_printf_flag_specs): Likewise.
6656         * c-format.h (format_length_info): Add new member scalar_identity_flag.
6657
6658 2009-08-23  Uros Bizjak  <ubizjak@gmail.com>
6659
6660         PR target/40718
6661         * config/i386/i386.c (*call_pop_1): Disable for sibling calls.
6662         (*call_value_pop_1): Ditto.
6663         (*sibcall_pop_1): New insn pattern.
6664         (*sibcall_value_pop_1): Ditto.
6665
6666 2009-08-23  Alan Modra  <amodra@bigpond.net.au>
6667
6668         PR target/41081
6669         * config/rs6000/rs6000.md (rotlsi3_64, ashlsi3_64, lshrsi3_64,
6670         ashrsi3_64): New.
6671
6672 2009-08-23  Alan Modra  <amodra@bigpond.net.au>
6673
6674         PR target/41081
6675         * fwprop.c (try_fwprop_subst): Allow multiple sets.
6676         (get_reg_use_in): New function.
6677         (forward_propagate_subreg): Propagate through subreg of zero_extend
6678         or sign_extend.
6679
6680 2009-08-22  Kaz Kojima  <kkojima@gcc.gnu.org>
6681
6682         * config/sh/t-sh (TARGET_LIBGCC2_CFLAGS): Define.
6683         * config/sh/t-netbsd (TARGET_LIBGCC2_CFLAGS): Add -mieee.
6684
6685 2009-08-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
6686
6687         * configure.ac: Remove --with-datarootdir, --with-docdir,
6688         --with-htmldir switches.  No need to call AC_SUBST for
6689         datarootdir, docdir, htmldir any more.
6690         * configure: Regenerate.
6691         * doc/install.texi (Configuration): Document --datarootdir,
6692         --docdir, --htmldir, --pdfdir; update documentation for
6693         --infodir, --mandir.
6694         (Prerequisites): Bump Autoconf version to 2.64, Automake to 1.11,
6695         M4 to 1.4.6.
6696
6697         * aclocal.m4: Regenerate.
6698         * config.in: Regenerate.
6699         * configure: Regenerate.
6700
6701 2009-08-21  Douglas B Rupp  <rupp@gnat.com>
6702             Olivier Hainque  <hainque@adacore.com>
6703
6704         * config/ia64/ia64.c: Include libfuncs.h.
6705         (TARGET_PROMOTE_FUNCITON_MODE): Define target macro.
6706         (ia64_expand_call): Use reg 25 on VMS.
6707         (ia64_initialize_trampoline): Fix for VMS ABI.
6708         (ia64_function_arg_offset): Always returns 0 when TARGET_ABI_OPEN_VMS.
6709         (ia64_function_arg): Initialize reg 25 on VMS.
6710         Fix OpenVMS ABI issues for varargs.
6711         For OpenVMS, emit the Argument Information register set in the
6712         incoming/sibcall case as well.
6713         (ia64_arg_type): New function.
6714         (ia64_function_arg_advance): Keep track of cum->words.
6715         Fix OpenVMS ABI issues for varargs.
6716         (ia64_function_value): On VMS, promote mode of non-aggregate types.
6717         (ia64_override_options): Set flag_no_common on VMS.
6718         (ia64_init_builtins): Disable FWRITE builtin.
6719         (ia64_asm_output_external): Call DO_CRTL_NAMES.
6720         (ia64_vms_init_libfuncs): Add decc$ routines.
6721         (ia64_vms_valid_pointer_mode): New function.
6722         (ia64_struct_value_rtx): Allways NULL_RTX on VMS.
6723         (ia64_promote_function_mode): New function
6724         * config/ia64/ia64.h (TARGET_ABI_OPEN_VMS): Define as 0 for default.
6725         (LONG_DOUBLE_TYPE_SIZE): Force to 64 on VMS.
6726         (LIBCGC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
6727         (INIT_CUMULATIVE_ARGS): Add atypes for VMS.
6728         (INIT_CUMULATIVE_INCOMING_ARGS): Likewise.
6729         (ASM_OUTPUT_DEF): Use ISDIGIT instead of isdigit.
6730         Suppress trailing '#' if VALUE is numeric.
6731         * config/ia64/vms.h (PROMOTE_FUNCTION_MODE): Remove, code moved to
6732         ia64_promote_function_mode.
6733         (TARGET_VALID_POINTER_MODE): Define.
6734
6735 2009-08-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
6736
6737         PR target/40671
6738         * config/rs6000/rs6000.c (rs6000_override_options): Use
6739         TARGET_64BIT instead of TARGET_POWERPC64 to set the size of pointers.
6740
6741         PR target/41145
6742         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Fix
6743         reporting of vector + decimal/boolean/complex error.
6744
6745 2009-08-21  Jakub Jelinek  <jakub@redhat.com>
6746
6747         * config/rs6000/rs6000.c (rs6000_init_builtins): Fix type of
6748         __vector double TYPE_DECL.
6749
6750 2009-08-21  Richard Earnshaw  <rearnsha@arm.com>
6751
6752         * arm.h (MACHMODE): New define.  Include insn-modes.h if available.
6753         (CUMULATIVE_ARGS): Use MACHMODE for declaration of aapcs_vfp_mode.
6754         * arm.c (aapcs_vfp_is_call_or_return_candidate): Change base_mode
6755         to pointer to enum machine_mode.  Update all callers as needed.
6756
6757 2009-08-21 Uros Bizjak <ubizjak@gmail.com>
6758
6759         * config/alpha/alpha.md (exception_receiver): Emit alternative
6760         GP load sequence if flag_reorder_blocks_and_partition is set.
6761         (*exception_receiver_2): Also enable when
6762         flag_reorder_blocks_and_partition is set.
6763
6764 2009-08-20  Matt Rice  <ratmice@gmail.com>
6765             Diego Novillo  <dnovillo@google.com>
6766
6767         * Makefile.in (PLUGIN_HEADERS): Include incpath.h and
6768         tree-ssa-sccvn.h.
6769
6770 2009-08-20  Richard Guenther  <rguenther@suse.de>
6771
6772         * c-objc-common.h (LANG_HOOKS_DUP_LANG_SPECIFIC_DECL): Do not define.
6773         * c-tree.h (c_dup_lang_specific_decl): Remove.
6774         (struct lang_decl, struct lang_type): Move definitions ...
6775         * c-lang.h: ... here.  New file.
6776         * c-decl.c: Include c-lang.h.
6777         (c_dup_lang_specific_decl): Remove.
6778         * c-typeck.c: Include c-lang.h.
6779         * Makefile.in (c-decl.o): Add c-lang.h dependency.
6780         (c-typeck.o): Likewise.
6781         * c-config-lang.in (gtfiles): Add c-lang.h.
6782         * gengtype.c (get_output_file_with_visibility): Handle c-lang.h
6783         like c-tree.h.
6784
6785 2009-08-20  Uros Bizjak  <ubizjak@gmail.com>
6786
6787         * config/alpha/alpha.c (alpha_end_function): Do not clear
6788         crtl->emit structure and free insn locators if cfun->is_thunk is true,
6789         this is now handled in generic code.
6790
6791 2009-08-20  Andreas Krebbel  <krebbel1@de.ibm.com>
6792
6793         * config/s390/s390.c (Z10_PREDICT_DISTANCE): New macro.
6794         (s390_z10_fix_long_loop_prediction): New function.
6795         (s390_z10_optimize_cmp): INSN walk moved to callee - s390_reorg.
6796         (s390_reorg): Walk over the INSNs and invoke
6797         s390_z10_fix_long_loop_prediction and s390_z10_optimize_cmp.
6798
6799 2009-08-20  Andreas Krebbel  <krebbel1@de.ibm.com>
6800
6801         * config/s390/s390.md ("*brx_stage1_<GPR:mode>", "*brxg_64bit",
6802         "*brx_64bit", "*brx_31bit"): New patterns.
6803         * config/s390/s390.c ('E'): New output modifier.
6804
6805 2009-08-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
6806             Richard Earnshaw  <richard.earnshaw@arm.com>
6807
6808         * config/arm/arm.c (arm_emit_movpair): Handle CONST_INT.
6809         * config/arm/arm.md (*arm_movtas_ze): New pattern for movt.
6810
6811 2009-08-19  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6812
6813         * pa.md (reload_inhi, reload_outhi, reload_inqi, reload_outqi): New
6814         patterns.
6815         * pa.c (emit_move_sequence): Check if address of operand1 is valid
6816         for mode mode of operand0 when doing secondary reload for SAR.
6817
6818 2009-08-19  Jakub Jelinek  <jakub@redhat.com>
6819
6820         PR middle-end/41123
6821         * expr.c (expand_expr_real_1) <normal_inner_ref>: Handle all kinds
6822         of CONCAT, not just bitpos 0 bitsize size of the whole CONCAT.
6823
6824 2009-08-19  Jason Merrill  <jason@redhat.com>
6825
6826         * doc/invoke.texi (C++ Dialect Options): Note change of minimum
6827         supported template depth in C++0x.
6828
6829 2009-08-19  Jakub Jelinek  <jakub@redhat.com>
6830
6831         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Don't call
6832         free_after_compilation.
6833         * config/score/score7.c (score7_output_mi_thunk): Likewise.
6834         * config/score/score3.c (score3_output_mi_thunk): Likewise.
6835         * config/ia64/ia64.c (ia64_output_mi_thunk): Likewise.
6836         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
6837         * config/sh/sh.c (sh_output_mi_thunk): Likewise.
6838         * config/m68k/m68k.c (m68k_output_mi_thunk): Likewise.
6839         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
6840
6841 2009-08-19  Ian Lance Taylor  <iant@google.com>
6842
6843         * doc/md.texi (Insn Canonicalizations): Correct canonicalization
6844         of (plus (mult (neg B) C) A).
6845
6846 2009-08-18  Michael Matz  <matz@suse.de>
6847
6848         * omp-low.c (optimize_omp_library_calls): Use types_compatible_p
6849         instead of comparing TYPE_MAIN_VARIANT for equality.
6850         * tree-vect-patterns.c (vect_recog_dot_prod_pattern,
6851         vect_recog_widen_mult_pattern, vect_recog_widen_sum_pattern): Ditto.
6852         * tree-vect-loop.c (vect_is_simple_reduction): Ditto.
6853         * gimplify.c (goa_lhs_expr_p): Ditto and use
6854         STRIP_USELESS_TYPE_CONVERSION.
6855
6856 2009-08-18  Michael Matz  <matz@suse.de>
6857
6858         * tree-ssa-structalias.c (create_variable_info_for): Also mark
6859         first field in a struct.
6860         (intra_create_variable_infos): Don't deal with flag_argument_noalias.
6861
6862 2009-08-18  Uros Bizjak  <ubizjak@gmail.com>
6863
6864         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Allocate insn
6865         locators before emit_insn is called.  Remove assert that
6866         cfun->is_thunk.
6867         (alpha_end_function): Clear crtl->emit structure and free insn
6868         locators if cfun->is_thunk is true.
6869
6870 2009-08-18  Jason Merrill  <jason@redhat.com>
6871
6872         * config/elfos.h (ASM_DECLARE_OBJECT_NAME): Use gnu_unique_object
6873         type if available.
6874         * configure.ac: Test for it.
6875         * configure, config.in: Regenerate.
6876         * doc/install.texi: Document --enable-gnu-unique-object.
6877
6878 2009-08-18  Richard Guenther  <rguenther@suse.de>
6879
6880         PR middle-end/41094
6881         * builtins.c (fold_builtin_pow): Fold pow(pow(x,y),z) to
6882         pow(x,y*z) only if x is nonnegative.
6883
6884 2009-08-18  Jakub Jelinek  <jakub@redhat.com>
6885
6886         * bb-reorder.c (fix_up_fall_thru_edges): Only call invert_jump
6887         on jumps.
6888
6889         PR target/40971
6890         * config/rs6000/rs6000.c (rs6000_legitimize_address): For
6891         [DT][FDI]mode ensure the offset isn't 4/8/12 bytes below 0x8000.
6892
6893 2009-08-17  DJ Delorie  <dj@redhat.com>
6894
6895         * config/m32c/m32c.md (UNS_FSETB, UNS_FREIT): New.
6896         * config/m32c/prologue.md (epilogue_freit): New.
6897         (fset_b): New.
6898         * config/m32c/m32c.c (m32c_function_needs_enter): Add prototype.
6899         (bank_switch_p): Likewise.
6900         (fast_interrupt_p): Likewise.
6901         (interrupt_p): Likewise.
6902         (m32c_conditional_register_usage): Round memregs size up.
6903         (need_to_save): We only need to save $a0 when we use ENTER.
6904         (interrupt_p): Check for fast_interrupt too.
6905         (bank_switch_p): New.
6906         (fast_interrupt_p): New.
6907         (m32c_attribute_table): Add bank_switch and fast_interrupt.
6908         (m32c_emit_prolog): Support bank switching and fast interrupts.
6909         * doc/extend.texi (Function Attributes): Add bank_switch and
6910         fast_interrupt.
6911
6912 2009-08-17  Douglas B Rupp  <rupp@gnat.com>
6913
6914         * config/alpha/alpha.c (vms_valid_pointer_mode): New function.
6915         * config/alpha/vms.h (TARGET_VALID_POINTER_MODE): Define.
6916
6917 2009-08-16  Douglas B Rupp  <rupp@gnat.com>
6918
6919         * doc/invoke.texi (Target options): Add new option list for IA-64/VMS.
6920         (menu): Add IA-64/VMS Options.
6921         (IA-64/VMS Options): Likewise.
6922
6923 2009-08-16  Richard Sandiford  <rdsandiford@googlemail.com>
6924
6925         PR target/38599
6926         * config/mips/mips.md (*lwxs): Use :P for pointer values.
6927
6928 2009-08-16  Richard Sandiford  <rdsandiford@googlemail.com>
6929
6930         * config/mips/mips-protos.h (mips_push_asm_switch): New function.
6931         (mips_pop_asm_switch): Likewise.
6932         * config/mips/mips.c (set_noreorder, set_nomacro, set_noat): Replace
6933         with...
6934         (mips_noreorder, mips_nomacro, mips_noat): ...these new variables.
6935         (mips_push_asm_switch_1, mips_pop_asm_switch_1): New functions.
6936         (mips_push_asm_switch, mips_pop_asm_switch): Likewise.
6937         (mips_print_operand_punctuation): Use them.  Check mips_noreorder
6938         instead of set_noreorder.
6939         (mips_output_function_prologue): Use the new functions.
6940         (mips_output_function_epilogue): Likewise.
6941         (mips_need_noat_wrapper_p): New function, split out from...
6942         (mips_final_prescan_insn, mips_final_postscan_insn): ...here.
6943         Use mips_push_asm_switch and mips_pop_asm_switch.
6944         * config/mips/mips.h (FUNCTION_PROFILER): Use mips_push_asm_switch
6945         and mips_pop_asm_switch.
6946         (ASM_OUTPUT_REG_POP): Likewise.
6947         (DBR_OUTPUT_SEQEND): Remove boilerplate comment.
6948         Use mips_pop_asm_switch.
6949         (mips_asm_switch): New structure.
6950         (set_noreorder, set_nomacro): Replace with...
6951         (mips_noreorder, mips_nomacro, mips_noat): ...these new variables.
6952         * config/mips/mips.md (fix_truncdfsi2_macro): Use mips_nomacro
6953         instead of set_nomacro.
6954         (fix_truncsfsi2_macro): Likewise.
6955         (cprestore): Likewise.
6956         (hazard): Use mips_noreorder instead of set_noreorder.
6957         * config/mips/sdemtk.h (FUNCTION_PROFILER): As for mips.h.
6958
6959 2009-08-16  Uros Bizjak  <ubizjak@gmail.com>
6960
6961         * config/alpha/alpha.c (alpha_end_function): Handle NULL_RTX returned
6962         from prev_active_insn.
6963
6964 2009-08-16  Anatoly Sokolov  <aesok@post.ru>
6965
6966         * config/avr/avr.h (AVR_HAVE_8BIT_SP): New macros.
6967         * config/avr/avr.c (avr_override_options): Initialize
6968         avr_current_arch variable.
6969         (avr_cpu_cpp_builtins): Define __AVR_HAVE_8BIT_SP__ or
6970         __AVR_HAVE_16BIT_SP__ according to the device type.
6971         (expand_prologue, output_movhi): Use AVR_HAVE_8BIT_SP instead of
6972         TARGET_TINY_STACK.
6973         (expand_epilogue): Use correct QI mode frame pointer for tiny stack.
6974         Use AVR_HAVE_8BIT_SP instead of TARGET_TINY_STACK.
6975
6976 2009-08-16  Dodji Seketeli  <dodji@redhat.com>
6977
6978         PR debug/37801
6979         * gcc/dwarf2out.c (gen_inlined_subroutine_die): Concentrate on
6980         generating inlined subroutine die only. We shouldn't be
6981         called for anything else.
6982         (gen_block_die): Don't generate inline subroutine debug info for
6983         abstract blocks.
6984
6985 2009-08-15  Sebastian Pop  <sebastian.pop@amd.com>
6986
6987         * graphite-poly.c (print_pbb): Print PBB index.
6988
6989 2009-08-15  Sebastian Pop  <sebastian.pop@amd.com>
6990
6991         PR middle-end/40981
6992         * graphite-interchange.c (ppl_max_for_le): Moved...
6993         * graphite-poly.c (pbb_number_of_iterations): Call ppl_max_for_le.
6994         * graphite-ppl.c (ppl_max_for_le): ... here.  Correct the use of
6995         ppl_Pointset_Powerset_C_Polyhedron_maximize.
6996         * graphite-ppl.h (ppl_max_for_le): Declared.
6997
6998 2009-08-14  Olatunji Ruwase <tjruwase@google.com>
6999
7000         * doc/extend.texi (Symbol-Renaming Pragmas): redefine_extname is
7001         supported on all platforms.
7002         * target.h (struct gcc_target): Remove handle_pragma_redefine_extname.
7003         * c-cppbuiltin.c: Remove use of targetm.handle_pragma_redefine_extname.
7004         * c-pragma.c: Likewise.
7005         * target-def.h (TARGET_INITIALIZER): Remove
7006         TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME.
7007         * config/sol2.h: Remove use of TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME.
7008
7009 2009-08-14  Douglas B Rupp  <rupp@gnat.com>
7010
7011         * config/ia64/fde-vms.c: New file.
7012         * config/ia64/fde-glibc.c (_Unwind_FindTableEntry): Add dummy arg.
7013         * config/ia64/unwind-ia64.c (UNW_ accessors): Move to unwind-ia64.h
7014         (MD_UNW_COMPATIBLE_PERSONALITY_P): Provide default.
7015         (uw_frame_state_for): Only register a personality routine if it is
7016         known to be compatible with our expectations.
7017         (_Unwind_FindEnclosingFunction, uw_frame_state_for):
7018         Declare unw_table_entry stack variable and
7019         mod all calls to _Unwind_FindTableEntry to add arg.
7020         * config/ia64/unwind-ia64.h (UNW_ accessors): Move here.
7021         (_Unwind_FindTableEntry): Add arg to prototype.
7022
7023 2009-08-14  Eric Botcazou  <ebotcazou@adacore.com>
7024
7025         * config/ia64/unwind-ia64.c (struct _Unwind_Context): Add new
7026         field 'signal_pfs_loc'.
7027         (uw_frame_state_for): Remove duplicate code dealing with leaf
7028         procedures without unwind info.
7029         If in the frame after unwinding through a signal handler, restore
7030         the AR.PFS register instead of the CFM if AR.PFS has not been saved.
7031         * config/ia64/linux-unwind.h (ia64_fallback_frame_state): Do not set
7032         'pfs_loc' to the AR.PFS location in the signal context; instead
7033         set 'signal_pfs_loc'.
7034         Manually generate the unwind info for the AR.PFS register.
7035         (ABI_MARKER_OLD_LINUX_SIGTRAMP, ABI_MARKER_OLD_LINUX_INTERRUPT,
7036         ABI_MARKER_LINUX_SIGTRAMP, ABI_MARKER_LINUX_INTERRUPT): Define.
7037         (ia64_handle_unwabi): Test 'fs->unwabi' against them.
7038         Do not set 'pfs_loc' to the AR.PFS location in the signal context;
7039         instead set 'signal_pfs_loc'.
7040         Remove code preventing the AR.PFS register from being restored
7041         from the signal context.
7042
7043 2009-08-14  Douglas B Rupp  <rupp@gnat.com>
7044             Tristan Gingold  <gingold@adacore.com>
7045
7046         * config.gcc (ia64-hp-*vms*): Insert ia64/t-ia64 in tmake_file.
7047         * config/ia64/t-vms: New file.
7048         * config/ia64/vms64.h: New file.
7049         * config/ia64/vms.h: New file.
7050         * config/ia64/vms-crtinit.asm: New file.
7051         * config/ia64/vms_symvec_libgcc_s.opt: New file.
7052         * config/ia64/vms-unwind.h: New file.
7053
7054 2009-08-14  Uros Bizjak  <ubizjak@gmail.com>
7055
7056         * config/alpha/alpha.c (alpha_emit_conditional_move): Handle
7057         TFmode compares.
7058
7059 2009-08-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7060
7061         PR middle-end/30789
7062         * builtins.c (do_mpc_arg2): Make extern, define for any MPC version.
7063         Move declaration...
7064         * real.h (do_mpc_arg2): ... here.
7065         * fold-const.c (const_binop): Use MPC for complex MULT_EXPR
7066         and RDIV_EXPR.
7067
7068 2009-08-14  Rafael Avila de Espindola  <espindola@google.com>
7069
7070         * final.c (add_debug_prefix_map): Don't use GC memory for
7071         old_prefix and new_prefix.
7072
7073 2009-08-14  Richard Guenther  <rguenther@suse.de>
7074
7075         * ipa-prop.c (compute_complex_pass_through): If we cannot
7076         compute a non-varying offset for IPA_JF_ANCESTOR punt.
7077
7078 2009-08-14  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
7079
7080         * c-lex.c (c_lex_with_flags): Increase size of local variable
7081         to avoid memory clobber.
7082
7083 2009-08-14  Paolo Bonzini  <bonzini@gnu.org>
7084
7085         PR target/40934
7086         * config/i386/i386.c (ix86_fp_comparison_strategy):
7087         Only enable/disable sahf at function granularity.
7088
7089 2009-08-14  Hans-Peter Nilsson  <hp@axis.com>
7090
7091         PR rtl-optimization/41064
7092         * reload1.c (reload_as_needed): Don't call extract_insn
7093         for known invalid replacements after calling
7094         validate_replace_rtx_group and verify_changes.
7095
7096 2009-08-14  Uros Bizjak  <ubizjak@gmail.com>
7097
7098         PR target/41019
7099         * config/i386/sse.md (SSEMODE124C8): New mode iterator.
7100         (vcond<SSEMODEF2P:mode>): Assert that operation is supported by
7101         ix86_expand_fp_vcond.
7102         (vcond<SSEMODE124C8:mode>): Use SSEMODE124C8 instead of SSEMODE124.
7103         Assert that operation is supported by ix86_expand_int_vcond.
7104         (vcondu<SSEMODE124C8:mode>): Ditto.
7105
7106 2009-08-13  DJ Delorie  <dj@redhat.com>
7107
7108         * config/i386/djgpp-stdint.h: New.
7109         * config.gcc (djgpp): Use it.
7110
7111 2009-08-13  Kaz Kojima  <kkojima@gcc.gnu.org>
7112
7113         * config/sh/sh.c (sh_override_options): When flag_exceptions or
7114         flag_unwind_tables is on, turn flag_reorder_blocks_and_partition off.
7115
7116 2009-08-13  Ghassan Shobaki  <ghassan.shobaki@amd.com>
7117
7118         * tree-ssa-loop-prefetch.c
7119         (prune_ref_by_group_reuse): Enhance probabilistic analysis
7120         for long-stride pruning.
7121         (compute_miss_rate): New function to compute the probability
7122         that two memory references access different cache lines.
7123
7124 2009-08-13  Dave Korn  <dave.korn.cygwin@gmail.com>
7125
7126         * gcc/config/i386/cygwin.h (LINK_SPEC): Add --enable-auto-image-base.
7127
7128 2009-08-13  Richard Guenther  <rguenther@suse.de>
7129
7130         PR middle-end/41047
7131         * tree-ssa-ccp.c (ccp_fold): When folding pointer additions
7132         use the constant pointer type.
7133         * gimplify.c (canonicalize_addr_expr): Canonicalize independent
7134         of CV qualifiers on the target pointer type.
7135         * tree-ssa.c (useless_type_conversion_p): Move incomplete pointer
7136         conversion check before restrict check.
7137
7138 2009-08-12  Kaz Kojima  <kkojima@gcc.gnu.org>
7139
7140         PR target/41029
7141         * config/sh/sh.md (reload_outdf__RnFRm+4): Fix thinko.
7142
7143 2009-08-12  Kaz Kojima  <kkojima@gcc.gnu.org>
7144
7145         * config/sh/sh.c (sh_promote_function_mode): Add ATTRIBUTE_UNUSED.
7146
7147 2009-08-12  Richard Guenther  <rguenther@suse.de>
7148
7149         PR tree-optimization/41011
7150         * ipa-cp.c (ipcp_lattice_from_jfunc): Deal with failing fold
7151         and reference constructing.
7152
7153 2009-08-12  Xinliang David Li  <davidxl@google.com>
7154
7155         PR tree-optimization/41012
7156         * tree-flow.h : New external interface.
7157         * gimple-low.c (check_call_arg): Change to public function.
7158         Remove argument mismatch check in lowering.
7159         * tree-inline.h (tree_can_inline_p): Interface change.
7160         * tree-inline.c (tree_can_inline_p): Fold argument mismatch check
7161         into this function.
7162         * ipa-inline.c (cgraph_decide_inlining_of_small_functions):
7163         Call change to tree_can_inline_p function.
7164         (cgraph_decide_inlining_incrementally): Ditto.
7165
7166 2009-08-12  Richard Sandiford  <rdsandiford@googlemail.com>
7167
7168         PR tree-optimization/41031
7169         * tree-outof-ssa.c (insert_value_copy_on_edge): Use promote_decl_mode
7170         on the partition variable rather than promote_mode on the source
7171         type.  Assert that the partition variable's type has the same
7172         mode as the source value's.
7173
7174 2009-08-12  Paolo Bonzini  <bonzini@gnu.org>
7175
7176         * doc/tm.texi (TARGET_PROMOTE_FUNCTION_MODE): Add documentation
7177         for for_return == 2.
7178         * function.c (assign_parm_setup_reg): Use for_return == 2, improve
7179         comments.
7180         * calls.c (expand_call): Fix typo.
7181         * explow.c (promote_decl_mode): Use for_return == 2 for RESULT_DECL
7182         and PARM_DECL.
7183         * stmt.c (expand_value_return): Use promote_function_mode to copy out
7184         of pseudo.
7185         * targhooks.c (default_promote_function_mode): Handle for_return == 2.
7186         * config/cris/cris.c (cris_promote_function_mode): Likewise.
7187         * config/mmix/mmix.c (mmix_promote_function_mode): Likewise.
7188         * config/pa/pa.c (pa_promote_function_mode): Likewise.
7189
7190 2009-08-12  Andrew Haley  <aph@redhat.com>
7191
7192         * config/arm/arm.c (arm_init_libfuncs): Add __sync_synchronize.
7193
7194 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
7195
7196         PR bootstrap/40103
7197         * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
7198
7199 2009-08-12  Richard Guenther  <rguenther@suse.de>
7200
7201         * alias.c (get_alias_set): Honor TYPE_STRUCTURAL_EQUALITY_P.
7202         * gimplify.c (gimplify_modify_expr): Do not use
7203         lang_hooks.types_compatible_p.
7204         * tree-ssa.c (useless_type_conversion_p): For aggregates
7205         just return false if the canonical types differ.
7206
7207 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
7208
7209         PR middle-end/40980
7210         * sese.c (convert_for_phi_arg): New.
7211         (add_guard_exit_phis): Use convert_for_phi_arg.
7212
7213 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
7214
7215         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Dont add
7216         unknown subscript upper bounds.
7217
7218 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
7219             Pranav Garg  <pranav.garg2107@gmail.com>
7220
7221         * graphite-interchange.c (gather_access_strides): Removed.
7222         (ppl_max_for_le): New.
7223         (build_linearized_memory_access): New.
7224         (memory_stride_in_loop): New.
7225         (pbb_interchange_profitable_p): Reimplemented.
7226         * graphite-ppl.h (ppl_new_id_map): New.
7227         (ppl_interchange): New.
7228
7229 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
7230
7231         * graphite-interchange.c (compute_subscript): Removed.
7232         (compute_array_size_cstr): Removed.
7233         (compute_array_size_poly): Removed.
7234         (compute_array_size): Removed.
7235         (gather_access_strides_poly): Removed.
7236         (gather_access_strides): Empty.
7237
7238 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
7239
7240         * graphite-dependences.c (dependence_polyhedron_1): Replace
7241         pdr_nb_subscripts with PDR_NB_SUBSCRIPTS.
7242         (graphite_legal_transform_dr): Same.
7243         (graphite_carried_dependence_level_k): Same.
7244         * graphite-poly.c (new_poly_dr): Add a parameter nb_subscripts.
7245         Initialize PDR_NB_SUBSCRIPTS.
7246         (print_pdr_access_layout): Replace pdr_nb_subscripts with
7247         PDR_NB_SUBSCRIPTS.
7248         * graphite-poly.h (struct poly_dr): Add nb_subscripts field.
7249         (PDR_NB_SUBSCRIPTS): New.
7250         (pdr_nb_subscripts): Removed.
7251         (pdr_dim): Simplified.
7252         * graphite-sese-to-poly.c (build_poly_dr): Replace pdr_nb_subscripts
7253         with PDR_NB_SUBSCRIPTS.
7254
7255 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
7256
7257         * graphite-interchange.c (compute_array_size): Remove use of
7258         PDR_DATA_CONTAINER.
7259         * graphite-poly.c (new_poly_dr): Remove argument data_container.
7260         Do not initialize PDR_DATA_CONTAINER.
7261         (print_pdr): Do not print PDR_DATA_CONTAINER.
7262         * graphite-poly.h (struct poly_dr): Remove data_container field.
7263         (PDR_DATA_CONTAINER): Removed.
7264         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Remove use of
7265         PDR_DATA_CONTAINER.
7266         (build_poly_dr): Same.
7267
7268 2009-08-12  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
7269             Sebastian Pop  <sebastian.pop@amd.com>
7270
7271         * graphite-dependences.c (graphite_legal_transform_dr): Work on a
7272         copy of the dependence polyhedron.  Free the temporary objects.
7273         (graphite_carried_dependence_level_k): Free unused objects before
7274         returning.
7275
7276 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
7277
7278         * graphite-blocking.c (scop_do_strip_mine): Call store_scattering.
7279         Early return without analyzing the data dependences if no
7280         transform has been done.  Call restore_scattering if the transform
7281         is not legal.
7282         (graphite-interchange.c): Same.
7283         * graphite-poly.c (print_scattering_function): Test for
7284         PBB_TRANSFORMED.
7285         (graphite_read_transforms): Initialize PBB_TRANSFORMED.
7286         (apply_poly_transforms): Do not gcc_assert that
7287         the transform is legal.
7288         (new_poly_bb): Initialize PBB_TRANSFORMED, PBB_SAVED and PBB_ORIGINAL.
7289         Do not initialize PBB_NB_SCATTERING_TRANSFORM, PBB_NB_LOCAL_VARIABLES,
7290         PBB_TRANSFORMED_SCATTERING, and PBB_ORIGINAL_SCATTERING.
7291         (free_poly_dr): Free PBB_TRANSFORMED, PBB_SAVED, and PBB_ORIGINAL.
7292         * graphite-poly.h (struct poly_scattering): New.
7293         (struct poly_bb): Add original, transformed, and saved fields.
7294         Remove transformed_scattering, original_scattering,
7295         nb_local_variables and nb_scattering_transform fields.
7296         (PBB_ORIGINAL, PBB_TRANSFORMED, PBB_SAVED): New.
7297         (poly_scattering_new): New.
7298         (poly_scattering_free): New.
7299         (poly_scattering_copy): New.
7300         (store_scattering_pbb): New.
7301         (store_scattering): New.
7302         (restore_scattering_pbb): New.
7303         (restore_scattering): New.
7304         * graphite-sese-to-poly.c (build_pbb_scattering_polyhedrons):
7305         Initialize PBB_TRANSFORMED and PBB_ORIGINAL.
7306
7307 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
7308
7309         * graphite-poly.c (print_pbb): Add parentheses in the pretty print.
7310         (print_scop): Same.
7311
7312 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
7313
7314         * Makefile.in (graphite.o): Depends on PREDICT_H.
7315         * graphite.c: Include predict.h.
7316         (graphite_finalize): Call tree_estimate_probability.
7317         * predict.c (predict_loops): Do not call scev_initialize and
7318         scev_finalize.
7319         (tree_estimate_probability_bb): New.
7320         (tree_estimate_probability): Do not initialize loops: move that
7321         code to the driver.  Call tree_estimate_probability_bb.
7322         (tree_estimate_probability_driver): New.
7323         (pass_profile): Use tree_estimate_probability_driver.
7324         * predict.h (tree_estimate_probability): Declared.
7325
7326 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
7327
7328         * graphite-clast-to-gimple.c (gloog): Add time to TV_GRAPHITE_CODE_GEN.
7329         * graphite-dependences.c (graphite_legal_transform): Add time to
7330         TV_GRAPHITE_DATA_DEPS.
7331         (dependency_between_pbbs_p): Same.
7332         * timevar.def (TV_GRAPHITE_DATA_DEPS, TV_GRAPHITE_CODE_GEN): New.
7333
7334 2009-08-12  Andrey Belevantsev  <abel@ispras.ru>
7335
7336         PR rtl-optimization/41033
7337         * alias.c (nonoverlapping_component_refs_p): Punt when strict
7338         aliasing is disabled.
7339
7340 2009-08-11  Adam Nemet  <anemet@caviumnetworks.com>
7341
7342         * config/mips/predicates.md (qi_mask_operand, hi_mask_operand,
7343         si_mask_operand, and_load_operand, low_bitmask_operand,
7344         and_reg_operand, and_operand): New predicates.
7345         * config/mips/constraints.md (Yb, Yh, Yw, Yz): New constraints.
7346         * config/mips/mips.c (and_operands_ok): New function.
7347         * config/mips/mips-protos.h (and_operands_ok): Declare it.
7348         * config/mips/mips.md (move_type): Add ext_ins and logical.
7349         (type): Handle them.
7350         (and<mode>3): Use and_reg_operand as the second operand's predicate.
7351         (*and<mode>3): Add alternatives for lbu, lhu, lwu, <d>ext and
7352         shift_shift.  Remove commutative constraint modifier.
7353         (*and<mode>3_mips16): Add alternatives for lbu, lhu, lwu and
7354         shift_shift.
7355         (*clear_upper32_dext): Remove define_insn_and_split.
7356         (*clear_upper32): Turn this define_insn_and_split ...
7357         (splitter for ANDing register with 0xffff_ffff): .. into this.
7358
7359 2009-08-11  Adam Nemet  <anemet@caviumnetworks.com>
7360
7361         * combine.c (try_widen_shift_mode): Factor out code to check if an
7362         integer constant is a low-order bitmask from here ...
7363         * rtlanal.c (low_bitmask_len): ... to here.
7364         * rtl.h (low_bitmask_len): Declare.
7365
7366 2009-08-11  Uros Bizjak  <ubizjak@gmail.com>
7367
7368         PR target/8603
7369         * config/alpha/alpha.md (addsi3): Remove expander.
7370         (addsi3): Rename from *addsi3_internal insn pattern.
7371         (subsi3): Remove expander.
7372         (subsi3): Rename from *subsi3_internal insn pattern.
7373
7374 2009-08-11  Douglas B Rupp  <rupp@gnat.com>
7375
7376         * config/alpha/alpha.c (alpha_init_builtins): Nullify FWRITE and
7377         FWRITE_UNLOCKED.
7378
7379 2009-08-11  Vasiliy Fofanov  <fofanov@adacore.com>
7380             Eric Botcazou  <botcazou@adacore.com>
7381             Douglas B Rupp  <rupp@gnat.com>
7382
7383         * config/alpha/alpha.c (alpha_return_in_memory): On VMS, ensure
7384         that records that fit in 64 bits are returned by immediate value,
7385         as required by OpenVMS Calling Standard.
7386         (function_value): Adjust for above modification.
7387         (alpha_va_start) <TARGET_ABI_OPEN_VMS>: Use
7388         virtual_incoming_args_rtx as base object, not next_arg.
7389         * config/alpha/vms.h: (DEFAULT_PCC_STRUCT_RETURN): Define as 0.
7390
7391 2009-08-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
7392
7393         * reload.c (find_reloads_subreg_address): Check the original
7394         req_equiv_mem address to detect the case where an address is
7395         not valid in the outer mode.
7396
7397 2009-08-11  Richard Guenther  <rguenther@suse.de>
7398
7399         PR bootstrap/40788
7400         * builtins.c (gimplify_va_arg_expr): Do not call SET_EXPR_LOCATION.
7401
7402 2009-08-10  Douglas B Rupp  <rupp@gnat.com>
7403
7404         * config/alpha/vms.h (OPTIMIZATION_OPTIONS): Remove
7405         (OVERRIDE_OPTIONS): Incorporate removed OPTIMIZATION_OPTIONS.
7406
7407 2009-08-10  Olivier Hainque  <hainqueu@adacore.com>
7408             Douglas B Rupp  <rupp@gnat.com>
7409
7410         * config/alpha/alpha.c (alpha_sa_size): Force procedure type to
7411         PT_STACK when frame_pointer_needed on OpenVMS.
7412         (alpha_pv_save_size, alpha_using_fp): Remove.
7413         (alpha_vms_can_eliminate): New function. Support for CAN_ELIMINATE
7414         with proper processing for PT_NULL.
7415         (alpha_vms_initial_elimination_offset): New function. Support for
7416         INITIAL_ELIMINATION_OFFSET with proper processing for PT_NULL.
7417         (alpha_sa_size): Force procedure type to PT_STACK when
7418         frame_pointer_needed on OpenVMS.
7419         * config/alpha/alpha-protos.h (alpha_pv_save_size): Remove prototype.
7420         (alpha_using_fp): Likewise.
7421         (alpha_vms_can_eliminate): Add prototype.
7422         (alpha_vms_initial_elimination_offset): Likewise.
7423         * config/alpha/vms.h (CAN_ELIMINATE, INITIAL_ELIMINATION_OFFSET):
7424         Call alpha_vms_can_eliminate and alpha_vms_initial_elimination_offset.
7425
7426 2009-08-10  Eric Botcazou  <botcazou@adacore.com>
7427             Douglas B Rupp  <rupp@gnat.com>
7428
7429         * config/alpha/alpha.c (common_object_handler): New function.
7430         (vms_attribute_table): Declare a single attribute "common_object".
7431         (vms_output_aligned_decl_common): New global function.
7432         (SECTION_VMS_OVERLAY): Delete.
7433         (SECTION_VMS_GLOBAL): Likewise.
7434         (SECTION_VMS_INITIALIZE): Likewise.
7435         (vms_asm_named_section): Remove support for above flags.
7436         (vms_section_type_flags): Delete.
7437         (TARGET_SECTION_TYPE_FLAGS): Likewise.
7438         * config/alpha/alpha-protos.h (vms_output_aligned_decl_common): New.
7439         * config/alpha/vms.h (ASM_OUTPUT_ALIGNED_COMMON): Delete.
7440         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New macro.
7441
7442 2009-08-10  SUGIOKA Toshinobu  <sugioka@itonet.co.jp>
7443
7444         PR target/41015
7445         * longlong.h [__sh__] (udiv_qrnnd): Add T register to clobber list.
7446         (sub_ddmmss): Likewise.
7447
7448 2009-08-10  Andreas Tobler  <a.tobler@schweiz.org>
7449
7450         PR bootstrap/41018
7451         * config/rs6000/freebsd.h: Define SVR4_ASM_SPEC. Adjust copyright
7452         year.
7453
7454 2009-08-10  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
7455
7456         PR target/37053
7457         * reload1.c (reload_as_needed): Use cancel_changes to completely
7458         undo a failed replacement attempt.
7459
7460 2009-08-10  Richard Guenther  <rguenther@suse.de>
7461
7462         PR middle-end/41006
7463         * tree-ssa.c (useless_type_conversion_p_1): Fold into ...
7464         (useless_type_conversion_p): ... here.  Require pointer targets
7465         to be compatible.
7466
7467 2009-08-10  Dodji Seketeli  <dodji@redhat.com>
7468
7469         PR c++/40866
7470         * tree-inline.c (copy_statement_list): The resulting copy shouldn't
7471         loose the original type of the statement list.
7472
7473 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
7474
7475         * config/alpha/alpha.c: Include libfuncs.h
7476         (avms_asm_output_extern): New function.
7477         (alpha_init_libfuncs): Init some decc libfuncs.
7478         * config/alpha/alpha-protos.h (avms_asm_output_external): Declare.
7479         * config/alpha/vms.h (ASM_OUTPUT_EXTERNAL): Define.
7480         (DO_CRTL_NAMES): Define.
7481         (LIB_SPEC): Remove.
7482         * config/alpha/vms64.h: (POINTERS_EXTEND_UNSIGNED): Remove undef.
7483         (LONG_TYPE_SIZE): Define.
7484         (TARGET_OS_CPP_BUILTINS): Define with __LONG_POINTERS=1
7485         (SUBTARGET_SWITCHES): Define malloc64 switch.
7486         (TARGET_DEFAULT): Default MASK_MALLOC64 set.
7487         (MASK_RETURN_ADDR): Define.
7488         doc/invoke.texi (mmalloc64): Document switch.
7489
7490 2009-08-09  Olivier Hainque  <hainque@adacore.com>
7491             Douglas B Rupp  <rupp@gnat.com>
7492
7493         * config/alpha/alpha.c (struct machine_function): New flag for VMS,
7494         uses_condition_handler.
7495         (alpha_expand_builtin_establish_vms_condition_handler): New expander.
7496         (alpha_expand_builtin_revert_vms_condition_handler): New expander.
7497         (enum alpha_builtin): New ALPHA_BUILTIN_REVERT_VMS_CONDITION_HANDLER
7498         and ALPHA_BUILTIN_ESTABLISH_VMS_CONDITION_HANDLER values.
7499         (code_for_builtin): New insn codes for the new alpha_builtins.
7500         (alpha_init_builtins): Register the new functions as BUILT_IN_MD.
7501         (alpha_sa_size): Account for uses_condition_handler.
7502         (alpha_expand_prologue): Likewise.
7503         (alpha_start_function): Likewise.
7504         (alpha_expand_epilogue): Likewise.
7505         * config/alpha/alpha-protos.h: Prototype the new alpha.c builtin
7506         establish/revert expanders.
7507         * config/alpha/alpha.h (DWARF_FRAME_REGNUM): Define.
7508         * config/alpha/alpha.md (builtin_establish_vms_condition_handler):
7509         New expander, resorting to the alpha.c associated function.
7510         (builtin_revert_vms_condition_handler): Likewise.
7511         * config/alpha/vms-gcc_shell_handler.c: New file. Implements
7512         __gcc_shell_handler, the static VMS condition handler used as
7513         an indirection wrapper to the current dynamically established
7514         handler.
7515         * config/alpha/vms-unwind.h: Complete rewrite.
7516         * config/alpha/t-vms (LIB2FUNCS_EXTRA): Add vms-gcc_shell_handler.c
7517         * config/alpha/vms.h (MD_UNWIND_SUPPORT):
7518
7519 2009-08-09  Eric Botcazou  <botcazou@adacore.com>
7520             Douglas B Rupp  <rupp@gnat.com>
7521
7522         * config/alpha/alpha.c (alpha_links): Add 'target' field.
7523         (alpha_need_linkage): Handle aliases.  Return function symbol.
7524         (alpha_use_linkage): Rename 'linkage' argument to 'func'.
7525         Use ultimate alias target for the linkage name.
7526         * config/alpha/alpha.md (movmemdi): Use the symbol returned
7527         by alpha_need_linkage for the function symbol.
7528         (setmemdi): Likewise.
7529
7530 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
7531
7532         * config/alpha/alpha.c (TARGET_ASM_UNALIGNED_*_OP): Define if on VMS.
7533         * config/alpha/vms.h (OBJECT_FORMAT_ELF): Define.
7534         (ASM_WEAKEN_LABEL): Define.
7535         (CRT_CALL_STATIC_FUNCTION): Define.
7536         (STARTFILE_SPEC): Add crtbegin.o crtbeginS.o.
7537         (ENDFILE_SPEC): Define.
7538         (INIT_SECTION_ASM_OP): Define.
7539         * config/alpha/vms-dwarf2eh.asm (__EH_FRAME_BEGIN__): Remove.
7540         * config/alpha/t-vms (EXTRA_PARTS): Add crtbegin.o crtbeginS.o
7541         crtend.o crtendS.o.
7542         (MULTILIB_OSDIRNAMES): Define.
7543         (shlib_version): Define.
7544         (SHLIB_EXT): Define.
7545         (SHLIB_OBJS): Define.
7546         (SHLIB_NAME): Define.
7547         (SHLIB_MULTILIB): Define.
7548         (SHLIB_INSTALL): Define.
7549         (SHLIB_SYMVEC): Define.
7550         (SHLIB_SYMVECX2): Define.
7551         (SHLIB_LINK): Define.
7552
7553 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
7554
7555         * config/alpha/alpha.c (alpha_initialize_trampoline):
7556         Initialize VMS trampoline IAW ABI for bounded procedure calls.
7557         (alpha_start_function): Emit transfer address on nested functions
7558         for VMS trampoline call.
7559         * config/alpha/t-vms (LIB2FUNCS_EXTRA): Remove vms_tramp.asm
7560         since no longer used.
7561         * config/alpha/vms-tramp.asm: Remove.
7562         * config/alpha/vms.h (TRAMPOLINE_TEMPLATE): Leave undefined
7563         since now only data initialized at runtime.
7564
7565 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
7566
7567         * config/alpha/vms.h (HANDLE_SYSV_PRAGMA): Define.
7568         (LINK_GCC_C_SEQUENCE_SPEC): Define.
7569         (MD_EXEC_PREFIX): Remove, no longer used.
7570         (MD_STARTFILE_PREFIX): Likewise.
7571         (INCLUDE_DEFAULTS): Likewise.
7572         * config/alpha/t-vms:
7573         (vms-dwarf2.o, vms-dwarf2eh.o): Use GCC_FOR_TARGET to compile.
7574
7575 2009-08-09  Richard Guenther  <rguenther@suse.de>
7576
7577         PR tree-optimization/41016
7578         * tree-ssa-ifcombine.c (get_name_for_bit_test): Fix tuplification bug.
7579         (operand_precision): Remove.
7580         (integral_operand_p): Likewise.
7581         (recognize_single_bit_test): Adjust.
7582
7583 2009-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
7584
7585         * c-common.c (c_fully_fold_internal): Issue a warning if a binary
7586         operation overflows.  Likewise non-cast unary arithmetic.
7587         If one arm of a conditional expression is always taken,
7588         inhibit evaluation warnings for the other arm.  Likewise inhibit
7589         evaluation warnings for the second && or || operand if the first
7590         operand is enough to determine the result.
7591         * c-typeck.c (build_conditional_expr): Apply the same inhibition
7592         rules here.
7593         (build_binary_op): Prevent duplicate evaluation warnings.
7594
7595 2009-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
7596
7597         * tree-out-of-ssa.c (insert_value_copy_on_edge): If the source
7598         and destination have different modes, Use promote_mode to
7599         determine the signedness of the conversion.  Assert that the
7600         promoted source mode matches the destination mode.  Don't pass
7601         the destination and destination mode to expand_expr if the source
7602         mode is different.  Simplify conversion logic.
7603
7604 2009-08-09  Ira Rosen  <irar@il.ibm.com>
7605
7606         PR tree-optimization/41008
7607         * tree-vect-loop.c (vect_is_simple_reduction): Get operands
7608         from condition only in case it's a comparison. Adjust checks.
7609
7610 2009-08-09  Bernd Schmidt  <bernd.schmidt@analog.com>
7611
7612         * tree-dfa.c (renumber_gimple_stmt_uids_in_blocks): New function.
7613         * tree-flow.h (renumber_gimple_stmt_uids_in_blocks): Declare it.
7614         * tree-ssa-loop-ivopts.c (comp_cost): Make COST an integer.
7615         (enum iv_position): Add IP_AFTER_USE and IP_BEFORE_USE.
7616         (dump_cand): Handle them.
7617         (struct iv_cand): New members COST_STEP and AINC_USE.
7618         (stmt_after_increment): Likewise.
7619         (stmt_after_inc_pos): Renamed from stmt_after_ip_original_pos.  All
7620         callers changed.  Use gimple_uid comparison instead of scanning.
7621         (add_candidate_1): When looking for identical candidates, take
7622         AINC_USE into account.  Set it for new candidates.
7623         (force_expr_to_var_cost): Cast target_spill_cost to int.
7624         (get_address_cost): New arguments STMT_AFTER_INC and MAY_AUTOINC.
7625         All callers changed.  Check for availability of autoinc addressing
7626         modes, both in general for a given mode, and in the specific use case.
7627         (get_computation_cost_at): New argument CAN_AUTOINC.  All callers
7628         changed.
7629         (get_computation_cost): Likewise.
7630         (autoinc_possible_for_pair, set_autoinc_for_original_candidates,
7631         add_autoinc_candidates): New static functions.
7632         (add_candidate): Call add_autoinc_candidates for candidates based on
7633         a USE_ADDRESS use.
7634         (find_iv_candidates): Call set_autoinc_for_original_candidates.
7635         (determine_use_iv_cost_address): If we have an autoinc candidate at
7636         the matching use, verify autoinc is possible and subtract the cost
7637         of the candidate's step from the cost.
7638         (determine_iv_cost): Record the cost of the increment in the COST_STEP
7639         member of the candidate.
7640         (tree_ssa_iv_optimize_loop): Swap the calls to determine_iv_costs and
7641         determine_use_iv_costs.  Call renumber_gimple_stmt_uids_in_blocks.
7642
7643 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
7644
7645         * config.build (ia64-hp-*vms*): New target.
7646         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
7647         with ia64-hp-*vms*.
7648         * config.gcc (ia64-hp-*vms*): New target.
7649         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
7650         with ia64-hp-*vms*.
7651         * config.host (ia64-hp-*vms*): New target.
7652         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
7653         with ia64-hp-*vms*.
7654
7655 2009-08-08  Richard Guenther  <rguenther@suse.de>
7656
7657         PR tree-optimization/40991
7658         * tree-ssa-pre.c (eliminate): Delay purging EH edges.
7659
7660 2009-08-08  Richard Sandiford  <rdsandiford@googlemail.com>
7661
7662         * combine.c (gen_lowpart_or_truncate): Exclude CONST_INTs from
7663         mode check.  Do truncations in an integer mode.
7664         (force_to_mode): Handle subregs for all mode types.  Only do
7665         arithmetic simplifications on integer modes.
7666
7667 2009-08-07  Richard Guenther  <rguenther@suse.de>
7668
7669         PR tree-optimization/40999
7670         * tree-ssa-ccp.c (get_symbol_constant_value): Handle CONST_DECLs.
7671         (maybe_fold_reference): Lookup constant initializers.
7672         (fold_gimple_assign): Likewise.
7673
7674 2009-08-07  Richard Guenther  <rguenther@suse.de>
7675
7676         * tree-ssa.c (useless_type_conversion_p_1): Only for types
7677         that require structural equality defer to the langhook.
7678
7679 2009-08-07  Martin Jambor  <mjambor@suse.cz>
7680
7681         * ipa-prop.h (enum jump_func_type): New value IPA_JF_ANCESTOR, changed
7682         comments.
7683         (struct ipa_pass_through_data): New type.
7684         (struct ipa_ancestor_jf_data): New type.
7685         (union jump_func_value): Removed field formal_id, added fields
7686         pass_through and ancestor.
7687         (struct ipa_param_call_note): Changed type of formal_id to int from
7688         unsigned.
7689         * ipa-prop.c (ipa_print_node_jump_functions): Print pass through with
7690         operations jump functions and ancestor jump functions.
7691         (compute_complex_pass_through): New function.
7692         (compute_scalar_jump_functions): Call compute_complex_pass_through,
7693         reflect changes in the jump function strucutre.
7694         (update_jump_functions_after_inlining): Ignore complex pass-through
7695         and ancestor jump functions.
7696         * ipa-cp.c (ipcp_lattice_from_jfunc): Added support for ancestor and
7697         polynomial pass-through with operation jump functions.
7698
7699 2009-08-07  Jakub Jelinek  <jakub@redhat.com>
7700
7701         * dwarf2out.c (output_fde): When doing hot/cold partitioning, use
7702         fde->dw_fde_begin as begin label instead of hot/cold label.
7703         Use LLSDAC label instead of LLSDA for second section lsda.
7704         (dwarf2out_do_cfi_startproc): Add SECOND argument.  Use LLSDAC
7705         label instead of LLSDA if it is true.
7706         (dwarf2out_begin_prologue, dwarf2out_switch_text_section): Adjust
7707         callers.
7708         * except.c (add_call_site, dw2_size_of_call_site_table): Add
7709         SECTION argument.  Use it as index into crtl->eh.call_site_record
7710         array.
7711         (dw2_output_call_site_table): Likewise.  Add CS_FORMAT argument,
7712         use it to determine how to print table entries instead of using
7713         #ifdef HAVE_AS_LEB128.  For SECTION > 0 use hot resp. cold
7714         label instead of normal begin label as base.
7715         (sjlj_assign_call_site_values): Adjust add_call_site caller.
7716         (convert_to_eh_region_ranges): When doing hot/cold partitioning,
7717         ensure no EH range spans between sections and that landing pads
7718         are always in the corresponding section.
7719         (sjlj_size_of_call_site_table, sjlj_output_call_site_table): Adjust
7720         for crtl->eh.call_site_record being an array rather than scalar.
7721         (output_one_function_exception_table): New function, copied
7722         from output_function_exception_table.  Adjust
7723         dw2_size_of_call_site_table, dw2_output_call_site_table
7724         callers.  For SECOND section use *C suffixed labels.
7725         (output_function_exception_table): Call
7726         output_one_function_exception_table and, when doing hot/cold
7727         partitioning, also another time for the second section.
7728         * opts.c: Include except.h.
7729         (decode_options): Allow -freorder-blocks-and-partition with
7730         exceptions, unless SJLJ or TARGET_UNWIND_INFO.
7731         * Makefile.in (opts.o): Depend on $(EXCEPT_H).
7732         * function.h (struct rtl_eh): Change call_site_record from
7733         scalar into array of 2 elements.
7734
7735 2009-08-07  Martin Jambor  <mjambor@suse.cz>
7736
7737         * ipa-prop.c (count_formal_params_1): New function.
7738         (ipa_get_vector_of_formal_parms): New function.
7739         (get_vector_of_formal_parm_types): New function.
7740         (ipa_modify_formal_parameters): New function.
7741         (ipa_modify_call_arguments): New function.
7742         (index_in_adjustments_multiple_times_p): New function.
7743         (ipa_combine_adjustments): New function.
7744         (ipa_dump_param_adjustments): New function.
7745         * ipa-prop.h (struct ipa_parm_adjustment): New type.
7746         (ipa_get_vector_of_formal_parms): Declare.
7747         (ipa_modify_formal_parameters): Declare.
7748         (ipa_modify_call_arguments): Declare.
7749         (ipa_combine_adjustments): Declare.
7750         (ipa_dump_param_adjustments): Declare.
7751         (build_ref_for_offset): Declare.
7752         * Makefile.in (tree-sra.o): Add ipa-prop.h to dependencies.
7753         * tree-sra.c: Include ipa-prop.c.
7754         (build_ref_for_offset): Make public.
7755
7756 2009-08-06  Neil Vachharajani  <nvachhar@gmail.com>
7757
7758         * value-prof.c (init_pid_map): Replace xmalloc with XCNEWVEC.
7759
7760 2009-08-06  Thomas Schwinge  <tschwinge@gnu.org>
7761
7762         * gcc/doc/extend.texi (__builtin_extract_return_address)
7763         (__builtin_frob_return_address): Document.
7764
7765 2009-08-06  Paul Brook  <paul@codesourcery.com>
7766
7767         * config/arm/lib1funcs.asm (ARM_DIV_BODY): Add Thumb-2 implementation.
7768         (udivsi3, aeabi_uidivmod, divsi3, aeabi_idivmod): Only use Thumb-1
7769         implementation on ARMv6-M.
7770
7771 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
7772
7773         * doc/extend.texi (pcs): Document new attribute for ARM.
7774
7775 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
7776
7777         * arm.c (pcs_attribute_args): Comment out unsupported attribute
7778         variants.
7779
7780 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
7781
7782         * arm.c (arm_handle_pcs_attribute): Pass the entire name object to
7783         warning ().
7784
7785 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
7786
7787         * arm.c (arm_handle_pcs_attribute): Use %qE in warning.
7788
7789 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
7790
7791         Merge ARM/hard_vfp_branch to trunk.
7792
7793         2009-08-04  Richard Earnshaw  <rearnsha@arm.com>
7794
7795         * arm.c (libcall_eq): New function.
7796         (libcall_hash): New function.
7797         (add_libcall): New function.
7798         (arm_libcall_uses_aapcs_base): New function.
7799         (arm_libcall_value): Use arm_libcall_uses_aapcs_base to check for
7800         libcalls using the base PCS.
7801         (arm_init_cumulative_args): Likewise.
7802
7803         2009-07-20  Joseph Myers  <joseph@codesourcery.com>
7804
7805         * config/arm/arm.c (arm_libcall_value, arm_init_cumulative_args):
7806         Use base ABI for conversion libfuncs between HFmode and SFmode.
7807
7808         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
7809
7810         * config/arm/arm.c (aapcs_vfp_sub_candidate): Use V2SImode and
7811         V4SImode as representatives of all 64-bit and 128-bit vector
7812         types.  Allow vector types without vector modes.
7813         (aapcs_vfp_is_call_or_return_candidate): Handle vector types
7814         without vector modes like BLKmode.
7815         (aapcs_vfp_allocate): Handle TImode for non-TARGET_NEON like
7816         BLKmode.  Avoid unsupported vector modes or TImode moves for
7817         non-TARGET_NEON.
7818         (aapcs_vfp_allocate_return_reg): Likewise.
7819         (arm_vector_mode_supported_p): Only support V2SImode, V4HImode and
7820         V8QImode if TARGET_NEON || TARGET_IWMMXT.
7821
7822         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
7823
7824         * config/arm/arm.c (arm_handle_pcs_attribute): New.
7825         (arm_get_pcs_model): Pass attribute arguments to
7826         arm_pcs_from_attribute.
7827         (arm_init_cumulative_args): Use base AAPCS for conversions from
7828         floating-point types to DImode.
7829         (arm_attribute_table): Add pcs attribute.
7830         (arm_handle_pcs_attribute): New.
7831         * config/arm/bpabi.h (DECLARE_LIBRARY_RENAMES): When renaming
7832         conversions from floating-point types to DImode, also declare them
7833         to use base AAPCS and declare functions they call to use base
7834         AAPCS and their RTABI names.
7835
7836         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
7837
7838         * doc/invoke.texi (-mfloat-abi=@var{name}): Remove statement about
7839         -mfloat-abi=hard not being supported for VFP.
7840
7841         2009-05-11  Kazu Hirata  <kazu@codesourcery.com>
7842
7843         * config/sparc/sparc.c (sparc_emit_float_lib_cmp): Pass a libcall
7844         SYMBOL_REF to hard_libcall_value.
7845
7846         2009-03-05  Joseph Myers  <joseph@codesourcery.com>
7847             Richard Earnshaw  <rearnsha@arm.com>
7848
7849         * config/arm/arm.c (aapcs_layout_arg): Once a co-processor argument
7850         has been put on the stack, all remaining co-processory arguments for
7851         that co-processor also go on the stack.
7852
7853         2009-03-05  Joseph Myers  <joseph@codesourcery.com>
7854
7855         * config/arm/arm.c (arm_return_in_memory): Handle returning
7856         vectors of suitable size in registers also for AAPCS case.
7857
7858         2009-01-13  Richard Earnshaw <rearnsha@arm.com>
7859
7860         * doc/tm.texi (TARGET_LIBCALL_VALUE): Add missing end statement.
7861
7862         2008-12-09  Richard Earnshaw <rearnsha@arm.com>
7863
7864         ARM Hard-VFP calling convention
7865         * target-def.h (TARGET_LIBCALL_VALUE): New hook.
7866         * target.h (gcc_target): Add libcall_value to table of call hooks.
7867         * targhooks.h (default_libcall_value): Default implementation.
7868         * targhooks.c (default_libcall_value): Likewise.
7869         * doc/tm.texi (TARGET_LIBCALL_VALUE): Document it.
7870         * optabs.c (expand_unop): Use it.
7871         * expr.h (hard_libcall_value): Pass the function RTX through.
7872         * calls.c (emit_library_call_value_1): Update call to
7873         hard_libcall_value.
7874         * explow.c (hard_libcall_value): Use new target hook.
7875         * testsuite/lib/target-supports.exp
7876         (check_effective_target_arm_hard_vfp_ok): New hook.
7877         (check_effective_target_arm_neon_ok): Improve test for neon
7878         availability.
7879         * testsuite/gcc.target/arm/eabi1.c: Only run test in base variant.
7880         * config/arm/arm.c: Include cgraph.h
7881         (TARGET_FUNCTION_VALUE): Override default hook.
7882         (arm_pcs_default): New variable.
7883         (arm_override_options): Don't fault hard calling convention with VFP.
7884         Add support for AAPCS variants.
7885         (arm_function_value): Make static.  Handle AAPCS variants.
7886         (arm_libcall_value): New function.
7887         (arm_apply_result_size): Handle VFP registers in results.
7888         (arm_return_in_memory): Rework all AAPCS variants; handle hard-vfp
7889         conventions.
7890         (pcs_attribute_args): New variable.
7891         (arm_pcs_from_attribute): New function.
7892         (arm_get_pcs_model): New function.
7893         (aapcs_vfp_cum_init): New function.
7894         (aapcs_vfp_sub_candidate): New function.
7895         (aapcs_vfp_is_return_candidate): New function.
7896         (aapcs_vfp_is_call_candidate): New function.
7897         (aapcs_vfp_allocate): New function.
7898         (aapcs_vfp_allocate_return_reg): New function.
7899         (aapcs_vfp_advance): New function.
7900         (aapcs_cp_arg_layout): New variable.
7901         (aapcs_select_call_coproc): New function.
7902         (aapcs_select_return_coproc): New function.
7903         (aapcs_allocate_return_reg): New function.
7904         (aapcs_libcall_value): New function.
7905         (aapcs_layout_arg): New function.
7906         (arm_init_cumulative_args): Initialize AAPCS args data.
7907         (arm_function_arg): Handle AAPCS variants using new interface.
7908         (arm_arg_parital_bytes): Likewise.
7909         (arm_function_arg_advance): New function.
7910         (arm_function_ok_for_sibcall): Ensure that sibling calls agree on
7911         calling conventions.
7912         (arm_setup_incoming_varargs): Handle new AAPCS args data.
7913         * arm.h (NUM_VFP_ARG_REGS): Define.
7914         (LIBCALL_VALUE): Update.
7915         (FUNCTION_VALUE): Delete.
7916         (FUNCTION_VALUE_REGNO_P): Add VFP regs.
7917         (arm_pcs): New enum.
7918         (CUMULATIVE_ARGS): New data to support AAPCS argument marshalling.
7919         (FUNCTION_ARG_ADVANCE): Call arm_function_arg_advance.
7920         (FUNCTION_ARG_REGNO_P): Add VFP regs.
7921         * arm-protos.h (arm_function_arg_advance): Add.
7922         (aapcs_libcall_value): Add.
7923         (arm_function_value): Delete.
7924
7925 2009-08-06  Uros Bizjak  <ubizjak@gmail.com>
7926             H.J. Lu  <hongjiu.lu@intel.com>
7927
7928         PR target/40957
7929         * config/i386/i386.c (standard_sse_mode_p): Remove.
7930         (standard_sse_constant_p): Return 2 for integer mode
7931         vector_all_ones_operand when SSE2 is enabled.
7932         (standard_sse_constant_opcode)<case 2>: Always return [v]pcmpeqd.
7933         (ix86_expand_vector_move): Do not check for negative values from
7934         standard_sse_constant_p.
7935
7936 2009-08-06  Richard Guenther  <rguenther@suse.de>
7937
7938         * tree-ssa.c (useless_type_conversion_p_1): Make function and
7939         array type comparisons frontend independent.
7940         * Makefile.in (tree-ssa.o): Add $(TARGET_H) dependency.
7941         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Always fill
7942         out array reference lower bound and element size operands.
7943         (ao_ref_init_from_vn_reference): Properly compute the offset
7944         for ARRAY_RANGE_REF.
7945         (vn_reference_fold_indirect): Fill out array reference lower
7946         bound and element size operands.
7947         * tree-ssa-pre.c (phi_translate_1): Fail if we have to translate
7948         a non gimple valued reference operand which can happen for
7949         array reference lower bound or element size.
7950         (create_component_ref_by_pieces_1): Properly generate the
7951         element size operand for array references.
7952
7953 2009-08-06  Richard Guenther  <rguenther@suse.de>
7954
7955         PR tree-optimization/40964
7956         * tree.c (iterative_hash_host_wide_int): Export.
7957         * tree.h (iterative_hash_host_wide_int): Declare.
7958         * tree-ssa-structalias.c (heapvar_map): New struct.
7959         (heapvar_map_eq): New function.
7960         (heapvar_map_hash): Likewise.
7961         (heapvar_lookup): Adjust.
7962         (heapvar_insert): Likewise.
7963         (make_constraint_from_heapvar): Allow multiple heap variables
7964         per decl at different offsets.
7965         (init_alias_heapvars): Adjust.
7966
7967 2009-08-04  David Daney  <ddaney@caviumnetworks.com>
7968
7969         * config/mips/mips.h (TARGET_SYNC_AFTER_SC): New macro.
7970         * mips_output_sync_loop (mips_output_sync_loop): Only emit
7971         trailing sync if TARGET_SYNC_AFTER_SC.
7972
7973 2009-08-05  David Daney  <ddaney@caviumnetworks.com>
7974
7975         * gcc/config/mips/sync.md (sync_compare_and_swap<mode>,
7976         compare_and_swap_12, sync_add<mode>, sync_<optab>_12,
7977         sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12,
7978         sync_old_nand_12, sync_new_nand_12, sync_sub<mode>,
7979         sync_old_add<mode>, sync_old_sub<mode>, sync_new_add<mode>,
7980         sync_new_sub<mode>, sync_<optab><mode>, sync_old_<optab><mode>,
7981         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
7982         sync_new_nand<mode>, sync_lock_test_and_set<mode>,
7983         test_and_set_12): Rewrite calls to mips_output_sync_loop.
7984         * gcc/config/mips/mips-protos.h (mips_output_sync_loop): Make
7985         the prototype declaration match the definition.
7986         * gcc/config/mips/mips.c (mips_output_sync_loop):  Emit sync
7987         instructions explicitly.  Add barrier_before and operands
7988         parameters.
7989         * gcc/config/mips/mips.h (MIPS_COMPARE_AND_SWAP,
7990         MIPS_COMPARE_AND_SWAP_12, MIPS_SYNC_OP, MIPS_SYNC_OP_12,
7991         MIPS_SYNC_OLD_OP_12, MIPS_SYNC_NEW_OP_12, MIPS_SYNC_OLD_OP,
7992         MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND,
7993         MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE,
7994         MIPS_SYNC_EXCHANGE_12): Remove sync instructions.
7995
7996 2009-08-05  Andrew Pinski  <pinskia@gmail.com>
7997
7998         * tree-ssa-alias.c: Fix intervals to use [) syntax.
7999
8000 2009-08-05  Uros Bizjak  <ubizjak@gmail.com>
8001             Mikulas Patocka  <mikulas@artax.karlin.mff.cuni.cz>
8002
8003         PR target/40906
8004         * config/i386/i386.c (ix86_split_long_move): Fix push of multi-part
8005         source operand.
8006
8007 2009-08-05  Jakub Jelinek  <jakub@redhat.com>
8008
8009         PR rtl-optimization/40924
8010         * dse.c (canon_address): Before calling cselib_expand_value_rtx
8011         make sure canon_rtx (mem_address) isn't simpler than
8012         canon_rtx (expanded_mem_address).
8013
8014 2009-08-05  Li Feng  <nemokingdom@gmail.com>
8015
8016         * graphite-sese-to-poly.c (build_pbb_drs): Remove build alias set
8017         for each poly_bb_p.
8018         (build_scop_drs): Build alias set for each SCoP.
8019
8020 2009-08-04  Sandra Loosemore  <sandra@codesourcery.com>
8021
8022         * doc/invoke.texi (MIPS Options): Document new 1004K -march options.
8023         * config/mips/mips.c (mips_cpu_info_table): Add 1004K cores.
8024         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Add pattern for 1004K.
8025         (MIPS_ARCH_FLOAT_SPEC): Likewise.
8026         (BASE_DRIVER_SELF_SPECS): Likewise.
8027
8028 2009-08-04  Andrew Pinski  <pinskia@gmail.com>
8029
8030         * tree-ssa-alias.c: Fix some comment typos.
8031
8032 2009-08-04  Kaz Kojima  <kkojima@gcc.gnu.org>
8033
8034         * config/sh/linux-atomic.asm (ATOMIC_BOOL_COMPARE_AND_SWAP,
8035         ATOMIC_OP_AND_FETCH, ATOMIC_COMBOP_AND_FETCH): Define.
8036
8037 2009-08-03  Janis Johnson  <janis187@us.ibm.com>
8038
8039         PR c/39902
8040         * simplify-rtx.c (simplify_binary_operation_1): Disable
8041         simplifications for decimal float operations.
8042
8043 2009-08-03  Jakub Jelinek  <jakub@redhat.com>
8044
8045         PR middle-end/40943
8046         * tree-ssa.c (warn_uninitialized_var): Even on LHS warn for
8047         operand of INDIRECT_REF.
8048
8049 2009-08-03  Uros Bizjak  <ubizjak@gmail.com>
8050
8051         * config/alpha/alpha.c (alpha_legitimate_constant_p): Reject CONST
8052         constants referencing TLS symbols.
8053
8054 2009-08-03  SUGIOKA Toshinobu  <sugioka@itonet.co.jp>
8055
8056         * config/sh/linux-atomic.asm (ATOMIC_COMPARE_AND_SWAP): Rename
8057         __sync_compare_and_swap_* to __sync_val_compare_and_swap_*.
8058
8059 2009-08-03  Richard Guenther  <rguenther@suse.de>
8060
8061         * tree.c (make_vector_type): Build a main variant first,
8062         get the canonical one and then build the variant.
8063         * tree-ssa.c (useless_type_conversion_p_1): Handle
8064         fixed-point types.
8065         (useless_type_conversion_p): Conversions to pointers to
8066         incomplete record types are useless.
8067
8068 2009-08-03  Richard Guenther  <rguenther@suse.de>
8069
8070         * tree-cfg.c (pass_warn_unused_result): Mark name that no dump
8071         file will be created.
8072         * omp-low.c (pass_diagnose_omp_blocks): Likewise.
8073         * toplev.c (compile_file): Adjust comment.
8074
8075 2009-08-03  Kaz Kojima  <kkojima@gcc.gnu.org>
8076
8077         * config/sh/sh-protos.h (sh_promote_function_mode): Remove.
8078         * config/sh/sh.c (sh_promote_function_mode): Wrap long lines.
8079         (TARGET_PROMOTE_FUNCTION_MODE): Define.
8080         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
8081         (sh_promote_function_mode): Fix typo.
8082
8083 2009-08-03  Andreas Krebbel  <krebbel1@de.ibm.com>
8084
8085         * explow.c (promote_mode): Mark TYPE and PUNSIGNEDP as possibly unused.
8086
8087 2009-08-02  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
8088
8089         * pa.c (pa_promote_function_mode): Remove ATTRIBUTE_UNUSED from
8090         declaration arguments.
8091
8092 2009-08-02  Uros Bizjak  <ubizjak@gmail.com>
8093
8094         * config/i386/i386.c (ix86_expand_fp_compare): Use const0_rtx instead
8095         of GEN_INT (0x00) and const1_rtx instead of GEN_INT (0x01).
8096         (ix86_split_ashl): Ditto.
8097         (ix86_expand_vector_init_one_nonzero): Ditto.
8098         (ix86_expand_vector_set): Ditto.
8099         (ix86_expand_reduc_v4sf): Ditto.
8100
8101 2009-08-02  Paolo Bonzini  <bonzini@gnu.org>
8102
8103         * explow.c (promote_function_mode): Remove assert.
8104         * config/sh/sh.c (sh_promote_function_mode): Declare.
8105
8106 2009-08-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
8107
8108         * config/pa/pa.c (pa_promote_function_mode): Declare.
8109         Change to static.  Fix promote_mode call.
8110
8111         * gthr-dce.h (CONST_CAST2): Define if not defined.
8112         (__gthread_setspecific): Use CONST_CAST2 to fix warning.
8113
8114         * config.gcc (hppa[12]*-*-hpux10*): Add stdint support.
8115
8116 2009-08-01  Paolo Bonzini  <bonzini@gnu.org>
8117
8118         * expr.c (store_constructor): Use promote_decl_mode.  Remove
8119         now write-only variable unsignedp.
8120         (expand_expr_real_1): Use promote_decl_mode.
8121         * expr.h (promote_function_mode, promote_decl_mode): New.
8122         (promote_mode): Remove last argument.
8123         * function.c (assign_temp): Drop last argument of promote_mode.
8124         (assign_parm_find_data_types): Use promote_function_mode.
8125         (assign_parm_setup_reg): Likewise.
8126         (expand_function_end): Use promote_function_mode.
8127         * calls.c (initialize_argument_information): Use promote_function_mode.
8128         (precompute_arguments): Use promote_mode instead of checking if
8129         only PROMOTE_FUNCTION_MODE is defined.
8130         (expand_call): When making sibcall decisions, use promote_function_mode.
8131         Below, remove an if for targetm.calls.promote_function_return and
8132         and use promote_function_mode.
8133         (emit_library_call_value_1): Use promote_function_mode, fix bug
8134         where promote_mode was passed FOR_CALL == 0 for a return value in an
8135         assertion.
8136         * cfgexpand.c (expand_one_register_var): Use promote_decl_mode.
8137         * explow.c (promote_function_mode, promote_decl_mode): New.
8138         (promote_mode): Keep only the FOR_CALL == 0 case.
8139         * combine.c (setup_incoming_promotion): Remove test of
8140         promote_function_args.  Use promote_function_mode.
8141         * stmt.c (expand_value_return): Use promote_decl_mode.
8142         (expand_decl): Use promote_decl_mode.
8143
8144         * expr.c (store_constructor): Use promote_decl_mode.  Remove
8145         now write-only variable unsignedp.
8146         (expand_expr_real_1): Use promote_decl_mode.
8147         * expr.h (promote_function_mode, promote_decl_mode): New.
8148         (promote_mode): Remove last argument.
8149         * function.c (assign_temp): Drop last argument of promote_mode.
8150         (assign_parm_find_data_types): Use promote_function_mode.
8151         (assign_parm_setup_reg): Likewise.
8152         (expand_function_end): Use promote_function_mode.
8153         * calls.c (initialize_argument_information): Use promote_function_mode.
8154         (precompute_arguments): Use promote_mode instead of checking if
8155         only PROMOTE_FUNCTION_MODE is defined.
8156         (expand_call): When making sibcall decisions, use promote_function_mode.
8157         Below, remove an if for targetm.calls.promote_function_return and
8158         and use promote_function_mode.
8159         (emit_library_call_value_1): Use promote_function_mode, fix bug
8160         where promote_mode was passed FOR_CALL == 0 for a return value in an
8161         assertion.
8162         * cfgexpand.c (expand_one_register_var): Use promote_decl_mode.
8163         * explow.c (promote_function_mode, promote_decl_mode): New.
8164         (promote_mode): Keep only the FOR_CALL == 0 case.
8165         * combine.c (setup_incoming_promotion): Remove test of
8166         promote_function_args.  Use promote_function_mode.
8167         * stmt.c (expand_value_return): Use promote_decl_mode.
8168         (expand_decl): Use promote_decl_mode.
8169
8170         * explow.c (promote_function_mode): Just call the target hook.
8171         * targhooks.c (default_promote_function_mode,
8172         default_promote_function_mode_always_promote): New.
8173         * targhooks.h (default_promote_function_mode,
8174         default_promote_function_mode_always_promote): Declare.
8175         * target.h (promote_function_args, promote_function_return): Remove.
8176         (promote_function_mode): New.
8177         * target-def.h (TARGET_PROMOTE_FUNCTION_ARGS,
8178         TARGET_PROMOTE_FUNCTION_RETURN): Remove.
8179         (TARGET_PROMOTE_FUNCTION_MODE): New.
8180         (TARGET_CALLS): Adjust.
8181         * system.h (TARGET_PROMOTE_FUNCTION_ARGS,
8182         TARGET_PROMOTE_FUNCTION_RETURN, PROMOTE_FUNCTION_MODE): Poison.
8183
8184         * config/s390/s390.h (PROMOTE_FUNCTION_MODE): Move...
8185         * config/s390/s390.c (s390_promote_function_mode): ... here,
8186         with pointer handling.
8187         (TARGET_PROMOTE_FUNCTION_MODE): Define.
8188         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
8189
8190         * config/sparc/sparc.h (PROMOTE_FUNCTION_MODE): Move...
8191         * config/sparc/sparc.c (sparc_promote_function_mode): ... here,
8192         with pointer handling.
8193         (TARGET_PROMOTE_FUNCTION_MODE): Define.
8194         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
8195
8196         * config/sh/sh-protos.h (sh_promote_function_mode): New.
8197         * config/sh/sh.c (sh_promote_function_mode): New.
8198         (TARGET_PROMOTE_FUNCTION_MODE): Define.
8199         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
8200
8201         * config/cris/cris.h (PROMOTE_FUNCTION_MODE): Move...
8202         * config/cris/cris.c (cris_promote_function_mode): ... here.
8203         (TARGET_PROMOTE_FUNCTION_MODE): Define.
8204         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
8205
8206         * config/mmix/mmix.h (PROMOTE_FUNCTION_MODE): Move...
8207         * config/mmix/mmix.c (mmix_promote_function_mode): ... here.
8208         (TARGET_PROMOTE_FUNCTION_MODE): Define.
8209         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
8210
8211         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Move...
8212         * config/arm/arm.c (arm_promote_function_mode): ... here, without
8213         complex type handling.
8214         (TARGET_PROMOTE_FUNCTION_MODE): Define.
8215         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
8216
8217         * config/pa/pa.c (pa_promote_function_mode): New.
8218         (TARGET_PROMOTE_FUNCTION_MODE): Define.
8219         (TARGET_PROMOTE_FUNCTION_RETURN): Remove.
8220
8221         * config/alpha/alpha.c (TARGET_PROMOTE_FUNCTION_ARGS,
8222         TARGET_PROMOTE_FUNCTION_RETURN): Remove.
8223         (TARGET_PROMOTE_FUNCTION_MODE): Define equivalently.
8224         * config/xtensa/xtensa.c: Likewise.
8225         * config/stormy16/stormy16.c: Likewise.
8226         * config/iq2000/iq2000.c: Likewise.
8227         * config/rs6000/rs6000.c: Likewise.
8228         * config/picochip/picochip.c: Likewise.
8229         * config/arc/arc.c: Likewise.
8230         * config/mcore/mcore.c: Likewise.
8231         * config/score/score.c: Likewise.
8232         * config/mips/mips.c: Likewise.
8233         * config/bfin/bfin.c: Likewise.
8234         * config/ia64/ia64.c: Likewise (disabled though).
8235
8236         * config/frv/frv.h: Remove pointless remark.
8237
8238         * doc/tm.texi (PROMOTE_FUNCTION_MODE,
8239         TARGET_PROMOTE_FUNCTION_ARGS,
8240         TARGET_PROMOTE_FUNCTION_RETURN): Consolidate into...
8241         (TARGET_PROMOTE_FUNCTION_MODE): ... this.
8242
8243 2009-08-01  Sebastian Pop  <sebastian.pop@amd.com>
8244
8245         * doc/invoke.texi (-fgraphite-force-parallel): Renamed
8246         -floop-parallelize-all.
8247         * toplev.c (process_options): Rename flag_graphite_force_parallel to
8248         flag_loop_parallelize_all.
8249         * tree-ssa-loop.c (gate_graphite_transforms): Same.
8250         * graphite.c (graphite_transform_loops): Same.
8251         * common.opt: Same.
8252         * graphite-poly.c (apply_poly_transforms): Same.
8253
8254 2009-07-31  Richard Earnshaw  <rearnsha@arm.com>
8255
8256         PR tree-optimization/40914
8257         * ipa-prop.c (ipa_get_ptr_load_param): New argument use_delta,
8258         if set, then check the delta field of the PMF record.
8259         (ipa_get_stmt_member_ptr_load_param): Propagate new param use_delta.
8260         (ipa_analyze_call_uses): Handle machines where the vbit for a PMF
8261         call is stored in the delta.
8262
8263 2009-07-31  Adam Nemet  <anemet@caviumnetworks.com>
8264
8265         * config/mips/mips.md (*clear_upper32_dext): New pattern.
8266
8267 2009-07-31  Uros Bizjak  <ubizjak@gmail.com>
8268
8269         * config/i386/bsd.h (ASM_BYTE): New define.
8270         * config/i386/darwin.h (ASM_BYTE): Rename from ASM_BYTE_OP.
8271         * config/i386/att.h (ASM_BYTE): New define. Use ASM_BYTE instead of
8272         .byte.  Use fputs or putc instead of fprintf where appropriate.
8273         * config/i386/i386-interix.h: Use ASM_BYTE instead of .byte.  Use
8274         fputs or putc instead of fprintf where appropriate.
8275         * config/i386/i386elf.h: Ditto.
8276         * config/i386/sysv4.h: Ditto.
8277
8278         * config/i386/i386.c (TARGET_ASM_BYTE_OP): New define.
8279         * config/i386/i386.md (x86_sahf_1): Use ASM_BYTE instead of .byte.
8280         (*tls_global_dynamic_64): Ditto.
8281
8282 2009-07-31  Christian Bruel  <christian.bruel@st.com>
8283
8284         * gcc/config.gcc (sh*-*-elf): test with_libgloss.
8285
8286 2009-07-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
8287
8288         * config/arm/arm.c (arm_arm_address_cost): Fix typo.
8289         Remove dead code for MINUS.
8290
8291 2009-07-31  Anthony Green  <green@moxielogic.com>
8292
8293         * config/moxie/moxie.c (moxie_expand_prologue): Use $r5 instead of
8294         $r12 in prologue.
8295         (moxie_expand_epilogue): Ditto for epilogue.
8296         (moxie_setup_incoming_varargs): ABI change.  Use 5 registers for
8297         incoming arguments.
8298         (moxie_function_arg): Ditto.
8299         (moxie_pass_by_reference): Ditto.
8300         (moxie_arg_partial_bytes): Ditto.
8301         * config/moxie/moxie.h (CALL_USED_REGISTERS): Ditto.
8302         (FUNCTION_ARG_ADVANCE) Ditto.
8303         (REG_PARM_STACK_SPACE) Ditto.
8304         (FUNCTION_ARG_REGNO_P) Dito.
8305
8306         * config.gcc: Add moxie linux config support.
8307         * gcc/config/moxie/uclinux.h: New file.
8308
8309 2009-07-31  DJ Delorie  <dj@redhat.com>
8310
8311         * config/sh/sh.md (UNSPECV_SP_SWITCH_B): New.
8312         (UNSPECV_SP_SWITCH_E): New.
8313         (sp_switch_1): Change to an unspec.
8314         (sp_switch_2): Change to an unspec.  Don't use post-inc when we
8315         replace $r15.
8316         * config/sh/sh.c (sh_expand_prologue): Use the constant pool to
8317         reference the new stack's address
8318
8319 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
8320
8321         * Makefile.in (OBJS-common): Added dependence on graphite-blocking.o,
8322         graphite-clast-to-gimple.o, graphite-dependences.o,
8323         graphite-interchange.o, graphite-poly.o, graphite-ppl.o,
8324         graphite-scop-detection.o, graphite-sese-to-poly.o, and sese.o.
8325         (graphite-blocking.o,
8326         graphite-clast-to-gimple.o, graphite-dependences.o,
8327         graphite-interchange.o, graphite-poly.o, graphite-ppl.o,
8328         graphite-scop-detection.o, graphite-sese-to-poly.o, and sese.o): New.
8329         * cfgloop.c (alloc_loop): Set loop->can_be_parallel to false.
8330         * cfgloop.h (struct loop): Add can_be_parallel field.
8331         * common.opt (fgraphite-identity): Moved up.
8332         (fgraphite-force-parallel): New flag.
8333         * graphite.c: Rewrite.
8334         * graphite.h: Rewrite.
8335         * passes.c (init_optimization_passes): Schedule a pass of DCE and LIM
8336         after Graphite.
8337         * toplev.c (graphite_out_file): New file descriptor.
8338         (graphite_in_file): New.
8339         (process_options): flag_graphite_force_parallel cannot be used without
8340         Graphite.
8341         * tree-ssa-loop.c: Include toplev.h.
8342         (gate_graphite_transforms): Enable flag_graphite for
8343         flag_graphite_force_parallel.
8344
8345 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
8346
8347         * ChangeLog.graphite: New.
8348         * graphite-blocking.c: New.
8349         * graphite-clast-to-gimple.c: New.
8350         * graphite-clast-to-gimple.h: New.
8351         * graphite-dependences.c: New.
8352         * graphite-dependences.h: New.
8353         * graphite-interchange.c: New.
8354         * graphite-poly.c: New.
8355         * graphite-poly.h: New.
8356         * graphite-ppl.c: New.
8357         * graphite-ppl.h: New.
8358         * graphite-scop-detection.c: New.
8359         * graphite-scop-detection.h: New.
8360         * graphite-sese-to-poly.c: New.
8361         * graphite-sese-to-poly.h: New.
8362         * sese.c: New.
8363         * sese.h: New.
8364
8365 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
8366
8367         * tree-chrec.c (evolution_function_right_is_integer_cst): New.
8368         * tree-chrec.h (evolution_function_right_is_integer_cst): Declared.
8369
8370 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
8371
8372         * tree-chrec.c (operator_is_linear): Handle BIT_NOT_EXPR.
8373         (scev_is_linear_expression): Return false if the evolution is not
8374         affine multivariate.
8375
8376 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
8377
8378         * tree-data-ref.c (graphite_find_data_references_in_stmt): New.
8379         * tree-data-ref.h (graphite_find_data_references_in_stmt): Declared.
8380
8381 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
8382
8383         * tree-data-ref.c (debug_data_references): New.
8384         (debug_data_reference): New.
8385         * tree-data-ref.h (debug_data_references): Declared.
8386         (debug_data_reference): Declared.
8387
8388 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
8389
8390         * tree-data-ref.c (stmt_simple_memref_p: Removed.
8391         * tree-data-ref.h (scop_p): Removed.
8392         (struct data_reference): Remove field scop.
8393         (DR_SCOP): Removed.
8394         (stmt_simple_memref_p): Removed.
8395
8396 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
8397
8398         * cfgloop.h (create_empty_loop_on_edge): Pass an extra argument.
8399         * cfgloopmanip.c (create_empty_loop_on_edge): Leave the loop_latch
8400         basic block empty.
8401
8402 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
8403
8404         * doc/invoke.texi (-fgraphite-force-parallel): Documented.
8405
8406 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
8407
8408         * doc/invoke.texi (-fgraphite-identity): Documented.
8409
8410 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
8411
8412         * tree-scalar-evolution.c: Fix comment.
8413         (instantiate_scev_1): Return unknow from scev instantiation if the
8414         result is not above instantiate_below.
8415
8416 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
8417
8418         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop): Not
8419         static anymore.  Instantiate the symbols that may have been introduced
8420         by chrec_apply.
8421         * tree-scalar-evolution.h (compute_overall_effect_of_inner_loop):
8422         Declared.
8423
8424 2009-07-30  DJ Delorie  <dj@redhat.com>
8425
8426         * config/mep/mep.c (mep_asm_init_sections): Add section flags and
8427         .vliw directive to VLIW sections.
8428
8429 2009-07-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
8430
8431         * Makefile.in (AUTOCONF, ACLOCAL, ACLOCAL_AMFLAGS, aclocal_deps):
8432         New variables.
8433         ($(srcdir)/configure, $(srcdir)/aclocal.m4): New rules.
8434         (AUTOHEADER): New variable.
8435         ($(srcdir)/cstamp-h.in): Use it.
8436
8437 2009-07-30  Michael Meissner  <meissner@linux.vnet.ibm.com>
8438             Pat Haugen  <pthaugen@us.ibm.com>
8439             Revital Eres <ERES@il.ibm.com>
8440
8441         * config/rs6000/vector.md (VEC_F): Add VSX support.
8442         (VEC_A): Ditto.
8443         (VEC_N): Ditto.
8444         (mov<mode>): Ditto.
8445         (vector_load_<mode>): Ditto.
8446         (vector_store_<mode>): Ditto.
8447         (vector GPR move split): Ditto.
8448         (vec_reload_and_plus_<mptrsize>): Ditto.
8449         (vec_reload_and_reg_<mptrsize>): Ditto.
8450         (add<mode>3): Ditto.
8451         (sub<mode>3): Ditto.
8452         (mul<mode>3): Ditto.
8453         (neg<mode>2): Ditto.
8454         (abs<mode>2): Ditto.
8455         (smin<mode>3): Ditto.
8456         (smax<mode>3): Ditto.
8457         (vector_eq<mode>): Ditto.
8458         (vector_gt<mode>): Ditto.
8459         (vector_ge<mode>): Ditto.
8460         (vector_gtu<mode>): Ditto.
8461         (vector_select_<mode>_uns): Ditto.
8462         (vector_eq_<mode>_p): Ditto.
8463         (vector_gt_<mode>_p): Ditto.
8464         (vector_ge_<mode>_p): Ditto.
8465         (vector_gtu_<mode>_p): Ditto.
8466         (cr6_test_for_zero): Ditto.
8467         (cr6_test_for_zero_reverse): Ditto.
8468         (cr6_test_for_lt): Ditto.
8469         (cr6_test_for_lt_reverse): Ditto.
8470         (xor<mode>3): Ditto.
8471         (ior<mode>3): Ditto.
8472         (and<mode>3): Ditto.
8473         (one_cmpl<mode>2): Ditto.
8474         (nor<mode>2): Ditto.
8475         (andc<mode>2): Ditto.
8476         (float<VEC_int<mode>2): Ditto.
8477         (unsigned_float<VEC_int><mode>2): Ditto.
8478         (fix_trunc<mode><VEC_int>2): Ditto.
8479         (fixuns_trunc<mode><VEC_int>2): Ditto.
8480         (vec_init<mode>):
8481         (vec_set<mode>): Ditto.
8482         (vec_extract<mode>): Ditto.
8483         (vec_interleave_highv4sf): Ditto.
8484         (vec_interleave_lowv4sf): Ditto.
8485         (vec_realign_load_<mode>): Ditto.
8486         (vec_shl_<mode>): Ditto.
8487         (vec_shr_<mode>): Ditto.
8488         (div<mode>3): New patterns for VSX.
8489         (vec_interleave_highv2df): Ditto.
8490         (vec_interleave_lowv2df): Ditto.
8491         (vec_pack_trunc_v2df): Ditto.
8492         (vec_pack_sfix_trunc_v2df): Ditto.
8493         (vec_pack_ufix_trunc_v2df): Ditto.
8494         (vec_unpacks_hi_v4sf): Ditto.
8495         (vec_unpacks_lo_v4sf): Ditto.
8496         (vec_unpacks_float_hi_v4si): Ditto.
8497         (vec_unpacks_float_lo_v4si): Ditto.
8498         (vec_unpacku_float_hi_v4si): Ditto.
8499         (vec_unpacku_float_lo_v4si): Ditto.
8500         (movmisalign<mode>): Ditto.
8501         (vector_ceil<mode>2): New patterns for vectorizing math library.
8502         (vector_floor<mode>2): Ditto.
8503         (vector_btrunc<mode>2): Ditto.
8504         (vector_copysign<mode>3): Ditto.
8505
8506         * config/rs6000/predicates.md (easy_vector_constant_msb): New
8507         predicate for setting the high bit in each word, used for copysign.
8508
8509         * config/rs6000/ppc-asm.h (f19): Whitespace.
8510         (f32-f63): Define if VSX.
8511         (v0-v31): Define if Altivec.
8512         (vs0-vs63): Define if VSX.
8513
8514         * config/rs6000/t-rs6000 (MD_INCLUDES): Add power7.md and vsx.md.
8515
8516         * config/rs6000/power7.md: New file, provide tuning parameters for
8517         -mcpu=power7.
8518
8519         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): Add VSX support.
8520         (rs6000_cpu_cpp_builtins): Ditto.
8521         (altivec_overloaded_builtins): Ditto.
8522         (altivec_resolve_overloaded_builtin): Ditto.
8523
8524         * config/rs6000/rs6000.opt (-mno-vectorize-builtins): Add new
8525         debug switch to disable vectorizing simple math builtin
8526         functions.
8527
8528         * config/rs6000/rs6000.c (rs6000_builtin_vectorized_function):
8529         Vectorize simple math builtin functions.
8530         (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Define target
8531         hook to vectorize math builtins.
8532         (rs6000_override_options): Enable -mvsx on -mcpu=power7.
8533         (rs6000_builtin_conversion): Add VSX/power7 support.
8534         (rs6000_builtin_vec_perm): Ditto.
8535         (vsplits_constant): Add support for loading up a vector constant
8536         with just the high bit set in each part.
8537         (rs6000_expand_vector_init): Add VSX/power7 support.
8538         (rs6000_expand_vector_set): Ditto.
8539         (rs6000_expand_vector_extract): Ditto.
8540         (rs6000_emit_move): Ditto.
8541         (bdesc_3arg): Ditto.
8542         (bdesc_2arg): Ditto.
8543         (bdesc_1arg): Ditto.
8544         (rs6000_expand_ternop_builtin): Ditto.
8545         (altivec_expand_builtin): Ditto.
8546         (rs6000_expand_unop_builtin): Ditto.
8547         (rs6000_init_builtins): Ditto.
8548         (altivec_init_builtins): Ditto.
8549         (builtin_function_type): Ditto.
8550         (rs6000_common_init_builtins): Ditto.
8551         (rs6000_handle_altivec_attribute); Ditto.
8552         (rs6000_mangle_type): Ditto.
8553         (rs6000_vector_mode_supported_p): Ditto.
8554         (rs6000_mode_dependent_address): Altivec addresses with AND -16
8555         are mode dependent.
8556
8557         * config/rs6000/vsx.md: New file for VSX support.
8558
8559         * config/rs6000/rs6000.h (EASY_VECTOR_MSB): New macro for
8560         identifing values with just the most significant bit set.
8561         (enum rs6000_builtins): Add builtins for VSX.  Add simple math
8562         vectorized builtins.
8563
8564         * config/rs6000/altivec.md (UNSPEC_VRFIP): Delete.
8565         (UNSPEC_VRFIM): Delete.
8566         (splitter for loading up vector with most significant bit): New
8567         splitter for vectorizing copysign.
8568         (altivec_vrfiz): Rename from altivec_fturncv4sf2.  Add support for
8569         vectorizing simple math functions.
8570         (altivec_vrfip): Add support for vectorizing simple math functions.
8571         (altivec_vrfim): Ditto.
8572         (altivec_copysign_v4sf3): New insn for Altivec copysign support.
8573
8574         * config/rs6000/rs6000.md (UNSPEC_BPERM): New constant.
8575         (power7.md, vsx.md): Include for power7 support.
8576         (copysigndf3): Use VSX instructions if -mvsx.
8577         (negdf2_fpr): Ditto.
8578         (absdf2_fpr): Ditto.
8579         (nabsdf2_fpr): Ditto.
8580         (adddf3_fpr): Ditto.
8581         (subdf3_fpr): Ditto.
8582         (muldf3_fpr): Ditto.
8583         (divdf3_fpr): Ditto.
8584         (fix_truncdfdi2_fpr): Ditto.
8585         (cmpdf_internal1): Ditto.
8586         (fred, fred_fpr): Convert into expander/insn to add VSX support.
8587         (btruncdf2, btruncdf2_fpr): Ditto.
8588         (ceildf2, ceildf2_fpr): Ditto.
8589         (floordf2, floordf2_fpr): Ditto.
8590         (floatdidf2, floatdidf2_fpr): Ditto.
8591         (fmadddf4_fpr): Name insn.  Use VSX instructions if -mvsx.
8592         (fmsubdf4_fpr): Ditto.
8593         (fnmadddf4_fpr_1): Ditto.
8594         (fnmadddf4_fpr_2): Ditto.
8595         (fnmsubdf4_fpr_1): Ditto.
8596         (fnmsubdf4_fpr_2): Ditto.
8597         (fixuns_truncdfdi2): Add expander for VSX support.
8598         (fix_truncdfdi2): Ditto.
8599         (fix_truncdfsi2): Ditto.
8600         (ftruncdf2): Ditto.
8601         (btruncsf2): Whitespace.
8602         (movdf_hardfloat32): Add support for VSX registers.
8603         (movdf_softfloat32): Ditto.
8604         (movdf_hardfloat64): Ditto.
8605         (movdf_hardfloat64_mfpgpr): Ditto.
8606         (movdf_softfloat64): Ditto.
8607         (movti splitters): Add check for vector registers supporting
8608         TImode in the future.
8609         (bpermd): Add power7 bpermd instruction.
8610
8611         * config/rs6000/altivec.h (vec_div): Define if VSX.
8612         (vec_mul): Ditto.
8613         (vec_msub): Ditto.
8614         (vec_nmadd): Ditto.
8615         (vec_nearbyint): Ditto.
8616         (vec_rint): Ditto.
8617         (vec_sqrt): Ditto.
8618         (all predicates): Use the generic builtin function, and not the V4SF
8619         specific function so that the predicates will work with VSX's V2DF.
8620         (vec_all_*): Ditto.
8621         (vec_any_*): Ditto.
8622
8623         * doc/extend.texi (PowerPC Altivec/VSX Built-in Functions):
8624         Document new VSX functions and types.
8625
8626         * doc/invoke.texi (PowerPc options): Document -mpopcntd, -mvsx
8627         switches.
8628
8629         * doc/md.texi (PowerPC constraints): Document "wd", "wf", "ws",
8630         "wa", and "j" constraints.  Modify "v" to talk about Altivec
8631         instead of just vector.
8632
8633 2009-07-30  Andrew MacLeod  <amacleod@redhat.com>
8634
8635         PR debug/26475
8636         * tree-into-ssa.c (insert_phi_nodes_for, rewrite_add_phi_arguments): Set
8637         location for phi arguments.
8638         (rewrite_update_phi_arguments): Find locations for reaching defs.
8639         * tree-ssa-threadupdate.c (create_edge_and_update_destination_phis):
8640         Add location to add_phi_arg calls.
8641         * tree-loop-districbution.c (update_phis_for_loop_copy): Add locations.
8642         * tree-ssa-loop-manip.c (create_iv, add_exit_phis_edge,
8643         split_loop_exit_edge, tree_transform_and_unroll_loop): Add locations.
8644         * tree-tailcall.c (add_successor_phi_arg, eliminate_tail_call,
8645         create_tailcall_accumulator, tree_optimize_tail_calls_1): Add locations.
8646         * tree.h (struct phi_arg_d): Add location_t to PHI arguments.
8647         * tree-phinodes.c (make_phi_node): Initialize location.
8648         (resize_phi_node): Initialize location to UNKNOWN_LOCATION.
8649         (add_phi_arg): Add location parameter.
8650         (remove_phi_arg_num): Move location when moving phi argument.
8651         * omp-low.c (expand_parallel_call, expand_omp_for_static_chunk): Set
8652         location.
8653         * tree-vect-loop-manip.c (slpeel_update_phis_for_duplicate_loop,
8654         slpeel_update_phi_nodes_for_guard1,
8655         slpeel_update_phi_nodes_for_guard2,
8656         slpeel_tree_duplicate_loop_to_edge_cfg, set_prologue_iterations,
8657         vect_loop_versioning): Set locations.
8658         * tree-parloops.c (create_phi_for_local_result,
8659         transform_to_exit_first_loop, create_parallel_loop): Add locations.
8660         * gimple-pretty-print.c (dump_gimple_phi): Dump lineno's if present.
8661         * tree-vect-loop.c (get_initial_def_for_induction,
8662         vect_create_epilog_for_reduction, vect_finalize_reduction): Add
8663         locations.
8664         * tree-flow-inline.h (gimple_phi_arg_location): New.  Return locus.
8665         (gimple_phi_arg_location_from_edge): New.  Return locus from an edge.
8666         (gimple_phi_arg_set_location): New.  Set locus.
8667         (gimple_phi_arg_has_location): New.  Check for locus.
8668         (redirect_edge_var_map_location): New.  Return locus from var_map.
8669         * tree-vect-data-refs.c (vect_setup_realignment): Set location.
8670         * tree-ssa-phiopt.c (conditional_replacement): Set locus when
8671         combining PHI arguments.
8672         (cond_store_replacement): Set location.
8673         * cfgexpand.c (gimple_assign_rhs_to_tree): Transfer locus if possible.
8674         * grpahite.c (add_loop_exit_phis, add_guard_exit_phis,
8675         scop_add_exit_phis_edge): Add locations.
8676         * tree-cfgcleanup.c (remove_forwarder_block,
8677         remove_forwarder_block_with_phi): Add locations.
8678         * tree-ssa-pre.c (insert_into_preds_of_block): Add locations.
8679         * tree-predcom.c (initialize_root_vars, initialize_root_vars_lm): Add
8680         locations.
8681         * tree-ssa-dce.c (forward_edge_to_pdom): Add locations.
8682         * tree-ssa.c (redirect_edge_var_map_add, ssa_redirect_edge,
8683         flush_pending_stmts): Add source location.
8684         * lambda-code.c (perfect_nestify): Maintain location stack with argument
8685         stack to preserve locations.
8686         * tree-vect-stmts.c (vectorizable_load): Add location.
8687         * tree-inline.c (copy_phis_for_bb): Copy locus.
8688         (setup_one_parameter): Add call locus to inlined parameter stmts.
8689         (initialize_inlined_parameters): Pass in call location as parameter
8690         assignment locus.
8691         (tree_function_versioning): Pass location to setup_one_parameter.
8692         * tree-ssa-phiprop.c (phiprop_insert_phi): Set locations.
8693         * tree-outof-ssa.c (struct _elim_graph): Add source_location vecs for
8694         copy and edge lists.
8695         (insert_partition_copy_on_edge, insert_value_copy_on_edge,
8696         insert_rtx_to_part_on_edge, insert_part_to_rtx_on_edge): Provide a
8697         locus parameter and override the stmt default if provided.
8698         (new_elim_graph, clear_elim_graph, delete_elim_graph,
8699         elim_graph_add_edge, elim_graph_remove_succ_edge,
8700         FOR_EACH_ELIM_GRAPH_SUCC, FOR_EACH_ELIM_GRAPH_PRED, eliminate_build,
8701         elim_forward, elim_unvisited_predecessor, elim_backward, elim_create,
8702         eliminate_phi):  Add locus info in elimination graph for each edge and
8703         value copy.
8704         (insert_backedge_copies): Copy locus if present.
8705         * tree-flow.h (struct _edge_var_map): Add locus field.
8706         * tree-switch_conversions.c (fix_phi_nodes): Add locations.
8707         * tree-cfg.c (reinstall_phi_args, gimple_make_forwarder_block,
8708         add_phi_args_after_copy_edge, gimple_lv_adjust_loop_header_phi): Add
8709         locations.
8710         * ipa-struct-reorg.c (make_edge_and_fix_phis_of_dest): Add locations.
8711
8712 2009-07-30  Martin Jambor  <mjambor@suse.cz>
8713
8714         PR tree-optimization/40570
8715         * ipa-inline.c (cgraph_decide_inlining): Watch out for dead single
8716         use inlining loops.
8717
8718 2009-07-30  Razya Ladelsky <razya@il.ibm.com>
8719
8720         * ssa-loop-manip.c: Include langhooks.h.
8721         (rewrite_phi_with_iv): New.
8722         (rewrite_all_phi_nodes_with_iv): New.
8723         (canonicalize_loop_ivs): Move here from tree-parloops.c.
8724         Remove reduction_list argument. Use rewrite_all_phi_nodes_with_iv.
8725         * tree-parloops.c (loop_parallel_p): Move out all conditions
8726         except dependency check.
8727         (canonicalize_loop_ivs): Move to tree-ssa-loop-manip.c.
8728         (gen_parallel_loop): Call canonicalize_loop_ivs without
8729         reduction_list argument.
8730         (build_new_reduction): New.
8731         (gather_scalar_reductions): New.
8732         (try_get_loop_niter): New.
8733         (try_create_reduction_list): New.
8734         (parallleize_loops): Change the parallel conditions check.
8735         * tree-flow.h (canonicalize_loop_ivs): Remove one argument.
8736         * Makefile.in (tree-ssa-loop-manip.o): Add langhooks.h dependency.
8737
8738 2009-07-30  Dave Korn  <dave.korn.cygwin@gmail.com>
8739
8740         * opt-functions.awk (opt_args): Allow argument to be enclosed in
8741         curly braces.
8742         * doc/options.texi (Option properties):  Mention new quoting syntax.
8743
8744 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
8745
8746         * config/alpha/alpha.c (alpha_start_function):
8747         Handle VMS_DEBUG_MAIN_POINTER
8748         * config/alpha/vms.h (VMS_DEBUG_MAIN_POINTER): Define new macro.
8749         * doc/invoke.texi: Document -mdebug-main switch.
8750
8751 2009-07-29  Richard Henderson  <rth@redhat.com>
8752
8753         * cgraph.c (cgraph_set_call_stmt_including_clones): Tidy.
8754         (cgraph_create_edge_including_clones): Likewise.
8755         * tree-inline.c (copy_bb): Operate on the correct edges
8756         when updating the callgraph.
8757
8758 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
8759
8760         * config/alpha/vms-cc.c: Deleted.
8761         * config/alpha/vms-ld.c: Deleted.
8762         * config/alpha/t-vms64: Moved to config/vms
8763         * config/alpha/vms-crt0-64.c: Moved to config/vms
8764         * config/alpha/vms-crt0.c: Moved to config/vms
8765         * config/alpha/vms-psxcrt0-64.c: Moved to config/vms
8766         * config/alpha/vms-psxcrt0.c: Moved to config/vms
8767         * config/alpha/xm-vms.h: Moved to config/vms
8768         * config/alpha/x-vms: Moved to config/vms
8769         * config/alpha/t-vms (vcrt0.o, pcrt0.o): Move rules to new file
8770         config/vms/t-vms.
8771         * config/vms/t-vms: Moved here from config/alpha. Alpha specific
8772         parts removed. (STMP_FIXPROTO, STMP_FIXINC, LIMITS_H_TEST): Set.
8773         (version): Set.
8774         * config/vms/t-vms64: Moved here from config/alpha
8775         * config/vms/vms-crt0-64.c: Moved here from config/alpha.
8776         (argc,argv,envp): Enforce 32bit malloc'ing.
8777         * config/vms/vms-psxcrt0-64.c: Likewise.
8778         * config/vms/vms-crt0.c: Moved here from config/alpha.
8779         * config/vms/vms-psxcrt0.c: Likewise.
8780         * config/vms/vms-crtl-64.h: New file.
8781         * config/vms/vms-crtl.h: New file.
8782         * config/vms/vms.opt: New file.
8783         * config/vms/xm-vms64.h: New file.
8784         * config/vms/xm-vms.h: Moved here from config/alpha.
8785         (STANARD_EXEC_PREFIX, STANDARD_STARTFILE_PREFIX, STANDARD_INCLUDE_DIR):
8786         Set.
8787         * config/vms/x-vms: Moved here from config/alpha.
8788         (version, VMS_EXTRA_PARTS): Moved to t-vms.
8789         (vms-ld.o, vms-cc.o): Removed.
8790         (LN, LN_S, USE_COLLECT2, POD2MAN): Set.
8791
8792 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
8793
8794         * dwarf2out.c (add_name_and_src_coords_attributes): Push on the
8795         correct stack (obvious VMS fix).
8796
8797 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
8798
8799         * dwarf2out.c (output_file_names): Output VMS style file name, size,
8800         date, version info if VMS_DEBUGGING_INFO defined.
8801         * vmsdgbout.c (vms_file_stats_name): New functon. VMS style file name,
8802         size, date calculating code moved here.
8803
8804 2009-07-29  Paul Brook  <paul@codesourcery.com>
8805
8806         * config/arm/lib1funcs.asm (clear_cache): Use ARM_FUNC_START and
8807         do_push/do_pop.
8808
8809 2009-07-29  Uros Bizjak  <ubizjak@gmail.com>
8810
8811         PR target/40577
8812         * config/alpha/alpha.c (alpha_expand_unaligned_store): Convert src
8813         to DImode when generating insq_le insn.
8814
8815 2009-07-28  Douglas B Rupp  <rupp@gnat.com>
8816
8817         * dwarf2out.c (DWARF2_INDIRECT_STRING_SUPPORT_MISSING_ON_TARGET):
8818         New macro set for VMS_DEBUGGGING_INFO.
8819         (AT_string_form): Use it.
8820
8821 2009-07-28  DJ Delorie  <dj@redhat.com>
8822
8823         * config/mep/mep.c (vtext_section): New.
8824         (vftext_section): New.
8825         (ftext_section): New.
8826         (mep_select_section): Add support for functions.
8827         (mep_unique_section): Likewise.
8828         (mep_asm_init_sections): Likewise.
8829         (mep_encode_section_info): Remove it from here.
8830
8831         * config/mep/mep.h (USE_SELECT_SECTION_FOR_FUNCTIONS): Define.
8832
8833 2009-07-28  Paolo Bonzini  <bonzinI@gnu.org>
8834
8835         * tree.h (TREE_DEPRECATED): Document it is used for types too.
8836         (TYPE_VECTOR_OPAQUE): Use default_def_flag
8837
8838 2009-07-28  Douglas B Rupp  <rupp@gnat.com>
8839
8840         * dwarf2out.c (output_file_names): Test new macro
8841         DWARF2_DIR_SHOULD_END_WITH_SEPARATOR.
8842         (add_comp_dir_attribute): Likewise.
8843
8844 2009-07-28  Kai Tietz  <kai.tietz@onevision.com>
8845
8846         * config/i386/mingw-w64.h (LINK_SPEC): Add
8847         separating space between commands.
8848
8849 2009-07-28  Jan Hubicka  <jh@suse.cz>
8850
8851         PR tree-optimization/40759
8852         * tree-ssa-dce.c (mark_virtual_phi_result_for_renaming): Mark all uses
8853         for renaming.
8854
8855 2009-07-27  DJ Delorie  <dj@redhat.com>
8856
8857         * config/mep/mep.c (mep_expand_builtin_saveregs): Make sure 64-bit
8858         types are dword-aligned.
8859         (mep_expand_va_start): Likewise.
8860
8861 2009-07-27  Olivier Hainque  <hainque@adacore.com>
8862             Douglas B Rupp  <rupp@gnat.com>
8863
8864         * convert.c (convert_to_pointer): Don't assume the target
8865         pointer type is POINTER_SIZE long. Fetch its precision instead.
8866
8867 2009-07-27  Douglas B Rupp  <rupp@gnat.com>
8868
8869         * system.h (fopen): Undefine if macro.
8870
8871 2009-07-27  Jakub Jelinek  <jakub@redhat.com>
8872
8873         * dwarf2out.c (output_cfi_p): Removed.
8874         (output_cfis): New function.
8875         (output_fde): New function, split from output_call_frame_info.
8876         (output_call_frame_info): Use it.
8877         (dwarf2out_switch_text_section): Use output_cfis.
8878
8879 2009-07-24  Kai Tietz  <kai.tietz@onevision.com>
8880
8881         * config/i386/cygming.h (DWARF2_UNWIND_INFO): Error build when
8882         TARGET_BI_ARCH is specified without enabling SJLJ.
8883         * config/i386/mingw32.h (MD_UNWIND_SUPPORT): Define MD_UNWIND_SUPPORT,
8884         if TARGET_64BIT and TARGET_BI_ARCH aren't defined.
8885
8886 2009-07-26  Mikael Pettersson <mikpe@it.uu.se>
8887
8888         * arm.md (negdi2): Use DImode if forcing a value into a register.
8889
8890 2009-07-26  Ira Rosen  <irar@il.ibm.com>
8891
8892         PR tree-optimization/40801
8893         * tree-vect-stmts.c (vectorizable_call): Get previous copy
8894         of vector operand from the previous copy of vector statement.
8895         Pass the correct definition type value to
8896         vect_get_vec_def_for_stmt_copy().
8897
8898 2009-07-25  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
8899
8900         * collect2.c (scan_libraries): Use CONST_CAST2 to perform char ** to
8901         const char ** conversion.
8902
8903 2009-07-25 David Daney <ddaney@caviumnetworks.com>
8904
8905         * system.h (gcc_assert): Invoke __builtin_unreachable() instead of
8906         fancy_abort() if !ENABLE_ASSERT_CHECKING.
8907         (gcc_unreachable): Invoke __builtin_unreachable() if
8908         !ENABLE_ASSERT_CHECKING.
8909
8910 2009-07-25  David Daney  <ddaney@caviumnetworks.com>
8911
8912         PR rtl-optimization/40445
8913         * emit-rtl.c (next_nonnote_insn_bb): New function.
8914         * rtl.h (next_nonnote_insn_bb): Declare new function.
8915         * cfgcleanup.c (try_optimize_cfg): Don't remove an empty block
8916         with no successors that is the successor of the ENTRY_BLOCK.
8917         Continue from the top after removing an empty fallthrough block.
8918         * cfgrtl.c (get_last_bb_insn): Call next_nonnote_insn_bb instead
8919         of next_nonnote_insn.
8920
8921 2009-07-25  David Daney  <ddaney@caviumnetworks.com>
8922
8923         * cfgcleanup.c (old_insns_match_p): Handle the case of empty blocks.
8924
8925 2009-07-25  Martin Jambor  <mjambor@suse.cz>
8926
8927         * c-common.c (c_common_attribute_table): New element for noclone.
8928         (handle_noclone_attribute): New function. Forward-declare.
8929         * tree-inline.c (tree_versionable_function_p): Check for noclone
8930         attribute.
8931         * doc/extend.texi (Labels as Values): Document need for noclone.
8932         (Function Attributes): Document noclone attribute.
8933
8934 2009-07-25  Jakub Jelinek  <jakub@redhat.com>
8935
8936         PR rtl-optimization/34999
8937         * dwarf2out.c (struct dw_fde_struct): Add dw_fde_switch_cfi
8938         and dw_fde_switched_cold_to_hot fields.
8939         (output_cfi_p): New function.
8940         (output_call_frame_info): If fde->dw_fde_switched_sections,
8941         output 2 FDEs instead of one with corrupted header.
8942         (dwarf2out_do_cfi_startproc): New function.
8943         (dwarf2out_begin_prologue): Use it.  Initialize fde->dw_fde_switch_cfi
8944         and fde->dw_fde_switched_cold_to_hot.
8945         (dwarf2out_switch_text_section): Compute
8946         fde->dw_fde_switched_cold_to_hot.  Switch to new text section here.
8947         If dwarf2out_do_cfi_asm, emit .cfi_endproc before it and call
8948         dwarf2out_do_cfi_startproc plus emit again currently active CFI insns.
8949         Otherwise, compute fde->dw_fde_switch_cfi.
8950
8951 2009-07-24  Cary Coutant  <ccoutant@google.com>
8952
8953         * tree-cfg.c (assign_discriminator): Add explicit parentheses.
8954
8955 2009-07-24  Cary Coutant  <ccoutant@google.com>
8956
8957         * cfghooks.c (split_block): Copy discriminator to new block.
8958         * tree-cfg.c (assign_discriminator): Check location of last
8959         instruction in block as well as first.
8960
8961 2009-07-24  Uros Bizjak  <ubizjak@gmail.com>
8962
8963         * config/i386/linux.c: Use fputs or putc instead of fprintf
8964         where appropriate.
8965         * config/i386/gas.h: Ditto.
8966         * config/i386/x86-64.h: Ditto.
8967         * config/i386/att.h: Ditto.
8968
8969 2009-07-24  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
8970
8971         * expmed.c (emit_store_flag): Use a recursive call to optimize the
8972         xor case.
8973
8974 2009-07-24  Martin Jambor  <mjambor@suse.cz>
8975
8976         * ipa-prop.h (struct ipa_node_params): New flag node_enqued.
8977         (ipa_push_func_to_list_1): Declare.
8978         (ipa_push_func_to_list): New function.
8979
8980         * ipa-prop.c (ipa_push_func_to_list_1): New function.
8981         (ipa_init_func_list): Call ipa_push_func_to_list_1.
8982         (ipa_push_func_to_list): Removed.
8983         (ipa_pop_func_from_list): Clear node_enqueued flag.
8984
8985 2009-07-24  Andreas Krebbel  <krebbel1@de.ibm.com>
8986
8987         * config/s390/s390.c (override_options): Default
8988         max-unrolled-insns to 100 for z10 tuning.
8989
8990 2009-07-24  Tobias Grosser  <grosser@fim.uni-passau.de>
8991
8992         * Makefile.in (TREE_DATA_REF_H, tree-vrp.o, tree-cfg.o, tree-if-conv.o
8993         tree-ssa-loop.o, tree-ssa-loop-niter.o, tree-ssa-loop-ivcanon.o,
8994         tree-ssa-loop-prefetch.o, tree-predcom.o, tree-affine.o,
8995         tree-scalar-evolution.o, tree-data-ref.o, tree-vect-loop.o,
8996         tree-vect-data-refs.o, tree-loop-linear.o, tree-loop-distribution.o
8997         tree-parloops.o, tree-pretty-printer.o, fold-const.o, tree-ssa-dce.o,
8998         lambda-code.o, params.o): Cleanup use of SCEV_H and TREE_DATA_REF_H.
8999
9000 2009-07-24  Kai Tietz  <kai.tietz@onevision.com>
9001
9002         * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR): Remove and
9003         use default set in mingw32.h header.
9004         * config/i386/mingw32.h (STANDARD_INCLUDE_DIR): Use for 32-bit and
9005         64-bit /mingw/include path.
9006         (STANDARD_STARTFILE_PREFIX_1): Use for 32-bit and 64-bit /mingw/lib
9007         path.
9008
9009 2009-07-23  Neil Vachharajani  <nvachhar@google.com>
9010
9011         PR rtl-optimization/40209
9012         * loop-iv.c (iv_analysis_loop_init): Call df_note_add_problem.
9013
9014 2009-07-23  Uros Bizjak  <ubizjak@gmail.com>
9015
9016         * config/i386/i386.c: Use ASM_LONG instead of .long.  Concatenate
9017         ASM_LONG, LPREFIX, MCOUNT_NAME and PROFILE_COUNT_REGISTER strings
9018         with the rest of string where appropriate.  Use fputs or putc
9019         instead of fprintf where appropriate.
9020
9021 2009-07-22  Michael Meissner  <meissner@linux.vnet.ibm.com>
9022             Pat Haugen  <pthaugen@us.ibm.com>
9023             Revital Eres <ERES@il.ibm.com>
9024
9025         * config/rs6000/vector.md: New file.  Move most of the vector
9026         expander support here from altivec.md to allow for the VSX vector
9027         unit in the future.  Add support for secondary_reload patterns.
9028         Rewrite the patterns for vector comparison, and vector comparison
9029         predicate instructions so that the RTL expresses the desired
9030         behavior, instead of using unspec.
9031
9032         * config/rs6000/constraints.md ("f" constraint): Use
9033         rs6000_constraints to hold the precalculated register class.
9034         ("d" constraint): Ditto.
9035         ("wd" constraint): New constraint for VSX.
9036         ("wf" constraint): Ditto.
9037         ("ws" constraint): Ditto.
9038         ("wa" constraint): Ditto.
9039         ("wZ" constraint): Ditto.
9040         ("j" constraint): Ditto.
9041
9042         * config/rs6000/predicates.md (vsx_register_operand): New
9043         predicate for VSX.
9044         (vfloat_operand): New predicate for vector.md.
9045         (vint_operand): Ditto.
9046         (vlogical_operand): Ditto.
9047         (easy_fp_constant): If VSX, 0.0 is an easy constant.
9048         (easy_vector_constant): Add VSX support.
9049         (altivec_indexed_or_indirect_operand): New predicate for
9050         recognizing Altivec style memory references with AND -16.
9051
9052         * config/rs6000/rs6000.c (rs6000_vector_reload): New static global
9053         for vector secondary reload support.
9054         (rs6000_vector_reg_class): Delete, replacing it with
9055         rs6000_constraints.
9056         (rs6000_vsx_reg_class): Ditto.
9057         (rs6000_constraints): New array to hold the register classes of
9058         each of the register constraints that can vary at runtime.
9059         (builtin_mode_to_type): New static array for builtin function type
9060         creation.
9061         (builtin_hash_table): New static hash table for builtin function
9062         type creation.
9063         (TARGET_SECONDARY_RELOAD): Define target hook.
9064         (TARGET_IRA_COVER_CLASSES): Ditto.
9065         (rs6000_hard_regno_nregs_internal): If -mvsx, floating point
9066         registers are 128 bits if VSX memory reference instructions are used.
9067         (rs6000_hard_regno_mode_ok): For VSX, only check if the VSX memory
9068         unit is being used.
9069         (rs6000_debug_vector_unit): Move into rs6000_debug_reg_global.
9070         (rs6000_debug_reg_global): Move -mdebug=reg statements here.
9071         Print several of the scheduling related parameters.
9072         (rs6000_init_hard_regno_mode_ok): Switch to putting constraints in
9073         rs6000_constraints instead of rs6000_vector_reg_class.  Move
9074         -mdebug=reg code to rs6000_debug_reg_global.  Add support for
9075         -mvsx-align-128 debug switch.  Drop testing float_p if VSX or
9076         Altivec.  Add VSX support.  Setup for secondary reload support on
9077         Altivec/VSX registers.
9078         (rs6000_override_options): Make power7 set the scheduling groups
9079         like the power5.  Add support for new debug switches to override
9080         the scheduling defaults.  Temporarily disable -mcpu=power7 from
9081         setting -mvsx.  Add support for debug switches -malways-hint,
9082         -msched-groups, and -malign-branch-targets.
9083         (rs6000_buitlin_conversion): Add support for returning unsigned
9084         vector conversion functions to fix regressions due to stricter
9085         type checking.
9086         (rs6000_builtin_mul_widen_even): Ditto.
9087         (rs6000_builtin_mul_widen_odd): Ditto.
9088         (rs6000_builtin_vec_perm): Ditto.
9089         (rs6000_vec_const_move): On VSX, use xxlxor to clear register.
9090         (rs6000_expand_vector_init): Initial VSX support for using xxlxor
9091         to zero a register.
9092         (rs6000_emit_move): Fixup invalid const symbol_ref+reg that is
9093         generated upstream.
9094         (bdesc_3arg): Add builtins for unsigned types.  Add builtins for
9095         VSX types for bit operations.  Changes to accomidate vector.md.
9096         (bdesc_2arg): Ditto.
9097         (bdesc_1arg): Ditto.
9098         (struct builtin_description_predicates): Rewrite predicate
9099         handling so that RTL describes the operation, instead of passing
9100         the instruction to be used as a string argument.
9101         (bdesc_altivec_preds): Ditto.
9102         (altivec_expand_predicate_builtin): Ditto.
9103         (altivec_expand_builtin): Ditto.
9104         (rs6000_expand_ternop_builtin): Use a switch instead of an if
9105         statement for vsldoi support.
9106         (altivec_expand_ld_builtin): Change to use new names from vector.md.
9107         (altivec_expand_st_builtin): Ditto.
9108         (paired_expand_builtin): Whitespace changes.
9109         (rs6000_init_builtins): Add V2DF/V2DI types.  Initialize the
9110         builtin_mode_to_type table for secondary reload.  Call
9111         builtin_function_type to build random builtin functions.
9112         (altivec_init_builtins): Change to use builtin_function_type to
9113         create builtin function types dynamically as we need them.
9114         (builtin_hash_function): New support for hashing the tree types
9115         for builtin function as we need it, rather than trying to build
9116         all of the trees that we need.  Add initial preliminary VSX support.
9117         (builtin_function_type): Ditto.
9118         (builtin_function_eq): Ditto.
9119         (builtin_hash_struct): Ditto.
9120         (rs6000_init_builtins): Ditto.
9121         (rs6000_common_init_builtins): Ditto.
9122         (altivec_init_builtins): Ditto.
9123         (rs6000_common_init_builtins): Ditto.
9124         (enum reload_reg_type): New enum for simplifing reg classes.
9125         (rs6000_reload_register_type): Simplify register classes into GPR,
9126         Vector, and other registers.  Altivec and VSX addresses in reload.
9127         (rs6000_secondary_reload_inner): Ditto.
9128         (rs6000_ira_cover_classes): New target hook, that returns the
9129         appropriate cover classes, based on -mvsx being used or not.
9130         (rs6000_secondary_reload_class): Add VSX support.
9131         (get_vec_cmp_insn): Delete, rewrite vector conditionals.
9132         (get_vsel_insn): Ditto.
9133         (rs6000_emit_vector_compare): Rewrite vector conditional support
9134         so that where we can, we use RTL operators, instead of blindly use
9135         UNSPEC.
9136         (rs6000_emit_vector_select): Ditto.
9137         (rs6000_emit_vector_cond_expr): Ditto.
9138         (rs6000_emit_minmax): Directly generate min/max under altivec, vsx.
9139         (create_TOC_reference): Add -mdebug=addr support.
9140         (emit_frame_save): VSX loads/stores need register indexed addressing.
9141
9142         * config/rs6000/rs6000.md: Include vector.md.
9143
9144         * config/rs6000/t-rs6000 (MD_INCLUDES): Add vector.md.
9145
9146         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
9147         support for V2DI, V2DF in logical, permute, select operations.
9148
9149         * config/rs6000/rs6000.opt (-mvsx-scalar-double): Add new debug
9150         switch for vsx/power7.
9151         (-mvsx-scalar-memory): Ditto.
9152         (-mvsx-align-128): Ditto.
9153         (-mallow-movmisalign): Ditto.
9154         (-mallow-df-permute): Ditto.
9155         (-msched-groups): Ditto.
9156         (-malways-hint): Ditto.
9157         (-malign-branch-targets): Ditto.
9158
9159         * config/rs6000/rs6000.h (IRA_COVER_CLASSES): Delete, use target
9160         hook instead.
9161         (IRA_COVER_CLASSES_PRE_VSX): Cover classes if not -mvsx.
9162         (IRA_COVER_CLASSES_VSX): Cover classes if -mvsx.
9163         (rs6000_vector_reg_class): Delete.
9164         (rs6000_vsx_reg_class): Ditto.
9165         (enum rs6000_reg_class_enum): New enum for the constraints that
9166         vary based on target switches.
9167         (rs6000_constraints): New array to hold the register class for all
9168         of the register constraints that vary based on the switches used.
9169         (ALTIVEC_BUILTIN_*_UNS): Add unsigned builtin functions.
9170         (enum rs6000_builtins): Add unsigned varients for the builtin
9171         declarations returned by target hooks for expanding multiplies,
9172         select, and permute operations.  Add VSX builtins.
9173         (enum rs6000_builtin_type_index): Add entries for VSX.
9174         (V2DI_type_node): Ditto.
9175         (V2DF_type_node): Ditto.
9176         (unsigned_V2DI_type_node): Ditto.
9177         (bool_long_type_node): Ditto.
9178         (intDI_type_internal_node): Ditto.
9179         (uintDI_type_internal_node): Ditto.
9180         (double_type_internal_node): Ditto.
9181
9182         * config/rs6000/altivec.md (whole file): Move all expanders to
9183         vector.md from altivec.md.  Rename insn matching functions to be
9184         altivec_foo.
9185         (UNSPEC_VCMP*): Delete, rewrite vector comparisons.
9186         (altivec_vcmp*): Ditto.
9187         (UNSPEC_VPERM_UNS): New, add for unsigned types using vperm.
9188         (VM): New iterator for moves that includes the VSX types.
9189         (altivec_vperm_<mode>): Add VSX types.  Add unsigned types.
9190         (altivec_vperm_<mode>_uns): New, for unsigned types.
9191         (altivec_vsel_*): Rewrite vector comparisons and predicate builtins.
9192         (altivec_eq<mode>): Ditto.
9193         (altivec_gt<mode>): Ditto.
9194         (altivec_gtu<mode>): Ditto.
9195         (altivec_eqv4sf): Ditto.
9196         (altivec_gev4sf): Ditto.
9197         (altivec_gtv4sf): Ditto.
9198         (altivec_vcmpbfp_p): Ditto.
9199
9200 2009-07-23  Richard Earnshaw  <rearnsha@arm.com>
9201
9202         * arm.md (split for ior/xor with shift and zero-extend): Cast op3 to
9203         unsigned HWI.
9204
9205 2009-07-23  Uros Bizjak  <ubizjak@gmail.com>
9206
9207         PR target/40832
9208         * config/i386/i386.c (output_387_ffreep): Rewrite to use
9209         ASM_SHORT instead of .word.
9210         * config/i386/i386.md (*tls_global_dynamic_64): Use ASM_SHORT
9211         instead of .word in asm template.
9212
9213 2009-07-22  Vladimir Makarov  <vmakarov@redhat.com>
9214
9215         PR target/37488
9216         * ira-lives.c (bb_has_abnormal_call_pred): New function.
9217         (process_bb_node_lives): Use it.
9218
9219         * ira.c (setup_cover_and_important_classes): Don't setup
9220         ira_important_class_nums.  Add cover classes to the end of
9221         important classes.
9222         (cover_class_order, comp_reg_classes_func, reorder_important_classes):
9223         New.
9224         (find_reg_class_closure): Use reorder_important_classes.
9225
9226         * config/i386/i386.h (IRA_COVER_CLASSES): Remove.
9227
9228         * config/i386/i386.c (i386_ira_cover_classes): New function.
9229         (TARGET_IRA_COVER_CLASSES): Redefine.
9230
9231         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Add a comment about
9232         importance of order of cover classes in the array.
9233
9234 2009-07-22  Diego Novillo  <dnovillo@google.com>
9235
9236         * tree-pass.h (TDF_EH): Define.
9237         * gimple-pretty-print.c (dump_gimple_stmt): If FLAGS
9238         contains TDF_EH, print the EH region number holding GS.
9239         * tree-dump.c (dump_options): Add "eh".
9240         * doc/invoke.texi: Document it.
9241
9242 2009-07-22  Doug Kwan  <dougkwan@google.com>
9243
9244         * config/arm/arm.md (subdi3) Copy non-reg values to DImode registers.
9245
9246 2009-07-22  Michael Matz  <matz@suse.de>
9247
9248         PR tree-optimization/35229
9249         PR tree-optimization/39300
9250
9251         * tree-ssa-pre.c (includes): Include tree-scalar-evolution.h.
9252         (inhibit_phi_insertion): New function.
9253         (insert_into_preds_of_block): Call it for REFERENCEs.
9254         (init_pre): Initialize and finalize scalar evolutions.
9255         * Makefile.in (tree-ssa-pre.o): Depend on tree-scalar-evolution.h .
9256
9257 2009-07-22  Uros Bizjak  <ubizjak@gmail.com>
9258
9259         * config/i386/predicates.md (zero_extended_scalar_load_operand):
9260         Use CONST_VECTOR_NUNITS to determine number of elements.
9261
9262 2009-07-22  Andreas Krebbel  <krebbel1@de.ibm.com>
9263
9264         * config/s390/constraints.md (ZQ, ZR, ZS, ZT): New constraints.
9265         (U, W): Constraints are now deprecated and will be removed if we
9266         run out of letters.
9267         * config/s390/s390.md (U, W): Replaced with ZQZR, ZSZT throughout
9268         the file.
9269         ("prefetch"): Add the stcmh instruction for prefetching.
9270         * config/s390/s390.c (s390_symref_operand_p): Function moved. No
9271         changes.
9272         (s390_short_displacement): Return always true if compiling for
9273         machines not providing the long displacement facility.
9274         (s390_mem_constraint): Support the new constraint letter Z.
9275         (s390_check_qrst_address): New function.
9276
9277 2009-07-21  DJ Delorie  <dj@redhat.com>
9278
9279         * config/mep/mep.c (mep_legitimize_arg): Leave control registers
9280         alone too.
9281
9282 2009-07-21  Jason Merrill  <jason@redhat.com>
9283
9284         * c-common.c (max_tinst_depth): Increase default to 1024.
9285
9286 2009-07-21  Uros Bizjak  <ubizjak@gmail.com>
9287
9288         * config/i386/sse.md (vec_unpacku_float_hi_v4si): New expander.
9289         (vec_unpacku_float_lo_v4si): Ditto.
9290
9291 2009-07-21  Uros Bizjak  <ubizjak@gmail.com>
9292
9293         PR target/40811
9294         * config/i386/sse.md (sse2_cvtudq2ps): New expander.
9295         (enum ix86_builtins): Add IX86_BUILTIN_CVTUDQ2PS.
9296         (builtin_description): Add __builtin_ia32_cvtudq2ps.
9297         (ix86_vectorize_builtin_conversion): Handle IX86_BUILTIN_CVTUDQ2PS.
9298
9299 2009-07-21  Jakub Jelinek  <jakub@redhat.com>
9300
9301         PR tree-optimization/40813
9302         * tree-inline.c (copy_bb): Regimplify RHS after last stmt, not before
9303         it.
9304
9305 2009-07-21  Kaz Kojima  <kkojima@gcc.gnu.org>
9306
9307         * config/sh/sh.c (sh_gimplify_va_arg_expr): Wrap the result
9308         with a NOP_EXPR if needed.
9309
9310 2009-07-21  Paul Brook <paul@codesourcery.com>
9311
9312         * tree-vectorizer.c (increase_alignment): Handle nested arrays.
9313         Terminate debug dump with newline.
9314
9315 2009-07-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
9316
9317         * pa.c (compute_zdepwi_operands): Limit deposit length to 32 - lsb.
9318         Cast "1" to unsigned HOST_WIDE_INT.
9319         (compute_zdepdi_operands): Limit maximum length to 64 bits.  Limit
9320         deposit length to the maximum length - lsb.  Extend length if
9321         HOST_BITS_PER_WIDE_INT is 32.
9322
9323 2009-07-20  Olatunji Ruwase <tjruwase@google.com>
9324
9325         * cgraph.h (constant_pool_htab): New function.
9326         (constant_descriptor_tree): Move from varasm.c.
9327         * varasm.c (constant_pool_htab): New function.
9328         (constant_descriptor_tree): Move to cgraph.h.
9329
9330 2009-07-20  Olatunji Ruwase  <tjruwase@google.com>
9331
9332         * toplev.c: Invoke FINISH_UNIT callbacks before call to finalize().
9333
9334 2009-07-20  Shujing Zhao  <pearly.zhao@oracle.com>
9335
9336         * Makefile.in (TREE_INLINE_H, tree-inline.o, cgraph.o): Remove
9337         $(VARRAY_H).
9338
9339 2009-07-20  Xinliang David Li  <davidxl@google.com>
9340
9341         * dbgcnt.c (dbg_cnt_set_limit_by_name): Add length check.
9342
9343 2009-07-20  Adam Nemet  <anemet@caviumnetworks.com>
9344
9345         * config/mips/mips.md (move_type): Add arith.
9346         (type): Handle arith.
9347         (zero_extendsidi2): Rename this into ...
9348         (*zero_extendsidi2): ... this.  Don't match if ISA_HAS_EXT_INS.
9349         (zero_extendsidi2): New expander.
9350         (*zero_extendsidi2_dext): New pattern.
9351
9352 2009-07-20  Nick Clifton  <nickc@redhat.com>
9353
9354         * config.gcc (mips64-*-*): Add definition of tm_defines in order
9355         to set MIPS_ABI_DEFAULT.
9356         * config/mips/vr.h (MIPS_ABI_DEFAULT): Remove definition.
9357
9358 2009-07-20  Jakub Jelinek  <jakub@redhat.com>
9359
9360         * tree-object-size.c (addr_object_size): Handle unions with
9361         array in it as last field of structs in __bos (, 1) as __bos (, 0).
9362
9363         PR tree-optimization/40792
9364         * tree.c (build_function_type_skip_args): Remove bogus assert.
9365
9366 2009-07-20  Jan Hubicka  <jh@suse.cz>
9367             Martin Jambor  <mjambor@suse.cz>
9368
9369         * cgraph.h (combined_args_to_skip): New field.
9370         * cgraph.c (cgraph_create_virtual_clone): Properly handle
9371         combined_args_to_skip and args_to_skip.
9372         * tree-inline.c (update_clone_info): New function.
9373         (tree_function_versioning): Call update_clone_info.
9374         * cgraphunit.c: (cgraph_materialize_clone): Dump materialized
9375         functions.
9376         (cgraph_materialize_all_clones): More extensive dumping, working
9377         with combined_args_to_skip rather than args_to_skip.
9378
9379 2009-07-20  Ira Rosen  <irar@il.ibm.com>
9380
9381         * tree-vectorizer.h (vectorizable_condition): Add parameters.
9382         * tree-vect-loop.c (vect_is_simple_reduction): Support COND_EXPR.
9383         (get_initial_def_for_reduction): Likewise.
9384         (vectorizable_reduction): Skip the check of first operand in case
9385         of COND_EXPR. Add check that it is outer loop vectorization if
9386         nested cycle was detected. Call vectorizable_condition() for
9387         COND_EXPR. If reduction epilogue cannot be created do not fail for
9388         nested cycles (if it is not double reduction). Assert that there
9389         is only one type in the loop in case of COND_EXPR. Call
9390         vectorizable_condition() to vectorize COND_EXPR.
9391         * tree-vect-stmts.c (vectorizable_condition): Update comment.
9392         Add parameters. Allow nested cycles if called from
9393         vectorizable_reduction(). Use reduction vector variable if provided.
9394         (vect_analyze_stmt): Call vectorizable_reduction() before
9395         vectorizable_condition().
9396         (vect_transform_stmt): Update call to vectorizable_condition().
9397
9398 2009-07-20  Christian Bruel  <christian.bruel@st.com>
9399
9400         * config/sh/sh.opt (-mfmovd): Resurrect and document.
9401         * doc/invoke.texi (-mfmovd): Likewise.
9402         * config/sh/sh.h (TARGET_FMOVD, MASK_FMOVD): Remove default setting.
9403
9404 2009-07-20  Jan Hubicka  <jh@suse.cz>
9405
9406         * tree-ssa-dce.c (remove_dead_phis): Only look for abnormal PHIs
9407         when handling SSA name.
9408
9409 2009-07-19  Jan Hubicka  <jh@suse.cz>
9410
9411         PR tree-optimization/40676
9412         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do renaming on all
9413         virtual PHIs in empty BBs.
9414
9415 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
9416
9417         * combine.c (make_compound_operation) <SUBREG>: If force_to_mode
9418         re-expanded the compound use gen_lowpart instead to convert to the
9419         desired mode.
9420
9421 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
9422
9423         * combine.c (try_widen_shift_mode): Add COUNT, OUTER_CODE and
9424         OUTER_CONST arguments.
9425         <LSHIFTRT>: Use them to allow widening if the bits shifted in from
9426         the new wider mode will be masked off.
9427         (simplify_shift_const_1): Adjust calls to try_widen_shift_mode.
9428
9429 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
9430
9431         * combine.c (try_widen_shift_mode) <LSHIFTRT>: Allow widening if the
9432         high-order bits are zero.
9433
9434 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
9435
9436         * combine.c (simplify_shift_const_1): Split code to determine
9437         shift_mode into ...
9438         (try_widen_shift_mode): ... here.  Allow widening for ASHIFTRT if the
9439         new bits shifted in are identical to the old sign bit.
9440
9441 2009-07-18  Richard Guenther  <rguenther@suse.de>
9442
9443         PR c/40787
9444         * gimplify.c (gimplify_call_expr): Reject code using results from
9445         functions returning void.
9446
9447 2009-07-18  Richard Sandiford  <r.sandiford@uk.ibm.com>
9448
9449         * doc/md.texi: Document the new PowerPC "es" constraint.
9450         Document that "m" can include automodified addresses on this target,
9451         and explain how %U must be used.  Extend the "Q" and "Z" documentation
9452         to suggest "es" as well as "m".
9453         * config/rs6000/constraints.md (es): New memory constraint.
9454         (Q, Z): Update strings to match new documentation.
9455
9456 2009-07-18  Richard Sandiford  <r.sandiford@uk.ibm.com>
9457
9458         * config/rs6000/rs6000.c (rs6000_mode_dependent_address): Allow any
9459         offset from virtual_stack_vars_rtx and arg_pointer_rtx.
9460         * config/rs6000/predicates.md (volatile_mem_operand): Use
9461         offsettable_nonstrict_memref_p.
9462         * config/rs6000/rs6000.md (*floatsidf2_internal): Remove split check.
9463         (*floatunssidf2_internal): Likewise.
9464         (*fix_truncdfsi2_internal): Likewise.
9465         (*fix_trunctfsi2_internal): Likewise.
9466
9467 2009-07-17  Anatoly Sokolov  <aesok@post.ru>
9468
9469         * config/avr/avr-devices.c (avr_mcu_t): Add atmega8u2, atmega16u2 and
9470         atmega32u2 devices.
9471         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
9472
9473 2009-07-17  Richard Guenther  <rguenther@suse.de>
9474
9475         PR c/40401
9476         * tree-pass.h (pass_diagnose_omp_blocks): Declare.
9477         (pass_warn_unused_result): Likewise.
9478         (TODO_set_props): Remove.
9479         * omp-low.c (diagnose_omp_structured_block_errors): Change to
9480         run as a pass.
9481         (pass_diagnose_omp_blocks): Define.
9482         * c-decl.c (pop_file_scope): Do not finalize the CU here.
9483         (c_gimple_diagnostics_recursively): Remove.
9484         (finish_function): Do not call it.
9485         (c_write_global_declarations): Continue after errors.
9486         Finalize the CU here.
9487         * c-gimplify.c (c_genericize): Do not gimplify here.
9488         * c-common.c (c_warn_unused_result): Move ...
9489         * tree-cfg.c (do_warn_unused_result): ... here.
9490         (run_warn_unused_result): New function.
9491         (gate_warn_unused_result): New function.
9492         (pass_warn_unused_result): New pass.
9493         * c-common.h (c_warn_unused_result): Remove.
9494         * flags.h (flag_warn_unused_result): Declare.
9495         * c-opts.c (c_common_init_options): Enable flag_warn_unused_result.
9496         * opts.c (flag_warn_unused_result): Initialize to false.
9497         * toplev.c (compile_file): Add comment.
9498         * omp-low.c (create_omp_child_function): Do not register
9499         the function with the frontend.
9500         (diagnose_omp_structured_block_errors): Prepare to be
9501         called as optimization pass.
9502         (gate_diagnose_omp_blocks): New function.
9503         (pass_diagnose_omp_blocks): New pass.
9504         * cgraph.h (cgraph_optimize): Remove.
9505         (cgraph_analyze_function): Likewise.
9506         * cgraph.c (cgraph_add_new_function): Gimplify C++ thunks.
9507         * cgraphunit.c (cgraph_lower_function): Lower nested functions
9508         before their parents here.
9509         (cgraph_finalize_function): Not here.
9510         (cgraph_analyze_function): Gimplify functions here.
9511         (cgraph_finalize_compilation_unit): Continue after errors.
9512         Optimize the callgraph from here.
9513         (cgraph_optimize): Make static.
9514         * langhooks.c (write_global_declarations): Finalize the CU.
9515         * gimplify.c (gimplify_asm_expr): Do not emit ASMs with errors.
9516         (gimplify_function_tree): Assert we gimplify only once.
9517         Set PROP_gimple_any property.
9518         * tree-nested.c (gimplify_all_functions): New function.
9519         (lower_nested_functions): Gimplify all nested functions.
9520         * gimple.h (diagnose_omp_structured_block_errors): Remove.
9521         * passes.c (init_optimization_passes): Add pass_warn_unused_result
9522         and pass_diagnose_omp_blocks after gimplification.  Do not
9523         set TODO_set_props on all_lowering_passes.
9524         (execute_one_pass): Do not handle TODO_set_props.
9525         * Makefile.in (cgraphunit.o): Add $(TREE_DUMP_H) dependency.
9526         (gimplify.o): Add tree-pass.h dependency.
9527         * tree-inline.c (copy_statement_list): Properly copy STATEMENT_LIST.
9528         (copy_tree_body_r): Properly handle TARGET_EXPR like SAVE_EXPR.
9529         (unsave_r): Likewise.
9530         * c-omp.c (c_finish_omp_atomic): Set DECL_CONTEXT on the
9531         temporary variable.
9532
9533 2009-07-17  Sandra Loosemore  <sandra@codesourcery.com>
9534
9535         * doc/service.texi (Service): Restore previously removed link,
9536         which isn't broken after all.
9537
9538 2009-07-17  Richard Guenther  <rguenther@suse.de>
9539
9540         PR tree-optimization/40321
9541         * tree-ssa-pre.c (add_to_exp_gen): Also add names defined by
9542         PHI nodes to the maximal set.
9543         (make_values_for_phi): Add PHI arguments to the maximal set.
9544         (execute_pre): Dump PHI_GEN and the maximal set.
9545
9546 2009-07-17  Jakub Jelinek  <jakub@redhat.com>
9547
9548         PR c++/40780
9549         * gimplify.c (gimplify_conversion): Don't change non-conversions into
9550         VIEW_CONVERT_EXPR.
9551
9552 2009-07-16  Sandra Loosemore  <sandra@codesourcery.com>
9553
9554         * doc/extend.texi (Nested Functions): Replace broken link with
9555         textual reference.
9556         * doc/service.texi (Service): Remove broken link.
9557
9558 2009-07-16  H.J. Lu  <hongjiu.lu@intel.com>
9559
9560         PR bootstrap/40781
9561         * builtins.c (expand_builtin_memcmp): Use loc instead of
9562         EXPR_LOCATION (exp).
9563         (expand_builtin_strncmp): Likewise.
9564
9565 2009-07-17  Aldy Hernandez  <aldyh@redhat.com>
9566             Manuel López-Ibáñez  <manu@gcc.gnu.org>
9567
9568         PR 40435
9569         * tree-complex.c, tree-loop-distribution.c, tree.c, tree.h,
9570         builtins.c, fold-const.c, omp-low.c, cgraphunit.c, tree-ssa-ccp.c,
9571         tree-ssa-dom.c, gimple-low.c, expr.c, tree-ssa-ifcombine.c,
9572         c-decl.c, stor-layout.c, tree-if-conv.c, c-typeck.c, gimplify.c,
9573         calls.c, tree-sra.c, tree-mudflap.c, tree-ssa-copy.c,
9574         tree-ssa-forwprop.c, c-convert.c, c-omp.c, varasm.c,
9575         tree-inline.c, c-common.c, c-common.h, gimple.c,
9576         tree-switch-conversion.c, gimple.h, tree-cfg.c, c-parser.c,
9577         convert.c: Add location argument to fold_{unary,binary,ternary},
9578         fold_build[123], build_call_expr, build_size_arg,
9579         build_fold_addr_expr, build_call_array, non_lvalue, size_diffop,
9580         fold_build1_initializer, fold_build2_initializer,
9581         fold_build3_initializer, fold_build_call_array,
9582         fold_build_call_array_initializer, fold_single_bit_test,
9583         omit_one_operand, omit_two_operands, invert_truthvalue,
9584         fold_truth_not_expr, build_fold_indirect_ref, fold_indirect_ref,
9585         combine_comparisons, fold_builtin_*, fold_call_expr,
9586         build_range_check, maybe_fold_offset_to_address, round_up,
9587         round_down.
9588
9589 2009-07-16  Jason Merrill  <jason@redhat.com>
9590
9591         PR libstdc++/37907
9592         * c-common.c (c_common_reswords): Add __is_standard_layout
9593         and __is_trivial.
9594         * c-common.h (enum rid): Add RID_IS_STD_LAYOUT and RID_IS_TRIVIAL.
9595         * doc/implement-cxx.texi: New.
9596         * doc/gcc.texi: Include it.
9597
9598 2009-07-16  DJ Delorie  <dj@redhat.com>
9599
9600         * config/m32c/m32c.c (m32c_compare_redundant): Avoid removing
9601         compares that may be indirectly affected by previous instructions.
9602
9603 2009-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9604
9605         * builtins.c (do_mpc_arg2): New.
9606         (fold_builtin_2): Fold builtin cpow.
9607         * real.h (HAVE_mpc_pow): New.
9608
9609 2009-07-16  Bingfeng Mei  <bmei@broadcom.com>
9610
9611         * modulo-sched.c (sms_schedule): stage_count <= 1 as correct
9612         comparison to skip unprofitable schedule
9613
9614 2009-07-16  Simon Baldwin  <simonb@google.com>
9615
9616         * gcc.c (option_map): New flag -no-canonical-prefixes.
9617         * (display_help): Print help text for new flag.
9618         * (process_command): Move options translation and language specifics
9619         and handle new flag early.  Use it to set a function pointer to a
9620         prefix builder.  Replace make_relative_prefix calls with calls to
9621         the function pointed to.  Ignore new flag in regular options handling.
9622         * doc/invoke.texi (Overall Options): Documented -no-canonical-prefixes.
9623
9624 2009-07-15  DJ Delorie  <dj@redhat.com>
9625
9626         * config/mep/mep.md (sibcall_internal): Change register to avoid
9627         argument registers.
9628         (sibcall_value_internal): Likewise.
9629
9630 2009-07-15  Eric Botcazou  <ebotcazou@adacore.com>
9631
9632         PR rtl-optimization/40710
9633         * resource.c (mark_target_live_regs): Reset DF problem to LR.
9634
9635 2009-07-15  Adam Nemet  <anemet@caviumnetworks.com>
9636
9637         * config/mips/mips.md (*extenddi_truncate<mode>,
9638         *extendsi_truncate<mode>): Change type attribute to move_type
9639         with shift_shift.  Split out code handling exts from here ...
9640         (*extend<GPR:mode>_truncate<SHORT:mode>_exts): ... to this new
9641         pattern.
9642         (*extendhi_truncateqi): Change type attribute to move_type with
9643         shift_shift.  Split out code handling exts from here ...
9644         (*extendhi_truncateqi_exts): ... to this new pattern.
9645
9646 2009-07-15  Uros Bizjak  <ubizjak@gmail.com>
9647
9648         * config/i386/sse.md (copysign<mode>3): Use "and-not" SSE instruction
9649         instead of "and" with inverted sign bit mask value.  Use
9650         "nonimmediate_operand" for operand 1 and operand 2 predicate.
9651         Allocate registers only for operand 4 and operand 5.
9652
9653 2009-07-15  Jakub Jelinek  <jakub@redhat.com>
9654
9655         PR middle-end/40747
9656         * fold-const.c (fold_cond_expr_with_comparison): When folding
9657         < and <= to MIN, make sure the MIN uses the same type as the
9658         comparison's operands.
9659
9660 2009-07-15  Richard Earnshaw  <rearnsha@arm.com>
9661
9662         * arm.md (ior_xor): New code iterator.
9663         (split for ior/xor with shift and zero-extend): New split pattern.
9664         * arm/predicates.md (subreg_lowpart_operator): New special predicate.
9665
9666 2009-07-15  Richard Guenther  <rguenther@suse.de>
9667
9668         * tree-ssa-structalias.c (make_constraint_from_heapvar): Initialize
9669         offset member.
9670
9671 2009-07-15  Richard Guenther  <rguenther@suse.de>
9672
9673         PR middle-end/40753
9674         * alias.c (ao_ref_from_mem): Reject FUNCTION_DECL and LABEL_DECL bases.
9675
9676 2009-07-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
9677
9678         * config/m68k/linux-unwind.h (m68k_fallback_frame_state): Update to
9679         handle 2.6.30 kernel.
9680
9681 2009-07-15  DJ Delorie  <dj@redhat.com>
9682
9683         * config/mep/mep.md (sibcall_internal): Change register to allow
9684         for 24-bit addresses.
9685         (sibcall_value_internal): Likewise.
9686
9687 2009-07-14  Ghassan Shobaki  <ghassan.shobaki@amd.com>
9688
9689         * doc/invoke.texi: Added descriptions of the  scheduling heuristics
9690         that are enabled/disabled by the flags introduced by a previous patch.
9691
9692 2009-07-14  DJ Delorie  <dj@redhat.com>
9693
9694         * config/mep/mep.md (sibcall_internal): Include non-toggling
9695         non-jmp case.
9696         (sibcall_value_internal): Likewise.
9697
9698 2009-07-14  Taras Glek  <tglek@mozilla.com>
9699             Rafael Espindola  <espindola@google.com>
9700
9701         * doc/sourcebuild.texi: Document install-plugin target.
9702         * configure.ac: Added install-plugin target to language makefiles.
9703         * configure: Regenerate.
9704         * Makefile.in: (install-plugin): Install more headers,
9705         depend on lang.install-plugin.
9706
9707 2009-07-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
9708
9709         * tree-vrp.c (vrp_evaluate_conditional): Mark strings for
9710         translation.
9711
9712 2009-07-14  DJ Delorie  <dj@redhat.com>
9713
9714         * config/mep/mep.c (mep_vliw_jmp_match): New function.
9715         * config/mep/mep-protos.h (mep_vliw_jmp_match): Prototype it.
9716         * config/mep/mep.md (sibcall_internal): Change test from
9717         mep_vliw_mode_match to mep_vliw_jmp_match.
9718         (sibcall_value_internal): Likewise.
9719
9720 2009-07-14  Uros Bizjak  <ubizjak@gmail.com>
9721
9722         * config/i386/sse.md (copysign<mode>3): New expander.
9723         * config/i386/i386-protos.h (ix86_build_signbit_mask): New prototype.
9724         * config/i386/i386.c (ix86_build_signbit_mask): Make public.
9725         Use ix86_build_const_vector.
9726         (enum ix86_builtins): Add IX86_BUILTIN_CPYSGNPS and
9727         IX86_BUILTIN_CPYSGNPD.
9728         (builtin_description): Add __builtin_ia32_copysignps and
9729         __builtin_ia32_copysignpd.
9730         (ix86_builtin_vectorized_function): Handle BUILT_IN_COPYSIGN
9731         and BUILT_IN_COPYSIGNF.
9732
9733 2009-07-13  Jason Merrill  <jason@redhat.com>
9734
9735         * builtins.c (can_trust_pointer_alignment): New fn.
9736         (get_pointer_alignment): Factor it out from here.
9737         * tree.h: Declare it.
9738
9739 2009-07-14  David Edelsohn  <edelsohn@gnu.org>
9740
9741         * config/rs6000/predicates.md (offsettable_mem_operand): Test
9742         RTX_AUTOINC class.
9743
9744 2009-07-14  Dodji Seketeli  <dodji@redhat.com>
9745
9746         PR debug/40705
9747         PR c++/403057
9748         * dwarf2.out.c (gen_type_die_with_usage): Added comment.
9749
9750 2009-07-14  Richard Guenther  <rguenther@suse.de>
9751             Andrey Belevantsev <abel@ispras.ru>
9752
9753         PR middle-end/40745
9754         * cfgexpand.c (partition_stack_vars): Do not bother to update
9755         alias information when not optimizing.
9756
9757 2009-07-14  Richard Guenther  <rguenther@suse.de>
9758             Andrey Belevantsev <abel@ispras.ru>
9759
9760         * tree-ssa-alias.h (refs_may_alias_p_1): Declare.
9761         (pt_solution_set): Likewise.
9762         * tree-ssa-alias.c (refs_may_alias_p_1): Export.
9763         * tree-ssa-structalias.c (pt_solution_set): New function.
9764         * final.c (rest_of_clean_state): Free SSA data structures.
9765         * print-rtl.c (print_decl_name): Remove.
9766         (print_mem_expr): Implement in terms of print_generic_expr.
9767         * alias.c (ao_ref_from_mem): New function.
9768         (rtx_refs_may_alias_p): Likewise.
9769         (true_dependence): Query alias-export info.
9770         (canon_true_dependence): Likewise.
9771         (write_dependence_p): Likewise.
9772         * tree-dfa.c (get_ref_base_and_extent): For void types leave
9773         size unknown.
9774         * emit-rtl.c (component_ref_for_mem_expr): Remove.
9775         (mem_expr_equal_p): Use operand_equal_p.
9776         (set_mem_attributes_minus_bitpos): Do not use
9777         component_ref_for_mem_expr.
9778         * cfgexpand.c (add_partitioned_vars_to_ptset): New function.
9779         (update_alias_info_with_stack_vars): Likewise.
9780         (partition_stack_vars): Call update_alias_info_with_stack_vars.
9781         * tree-ssa.c (delete_tree_ssa): Do not release SSA names
9782         explicitly nor clear stmt operands.
9783         Free the decl-to-pointer map.
9784         * tree-optimize.c (execute_free_datastructures): Do not free
9785         SSA data structures here.
9786         * tree-flow.h (struct gimple_df): Add decls_to_pointers member.
9787         * Makefile.in (emit-rtl.o): Add pointer-set.h dependency.
9788         (alias.o): Add tree-ssa-alias.h, pointer-set.h and $(TREE_FLOW_H)
9789         dependencies.
9790         (print-rtl.o): Add $(DIAGNOSTIC_H) dependency.
9791
9792 2009-07-13  DJ Delorie  <dj@redhat.com>
9793
9794         * config/mep/mep.h (CC1_SPEC): Tweak parameters to trigger
9795         unrolling at the right iteration count.
9796
9797         * config/mep/mep.c (mep_expand_prologue): Fix frame pointer
9798         calculations.
9799
9800 2009-07-13  Ghassan Shobaki  <ghassan.shobaki@amd.com>
9801
9802         * haifa-sched.c (rank_for_schedule): Introduced flags to
9803         enable/disable individual scheduling heuristics.
9804         * common.opt: Introduced flags to enable/disable individual
9805         heuristics in the scheduler.
9806         * doc/invoke.texi: Introduced flags to enable/disable individual
9807         heuristics in the scheduler.
9808
9809 2009-07-13  Kai Tietz  <kai.tietz@onevision.com>
9810
9811         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Remove file
9812         config/i386/mingw-tls.c.
9813         * config/i386/mingw-tls.c: Removed.
9814
9815 2009-07-13  Ira Rosen  <irar@il.ibm.com>
9816
9817         * tree-vect-loop.c (get_initial_def_for_reduction): Ensure that the
9818         checks access only relevant statements.
9819         (vectorizable_reduction): Likewise.
9820
9821 2009-07-12  Kai Tietz  <kai.tietz@onevision.com>
9822
9823         * config/i386/cygming.h (TARGET_OS_CPP_BUILTINS): Define _X86_
9824         just for 32-bit case.
9825
9826 2009-07-12  Jan Hubicka  <jh@suse.cz>
9827
9828         PR tree-optimization/40585
9829         * except.c (expand_resx_expr): When there already is resume
9830         instruction, produce linked list.
9831         (build_post_landing_pads): Assert that resume is empty.
9832         (connect_post_landing_pads): Handle resume lists.
9833         (dump_eh_tree): Dump resume list.
9834
9835 2009-07-12  Ira Rosen  <irar@il.ibm.com>
9836
9837         * tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
9838         with additional argument.
9839         * tree-vectorizer.h (enum vect_def_type): Add
9840         vect_double_reduction_def.
9841         (vect_is_simple_reduction): Add argument.
9842         * tree-vect-loop.c (vect_determine_vectorization_factor): Fix
9843         indentation.
9844         (vect_analyze_scalar_cycles_1): Detect double reduction. Call
9845         vect_is_simple_reduction with additional argument.
9846         (vect_analyze_loop_operations): Handle exit phi nodes in case of
9847         double reduction.
9848         (reduction_code_for_scalar_code): Handle additional codes by
9849         returning ERROR_MARK for them. Fix comment and indentation.
9850         (vect_is_simple_reduction): Fix comment, add argument to specify
9851         double reduction. Detect double reduction.
9852         (get_initial_def_for_induction): Fix indentation.
9853         (get_initial_def_for_reduction): Fix comment and indentation.
9854         Handle double reduction. Create initial definitions that do not
9855         require adjustment if ADJUSTMENT_DEF is NULL. Handle additional cases.
9856         (vect_create_epilog_for_reduction): Fix comment, add argument to
9857         handle double reduction. Use PLUS_EXPR in case of MINUS_EXPR in
9858         epilogue result extraction. Create double reduction phi node and
9859         replace relevant uses.
9860         (vectorizable_reduction): Call vect_is_simple_reduction with
9861         additional argument. Fix indentation. Update epilogue code treatment
9862         according to the changes in reduction_code_for_scalar_code. Check
9863         for double reduction. Call vect_create_epilog_for_reduction with
9864         additional argument.
9865         * tree-vect-stmts.c (process_use): Handle double reduction, update
9866         documentation.
9867         (vect_mark_stmts_to_be_vectorized): Handle double reduction.
9868         (vect_get_vec_def_for_operand): Likewise.
9869
9870 2009-07-12  Danny Smith  <dansmister@gmail.com>
9871
9872         * config/i386/winnt.c (i386_pe_determine_dllexport_p): Don't
9873         dllexport if !TREE_PUBLIC.
9874         (i386_pe_maybe_record_exported_symbol): Assert TREE_PUBLIC.
9875
9876 2009-07-11  Anatoly Sokolov  <aesok@post.ru>
9877
9878         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Redefine.
9879         (avr_extra_arch_macro) Remove declatation.
9880         * config/avr/avr.c (avr_cpu_cpp_builtins): New function.
9881         (avr_extra_arch_macro) Declare as static.
9882         * config/avr/avr-protos.h (avr_cpu_cpp_builtins): Dclare.
9883
9884 2009-07-11  Jan Hubicka  <jh@suse.cz>
9885
9886         PR middle-end/48388
9887         * except.c (can_be_reached_by_runtime): Test for NULL aka bitmap.
9888
9889 2009-07-11  Jakub Jelinek  <jakub@redhat.com>
9890
9891         PR debug/40713
9892         * dwarf2out.c (dw_fde_struct): Add in_std_section and
9893         cold_in_std_section bits.
9894         (dwarf2out_begin_prologue): Initialize them.
9895         (dwarf2out_finish): Don't emit FDE range into .debug_ranges
9896         if already covered by text_section or cold_text_section range.
9897
9898         PR rtl-optimization/40667
9899         * defaults.h (MINIMUM_ALIGNMENT): Define if not defined.
9900         * doc/tm.texi (MINIMUM_ALIGNMENT): Document it.
9901         * config/i386/i386.h (MINIMUM_ALIGNMENT): Define.
9902         * config/i386/i386.c (ix86_minimum_alignment): New function.
9903         * config/i386/i386-protos.h (ix86_minimum_alignment): New prototype.
9904         * cfgexpand.c (expand_one_var): Use MINIMIM_ALIGNMENT.
9905         * emit-rtl.c (gen_reg_rtx): Likewise.
9906         * function.c (assign_parms): Likewise.  If nominal_type needs
9907         bigger alignment than FUNCTION_ARG_BOUNDARY, use its alignment
9908         rather than passed_type's alignment.
9909
9910         PR target/40668
9911         * function.c (assign_parm_setup_stack): Adjust
9912         MEM_OFFSET (data->stack_parm) if promoted_mode is different
9913         from nominal_mode on big endian.
9914
9915 2009-07-11  Paolo Bonzini  <bonzini@gnu.org>
9916
9917         * expmed.c (emit_store_flag_1): Fix choice of zero vs. sign extension.
9918
9919 2009-07-10  DJ Delorie  <dj@redhat.com>
9920
9921         * config/mep/mep.c (mep_can_inline_p): Correct logic, and simplify.
9922
9923 2009-07-10  Mark Mitchell  <mark@codesourcery.com>
9924
9925         * config/arm/thumb2.md (thumb2_cbz): Correct computation of length
9926         attribute.
9927         (thumb2_cbnz): Likewise.
9928
9929 2009-07-10  David Daney  <ddaney@caviumnetworks.com>
9930
9931         PR target/39079
9932         * config.gcc (supported_defaults): Add synci.
9933         (with_synci): Add validation.
9934         (all_defaults): Add synci.
9935         * config/mips/mips.md (clear_cache): Use TARGET_SYNCI instead of
9936         ISA_HAS_SYNCI.
9937         (synci): Same.
9938         * config/mips/mips.opt (msynci): New option.
9939         * config/mips/mips.c (mips_override_options): Warn on use of
9940         -msynci for targets that do now support it.
9941         * gcc/config/mips/mips.h (OPTION_DEFAULT_SPECS): Add a default for
9942         msynci.
9943         * gcc/doc/invoke.texi (-msynci): Document the new option.
9944         * doc/install.texi (--with-synci): Document the new option.
9945
9946 2009-07-10  Richard Guenther  <rguenther@suse.de>
9947
9948         PR tree-optimization/40496
9949         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Create
9950         the PHI result with a compatible type.
9951
9952 2009-07-10  Manuel López-Ibáñez  <manu@gcc.gnu.org>
9953
9954         PR 25509
9955         PR 40614
9956         * c.opt (Wunused-result): New.
9957         * doc/invoke.texi: Document it.
9958         * c-common.c (c_warn_unused_result): Use it.
9959
9960 2009-07-09  DJ Delorie  <dj@redhat.com>
9961
9962         * targhooks.c (default_target_can_inline_p): Rename from
9963         default_target_option_can_inline_p.
9964         * targhooks.h (default_target_can_inline_p): Likewise.
9965         * target-def.h (TARGET_CAN_INLINE_P): Rename from
9966         TARGET_OPTION_CAN_INLINE_P.
9967         * config/i386/i386.c (TARGET_CAN_INLINE_P): Likewise.
9968         * config/mep/mep.c (TARGET_CAN_INLINE_P): Likewise.
9969         (mep_target_can_inline_p): Rename from
9970         mep_target_option_can_inline_p.
9971
9972         PR target/40626
9973         * config/mep/mep.h (FUNCTION_ARG_REGNO_P): Add coprocessor
9974         registers used to pass vectors.
9975
9976         * config/mep/mep.c (mep_option_can_inline_p): Remove error call.
9977
9978 2009-07-09  Tom Tromey  <tromey@redhat.com>
9979
9980         * unwind-dw2-fde-darwin.c: Include dwarf2.h.
9981         * config/mmix/mmix.c: Include dwarf2.h.
9982         * config/rs6000/darwin-fallback.c: Include dwarf2.h.
9983         * config/xtensa/unwind-dw2-xtensa.c: Include dwarf2.h.
9984         * config/sh/sh.c: Include dwarf2.h.
9985         * config/i386/i386.c: Include dwarf2.h.
9986         * Makefile.in (DWARF2_H): Remove 'elf'.
9987         * except.c: Include dwarf2.h.
9988         * unwind-dw2.c: Include dwarf2.h.
9989         * dwarf2out.c: Include dwarf2.h.
9990         * unwind-dw2-fde-glibc.c: Include dwarf2.h.
9991         * unwind-dw2-fde.c: Include dwarf2.h.
9992         * dwarf2asm.c: Include dwarf2.h.
9993
9994 2009-07-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
9995
9996         * haifa-sched.c (insn_finishes_cycle_p): New static function.
9997         (max_issue): Use it.
9998         * sched-int.h (struct sched_info: insn_finishes_block_p): New
9999         scheduler hook.
10000         * sched-rgn.c (rgn_insn_finishes_block_p): Implement it.
10001         (region_sched_info): Update.
10002         * sched-ebb.c (ebb_sched_info): Update.
10003         * modulo-sched.c (sms_sched_info): Update.
10004         * sel-sched-ir.c (sched_sel_haifa_sched_info): Update.
10005
10006 2009-07-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
10007
10008         * varasm.c (build_constant_desc): Don't share RTL in pool entries.
10009
10010 2009-07-09  Basile Starynkevitch  <basile@starynkevitch.net>
10011
10012         * plugin.c (try_init_one_plugin): passes RTLD_GLOBAL to dlopen.
10013
10014 2009-07-09  Jakub Jelinek  <jakub@redhat.com>
10015
10016         PR middle-end/40692
10017         * fold-const.c (fold_cond_expr_with_comparison): Don't replace
10018         arg1 with arg01 if arg1 is already INTEGER_CST.
10019
10020 2009-07-08  Adam Nemet  <anemet@caviumnetworks.com>
10021
10022         * simplify-rtx.c (simplify_binary_operation_1) <AND>:
10023         Transform (and (truncate)) into (truncate (and)).
10024
10025 2009-07-08  Adam Nemet  <anemet@caviumnetworks.com>
10026
10027         * combine.c (make_extraction): Check TRULY_NOOP_TRUNCATION before
10028         creating LHS paradoxical subregs.  Fix surrounding returns to
10029         use NULL_RTX rather than 0.
10030
10031 2009-07-08  DJ Delorie  <dj@redhat.com>
10032
10033         * config/mep/mep.c: (mep_option_can_inline_p): New.
10034         (TARGET_OPTION_CAN_INLINE_P): Define.
10035
10036 2009-07-08  Mark Wielaard  <mjw@redhat.com>
10037
10038         PR debug/40659
10039         * dwarf2out.c (add_data_member_location_attribute): When we have
10040         only a constant offset don't emit a new location description using
10041         DW_OP_plus_uconst, but just add the constant with add_AT_int, when
10042         dwarf_version > 2.
10043
10044 2009-07-08  Richard Henderson  <rth@redhat.com>
10045
10046         PR target/38900
10047         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move to i386.c.
10048         (enum reg_class): Add CLOBBERED_REGS.
10049         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Likewise.
10050         * config/i386/i386.c (ix86_conditional_register_usage): Moved
10051         from CONDITIONAL_REGISTER_USAGE; build CLOBBERED_REGS for 64-bit.
10052         (ix86_function_ok_for_sibcall): Tidy.  Disallow MS->SYSV sibcalls.
10053         (ix86_expand_call): Use sibcall_insn_operand when needed.  Don't
10054         force 64-bit sibcalls into R11.
10055         * config/i386/constraints.md (U): New constraint.
10056         * config/i386/i386.md (sibcall_1, sibcall_value_1): Use it.
10057         (sibcall_1_rex64, sibcall_value_1_rex64): Likewise.
10058         (sibcall_1_rex64_v, sibcall_value_1_rex64_v): Remove.
10059
10060 2009-07-08  Shujing Zhao  <pearly.zhao@oracle.com>
10061
10062         * basic-block.h (dump_regset, debug_regset): Remove duplicate
10063         prototypes.
10064         * c-objc-common.h (c_initialize_diagnostics): Ditto.
10065         * ebitmap.h (dump_ebitmap): Ditto.
10066         * optabs.h (optab_libfunc): Ditto.
10067         * tree.h (tree_expr_nonzero_warnv_p): Ditto.
10068         * tree-flow.h (vect_can_force_dr_alignment_p,
10069         get_vectype_for_scalar_type): Ditto.
10070         (vectorize_loops): Move prototype to ...
10071         * tree-vectorizer.h: ... here. Also, adjust comment.
10072         (vect_set_verbosity_level): Remove duplicate prototype.
10073         * tree-ssa-loop.c: Include tree-vectorizer.h.
10074         * Makefile.in (tree-ssa-loop.o): Depend on tree-vectorizer.h.
10075
10076 2009-07-08  Nick Clifton  <nickc@redhat.com>
10077
10078         * config/i386/unix.h (ASM_COMMENT_START): Add a space after the
10079         forward slash.
10080
10081 2009-07-08  DJ Delorie  <dj@redhat.com>
10082
10083         * config/mep/mep-ivc2.cpu (cpmovtocsar0_C3, cpmovtocsar1_C3,
10084         cpmovtocc_C3, cpmovtocsar0_P0S_P1, cpmovtocsar1_P0S_P1,
10085         cpmovtocc_P0S_P1): Mark volatile.  Note which registers are
10086         written to.
10087         * config/mep/intrinsics.md: Regenerated.
10088         * config/mep/mep.c (mep_interrupt_saved_reg): Save IVC2 control
10089         registers when asm() or calls are detected.
10090
10091 2009-07-08  Manuel López-Ibáñez  <manu@gcc.gnu.org>
10092
10093         PR c++/31246
10094         * gimplify.c (gimplify_expr): Propagate no_warning flag when
10095         gimplifying.
10096         * gimple (gimple_build_call_from_tree): Likewise.
10097         * tree-cfg.c (remove_useless_stmts_warn_notreached): Check
10098         no_warning flag before warning.
10099
10100 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
10101
10102         * tree.c (set_expr_locus): Remove.
10103         * tree.h (EXPR_LOCUS,SET_EXPR_LOCUS,set_expr_locus): Remove.
10104         * c-typeck.c (c_finish_stmt_expr):  Replace EXPR_LOCUS by
10105         EXPR_LOCATION.
10106         * gimplify.c (internal_get_tmp_var): Likewise.
10107         (gimplify_call_expr): Likewise.
10108         (gimplify_one_sizepos): Likewise.
10109
10110 2009-07-07  Eric Botcazou  <ebotcazou@adacore.com>
10111
10112         PR debug/40666
10113         * dbxout.c (dbxout_symbol) <PARM_DECL>: Deal with parameters pointing
10114         to variables for debugging purposes.
10115
10116 2009-06-23  Mark Loeser  <mark@halcy0n.com>
10117
10118         PR build/40010
10119         * Makefile.in (gcc.pod): Depend on gcc-vers.texi.
10120
10121 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
10122
10123         * pretty-print.c (pp_base_format): Remove %J.
10124         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
10125         gcc_cxxdiag_char_table): Likewise.
10126         (init_dynamic_diag_info): Likewise.
10127
10128 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
10129
10130         * pretty-print.c (pp_base_format): Remove %H.
10131         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
10132         gcc_cxxdiag_char_table): Likewise.
10133         (init_dynamic_diag_info): Likewise.
10134         * config/mep/mep.c (mep_select_section): Likewise.
10135
10136 2009-07-07  Duncan Sands  <baldrick@free.fr>
10137
10138         * final.c (pass_clean_state): Give the pass a name.
10139         * passes.c (pass_rest_of_compilation): Likewise.
10140         * tree-optimize.c (pass_all_optimizations): Likewise.
10141
10142 2009-07-07  H.J. Lu  <hongjiu.lu@intel.com>
10143
10144         * config/ia64/ia64.c (ia64_handle_model_attribute): Remove
10145         an extra 'decl' for error_at.
10146
10147 2009-07-07  Jakub Jelinek  <jakub@redhat.com>
10148
10149         PR middle-end/40669
10150         * tree-tailcall.c (adjust_return_value_with_ops,
10151         create_tailcall_accumulator): Set DECL_GIMPLE_REG_P on the temporary
10152         if it has complex or vector type.
10153
10154 2009-07-07  Olivier Hainque  <hainque@adacore.com>
10155
10156         * config/alpha/t-osf4 (SHLIB_LINK): Do not hide the dummy weak
10157         pthread symbols.
10158
10159 2009-07-07  Basile Starynkevitch  <basile@starynkevitch.net>
10160
10161         * Makefile.in: added more lists of includes to PLUGIN_HEADERS.
10162
10163 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
10164
10165         * cgraphunit.c: Replace %J by an explicit location.  Update all calls.
10166         * c-decl.c: Likewise.
10167         * function.c: Likewise.
10168         * varasm.c: Likewise.
10169         * tree-ssa.c: Likewise.
10170         * c-common.c: Likewise.
10171         * tree-cfg.c: Likewise.
10172         * config/spu/spu.c: Likewise.
10173         * config/ia64/ia64.c: Likewise.
10174         * config/v850/v850.c: Likewise.
10175
10176 2009-07-06  DJ Delorie  <dj@redhat.com>
10177
10178         * config/mep/mep-core.cpu (fsft, ssarb): Mark as VOLATILE.
10179         * config/mep/mep-ivc2.cpu (many): Add VOLATILE to more insns that make
10180         unspecified accesses to control registers.
10181         * config/mep/intrinsics.md: Regenerate.
10182         * config/mep/intrinsics.h: Regenerate.
10183         * config/mep/mep-intrin.h: Regenerate.
10184
10185 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
10186
10187         * c-lex.c: Replace %H by an explicit location. Update all calls.
10188         * c-common.c: Likewise.
10189         * c-decl.c: Likewise.
10190         * c-typeck.c: Likewise.
10191         * fold-const.c: Likewise.
10192         * gimplify.c: Likewise.
10193         * stmt.c: Likewise.
10194         * tree-cfg.c: Likewise.
10195         * tree-ssa-loop-niter.c: Likewise.
10196         * tree-vrp.c: Likewise.
10197         * value-prof.c: Likewise.
10198
10199 2009-07-06  Diego Novillo  <dnovillo@google.com>
10200
10201         * tree-dfa.c (dump_variable): Write DECL_INITIAL for VAR
10202         if it has one.  Handle cases where VAR does not have an
10203         annotation or cfun is NULL.
10204
10205 2009-07-06  Diego Novillo  <dnovillo@google.com>
10206
10207         * tree.c: Include debug.h.
10208         (initialize_tree_contains_struct): New.
10209         (init_ttree): Call it.
10210         (tree_node_structure_for_code): Factor out of ...
10211         (tree_node_structure): ... here.
10212         * treestruct.def (TS_PHI_NODE): Remove.
10213         (TS_GIMPLE_STATEMENT): Remove.
10214
10215 2009-07-06  Diego Novillo  <dnovillo@google.com>
10216
10217         * tree-pretty-print.c (dump_generic_node): Protect against NULL op0.
10218         (debug_tree_chain): Handle cycles.
10219
10220 2009-07-06  Nick Clifton  <nickc@redhat.com>
10221             DJ Delorie  <dj@redhat.com>
10222
10223         * config.sh/lib1funcs.h (FMOVD_WORKS): Only define if
10224         __FMOVD_ENABLED__ is defined.
10225         * config/sh/sh.h
10226         (TARGET_FMOVD): Provide a default definition.
10227         (MASK_FMOVD): Likewise.
10228         (TARGET_CPU_CPP_BUILTINS): Define
10229         __FMOVD_ENABLED__ if TARGET_FMOVD is true.
10230         * config/sh/sh.md (movdf_i4): For alternative 0 use either one or
10231         two fmov instructions depending upon whether TARGET_FMOVD is enabled.
10232         (split for DF load from memory into register): Also handle
10233         MEMs which consist of REG+DISP addressing.
10234         (split for DF store from register to memory): Likewise.
10235         (movsf_ie): Always use single fp_mode.
10236         * config/sh/sh.c (sh_override_options): Do not automatically
10237         enable TARGET_MOVD for the SH2A when supporting doubles - leave
10238         that to the -mfmovd command line switch.
10239         (broken_move): Do not restrict fldi test to only the SH4 and SH4A.
10240         (fldi_ok): Always allow.
10241         * config/sh/sh.opt (mfmovd): Remove this switch.
10242         * doc/invoke.texi (-mfmovd): Remove documentation of this switch.
10243
10244 2009-07-06  J"orn Rennecke  <joern.rennecke@arc.com>
10245             Kaz Kojima  <kkojima@gcc.gnu.org>
10246
10247         PR rtl-optimization/30807
10248         * postreload.c (reload_combine): For every new use of REG_SUM,
10249         record the use of BASE.
10250
10251 2009-07-06  Jan Hubicka  <jh@suse.cz>
10252
10253         * params.def: Revert my accidental commit at 2009-06-30.
10254
10255 2009-07-04  Ian Lance Taylor  <iant@google.com>
10256
10257         PR target/40636
10258         * config/i386/msformat-c.c (mingw_format_attributes): Declare as
10259         EXPORTED_CONST.
10260         (mingw_format_attribute_overrides): Likewise.
10261
10262 2009-07-04  Jakub Jelinek  <jakub@redhat.com>
10263
10264         PR debug/40596
10265         * dwarf2out.c (based_loc_descr): For crtl->stack_realign_tried
10266         don't check cfa.reg.  Instead of cfa.indirect use
10267         fde && fde->drap_reg != INVALID_REGNUM test.
10268
10269 2009-07-04  Eric Botcazou  <ebotcazou@adacore.com>
10270
10271         * postreload.c (reload_combine): Replace CONST_REG with INDEX_REG.
10272
10273 2009-07-03  Vladimir Makarov  <vmakarov@redhat.com>
10274
10275         PR target/40587
10276         * ira.c (build_insn_chain): Use DF_LR_OUT instead of df_get_live_out.
10277
10278 2009-07-03  Richard Guenther  <rguenther@suse.de>
10279
10280         PR tree-optimization/40640
10281         * tree-switch-conversion.c (build_arrays): Perform arithmetic
10282         in original type.
10283
10284 2009-07-03  Jan Hubicka  <jh@suse.cz>
10285
10286         * ipa-inline.c (cgraph_decide_inlining_incrementally): When optimizing
10287         for size, reduce amount of inlining.
10288
10289 2009-07-03  Richard Guenther  <rguenther@suse.de>
10290
10291         PR middle-end/34163
10292         * tree-chrec.c (chrec_convert_1): Fold (T2)(t +- x) to (T2)t +- (T2)x
10293         if t +- x is known to not overflow and the conversion widens the
10294         operation.
10295         * Makefile.in (tree-chrec.o): Add $(FLAGS_H) dependency.
10296
10297 2009-07-03  Jan Hubicka  <jh@suse.cz>
10298
10299         * ipa-pure-const.c (analyze): Update loop optimizer init.
10300         * tree-ssa-loop-iv-canon.c (empty_loop_p, remove_empty_loop,
10301         try_remove_empty_loop, remove_empty_loops): Remove.
10302         * tree-ssa-loop.c (tree_ssa_empty_loop, pass_empty_loop): Remove.
10303         * tree-ssa-dce.c (find_obviously_necessary_stmts): Use finiteness info
10304         to mark regular loops as neccesary.
10305         (degenerate_phi_p): New function.
10306         (propagate_necessity, remove_dead_phis): Use it.
10307         (forward_edge_to_pdom): Likewise.
10308         (eliminate_unnecessary_stmts): Take care to remove uses of results of
10309         virtual PHI nodes that became unreachable.
10310         (perform_tree_ssa_dce): Initialize/deinitialize loop optimizer.
10311         * tree-flow.h (remove_empty_loops): Remove.
10312         * passes.c (init_optimization_passes): Remove.
10313
10314 2009-07-03  Uros Bizjak  <ubizjak@gmail.com>
10315
10316         * config/i386/i386.md (fix_trunc<mode>_fisttp_i387_1): Use
10317         can_create_pseudo_p.
10318         (*fix_trunc<mode>_i387_1): Ditto.
10319         (*floathi<mode>2_1): Ditto.
10320         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1): Ditto.
10321         (*fistdi2_1): Ditto.
10322         (*fist<mode>2_1): Ditto.
10323         (frndintxf2_floor): Ditto.
10324         (*fist<mode>2_floor_1): Ditto.
10325         (frndintxf2_ceil): Ditto.
10326         (*fist<mode>2_ceil_1): Ditto.
10327         (frndintxf2_trunc): Ditto.
10328         (frndintxf2_mask_pm): Ditto.
10329         (fxam<mode>2_i387_with_temp): Ditto.
10330         * config/i386/sse.md (mulv16qi3): Ditto.
10331         (*sse2_mulv4si3): Ditto.
10332         (mulv2di3): Ditto.
10333         (sse4_2_pcmpestr): Ditto.
10334         (sse4_2_pcmpistr): Ditto.
10335
10336 2009-07-03  Jan Hubicka  <jh@suse.cz>
10337
10338         * tree-ssa-dce.c (bb_contains_live_stmts): New bitmap.
10339         (mark_stmt_necessary): Set it.
10340         (mark_operand_necessary): Set it.
10341         (mark_control_dependent_edges_necessary): Set it.
10342         (mark_virtual_phi_result_for_renaming): New function.
10343         (get_live_post_dom): New function.
10344         (forward_edge_to_pdom): New function.
10345         (remove_dead_stmt): Fix handling of control dependences.
10346         (tree_dce_init): Init new bitmap.
10347         (tree_dce_done): Free it.
10348
10349 2009-07-02  Richard Guenther  <rguenther@suse.de>
10350
10351         PR bootstrap/40617
10352         * tree-ssa-structalias.c (new_var_info): Initialize
10353         is_restrict_var.
10354
10355 2009-07-02  Jan Hubicka  <jh@suse.cz>
10356
10357         * ipa-pure-const.c (check_op): Use PTA info to see if indirect_ref is
10358         local.
10359
10360 2009-07-02  Paolo Bonzini  <bonzini@gnu.org>
10361
10362         * expmed.c (emit_cstore, emit_store_flag_1): Accept target_mode
10363         instead of recomputing it.  Adjust calls.
10364         (emit_store_flag): Adjust recursive calls.
10365
10366 2009-07-02  Richard Guenther  <rguenther@suse.de>
10367
10368         * tree-ssa-live.c (remove_unused_locals): Do not remove
10369         heap variables.
10370         * tree-ssa-structalias.c (handle_lhs_call): Delay setting
10371         of DECL_EXTERNAL for HEAP variables.
10372         (compute_points_to_sets): Set DECL_EXTERNAL for escaped
10373         HEAP variables.  Do not adjust RESTRICT vars.
10374         (find_what_var_points_to): Nobody cares if something
10375         points to READONLY.
10376
10377 2009-07-02  Ben Elliston  <bje@au.ibm.com>
10378
10379         * unwind-dw2-fde-glibc.c (_Unwind_IteratePhdrCallback): Move
10380         pc_low and pc_high declarations to the top of the function.
10381
10382 2009-07-01  DJ Delorie  <dj@redhat.com>
10383
10384         * config/mep/mep.c (mep_handle_option): Leave IVC2 control
10385         registers as fixed.
10386         (mep_interrupt_saved_reg): Save appropriate IVC2 control registers.
10387         * config/mep/mep-ivc2.cpu: Add VOLATILE to insns that make
10388         unspecified accesses to control registers.
10389         * config/mep/intrinsics.md: Regenerate.
10390         * config/mep/intrinsics.h: Regenerate.
10391         * config/mep/mep-intrin.h: Regenerate.
10392
10393 2009-07-01  Anthony Green  <green@moxielogic.com>
10394
10395         * config/moxie/moxie.c (moxie_expand_prologue): Use dec
10396         instruction when possible.
10397         (moxie_expand_prologue): Ditto.  Also, save an instruction and
10398         some complexity by popping off of $r12 instead of $sp.
10399         * config/moxie/moxie.md (movsi_pop): Don't assume $sp.  Take two
10400         operands.
10401
10402 2009-07-01  Richard Henderson  <rth@redhat.com>
10403
10404         PR bootstrap/40347
10405         * function.c (reposition_prologue_and_epilogue_notes): If epilogue
10406         contained no insns, reposition note before last insn.
10407
10408 2009-07-01  Richard Henderson  <rth@redhat.com>
10409
10410         PR debug/40431
10411         * dwarf2out.c (def_cfa_1): Revert 2009-06-11 change for
10412         DW_CFA_def_cfa_offset and DW_CFA_def_cfa.
10413
10414 2009-07-01  Michael Meissner  <meissner@linux.vnet.ibm.com>
10415
10416         PR bootstrap/40558
10417         * config/rs6000/rs6000.c (print_operand): Undo change that breaks
10418         darwin9 for printing reg addresses with %y.
10419
10420 2009-07-01  Adam Nemet  <anemet@caviumnetworks.com>
10421
10422         * combine.c (force_to_mode): Handle TRUNCATE.  Factor out
10423         truncation from operands in binary operations.
10424
10425 2009-07-01  Adam Nemet  <anemet@caviumnetworks.com>
10426
10427         Revert:
10428         2009-01-11  Adam Nemet  <anemet@caviumnetworks.com>
10429         * expmed.c (store_bit_field_1): Properly truncate the paradoxical
10430         subreg of op0 to the original op0.
10431
10432         * expmed.c (store_bit_field_1): Use a temporary as the destination
10433         instead of a paradoxical subreg when we need to truncate the result.
10434
10435 2009-07-01  DJ Delorie  <dj@redhat.com>
10436
10437         * config/mep/mep-ivc2.cpu (cmov, cmovc, cmovh): Add intrinsic
10438         names to VLIW variants.
10439         (ivc2rm, ivc2crn): Make data type consistent with non-VLIW variants.
10440         * config/mep/intrinsics.md: Regenerate.
10441         * config/mep/intrinsics.h: Regenerate.
10442         * config/mep/mep-intrin.h: Regenerate.
10443
10444 2009-07-01  Jakub Jelinek  <jakub@redhat.com>
10445
10446         PR debug/40462
10447         * jump.c (returnjump_p): Revert last patch.
10448         * dwarf2out.c (dwarf2out_begin_epilogue): Handle SEQUENCEs.
10449
10450 2009-07-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
10451
10452         PR target/40575
10453         * pa.md (casesi32p): Use jump table label to determine the offset
10454         of the jump table.
10455         (casesi64p): Likewise.
10456
10457         * pa.c (forward_branch_p): Return bool type.  Use instruction
10458         addresses when available.  Assert that INSN has a jump label.
10459         (pa_adjust_insn_length): Don't call forward_branch_p if INSN doesn't
10460         have a jump label.
10461
10462 2009-07-01  Richard Guenther  <rguenther@suse.de>
10463
10464         PR tree-optimization/19831
10465         * tree-ssa-dce.c (propagate_necessity): Calls to functions
10466         that only act as barriers do not make any previous stores necessary.
10467         * tree-ssa-structalias.c (handle_lhs_call): Delay making
10468         HEAP variables global, do not add a constraint from nonlocal.
10469         (find_func_aliases): Handle escapes through return statements.
10470         (compute_points_to_sets): Make escaped HEAP variables global.
10471
10472 2009-07-01  Paolo Bonzini  <bonzini@gnu.org>
10473
10474         PR bootstrap/40597
10475         * expmed.c (emit_store_flag): Perform a conversion if necessary,
10476         after reducing a DImode cstore to SImode.
10477
10478 2009-07-01  Paolo Bonzini  <bonzini@gnu.org>
10479
10480         * expr.c (expand_expr_real_1): Reinstate fallthrough to
10481         TRUTH_ANDIF_EXPR if do_store_flag returns NULL.
10482
10483 2009-07-01  Maciej W. Rozycki  <macro@linux-mips.org>
10484
10485         * config/vax/vax.h (TARGET_BSD_DIVMOD): New macro.  Set to 1.
10486         * config/vax/linux.h (TARGET_BSD_DIVMOD): New macro.  Redefine the
10487         to 0.
10488         * config/vax/vax.c (vax_init_libfuncs): Only redefine udiv_optab
10489         and umod_optab if TARGET_BSD_DIVMOD.
10490         * config/vax/lib1funcs.asm: New file.
10491         * config/vax/t-linux: New file.
10492         * config.gcc (vax-*-linux*): Set tmake_file to vax/t-linux.
10493
10494 2009-06-30  Jakub Jelinek  <jakub@redhat.com>
10495
10496         PR c++/40566
10497         * convert.c (convert_to_integer) <case COND_EXPR>: Don't convert
10498         to type arguments that have void type.
10499
10500         PR debug/40573
10501         * dwarf2out.c (gen_formal_parameter_die): Call
10502         equate_decl_number_to_die if node is different from origin.
10503
10504 2009-06-30  Anthony Green  <green@moxielogic.com>
10505
10506         Clean up moxie port for --enable-build-with-cxx.
10507         * config/moxie/moxie.c (moxie_function_value): First two
10508         parameters are const_tree, not tree.
10509         * config/moxie/moxie.h (enum reg_class): Rename CC_REG to CC_REGS.
10510         (REG_CLASS_NAMES): Ditto.
10511         (REGNO_REG_CLASS): Ditto.
10512         * config/moxie/moxie-protos.h (moxie_override_options): Declare.
10513         (moxie_function_value): Fix constyness of arguments.
10514
10515 2009-06-30  Eric Botcazou  <ebotcazou@adacore.com>
10516
10517         * cgraphunit.c (cgraph_finalize_compilation_unit): Call
10518         finalize_size_functions before further processing.
10519         * stor-layout.c: Include cgraph.h, tree-inline.h and tree-dump.h.
10520         (variable_size): Call self_referential_size on size expressions
10521         that contain a PLACEHOLDER_EXPR.
10522         (size_functions): New static variable.
10523         (copy_self_referential_tree_r): New static function.
10524         (self_referential_size): Likewise.
10525         (finalize_size_functions): New global function.
10526         * tree.c: Include tree-inline.h.
10527         (push_without_duplicates): New static function.
10528         (find_placeholder_in_expr): New global function.
10529         (substitute_in_expr) <tcc_declaration>: Return the replacement object
10530         on equality.
10531         <tcc_expression>: Likewise.
10532         <tcc_vl_exp>: If the replacement object is a constant, try to inline
10533         the call in the expression.
10534         * tree.h (finalize_size_functions): Declare.
10535         (find_placeholder_in_expr): Likewise.
10536         (FIND_PLACEHOLDER_IN_EXPR): New macro.
10537         (substitute_placeholder_in_expr): Update comment.
10538         * tree-inline.c (remap_decl): Do not unshare trees if do_not_unshare
10539         is true.
10540         (copy_tree_body_r): Likewise.
10541         (copy_tree_body): New static function.
10542         (maybe_inline_call_in_expr): New global function.
10543         * tree-inline.h (struct copy_body_data): Add do_not_unshare field.
10544         (maybe_inline_call_in_expr): Declare.
10545         * Makefile.in (tree.o): Depend on TREE_INLINE_H.
10546         (stor-layout.o): Depend on CGRAPH_H, TREE_INLINE_H, TREE_DUMP_H and
10547         GIMPLE_H.
10548
10549 2009-06-30  Richard Guenther  <rguenther@suse.de>
10550
10551         * tree-ssa-dce.c (mark_all_reaching_defs_necessary_1): Always
10552         continue walking.
10553         (propagate_necessity): Do not mark reaching defs of stores
10554         as necessary.
10555
10556 2009-06-30  Jan Hubicka  <jh@suse.cz>
10557
10558         * cfgloopanal.c (check_irred): Move into ...
10559         (mark_irreducible_loops): ... here; return true if ireducible
10560         loops was found.
10561         * ipa-pure-const.c: Include cfgloop.h and tree-scalar-evolution.h
10562         (analyze_function): Try to prove loop finiteness.
10563         * cfgloop.h (mark_irreducible_loops): Update prototype.
10564         * Makefile.in (ipa-pure-const.o): Add dependency on SCEV and CFGLOOP.
10565
10566 2009-06-30  Basile Starynkevitch  <basile@starynkevitch.net>
10567
10568         * Makefile.in (PLUGIN_HEADERS): added ggc, tree-dump, pretty-print.
10569
10570 2009-06-30  Ira Rosen  <irar@il.ibm.com>
10571
10572         PR tree-optimization/40542
10573         * tree-vect-stmts.c (vect_analyze_stmt): Don't vectorize volatile
10574         types.
10575
10576 2009-06-30  Martin Jambor  <mjambor@suse.cz>
10577
10578         PR tree-optimization/40582
10579         * tree-sra.c (build_ref_for_offset_1): Use types_compatible_p rather
10580         than useless_type_conversion_p.
10581         (generate_subtree_copies): Increment sra_stats.subtree_copies at a
10582         proper place.
10583
10584 2009-06-30  Martin Jambor  <mjambor@suse.cz>
10585
10586         PR middle-end/40554
10587         * tree-sra.c (sra_modify_expr): Add access->offset to start_offset.
10588
10589 2009-06-30  Richard Guenther  <rguenther@suse.de>
10590
10591         * tree-ssa-alias.c (walk_aliased_vdefs_1): Change interface to
10592         use ao_ref references.
10593         (walk_aliased_vdefs): Likewise.
10594         * tree-ssa-alias.h (walk_aliased_vdefs): Adjust prototype.
10595         * tree-ssa-dce.c (struct ref_data): Remove.
10596         (mark_aliased_reaching_defs_necessary_1): Use the ao_ref argument.
10597         (mark_aliased_reaching_defs_necessary): Adjust.
10598         (mark_all_reaching_defs_necessary_1): Likewise.
10599
10600 2009-06-30  Paolo Bonzini  <bonzini@gnu.org>
10601
10602         PR boostrap/40597
10603         * expmed.c (emit_cstore): New name of emit_store_flag_1.
10604         (emit_store_flag_1): Extract from emit_store_flag, adjust
10605         calls to (what now is) emit_cstore.
10606         (emit_store_flag): Call emit_store_flag_1 and also use it
10607         for what used to be recursive calls.
10608
10609 2009-06-30  Wei Guozhi  <carrot@google.com>
10610
10611         PR/40416
10612         * tree-ssa-sink.c (statement_sink_location): Stop sinking expression
10613         if the target bb post dominates from bb.
10614         * config/i386/i386.c (memory_address_length): Check existence of base
10615         register before using it.
10616
10617 2009-06-30  Nick Clifton  <nickc@redhat.com>
10618             DJ Delorie  <dj@redhat.com>
10619
10620         * config.sh/lib1funcs.h (FMOVD_WORKS): Only define if
10621         __FMOVD_ENABLED__ is defined.
10622         * config/sh/sh.h
10623         (TARGET_FMOVD): Provide a default definition.
10624         (MASK_FMOVD): Likewise.
10625         (TARGET_CPU_CPP_BUILTINS): Define
10626         __FMOVD_ENABLED__ if TARGET_FMOVD is true.
10627         * config/sh/sh.md (movdf_i4): For alternative 0 use either one or
10628         two fmov instructions depending upon whether TARGET_FMOVD is
10629         enabled.
10630         (split for DF load from memory into register): Also handle
10631         MEMs which consist of REG+DISP addressing.
10632         (split for DF store from register to memory): Likewise.
10633         * config/sh/sh.opt (mfmovd): Remove this switch.
10634         * doc/invoke.texi (-mfmovd): Remove documentation of this switch.
10635         * config/sh/sh.c (sh_override_options): Do not automatically
10636         enable TARGET_MOVD for the SH2A when supporting doubles - leave
10637         that to the -mfmovd command line switch.
10638
10639         * config/sh/sh.c (broken_move): Do not restrict fldi test to only
10640         the SH4 and SH4A.
10641         (fldi_ok): Always allow.
10642         * config/sh/sh.md (movsf_ie): Always use single fp_mode.
10643
10644 2009-06-29  DJ Delorie  <dj@redhat.com>
10645
10646         * doc/install.texi (mep-x-elf): Correct chip's full name.
10647
10648 2009-06-29  H.J. Lu  <hongjiu.lu@intel.com>
10649
10650         * doc/extend.texi: Fix typo.
10651
10652 2009-06-29  Tom Tromey  <tromey@redhat.com>
10653
10654         * dwarf2.h: Remove.
10655         * Makefile.in (DWARF2_H): New variable.
10656         (except.o): Use it.
10657         (dwarf2out.o): Likewise.
10658         (dwarf2asm.o): Likewise.
10659         * config/i386/t-i386: Use DWARF2_H.
10660         * except.c: Include elf/dwarf2.h.
10661         * unwind-dw2.c: Include elf/dwarf2.h.
10662         * dwarf2out.c: Include elf/dwarf2.h.
10663         (dw_loc_descr_struct) <dw_loc_opc>: Now a bitfield.
10664         <dtprel>: New field.
10665         (dwarf_stack_op_name): Don't handle INTERNAL_DW_OP_tls_addr.
10666         (size_of_loc_descr): Likewise.
10667         (output_loc_operands_raw): Likewise.
10668         (output_loc_operands): Handle new dtprel field.
10669         (loc_checksum): Update.
10670         (loc_descriptor_from_tree_1) <VAR_DDECL>: Set dtprel field.
10671         * unwind-dw2-fde-glibc.c: Include elf/dwarf2.h.
10672         * unwind-dw2-fde.c: Include elf/dwarf2.h.
10673         * dwarf2asm.c: Include elf/dwarf2.h.
10674         * unwind-dw2-fde-darwin.c: Include elf/dwarf2.h.
10675         * config/mmix/mmix.c: Include elf/dwarf2.h.
10676         * config/rs6000/darwin-fallback.c: Include elf/dwarf2.h.
10677         * config/xtensa/unwind-dw2-xtensa.c: Include elf/dwarf2.h.
10678         * config/sh/sh.c: Include elf/dwarf2.h.
10679         * config/i386/i386.c: Include elf/dwarf2.h.
10680
10681 2009-06-29  DJ Delorie  <dj@redhat.com>
10682
10683         * config/mep/mep.h (CPP_SPEC): Remove __cop macro.
10684
10685         * doc/extend.texi: Add MeP attributes and pragmas.
10686         * doc/invoke.text: Add MeP Options.
10687         * doc/contrib.texi: Add MeP contribution.
10688         * doc/md.texi: Add MeP constraints.
10689         * doc/install.texi: Add MeP target.
10690
10691 2009-06-30  Anatoly Sokolov  <aesok@post.ru>
10692
10693         * target.h (struct gcc_target): Add frame_pointer_required field.
10694         * target-def.h (TARGET_FRAME_POINTER_REQUIRED): New.
10695         (TARGET_INITIALIZER): Use TARGET_FRAME_POINTER_REQUIRED.
10696         * ira.c (setup_eliminable_regset): Use frame_pointer_required target
10697         hook.
10698         * reload1.c (update_eliminables): (Ditto.).
10699         * gcc/system.h (FRAME_POINTER_REQUIRED): Poison.
10700         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
10701         (INITIAL_FRAME_POINTER_OFFSET): (Ditto.).
10702
10703         * config/arc/arc.h (FRAME_POINTER_REQUIRED): Remove macro.
10704
10705         * config/arm/arm.h (FRAME_POINTER_REQUIRED): Remove macro.
10706         * config/arm/arm.c (TARGET_FRAME_POINTER_REQUIRED): Define.
10707         (arm_frame_pointer_required): New function.
10708
10709         * config/avr/avr.h (FRAME_POINTER_REQUIRED): Remove macro.
10710         * config/avr/avr.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
10711         (avr_frame_pointer_required_p): Declare as static.
10712         * config/avr/avr-protos.h (avr_frame_pointer_required_p): Remove.
10713
10714         * config/bfin/bfin.h (FRAME_POINTER_REQUIRED): Remove macro.
10715         * config/bfin/bfin.c (TARGET_FRAME_POINTER_REQUIRED): Define.
10716         (bfin_frame_pointer_required): Make as static, change return type
10717         to bool.
10718         * config/bfin/bfin-protos.h (bfin_frame_pointer_required): Remove.
10719
10720         * config/cris/cris.h (FRAME_POINTER_REQUIRED): Remove macro.
10721         * config/cris/cris.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
10722         (cris_frame_pointer_required): New function.
10723
10724         * config/crx/crx.h (FRAME_POINTER_REQUIRED): Remove macro.
10725
10726         * config/fr30/fr30.h (FRAME_POINTER_REQUIRED): Remove macro.
10727         * config/fr30/fr30.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
10728         (fr30_frame_pointer_required): New function.
10729
10730         * config/frv/frv.h (FRAME_POINTER_REQUIRED): Remove macro.
10731         * config/frv/frv.c (TARGET_FRAME_POINTER_REQUIRED): Define.
10732         (frv_frame_pointer_required): Make as static, change return type
10733         to bool.
10734         * config/bfin/bfin-protos.h (frv_frame_pointer_required): Remove.
10735
10736         * config/i386/i386.h (FRAME_POINTER_REQUIRED): Remove macro.
10737         * config/i386/i386.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
10738         (ix86_frame_pointer_required): Make as static, change return type to
10739         bool.
10740         * config/i386/i386-protos.h (ix86_frame_pointer_required): Remove.
10741
10742         * config/m32c/m32c.h (FRAME_POINTER_REQUIRED): Remove macro.
10743         * config/m32c/m32c.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
10744
10745         * config/m32r/m32r.h (FRAME_POINTER_REQUIRED): Remove macro.
10746
10747         * config/mcore/mcore.h (CAN_ELIMINATE): Remove macro.
10748
10749         * config/mep/mep.h (FRAME_POINTER_REQUIRED): Remove macro.
10750
10751         * config/mips/mips.h (FRAME_POINTER_REQUIRED): Remove macro.
10752         * config/mips/mips.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
10753         (mips_frame_pointer_required): Make as static.
10754         * config/mips/mips-protos.h (mips_frame_pointer_required): Remove.
10755
10756         * config/mmix/mmix.h (FRAME_POINTER_REQUIRED): Remove macro.
10757         * config/mmix/mmix.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
10758         (mmix_frame_pointer_required): Mew function.
10759
10760         * config/moxie/moxie.h (FRAME_POINTER_REQUIRED): Remove macro.
10761         * config/moxie/moxie.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
10762
10763         * config/pa/pa.h (FRAME_POINTER_REQUIRED): Remove macro.
10764
10765         * config/score/score.h (FRAME_POINTER_REQUIRED): Remove macro.
10766
10767         * config/sh/sh.h (CAN_ELIMINATE): Remove macro.
10768
10769         * config/sparc/sparc.h (FRAME_POINTER_REQUIRED): Remove macro.
10770         (CAN_ELIMINATE): Redefine.
10771         * config/sparc/sparc.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
10772         (sparc_frame_pointer_required): New function.
10773         (sparc_can_eliminate): New function.
10774         * config/sparc/sparc-protos.h (sparc_can_eliminate): Declare.
10775
10776         * config/vax/vax.h (FRAME_POINTER_REQUIRED): Remove macro.
10777         * config/vax/vax.c (TARGET_FRAME_POINTER_REQUIRED): Define.
10778
10779         * config/xtensa/xtensa.h (FRAME_POINTER_REQUIRED): Remove macro.
10780         * config/xtensa/xtensa.c (TARGET_FRAME_POINTER_REQUIRED): Define.
10781         (xtensa_frame_pointer_required): Make as static, change return type
10782         to bool.
10783         * config/xtensa/xtensa-protos.h (xtensa_frame_pointer_required):
10784         Remove.
10785
10786 2009-06-29  Olatunji Ruwase  <tjruwase@google.com>
10787
10788         * doc/plugins.texi: Document PLUGIN_START_UNIT.
10789         * toplev.c (compile_file): Call PLUGIN_START_UNIT.
10790         * gcc-plugin.h (PLUGIN_START_UNIT): Added new event.
10791         * plugin.c (plugin_event_name): Added PLUGIN_START_UNIT.
10792         (register_callback): Handle PLUGIN_START_UNIT.
10793         (invoke_plugin_callbacks): Handle PLUGIN_START_UNIT.
10794
10795 2009-06-29  Eric Botcazou  <ebotcazou@adacore.com>
10796
10797         * tree.c (process_call_operands): Propagate TREE_READONLY from the
10798         operands.
10799         (PROCESS_ARG): Do not clear TREE_READONLY if CONSTANT_CLASS_P.
10800         (build3_stat): Propagate TREE_READONLY for COND_EXPR.
10801
10802 2009-06-29  Daniel Jacobowitz  <dan@codesourcery.com>
10803
10804         * config/arm/arm.h (REGISTER_MOVE_COST): Increase VFP register
10805         move cost.
10806
10807 2009-06-29  Uros Bizjak  <ubizjak@gmail.com>
10808
10809         * doc/extend.texi (Additional Floating Types): __float128 is also
10810         supported on i386 targets.
10811
10812 2009-06-29  Richard Guenther  <rguenther@suse.de>
10813
10814         PR middle-end/14187
10815         * tree-ssa-alias.h (struct pt_solution): Add vars_contains_restrict
10816         flag.
10817         (pt_solutions_same_restrict_base): Declare.
10818         * tree-ssa-structalias.c (struct variable_info): Add is_restrict_var
10819         flag.
10820         (new_var_info): Initialize is_global_var properly for SSA_NAMEs.
10821         (make_constraint_from, make_copy_constraint): Move earlier.
10822         (make_constraint_from_heapvar): New function.
10823         (make_constraint_from_restrict): Likewise.
10824         (handle_lhs_call): Use it.
10825         (find_func_aliases): Use it to track conversions to restrict
10826         qualified pointers.
10827         (struct fieldoff): Add only_restrict_pointers flag.
10828         (push_fields_onto_fieldstack): Initialize it.
10829         (create_variable_info_for): Track global restrict qualified pointers.
10830         (intra_create_variable_infos): Use make_constraint_from_heapvar.
10831         Track restrict qualified pointer arguments.
10832         (set_uids_in_ptset): Use varinfo is_global_var flag.
10833         (find_what_var_points_to): Set the vars_contains_restrict flag.
10834         Always create the points-to solution for sets including restrict tags.
10835         (pt_solutions_same_restrict_base): New function.
10836         * tree-ssa-alias.c (ptr_derefs_may_alias_p): For two restrict
10837         qualified pointers use pt_solutions_same_restrict_base as
10838         additional source for disambiguation.
10839
10840 2009-06-29  Richard Guenther  <rguenther@suse.de>
10841
10842         PR middle-end/38212
10843         * alias.c (find_base_decl): Remove.
10844         (get_deref_alias_set_1): Remove restrict handling.
10845         * c-common.c (c_apply_type_quals_to_decl): Do not set
10846         DECL_POINTER_ALIAS_SET.
10847         * gimplify.c (find_single_pointer_decl_1): Remove.
10848         (find_single_pointer_decl): Likewise.
10849         (internal_get_tmp_var): Remove restrict handling.
10850         (gimple_regimplify_operands): Likewise.
10851         * omp-low.c (expand_omp_atomic_pipeline): Do not set
10852         DECL_POINTER_ALIAS_SET. Use ref-all pointers.
10853         * print-tree.c (print_node): Do not print DECL_POINTER_ALIAS_SET.
10854         * tree.c (restrict_base_for_decl): Remove.
10855         (init_ttree): Do not allocate it.
10856         (make_node_stat): Do not set DECL_POINTER_ALIAS_SET.  Set
10857         LABEL_DECL_UID for label decls.
10858         (copy_node_stat): Do not copy restrict information.
10859         (decl_restrict_base_lookup): Remove.
10860         (decl_restrict_base_insert): Likewise.
10861         (print_restrict_base_statistics): Likewise.
10862         (dump_tree_statistics): Do not call print_restrict_base_statistics.
10863         * tree.h (DECL_POINTER_ALIAS_SET): Remove.
10864         (DECL_POINTER_ALIAS_SET_KNOWN_P): Likewise.
10865         (struct tree_decl_common): Rename pointer_alias_set to label_decl_uid.
10866         (LABEL_DECL_UID): Adjust.
10867         (DECL_BASED_ON_RESTRICT_P): Remove.
10868         (DECL_GET_RESTRICT_BASE): Likewise.
10869         (SET_DECL_RESTRICT_BASE): Likewise.
10870         (struct tree_decl_with_vis): Remove based_on_restrict_p flag.
10871
10872         * config/i386/i386.c (ix86_gimplify_va_arg): Use ref-all pointers
10873         instead of DECL_POINTER_ALIAS_SET.
10874         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
10875         * config/s390/s390.c (s390_gimplify_va_arg): Likewise.
10876         * config/spu/spu.c (spu_gimplify_va_arg_expr): Likewise.
10877
10878 2009-06-29  Richard Guenther  <rguenther@suse.de>
10879
10880         PR tree-optimization/40579
10881         * tree-vrp.c (vrp_evaluate_conditional): Bail out early if
10882         the IL to simplify has constants that overflowed.
10883
10884 2009-06-28  Uros Bizjak  <ubizjak@gmail.com>
10885
10886         PR tree-optimization/40550
10887         * tree-vect-generic.c (expand_vector_operations_1): Compute in
10888         vector_compute_type only when the size of vector_compute_type is
10889         less than the size of type.
10890
10891 2009-06-28  Eric Botcazou  <ebotcazou@adacore.com>
10892
10893         * fold-const.c (contains_label_1): Fix comments.
10894         (contains_label_p): Do not walk trees multiple time.
10895
10896 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
10897
10898         * config/i386/i386.h (enum ix86_fpcmp_strategy): New.
10899         * config/i386/i386.md (cbranchxf4, cstorexf4, cbranch<MODEF>4,
10900         cstore<MODEF>4, mov<X87MODEF>cc): Change predicate to
10901         ix86_fp_comparison_operator.
10902         (*fp_jcc_1_mixed, *fp_jcc_1_sse, *fp_jcc_1_387, *fp_jcc_2_mixed,
10903         *fp_jcc_2_sse, *fp_jcc_2_387): Delete
10904         (*fp_jcc_3_387, *fp_jcc_4_387, *fp_jcc_5_387, *fp_jcc_6_387,
10905         *fp_jcc_7_387, *fp_jcc_8<MODEF>_387): Eliminate call to
10906         !ix86_use_fcomi_compare, change ix86_fp_jump_nontrivial_p call
10907         to !TARGET_CMOVE, change predicate to ix86_fp_comparison_operator.
10908         (related splits): Change predicate to ix86_fp_comparison_operator.
10909         * config/i386/predicates.md: Use ix86_trivial_fp_comparison_operator
10910         instead of ix86_fp_comparison_codes.
10911         (ix86_trivial_fp_comparison_operator,
10912         ix86_fp_comparison_operator): New.
10913         * config/i386/i386-protos.h (ix86_fp_comparison_strategy): New.
10914         (ix86_expand_compare): Eliminate last two parameters.
10915         (ix86_fp_jump_nontrivial_p): Kill.
10916         * config/i386/i386.c (put_condition_code): Eliminate call to
10917         ix86_fp_comparison_codes and subsequent assertion.
10918         (ix86_fp_comparison_codes): Eliminate.
10919         (ix86_fp_swap_condition): New.
10920         (ix86_fp_comparison_arithmetics_cost, ix86_fp_comparison_fcomi_cost,
10921         ix86_fp_comparison_sahf_cost, ix86_use_fcomi_compare): Consolidate
10922         into ix86_fp_comparison_cost and ix86_fp_comparison_strategy.
10923         (ix86_prepare_fp_compare_args): Use ix86_fp_comparison_strategy
10924         and ix86_fp_swap_condition.
10925         (ix86_expand_fp_compare): Eliminate code for second jump/bypass jump.
10926         Use ix86_fp_comparison_strategy.
10927         (ix86_expand_compare): Likewise.  Eliminate last two arguments.
10928         (ix86_fp_jump_nontrivial_p): Eliminate.
10929         (ix86_expand_branch): Treat SFmode/DFmode/XFmode as simple.  Adjust
10930         call to ix86_expand_compare.
10931         (ix86_split_fp_branch, ix86_expand_setcc,
10932         ix86_expand_carry_flag_compare, ix86_expand_int_movcc,
10933         ix86_expand_fp_movcc): Eliminate code for second jump/bypass jump.
10934
10935 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
10936
10937         * config/arm/arm.c (arm_final_prescan_ins): Eliminate code
10938         related to jump_clobbers.
10939         * config/arm/arm.md (conds): Remove jump_clob case.
10940         (addsi3_cbranch, addsi3_cbranch_scratch, subsi3_cbranch, two
10941         splits): Change comparison_operator to arm_comparison_operator.
10942         (*arm_buneq, *arm_bltgt, *arm_buneq_reversed, *arm_bltgt_reversed):
10943         Eliminate.
10944
10945 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
10946
10947         * dojump.c (do_compare_rtx_and_jump): Try swapping the
10948         condition for floating point modes.
10949         * expmed.c (emit_store_flag_1): Move here a bigger part
10950         of emit_store_flag.
10951         (emit_store_flag): Try swapping the condition for floating point
10952         modes.
10953         * optabs.c (emit_cmp_and_jump_insns): Cope with constant op0 better.
10954
10955 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
10956
10957         * expr.c (expand_expr_real_1): Just use do_store_flag.
10958         (do_store_flag): Drop support for TRUTH_NOT_EXPR.  Use
10959         emit_store_flag_force.
10960         * expmed.c (emit_store_flag_force): Copy here trick
10961         previously in expand_expr_real_1.  Try reversing the comparison.
10962         (emit_store_flag_1): Work if target is NULL.
10963         (emit_store_flag): Work if target is NULL, using the result mode
10964         from the comparison.  Use split_comparison, restructure final part
10965         to simplify conditionals.
10966
10967 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
10968
10969         * builtins.c (expand_errno_check): Use do_compare_rtx_and_jump.
10970         * dojump.c (do_jump): Change handling of floating-point
10971         ops to use just do_compare_and_jump.
10972         (split_comparison): New.
10973         (do_compare_rtx_and_jump): Add here logic coming previously
10974         in do_jump, using split_comparison.
10975
10976 2009-06-27  H.J. Lu  <hongjiu.lu@intel.com>
10977
10978         PR target/40489
10979         * config/ia64/ia64.c (ia64_reorg): Check NULL insn.
10980
10981 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
10982
10983         * tree-ssa-alias.c: Fix unintentional commit.
10984
10985 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
10986
10987         * passes.c (execute_one_pass): Fix unintentional commit.
10988
10989 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
10990
10991         * df-problems.c (df_set_seen, df_unset_seen): Delete.
10992         (df_rd_local_compute, df_md_local_compute): Inline them.
10993
10994         (df_md_scratch): New.
10995         (df_md_alloc, df_md_free): Allocate/free it.
10996         (df_md_local_compute): Only include live registers in init.
10997         (df_md_transfer_function): Prune the in-set computed by
10998         the confluence function, and the gen-set too.
10999
11000 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
11001
11002         PR rtl-optimization/26854
11003         * timevar.def: Remove TV_DF_RU, add TV_DF_MD.
11004         * df-problems.c (df_rd_add_problem): Fix comment.
11005         (df_md_set_bb_info, df_md_free_bb_info, df_md_alloc,
11006         df_md_simulate_artificial_defs_at_top,
11007         df_md_simulate_one_insn, df_md_bb_local_compute_process_def,
11008         df_md_bb_local_compute, df_md_local_compute, df_md_reset,
11009         df_md_transfer_function, df_md_init, df_md_confluence_0,
11010         df_md_confluence_n, df_md_free, df_md_top_dump, df_md_bottom_dump,
11011         problem_MD, df_md_add_problem): New.
11012         * df.h (DF_MD, DF_MD_BB_INFO, struct df_md_bb_info, df_md,
11013         df_md_get_bb_info): New.
11014         (DF_LAST_PROBLEM_PLUS1): Adjust.
11015
11016         * Makefile.in (fwprop.o): Include domwalk.h.
11017         * fwprop.c: Include domwalk.h.
11018         (reg_defs, reg_defs_stack): New.
11019         (bitmap_only_bit_between): Remove.
11020         (process_defs): New.
11021         (process_uses): Use reg_defs and local_md instead of
11022         bitmap_only_bit_between and local_rd.
11023         (single_def_use_enter_block): New, from build_single_def_use_links.
11024         (single_def_use_leave_block): New.
11025         (build_single_def_use_links): Remove code moved to
11026         single_def_use_enter_block, invoke domwalk.
11027         (use_killed_between): Adjust comment.
11028
11029 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
11030
11031         * bitmap.h (bitmap_ior_and_into): New.
11032         * bitmap.c (bitmap_ior_and_into): New.
11033
11034 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
11035
11036         * domwalk.h (struct dom_walk_data): Remove all callbacks except
11037         before_dom_children_before_stmts and after_dom_children_after_stmts.
11038         Rename the two remaining callbacks to just before_dom_children and
11039         after_dom_children. Remove other GIMPLE statement walking bits.
11040         * domwalk.c (walk_dominator_tree): Remove now unsupported features.
11041         * graphite.c: Do not include domwalk.h.
11042         * tree-into-ssa.c (interesting_blocks): New global.
11043         (struct mark_def_sites_global_data): Remove it and names_to_rename.
11044         (mark_def_sites, rewrite_stmt, rewrite_add_phi_arguments,
11045         rewrite_update_stmt, rewrite_update_phi_arguments): Simplify
11046         now that they're not domwalk callbacks.
11047         (rewrite_initialize_block): Rename to...
11048         (rewrite_enter_block): ... this, place after called functions.  Test
11049         interesting_blocks, call rewrite_stmt and rewrite_add_phi_arguments.
11050         (rewrite_finalize_block): Rename to...
11051         (rewrite_leave_block): ... this, place after called functions.
11052         (rewrite_update_init_block): Rename to...
11053         (rewrite_update_enter_block): ... this, place after called functions.
11054         Test interesting_blocks, call rewrite_update_stmt and
11055         rewrite_update_phi_arguments.
11056         (rewrite_update_fini_block): Rename to...
11057         (rewrite_leave_block): ... this, place after called functions.
11058         (rewrite_blocks): Remove last argument, simplify initialization of
11059         walk_data.
11060         (mark_def_sites_initialize_block): Rename to...
11061         (mark_def_sites_block): ... this, call mark_def_sites.
11062         (mark_def_sites_blocks): Remove argument, simplify initialization of
11063         walk_data.
11064         (rewrite_into_ssa): Adjust for interesting_blocks_being a global.
11065         (update_ssa): Likewise.
11066         * tree-ssa-dom.c (optimize_stmt): Simplify now that it's not a domwalk
11067         callback.
11068         (tree_ssa_dominator_optimize): Simplify initialization of walk_data.
11069         (dom_opt_initialize_block): Rename to...
11070         (dom_opt_enter_block): ... this, place after called functions.  Walk
11071         statements here, inline propagate_to_outgoing_edges.
11072         (dom_opt_finalize_block): Rename to...
11073         (dom_opt_leave_block): ... this, place after called functions.
11074         * tree-ssa-dse.c (dse_optimize_stmt): Simplify now that it's not a
11075         domwalk callback.
11076         (dse_enter_block, dse_record_phi): New.
11077         (dse_record_phis): Delete.
11078         (dse_finalize_block): Rename to...
11079         (dse_leave_block): ... this.
11080         (tree_ssa_dse): Simplify initialization of walk_data.
11081         * tree-ssa-loop-im.c (determine_invariantness, move_computations):
11082         Adjust initialization of walk_data.
11083         * tree-ssa-loop-unswitch.c: Do not include domwalk.h.
11084         * tree-ssa-loop-phiopt.c (get_non_trapping):
11085         Adjust initialization of walk_data.
11086         * tree-ssa-loop-threadedge.c: Do not include domwalk.h.
11087         * tree-ssa-uncprop.c (uncprop_into_successor_phis): Simplify now that
11088         it's not a domwalk callback.
11089         (uncprop_initialize_block): Rename to...
11090         (dse_enter_block): ... this, call uncprop_into_successor_phis.
11091         (dse_finalize_block): Rename to...
11092         (dse_leave_block): ... this.
11093         (tree_ssa_uncprop): Simplify initialization of walk_data.
11094         * Makefile.in: Adjust dependencies.
11095
11096 2009-06-27  Richard Earnshaw  <rearnsha@arm.com>
11097
11098         * arm.md (casesi): Fix test for Thumb1.
11099         (thumb1_casesi_internal_pic): Likewise.
11100         (thumb1_casesi_dispatch): Likewise.
11101
11102 2009-06-26  Daniel Gutson  <dgutson@codesourcery.com>
11103
11104         * config/arm/arm-cores.def: Added core cortex-m0.
11105         * config/arm/arm-tune.md: Regenerated.
11106         * doc/invoke.texi: Added entry for cpu ARM Cortex-M0.
11107
11108 2009-06-26  DJ Delorie  <dj@redhat.com>
11109
11110         * config/mep/mep.opt (mfar): Remove -mfar as it doesn't do anything.
11111
11112         * config/mep/mep.c (mep_bundle_insns): Account for the fact that
11113         the scheduler doesn't tag jump insns.
11114
11115 2009-06-26  H.J. Lu  <hongjiu.lu@intel.com>
11116
11117         * c-decl.c (merge_decls): Re-indent.
11118
11119 2009-06-26  Janis Johnson  <janis187@us.ibm.com>
11120
11121         PR c/39902
11122         * tree.c (real_zerop, real_onep, real_twop, real_minus_onep):
11123         Special-case decimal float constants.
11124
11125 2009-06-26  Richard Henderson  <rth@redhat.com>
11126
11127         * function.h (struct function): Add cannot_be_copied_reason,
11128         and cannot_be_copied_set.
11129         * tree-inline.c (has_label_address_in_static_1): Rename from
11130         inline_forbidden_p_2; don't set inline_forbidden_reason here.
11131         (cannot_copy_type_1): Rename from inline_forbidden_p_op; likewise
11132         don't set inline_forbidden_reason.
11133         (copy_forbidden): New function, split out of inline_forbidden_p.
11134         (inline_forbidden_p_stmt): Don't check for nonlocal labels here.
11135         (inline_forbidden_p): Use copy_forbidden.
11136         (tree_versionable_function_p): Likewise.
11137         (inlinable_function_p): Merge into tree_inlinable_function_p.
11138         (tree_function_versioning): Remap cfun->nonlocal_goto_save_area.
11139         * ipa-cp.c (ipcp_versionable_function_p): New function.
11140         (ipcp_cloning_candidate_p): Use it.
11141         (ipcp_node_modifiable_p): Likewise.
11142
11143 2009-06-26  Olatunji Ruwase  <tjruwase@google.com>
11144
11145         * builtins.c (expand_builtin_alloca): Handle builtin alloca
11146         that is marked not to be inlined. Remove flag_mudflap use.
11147         * tree-mudflap.c: Rename mf_xform_derefs to mf_xfrom_statements.
11148         (mf_xform_statements): Mark builtin alloca calls as un-inlineable.
11149
11150 2009-06-26  Steve Ellcey  <sje@cup.hp.com>
11151
11152         PR bootstrap/40338
11153         * config/pa/t-pa-hpux10 (TARGET_LIBGCC2_CFLAGS): Add -frandom-seed.
11154         * config/pa/t-pa-hpux11 (TARGET_LIBGCC2_CFLAGS): Ditto.
11155
11156 2009-06-26  Kai Tietz  <kai.tietz@onevision.com>
11157
11158         * config/i386/mingw-tls.c (__mingwthr_key_dtor): Remove for none
11159         shared libgcc.
11160         (__mingwthr_remove_key_dtor): Likewise.
11161
11162 2009-06-26  Richard Guenther  <rguenther@suse.de>
11163
11164         * tree-ssa-structalias.c (do_ds_constraint): Simplify escape handling.
11165
11166 2009-06-26  Steven Bosscher  <steven@gcc.gnu.org>
11167
11168         PR middle-end/40525
11169         * ifcvt.c (dead_or_predicable): If predicating MERGE_BB fails,
11170         try the non-cond_exec path also.
11171
11172 2009-06-25  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
11173
11174         PR target/40468
11175         * pa.c (branch_to_delay_slot_p, branch_needs_nop_p): New functions.
11176         (output_cbranch): Use new functions.
11177         (output_lbranch, output_bb, output_bvb, output_dbra, output_movb):
11178         Likewise.
11179
11180 2009-06-25  Michael Meissner  <meissner@linux.vnet.ibm.com>
11181             Pat Haugen  <pthaugen@us.ibm.com>
11182             Revital Eres <ERES@il.ibm.com>
11183
11184         * config/rs6000/rs6000.c (print_operand): Correct lossage message
11185         for %c error.  Add %x support to print VSX registers as a unified
11186         register set, instead of separate float and altivec registers.
11187         Switch to use VECTOR_MEM_ALTIVEC_P instead of TARGET_ALTIVEC for
11188         %y case, and add support for VSX pre-modify addresses.
11189         (output_toc): Add assert for CONST containing an integer constant
11190         in the PLUS case.
11191         (rs6000_adjust_cost): Add POWER7 support.
11192         (insn_must_be_first_in_group): Ditto.
11193         (insn_must_be_last_in_group): Ditto.
11194         (rs6000_emit_popcount): Ditto.
11195         (rs6000_vector_mode_supported_p): Ditto.
11196
11197         * config/rs6000/rs6000-protos.h (rs6000_secondary_reload_class):
11198         Change some of the functions called by macros to being called
11199         through a pointer, so debug functions can be inserted if
11200         -mdebug=addr or -mdebug=cost.
11201         (rs6000_preferred_reload_class_ptr): Ditto.
11202         (rs6000_secondary_reload_class_ptr): Ditto.
11203         (rs6000_secondary_memory_needed_ptr): Ditto.
11204         (rs6000_cannot_change_mode_class_ptr): Ditto.
11205         (rs6000_secondary_reload_inner): Ditto.
11206         (rs6000_legitimize_reload_address): Ditto.
11207         (rs6000_legitimize_reload_address_ptr): Ditto.
11208         (rs6000_mode_dependent_address): Ditto.
11209         (rs6000_mode_dependent_address_ptr): Ditto.
11210
11211         * config/rs6000/rs6000.c (reg_offset_addressing_ok_p): New
11212         function to return true if the mode allows reg + integer
11213         addresses.
11214         (virtual_stack_registers_memory_p): New function to return true if
11215         the address refers to a virtual stack register.
11216         (rs6000_legitimate_offset_address_p): Move code to say whether a
11217         mode supports reg+int addressing to reg_offset_addressing_ok_p and
11218         call it.
11219         (rs6000_legitimate_address_p): Add checks for modes that only can
11220         do reg+reg addressing.  Start adding VSX support.
11221         (rs6000_legitimize_reload_address): Ditto.
11222         (rs6000_legitimize_address): Ditto.
11223         (rs6000_debug_legitimate_address_p): New debug functions for
11224         -mdebug=addr and -mdebug=cost.
11225         (rs6000_debug_rtx_costs): Ditto.
11226         (rs6000_debug_address_costs): Ditto.
11227         (rs6000_debug_adjust_cost): Ditto.
11228         (rs6000_debug_legitimize_address): Ditto.
11229         (rs6000_legitimize_reload_address_ptr): Point to call normal
11230         function or debug function.  Make functions called via pointer
11231         static.
11232         (rs6000_mode_dependent_address_ptr): Ditto.
11233         (rs6000_secondary_reload_class_ptr): Ditto.
11234         (rs6000_hard_regno_mode_ok): Add preliminary VSX support.
11235         (rs6000_emit_move): Add -mdebug=addr support.  Change an abort
11236         into a friendlier error.
11237         (rs6000_init_builtins): Add initial VSX support.
11238         (rs6000_adjust_cost): Fix some spacing issues.
11239
11240         * config/rs6000/rs6000.h (enum reg_class): Add VSX_REGS.
11241         (REG_CLASS_NAMES): Ditto.
11242         (REG_CLASS_CONTENTS): Ditto.
11243         (PREFERRED_RELOAD_CLASS): Move from a macro to calling through a
11244         pointer, to add -mdebug=addr support.
11245         (CANNOT_CHANGE_MODE_CLASS): Ditto.
11246         (SECONDARY_RELOAD_CLASS): Call through a pointer to add
11247         -mdebug=addr support.
11248         (LEGITIMIZE_RELOAD_ADDRESS): Ditto.
11249         (GO_IF_MODE_DEPENDENT_ADDRESS): Ditto.
11250         (enum rs6000_builtins): Add RS6000_BUILTIN_BSWAP_HI.
11251
11252         * config/rs6000/rs6000.md (bswaphi*): Add support for swapping
11253         16-bit values.
11254         (bswapsi*): Set attribute types for load/store.  Add combiner
11255         patterns to eliminate zero extend on 64-bit.
11256         (bswapdi*): Add support for swapping 64-bit values.  Use ldbrx and
11257         stdbrx if the hardware supports those instructions.
11258
11259 2009-06-25  Ian Lance Taylor  <iant@google.com>
11260
11261         * doc/invoke.texi (Option Summary): Mention -static-libstdc++.
11262         (Link Options): Document -static-libstdc++.
11263
11264 2009-06-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11265
11266         PR target/38731
11267         * config/rs6000/rs6000.c (LOCAL_ALIGNMENT): Redefine to just use
11268         DATA_ALIGNMENT instead.
11269
11270 2009-06-25  Richard Guenther  <rguenther@suse.de>
11271
11272         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Disambiguate
11273         indirect references against the callused/escaped solutions.
11274         (call_may_clobber_ref_p_1): Likewise.
11275
11276 2009-06-25  Martin Jambor  <mjambor@suse.cz>
11277
11278         PR tree-optimization/40493
11279         * tree-sra.c (sra_modify_expr): Correct BIT_FIELD_REF argument numbers.
11280         (enum unscalarized_data_handling): New type.
11281         (handle_unscalarized_data_in_subtree): Return what has been done.
11282         (load_assign_lhs_subreplacements): Handle left flushes differently.
11283         (sra_modify_assign): Use unscalarized_data_handling, simplified
11284         condition determining whether to remove the statement.
11285
11286 2009-06-25  Basile Starynkevitch  <basile@starynkevitch.net>
11287
11288         * doc/plugins.texi (Building GCC plugins): Correct typo in Makefile
11289         excerpt - @ should be doubled for texinfo.
11290
11291 2009-06-24  Ian Lance Taylor  <iant@google.com>
11292
11293         * config/arc/arc.c: Include "df.h".
11294         (arc_attribute_table): Make static.  Move higher in file.
11295         (arc_address_cost): Call SMALL_INT on INTVAL, not rtx.
11296         (output_shift): Initialize n later to avoid warning.
11297         * config/arm/arm.c (arm_attribute_table): Make static.  Move
11298         higher in file.
11299         * config/avr/avr.c (avr_attribute_table): Make static.  Move
11300         higher in file.
11301         (reg_class_tab): Change array type from int to enum reg_class.
11302         (avr_jump_mode): Change GET_MODE to GET_CODE when checking for
11303         LABEL_REF.
11304         (out_tsthi, ashlhi3_out): Don't use AS2 with "or" or "and".
11305         (lshrhi3_out): Likewise.
11306         (class_likely_spilled_p): Change return type to bool.
11307         (avr_rtx_costs): Use local code variable with enum type.
11308         * config/avr/avr.md (movmemhi): Use add_reg_note.
11309         (andhi3, andsi3): Don't use AS2 with "and".
11310         (iorhi3, iorsi3): Don't use AS2 with "or".
11311         * config/avr/avr-protos.h (class_likely_spilled_p): Update declaration.
11312         * config/crx/crx.c: Include "df.h".
11313         (crx_attribute_table): Make static.
11314         * config/m32r/m32r.c: Include "df.h".
11315         (m32r_attribute_table): Make static.  Move higher in file.
11316         (pop): Use add_reg_note.
11317         (block_move_call): Change 0 to LCT_NORMAL in function call.
11318         * config/m32r/m32r.md (movsi_insn): Remove unused local value.
11319         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Likewise.
11320         * config/m32r/m32r-protos.h (m32r_compute_function_type): Always
11321         declare, not just when TREE_CODE is defined.
11322         * config/m68hc11/m68hc11.c: Include "expr.h".
11323         (m68hc11_attribute_table): Make static.  Move higher in file.
11324         (m68hc11_small_indexed_indirect_p): Change 0 to VOIDmode in
11325         function call.
11326         (m68hc11_register_indirect_p): Likewise.
11327         (m68hc11_function_arg_padding): Change return type to enum
11328         direction.
11329         (emit_move_after_reload): Use add_reg_note.
11330         (m68hc11_emit_logical): Change code parameter to enum rtx_code.
11331         (m68hc11_split_logical): Likewise.
11332         (m68hc11_rtx_costs): Add local code_and outer_code variables with
11333         enum type.
11334         * config/m68hc11/predicates.md (reg_or_some_mem_operand): Change 0
11335         to VOIDmode in function call.
11336         * config/m68hc11/m68hc11-protos.h: Don't check TREE_CODE to see if
11337         tree is defined.
11338         (m68hc11_split_logical): Update declaration.
11339         (m68hc11_function_arg_padding): Update declaration.
11340         * config/mcore/mcore.c (regno_reg_class): Change form array of int
11341         to array of enum reg_class.
11342         (mcore_attribute_table): Make static.  Move higher in file.
11343         (mcore_rtx_costs): Add cast to enum type.
11344         * config/mcore/mcore.h (regno_reg_class): Update declaration.
11345         (GO_IF_LEGITIMATE_INDEX): Add cast to avoid warning.
11346         * config/sh/sh.c (sh_attribute_table): Make static.  Move higher
11347         in file.
11348         * config/sh/predicates.md (trapping_target_operand): Rename and to
11349         and_expr.
11350         * config/sparc/sparc.c (sparc_attribute_table): Make static.  Move
11351         higher in file.
11352         * config/spu/spu.c (spu_attribute_table): Make static.  Move
11353         higher in file.
11354         * config/v850/v850.c (v850_attribute_table): Make static.  Move
11355         higher in file.
11356         (v850_rtx_costs): Use local code with enum type.
11357         (expand_epilogue): Add cast.
11358         * config/v850/v850-c.c (ghs_pragma_section): Initialize repeat.
11359
11360 2009-06-23  Takashi YOSHII  <yoshii.takashi@renesas.com>
11361
11362         PR target/40515
11363         * doc/invoke.texi (SH Options): Document -m2a, -m2a-single,
11364         -m2a-single-only and -m2a-nofpu.
11365         * config/sh/sh.opt: Document m2a generates FPU code.
11366
11367 2009-06-24  Anatoly Sokolov  <aesok@post.ru>
11368
11369         * defaults.h (CAN_ELIMINATE): Provide default.
11370         * doc/tm.texi (CAN_ELIMINATE): Revise documentation.
11371         * config/alpha/alpha.h (CAN_ELIMINATE): Delete.
11372         * config/m32c/m32c.h (CAN_ELIMINATE): Delete.
11373         * config/spu/spu.h (CAN_ELIMINATE): Delete.
11374         * config/xtensa/xtensa.h (CAN_ELIMINATE): Delete.
11375         * config/moxie/moxie.h (CAN_ELIMINATE): Delete.
11376         * config/cris/cris.h (CAN_ELIMINATE): Delete.
11377         * config/mn10300/mn10300.h (CAN_ELIMINATE): Delete.
11378         * config/pa/pa64-linux.h (CAN_ELIMINATE): Delete.
11379         * config/mmix/mmix.h (CAN_ELIMINATE): Delete.
11380
11381 2009-06-24  DJ Delorie  <dj@redhat.com>
11382
11383         * mep-ext-cop.cpu: Fix copyright notice.
11384         * mep-default: Fix copyright notice.
11385         * mep-core: Fix copyright notice.
11386         * mep: Fix copyright notice.
11387         * mep-ivc2: Fix copyright notice.
11388         * mep-c5: Fix copyright notice.
11389
11390 2009-06-24  Denis Chertykov  <chertykov@gmail.com>
11391
11392         * doc/contrib.texi (Contributors):
11393
11394 2009-06-24  Andreas Krebbel  <krebbel1@de.ibm.com>
11395
11396         PR middle-end/40501
11397         * tree-ssa-math-opts.c (execute_optimize_bswap): Convert the bswap
11398         src and dst operands if necessary.
11399
11400 2009-06-23  DJ Delorie  <dj@redhat.com>
11401
11402         Add MeP port.
11403         * config.gcc: Add mep support.
11404         * recog.c: Resurrect validate_replace_rtx_subexp().
11405         * recog.h: Likewise.
11406         * config/mep/: Add new port:
11407         * config/mep/constraints.md: New file.
11408         * config/mep/default.h: New file.
11409         * config/mep/intrinsics.h: New file.
11410         * config/mep/intrinsics.md: New file.
11411         * config/mep/ivc2-template.h: New file.
11412         * config/mep/mep-c5.cpu: New file.
11413         * config/mep/mep-core.cpu: New file.
11414         * config/mep/mep-default.cpu: New file.
11415         * config/mep/mep-ext-cop.cpu: New file.
11416         * config/mep/mep-intrin.h: New file.
11417         * config/mep/mep-ivc2.cpu: New file.
11418         * config/mep/mep-lib1.asm: New file.
11419         * config/mep/mep-lib2.c: New file.
11420         * config/mep/mep-pragma.c: New file.
11421         * config/mep/mep-protos.h: New file.
11422         * config/mep/mep-tramp.c: New file.
11423         * config/mep/mep.c: New file.
11424         * config/mep/mep.cpu: New file.
11425         * config/mep/mep.h: New file.
11426         * config/mep/mep.md: New file.
11427         * config/mep/mep.opt: New file.
11428         * config/mep/predicates.md: New file.
11429         * config/mep/t-mep: New file.
11430
11431 2009-06-23  Ian Lance Taylor  <iant@google.com>
11432
11433         * configure.ac: Invoke AC_PROG_CXX.  Separate C specific warnings
11434         from loose_warn into c_loose_warn and from strict_warn into
11435         c_strict_warn.  Set and substitute warn_cxxflags.  Check for
11436         --enable-build-with-cxx.  Set and substitute
11437         ENABLE_BUILD_WITH_CXX.  Set and substitute HOST_LIBS.
11438         * Makefile.in (CXXFLAGS): New variable.
11439         (C_LOOSE_WARN, C_STRICT_WARN): New variables.
11440         (GCC_WARN_CFLAGS): Add $(C_LOOSE_WARN).  Add $(C_STRICT_WARN) if
11441         the default is the same as $(STRICT_WARN).
11442         (GCC_WARN_CXXFLAGS, WARN_CXXFLAGS): New variables.
11443         (CXX): New variable.
11444         (COMPILER): New value if ENABLE_BUILD_WITH_CXX.
11445         (COMPILER_FLAGS, LINKER, LINKER_FLAGS): Likewise.
11446         (ALL_COMPILERFLAGS, ALL_LINKERFLAGS): Likewise.
11447         (HOST_LIBS): New variable.
11448         (GCC_CFLAGS): Add $(C_LOOSE_WARN).
11449         (ALL_CXXFLAGS): New variable.
11450         (LIBS, BACKENDLIBS): Add $(HOST_LIBS).
11451         * doc/install.texi (Configuration): Document
11452         --enable-build-with-cxx, --with-stage1-ldflags,
11453         --with-stage1-libs, --with-boot-ldflags, --with-boot-libs.
11454         * configure: Rebuild.
11455
11456 2009-06-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
11457
11458         * config/arm/arm.c (arm_override_options): Fix braces and formatting
11459         from previous commit.
11460
11461 2009-06-23  Ian Lance Taylor  <iant@google.com>
11462
11463         * Makefile.in ($(out_object_file)): Depend upon $(DF_H).
11464
11465 2009-06-23  Ian Lance Taylor  <iant@google.com>
11466
11467         * reload.c (alternative_allows_const_pool_ref): Mark mem parameter
11468         with ATTRIBUTE_UNUSED.
11469
11470 2009-06-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
11471             Pat Haugen  <pthaugen@us.ibm.com>
11472             Revital Eres  <eres@il.ibm.com>
11473
11474         * config.in (HAVE_AS_POPCNTD): Add default definition.
11475         (HAVE_AS_LWSYNC): Ditto.
11476
11477         * configure.ac (gcc_cv_as_powerpc_mfpgpr): Provide real binutils
11478         release number.
11479         (gcc_cv_as_powerpc_cmpb): Ditto.
11480         (gcc_cv_as_powerpc_dfp): Ditto.
11481         (gcc_cv_as_powerpc_vsx): Ditto.
11482         (gcc_cv_as_powerpc_popcntd): Add feature test for assembler
11483         supporting the popcntd/lwsync instructions.
11484         (gcc_cv_as_powerpc_lwsync): Ditto.
11485         * configure: Regenerate.
11486
11487         * config/rs6000/aix53.h (ASM_CPU_SPEC): Add support for
11488         -mcpu=native and -mcpu=power7.
11489         * config/rs6000/aix61.h (ASM_CPU_SPEC): Ditto.
11490
11491         * config/rs6000/linux64.opt (-mprofile-kernel): Move switch to be
11492         a variable instead of a mask to reduce the number of mask bits.
11493         * config/rs6000/sysv4.opt (-mbit-align): Ditto.
11494         (-mbit-word): Ditto.
11495         (-mregnames): Ditto.
11496         * config/rs6000/rs6000.opt (-mupdate): Ditto.
11497         (-mfused-madd): Ditto.
11498
11499         * config/rs6000/rs6000.opt (-mpopcntd): New switch for non-VSX ISA
11500         2.06 instructions.
11501         (-mvsx): New switch for VSX instructions.
11502         (-misel): Move from a variable to a mask to allow it to be set by
11503         -mcpu=.
11504
11505         * config/rs6000/rs6000-protos.h (rs6000_hard_regno_nregs): Change
11506         function declaration to an array declaration.
11507         (rs6000_hard_regno_nregs): New external array declaration.
11508
11509         * config/rs6000/t-rs6000 (MD_INCLUDES): Define, add all of the .md
11510         files included by rs6000.md.
11511
11512         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Use
11513         SET_PROFILE_KERNEL macro to reset the -mprofile-kernel switch.
11514
11515         * config/rs6000/rs6000.c (rs6000_isel): Delete, -misel moved to be
11516         a target mask.
11517         (rs6000_debug_reg): New -mdebug= variables.
11518         (rs6000_debug_addr): Ditto.
11519         (rs6000_debug_cost): Ditto.
11520         (rs6000_pmode): New variable to hold Pmode.
11521         (rs6000_pointer_size): New variable to hold POINTER_SIZE.
11522         (rs6000_class_max_nregs): New array to hold CLASS_MAX_NREGS
11523         calculated at compiler start.
11524         (rs6000_hard_regno_nregs): Change function to an array which holds
11525         HARD_REGNO_NREGS calculated at compiler start.
11526         (rs6000_explicit_options): Delete isel field.
11527         (rs6000_vector_unit): New array to hold which vector unit
11528         supports arithmetic options for a given type.
11529         (rs6000_vector_mem): New array to hold which vector unit supports
11530         memory reference operations for a given type.
11531         (rs6000_vector_align): New array to given the alignment of each
11532         vector type.
11533         (power7_cost): New basic costs for power7.
11534         (SET_PROFILE_KERNEL): New macro for resetting -mprofile-kernel.
11535         (rs6000_hard_regno_nregs_internal): New function, moved from
11536         HARD_REGNO_NREGS, to calculate the number of registers each hard
11537         register takes for each type.
11538         (rs6000_debug_reg_print): New function for -mdebug=reg support.
11539         (rs6000_debug_vector_unit): New array, map rs6000_vector to string.
11540         (+rs6000_init_hard_regno_mode_ok): New function, move calculation
11541         of HARD_REGNO_NREGS, CLASS_MAX_NREGS, REGNO_REG_CLASS, and vector
11542         unit information here so it is calculated once at compiler startup
11543         time.
11544         (rs6000_override_options): Make -misel a target mask.  Add more
11545         power7 target masks.  Setup Pmode and POINTER_SIZE.  Add initial
11546         VSX support.  Add support for -mdebug=reg, -mdebug=addr, and
11547         -mdebug=cost.
11548         (POWERPC_MASKS): Add MASK_POPCNTD, MASK_VSX, and MASK_ISEL.
11549         (rs6000_handle_option): Move -misel from variable to target mask.
11550         (rs6000_builtin_mask_for_load): Add VSX support.
11551         (rs6000_conditional_register_usage): Ditto.
11552         (USE_ALTIVEC_FOR_ARG_P): Ditto.
11553         (function_arg_boundary): Ditto.
11554         (rs6000_expand_builtin): Ditto.
11555         (def_builtin): Make abort message a little friendlier.
11556         (rs6000_emit_int_cmove): Add support for 64-bit isel.
11557
11558         * config/rs6000/rs6000.h (ASM_CPU_POWER7_SPEC): Depend on the
11559         assembler support the popcntd instruction instead of a vsx
11560         instruction to enable power7 support.
11561         (ASM_CPU_SPEC): Add support for -mcpu=native and -mcpu=power7.
11562         (EXTRA_SPECS): Add ASM_CPU_NATIVE_SPEC to allow passing the right
11563         option to the assembler if -mcpu=native.
11564         (ASM_CPU_NATIVE_SPEC): Ditto.
11565         (TARGET_POPCNTD): If assembler doesn't support popcntd, turn off
11566         ISA 2.06 features.
11567         (TARGET_LWSYNC_INSTRUCTION): Define whether it is safe to issue
11568         the lwsync instruction.
11569         (enum processor_type): Add PROCESSOR_POWER7.
11570         (rs6000_debug_reg): New -mdebug= options.
11571         (rs6000_debug_addr): Ditto.
11572         (rs6000_debug_cost): Ditto.
11573         (rs6000_isel): Delete.
11574         (enum rs6000_vector): New enum to say what vector unit we have.
11575         (VECTOR_UNIT_*): New macros to say which vector unit has
11576         arithmetic operations for a given type.
11577         (VECTOR_MEM_*): New macros to say which vector unit has memory
11578         operations for a given type.
11579         (TARGET_LDBRX): Whether the machine supports the ldbrx
11580         instruction.
11581         (TARGET_ISEL): Delete, -misel moved to be a mask.
11582         (TARGET_ISEL64): New macro for 64-bit isel support.
11583         (UNITS_PER_VSX_WORD): New macro.
11584         (POINTER_SIZE): Move to be an external variable, rather than
11585         calculating whether we are generating 32 ot 64-bit code.
11586         (Pmode): Ditto.
11587         (STACK_BOUNDARY): Add VSX support.
11588         (LOCAL_ALIGNMENT): Ditto.
11589         (SLOW_UNALIGNED_ACCESS): Ditto.
11590         (VSX_REGNO_P): New macro for VSX support.
11591         (VFLOAT_REGNO_P): Ditto.
11592         (VINT_REGNO_P): Ditto.
11593         (VLOGICAL_REGNO_P): Ditto.
11594         (VSX_VECTOR_MODE): Ditto.
11595         (VSX_SCALAR_MODE): Ditto.
11596         (VSX_MODE): Ditto.
11597         (VSX_MOVE_MODE): Ditto.
11598         (VSX_REG_CLASS_P): Ditto.
11599         (HARD_REGNO_NREGS): Instead of calling a function, use an array
11600         lookup.
11601         (UNITS_PER_SIMD_WORD): Add VSX support.
11602         (MODES_TIEABLE_P): Ditto.
11603         (STARTING_FRAME_OFFSET): Ditto.
11604         (STACK_DYNAMIC_OFFSET): Ditto.
11605         (EPILOGUE_USES): Ditto.
11606         (REGNO_REG_CLASS): Move to array lookup.
11607         (CLASS_MAX_NREGS): Ditto.
11608         (rs6000_vector_reg_class): Add declaration.
11609         (ADDITIONAL_REGISTER_NAMES): Add VSX names for the registers that
11610         overlap with the floating point and Altivec registers.
11611
11612         * config/rs6000/e500.h (CHECK_E500_OPTIONS): Disallow -mvsx.
11613
11614         * config/rs6000/driver-rs6000.c (asm_names): New static array to
11615         give the appropriate asm switches if -mcpu=native.
11616         (host_detect_local_cpu): Add support for "asm".
11617         (host_detect_local_cpu): Follow GNU code guidelines for name.
11618
11619         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Move
11620         -mbit-word to a variable instead of being a target mask.
11621
11622         * config/rs6000/sync.md (lwsync): If the assembler supports it,
11623         emit the lwsync instruction instead of emitting the instruction as
11624         an integer constant.
11625
11626         * config/rs6000/spe.md (spe_fixuns_truncdfsi2): Rename from
11627         fixuns_trundfsi2, move expander into rs6000.md.
11628
11629         * config/rs6000/rs6000.md (cpu): Add power7.
11630         (sel, *ptrsize): New mode attributes for 32/64-bit isel.
11631         (logical predicate patterns): Change the single instruction
11632         primitives that set CR0 to be fast_compare instead of compare.
11633         (norsi*): Ditto.
11634         (popcntwsi2): Add support for ISA 2.06 popcount instructions.
11635         (popcntddi2): Ditto.
11636         (popcount<mode>): Ditto.
11637         (floating multiply/add insns): Name the floating point
11638         multiply/add insns.
11639         (isel_signed_<mode>): Add support for -misel on 64-bit systems.
11640         (isel_unsigned_<mode>): Ditto.
11641         (fixuns_trundfsi2): Move expander here from spe.md.
11642         (smindi3): Define if we have -misel on 64-bit systems.
11643         (smaxdi3): Ditto.
11644         (umindi3): Ditto.
11645         (umaxdi3): Ditto.
11646
11647 2009-06-23  Anatoly Sokolov  <aesok@post.ru>
11648
11649         * config.gcc (avr-*-rtems*, avr-*-*): Set extra_gcc_objs and
11650         extra_objs.
11651         * config/avr/avr.c (avr_current_device): New variable.
11652         (avr_arch_types, avr_mcu_types): Move to avr-deveces.c.
11653         (avr_arch, mcu_type_s): Move to avr.h.
11654         * config/avr/avr.h (base_arch_s). Add reserved2, arch_name and
11655         default_data_section_start fields.
11656         (avr_arch): Moved from avr.c.
11657         (mcu_type_s): Moved from avr.c. Add short_sp, data_section_start and
11658         library_name fields.
11659         (avr_current_device, avr_mcu_types, avr_arch_types,
11660         avr_device_to_arch, avr_device_to_data_start,
11661         avr_device_to_startfiles, avr_device_to_devicelib): Declare.
11662         (EXTRA_SPEC_FUNCTIONS): Define.
11663         (LINK_SPEC): Remove device name to '-m ...' and '-Tdata ...' linker
11664         options mapping. Use device_to_arch and device_to_data_start insted.
11665         (STARTFILE_SPEC): Use device_to_startfile instead of crt_binutils.
11666         (CRT_BINUTILS_SPECS, EXTRA_SPECS): Remove.
11667         * config/avr/t-avr (driver-avr.o, avr-devices.o): New rules.
11668         * config/avr/driver-avr.c: New file.
11669         * config/avr/avr-devices.c: New file.
11670
11671 2009-06-23  Jakub Jelinek  <jakub@redhat.com>
11672
11673         * var-tracking.c (unshare_variable): Force initialized to
11674         be VAR_INIT_STATUS_INITIALIZED unless flag_var_tracking_uninit.
11675         (set_variable_part): Likewise.
11676         (struct variable_union_info): Remove pos_src field.
11677         (vui_vec, vui_allocated): New variables.
11678         (variable_union): Pass VAR_INIT_STATUS_UNKNOWN to unshare_variable
11679         unconditionally.  Avoid XCVECNEW/free for every sorting, for dst_l
11680         == 1 use a simpler sorting algorithm.  Compute pos field right
11681         away, don't fill in pos_src.  For dst_l == 2 avoid qsort.
11682         Avoid quadratic comparison if !flag_var_tracking_uninit.
11683         (variable_canonicalize): Pass VAR_INIT_STATUS_UNKNOWN to
11684         unshare_variable unconditionally.
11685         (dataflow_set_different_2): Removed.
11686         (dataflow_set_different): Don't traverse second hash table.
11687         (compute_bb_dataflow): Pass VAR_INIT_STATUS_UNINITIALIZED
11688         unconditionally to var_reg_set or var_mem_set.
11689         (emit_notes_in_bb): Likewise.
11690         (delete_variable_part): Pass VAR_INIT_STATUS_UNKNOWN to
11691         unshare_variable.
11692         (emit_note_insn_var_location): Don't set initialized to
11693         VAR_INIT_STATUS_INITIALIZED early.
11694         (vt_finalize): Free vui_vec if needed, clear vui_vec and
11695         vui_allocated.
11696         * rtl.c (rtx_equal_p): Don't implement on top of rtx_equal_p_cb.
11697
11698         * tree-object-size.c (addr_object_size): Instead of checking
11699         for non-NULL TREE_CHAIN of the FIELD_DECL check that there
11700         are no FIELD_DECLs following it.
11701
11702 2009-06-23  Andreas Krebbel  <krebbel1@de.ibm.com>
11703
11704         * tree-ssa-math-opts.c (find_bswap): Increase the search depth in
11705         order to match bswaps with signed source operands.
11706
11707 2009-06-23  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
11708
11709         * sdbout.c (sdbout_one_type): Fix braces in switch.
11710
11711 2009-06-23  Richard Guenther  <rguenther@suse.de>
11712
11713         * tree-ssa-structalias.c (struct variable_info): Add is_global_var
11714         member.
11715         (var_anything, anything_tree, var_nothing, nothing_tree, var_readonly,
11716         readonly_tree, var_escaped, escaped_tree, var_nonlocal, nonlocal_tree,
11717         var_callused, callused_tree, var_storedanything, storedanything_tree,
11718         var_integer, integer_tree): Remove global variables.
11719         (new_var_info): Do not pass new id, append the new var to the
11720         global variable vector.
11721         (do_ds_constraint): Use is_global_var member of the variable-info.
11722         (new_scalar_tmp_constraint_exp): Adjust.
11723         (create_function_info_for): Likewise.
11724         (create_variable_info_for): Likewise.
11725         (find_what_var_points_to): Remove dead code.
11726         (init_base_vars): Simplify.
11727         (compute_points_to_sets): Adjust.
11728
11729 2009-06-22  Adam Nemet  <anemet@caviumnetworks.com>
11730
11731         * combine.c (try_combine): Dump information about the insns we're
11732         combining.
11733
11734 2009-06-22  Adam Nemet  <anemet@caviumnetworks.com>
11735
11736         * combine.c (combine_simplify_rtx): Remove TRULY_NOOP_TRUNCATION
11737         check when calling force_to_mode on TRUNCATE's operand.
11738
11739 2009-06-22  Ian Lance Taylor  <iant@google.com>
11740
11741         * config/rs6000/rs6000.opt: Move msched-epilog before msched-prolog.
11742
11743 2009-06-22  Steven Bosscher  <steven@gcc.gnu.org>
11744
11745         * config/arm/arm.md (prologue_use): Set length of fake insn to 0.
11746
11747 2009-06-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11748
11749         * doc/invoke.texi (Link Options): -nodefaultlibs and -nostdlib
11750         override library linkage flags such as -static-libgcc or
11751         -shared-libgcc.
11752
11753 2009-06-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
11754
11755         * config/m68k/m68k-devices.def: Add line for MCF5221x.
11756
11757 2009-06-22  Ian Lance Taylor  <iant@google.com>
11758
11759         * config/linux.opt: Put mglibc ahead of muclibc.
11760
11761         * c-decl.c (diagnose_mismatched_decls): Add -Wc++-compat warning
11762         for duplicate decls.
11763
11764 2009-06-22  Matthias Klose  <doko@ubuntu.com>
11765
11766         * Makefile.in (install-plugin): Remove extra `/' after $(DESTDIR).
11767
11768 2009-06-22  Steven Bosscher  <steven@gcc.gnu.org>
11769
11770         PR objc/28050
11771         * c-parser.c (c_parser_objc_message_args): Return error_mark_node
11772         instead of NULL if a parser error occurs.
11773
11774 2009-06-22  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
11775
11776         * dwarf2out.c (dwarf2_debug_hooks): Initialize
11777         non-DWARF2_DEBUGGING_INFO version.
11778
11779 2009-06-22  Kai Tietz  <kai.tietz@onevision.com>
11780
11781         * config.gcc (i[34567]86-*-mingw*, x86_64-*-mingw*): Add
11782         i386/t-fprules-softfp and soft-fp/t-softfp to tmake_file.
11783
11784         * config/i386/mingw32.h (LIBGCC2_HAS_TF_MODE): Define.
11785         (LIBGCC2_TF_CEXT): Define.
11786         (TF_SIZE): Define.
11787
11788 2009-06-22  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
11789
11790         PR target/40463
11791         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Fix definition.
11792
11793 2009-06-22  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
11794
11795         * config/arm/arm.c (arm_override_options): Disable
11796         -mcaller-super-interworking and -mcallee-super-interworking.
11797         * doc/invoke.texi (ARM Options): Document this.
11798
11799 2009-06-22  Nathan Sidwell  <nathan@codesourcery.com>
11800
11801         * config/arm/arm.c (arm_print_operand): Deal with HIGH.
11802         * config/arm/constraints.md (j): New constraint for movw operands.
11803         (N): Remove thumb2 meaning.
11804         * config/arm/arm.md (*arm_movw): Delete.
11805         (*arm_movsi_insn): Use j constraint for movw instead of N constraint.
11806         * config/arm/vfp.md (*arm_movsi_vfp, *thumb2_movsi_vfp): Likewise.
11807         * config/arm/thumb2.md (*thumb2_movsi_insn): Likewise.
11808
11809 2009-06-22  Martin Jambor  <mjambor@suse.cz>
11810
11811         PR tree-optimization/40492
11812         * tree-sra.c (sra_modify_assign): Pass zero offsets to
11813         build_ref_for_offset.
11814
11815 2009-06-22  Shujing Zhao  <pearly.zhao@oracle.com>
11816
11817         * alias.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P, CALL_P, NOTE_P and
11818         JUMP_TABLE_DATA_P predicates where applicable.
11819         * auto-inc-dec.c: Ditto.
11820         * builtins.c: Ditto.
11821         * caller-save.c: Ditto.
11822         * calls.c: Ditto.
11823         * cfgcleanup.c: Ditto.
11824         * cfglayout.c: Ditto.
11825         * cfgrtl.c: Ditto.
11826         * combine.c: Ditto.
11827         * combine-stack-adj.c: Ditto.
11828         * cse.c: Ditto.
11829         * cselib.c: Ditto.
11830         * dbxout.c: Ditto.
11831         * df-scan.c: Ditto.
11832         * dse.c: Ditto.
11833         * dwarf2asm.c: Ditto.
11834         * dwarf2out.c: Ditto.
11835         * emit-rtl.c: Ditto.
11836         * except.c: Ditto.
11837         * explow.c: Ditto.
11838         * expmed.c: Ditto.
11839         * expr.c: Ditto.
11840         * final.c: Ditto.
11841         * function.c: Ditto.
11842         * fwprop.c: Ditto.
11843         * gcse.c: Ditto.
11844         * genpreds.c: Ditto.
11845         * genrecog.c: Ditto.
11846         * ifcvt.c: Ditto.
11847         * ira-costs.c: Ditto.
11848         * ira-lives.c: Ditto.
11849         * jump.c: Ditto.
11850         * loop-iv.c: Ditto.
11851         * lower-subreg.c: Ditto.
11852         * modulo-sched.c: Ditto.
11853         * optabs.c: Ditto.
11854         * postreload.c: Ditto.
11855         * print-rtl.c: Ditto.
11856         * recog.c: Ditto.
11857         * reginfo.c: Ditto.
11858         * regmove.c: Ditto.
11859         * reload1.c: Ditto.
11860         * reload.c: Ditto.
11861         * reorg.c: Ditto.
11862         * rtlanal.c: Ditto.
11863         * rtl.c: Ditto.
11864         * sched-vis.c: Ditto.
11865         * sdbout.c: Ditto.
11866         * sel-sched-ir.c: Ditto.
11867         * simplify-rtx.c: Ditto.
11868         * targhooks.c: Ditto.
11869         * var-tracking.c: Ditto.
11870         * vmsdbgout.c: Ditto.
11871
11872 2009-06-22  Matthias Klose  <doko@ubuntu.com>
11873
11874         * Makefile.in (install-plugin): Always use DESTDIR.
11875
11876 2009-06-22  Olivier Hainque  <hainque@adacore.com>
11877
11878         * config/pa/pa.c (output_call): Don't optimize post call jumps
11879         into return address adjustments if the call may throw.
11880
11881 2009-06-21  Richard Earnshaw  <rearnsha@arm.com>
11882
11883         * arm.c (thumb1_output_casesi): New function.
11884         * arm.h (CASE_VECTOR_PC_RELATIVE): Thumb-1 code is also relative if
11885         optimizing for size or PIC.
11886         (CASE_VECTOR_SHORTEN_MODE): Handle thumb-1.
11887         * arm.md (UNSPEC_THUMB1_CASESI): New constant.
11888         (casesi): Handle Thumb-1 when optimizing for size or PIC.
11889         (thumb1_casesi_internal_pic): New expand rule.
11890         (thumb1_casesi_dispatch): New pattern.
11891         * aout.h (ASM_OUTPUT_ADDR_DIFF_ELT): Use shortened vectors for
11892         thumb-1 mode.
11893         * coff.h (JUMP_TABLES_IN_TEXT_SECTION): Thumb-1 jump tables are now
11894         in the text seciton when PIC or optimizing for size.
11895         * elf.h (JUMP_TABLES_IN_TEXT_SECTION): Likewise.
11896         * lib1funcs.asm ([__ARM_EABI__]): Add an attribute describing stack
11897         preservation properties of code.
11898         (__gnu_thumb1_case_sqi, __gnu_thumb1_case_uqi): New functions.
11899         (__gnu_thumb1_case_shi, __gnu_thumb1_case_uhi): New functions.
11900         (__gnu_thumb1_case_si): New function.
11901         * t-arm (LIB1ASMSRC): Define here.
11902         (LIB1ASMFUNCS): Add some common functions.
11903         * t-arm-elf (LIB1ASMSRC): Delete.
11904         (LIB1ASMFUNCS): Append to existing set.
11905         * t-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
11906         * t-strongarm-elf (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
11907         * t-symbian (LIB1ASMFUNCS): Likewise.
11908         * t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
11909         * t-wince-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
11910
11911 2009-06-21  Richard Guenther  <rguenther@suse.de>
11912
11913         PR tree-optimization/38729
11914         * tree-ssa-loop-niter.c (find_loop_niter_by_eval): Restrict
11915         to loops with a single exit if -fno-expensive-optimizations.
11916
11917 2009-06-21  Jakub Jelinek  <jakub@redhat.com>
11918
11919         * var-tracking.c (struct shared_hash_def, shared_hash): New types.
11920         (dataflow_set): Change vars type from htab_t to shared_hash.
11921         (shared_hash_pool, empty_shared_hash): New variables.
11922         (vars_clear): Removed.
11923         (shared_hash_shared, shared_hash_htab, shared_hash_copy,
11924         shared_hash_find_slot_unshare, shared_hash_find_slot,
11925         shared_hash_find_slot_noinsert, shared_hash_find): New
11926         static inlines.
11927         (shared_hash_unshare, shared_hash_destroy): New functions.
11928         (unshare_variable): Unshare set->vars if shared, use
11929         shared_hash_htab.
11930         (vars_copy): Use htab_traverse_noresize instead of htab_traverse.
11931         (get_init_value, find_src_set_src, dump_dataflow_set,
11932         clobber_variable_part, emit_notes_for_differences): Use
11933         shared_hash_htab.
11934         (dataflow_set_init): Remove second argument, set vars to
11935         empty_shared_hash instead of creating a new htab.
11936         (dataflow_set_clear): Call shared_hash_destroy and set vars
11937         to empty_shared_hash instead of calling vars_clear.
11938         (dataflow_set_copy): Don't call vars_copy, instead just share
11939         the src htab with dst.
11940         (variable_union): Use shared_hash_*, use initially NO_INSERT
11941         lookup if set->vars is shared.  Don't keep slot cleared before
11942         calling unshare_variable.  Unshare set->vars if needed.
11943         Even ->refcount == 1 vars must be unshared if set->vars is shared
11944         and var needs to be modified.
11945         (variable_canonicalize): New function.
11946         (dataflow_set_union): If dst->vars is empty, just share src->vars
11947         with dst->vars and traverse with variable_canonicalize to canonicalize
11948         and unshare what is needed.
11949         (dataflow_set_different): If old_set and new_set use the same shared
11950         htab, they aren't different.  If number of htab elements is different,
11951         htabs are different.  Use shared_hash_*.
11952         (dataflow_set_destroy): Call shared_hash_destroy instead of
11953         htab_delete.
11954         (compute_bb_dataflow, emit_notes_in_bb, vt_emit_notes): Don't pass
11955         second argument to dataflow_set_init.
11956         (vt_initialize): Likewise.  Initialize shared_hash_pool and
11957         empty_shared_hash, move bb in/out initialization afterwards.
11958         Use variable_htab_free instead of NULL as changed_variables del hook.
11959         (variable_was_changed): Change type of second argument to pointer to
11960         dataflow_set.  When inserting var into changed_variables, bump
11961         refcount.  Unshare set->vars if set is shared htab and slot needs to
11962         be cleared.
11963         (set_variable_part): Use shared_hash_*, use initially NO_INSERT
11964         lookup if set->vars is shared.  Unshare set->vars if needed.
11965         Even ->refcount == 1 vars must be unshared if set->vars is shared
11966         and var needs to be modified.  Adjust variable_was_changed caller.
11967         (delete_variable_part): Use shared_hash_*.  Even ->refcount == 1
11968         vars must be unshared if set->vars is shared and var needs to be
11969         modified.  Adjust variable_was_changed caller.
11970         (emit_note_insn_var_location): Don't pool_free var.
11971         (emit_notes_for_differences_1): Initialize empty_var->refcount to 0
11972         instead of 1.
11973         (vt_finalize): Call htab_delete on empty_shared_hash->htab and
11974         free_alloc_pool on shared_hash_pool.
11975
11976 2009-06-20  Anthony Green  <green@moxielogic.com>
11977
11978         * config/moxie/sfp-machine.h (__gcc_CMPtype, CMPtype): Define.
11979         * config/moxie/moxie.h (LOAD_EXTEND_OP): Define.
11980
11981 2009-06-20  Richard Guenther  <rguenther@suse.de>
11982
11983         * tree-ssa-structalias.c (find_func_aliases): For memset use
11984         a constraint from NULL if we memset to zero.
11985         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Add builtins
11986         we explicitly handle that do not read from memory.
11987         (call_may_clobber_ref_p_1): Properly handle builtins that may
11988         set errno.
11989
11990 2009-06-20  Richard Guenther  <rguenther@suse.de>
11991
11992         PR tree-optimization/40495
11993         * tree-ssa-structalias.c (get_constraint_exp_for_temp): Remove.
11994         (new_scalar_tmp_constraint_exp): New function.
11995         (process_constraint): Do not create temporary decls.
11996         (process_all_all_constraints): Likewise.
11997         (handle_const_call): Likewise.
11998         (create_function_info_for): Do not set decl.
11999
12000 2009-06-19  Ian Lance Taylor  <iant@google.com>
12001
12002         * config/rs6000/rs6000.c (rs6000_explicit_options): Make static.
12003         (rs6000_attribute_table): Make static; move before use.
12004
12005 2009-06-19  Eric Botcazou  <ebotcazou@adacore.com>
12006
12007         * tree.c (substitute_in_expr) <COMPONENT_REF>: Tweak and reformat.
12008         <tcc_vl_exp>: Call process_call_operands on the new CALL_EXPR.
12009         Propagate the TREE_READONLY flag without overwriting it.
12010         (substitute_placeholder_in_expr) <tcc_vl_exp>: Likewise.
12011         Propagate the TREE_READONLY flag onto the result.
12012         (process_call_operands): Move around.  Use correct constant value.
12013
12014 2009-06-19  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
12015
12016         PR target/40482
12017         * config/arm/arm.c (thumb_shiftable_const): Truncate val to 32 bits.
12018         * config/arm/arm.md: Likewise.
12019
12020 2009-06-19  Ian Lance Taylor  <iant@google.com>
12021
12022         * tree-cfg.c (gimple_redirect_edge_and_branch): Change ERROR_MARK
12023         to GIMPLE_ERROR_MARK.
12024
12025         * c-typeck.c (build_conditional_expr): Add op1_original_type and
12026         op2_original_type parameters.  Warn about using different enum types.
12027         * c-parser.c (c_parser_conditional_expression): Pass original
12028         types to build_conditional_expr.
12029         * c-tree.h (build_conditional_expr): Update declaration.
12030
12031 2009-06-19  Ian Lance Taylor  <iant@google.com>
12032
12033         * config/i386/i386.c (ix86_function_specific_save): Test that
12034         fields match values, rather than testing the values are in a
12035         certain range.
12036
12037 2009-06-19  Richard Guenther  <rguenther@suse.de>
12038
12039         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Handle
12040         ADDR_EXPR pointers.
12041         (ptr_derefs_may_alias_p): Likewise.
12042         (ptr_deref_may_alias_ref_p_1): New function.
12043         (ptr_deref_may_alias_ref_p): Likewise.
12044         (ref_maybe_used_by_call_p_1): Handle builtins that are not
12045         covered by looking at the ESCAPED solution.
12046         (call_may_clobber_ref_p_1): Likewise.
12047         * tree-ssa-structalias.c (get_constraint_for_ptr_offset):
12048         Handle NULL_TREE offset.  Do not produce redundant constraints.
12049         (process_all_all_constraints): New helper function.
12050         (do_structure_copy): Use it.
12051         (handle_lhs_call): Likewise.
12052         (find_func_aliases): Handle some builtins with pointer arguments
12053         and/or return values explicitly.
12054
12055 2009-06-19  Ian Lance Taylor  <iant@google.com>
12056
12057         * varasm.c (const_rtx_hash_1): Remove const qualifier from shift.
12058
12059 2009-06-19  Ian Lance Taylor  <iant@google.com>
12060
12061         * rtl.h (SUBREG_PROMOTED_UNSIGNED_P): Add cast to int.
12062
12063 2009-06-19  Ian Lance Taylor  <iant@google.com>
12064
12065         * ggc-page.c (ggc_pch_write_object): Initialize emptyBytes.
12066         * sdbout.c (sdb_debug_hooks): Initialize non-SDB_DEBUGGING_INFO
12067         version.
12068
12069         * c-decl.c (finish_decl): If -Wc++-compat, warn about
12070         uninitialized const.
12071
12072 2009-06-19  Ian Lance Taylor  <iant@google.com>
12073
12074         * dse.c (struct store_info): Rename bitmap field to bmap.  Change
12075         all uses.
12076
12077         * c-decl.c (in_struct, struct_types): Remove.
12078         (struct c_binding): Add in_struct field.
12079         (c_binding_ptr): Define type, along with VEC.
12080         (struct c_struct_parse_info): Define.
12081         (struct_parse_info): New static variable.
12082         (bind): Initialize in_struct field.
12083         (start_struct): Remove enclosing_in_struct and
12084         enclosing_struct_types parameters.  Add
12085         enclosing_struct_parse_info parameter.  Change all callers.  Set
12086         struct_parse_info rather than in_struct and struct_types.
12087         (grokfield): If -Wc++-compat and there is a symbol binding for the
12088         field name, set the in_struct flag and push it on the
12089         struct_parse_info->fields vector.
12090         (warn_cxx_compat_finish_struct): New static function.
12091         (finish_struct): Remove enclosing_in_struct and
12092         enclosing_struct_types parameters.  Add
12093         enclosing_struct_parse_info parameter.  Change all callers.  Don't
12094         set C_TYPE_DEFINED_IN_STRUCT here.  Call
12095         warn_cxx_compat_finish_struct.  Free struct_parse_info and set to
12096         parameter.  Only push on struct_types if warn_cxx_compat.
12097         (finish_enum): Only push on struct_types if warn_cxx_compat.
12098         (declspecs_add_type): Add loc parameter.  Change all callers.
12099         Change all error calls to error_at.  Pass loc, not input_location,
12100         to pedwarn calls.  Warn if -Wc++-compat and a typedef name is
12101         defined in a struct.  If -Wc++-compat and parsing a struct, record
12102         that a typedef name was used.
12103         * c-parser.c (c_parser_declspecs): Get location to pass to
12104         declspecs_add_type.
12105         (c_parser_struct_or_union_specifier): Update calls to start_struct
12106         and finish_struct.
12107         * c-tree.h (struct c_struct_parse_info): Declare.
12108         (finish_struct, start_struct): Update declarations.
12109         (declspecs_add_type): Update declaration.
12110
12111 2009-06-19  Ian Lance Taylor  <iant@google.com>
12112
12113         * c-decl.c (grokdeclarator): If -Wc++-compat, warn about a global
12114         variable with an anonymous type.
12115
12116 2009-06-19  Uros Bizjak  <ubizjak@gmail.com>
12117
12118         * see.c: Remove for real.
12119
12120 2009-06-19  Uros Bizjak  <ubizjak@gmail.com>
12121
12122         * optabs.h (enum optab_index): Add new OTI_significand.
12123         (significand_optab): Define corresponding macro.
12124         * optabs.c (init_optabs): Initialize significand_optab.
12125         * genopinit.c (optabs): Implement significand_optab using
12126         significand?f2 patterns.
12127         * builtins.c (expand_builtin_mathfn): Handle
12128         BUILT_IN_SIGNIFICAND{,F,L}.
12129         (expand_builtin): Expand BUILT_IN_SIGNIFICAND{,F,L} using
12130         expand_builtin_mathfn if flag_unsafe_math_optimizations is set.
12131
12132         * config/i386/i386.md (significandxf2, significand<mode>2): New
12133         expanders to implement significandf, significand and significandl
12134         built-ins as inline x87 intrinsics.
12135
12136 2009-06-18  Anatoly Sokolov  <aesok@post.ru>
12137
12138         * config/avr/avr.c (avr_override_options): Remove setting value of
12139         PARAM_INLINE_CALL_COST.
12140
12141 2009-06-18  Richard Henderson  <rth@redhat.com>
12142
12143         PR 40488
12144         * tree-pass.h (TDF_ASMNAME): New.
12145         * tree-dump.c (dump_options): Add asmname.
12146         * doc/invoke.texi: Document it.
12147
12148         * tree-pretty-print.c (maybe_dump_asm_name): Merge into...
12149         (dump_decl_name): ...here.
12150         (dump_function_name): New flags arg; mind TDF_ASMNAME.
12151         (dump_generic_node): Update dump_function_name calls.
12152         (print_call_name): New flags arg; update all dump calls.
12153         * diagnostic.h (print_call_name): Update.
12154         * gimple-pretty-print.c (dump_gimple_call): Update.
12155
12156 2009-06-18  H.J. Lu  <hongjiu.lu@intel.com>
12157
12158         PR target/40470
12159         * config/i386/i386.h (CLASS_LIKELY_SPILLED_P): Add SSE_FIRST_REG.
12160
12161 2009-06-18  Diego Novillo  <dnovillo@google.com>
12162
12163         * doc/plugins.texi: Document plugin_is_GPL_compatible.
12164         * plugin.c (str_license): Declare.
12165         (try_init_one_plugin): Assert that the symbol
12166         'plugin_is_GPL_compatible' exists.
12167
12168 2009-06-18  Sergei Dyshel  <sergeid@il.ibm.com>
12169
12170         * see.c: Remove.
12171         * Makefile.in (OBJS-common): Remove see.o.
12172         (see.o): Remove.
12173         * common.opt (fsee): Mark as preserved for backward compatibility.
12174         * opts.c (common_handle_option): Add OPT_fsee to the backward
12175         compatibility section.
12176         * passes.c (init_optimization_passes, pass_see): Remove pass.
12177         * timevar.def (TV_SEE): Remove.
12178         * tree-pass.h (pass_see): Remove declaration.
12179         * doc/invoke.texi (-fsee): Remove documentation.
12180
12181 2009-06-18  Martin Jambor  <mjambor@suse.cz>
12182
12183         * tree-sra.c: Include statistics.h
12184         (sra_stats): New variable.
12185         (sra_initialize): Clear sra_stats.
12186         (create_access_replacement): Increment sra_stats.replacements.
12187         (get_access_replacement): Do not return twice.
12188         (analyze_all_variable_accesses): Increment statistics counter by the
12189         number of scalarized aggregates.
12190         (generate_subtree_copies): Increment sra_stats.subtree_copies.
12191         (sra_modify_expr): Increment sra_stats.exprs.
12192         (load_assign_lhs_subreplacements): Increment sra_stats.subreplacements.
12193         (sra_modify_assign): Increment sra_stats.exprs,
12194         sra_stats.separate_lhs_rhs_handling and sra_stats.deleted.
12195         (perform_intra_sra): Update statistics counters.
12196         * Makefile.in (tree-sra.o): Add statistics.h to dependencies.
12197
12198 2009-06-18  Sandra Loosemore  <sandra@codesourcery.com>
12199
12200         * config/arm/arm.c (TARGET_SCALAR_MODE_SUPPORTED_P): Redefine.
12201         (arm_scalar_mode_supported_p): New function.
12202
12203 2009-06-18  Paul Brook  <paul@codesourcery.com>
12204             Sandra Loosemore  <sandra@codesourcery.com>
12205
12206         * config/arm/sfp-machine.h (_FP_NANFRAC_H, _FP_NANSIGN_H): Define.
12207         (__extendhfsf2, __truncsfhf2): Define.
12208         * config/arm/fp16.c: New file.
12209         * config/arm/t-bpabi (LIB2FUNCS_STATIC_EXTRA): Add fp16.c.
12210         * config/arm/t-symbian (LIB2FUNCS_STATIC_EXTRA):  Add fp16.c.
12211
12212 2009-06-18  Sandra Loosemore  <sandra@codesourcery.com>
12213
12214         * doc/extend.texi (Half-Precision): New section.
12215         * doc/invoke.texi (Option Summary): List -mfp16-format.
12216         (ARM Options): List neon-fp16 as -mfpu value.  Document -mfp16-format.
12217         * config/arm/arm.opt (mfp16-format=): New.
12218         * config/arm/arm.c: Include intl.h.
12219         (TARGET_INVALID_PARAMETER_TYPE): Redefine.
12220         (TARGET_INVALID_RETURN_TYPE): Redefine.
12221         (TARGET_PROMOTED_TYPE): Redefine.
12222         (TARGET_CONVERT_TO_TYPE): Redefine.
12223         (arm_fp16_format): Define.
12224         (all_fpus): Add entry for neon-fp16.
12225         (fp_model_for_fpu): Likewise.
12226         (struct fp16_format): Declare.
12227         (all_fp16_formats): Define.
12228         (arm_init_libfuncs): Add entries for HFmode conversions and arithmetic
12229         functions.
12230         (arm_override_options): Set arm_fp16_format. Call sorry for fp16
12231         and no ldrh.
12232         (arm_legitimate_index_p): Treat HFmode like HImode.
12233         (thumb1_legitimate_address_p): Make it recognize HFmode constants.
12234         (coproc_secondary_reload_class): Special-case HFmode.
12235         (arm_print_operand): Add 'z' specifier for vld1.16/vst1.16.
12236         (arm_hard_regno_mode_ok): Allow HFmode values in VFP registers.
12237         (arm_init_fp16_builtins): New.
12238         (arm_init_builtins): Call it.
12239         (arm_invalid_parameter_type): New.
12240         (arm_invalid_return_type): New.
12241         (arm_promoted_type): New.
12242         (arm_convert_to_type).
12243         (arm_file_start): Deal with neon-fp16 as fpu_name.  Emit tag for fp16
12244         format.
12245         (arm_emit_fp16_const): New function.
12246         (arm_mangle_type): Mangle __fp16 as "Dh".
12247         * config/arm/arm.h (TARGET_VFPD32): Make it know about
12248         FPUTYPE_NEON_FP16.
12249         (TARGET_NEON_FP16): New.
12250         (TARGET_NEON): Make it know about FPUTYPE_NEON_FP16.
12251         (enum fputype): Add FPUTYPE_NEON_FP16.
12252         (enum arm_fp16_format_type): Declare.
12253         (arm_fp16_format): Declare.
12254         (LARGEST_EXPONENT_IS_NORMAL): Define.
12255         * config/arm/arm-protos.h (arm_emit_fp16_const): Declare.
12256         * config/arm/arm-modes.def (HFmode): Define.
12257         * config/arm/vfp.md: (*movhf_vfp): New.
12258         (extendhfsf2): New.
12259         (truncsfhf2): New.
12260         * config/arm/arm.md: (fpu): Add neon_fp16.
12261         (floatsihf2, floatdihf2): New.
12262         (fix_trunchfsi2, fix_trunchfdi2): New.
12263         (truncdfhf2): New.
12264         (extendhfdf2): New.
12265         (movhf): New.
12266         (*arm32_movhf): New.
12267         (*thumb1_movhf): New.
12268         (consttable_2): Add check for HFmode constants.
12269         (consttable_4): Handle HFmode constants.
12270
12271 2009-06-18  Uros Bizjak  <ubizjak@gmail.com>
12272
12273         * convert.c (convert_to_integer): Convert (int)logb() into ilogb().
12274
12275 2009-06-17  Olivier Hainque  <hainque@adacore.com>
12276
12277         * collect2.c (main): Use CONST_CAST2 to perform char ** to
12278         const char ** conversion in AIX specific section.
12279
12280 2009-06-17  H.J. Lu  <hongjiu.lu@intel.com>
12281
12282         * config/i386/i386.c (ix86_special_builtin_type): Remove
12283         UINT64_FTYPE_PINT.  Add UINT64_FTYPE_PUNSIGNED.
12284         (bdesc_special_args): Updated.
12285         (ix86_init_mmx_sse_builtins): Likewise.
12286         (ix86_expand_special_args_builtin): Likewise.
12287
12288 2009-06-17  Richard Henderson  <rth@redhat.com>
12289
12290         * tree-pretty-print.c (maybe_dump_asm_name): New.
12291         (dump_decl_name): Use it.
12292         (PRINT_FUNCTION_NAME): Merge into...
12293         (dump_function_name): ... here.  Use maybe_dump_asm_name.
12294
12295 2009-06-17  Cary Coutant  <ccoutant@google.com>
12296
12297         * dbxout.c (dbxout_source_line): Add is_stmt parameter.
12298         Change caller.
12299         * debug.c (struct gcc_debug_hooks): Change placeholder for
12300         source_line hook.
12301         (debug_nothing_int_charstar_int): Replaced by...
12302         (debug_nothing_int_charstar_int_bool): ...this.
12303         * debug.h (struct gcc_debug_hooks): Add is_stmt parameter to
12304         source_line prototype.
12305         (debug_nothing_int_charstar_int): Replaced by...
12306         (debug_nothing_int_charstar_int_bool): ...this.
12307         * defaults.h (SUPPORTS_DISCRIMINATOR): New constant.
12308         * dwarf2out.c (dwarf2out_source_line): Add is_stmt parameter.
12309         Output is_stmt operand when necessary.
12310         * final.c (final_scan_insn): Pass is_stmt to source_line debug hook.
12311         (notice_source_line): Add is_stmt parameter.
12312         * sdbout.c (sdbout_source_line): Add is_stmt parameter.
12313         * vmsdbgout.c (vmsdbgout_source_line): Add is_stmt parameter.
12314         Change callers.
12315         * xcoffout.c (xcoffout_source_line): Add is_stmt parameter.
12316         * xcoffout.h (xcoffout_source_line): Add is_stmt parameter.
12317
12318 2009-06-17  Ian Lance Taylor  <iant@google.com>
12319
12320         * expr.c (struct move_by_pieces_d): Rename from move_by_pieces.
12321         Change all uses.
12322         (struct store_by_pieces_d): Rename from store_by_pieces.  Change
12323         call uses.
12324
12325 2009-06-17  Adam Nemet  <anemet@caviumnetworks.com>
12326
12327         * tree.h (STRIP_NOPS, STRIP_SIGN_NOPS,
12328         STRIP_USELESS_TYPE_CONVERSION): Use tree_strip_nop_conversions,
12329         tree_strip_sign_nop_conversions and
12330         tree_ssa_strip_useless_type_conversions rather than stripping
12331         the operations here.
12332         (tree_strip_nop_conversions, tree_strip_sign_nop_conversions):
12333         Declare them.
12334         * gimple.h (tree_ssa_strip_useless_type_conversions): Declare it.
12335         * tree-ssa.c (tree_ssa_strip_useless_type_conversions): New function.
12336         * tree.c (tree_nop_conversion, tree_sign_nop_conversion,
12337         tree_strip_nop_conversions, tree_strip_sign_nop_conversions): New
12338         functions.
12339
12340 2009-06-17  Michael Eager  <eager@eagercon.com>
12341
12342         * config/rs6000/constraints.md (register_constraint "d"): New.
12343         * config/rs6000/dfp.md (movsd_store, extendsddd2, extendsdtd2,
12344         truncddsd2, *negdd2_fpr, *absdd2_fpr, *nabsdd2_fpr,
12345         *movdd_hardfloat32, *movdd_hardfloat64_mfpgpr, *movdd_hardfloat64,
12346         *negtd2_fp, *abstd2_fpr, *nabstd2_fpr, *movtd_internal, extendddtd2,
12347         trunctddd2, adddd3, addtd3, subdd3, subtd3, muldd3, multd3, divdd3,
12348         divtd3, *cmpdd_internal1, *cmptd_internal1, floatditd2, ftruncdd2,
12349         fixdddi2, ftrunctd2, fixtddi2): replace 'f' constraint with 'd'
12350         * config/rs6000/ppu_intrinsics.h (__mffs, __mtfsf, __mtfsfi, __fabs,
12351         __fnabs, __fmadd, __fmsub, __fnmadd, __fnmsub, __fsel, __frsqrte,
12352         __fsqrt, __fmul, __fmuls, __frsp, __fcfid, __fctid, __fctidz, __fctiw,
12353         __fctiwz): Same.
12354         * config/rs6000/rs6000.md (*extendsfdf2_fpr, *truncdfsf2_fpr,
12355         *fseldfsf4, *negdf2_fpr, *absdf2_fpr, *nabsdf2_fpr, *adddf3_fpr,
12356         *subdf3_fpr, *muldf3_fpr, *divdf3_fpr, recipdf3, fred, sqrtdf2,
12357         *fseldfdf4, *fselsfdf4, *floatsidf2_internal, *floatunssidf2_internal,
12358         *fix_truncdfsi2_internal, fix_truncdfsi2_internal_gfxopt,
12359         fix_truncdfsi2_mfpgpr, fctiwz, btruncdf2, ceildf2, floordf2, rounddf2,
12360         stfiwx, floatdidf2, fix_truncdfdi2, floatdisf2_internal1,
12361         *movdf_hardfloat32, *movdf_hardfloat64_mfpgpr, *movdf_hardfloat64,
12362         *movtf_internal, *extenddftf2_internal, trunctfdf2_internal1,
12363         trunctfdf2_internal2, trunctfsf2_fprs, fix_trunc_helper,
12364         *fix_trunctfsi2_internal, negtf2_internal, *movdi_internal32,
12365         *movdi_mfpgpr, *movdi_internal64, *movdf_update1, *movdf_update2,
12366         *cmpdf_internal1, *cmptf_internal1, *cmptf_internal2): Same.
12367         * doc/md.texi: Describe PowerPC 'd' constraint, update 'f' constraint.
12368
12369 2009-06-16  Ian Lance Taylor  <iant@google.com>
12370
12371         * profile.c (total_num_never_executed): Don't define.
12372         (compute_branch_probabilities): Don't count or print
12373         num_never_executed.
12374         (init_branch_prob): Don't set total_num_never_executed.
12375         (end_branch_prob): Don't print total_num_never_executed.
12376
12377 2009-06-17  David Daney  <ddaney@caviumnetworks.com>
12378
12379         * jump.c (cleanup_barriers): Handle case of no insns before a barrier.
12380
12381 2009-06-17  David Edelsohn  <edelsohn@gnu.org>
12382
12383         * config/rs6000/dfp.md (nabsdd2_fpr): Correct mode.
12384         (nabstd2_fpr): Same.
12385
12386 2009-06-17  Steve Ellcey  <sje@cup.hp.com>
12387
12388         * expr.c (expand_assignment): Change complex type check.
12389
12390 2009-06-17  Basile Starynkevitch  <basile@starynkevitch.net>
12391
12392         * doc/plugins.texi (Building GCC plugins): Added new section.
12393
12394 2009-06-17  Ian Lance Taylor  <iant@google.com>
12395
12396         * c-pch.c (get_ident): Don't set size of templ array.
12397         (pch_init): Don't set size of partial_pch array.
12398
12399         * c-typeck.c (digest_init): If -Wc++-compat, warn about using a
12400         string constant to intialize an array whose size is the length of
12401         the string.
12402
12403 2009-06-17  Richard Guenther  <rguenther@suse.de>
12404
12405         PR tree-optimization/40389
12406         * tree-ssa-structalias.c (handle_rhs_call): Restrict NRV case
12407         to addressable types.
12408         * gimple.c (walk_stmt_load_store_addr_ops): Likewise.
12409
12410 2009-06-17  Richard Guenther  <rguenther@suse.de>
12411
12412         PR middle-end/40460
12413         * tree-chrec.h (build_polynomial_chrec): If we cannot determine
12414         if there is no evolution of left in the loop bail out.
12415         * tree-chrec.c (chrec_fold_multiply_poly_poly): CSE one
12416         chrec_fold_multiply.
12417
12418 2009-06-16  J"orn Rennecke  <joern.rennecke@arc.com>
12419             Janis Johnson  <janis187@us.ibm.com>
12420
12421         PR target/39254
12422         * config/rs6000/rs6000.c (rs6000_emit_move): Don't emit a USE
12423         for the symbol ref of a constant that is the source of a move
12424         - nor for any other not-obvious-label-ref constants.
12425
12426 2009-06-16  Olatunji Ruwase  <tjruwase@google.com>
12427
12428         * plugin.c (position_pass): Skip newly inserted pass during list
12429         traversal to avoid repeated insertion.
12430
12431 2009-06-16  Ian Lance Taylor  <iant@google.com>
12432
12433         * vec.h (VEC_stack_alloc): Define different version if
12434         GATHER_STATISTICS is defined, to accept and ignore MEM_STAT.
12435         (DEF_VEC_ALLOC_FUNC_P_STACK): Remove MEM_STAT_DECL.
12436         (DEF_VEC_ALLOC_FUNC_O_STACK): Likewise.
12437         (DEF_VEC_ALLOC_FUNC_I_STACK): Likewise.
12438
12439 2009-06-16  H.J. Lu  <hongjiu.lu@intel.com>
12440
12441         * config.gcc (extra_headers): Add ia32intrin.h for x86.
12442
12443         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_BSRSI,
12444         IX86_BUILTIN_BSRDI.  IX86_BUILTIN_RDPMC, IX86_BUILTIN_RDTSC.
12445         IX86_BUILTIN_RDTSCP.  IX86_BUILTIN_ROLQI, IX86_BUILTIN_ROLHI,
12446         IX86_BUILTIN_RORQI and IX86_BUILTIN_RORHI.
12447         (ix86_special_builtin_type): Add UINT64_FTYPE_VOID,
12448         UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
12449         INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
12450         (bdesc_special_args): Add __builtin_ia32_rdtsc and
12451         __builtin_ia32_rdtscp.
12452         (bdesc_args): Add __builtin_ia32_bsrsi, __builtin_ia32_bsrdi,
12453         __builtin_ia32_rolqi, __builtin_ia32_rolhi, __builtin_ia32_rorqi
12454         and __builtin_ia32_rorhi.
12455         (ix86_init_mmx_sse_builtins): Handle UINT64_FTYPE_VOID,
12456         UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
12457         INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
12458         (ix86_expand_args_builtin): Likewise.
12459         (ix86_expand_special_args_builtin): Likewise.
12460
12461         * config/i386/i386.md (UNSPECV_RDTSCP): New.
12462         (UNSPECV_RDTSC): Likewise.
12463         (UNSPECV_RDPMC): Likewise.
12464         (*bsr): Renamed to ...
12465         (bsr): This
12466         (*bsr_rex64): Renamed to ...
12467         (bsr_rex64): This.
12468         (rdpmc): New.
12469         (*rdpmc): Likewise.
12470         (*rdpmc_rex64): Likewise.
12471         (rdtsc): Likewise.
12472         (*rdtsc): Likewise.
12473         (*rdtsc_rex64): Likewise.
12474         (rdtscp): Likewise.
12475         (*rdtscp): Likewise.
12476         (*rdtscp_rex64): Likewise.
12477
12478         * config/i386/ia32intrin.h: New.
12479
12480         * config/i386/x86intrin.h: Include <ia32intrin.h>.
12481
12482 2009-06-16  Ian Lance Taylor  <iant@google.com>
12483
12484         * ira-build.c (copy_info_to_removed_store_destinations):
12485         Initialize parent_a.
12486
12487 2009-06-16  Ian Lance Taylor  <iant@google.com>
12488
12489         * c-decl.c (grokdeclarator): Change size_varies to bool.
12490
12491 2009-06-16  Ian Lance Taylor  <iant@google.com>
12492
12493         * sel-sched.c: Make forward declarations of move_op_hooks and
12494         fur_hooks explicitly extern.
12495
12496 2009-06-16  Ian Lance Taylor  <iant@google.com>
12497
12498         * df-problems.c (df_byte_lr_alloc): Don't set problem_data to itself.
12499         * vec.c (vec_gc_o_reserve_1): Don't set alloc to itself.
12500
12501 2009-06-16  Ian Lance Taylor  <iant@google.com>
12502
12503         * resource.c (mark_referenced_resources): Change
12504         include_delayed_effects parameter to bool.  Change all callers.
12505         (mark_end_of_function_resources): Likewise.
12506         * reorg.c (insn_references_resource_p): Likewise.
12507         (insn_sets_resource_p): Likewise.
12508         * resource.h (mark_referenced_resources): Update declaration.
12509         (mark_end_of_function_resources): Update declaration.
12510
12511 2009-06-16  David Edelsohn  <edelsohn@gnu.org>
12512
12513         * config/rs6000/aix.h (LIBSTDCXX_STATIC): Remove -lstdc++.
12514
12515 2009-06-16  David Edelsohn  <edelsohn@gnu.org>
12516
12517         * doc/install.texi (*-*-aix): Update explanation of XLC bootstrap.
12518         GCC can bootstrap on AIX with GNU Binutils 2.20.
12519
12520 2009-06-16  Ian Lance Taylor  <iant@google.com>
12521
12522         * Makefile.in (tree-vect-stmts.o): Depend upon $(TOPLEV_H).
12523
12524 2009-06-16  Ian Lance Taylor  <iant@google.com>
12525
12526         * toplev.h (floor_log2): If GCC_VERSION >= 3004, declare as static
12527         inline, not extern inline.
12528         (exact_log2): Likewise.
12529         * toplev.c (floor_log2): Only define if GCC_VERSION < 3004. Don't
12530         test CLZ_HWI.
12531         (exact_log2): Likewise, but don't test CTZ_HWI.
12532
12533 2009-06-16  Ian Lance Taylor  <iant@google.com>
12534
12535         * bitmap.c (bitmap_clear): Don't declare as inline.
12536         * gimple.c (gimplify_assign): Likewise.
12537         * tree-ssa-sccvn.c (vn_nary_op_compute_hash): Likewise.
12538         * haifa-sched.c (insn_cost): Don't declare with HAIFA_INLINE.
12539         (sched_scan_info): Remove duplicate definition.
12540
12541 2009-06-16  Ian Lance Taylor  <iant@google.com>
12542
12543         * c-common.c (skip_evaluation): Don't define.
12544         (c_inhibit_evaluation_warnings): Define global variable.
12545         (overflow_warning): Check c_inhibit_evaluation_warnings rather
12546         than skip_evaluation.
12547         (convert_and_check, warn_for_div_by_zero): Likewise.
12548         * c-common.h (skip_evaluation): Don't declare.
12549         (c_inhibit_evaluation_warnings): Declare.
12550         * c-parser.c (c_parser_typeof_specifier): Set
12551         c_inhibit_evaluation_warnings rather than skip_evaluation.
12552         (c_parser_conditional_expression): Likewise.
12553         (c_parser_binary_expression): Likewise.
12554         (c_parser_sizeof_expression): Likewise.
12555         (c_parser_alignof_expression): Likewise.
12556         * c-typeck.c (build_indirect_ref): Check
12557         c_inhibit_evaluation_warnings rather than skip_evaluation.
12558         (build_conditional_expr, build_binary_op): Likewise.
12559
12560 2009-06-16  Richard Guenther  <rguenther@suse.de>
12561
12562         * tree-ssa-alias.c (is_escape_site): Remove.
12563         * tree-ssa-alias.h (enum escape_type): Remove.
12564         (is_escape_site): Likewise.
12565         * tree-ssa-structalias.c (find_func_aliases): Handle escapes
12566         via casts and asms without deferring to is_escape_site.
12567
12568 2009-06-16  Jakub Jelinek  <jakub@redhat.com>
12569
12570         PR middle-end/40446
12571         * expr.c (expand_expr_real_1) <case VIEW_CONVERT_EXPR>: Don't
12572         use gen_lowpart if op0 has complex mode.
12573
12574 2009-06-16  Richard Guenther  <rguenther@suse.de>
12575
12576         * tree-ssa-structalias.c (do_ds_constraint): Stores in global
12577         variables add them to ESCAPED.
12578         (find_func_aliases): Do not make all indirectly stored values escaped.
12579
12580 2009-06-16  Rafael Avila de Espindola  <espindola@google.com>
12581
12582         * config/i386/winnt.c (i386_pe_encode_section_info): Update call to
12583         make_decl_one_only.
12584
12585 2009-06-16  Martin Jambor  <mjambor@suse.cz>
12586
12587         PR tree-optimization/40432
12588         * tree-sra.c (sra_modify_assign): When creating VIEW_CONVERT_EXPR,
12589         check whether we need to force gimple register operand.
12590
12591 2009-06-16  Martin Jambor  <mjambor@suse.cz>
12592
12593         PR tree-optimization/40413
12594         * tree-sra.c (load_assign_lhs_subreplacements): Pass offset to
12595         build_ref_for_offset.
12596         (propagate_subacesses_accross_link): Fix a typo in a comment.
12597
12598 2009-06-16  Ira Rosen  <irar@il.ibm.com>
12599
12600         * tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
12601         with additional parameter.
12602         * tree-vectorizer.h (enum vect_def_type): Add new value
12603         vect_nested_cycle.
12604         (enum vect_relevant): Add comments.
12605         (vect_is_simple_reduction): Add new argument.
12606         * tree-vect-loop.c (vect_analyze_scalar_cycles_1): Add comments.
12607         Detect nested cycles.
12608         (vect_is_simple_reduction): Update documentation, add an argument to
12609         distinguish inner-loop reduction from nested cycle, detect nested
12610         cycles, fix printings and indentation, don't swap operands in case
12611         of nested cycle.
12612         (get_initial_def_for_reduction): Handle subtraction.
12613         (vect_create_epilog_for_reduction): Add new argument to specify
12614         reduction variable.
12615         (vect_finalize_reduction): Handle subtraction, fix comments.
12616         (vectorizable_reduction): Handle nested cycles. In case of nested
12617         cycle keep track of the reduction variable position. Call
12618         vect_is_simple_reduction with additional parameter. Use original
12619         statement code in reduction epilogue for nested cycle. Call
12620         vect_create_epilog_for_reduction with additional parameter.
12621         * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Assert
12622         inner-loop vectorization.
12623         (vect_recog_widen_sum_pattern): Likewise.
12624         * tree-vect-stmts.c (process_use): Distinguish between nested cycles
12625         and reductions.
12626         (vect_mark_stmts_to_be_vectorized): Likewise.
12627         (vect_get_vec_def_for_operand): Handle nested cycles.
12628
12629 2009-06-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
12630
12631         * doc/invoke.texi (Debugging Options): Fix option index entries
12632         for -fdump-statistics, -frandom-seed add entries for
12633         -fdump-tree-original, -fdump-tree-optimized, -frandom-seed.
12634         (FRV Options): Fix entries for -mTLS, -mtls.
12635         (HPPA Options): Fix entries for -mgnu-ld, -mhp-ld.
12636         (i386 and x86-64 Options): Fix entry for -mno-red-zone.
12637         (M68hc1x Options): Fix @itemx for -mnominmax.
12638         (MCore Options): Fix entry for -mno-lsim.
12639         (MMIX Options): Fix entry for -mabi=mmixware.
12640         (PDP-11 Options): Fix entry for -mbcopy-builtin.
12641
12642 2009-06-16  Basile Starynkevitch  <basile@starynkevitch.net>
12643
12644         * doc/plugins.texi (Interacting with the GCC Garbage Collector):
12645         Mention the plugin mode of gengtype.
12646         * doc/gty.texi (Source Files Containing Type Information): Likewise.
12647         * gengtype.c: Updated copyright.
12648         (plugin_files, nb_plugin_files) Added new static variables.
12649         (measure_input_list) Care about plugin_files.
12650         (write_rtx_next): Added early return in plugin mode.
12651         (create_file): Updated copyright year in generated file. Added
12652         asserts.
12653         (oprintf): Added early return if NULL outf.
12654         (get_output_file_with_visibility): Care of plugin_files.
12655         (get_output_file_name): May return null.
12656         (write_local): Added early return.
12657         (put_mangled_filename): Ditto.
12658         (finish_root_table): Added check for base_files.
12659         (write_roots): Care about null when plugins.
12660         (main): Added plugin mode.
12661
12662 2009-06-15  Ian Lance Taylor  <iant@google.com>
12663
12664         * df-problems.c (df_simulate_one_insn_forwards): Fix braces in switch.
12665         * gcov.c (read_count_file): Add braces around variables declared
12666         before label.
12667
12668         * c.opt (Wjump-misses-init): New warning.
12669         * c-opts.c (c_common_handle_option): Set warn_jump_misses_init for
12670         -Wall and -Wc++-compat if not already set.
12671         (c_common_post_options): Clear warn_jump_misses_init if it was not
12672         set.
12673         * c-decl.c (struct c_binding): Change type field to a union with
12674         new label field.  Make it the first field in the struct.  Update
12675         references to type to use u.type instead.
12676         (struct c_spot_bindings): Define.
12677         (struct c_goto_bindings): Define.
12678         (c_goto_bindings_p): Define, along with VECs.
12679         (struct c_label_vars): Define.
12680         (struct c_scope): Add has_label_bindings field.
12681         (bind_label, set_spot_bindings): New static functions.
12682         (decl_jump_unsafe, update_spot_bindings): New static functions.
12683         (update_label_decls): New static function.
12684         (pop_scope): Call update_label_decls.  Don't call c_end_vm_scope.
12685         Update binding u.label field to shadowed field.
12686         (c_binding_start_stmt_expr): New function.
12687         (c_binding_end_stmt_expr): New function.
12688         (pushdecl): Don't call c_begin_vm_scope.
12689         (make_label): Add defining and p_label_vars parameters.  Change
12690         all callers.
12691         (lookup_label): Correct test for whether a label has not yet been
12692         defined.  Call bind_label rather than bind.
12693         (warn_about_goto): New static function.
12694         (lookup_label_for_goto): New function.
12695         (declare_label): Call bind_label rather than bind.
12696         (check_earlier_gotos): New static function.
12697         (define_label): Don't give errors about jumping into statement
12698         expressions or scopes of variably modified types.  Call
12699         set_spot_bindings and check_earlier_gotos.  Call bind_label
12700         instead of bind.  Don't set label_context_stack_se or
12701         label_context_stack_vm.
12702         (c_get_switch_bindings): New function.
12703         (c_release_switch_bindings): New function.
12704         (c_check_switch_jump_warnings): New function.
12705         (start_function): Don't set label_context_stack_se or
12706         label_context_stack_vm.
12707         (finish_function): Likewise.
12708         * c-typeck.c (label_context_stack_se): Don't define.
12709         (label_context_stack_vm): Don't define.
12710         (c_finish_goto_label): Call lookup_label_for_goto rather than
12711         lookup_label.  Don't give errors about jumping into a statement
12712         expression or the scope of a variably modified type.  Don't set
12713         label_context_stack_se or label_context_stack_vm.
12714         (struct c_switch): Remove blocked_stmt_expr and blocked_vm
12715         fields.  Add bindings field.
12716         (c_start_case): Don't set deleted fields.  Set bindings field.
12717         (do_case): Rework order of tests.  Don't check blocked_stmt_expr
12718         or blocked_vm.  Call c_check_switch_jump_warnings.
12719         (c_finish_case): Don't test blocked_stmt_expr field.  Call
12720         c_release_switch_bindings.
12721         (c_begin_stmt_expr): Don't increment blocked_stmt_expr in
12722         c_switch_stack.  Don't walk label_context_stack_se labels.  Don't
12723         set label_context_stack_se.  Call c_bindings_start_stmt_expr.
12724         (c_finish_stmt_expr): Don't decrement blocked_stmt_expr in
12725         c_switch_stack.  Don't walk label_context_stack_se labels.  Don't
12726         set label_context_stack_se.  Call c_bindings_end_stmt_expr.
12727         (c_begin_vm_scope, c_end_vm_scope): Don't define.
12728         * c-tree.h (C_DECL_UNJUMPABLE_STMT_EXPR): Don't define.
12729         (C_DECL_UNDEFINABLE_STMT_EXPR): Don't define.
12730         (C_DECL_UNJUMPABLE_VM): Don't define.
12731         (C_DECL_UNDEFINABLE_VM): Don't define.
12732         (struct c_label_list): Don't define.
12733         (struct c_label_context_se): Don't define.
12734         (struct c_label_context_vm): Don't define.
12735         (struct c_spot_bindings): Declare.
12736         (c_bindings_start_stmt_expr): Declare.
12737         (c_bindings_end_stmt_expr): Declare.
12738         (lookup_label_for_goto): Declare.
12739         (c_get_switch_bindings, c_release_switch_bindings): Declare.
12740         (c_check_switch_jump_warnings): Declare.
12741         (label_context_stack_se, label_context_stack_vm): Don't declare.
12742         (c_finish_goto_label): Update declaration.
12743         (c_begin_vm_scope, c_end_vm_scope): Don't declare.
12744         * doc/invoke.texi (Option Summary): Mention -Wjump-misses-init.
12745         (Warning Options): Document -Wjump-misses-init.
12746
12747 2009-06-15  Jakub Jelinek  <jakub@redhat.com>
12748
12749         * tree-object-size.c (addr_object_size): Fix a pasto in the last
12750         change.
12751
12752 2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
12753
12754         * cgraph.c (cgraph_make_node_local): Use DECL_COMDAT_GROUP.
12755
12756 2009-06-15  Aldy Hernandez  <aldyh@redhat.com>
12757
12758         * except.c (init_eh): Use BUILTINS_LOCATION when calling build_decl.
12759
12760 2009-06-15  Aldy Hernandez  <aldyh@redhat.com>
12761
12762         * tree-eh.c (lower_try_finally_switch): Initialize tf_loc.
12763
12764 2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
12765
12766         * cgraphunit.c (cgraph_function_versioning,save_inline_function_body):
12767         Use DECL_COMDAT_GROUP instead of DECL_ONE_ONLY.
12768         * cgraph.c (cgraph_create_virtual_clone): Use DECL_COMDAT_GROUP.
12769         * config/i386/i386.c (ix86_file_end): Compute DECL_COMDAT_GROUP.
12770         * dwarf2asm.c (dw2_force_const_mem): Update call to
12771         make_decl_one_only.
12772         * langhooks-def.h (lhd_comdat_group, LANG_HOOKS_COMDAT_GROUP): Remove.
12773         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_COMDAT_GROUP.
12774         * langhooks.c (lhd_comdat_group): Remove.
12775         * langhooks.h (lang_hooks_for_decls): Remove comdat_group.
12776         * tree.h (DECL_COMDAT_GROUP): New.
12777         (DECL_ONE_ONLY): Use DECL_COMDAT_GROUP.
12778         (tree_decl_with_vis): Add comdat_group. Remove one_only.
12779         (make_decl_one_only): Change signature.
12780         * varasm.c (get_emutls_init_templ_addr, emutls_decl): Update call to
12781         make_decl_one_only.
12782         (make_decl_one_only): Change signature.
12783         (default_elf_asm_named_section): Use DECL_COMDAT_GROUP.
12784
12785 2009-06-15  Richard Guenther  <rguenther@suse.de>
12786
12787         PR middle-end/40439
12788         * tree.c (widest_int_cst_value): Fix bootstrap on 32bit HWI hosts.
12789
12790 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
12791
12792         * tree-ssa-math-opts.c: Remove extra divide.
12793
12794 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
12795
12796         * config/s390/s390.md ("bswap<mode>2"): Only available on z900.
12797
12798 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
12799
12800         * passes.c: Add bswap pass.
12801         * tree-pass.h: Add pass_optimize_bswap declaration.
12802         * tree-ssa-math-opts.c: Include diagnostics.h for print_gimple_stmt.
12803         Include rtl.h, expr.h and optabs.h for optab_handler check.
12804         (struct symbolic_number, pass_optimize_bswap): New definition.
12805         (do_shift_rotate, verify_symbolic_number_p): New functions.
12806         (find_bswap_1, find_bswap, execute_optimize_bswap): New functions.
12807         (gate_optimize_bswap): New function.
12808         * tree.c (widest_int_cst_value): New function.
12809         * tree.h (widest_int_cst_value): Prototype added.
12810
12811 2009-06-14  Steven Bosscher  <steven@gcc.gnu.org>
12812
12813         * cfgcleanup.c (old_insns_match_p): Remove code to substitute
12814         REG_EQUAL/REG_EQUIV notes.
12815
12816 2009-06-14  Richard Guenther  <rguenther@suse.de>
12817
12818         PR middle-end/40389
12819         * gimple.c (walk_stmt_load_store_addr_ops): The LHS of a call
12820         has its address taken if NRV was applied and it is addressable.
12821         * tree-ssa-structalias.c (get_constraint_for_address_of): New
12822         function split out from ...
12823         (get_constraint_for_1): ... here.
12824         (handle_rhs_call): Use it to mark the return slot escaped if
12825         it is addressable and NRV was applied.
12826
12827 2009-06-13  Aldy Hernandez  <aldyh@redhat.com>
12828
12829         * config/rs6000/rs6000-protos.h (altivec_resolve_overloaded_builtin):
12830         Change first argument type to location_t.
12831         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Same.
12832         Do not set input_location.
12833         Use loc instead of input_location throughout.
12834
12835 2009-06-13  Richard Guenther  <rguenther@suse.de>
12836
12837         PR tree-optimization/40421
12838         * tree-predcom.c (should_unroll_loop_p): Remove.
12839         (tree_predictive_commoning_loop): Use can_unroll_loop_p.
12840
12841 2009-06-13  Michael Meissner  <meissner@linux.vnet.ibm.com>
12842
12843         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
12844         Add location argument.
12845
12846 2009-06-13  Aldy Hernandez  <aldyh@redhat.com>
12847
12848         * config/alpha/alpha.c (alpha_build_builtin_va_list): Pass location to
12849         build_decl.
12850         * config/s390/s390.c (s390_build_builtin_va_list): Same.
12851         (s390_gimplify_va_arg): Pass location to create_artificial_label.
12852         * config/spu/spu-protos.h: Add location to
12853         spu_resolve_overloaded_builtin.
12854         * config/spu/spu.c (spu_build_builtin_va_list): Pass location to
12855         spu_build_builtin_va_list.
12856         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Add location
12857         argument.  Pass location to build_function_call_vec.
12858         * config/sh/sh.c (sh_build_builtin_va_list): Pass location to
12859         build_decl.
12860         (emit_fpu_switch): Same.
12861         (sh_gimplify_va_arg_expr): Pass location to create_artificial_label.
12862         * config/xtensa/xtensa.c (xtensa_build_builtin_va_list): Pass location
12863         to build_decl and create_artificial_label.
12864         (xtensa_gimplify_va_arg_expr): Same.
12865         * config/stormy16/stormy16.c (xstormy16_build_builtin_va_list): Same.
12866         (xstormy16_gimplify_va_arg_expr): Same.
12867         * config/iq2000/iq2000.c (iq2000_expand_prologue): Same.
12868         * config/arm/arm.c (arm_build_builtin_va_list): Same.
12869         * config/mips/mips.c (mips_build_builtin_va_list): Same.
12870         (mips16_build_function_stub): Same.
12871         (mips16_build_call_stub): Same.
12872
12873 2009-06-13  Richard Earnshaw  <rearnsha@arm.com>
12874
12875         PR target/40327
12876         * arm/constraints.md (Pa, Pb): New constraints.
12877         * arm/arm.md (thumb1_addsi3): Support more complex additions.  Add a
12878         split pattern to deal with them.
12879
12880 2009-06-13  Joerg Sonnenberger  <joerg@britannica.bec.de>
12881
12882         * doc/invoke.texi: Add missing option -Wp,OPTION in list,
12883         fix index entry for -Xpreprocessor.
12884
12885 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
12886
12887         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
12888         Add location argument to build_decl call.
12889         * config/rs6000/rs6000.c (rs6000_build_builtin_va_list): Same.
12890         (rs6000_init_builtins): Same.
12891         (spe_init_builtins): Same.
12892         (rs6000_gimplify_va_arg): Add location argument to
12893         create_artificial_label call.
12894
12895 2009-06-12  Steven Bosscher  <steven@gcc.gnu.org>
12896
12897         * timevar.def (TV_COMBINE_STACK_ADJUST): New timevar.
12898         * combine-stack-adj.c (pass_stack_adjustments): Use it.
12899         * Makefile.in: Fix GGC dependency for gcse.o.
12900
12901 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
12902
12903         * tree-pretty-print.c (dump_generic_node): Dump column numbers.
12904         * gimple-pretty-print.c (dump_gimple_stmt): Same.
12905         * gimplify.c (gimplify_modify_expr): Set location for GIMPLE_ASSIGNs
12906         created.
12907         * c-parser.c (c_parser_binary_expression): Use current column while
12908         building binary operations.
12909         * common.opt (fshow-column): Enable by default.
12910         * tree-vrp.c (check_array_ref): Use warning_at.
12911         (check_array_bounds): Use location from call back if expr has no
12912         location.
12913         * tree.h: Add location argument to maybe_fold_*.
12914         * tree-ssa-ccp.c (ccp_fold): Pass location to maybe_fold_*.
12915         (maybe_fold_offset_to_array_ref): Add location argument and use it.
12916         (maybe_fold_offset_to_component_ref): Same.
12917         (maybe_fold_offset_to_reference): Same.
12918         (maybe_fold_offset_to_address): Same.
12919         (maybe_fold_stmt_indirect): Same.
12920         (maybe_fold_stmt_addition): Same.
12921         (fold_stmt_r): Pass location to maybe_fold_*.
12922         (fold_gimple_assign): Same.
12923         * c-tree.h: Add location argument to finish_decl,
12924         default_function_array_conversion, store_init_value.
12925         * c-decl.c (define_label): Use error_at.
12926         (c_make_fname_decl): Pass location to finish_decl.
12927         (finish_decl): New location argument.
12928         (build_compound_literal): Pass location to store_init_value.
12929         (grokdeclarator): Pass location to finish_decl.
12930         (grokfield): Same.
12931         * c-typeck.c (array_to_pointer_conversion): New location argument.
12932         (function_to_pointer_conversion): Same.
12933         (default_function_array_conversion): Same.
12934         (parser_build_unary_op): Pass location to overflow_warning.
12935         (parser_build_binary_op): Same.  Use warning_at.
12936         (build_unary_op): Pass location to array_to_pointer_conversion.
12937         (build_c_cast): Pass location to digest_init.
12938         (build_modify_expr): New location argument.
12939         (convert_for_assignment): Same.
12940         (store_init_value): Same.
12941         (digest_init): Same.
12942         (output_init_element): Pass location to digest_init and
12943         array_to_pointer_conversion.
12944         (c_finish_return): Pass location to convert_for_assignment.
12945         * gimplify.c (gimplify_conversion): Pass location to
12946         maybe_fold_offset_to_address.
12947         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Pass location
12948         to maybe_fold_stmt_addition.
12949         * c-omp.c (c_finish_omp_atomic): Pass new location to
12950         build_modify_expr.
12951         (c_finish_omp_for): Same.
12952         * c-common.c (overflow_warning): New argument.
12953         * c-common.h: New argument to build_modify_expr, overflow_warning.
12954         * c-parser.c (c_parser_declaration_or_fndef): Pass location to
12955         finish_decl.
12956         (c_parser_initializer): Pass location to
12957         default_function_array_conversion.
12958         (c_parser_initelt): Same.
12959         (c_parser_initval): Same.
12960         (c_parser_asm_operands): Same.
12961         (c_parser_expr_no_commas): Same.  Pass location to build_modify_expr.
12962         (c_parser_conditional_expression): Same.
12963         (c_parser_binary_expression): Add location info to stack.  Use it.
12964         (c_parser_unary_expression): Pass location to
12965         default_function_array_conversion, parser_build_unary_op,
12966         build_indirect_ref, c_parser_postfix_expression_after_primary.
12967         (c_parser_postfix_expression_after_primary): New location argument.
12968         Use it.
12969         (c_parser_expression_conv): Pass location to
12970         default_function_array_conversion.
12971         (c_parser_expr_list): Same.
12972         (c_parser_omp_atomic): Same.
12973         (c_parser_omp_for_loop): Same.
12974         * c-tree.h: (struct c_declarator): Add comment to id_loc.
12975         (build_array_declarator): New argument.
12976         * c-decl.c (build_array_declarator): Add location argument.
12977         (grokdeclarator): Set id_loc for cdk_array.
12978         * c-parser.c (c_parser_direct_declarator_inner): Pass location to
12979         build_array_declarator.
12980         * tree.c (build_omp_clause): Add location argument.
12981         * tree.h (OMP_CLAUSE_HAS_LOCATION): New macro.
12982         (OMP_CLAUSE_LOCATION): New macro.
12983         (struct tree_omp_clause): Add location field.
12984         (build_omp_clause): Add argument.
12985         * testsuite/gcc.dg/gomp/for-1.c: Fix column.
12986         * cp/pt.c (tsubst_omp_for_iterator): Pass location to
12987         build_omp_clause.
12988         * cp/parser.c (cp_parser_omp_var_list_no_open): Same.
12989         (cp_parser_omp_clause_collapse): Same.
12990         (cp_parser_omp_clause_default): Same.
12991         (cp_parser_omp_clause_if): Same.
12992         (cp_parser_omp_clause_nowait): Same.
12993         (cp_parser_omp_clause_num_threads): Same.
12994         (cp_parser_omp_clause_ordered): Same.
12995         (cp_parser_omp_clause_schedule): Same.
12996         (cp_parser_omp_clause_untied): Same.
12997         (cp_parser_omp_for_loop): Same.
12998         (cp_parser_omp_parallel): Pass location to c_split_parallel_clauses.
12999         * c-tree.h (c_start_case): Add location argument.
13000         (c_process_expr_stmt): Same.
13001         (c_finish_goto_*): Same.
13002         * tree-parloops.c (initialize_reductions): Pass location to
13003         build_omp_clause.
13004         (create_parallel_loop): Same.
13005         * fortran/trans-openmp.c (gfc_trans_omp_variable_list): Same.
13006         (gfc_trans_omp_reduction_list): Same.
13007         (gfc_trans_omp_clauses): Same.
13008         (gfc_trans_omp_do): Same.
13009         * c-typeck.c (c_finish_goto_label): Same.
13010         (c_finish_goto_ptr): New location argument.
13011         (c_start_case): Same.
13012         (emit_side_effect_warnings): Same.
13013         (c_process_expr_stmt): Same.
13014         (c_finish_stmt_expr): Same.
13015         (c_finish_omp_clauses): Use error_at instead of error.
13016         * gimplify.c (gimplify_adjust_omp_clauses_1): Pass location to
13017         build_omp_clause.
13018         * c-omp.c (c_split_parallel_clauses): New location argument.
13019         * tree-nested.c (convert_nonlocal_reference_stmt): Pass location
13020         to build_omp_clause.
13021         (convert_local_reference_stmt): Same.
13022         (convert_gimple_call): Same.
13023         * c-common.h (c_split_parallel_clauses): New argument.
13024         * c-parser.c (c_parser_statement_after_labels): Pass location to
13025         c_finish_goto_label.
13026         (c_parser_switch_statement): Pass location to c_start_case.
13027         (c_parser_for_statement): Pass location to c_finish_expr_stmt,
13028         and c_process_expr_stmt.
13029         (c_parser_omp_variable_list): Add location argument.
13030         (c_parser_omp_clause_collapse): Pass location to build_omp_clause.
13031         (c_parser_omp_clause_default): Same.
13032         (c_parser_omp_clause_if): Same.
13033         (c_parser_omp_clause_num_threads): Same.
13034         (-c_parser_omp_clause_ordered): Same.
13035         (c_parser_omp_clause_reduction): Pass location to
13036         c_parser_omp_variable_list.
13037         (c_parser_omp_clause_schedule): Pass location to build_omp_clause.
13038         (c_parser_omp_clause_untied): Same.
13039         (c_parser_omp_for_loop): Pass location to c_process_expr_stmt.
13040         (c_parser_omp_parallel): Pass location to c_split_parallel_clauses.
13041
13042         * c-tree.h (check_for_loop_decls, undeclared_variable,
13043         build_component_ref, build_array_ref, build_external_ref,
13044         c_expr_sizeof_expr, c_expr_sizeof_type, parser_build_unary_op,
13045         build_conditional_expr, build_compound_expr, c_cast_expr,
13046         build_c_cast, build_asm_expr, c_end_compound_stmt, c_finish_stmt_expr,
13047         c_finish_return, c_finish_omp_parallel, c_finish_omp_task): New
13048         argument.
13049         * c-semantics.c (build_stmt): Same.
13050         (build_case_label): Same.
13051         * c-decl.c (c_finish_incomplete_decl): Pass location on down.
13052         (undeclared_variable): New argument.
13053         (make_label): Same.
13054         (lookup_label): Pass location on down.
13055         (define_label): Same.
13056         (finish_decl): Same.
13057         (build_compound_literal): Same.
13058         (finish_struct): Same.
13059         (finish_function): Do not set location here.
13060         (check_for_loop_decls): New argument.
13061         * tree.c (save_expr): Set location.
13062         (build_empty_stmt): New argument.
13063         * tree.h (build_empty_stmt): New argument to build_empty_stmt.
13064         (CAN_HAVE_LOCATION_P): Make sure we have a non empty node.
13065         * builtins.c (gimplify_va_arg_expr): Use locations.
13066         (expand_builtin_sync_operation): Same.
13067         * c-typeck.c (build_component_ref): New argument.
13068         (build_array_ref): Same.
13069         (build_external_ref): Same.
13070         (c_expr_sizeof_expr): Same.
13071         (c_expr_sizeof_type): Same.
13072         (parser_build_unary_op): Same.
13073         (build_conditional_expr): Same.
13074         (build_compound_expr): Pass location on down.
13075         (build_compound_expr): New argument.
13076         (build_c_cast): Same.
13077         (c_cast_expr): Same.
13078         (build_asm_expr): Same.
13079         (c_finish_return): Same.
13080         (c_process_expr_stmt): Pass location on down.
13081         (c_finish_stmt_expr): New argument.
13082         (push_clenaup): Same.
13083         (c_finish_omp_parallel): Same.
13084         (c_finish_omp_task): Same.
13085         * gimplify.c (gimplify_call_expr): Pass location on down.
13086         * c-omp.c (c_finish_omp_master): New argument.
13087         (c_finish_omp_critical): Same.
13088         (c_finish_omp_ordered): Same.
13089         (c_finish_omp_barrier): Same.
13090         (-c_finish_omp_taskwait): Same.
13091         (c_finish_omp_atomic): Same.
13092         (c_finish_omp_flush): Same.
13093         * tree-inline.c (copy_tree_body_r): Pass location on down.
13094         (inline_forbidden_p): Remove use of input_location.
13095         * c-gimplify.c (c_build_bind_expr): New argument.
13096         * c-common.c (c_common_truthvalue_conversion): Pass location on down.
13097         (c_sizeof_or_alignof_type): New argument.
13098         (c_alignof_expr): Same.
13099         (build_va_arg): Same.
13100         (c_add_case_label): Same.
13101         * c-common.h (c_sizeof_or_alignof_type, c_alignof_expr,
13102         c_sizeof, c_alignof, build_va_arg, build_stmt, build_case_label,
13103         c_build_bind_expr, objc_build_selector_expr, objc_build_throw_stmt,
13104         c_finish_omp_master, c_finish_omp_critical, c_finish_omp_ordered,
13105         c_finish_omp_barrier, c_finish_omp_atomic, c_finish_omp_flush,
13106         c_finish_omp_taskwait, c_finish_omp_for, c_split_parallel_clauses):
13107         New argument.
13108         * stub-objc.c (objc_build_selector_expr): Same.
13109         (objc_build_throw_stmt): Same.
13110         * c-parser.c (c_parser_declaration_or_fndef): Pass location on down.
13111         (c_parser_initelt): Same.
13112         (c_parser_compound_statement): Same.
13113         (c_parser_compound_statement_nostart): Same.
13114         (c_parser_label): Same.
13115         (c_parser_statement_after_labels): Same.
13116         (c_parser_if_body): Same.
13117         (c_parser_else_body): Same.
13118         (c_parser_if_statement): Same.
13119         (c_parser_switch_statement): Same.
13120         (c_parser_while_statement): Same.
13121         (c_parser_do_statement): Same.
13122         (c_parser_for_statement): Same.
13123         (c_parser_asm_statement): Same.
13124         (c_parser_conditional_expression): Same.
13125         (c_parser_binary_expression): Same.
13126         (c_parser_cast_expression): Same.
13127         (c_parser_unary_expression): Same.
13128         (c_parser_sizeof_expression): Same.
13129         (c_parser_alignof_expression): Same.
13130         (c_parser_postfix_expression): Same.
13131         (c_parser_expression): Same.
13132         (c_parser_objc_receiver): Same.
13133         (c_parser_omp_variable_list): Same.
13134         (c_parser_omp_structured_block): Same.
13135         (c_parser_omp_atomic): New argument.
13136         (c_parser_omp_barrier): Same.
13137         (c_parser_omp_critical): Same.
13138         (c_parser_omp_flush): Pass location on down.
13139         (c_parser_omp_for_loop): New argument.
13140         (c_parser_omp_for): Same.
13141         (c_parser_omp_master): Same.
13142         (c_parser_omp_ordered): Same.
13143         (c_parser_omp_sections_scope): Same.
13144         (c_parser_omp_sections): Same.
13145         (c_parser_omp_parallel): Same.
13146         (c_parser_omp_single): Same.
13147         (c_parser_omp_task): Same.
13148         (c_parser_omp_taskwait): Pass location on down.
13149         (c_parser_omp_construct): Same.
13150         (c_parser_omp_threadprivate): Same.
13151         * dwarf2asm.c, targhooks.c, optabs.c, tree.c, tree.h, target.h,
13152         builtins.c, omp-low.c, cgraphunit.c, tree-call-cdce.c,
13153         tree-ssa-alias.c, gimple-low.c, c-tree.h, expr.c, tree-parloops.c,
13154         c-decl.c, tree-eh.c, langhooks.c, function.c, stor-layout.c,
13155         c-typeck.c, gimplify.c, c-pragma.c, expmed.c, except.c, coverage.c,
13156         emit-rtl.c, cfgexpand.c, tree-mudflap.c, varasm.c, tree-nested.c,
13157         rtl.h, tree-inline.c, tree-profile.c, c-common.c, c-common.h,
13158         tree-switch-conversion.c, tree-cfg.c, ipa-struct-reorg.c, c-parser.c,
13159         config/i386/i386.c, stmt.c:
13160         Add location argument to the following function definitions and/or
13161         function calls: build_decl, objcp_start_struct, objcp_finish_struct,
13162         start_struct, finish_struct, PUSH_FIELD, create_artificial_label,
13163         cp_make_fname_decl, pushtag, implicitly_declare, c_make_fname_decl,
13164         build_compound_literal, parser_xref_tag, resolve_overloaded_builtin,
13165         do_case, c_finish_bc_stmt, build_compound_literal,
13166         build_function_call.
13167         * c-decl.c (build_compound_literal): Add location argument.
13168         Make all diagnostic calls use location.
13169         (start_struct): Same.
13170         (finish_struct): Same.
13171         (start_enum): Same.
13172         (build_enumerator): Same.
13173         (start_function): Same.
13174         (grokdeclarator): Make all diagnostic calls use location.
13175         (store_parm_decls_oldstyle): Same.
13176         * c-typeck.c (build_function_call): Add location argument.
13177         Make all diagnostic calls use location.
13178         (do_case): Same.
13179         (c_finish_bc_stmt): Same.
13180         * tree-nested.c (get_trampoline_type): Add argument.
13181         Pass location to build_decl.
13182         (lookup_tramp_for_decl): Pass location to get_trampoline_type.
13183         * rtl.h (RTL_LOCATION): New.
13184         * c-common.c (c_add_case_label): Add location argument.
13185         Make all diagnostic calls use location.
13186         * c-common.h: Add location argument to make_fname_decl, do_case,
13187         c_add_case_label, build_function_call, resolve_overloaded_builtin.
13188         * c-parser.c (c_parser_enum_specifier): Rename ident_loc to enum_loc.
13189         Set it appropriately for every case.  Pass enum_loc to start_enum
13190         call.  Pass value_loc first to build_enumerator.  Pass enum_loc to
13191         parser_xref_tag.
13192         (c_parser_struct_or_union_specifier): Save location.  Use it for
13193         start_struct, finish_struct, and parser_xref_tag.
13194
13195 2009-06-12  Ian Lance Taylor  <iant@google.com>
13196
13197         * fold-const.c (fold_unary): Rename local variable and to and_expr.
13198
13199         * c-opts.c (c_common_handle_option): For -Wc++-compat set
13200         cpp_opts->warn_cxx_operator_names.
13201
13202 2009-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13203
13204         PR tree-opt/38865
13205         * tree-ssa-sccvn.c (visit_reference_op_load): If vn_reference_lookup
13206         is returns NULL and OP is a VCE, look through the VCE.
13207
13208 2009-06-12  Ian Lance Taylor  <iant@google.com>
13209
13210         PR bootstrap/40430
13211         * collect2.c (main): Use CONST_CAST2 in code inside #if
13212         LINK_ELIMINATE_DUPLICATE_LDIRECTORIES.
13213
13214 2009-06-12  Joey Ye  <joey.ye@intel.com>
13215
13216         PR middle-end/39146
13217         * cfgexpand.c (get_decl_align_unit): Update
13218         max_used_stack_slot_alignment with align instead of
13219         stack_alignment_needed.
13220
13221         * function.c (assign_stack_local_1): Update
13222         max_used_stack_slot_alignment with alignment_in_bits instead
13223         of stack_alignment_needed.
13224         (locate_and_pad_parm): Don't update max_used_stack_slot_alignment
13225         here.
13226
13227 2009-06-12  Jakub Jelinek  <jakub@redhat.com>
13228
13229         * dwarf2out.c (last_var_location_insn): New variable.
13230         (dwarf2out_end_epilogue): Clear last_var_location_insn.
13231         (dwarf2out_var_location): Don't record anything after last real
13232         insn.  Only change labels if there were any real instructions
13233         in between last note and this one, or if changed sections.
13234
13235 2009-06-11  Richard Henderson  <rth@redhat.com>
13236
13237         * alpha.c (alpha_expand_prologue): Add a REF_CFA_REGISTER
13238         note when storing the frame pointer in a register.
13239         (FRP): Don't redefine to nothing for epilogue.
13240         (alpha_expand_epilogue): Mark register and sp restores.
13241         (unicosmk_gen_dsib): Don't mark weird frame pointer adjust.
13242
13243         * config/alpha/alpha.c (alpha_emit_setcc): Fix test for
13244         when gen_lowpart is needed.
13245
13246 2009-06-11  Richard Henderson  <rth@redhat.com>
13247
13248         * dwarf2out.c (def_cfa_1): Likewise for DW_CFA_cfa_offset.
13249
13250         * dwarf2out.c (need_data_align_sf_opcode): New.
13251         (div_data_align): Move earlier.
13252         (def_cfa_1, reg_save): Use it.
13253
13254 2009-06-11  H.J. Lu  <hongjiu.lu@intel.com>
13255
13256         * config/i386/i386.c (OPTION_MASK_ISA_CRC32_SET): New.
13257         (OPTION_MASK_ISA_CRC32_UNSET): Likewise.
13258         (ix86_handle_option): Handle OPT_mcrc32.
13259         (ix86_target_string): Add -mcrc32.
13260         (bdesc_args): Enable crc32 builtins with OPTION_MASK_ISA_CRC32.
13261
13262         * config/i386/i386.h (TARGET_CRC32): New.
13263
13264         * config/i386/i386.md (sse4_2_crc32<mode>): Also check TARGET_CRC32.
13265         (sse4_2_crc32di): Likewise.
13266
13267         * config/i386/i386.opt (mcrc32): New.
13268
13269         * doc/invoke.texi: Document -mcrc32.
13270
13271 2009-06-11  Richard Henderson  <rth@redhat.com>
13272
13273         * common.opt (gdwarf-): Accept a version number.
13274         * doc/invoke.texi (gdwarf-): Update docs.
13275         * opth-gen.awk: Special case -gdwarf+ to OPT_gdwarfplus.
13276         * opts.c (common_handle_option) [OPT_gdwarf_]: Verify dwarf
13277         version level, and record it.
13278
13279         * dwarf2.h (DW_CIE_VERSION): Remove.
13280         * dwarf2out.c (DWARF_VERSION): Remove.
13281         (add_fde_cfi): Skip DW_CFA_set_loc addition for dwarf3.
13282         (output_call_frame_info): Use CIE version 3 for dwarf3,
13283         or if the return register column is out of range for version 1.
13284         (dwarf_stack_op_name): Add all dwarf3 values.
13285         (DEBUG_PUBTYPES_SECTION): New.
13286         (size_of_die) [dw_val_class_die_ref]: Handle DW_FORM_ref_addr
13287         encoding change for dwarf3.
13288         (output_die) [dw_val_class_die_ref]: Likewise.
13289         (output_compilation_unit_header): Emit correct version for dwarf3.
13290         (output_line_info): Likewise.
13291         (output_pubnames): Update for DWARF_VERSION removal.
13292         (output_aranges): Likewise.
13293         (gen_subprogram_die): Emit DW_OP_call_frame_cfa if emitting dwarf3.
13294         (dwarf2out_init): Don't ifdef DEBUG_PUBTYPES_SECTION.
13295         (dwarf2out_finish): Likewise.
13296
13297 2009-06-11  David Daney  <ddaney@caviumnetworks.com>
13298
13299         * system.h (gcc_assert, gcc_unreachable): Revert accidental commit
13300         in r148403.
13301
13302 2009-06-11  David Daney  <ddaney@caviumnetworks.com>
13303
13304         PR c/39252
13305         * doc/extend.texi ( __builtin_unreachable): Document new builtin.
13306         * builtins.c (expand_builtin_unreachable): New function.
13307         (expand_builtin): Handle BUILT_IN_UNREACHABLE case.
13308         * builtins.def (BUILT_IN_UNREACHABLE): Add new builtin.
13309         * cfgcleanup.c (try_optimize_cfg): Delete empty blocks with no
13310         successors.
13311         * cfgrtl.c (rtl_verify_flow_info): Handle empty blocks when
13312         searching for missing barriers.
13313
13314 2009-06-11  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
13315
13316         * config/darwin.h (LINK_COMMAND_SPEC): Adjust spec to link libcov
13317         when -fprofile-generate* was passed.
13318         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
13319
13320 2009-06-11  Anthony Green  <green@moxielogic.com>
13321
13322         * config/moxie/moxie.md: Define length attribute for all instructions.
13323         (rCC): Define.
13324         (*b<cond:code>): Support limited branch ranges for new PC-relative
13325         branch instructions.
13326         * config/moxie/moxie.h (HAS_LONG_UNCOND_BRANCH): Define.
13327
13328 2009-06-11  Jakub Jelinek  <jakub@redhat.com>
13329
13330         * config/i386/i386.c (min_insn_size): Use get_attr_length
13331         for normal insns other than TYPE_MULTI, TYPE_OTHER and TYPE_FCMP.
13332         For __asm return 0.
13333
13334         * config/i386/i386.c (ix86_pad_returns): Use emit_jump_insn_before
13335         instead of emit_insn_before.
13336
13337 2009-06-10  Ian Lance Taylor  <iant@google.com>
13338
13339         PR bootstrap/40408
13340         * graphite.c (add_conditions_to_domain): Change SWITCH_EXPR to
13341         GIMPLE_SWITCH.
13342
13343 2009-06-10  Revital Eres  <eres@il.ibm.com>
13344
13345         * passes.c (init_optimization_passes): Reschedule
13346         predictive-commoning pass before complete unroll pass.
13347
13348 2009-06-10  Martin Jambor  <mjambor@suse.cz>
13349
13350         * cgraph.c (cgraph_node_can_be_local_p): New function.
13351         (cgraph_make_node_local): New function.
13352         * cgraph.h (cgraph_node_can_be_local_p): Declare.
13353         (cgraph_make_node_local): Declare.
13354
13355 2009-06-10  Nathan Froyd  <froydnj@codesourcery.com>
13356
13357         * tree.h (tree_base): Add packed_flag and user_align fields.
13358         Decrease size of spare field.
13359         (TYPE_USER_ALIGN): Use user_align from tree_base.
13360         (DECL_USER_ALIGN): Likewise.
13361         (TYPE_PACKED): Use packed_flag from tree_base.
13362         (DECL_PACKED): Likewise.
13363         (tree_type): Delete packed_flag and user_align fields.  Widen
13364         precision field.  Widen mode field and shuffle fields to align
13365         mode on an 8-bit boundary.
13366         (tree_decl_common): Delete decl_flag_1 and user_align fields.
13367         Renumber decl_flag_* fields.  Fix comments.  Widen
13368         decl_common_unused field.
13369         (DECL_HAS_VALUE_EXPR_P): Adjust for renumbering of decl_flag_* fields.
13370         (DECL_EXTERNAL): Likewise.
13371         (DECL_BIT_FIELD): Likewise.
13372         (DECL_NONADDRESSABLE_P): Likewise.
13373         (TYPE_DECL_SUPRESS_DEBUG): Likewise.
13374         * config/arm/arm-modes.def (XImode): Make it an INT_MODE.
13375
13376 2009-06-10  Ian Lance Taylor  <iant@google.com>
13377
13378         * vec.h (DEF_VEC_ALLOC_I): Use DEF_VEC_NONALLOC_FUNCS_I.
13379         (DEF_VEC_ALLOC_P): Use DEF_VEC_NONALLOC_FUNCS_P.
13380         (DEF_VEC_ALLOC_O): Use DEF_VEC_NONALLOC_FUNCS_O.
13381         (DEF_VEC_ALLOC_FUNC_P): Only define VEC_OP (T,A,alloc).
13382         (DEF_VEC_NONALLOC_FUNCS_P): New macro, broken out of old
13383         DEF_VEC_ALLOC_FUNC_P.
13384         (DEF_VEC_ALLOC_FUNC_O): Only define VEC_OP (T,A,alloc).
13385         (DEF_VEC_NONALLOC_FUNCS_O): New macro, broken out of old
13386         DEF_VEC_ALLOC_FUNC_O.
13387         (DEF_VEC_ALLOC_FUNC_I): Only define VEC_OP (T,A,alloc).
13388         (DEF_VEC_NONALLOC_FUNCS_I): New macro, broken out of old
13389         DEF_VEC_ALLOC_FUNC_I.
13390         (vec_stack_p_reserve, vec_stack_p_reserve_exact): Declare.
13391         (vec_stack_p_reserve_exact_1): Declare.
13392         (vec_stack_o_reserve, vec_stack_o_reserve_exact): Declare.
13393         (vec_stack_free): Declare.
13394         (VEC_stack_alloc): Define.
13395         (DEF_VEC_ALLOC_P_STACK, DEF_VEC_ALLOC_FUNC_P_STACK): Define.
13396         (DEF_VEC_ALLOC_O_STACK, DEF_VEC_ALLOC_FUNC_O_STACK): Define.
13397         (DEF_VEC_ALLOC_I_STACK, DEF_VEC_ALLOC_FUNC_I_STACK): Define.
13398         * vec.c (void_p): New type.  Call DEF_VEC_P and DEF_VEC_ALLOC_P
13399         for void_p.
13400         (stack_vecs): New static variable.
13401         (vec_stack_p_reserve_exact_1): New function.
13402         (vec_stack_o_reserve_1): New static function.
13403         (vec_stack_p_reserve, vec_stack_p_reserve_exact): New functions.
13404         (vec_stack_o_reserve, vec_stack_o_reserve_exact): New functions.
13405         (vec_stack_free): New function.
13406         * df-scan.c (df_ref): Use DEF_VEC_P and DEF_VEC_ALLOC_P_STACK.
13407         (VEC_df_ref_stack_alloc): Define.
13408         (df_mw_hardreg_ptr): New type.  Use DEF_VEC_P and
13409         DEF_VEC_ALLOC_P_STACK.
13410         (VEC_df_mw_hardreg_ptr_stack_alloc): Define.
13411         (struct df_collection_rec): Change _vec fields to VEC.  Remove
13412         _use fields.
13413         (df_free_collection_rec): Adjust for new fields.
13414         (df_insn_rescan): Use new df_collection_rec fields.
13415         (df_notes_rescan, df_canonize_collection_rec): Likewise.
13416         (df_ref_create_structure, df_ref_record): Likewise.
13417         (df_get_conditional_uses, df_get_call_refs): Likewise.
13418         (df_insn_refs_collect, df_bb_refs_collect): Likewise.
13419         (df_bb_refs_record, df_record_entry_block_defs): Likewise.
13420         (df_record_exit_block_uses, df_bb_verify): Likewise.
13421         (df_swap_refs): Change ref_vec parameter to VEC.  Change all callers.
13422         (df_sort_and_compress_refs): Change ref_vec parameter to VEC.
13423         Remove count parameter.  Change return type to void.  Change all
13424         callers.
13425         (df_sort_and_compress_mws): Change mw_vec parameter to VEC.
13426         Remove count parameter.  Change return type to void.  Change all
13427         callers.
13428         (df_install_refs): Change old_vec parameter to VEC.  Remove count
13429         parameter.  Change all callers.
13430         (df_install_mws): Change old_vec parameter to VEC.  Remove count
13431         parameter.  Change all callers.
13432         (df_refs_verify): Change new_rec parameter to VEC.  Change call
13433         callers.
13434         (df_mws_verify): Likewise.
13435
13436 2009-06-10  Alexandre Oliva  <aoliva@redhat.com>
13437
13438         * gcc.c (compare_files): Cast munmap argumento to caddr_t.
13439
13440 2009-06-10  H.J. Lu  <hongjiu.lu@intel.com>
13441
13442         * doc/extend.texi: Add description for __builtin_ia32_crc32di.
13443
13444 2009-06-10  Anthony Green  <green@moxielogic.com>
13445
13446         * config/moxie/crti.asm: New file.
13447         * config/moxie/crtn.asm: New file.
13448         * config/moxie/moxie.c: New file.
13449         * config/moxie/moxie.h: New file.
13450         * config/moxie/sfp-machine.h: New file.
13451         * config/moxie/moxie-protos.h: New file.
13452         * config/moxie/t-moxie: Created.
13453         * config/moxie/t-moxie-softfp: Created.
13454         * config/moxie/moxie.md: Created.
13455         * config/moxie/constraints.md: Created.
13456         * config.gcc: Add moxie support.
13457         * doc/md.texi (Machine Constraints): Add moxie constraints.
13458         * doc/contrib.texi (Contributors): Mention moxie port.
13459         * doc/install.texi (Specific): Mention the moxie port.
13460
13461 2009-06-09  Ian Lance Taylor  <iant@google.com>
13462
13463         * system.h (HAVE_DESIGNATED_INITIALIZERS): Don't define if
13464         compiling with C++.
13465         * optabs.c (optab_table): Only use designated initializers if
13466         HAVE_DESIGNATED_INITIALIZERS is defined.
13467         (convert_optab_table): Likewise.
13468         (init_optabs): Always call init_insn_codes if
13469         HAVE_DESIGNATED_INITIALIZERS is not defined.
13470
13471 2009-06-09  Ian Lance Taylor  <iant@google.com>
13472
13473         * targhooks.c (default_builtin_vectorized_function): Change fn
13474         parameter to unsigned int.
13475         (default_builtin_vectorized_conversion): Change code parameter to
13476         unsigned int.
13477         (default_builtin_reciprocal): Change fn parameter to unsigned int.
13478         * targhooks.h: Update declarations.
13479         * config/rs6000/rs6000.c (rs6000_builtin_conversion): Change code
13480         parameter to unsigned int.
13481
13482         * c-typeck.c (comptypes_check_enum_int): New static function.
13483         (comptypes_internal): Add enum_and_int_p parameter.  Change all
13484         callers.
13485         (comp_target_types): Add location parameter.  Change all callers.
13486         (tagged_types_tu_compatible_p): Add enum_and_int_p parameter.
13487         Change all callers.
13488         (function_types_compatible_p, type_lists_compatible_p): Likewise.
13489         (build_conditional_expr): Add colon_loc parameter.  Change all
13490         callers.
13491         (convert_for_assignment): Add location parameter.  Change all callers.
13492         * c-parser.c (c_parser_conditional_expression): Pass location of
13493         colon to build_conditional_expr.
13494         * c-tree.h (build_conditional_expr): Update declaration.
13495
13496 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
13497
13498         * graphite.c: Revert previous patch.
13499
13500 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
13501
13502         PR bootstrap/40103
13503         * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
13504
13505 2009-06-09  Ghassan Shobaki  <ghassan.shobaki@amd.com>
13506
13507         * tree-ssa-loop-prefetch.c
13508         (loop_prefetch_arrays): Fixed a portability problem in printf format
13509         string.
13510
13511 2009-06-09  Martin Jambor  <mjambor@suse.cz>
13512
13513         PR tree-optimization/40351
13514         * tree-sra.c (propagate_subacesses_accross_link): Check that a
13515         refrence to a potential artifical subaccess can be constructed.
13516
13517 2009-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
13518
13519         * config/sh/sh-protos.h (sh_optimization_options): Declare.
13520         (sh_override_options): Likewise.
13521         * config/sh/sh.c: Include params.h.
13522         (sh_optimization_options): New.
13523         (sh_override_options): Likewise.
13524         * config/sh/sh.c (OPTIMIZATION_OPTIONS): Use sh_optimization_options.
13525         (OVERRIDE_OPTIONS): Use sh_override_options.
13526
13527 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
13528
13529         * dwarf2out.c (emit_cfa_remember): New variable.
13530         (add_fde_cfi): If emit_cfa_remember, recurse to add
13531         DW_CFA_remember_state first.
13532         (dwarf2out_begin_epilogue): Don't add_fde_cfi DW_CFA_remember_state,
13533         instead just set emit_cfa_remember.
13534
13535 2009-06-08  Jan Hubicka  <jh@suse.cz>
13536
13537         PR debug/40126
13538         * dwarf2out.c (dwarf2out_abstract_function): Free decl_loc_table.
13539
13540 2009-06-08  Jan Hubicka  <jh@suse.cz>
13541
13542         PR middle-end/39834
13543         * cgraphunit.c (save_inline_function_body): Do not copy transform
13544         hooks for saved inline bodies.
13545         * ipa-passes.c (do_per_function): Do not add the hoks multiple times
13546         for given function.
13547
13548 2009-06-08  Adam Nemet  <anemet@caviumnetworks.com>
13549
13550         * jump.c (returnjump_p): Handle delayed branches.  Add missing
13551         function comment.
13552
13553 2009-06-08  Jan Hubicka  <jh@suse.cz>
13554
13555         PR middle-end/40102
13556         * cgraph.c (cgraph_create_edge_including_clones): Also asume that the
13557         original node might've been modified.
13558         * tree-inline.c (copy_bb): Do not assume that all clones are the same.
13559
13560 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
13561
13562         * tree-object-size.c (addr_object_size): Add OSI argument.
13563         Handle also INDIRECT_REF with SSA_NAME inside of it as base address.
13564         (compute_builtin_object_size, expr_object_size): Adjust callers.
13565         (plus_stmt_object_size): Call addr_object_size instead of
13566         compute_builtin_object_size.
13567
13568 2009-06-08  Ghassan Shobaki  <ghassan.shobaki@amd.com>
13569             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
13570
13571         * tree-ssa-loop-prefetch.c
13572         (gather_memory_references): Introduced a counter for the number of
13573         memory references.
13574         (anything_to_prefetch_p): Introduced a counter for the number of
13575         prefetches.
13576         (is_loop_prefetching_profitable): New function with a cost model
13577         for prefetching.
13578         (loop_prefetch_arrays): Use the new cost model to determine if
13579         prefetching is profitable.
13580         * params.def (MIN_INSN_TO_PREFETCH_RATIO,
13581         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
13582         * params.h (MIN_INSN_TO_PREFETCH_RATIO,
13583         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
13584         * doc/invoke.texi (MIN_INSN_TO_PREFETCT_RATIO,
13585         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
13586
13587 2009-06-08  Michael Matz  <matz@suse.de>
13588
13589         PR debug/40012
13590         * cfgexpand.c (set_rtl): Store place also in DECL_RTL, if all
13591         partitions use the same.
13592         (expand_one_var): Deal with DECL_RTL sometimes begin set also
13593         for basevars of SSA_NAMEs.
13594         (expand_used_vars): Reset TREE_USED for basevars of SSA_NAMEs,
13595         to not expand them twice.
13596         (gimple_expand_cfg): Clear DECL_RTL for those decls that have
13597         multiple places.
13598
13599 2009-06-08  Alexandre Oliva  <aoliva@redhat.com>
13600
13601         * common.opt (fcompare-debug=, fcompare-debug-second): New.
13602         (fdump-final-insns=, gtoggle): New.
13603         * doc/invoke.texi: Document them.
13604         * final.c (rest_of_clean_state): Dump final insn stream.
13605         * gcc.c (invoke_as): Hook in -fcompare-debug.
13606         (static_spec_functions): Add compare-debug-dump-opt,
13607         compare-debug-self-opt and compare-debug-auxbase-opt.
13608         (compare_debug, compare_debug_second, compare_debug_opt): New.
13609         (switches_debug_check, n_switches_debug_check): New.
13610         (debug_auxbase_opt, debug_check_temp_file): New.
13611         (process_command): Handle -fno-compare-debug, -fcompare-debug and
13612         -fcompare-debug=*.
13613         (do_self_spec): Handle arguments after switches.
13614         (do_spec_1): Add .gk extension to temp file basenames for compare.
13615         (check_live_switch): Take SWITCH_IGNORE into account, and earlier.
13616         (cc1_options): Use it instead of normal auxbase computation for
13617         the second compare-debug compilation.
13618         (compare_files): New.
13619         (main): Set up and implement compare debug mode.
13620         (compare_debug_dump_opt_spec_function): New.
13621         (compare_debug_self_opt_spec_function): New.
13622         (compare_debug_auxbase_opt_spec_function): New.
13623         * toplev.c (process_options): Handle flag_gtoggle,
13624         flag_dump_final_insns.
13625         * coverage.c (coverage_begin_output): Don't overwrite .gcno file
13626         during -fcompare-debug-second compilation.
13627
13628 2009-06-07  Ian Lance Taylor  <iant@google.com>
13629
13630         * dwarf2.h (enum dwarf_location_atom): Add INTERNAL_DW_OP_tls_addr.
13631         * dwarf2out.c (INTERNAL_DW_OP_tls_addr): Don't #define.
13632
13633         * c-common.c (c_do_switch_warnings): Don't exit early for -Wswitch
13634         with no default node.  Change warning with %H to warning_at.
13635         Don't clear warn_switch around case checking.
13636         * doc/invoke.texi (Warning Options): Clarify distinction between
13637         -Wswitch and -Wswitch-enum.
13638
13639 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
13640
13641         * tree-pass.h (TODO_update_ssa_any): Document internal use only.
13642
13643 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
13644
13645         * gbl-ctors.h: Add header guard.
13646
13647 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
13648
13649         * tree-flow.h (make_value_handle, set_value_handle, sort_vuses,
13650         sort_vuses_heap, vn_lookup_or_add, vn_lookup_or_add_with_stmt,
13651         vn_lookup_or_add_with_vuses, vn_add, vn_add_with_vuses,
13652         vn_lookup_with_stmt, vn_lookup, vn_lookup_with_vuses): Remove
13653         prototypes for removed functions.
13654         (expressions_equal_p): Move to ...
13655         * tree-ssa-sccvn.h: ... here and ...
13656         * matrix-reorg.c: ... adjust includes.
13657
13658 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
13659
13660         * ipa-struct-reorg.c (do_reorg_1): Fix whitespace in dump output.
13661
13662 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
13663
13664         * c-decl.c (finish_decl): Use bool for variable was_incomplete.
13665         (finish_function): Remove erroneous whitespace.
13666
13667 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
13668
13669         * tree-cfg.c (gimple_merge_blocks): Commentary typo fix.
13670         (verify_stmts): Print statement who's gimple_bb is set to a wrong BB
13671
13672 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
13673
13674         * errors.c (internal_error): Commentary typo fix.
13675         * gimple-iterator.c (gsi_insert_seq_on_edge): Ditto.
13676         * tree-ssa-pre.c: Ditto.
13677
13678 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
13679
13680         * basic-block.h (ENTRY_BLOCK, EXIT_BLOCK): Document that neither of
13681         them is supposed to hold actual statements.
13682
13683 2009-06-06  Ian Lance Taylor  <iant@google.com>
13684
13685         * doc/extend.texi (Attribute Syntax): Document that C++ labels on
13686         empty statements can now have attributes.
13687
13688 2009-06-05  Shujing Zhao  <pearly.zhao@oracle.com>
13689
13690         * config/mips/mips.c: Use REG_P and CONST_INT_P where applicable.
13691         * config/mips/mips.md: Ditto.
13692
13693 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
13694
13695         * config/rs6000/eabi.asm (__eabi_convert): Don't define if
13696         _RELOCATABLE.
13697         (__eabi_uconvert): Likewise.
13698
13699 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
13700
13701         * config/rs6000/ppc-asm.h: Protect auto-host.h inclusion and
13702         CFI_* definitions with IN_GCC.
13703
13704 2009-06-05  David Edelsohn  <edelsohn@gnu.org>
13705
13706         * xcoffout.h (xcoffout_source_line): Update prototype.
13707
13708 2009-06-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13709
13710         * builtins.c (do_mpc_ckconv, do_mpc_arg1): Use
13711         mpc_realref/mpc_imagref instead of MPC_RE/MPC_IM.
13712
13713 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
13714
13715         PR middle-end/40340
13716         * tree-ssa-live.c (remove_unused_scope_block_p): Don't prune
13717         inlined_function_outer_scope_p blocks for artificial inlines
13718         even at -g0/-g1.
13719         * tree.c (tree_nonartificial_location): Rewrite using
13720         block_nonartificial_location.
13721
13722 2009-06-05  Revital Eres  <eres@il.ibm.com>
13723             Leehod Baruch  <leehod@il.ibm.com>
13724
13725         * expr.c (expand_assignment): Expand MISALIGNED_INDIRECT_REF.
13726         (expand_expr_real_1): Remove comment.
13727         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
13728         Vectorize misaligned access when the target supports it.
13729         (vect_supportable_dr_alignment): Check for unaligned access support.
13730         * tree-vect-stmts.c (vectorizable_store): Generate misaligned store
13731         and remove asset.
13732
13733 2009-06-05  Julian Brown  <julian@codesourcery.com>
13734
13735         * config/arm/ieee754-df.S (cmpdf2): Avoid writing below SP.
13736         * config/arm/ieee754-sf.S (cmpsf2): Likewise.
13737
13738 2009-06-05  Richard Guenther  <rguenther@suse.de>
13739
13740         PR bootstrap/40350
13741         * dwarf2out.c (dwarf2out_begin_function): Mark discriminator
13742         as possibly unused.
13743
13744 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
13745
13746         * config/s390/s390.c (global_not_special_regno_p): New static inline.
13747         (save_gprs): Don't tell unwinder when a global register is saved.
13748         (s390_emit_epilogue): Emit needed epilogue unwind info.
13749
13750 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
13751
13752         * dwarf2out.c (deferred_asm_name): New.
13753         (add_name_and_src_coords_attributes): Defer creation of
13754         DW_AT_MIPS_linkage_name attribute if DECL_ASSEMBLER_NAME was not
13755         computed yet.
13756         (move_linkage_attr): New.
13757         (dwarf2out_finish): Revisit deferrals and emit attributes at the
13758         right place.
13759
13760 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
13761
13762         * tree-nested.c (finalize_nesting_tree_1): Declare the
13763         frame_decl in the binding tree.
13764
13765 2009-06-04  Cary Coutant  <ccoutant@google.com>
13766
13767         * basic-block.h (struct basic_block_def): Add discriminator field.
13768         * dbxout.c (dbxout_source_line): Add new parameter.  Change all
13769         callers.
13770         * debug.c (do_nothing_debug_hooks): Add additional entry.
13771         (debug_nothing_int_charstar_int): New function.
13772         * debug.h (struct gcc_debug_hooks): Add parameter to source_line hook.
13773         (debug_nothing_int_charstar_int): New declaration.
13774         * dwarf2out.c (dwarf2out_source_line): Add new parameter.  Write
13775         discriminator value in .loc directive.
13776         * final.c (last_discriminator): New variable.
13777         (discriminator): New variable.
13778         (final_start_function): Initialize above variables, pass current
13779         discriminator to debug hook.
13780         (notice_source_line): Check for discriminator change.
13781         * gimple-pretty-print.c (dump_bb_header): Print discriminator value.
13782         * sdbout.c (sdbout_source_line): New parameter.
13783         * tree-cfg.c (struct locus_discrim_map): New structure type.
13784         (discriminator_per_locus): New hash table.
13785         (build_gimple_cfg): Allocate and free discriminator hash table.
13786         (make_edges): Call assign_discriminator.
13787         (locus_map_hash): New function.
13788         (locus_map_eq): New function.
13789         (next_discriminator_for_locus): New function.
13790         (same_line_p): New function.
13791         (assign_discriminator): New function.
13792         (make_cond_expr_edges): Call assign_discriminator.
13793         (make_gimple_switch_edges): Likewise.
13794         (first_non_label_stmt): New function.
13795         * vmsdbgout.c (vmsdbgout_source_line): Add new parameter.  Change
13796         all callers.
13797         * xcoffout.c (xcoffout_source_line): Add new parameter.
13798
13799         * configure.ac (gcc_cv_as_discriminator): New configury check for
13800         gas support for discriminator.
13801         * configure: Regenerate.
13802         * config.in: Regenerate.
13803
13804 2009-06-04  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
13805
13806         * config/arm/arm.c (thumb2_legitimate_index_p): Initialize
13807         val after checking for integers.
13808
13809 2009-06-04  Uros Bizjak  <ubizjak@gmail.com>
13810
13811         * config/i386/i386.h (X86_64_MS_REGPARM_MAX): Rename from
13812         X64_REGPARM_MAX.
13813         (REGPARM_MAX): Use X86_64_MS_REGPARM_MAX.
13814         (X86_64_MS_SSE_REGPARM_MAX): Rename from X64_SSE_REGPARM_MAX.
13815         (SSE_REGPARM_MAX): Use X86_64_MS_SSE_REGPARM_MAX.
13816         * config/i386/i386.c: Use X86_64_MS_REGPARM_MAX instead of
13817         X64_REGPARM_MAX.  Use X86_64_MS_SSE_REGPARM_MAX instead of
13818         X64_SSE_REGPARM_MAX.
13819         * config/i386/i386.md: Use X86_64_MS_SSE_REGPARM_MAX instead of
13820         X64_SSE_REGPARM_MAX.
13821
13822 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
13823
13824         * gcc.c (report_times_to_file): New.
13825         (execute): Implement it.
13826         (process_command): Support -time=.
13827         * doc/invoke.texi: Document it.
13828
13829 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
13830
13831         * tree-ssa-live.c (remove_unused_scope_block_p): Keep variables
13832         that have value exprs.
13833
13834 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
13835
13836         * dwarf2asm.c (dw2_force_const_mem): Defer creation of
13837         declarations for constants until...
13838         (dw2_output_indirect_constant_1): ... this point.
13839
13840 2009-06-04  Richard Earnshaw  <rearnsha@arm.com>
13841
13842         PR target/10242
13843         * arm.md (arm_addsi3): Don't try to split an add with an
13844         eliminable register until after reload has completed.
13845
13846 2009-06-03  Ian Lance Taylor  <iant@google.com>
13847
13848         * dummy-checksum.c (executable_checksum): Use EXPORTED_CONST.
13849         * genattrtab.c (write_length_unit_log): Likewise.
13850         * genchecksum.c (dosum): Likewise.
13851         * gengtype.c (write_rtx_next): Likewise.
13852         (finish_root_table, write_roots): Likewise.
13853         * gimple.c (gimple_ops_offset_): Likewise.
13854         * tree-nomudflap.c (gt_ggc_r_gt_tree_mudflap_h): Likewise.
13855         * config/arc/arc.c (arc_attribute_table): Likewise.
13856         * config/arm/arm.c (arm_attribute_table): Likewise.
13857         * config/avr/avr.c (avr_attribute_table): Likewise.
13858         * config/crx/crx.c (crx_attribute_table): Likewise.
13859         * config/m32r/m32r.c (m32r_attribute_table): Likewise.
13860         * config/m68hc11/m68hc11.c (m68hc11_attribute_table): Likewise.
13861         * config/mcore/mcore.c (mcore_attribute_table): Likewise.
13862         * config/rs6000/rs6000.c (rs6000_attribute_table): Likewise.
13863         * config/sh/sh.c (sh_attribute_table): Likewise.
13864         * config/sparc/sparc.c (sparc_attribute_table): Likewise.
13865         * config/spu/spu.c (spu_attribute_table): Likewise.
13866         * config/v850/v850.c (v850_attribute_table): Likewise.
13867
13868         * config/alpha/alpha.c (vms_attribute_table): Make static.
13869         * config/bfin/bfin.c (bfin_attribute_table): Likewise.
13870         * config/h8300/h8300.c (h8300_attribute_table): Likewise.
13871         * config/mips/mips.c (mips_attribute_table): Likewise.
13872
13873         * Makefile.in (dummy-checksum.o): Depend upon $(CONFIG_H) and
13874         $(SYSTEM_H).
13875         (cc1-checksum.o): Likewise.
13876
13877 2009-06-03  Steve Ellcey  <sje@cup.hp.com>
13878
13879         * config/ia64/vect.md (*movv2sf_internal): Handle big endian case.
13880
13881 2009-06-03  Jakub Jelinek  <jakub@redhat.com>
13882
13883         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Return generated
13884         insn if it is changing sp.  Use gen_add3_insn instead of
13885         conditionally gen_addsi3 and gen_adddi3.
13886         (offset_below_red_zone_p): New static inline function.
13887         (rs6000_emit_epilogue): Emit needed epilogue unwind info.
13888         Use gen_add3_insn instead of conditionally gen_addsi3 and gen_adddi3.
13889         * config/rs6000/ppc-asm.h: Include auto-host.h.
13890         (CFI_STARTPROC, CFI_ENDPROC, CFI_DEF_CFA_REGISTER, CFI_OFFSET,
13891         CFI_RESTORE): Define.
13892         * config/rs6000/crtresxgpr.asm: Add unwind info.
13893         * config/rs6000/crtresxfpr.asm: Likewise.
13894         * config/rs6000/crtresgpr.asm: Likewise.
13895         * config/rs6000/crtresfpr.asm: Likewise.
13896         * config/rs6000/crtsavgpr.asm: Likewise.
13897         * config/rs6000/crtsavfpr.asm: Likewise.
13898
13899         * dwarf2out.c (output_cfi_directive): Pass 1 instead of 0 to second
13900         argument of DWARF2_FRAME_REG_OUT macros.
13901
13902 2009-06-03  Julian Brown  <julian@codesourcery.com>
13903
13904         * config/arm/arm.c (arm_hard_regno_mode_ok): Permit values of four
13905         words or less (including TImode) in core registers.
13906
13907 2009-06-03  Richard Guenther  <rguenther@suse.de>
13908
13909         PR middle-end/40328
13910         * fold-const.c (fold_convert): Fold the build COMPLEX_EXPR.
13911
13912 2009-06-03  Andrey Belevantsev  <abel@ispras.ru>
13913
13914         * statistics.c (statistics_counter_event): Do not record event
13915         in pass dump if its number == -1.
13916         (curr_statistics_hash): Add assert that we never get passes
13917         with static number == -1.
13918
13919 2009-06-03  Richard Guenther  <rguenther@suse.de>
13920             Andrey Belevantsev  <abel@ispras.ru>
13921
13922         * cfgexpand.c (discover_nonconstant_array_refs_r): Make only
13923         non-BLKmode arrays addressable.
13924
13925 2009-06-03  Maxim Kuvyrkov  <maxim@codesourcery.com>
13926
13927         * config/m68k/linux.h (HAVE_GAS_BALIGN_AND_P2ALIGN): Move to ...
13928         * config/m68k/m68k.h: ... here.
13929
13930 2009-06-03  Martin Jambor  <mjambor@suse.cz>
13931
13932         PR tree-optimization/40323
13933         * ipa-prop.c (get_ssa_def_if_simple_copy): Break if not single
13934         assignment.
13935
13936 2009-06-03  Richard Guenther  <rguenther@suse.de>
13937
13938         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
13939         consistently.
13940
13941 2009-06-03  Shujing Zhao  <pearly.zhao@oracle.com>
13942
13943         * config/sh/predicates.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
13944         JUMP_P, CALL_P, NONJUMP_INSN_P, NOTE_P, BARRIER_P and
13945         JUMP_TABLE_DATA_P where applicable.
13946         * config/sh/sh.c: Ditto.
13947         * config/sh/sh.h: Ditto.
13948         * config/sh/sh.md: Ditto.
13949         * config/sh/symbian.c: Ditto.
13950
13951 2009-06-03  Uros Bizjak  <ubizjak@gmail.com>
13952
13953         * config/i386/driver-i386.c (describe_cache): Optimize
13954         concatenation of strings.  Use snprintf instead of sprintf.
13955         (host_detect_local_cpu): Ditto.  Ignore -march and -mtune for native
13956         target when not compiling with GCC.
13957
13958 2009-06-02  Kaz Kojima  <kkojima@gcc.gnu.org>
13959
13960         * config/sh/sh.c: Revert last change.
13961         (sh_expand_epilogue): Emit a blockage insn before the frame
13962         pointer adjustment unconditionally.
13963
13964 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
13965
13966         * config/pa/pa-hpux.h (LINK_SPEC): Remove "%<fwhole-program".
13967         * config/pa/pa-hpux10.h (LINK_SPEC): Likewise.
13968         * config/pa/pa-hpux11.h (LINK_SPEC): Likewise.
13969         * gcc.c (set_collect_gcc_options): Don't add -fwhole-program
13970         to COLLECT_GCC_OPTIONS.
13971
13972 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
13973
13974         * collect2.c (target_system_root): New variable.
13975         (main): Handle --sysroot=.
13976         (ignore_library): Strip the sysroot from the library path.
13977
13978 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
13979
13980         * Makefile.in (COLLECT2_OBJS): Add collect2-aix.o.
13981         (collect2.o): Depend on collect2-aix.h.
13982         (collect2-aix.o): New rule.
13983         * collect2-aix.h: New file.
13984         * collect2-aix.c: Likewise.
13985         * collect2.c: Include collect2-aix.h.  Don't undefine
13986         OBJECT_FORMAT_COFF if CROSS_AIX_SUPPORT is defined.
13987         Guard native includes with #ifndef CROSS_DIRECTORY_STRUCTURE.
13988         Use TARGET_AIX_VERSION instead of _AIX51.
13989         * config/rs6000/aix43.h (TARGET_AIX_VERSION): Define.
13990         * config/rs6000/aix51.h (TARGET_AIX_VERSION): Likewise.
13991         * config/rs6000/aix52.h (TARGET_AIX_VERSION): Likewise.
13992         * config/rs6000/aix53.h (TARGET_AIX_VERSION): Likewise.
13993         * config/rs6000/aix61.h (TARGET_AIX_VERSION): Likewise.
13994
13995 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
13996
13997         * collect2.c (ignore_library): Avoid premature post-increment
13998         and null deference.
13999
14000 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
14001
14002         * Makefile.in (libgcc.mvars): Add TARGET_SYSTEM_ROOT.
14003         * config/rs6000/aix.h (LINK_SYSCALLS_SPEC): Add %R to the
14004         !CROSS_DIRECTORY_STRUCTURE alternative and use it for
14005         CROSS_DIRECTORY_STRUCTURE too.
14006         (LINK_LIBG_SPEC): Likewise.
14007         (LIB_SPEC): Add %R to sysroot paths.
14008         * config/rs6000/aix43.h (CPP_SPEC): Add %R to sysroot paths.
14009         (CPLUSPLUS_CPP_SPEC, LIB_SPEC): Likewise.
14010         * config/rs6000/aix51.h: As for aix43.h.
14011         * config/rs6000/aix52.h: Likewise.
14012         * config/rs6000/aix53.h: Likewise.
14013         * config/rs6000/aix61.h: Likewise.
14014         * config/rs6000/t-aix52 (SHLIB_LINK): Add $(TARGET_SYSTEM_ROOT)
14015         to the beginning of sysroot paths.
14016
14017 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
14018
14019         * print_rtl (print_rtx): Don't print modes in EXPR_LISTs and
14020         INSN_LISTs that are out of the REG_NOTE range.
14021
14022 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
14023
14024         * loop-unroll.c (struct iv_to_split): Add pointer to next.
14025         (struct var_to_expand): Likewise.
14026         (struct opt_info): Add head and tail for linked lists of the above.
14027         (analyze_insn_to_expand_var): Initialize next.
14028         (analyze_iv_to_split_insn): Likewise.
14029         (analyze_insns_in_loop): Create linked lists.
14030         (allocate_basic_variable): Simplify for use without hash table.
14031         (insert_var_expansion_initialization): Likewise, make it type-safer.
14032         (combine_var_copies_in_loop_exit): Likewise.
14033         (apply_opt_in_copies): Walk lists rather than hash tables.
14034         (release_var_copies): Simplified and inlined by hand into...
14035         (free_opt_info): ... this function.
14036
14037 2009-06-02  Richard Guenther  <rguenther@suse.de>
14038
14039         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
14040         for field decls.
14041
14042 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
14043
14044         * cfgexpand.c (gimple_expand_cfg): Discard the source location
14045         only for builtins that are not overridden.
14046
14047 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
14048
14049         * gengtype.c (adjust_field_rtx_def): Add NOTE_INSN_DELETED_LABEL's
14050         label string.
14051
14052 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
14053
14054         * df-core.c (df_ref_debug): Honor -fdump-noaddr.
14055
14056 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
14057
14058         * combine.c (move_deaths): Compare LUIDs within the same BB only.
14059
14060 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
14061
14062         * common.opt (fdump-unnumbered-links): New.
14063         * doc/invoke.texi (-fdump-unnumbered-links): Document it.
14064         * print-rtl.c (flag_dump_unnumbered_links): New.
14065         (print_rtx): Test it.
14066
14067 2009-06-02  Richard Earnshaw  <rearnsha@arm.com>
14068
14069         * arm.c (arm_get_frame_offsets): Prefer using r3 for padding a
14070         push/pop multiple to 8-byte alignment.
14071
14072 2009-06-01  Jakub Jelinek  <jakub@redhat.com>
14073
14074         * config/i386/i386.c (queued_cfa_restores): New static variable.
14075         (ix86_add_cfa_restore_note, ix86_add_queued_cfa_restore_notes): New
14076         functions.
14077         (pro_epilogue_adjust_stack): Call ix86_add_queued_cfa_restore_notes.
14078         (ix86_emit_restore_reg_using_pop): Add RED_OFFSET argument.
14079         Set RTX_FRAME_RELATED_P immediately after adding a REG_CFA_* note.
14080         Call ix86_add_cfa_restore_note instead of adding REG_CFA_OFFSET
14081         note unconditionally.
14082         (ix86_emit_restore_regs_using_mov): Likewise.
14083         (ix86_emit_restore_sse_regs_using_mov): Likewise.
14084         (ix86_emit_restore_regs_using_pop): Add RED_OFFSET argument, pass
14085         it through to ix86_emit_restore_reg_using_pop.
14086         (ix86_emit_leave): Add RED_OFFSET argument.  Call
14087         ix86_add_queued_cfa_restore_notes.  Call ix86_add_cfa_restore_note
14088         instead of adding REG_CFA_OFFSET note unconditionally.
14089         (ix86_expand_epilogue): Compute RED_OFFSET, pass it down to
14090         the above functions.  Call ix86_add_queued_cfa_restore_notes when
14091         needed.
14092
14093         * dwarf2out.c (dwarf2out_cfi_label): Add FORCE argument, if true,
14094         force output of the label even for dwarf2out_do_cfi_asm.
14095         (add_fde_cfi): If -g2 and above and cfi might change CFA,
14096         force creation of CFI label and chain DW_CFA_set_loc jumping to it
14097         for convert_cfa_to_fb_loc_list.  Adjust other dwarf2out_cfi_label
14098         caller.
14099         (dwarf2out_stack_adjust, dwarf2out_frame_debug,
14100         dwarf2out_begin_epilogue, dwarf2out_frame_debug_restore_state): Adjust
14101         dwarf2out_cfi_label callers.
14102         * tree.h (dwarf2out_cfi_label): Adjust prototype.
14103         * config/arm/arm.c (thumb_pushpop, thumb1_output_function_prologue):
14104         Adjust dwarf2out_cfi_label callers.
14105         * config/vax/vax.c (vax_output_function_prologue): Likewise.
14106
14107         * config/i386/i386.h (struct machine_cfa_state,
14108         struct machine_function): Guard with ifndef USED_FOR_TARGET
14109         instead of not IN_LIBGCC2 and not in IN_TARGET_LIBS.
14110
14111         PR other/40024
14112         * emutls.c (__emutls_get_address): Change arr->size to mean number
14113         of allocated arr->data entries instead of # of slots + 1.
14114
14115         PR middle-end/40316
14116         * recog.c (peep2_reinit_state): New function.
14117         (peephole2_init_state): Use it at the end of a basic block and also
14118         when seeing a RTX_FRAME_RELATED_P insn.
14119
14120 2009-06-01  Steve Ellcey  <sje@cup.hp.com>
14121
14122         * ia64.md (floatdirf2, fix_truncrfdi, floatunsdirf,
14123         fixuns_truncrfdi2): New.
14124         (fix_truncxfdi2_alts, fixuns_truncxfdi2_alts,
14125         *nmaddsf4_alts, *nmadddf4_alts, *nmadddf4_truncsf_alts,
14126         *mulxf3_alts, *mulxf3_truncsf_alts, *mulxf3_truncdf_alts,
14127         *maddxf4_alts, *maddxf4_alts_truncsf, *maddxf4_alts_truncdf,
14128         *nmaddxf4_alts, *nmaddxf4_truncsf_alts, *nmaddxf4_truncdf_alts,
14129         *recip_approx): Remove.
14130         (divsi3 modsi3, udivsi3, umodsi3, divsi3_internal, divdi3,
14131         moddi3, udivdi3, umoddi3, divdi3_internal_lat, divdi3_internal_thr,
14132         divsf3, sqrtsf2, divdf3, sqrtdf2, divxf3, sqrtxf2): Modify and
14133         move to div.md.
14134         * div.md (fix_truncrfdi2_alts, fixuns_truncrfdi2_alt,
14135         setf_exp_rf): New.
14136
14137 2009-06-01  Ian Lance Taylor  <iant@google.com>
14138
14139         * attribs.c (register_attribute): Use CONST_CAST.
14140         * collect2.c (main): Use CONST_CAST2.
14141         (scan_prog_file): Likewise.
14142         * gcc.c (process_command, main): Likewise.
14143         * toplev.c (toplev_main): Likewise.
14144
14145         * c-typeck.c (handle_warn_cast_qual): New static function,
14146         partially broken out of build_c_cast.
14147         (build_c_cast): Call handle_warn_cast_qual.
14148         * doc/invoke.texi (Warning Options): Document new effect of
14149         -Wcast-qual.
14150
14151 2009-06-01  Aldy Hernandez  <aldyh@redhat.com>
14152
14153         * diagnostic.c (diagnostic_build_prefix): Always print columns.
14154         (diagnostic_report_current_module): Print columns.
14155         * common.opt (flag_show_column): Enable by default.
14156
14157 2009-06-01  Luis Machado  <luisgpm@br.ibm.com>
14158
14159         * alias.c (find_base_term): Check for NULL term before returning.
14160
14161 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
14162
14163         Revert due to PR40320:
14164         2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
14165         * calls.c (emit_library_call_value_1): Don't force_operand for move
14166         and push insns.
14167
14168 2009-06-01  Olivier Hainque  <hainque@adacore.com>
14169             Eric Botcazou  <ebotcazou@adacore.com>
14170
14171         * tree.h (CONSTRUCTOR_BITFIELD_P): True if NODE, a FIELD_DECL, is
14172         to be processed as a bitfield for constructor output purposes.
14173         * output.h (initializer_constant_valid_for_bitfield_p): Declare
14174         new function.
14175         * varasm.c (oc_local_state): New type, output_constructor
14176         local state to support communication with helpers.
14177         (oc_outer_state): New type, output_constructor outer state of
14178         relevance in recursive calls.
14179         (output_constructor_array_range): New output_constructor helper,
14180         extracted code for an array range element.
14181         (output_constructor_regular_field): New output_constructor helper,
14182         extracted code for an element that is not a bitfield.
14183         (output_constructor_bitfield): New output_constructor helper,
14184         extracted code for a bitfield element.  Accept an OUTER state
14185         argument for recursive processing.  Recurse on record or array
14186         CONSTRUCTOR values, possibly past noop conversions.
14187         (initializer_constant_valid_for_bitfield_p): New predicate.  Whether
14188         VALUE is a valid constant-valued expression for use in a static
14189         bit-field initializer.
14190         (output_constructor): Rework to use helpers.  Accept and honor an
14191         OUTER state argument for recursive calls.  Return total size.  Be
14192         prepared for nested constructors initializing bitfields.
14193         (output_constant): Feed OUTER in calls to output_constructor.
14194
14195 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
14196
14197         * calls.c (emit_library_call_value_1): Don't force_operand for move
14198         and push insns.
14199
14200 2009-06-01  Nick Clifton  <nickc@redhat.com>
14201
14202         * doc/invoke.texi (IA-64 Options): Fix typo.
14203
14204 2009-06-01  Ira Rosen  <irar@il.ibm.com>
14205
14206         PR tree-optimization/39129
14207         * tree-vect-loop-manip.c (conservative_cost_threshold): Change the
14208         printed message.
14209         (vect_do_peeling_for_loop_bound): Use
14210         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
14211         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
14212         (vect_loop_versioning): Likewise.
14213         (vect_create_cond_for_alias_checks): Fix indentation.
14214         * tree-vectorizer.h (struct _loop_vec_info): Fix indentation of the
14215         macros.
14216         (LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT): Define.
14217         (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Likewise.
14218         * tree-vect-loop.c (vect_analyze_loop_form): Change "too many BBs" to
14219         "control flow in loop".
14220         (vect_estimate_min_profitable_iters): Use
14221         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
14222         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
14223         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
14224         (vect_create_data_ref_ptr): Don't mention array dimension in printing.
14225         * tree-vect-stmts.c (vectorizable_store): Replace the check that the
14226         statement belongs to a group of strided accesses with the exact code
14227         check.
14228         (vectorizable_load): Likewise.
14229         * tree-vect-slp.c (vect_analyze_slp_instance): Spell out "basic block".
14230         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
14231
14232 2009-06-01  Gerald Pfeifer  <gerald@pfeifer.com>
14233
14234         * config/freebsd-stdint.h: New file.
14235         * config.gcc (*-*-freebsd): Set use_gcc_stdint=wrap.
14236         Add freebsd-stdint.h to tm_file.
14237
14238 2009-06-01  Richard Earnshaw  <rearnsha@arm.com>
14239
14240         * arm/thumb2.md (thumb2_zero_extendhidi2): New insn and split.
14241         (thumb2_extendhidi2): Likewise.
14242
14243 2009-05-31  Ian Lance Taylor  <iant@google.com>
14244
14245         * regstat.c (regstat_n_sets_and_refs): Remove duplicate definition.
14246
14247 2009-05-31  Ian Lance Taylor  <iant@google.com>
14248
14249         * Makefile.in (except.o): Depend upon gt-except.h, not gt-$(EXCEPT_H).
14250         (ipa-cp.o): Depend upon $(FIBHEAP_H) and $(PARAMS_H).
14251         (ipa-reference.o): Depend upon gt-ipa-reference.h.
14252
14253 2009-05-31  Jason Merrill  <jason@redhat.com>
14254
14255         * tree-pretty-print.c (print_call_name): Take the callee, not the
14256         call itself.  Make non-static.  Use dump_function_name for functions.
14257         (dump_generic_node): Adjust.
14258         * diagnostic.h: Declare print_call_name.
14259         * gimple-pretty-print.c (dump_gimple_call): Use it.
14260
14261 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
14262
14263         * config/sh/sh.md (ashldi3_std): New define_expand.
14264         (ashldi3): Use it.
14265
14266 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
14267
14268         PR target/40313
14269         * config/sh/sh.c: Include debug.h.
14270         (sh_expand_epilogue): Emit a blockage insn before the frame
14271         pointer adjustment also when dwarf2out_do_frame returns true.
14272
14273 2009-05-31  Richard Earnshaw  <rearnsha@arm.com>
14274
14275         * arm/thumb2.md (thumb2_extendsidi2): Add a split sub-pattern.
14276         (thumb2_extendqidi2): New pattern.
14277
14278 2009-05-31  Ira Rosen  <irar@il.ibm.com>
14279
14280         * tree-vect-loop-manip.c (slpeel_update_phi_nodes_for_guard1): Don't
14281         mark phis for renaming.
14282         * tree-vectorizer.c (vect_memsyms_to_rename): Remove.
14283         (vectorize_loops): Don't allocate and free vect_memsyms_to_rename.
14284         Call mark_sym_for_renaming.
14285         * tree-vectorizer.h (vect_memsyms_to_rename): Remove.
14286         * tree-vect-loop.c (vect_transform_loop): Remove
14287         vect_memsyms_to_rename initialization and a call to
14288         mark_set_for_renaming.
14289
14290 2009-05-31  Jakub Jelinek  <jakub@redhat.com>
14291
14292         PR middle-end/40304
14293         * config/i386/i386.c (pro_epilogue_adjust_stack): Mark insns
14294         frame related even if !set_cfa && style < 0.
14295
14296 2009-05-30  Kai Tietz  <kai.tietz@onevision.com>
14297
14298         * config/i386/mingw-tls.c: New file.
14299         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Add mingw-tls.c file.
14300         * gthr-win32.h (MINGW32_SUPPORTS_MT_EH): Define it for targets
14301         defining _WIN32 but not __CYGWIN__.
14302
14303 2009-05-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14304
14305         * configure.ac: Add MPC support.
14306
14307         * config.in, configure: Regenerate.
14308
14309 2009-05-29  Richard Henderson  <rth@redhat.com>
14310
14311         * cfgcleanup.c (try_crossjump_to_edge): Only skip past
14312         NOTE_INSN_BASIC_BLOCK.
14313         * cfglayout.c (duplicate_insn_chain): Copy epilogue insn marks.
14314         Duplicate NOTE_INSN_EPILOGUE_BEG notes.
14315         * cfgrtl.c (can_delete_note_p): Allow NOTE_INSN_EPILOGUE_BEG
14316         to be deleted.
14317         * dwarf2out.c (struct cfa_loc): Change indirect field to bitfield,
14318         add in_use field.
14319         (add_cfi): Disable check redefining cfa away from drap.
14320         (lookup_cfa_1): Add remember argument; handle remember/restore.
14321         (lookup_cfa): Pass remember argument.
14322         (cfa_remember): New.
14323         (compute_barrier_args_size_1): Remove sibcall check.
14324         (dwarf2out_frame_debug_def_cfa): New.
14325         (dwarf2out_frame_debug_adjust_cfa): New.
14326         (dwarf2out_frame_debug_cfa_offset): New.
14327         (dwarf2out_frame_debug_cfa_register): New.
14328         (dwarf2out_frame_debug_cfa_restore): New.
14329         (dwarf2out_frame_debug): Handle REG_CFA_* notes.
14330         (dwarf2out_begin_epilogue): New.
14331         (dwarf2out_frame_debug_restore_state): New.
14332         (dw_cfi_oprnd1_desc): Handle DW_CFA_remember_state,
14333         DW_CFA_restore_state.
14334         (output_cfi_directive): Likewise.
14335         (convert_cfa_to_fb_loc_list): Likewise.
14336         (dw_cfi_oprnd1_desc): Handle DW_CFA_restore.
14337         * dwarf2out.h: Update.
14338         * emit-rtl.c (try_split): Don't split RTX_FRAME_RELATED_P.
14339         (copy_insn_1): Early out for null.
14340         * final.c (final_scan_insn): Call dwarf2out_begin_epilogue
14341         and dwarf2out_frame_debug_restore_state.
14342         * function.c (prologue, epilogue, sibcall_epilogue): Remove.
14343         (prologue_insn_hash, epilogue_insn_hash): New.
14344         (free_after_compilation): Adjust freeing accordingly.
14345         (record_insns): Create hash table if needed; push insns into
14346         hash instead of array.
14347         (maybe_copy_epilogue_insn): New.
14348         (contains): Search hash table instead of array.
14349         (sibcall_epilogue_contains): Remove.
14350         (thread_prologue_and_epilogue_insns): Split eh_return insns
14351         and mark them as epilogues.
14352         (reposition_prologue_and_epilogue_notes): Rewrite epilogue
14353         scanning in terms of basic blocks.
14354         * insn-notes.def (CFA_RESTORE_STATE): New.
14355         * jump.c (returnjump_p_1): Accept EH_RETURN.
14356         (eh_returnjump_p_1, eh_returnjump_p): New.
14357         * reg-notes.def (CFA_DEF_CFA, CFA_ADJUST_CFA, CFA_OFFSET,
14358         CFA_REGISTER, CFA_RESTORE): New.
14359         * rtl.def (EH_RETURN): New.
14360         * rtl.h (eh_returnjump_p, maybe_copy_epilogue_insn): Declare.
14361
14362         * config/bfin/bfin.md (UNSPEC_VOLATILE_EH_RETURN): Remove.
14363         (eh_return_internal): Use eh_return rtx; split w/ epilogue.
14364
14365         * config/i386/i386.c (gen_push): Update cfa state.
14366         (pro_epilogue_adjust_stack): Add set_cfa argument.  When true,
14367         add a CFA_ADJUST_CFA note.
14368         (ix86_dwarf_handle_frame_unspec): Remove.
14369         (ix86_expand_prologue): Update cfa state.
14370         (ix86_emit_restore_reg_using_pop): New.
14371         (ix86_emit_restore_regs_using_pop): New.
14372         (ix86_emit_leave): New.
14373         (ix86_emit_restore_regs_using_mov): Add CFA_RESTORE notes.
14374         (ix86_expand_epilogue): Add notes for unwinding the epilogue.
14375         * config/i386/i386.h (struct machine_cfa_state): New.
14376         (ix86_cfa_state): New.
14377         * config/i386/i386.md (UNSPEC_EH_RETURN): Remove.
14378         (eh_return_internal): Merge from eh_return_<mode>,
14379         use eh_return rtx, split w/ epilogue.
14380
14381 2009-05-29  Ian Lance Taylor  <iant@google.com>
14382
14383         * builtins.c (validate_gimple_arglist): Don't use va_arg with
14384         enum type.
14385         * calls.c (emit_library_call_value_1): Likewise.
14386
14387         * c-typeck.c (c_build_va_arg): New function.
14388         * c-tree.h (c_build_va_arg): Declare.
14389         * c-parser.c (c_parser_postfix_expression): Call c_build_va_arg
14390         instead of build_va_arg.
14391
14392 2009-05-29  Eric Botcazou  <ebotcazou@adacore.com>
14393
14394         * tree-ssa-loop-ivopts.c (strip_offset_1) <MULT_EXPR>: New case.
14395         (force_expr_to_var_cost) <NEGATE_EXPR>: Likewise.
14396         (ptr_difference_cost): Use affine combinations to compute it.
14397         (difference_cost): Likewise.
14398         (get_computation_cost_at): Compute more accurate cost for addresses
14399         if the ratio is a multiplier allowed in addresses.
14400         For non-addresses, consider that an additional offset or symbol is
14401         added only once.
14402
14403 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
14404
14405         * config/i386/i386.c (ix86_decompose_address): Avoid useless
14406         0 displacement.  Add 0 displacement if base is %[er]bp or %r13.
14407
14408         * config/i386/i386.md (prefix_data16, prefix_rep): Set to 0 for
14409         TYPE_SSE{MULADD,4ARG,IADD1,CVT1} by default.
14410         (prefix_rex): For UNIT_MMX don't imply the prefix by default
14411         if MODE_DI.
14412         (prefix_extra): Default to 2 for TYPE_SSE{MULADD,4ARG} and
14413         to 1 for TYPE_SSE{IADD1,CVT1}.
14414         (prefix_vex_imm8): Removed.
14415         (length_vex): Only pass 1 as second argument to
14416         ix86_attr_length_vex_default if prefix_extra is 0.
14417         (modrm): For TYPE_INCDEC only set to 0 if not TARGET_64BIT.
14418         (length): For prefix vex computation use length_immediate
14419         attribute instead of prefix_vex_imm8.
14420         (cmpqi_ext_3_insn, cmpqi_ext_3_insn_rex64,
14421         addqi_ext_1, addqi_ext_1_rex64, *testqi_ext_0, andqi_ext_0,
14422         *andqi_ext_0_cc, *iorqi_ext_0, *xorqi_ext_0, *xorqi_cc_ext_1,
14423         *xorqi_cc_ext_1_rex64): Override modrm attribute to 1.
14424         (extendsidi2_rex64, extendhidi2, extendqidi2, extendhisi2,
14425         *extendhisi2_zext, extendqihi2, extendqisi2, *extendqisi2_zext): Emit
14426         a space in between the operands.
14427         (*anddi_1_rex64, *andsi_1): Likewise.  Override prefix_rex to 1
14428         if one operand is 0xff and the other one si, di, bp or sp.
14429         (*andhi_1): Override prefix_rex to 1 if one operand is 0xff and the
14430         other one si, di, bp or sp.
14431         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Add mode attribute.
14432         (*ffssi_1, *ffsdi_1, ctzsi2, ctzdi2): Add
14433         type and mode attributes.
14434         (*bsr, *bsr_rex64, *bsrhi): Add type attribute.
14435         (*cmpfp_i_mixed, *cmpfp_iu_mixed): For TYPE_SSECOMI, clear
14436         prefix_rep attribute and set prefix_data16 attribute iff MODE_DF.
14437         (*cmpfp_i_sse, *cmpfp_iu_sse): Clear prefix_rep attribute and set
14438         prefix_data16 attribute iff MODE_DF.
14439         (*movsi_1): For TYPE_SSEMOV MODE_SI set prefix_data16 attribute.
14440         (fix_trunc<mode>di_sse): Set prefix_rex attribute.
14441         (*adddi_4_rex64, *addsi_4): Use const128_operand instead of
14442         constm128_operand in length_immediate computation.
14443         (*addhi_4): Likewise.  Fix mode attribute to MODE_HI.
14444         (anddi_1_rex64): Use movzbl/movzwl instead of movzbq/movzwq.
14445         (*avx_ashlti3, sse2_ashlti3, *avx_lshrti3, sse2_lshrti3): Set
14446         length_immediate attribute to 1.
14447         (x86_fnstsw_1, x86_fnstcw_1, x86_fldcw_1): Fix length attribute.
14448         (*movdi_1_rex64): Override prefix_rex or prefix_data16 attributes
14449         for certain alternatives.
14450         (*movdf_nointeger, *movdf_integer_rex64, *movdf_integer): Override
14451         prefix_data16 attribute if MODE_V1DF.
14452         (*avx_setcc<mode>, *sse_setcc<mode>, *sse5_setcc<mode>): Set
14453         length_immediate to 1.
14454         (set_got_rex64, set_rip_rex64): Remove length attribute, set
14455         length_address to 4, set mode attribute to MODE_DI.
14456         (set_got_offset_rex64): Likewise.  Set length_immediate to 0.
14457         (fxam<mode>2_i387): Set length attribute to 4.
14458         (*prefetch_sse, *prefetch_sse_rex, *prefetch_3dnow,
14459         *prefetch_3dnow_rex): Override length_address attribute.
14460         (sse4_2_crc32<mode>): Override prefix_data16 and prefix_rex
14461         attributes.
14462         * config/i386/predicates.md (ext_QIreg_nomode_operand): New predicate.
14463         (constm128_operand): Removed.
14464         * config/i386/i386.c (memory_address_length): For
14465         disp && !index && !base in 64-bit mode account for SIB byte if
14466         print_operand_address can't optimize disp32 into disp32(%rip)
14467         and UNSPEC doesn't imply (%rip) addressing.  Add 1 to length
14468         for fs: or gs: segment.
14469         (ix86_attr_length_immediate_default): When checking if shortform
14470         is possible, truncate immediate to the length of the non-shortened
14471         immediate.
14472         (ix86_attr_length_address_default): Ignore MEM_P operands
14473         with X constraint.
14474         (ix86_attr_length_vex_default): Only check for DImode on
14475         GENERAL_REG_P operands.
14476         * config/i386/sse.md (<sse>_comi, <sse>_ucomi): Clear
14477         prefix_rep attribute, set prefix_data16 attribute iff MODE_DF.
14478         (sse_cvttps2pi): Clear prefix_rep attribute.
14479         (sse2_cvttps2dq, *sse2_cvtpd2dq, sse2_cvtps2pd): Clear prefix_data16
14480         attribute.
14481         (*sse2_cvttpd2dq): Don't clear prefix_rep attribute.
14482         (*avx_ashr<mode>3, ashr<mode>3, *avx_lshr<mode>3, lshr<mode>3,
14483         *avx_ashl<mode>3, ashl<mode>3): Set length_immediate attribute to 1
14484         iff operand 2 is const_int_operand.
14485         (*vec_dupv4si, avx_shufpd256_1, *avx_shufpd_<mode>,
14486         sse2_shufpd_<mode>): Set length_immediate attribute to 1.
14487         (sse2_pshufd_1): Likewise.  Set prefix attribute to maybe_vex
14488         instead of vex.
14489         (sse2_pshuflw_1, sse2_pshufhw_1): Set length_immediate to 1 and clear
14490         prefix_data16.
14491         (sse2_unpckhpd, sse2_unpcklpd, sse2_storehpd, *vec_concatv2df): Set
14492         prefix_data16 attribute for movlpd and movhpd instructions.
14493         (sse2_loadhpd, sse2_loadlpd, sse2_movsd): Likewise.  Override
14494         length_immediate for shufpd instruction.
14495         (sse2_movntsi, sse3_lddqu): Clear prefix_data16 attribute.
14496         (avx_cmpp<avxmodesuffixf2c><mode>3,
14497         avx_cmps<ssemodesuffixf2c><mode>3, *avx_maskcmp<mode>3,
14498         <sse>_maskcmp<mode>3, <sse>_vmmaskcmp<mode>3,
14499         avx_shufps256_1, *avx_shufps_<mode>, sse_shufps_<mode>,
14500         *vec_dupv4sf_avx, *vec_dupv4sf): Set length_immediate attribute to 1.
14501         (*avx_cvtsi2ssq, *avx_cvtsi2sdq): Set length_vex attribute to 4.
14502         (sse_cvtsi2ssq, sse2_cvtsi2sdq): Set prefix_rex attribute to 1.
14503         (sse2_cvtpi2pd, sse_loadlps, sse2_storelpd): Override
14504         prefix_data16 attribute for the first alternative to 1.
14505         (*avx_loadlps): Override length_immediate for the first alternative.
14506         (*vec_concatv2sf_avx): Override length_immediate and prefix_extra
14507         attributes for second alternative.
14508         (*vec_concatv2sf_sse4_1): Override length_immediate and
14509         prefix_data16 attributes for second alternative.
14510         (*vec_setv4sf_avx, *avx_insertps, vec_extract_lo_<mode>,
14511         vec_extract_hi_<mode>, vec_extract_lo_v16hi,
14512         vec_extract_hi_v16hi, vec_extract_lo_v32qi,
14513         vec_extract_hi_v32qi): Set prefix_extra and length_immediate to 1.
14514         (*vec_setv4sf_sse4_1, sse4_1_insertps, *sse4_1_extractps): Set
14515         prefix_data16 and length_immediate to 1.
14516         (*avx_mulv2siv2di3, *avx_mulv4si3, sse4_2_gtv2di3): Set prefix_extra
14517         to 1.
14518         (*avx_<code><mode>3, *avx_eq<mode>3, *avx_gt<mode>3): Set
14519         prefix_extra attribute for variants that don't have 0f prefix alone.
14520         (*avx_pinsr<ssevecsize>): Likewise.  Set length_immediate to 1.
14521         (*sse4_1_pinsrb, *sse2_pinsrw, *sse4_1_pinsrd, *sse4_1_pextrb,
14522         *sse4_1_pextrb_memory, *sse2_pextrw, *sse4_1_pextrw_memory,
14523         *sse4_1_pextrd): Set length_immediate to 1.
14524         (*sse4_1_pinsrd): Likewise.  Set prefix_extra to 1.
14525         (*sse4_1_pinsrq, *sse4_1_pextrq): Set prefix_rex and length_immediate
14526         to 1.
14527         (*vec_extractv2di_1_rex64_avx, *vec_extractv2di_1_rex64,
14528         *vec_extractv2di_1_avx, *vec_extractv2di_1_sse2): Override
14529         length_immediate to 1 for second alternative.
14530         (*vec_concatv2si_avx, *vec_concatv2di_rex64_avx): Override
14531         prefix_extra and length_immediate attributes for the first
14532         alternative.
14533         (vec_concatv2si_sse4_1): Override length_immediate to 1 for the
14534         first alternative.
14535         (*vec_concatv2di_rex64_sse4_1): Likewise.  Override prefix_rex
14536         to 1 for the first and third alternative.
14537         (*vec_concatv2di_rex64_sse): Override prefix_rex to 1 for the second
14538         alternative.
14539         (*sse2_maskmovdqu, *sse2_maskmovdqu_rex64): Override length_vex
14540         attribute.
14541         (*sse_sfence, sse2_mfence, sse2_lfence): Override length_address
14542         attribute to 0.
14543         (*avx_phaddwv8hi3, *avx_phadddv4si3, *avx_phaddswv8hi3,
14544         *avx_phsubwv8hi3, *avx_phsubdv4si3, *avx_phsubswv8hi,
14545         *avx_pmaddubsw128, *avx_pmulhrswv8hi3, *avx_pshufbv16qi3,
14546         *avx_psign<mode>3): Set prefix_extra attribute to 1.
14547         (ssse3_phaddwv4hi3, ssse3_phadddv2si3, ssse3_phaddswv4hi3,
14548         ssse3_phsubwv4hi3, ssse3_phsubdv2si3, ssse3_phsubswv4hi3,
14549         ssse3_pmaddubsw, *ssse3_pmulhrswv4hi, ssse3_pshufbv8qi3,
14550         ssse3_psign<mode>3): Override prefix_rex attribute.
14551         (*avx_palignrti): Override prefix_extra and length_immediate to 1.
14552         (ssse3_palignrti): Override length_immediate to 1.
14553         (ssse3_palignrdi): Override length_immediate to 1, override
14554         prefix_rex attribute.
14555         (abs<mode>2): Override prefix_rep to 0, override prefix_rex attribute.
14556         (sse4a_extrqi): Override length_immediate to 2.
14557         (sse4a_insertqi): Likewise.  Override prefix_data16 to 0.
14558         (sse4a_insertq): Override prefix_data16 to 0.
14559         (avx_blendp<avxmodesuffixf2c><avxmodesuffix>,
14560         avx_blendvp<avxmodesuffixf2c><avxmodesuffix>,
14561         avx_dpp<avxmodesuffixf2c><avxmodesuffix>, *avx_mpsadbw,
14562         *avx_pblendvb, *avx_pblendw, avx_roundp<avxmodesuffixf2c>256,
14563         avx_rounds<avxmodesuffixf2c>256): Override prefix_extra
14564         and length_immediate to 1.
14565         (sse4_1_blendp<ssemodesuffixf2c>, sse4_1_dpp<ssemodesuffixf2c>,
14566         sse4_2_pcmpestr, sse4_2_pcmpestri, sse4_2_pcmpestrm,
14567         sse4_2_pcmpestr_cconly, sse4_2_pcmpistr, sse4_2_pcmpistri,
14568         sse4_2_pcmpistrm, sse4_2_pcmpistr_cconly): Override prefix_data16
14569         and length_immediate to 1.
14570         (sse4_1_blendvp<ssemodesuffixf2c>): Override prefix_data16 to 1.
14571         (sse4_1_mpsadbw, sse4_1_pblendw): Override length_immediate to 1.
14572         (*avx_packusdw, avx_vtestp<avxmodesuffixf2c><avxmodesuffix>,
14573         avx_ptest256): Override prefix_extra to 1.
14574         (sse4_1_roundp<ssemodesuffixf2c>, sse4_1_rounds<ssemodesuffixf2c>):
14575         Override prefix_data16 and length_immediate to 1.
14576         (sse5_pperm_zero_v16qi_v8hi, sse5_pperm_sign_v16qi_v8hi,
14577         sse5_pperm_zero_v8hi_v4si, sse5_pperm_sign_v8hi_v4si,
14578         sse5_pperm_zero_v4si_v2di, sse5_pperm_sign_v4si_v2di,
14579         sse5_vrotl<mode>3, sse5_ashl<mode>3, sse5_lshl<mode>3): Override
14580         prefix_data16 to 0 and prefix_extra to 2.
14581         (sse5_rotl<mode>3, sse5_rotr<mode>3): Override length_immediate to 1.
14582         (sse5_frcz<mode>2, sse5_vmfrcz<mode>2): Don't override prefix_extra
14583         attribute.
14584         (*sse5_vmmaskcmp<mode>3, sse5_com_tf<mode>3,
14585         sse5_maskcmp<mode>3, sse5_maskcmp<mode>3, sse5_maskcmp_uns<mode>3):
14586         Override prefix_data16 and prefix_rep to 0, length_immediate to 1
14587         and prefix_extra to 2.
14588         (sse5_maskcmp_uns2<mode>3, sse5_pcom_tf<mode>3): Override
14589         prefix_data16 to 0, length_immediate to 1 and prefix_extra to 2.
14590         (*avx_aesenc, *avx_aesenclast, *avx_aesdec, *avx_aesdeclast,
14591         avx_vpermilvar<mode>3,
14592         avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>,
14593         avx_vbroadcastss256, avx_vbroadcastf128_p<avxmodesuffixf2c>256,
14594         avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>,
14595         avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>):
14596         Override prefix_extra to 1.
14597         (aeskeygenassist, pclmulqdq): Override length_immediate to 1.
14598         (*vpclmulqdq, avx_vpermil<mode>, avx_vperm2f128<mode>3,
14599         vec_set_lo_<mode>, vec_set_hi_<mode>, vec_set_lo_v16hi,
14600         vec_set_hi_v16hi, vec_set_lo_v32qi, vec_set_hi_v32qi): Override
14601         prefix_extra and length_immediate to 1.
14602         (*avx_vzeroall, avx_vzeroupper, avx_vzeroupper_rex64): Override
14603         modrm to 0.
14604         (*vec_concat<mode>_avx): Override prefix_extra and length_immediate
14605         to 1 for the first alternative.
14606         * config/i386/mmx.md (*mov<mode>_internal_rex64): Override
14607         prefix_rep, prefix_data16 and/or prefix_rex attributes in certain
14608         cases.
14609         (*mov<mode>_internal_avx, *movv2sf_internal_rex64,
14610         *movv2sf_internal_avx, *movv2sf_internal): Override
14611         prefix_rep attribute for certain alternatives.
14612         (*mov<mode>_internal): Override prefix_rep or prefix_data16
14613         attributes for certain alternatives.
14614         (*movv2sf_internal_rex64_avx): Override prefix_rep and length_vex
14615         attributes for certain alternatives.
14616         (*mmx_addv2sf3, *mmx_subv2sf3, *mmx_mulv2sf3,
14617         *mmx_<code>v2sf3_finite, *mmx_<code>v2sf3, mmx_rcpv2sf2,
14618         mmx_rcpit1v2sf3, mmx_rcpit2v2sf3, mmx_rsqrtv2sf2, mmx_rsqit1v2sf3,
14619         mmx_haddv2sf3, mmx_hsubv2sf3, mmx_addsubv2sf3,
14620         *mmx_eqv2sf3, mmx_gtv2sf3, mmx_gev2sf3, mmx_pf2id, mmx_pf2iw,
14621         mmx_pi2fw, mmx_floatv2si2, mmx_pswapdv2sf2, *mmx_pmulhrwv4hi3,
14622         mmx_pswapdv2si2): Set prefix_extra attribute to 1.
14623         (mmx_ashr<mode>3, mmx_lshr<mode>3, mmx_ashl<mode>3): Set
14624         length_immediate to 1 if operand 2 is const_int_operand.
14625         (*mmx_pinsrw, mmx_pextrw, mmx_pshufw_1, *vec_dupv4hi,
14626         *vec_extractv2si_1): Set length_immediate attribute to 1.
14627         (*mmx_uavgv8qi3): Override prefix_extra attribute to 1 if
14628         using old 3DNOW insn rather than SSE/3DNOW_A.
14629         (mmx_emms, mmx_femms): Clear modrm attribute.
14630
14631 2009-05-29  Martin Jambor  <mjambor@suse.cz>
14632
14633         * tree-sra.c:  New implementation of SRA.
14634
14635         * params.def (PARAM_SRA_MAX_STRUCTURE_SIZE): Removed.
14636         (PARAM_SRA_MAX_STRUCTURE_COUNT): Removed.
14637         (PARAM_SRA_FIELD_STRUCTURE_RATIO): Removed.
14638         * params.h (SRA_MAX_STRUCTURE_SIZE): Removed.
14639         (SRA_MAX_STRUCTURE_COUNT): Removed.
14640         (SRA_FIELD_STRUCTURE_RATIO): Removed.
14641         * doc/invoke.texi (sra-max-structure-size): Removed.
14642         (sra-field-structure-ratio): Removed.
14643
14644 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
14645
14646         PR middle-end/40291
14647         * builtins.c (expand_builtin_memcmp): Convert len to sizetype
14648         before expansion.
14649
14650 2009-05-29  Andrey Belevantsev  <abel@ispras.ru>
14651
14652         PR rtl-optimization/40101
14653         * sel-sched-ir.c (get_seqno_by_preds): Allow returning negative
14654         seqno.  Adjust comment.
14655         * sel-sched.c (find_seqno_for_bookkeeping): Assert that when
14656         inserting bookkeeping before a jump, the jump is not scheduled.
14657         When no positive seqno found, provide a value.  Add comment.
14658
14659 2009-05-29  Richard Guenther  <rguenther@suse.de>
14660
14661         * tree-ssa-alias.c (nonaliasing_component_refs_p): Remove
14662         short-cutting on the first component.
14663
14664 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
14665
14666         PR middle-end/39958
14667         * omp-low.c (scan_omp_1_op): Call remap_type on TREE_TYPE
14668         for trees other than decls/types.
14669
14670 2009-05-29  Richard Guenther  <rguenther@suse.de>
14671
14672         * tree-ssa-operands.c (get_expr_operands): Do not handle
14673         INDIRECT_REFs in the handled-component case.  Remove
14674         unused get_ref_base_and_extent case.
14675         * tree-dfa.c (get_ref_base_and_extent): Avoid calling
14676         tree_low_cst and host_integerp where possible.
14677         * tree-ssa-structalias.c (equiv_class_label_eq): Check hash
14678         codes for equivalence.
14679         * dce.c (find_call_stack_args): Avoid redundant bitmap queries.
14680
14681 2009-05-29  David Billinghurst <billingd@gcc.gnu.org>
14682
14683         * config.gcc: Add i386/t-fprules-softfp and soft-fp/t-softfp
14684         to tmake_file for i[34567]86-*-cygwin*.
14685
14686 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
14687
14688         PR target/40017
14689         * config/rs6000/rs6000-c.c (_Bool_keyword): New variable.
14690         (altivec_categorize_keyword, init_vector_keywords,
14691         rs6000_cpu_cpp_builtins): Define _Bool as conditional macro
14692         similar to bool.
14693
14694 2009-05-29  Kai Tietz  <kai.tietz@onevision.com>
14695
14696         * tree.c (handle_dll_attribute): Check if node is
14697         of kind FUNCTION_DECL for DECL_DECLARED_INLINE_P check.
14698
14699 2009-05-29  Richard Earnshaw  <rearnsha@arm.com>
14700
14701         * config/arm/thumb2.md (thumb2_zero_extendsidi2): Add a split
14702         component.
14703         (thumb2_zero_extendqidi2): Likewise.
14704
14705 2009-05-28  Kaz Kojima  <kkojima@gcc.gnu.org>
14706
14707         * config/sh/sh.c (sh_expand_t_scc): Use gen_xorsi3_movrt
14708         instead of gen_movrt.
14709         * config/sh/sh.md (movrt): Remove.
14710
14711 2009-05-28  Steve Ellcey  <sje@cup.hp.com>
14712
14713         * doc/invoke.texi (IA-64 Options):
14714         Add -msdata, -mfused-madd, -mno-inline-float-divide,
14715         -mno-inline-int-divide, -mno-inline-sqrt, -msched-spec-ldc,
14716         -msched-spec-control-ldc, -msched-prefer-non-data-spec-insns,
14717         -msched-prefer-non-control-spec-insns,
14718         -msched-stop-bits-after-every-cycle,
14719         -msched-count-spec-in-critical-path,
14720         -msel-sched-dont-check-control-spec, -msched-fp-mem-deps-zero-cost
14721         -msched-max-memory-insns-hard-limit, -msched-max-memory-insns.
14722         Remove -mt, -pthread, -msched-ldc, -mno-sched-control-ldc,
14723         and -msched-spec-verbose.
14724
14725 2009-05-28  Joseph Myers  <joseph@codesourcery.com>
14726
14727         * config/arm/lib1funcs.asm (__clear_cache): Define if L_clear_cache.
14728         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Define to give an
14729         error if used.
14730         * config/arm/t-linux-eabi (LIB1ASMFUNCS): Add _clear_cache.
14731
14732 2009-05-28  Richard Guenther  <rguenther@suse.de>
14733
14734         * tree-ssa-alias.c (ao_ref_init): New function.
14735         (ao_ref_base): Likewise.
14736         (ao_ref_base_alias_set): Likewise.
14737         (ao_ref_alias_set): Likewise.
14738         (refs_may_alias_p_1): Change signature.
14739         (refs_may_alias_p): Adjust.
14740         (refs_anti_dependent_p): Likewise.
14741         (refs_output_dependent_p): Likewise.
14742         (call_may_clobber_ref_p_1): Change signature.
14743         (call_may_clobber_ref_p): Adjust.
14744         (stmt_may_clobber_ref_p_1): New function split out from ...
14745         (stmt_may_clobber_ref_p): ... here.
14746         (maybe_skip_until): Adjust signature.
14747         (get_continuation_for_phi): Likewise.
14748         (walk_non_aliased_vuses): Likewise.
14749         * tree-ssa-alias.h (struct ao_ref_s): New structure type.
14750         (ao_ref_init): Declare.
14751         (ao_ref_base): Likewise.
14752         (ao_ref_alias_set): Likewise.
14753         (stmt_may_clobber_ref_p_1): Likewise.
14754         (walk_non_aliased_vuses): Adjust.
14755         * tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): New function.
14756         (get_ref_from_reference_ops): remove.
14757         (vn_reference_lookup_2): Adjust signature.
14758         (vn_reference_lookup_3): Do not re-build trees.  Handle unions.
14759         (vn_reference_lookup_pieces): Adjust signature, do not re-build trees.
14760         (vn_reference_lookup): Adjust.
14761         (vn_reference_insert): Likewise.
14762         (vn_reference_insert_pieces): Adjust signature.
14763         (visit_reference_op_call): Adjust.
14764         * tree-ssa-pre.c (get_expr_type): Simplify.
14765         (phi_translate_1): Adjust.
14766         (compute_avail): Likewise.
14767         (translate_vuse_through_block): Do not re-build trees.
14768         (value_dies_in_block_x): Likewise.
14769         * tree-ssa-sccvn.h (struct vn_reference_s): Add type and alias-set
14770         fields.
14771         (vn_reference_lookup_pieces): Adjust declaration.
14772         (vn_reference_insert_pieces): Likewise.
14773
14774 2009-05-28  Benjamin Kosnik  <bkoz@redhat.com>
14775
14776         * tree-ssa-copy.c (replace_exp_1): Move op for warning-free use
14777         with checking disabled.
14778
14779 2009-05-28  Dave Korn  <dave.korn.cygwin@gmail.com>
14780
14781         PR target/37216
14782
14783         * configure.ac (HAVE_GAS_ALIGNED_COMM):  Add autoconf test and
14784         macro definition for support of three-operand format aligned
14785         .comm directive in assembler on cygwin/pe/mingw target OS.
14786         * configure:  Regenerate.
14787         * config.h:  Regenerate.
14788
14789         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common):  Use
14790         aligned form of .comm directive if -mpe-aligned-commons is in effect.
14791         * config/i386/cygming.opt (-mpe-aligned-commons):  Add new option.
14792
14793         * doc/invoke.texi (-mpe-aligned-commons):  Document new target option.
14794         * doc/tm.texi (ASM_OUTPUT_COMMON):  Document zero size commons.
14795
14796 2009-05-28  Ira Rosen  <irar@il.ibm.com>
14797
14798         PR tree-optimization/40254
14799         * tree-data-ref.c (dr_analyze_innermost): Take POFFSET into account
14800         in analysis of basic blocks.
14801
14802 2009-05-28  Adam Nemet  <anemet@caviumnetworks.com>
14803
14804         PR middle-end/33699
14805         * target.h (struct gcc_target): Fix indentation.  Add const_anchor.
14806         * target-def.h (TARGET_CONST_ANCHOR): New macro.
14807         (TARGET_INITIALIZER): Use it.
14808         * cse.c (CHEAPER): Move it up to the other macros.
14809         (insert): Rename this ...
14810         (insert_with_costs): ... to this.  Add cost parameters.  Update
14811         function comment.
14812         (insert): New function.  Call insert_with_costs.
14813         (compute_const_anchors, insert_const_anchor, insert_const_anchors,
14814         find_reg_offset_for_const, try_const_anchors): New functions.
14815         (cse_insn): Call try_const_anchors.  Adjust cost of src_related
14816         when using a const-anchor.  Call insert_const_anchors.
14817         * config/mips/mips.c (mips_set_mips16_mode): Set targetm.const_anchor.
14818         * doc/tm.texi (Misc): Document TARGET_CONST_ANCHOR.
14819
14820 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
14821
14822         * tree-inline.c (remap_decls): Enable nonlocalized variables
14823         when not optimizing.
14824
14825 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
14826
14827         * tree-ssa-live.c (remove_unused_locals): Skip when not optimizing.
14828         Simplify other tests involving optimize.
14829
14830 2009-05-27  Tom Tromey  <tromey@redhat.com>
14831
14832         * unwind-dw2.c (_Unwind_DebugHook): New function.
14833         (uw_install_context): Call _Unwind_DebugHook.
14834
14835 2009-05-27  Tom Tromey  <tromey@redhat.com>
14836
14837         * system.h (CONST_CAST2): Use C++ const_cast when compiled as C++
14838
14839 2009-05-27  Ian Lance Taylor  <iant@google.com>
14840
14841         * Makefile.in (LINKER, LINKER_FLAGS): Define.
14842         (LINKER_FOR_BUILD, BUILD_LINKERFLAGS): Define.
14843         (ALL_LINKERFLAGS): Define.
14844         (xgcc$(exeext)): Change $(COMPILER) to $(LINKER).
14845         (cpp$(exeext), cc1-dummy$(exeext), cc1$(exeext)): Likewise.
14846         (collect2$(exeext), mips-tfile, mips-tdump): Likewise.
14847         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
14848         (build/gen%$(build_exeext)): Change $(COMPILER_FOR_BUILD) to
14849         $(LINKER_FOR_BUILD).
14850         (build/gcov-iov$(build_exeext)): Likewise.
14851
14852 2009-05-27  Julian Brown  <julian@codesourcery.com>
14853
14854         * gcse.c (target.h): Include.
14855         (can_assign_to_reg_without_clobbers_p): Check that the target allows
14856         copy of argument to a pseudo register.
14857
14858 2009-05-27  Diego Novillo  <dnovillo@google.com>
14859
14860         * tree-ssa-live.c (dump_scope_block): Document arguments.
14861         (dump_scope_blocks): Document.
14862         (debug_scope_blocks): New.
14863         * tree-flow.h (debug_scope_blocks): Declare.
14864
14865 2009-05-21  Denis Chertykov  <denisc@overta.ru>
14866
14867         * doc/contrib.texi (Contributors): Add myself to the list.
14868
14869 2009-05-27  Olivier Hainque  <hainque@adacore.com>
14870
14871         * expr.c (target_align): New function.  Alignment the TARGET of an
14872         assignment may be assume to have.
14873         (highest_pow2_factor_for_target): Use it instead of relying on
14874         immediate tree attributes of TARGET, not necessarily honored when
14875         intermediate bitfields are involved.
14876
14877 2009-05-27  H.J. Lu  <hongjiu.lu@intel.com>
14878
14879         PR target/40266
14880         * config/i386/driver-i386.c (host_detect_local_cpu): Support
14881         AVX, SSE4, AES, PCLMUL and POPCNT.
14882
14883 2009-05-27  Diego Novillo  <dnovillo@google.com>
14884
14885         * tree-pretty-print.c (dump_location): New.
14886         (dump_generic_node): Call it.
14887         Factor code to handle BLOCK nodes ...
14888         (dump_block_node): ... here.
14889
14890 2009-05-27  Rafael Avila de Espindola  <espindola@google.com>
14891
14892         * Makefile.in (GCC_PLUGIN_H): New. Replace all uses of gcc-plugin.h
14893         with it.
14894         * doc/plugins.texi: Document that gcc-plugin.h must be the first to be
14895         included.
14896         * gcc-plugin.h: Include config.h and system.h.
14897         (IN_GCC): Define if not defined.
14898
14899 2009-05-27  Hans-Peter Nilsson  <hp@axis.com>
14900
14901         PR middle-end/40249
14902         * Makefile.in (CRTSTUFF_CFLAGS): Replace -fno-inline-functions
14903         with -fno-inline.
14904
14905 2009-05-27  Shujing Zhao  <pearly.zhao@oracle.com>
14906
14907         * config/m32r/m32r.c: Use REG_P, MEM_P and CONST_INT_P where
14908         applicable.
14909         * config/m32r/m32r.h: Ditto.
14910         * config/m32r/m32r.md: Ditto.
14911         * config/m32r/predicates.md: Ditto.
14912
14913 2009-05-27  Alexandre Oliva  <aoliva@redhat.com>
14914
14915         * cgraph.c (dump_cgraph_node): Honor -fdump-noaddr.
14916
14917 2009-05-26  Basile Starynkevitch  <basile@starynkevitch.net>
14918
14919         * doc/plugins.texi
14920         (Loading plugins): typo.
14921         (Plugin callbacks): Documented PLUGIN_INFO, PLUGIN_GGC_START,
14922         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
14923         (Interacting with the GCC Garbage Collector): Added new section.
14924         (Giving information about a plugin): Added new section for
14925         PLUGIN_INFO.
14926         * ggc.h (ggc_register_root_tab): Added declaration.
14927         * gcc-plugin.h (PLUGIN_GGC_START, PLUGIN_GGC_MARKING)
14928         (PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS): Added new events.
14929         (register_callback): Improved comment in declaration.
14930         * ggc-common.c (const_ggc_root_tab_t) Added new typedef for vectors.
14931         (extra_root_vec) Added static variable for dynamic roots registration.
14932         (ggc_register_root_tab) Added new routine.
14933         (ggc_mark_roots) Added iteration inside extra_root_vec, and invoke
14934         PLUGIN_GGC_MARKING event.
14935         * ggc-zone.c: Include plugin.h.
14936         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
14937         * ggc-page.c: Include plugin.h.
14938         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
14939         * plugin.c (plugin_event_name): added names of PLUGIN_GGC_START,
14940         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS
14941         (register_callback): check lack of callbacks for
14942         pseudo-events. Added handling of PLUGIN_REGISTER_GGC_ROOTS,
14943         PLUGIN_GGC_START, PLUGIN_GGC_MARKING, PLUGIN_GGC_END.
14944         (invoke_plugin_callbacks): Handle PLUGIN_GGC_START,
14945         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
14946         * Makefile.in (ggc-common.o, ggc-zone.o, ggc-page.o): Added
14947         dependency on plugin.h.
14948         (plugin.o): Added dependency on ggc.h...
14949
14950 2009-05-26  Richard Guenther  <rguenther@suse.de>
14951
14952         PR middle-end/40248
14953         Revert
14954         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
14955         with mismatched comparison modes.
14956
14957         * expr.c (expand_expr_real_1): Expand the operand of a
14958         VIEW_CONVERT_EXPR in its natural mode.
14959
14960 2009-05-26  Ian Lance Taylor  <iant@google.com>
14961
14962         * Makefile.in (COMPILER, COMPILER_FLAGS): Define.
14963         (COMPILER_FOR_BUILD, BUILD_COMPILERFLAGS): Define.
14964         (ALL_COMPILERFLAGS): Define.
14965         (.c.o, xgcc$(exeext), cpp$(exeext)): Use $(COMPILER).
14966         (cc1-dummy$(exeext), cc1$(exeext)): Likewise.
14967         (collect2$(exeext), collect2.o): Likewise.
14968         (c-opts.o, c-cppbuiltin.o, c-pch.o, gcc.o, gccspec.o): Likewise.
14969         (gcc-options.o, version.o, prefix.o, toplev.o): Likewise.
14970         ($(out_object_file), mips-tfile, mips-tdump): Likewise.
14971         (libbackend.o, intl.o, cppdefault.o): Likewise.
14972         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
14973         (build/%.o): Use $(COMPILER_FOR_BUILD).
14974         (build/gen%$(build_exeext)): Likewise.
14975         (build/gcov-iov$(build_exeext)): LIkewise.
14976         * config/t-darwin (darwin.o): Use $(COMPILER).
14977         (darwin-c.o, darwin-f.o, darwin-driver.o): Likewise.
14978         * config/t-sol2 (sol2-c.o): Likewise.
14979         (sol2.o): Likewise.
14980         * config/t-vxworks (vxworks.o): Likewise.
14981         * config/x-darwin (host-darwin.o): Likewise.
14982         * config/x-hpux (host-hpux.o): Likewise.
14983         * config/x-linux (host-linux.o): Likewise.
14984         * config/x-solaris (host-solaris.o): Likewise.
14985         * config/alpha/x-alpha (driver-alpha.o): Likewise.
14986         * config/arm/t-arm (arm-c.o): Likewise.
14987         * config/arm/t-pe (pe.o): Likewise.
14988         * config/arm/t-wince-pe (pe.o): Likewise.
14989         * config/i386/t-cygming (winnt.o): Likewise.
14990         (winnt-cxx.o, winnt-stubs.o, msformat-c.o): Likewise.
14991         * config/i386/t-cygwin (cygwin1.o): Likewise.
14992         (cygwin2.o): Likewise.
14993         * config/i386/t-i386 (i386-c.o): Likewise.
14994         * config/i386/t-interix (winnt.o): Likewise.
14995         * config/i386/t-netware (netware.o): Likewise.
14996         * config/i386/t-nwld (nwld.o): Likewise.
14997         * config/i386/x-darwin (host-i386-darwin.o): Likewise.
14998         * config/i386/x-i386 (driver-i386.o): Likewise.
14999         * config/i386/x-cygwin (host-cygwin.o): Likewise.
15000         * config/i386/x-mingw32 (host-mingw32.o): Likewise.
15001         * config/ia64/t-ia64 (ia64-c.o): Likewise.
15002         * config/m32c/t-m32c (m32c-pragma.o): Likewise.
15003         * config/mips/x-native (driver-native.o): Likewise.
15004         * config/rs6000/t-rs6000 (rs6000-c.o): Likewise.
15005         * config/rs6000/x-darwin (host-ppc-darwin.o): Likewise.
15006         * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Likewise.
15007         * config/rs6000/x-rs6000 (driver-rs6000.o): Likewise.
15008         * config/score/t-score-elf (score7.o): Likewise.
15009         (score3.o): Likewise.
15010         * config/sh/t-sh (sh-c.o): Likewise.
15011         * config/sh/t-symbian (sh-c.o): Likewise.
15012         (symbian.o): Likewise.
15013         * config/spu/t-spu-elf (spu-c.o): Likewise.
15014         * config/v850/t-v850 (v850-c.o): Likewise.
15015         * config/v850/t-v850e (v850-c.o): Likewise.
15016
15017 2009-05-26  Richard Guenther  <rguenther@suse.de>
15018
15019         PR tree-optimization/40122
15020         * tree-ssa-ccp.c (ccp_fold): Fold vector CONSTRUCTORs to
15021         VECTOR_CSTs if possible.
15022         (fold_gimple_assign): Likewise.
15023
15024 2009-05-26  Richard Guenther  <rguenther@suse.de>
15025
15026         PR middle-end/40252
15027         * fold-const.c (fold_binary): Use the correct types for building
15028         rotates.
15029
15030 2009-05-26  Richard Guenther  <rguenther@suse.de>
15031
15032         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove
15033         redundant calls to merge_alias_info.
15034         (bump_vector_ptr): Likewise.
15035         * tree-ssa-copy.c (merge_alias_info): Remove.
15036         (replace_exp_1): Remove call to merge_alias_info.
15037         (propagate_tree_value): Likewise.
15038         (fini_copy_prop): Propagate points-to info.
15039         * tree-flow.h (merge_alias_info): Remove.
15040
15041 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
15042
15043         * config/picochip/picochip.C (PARAM_INLINE_CALL_COST): Remove.
15044
15045 2009-05-25  Jan Hubicka  <jh@suse.cz>
15046
15047         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
15048         * cgraph.h (struct inline_summary): New filed self_wize,
15049         size_inlining_benefit, self_time and time_inlining_benefit.
15050         (struct cgraph_global_info): Replace insns by time ans size fields.
15051         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
15052         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
15053         (ipcp_update_callgraph): Do not touch function bodies.
15054         * ipa-inline.c: Include except.h
15055         (MAX_TIME): New constant.
15056         (overall_insns): Remove.
15057         (leaf_node_p): New.
15058         (overall_size, max_benefit): New static variables.
15059         (cgraph_estimate_time_after_inlining): New function.
15060         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
15061         (cgraph_clone_inlined_nodes): Update size.
15062         (cgraph_mark_inline_edge): Update size.
15063         (cgraph_estimate_growth): Use size info.
15064         (cgraph_check_inline_limits): Check size.
15065         (cgraph_default_inline_p): Likewise.
15066         (cgraph_edge_badness): Compute badness based on benefit and size cost.
15067         (cgraph_decide_recursive_inlining): Check size.
15068         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
15069         and times.
15070         (cgraph_decide_inlining): Likewise.
15071         (cgraph_decide_inlining_incrementally): Likewise; honor
15072         PARAM_EARLY_INLINING_INSNS.
15073         (likely_eliminated_by_inlining_p): New predicate.
15074         (estimate_function_body_sizes): New function.
15075         (compute_inline_parameters): Use it.
15076         * except.c (must_not_throw_labels): New function.
15077         * except.h (must_not_throw_labels): Declare.
15078         * tree-inline.c (init_inline_once): Kill inlining_weigths
15079         * tree-ssa-structalias.c: Avoid uninitialized warning.
15080         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
15081         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
15082         (PARAM_INLINE_CALL_COST): Remove.
15083         (PARAM_EARLY_INLINING_INSNS): New.
15084
15085 2009-05-25  Richard Guenther  <rguenther@suse.de>
15086
15087         PR tree-optimization/36327
15088         * tree-ssa-alias.c (walk_non_aliased_vuses): Add second walker
15089         callback for reference translation or lookup at the point of may-defs.
15090         * tree-ssa-alias.h (walk_non_aliased_vuses): Adjust prototype.
15091         * tree-ssa-sccvn.c (get_ref_from_reference_ops): Bail out
15092         for union COMPONENT_REFs.
15093         (vn_reference_lookup_3): New callback.  Lookup from memset
15094         and CONSTRUCTOR assignment, translate through struct copies.
15095         (vn_reference_lookup_pieces): Make sure to not free the
15096         passed operands array.  Adjust walk_non_aliased_vuses call.
15097         (vn_reference_lookup): Adjust walk_non_aliased_vuses call,
15098         make sure we do not leak memory.
15099
15100 2009-05-25  Richard Guenther  <rguenther@suse.de>
15101
15102         * tree-ssa-alias.h (dump_points_to_solution): Declare.
15103         * tree-inline.c (expand_call_inline): Reset the escaped and
15104         callused solutions.
15105         * tree-ssa-structalias.c (pass_build_ealias): New.
15106         * tree-pass.h (pass_build_ealias): Declare.
15107         * passes.c (init_optimization_passes): Add PTA during
15108         early optimizations.
15109         * tree-ssa-alias.c (dump_alias_info): Dump the ESCAPED
15110         and CALLUSED solutions.
15111         (dump_points_to_solution): New function, split out from ...
15112         (dump_points_to_info_for): ... here.
15113         * tree-parloops.c (parallelize_loops): Reset the escaped and
15114         callused solutions.
15115
15116 2009-05-25  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
15117
15118         PR bootstrap/40027
15119         * config/i386/i386.c (USE_HIDDEN_LINKONCE): Only define if missing.
15120         * config/i386/sol2.h [!TARGET_GNU_LD] (USE_HIDDEN_LINKONCE): Define.
15121
15122 2009-05-25  Ira Rosen  <irar@il.ibm.com>
15123
15124         PR tree-optimization/40238
15125         * tree-vect-stmts.c (vect_init_vector): Insert initialization
15126         statements after basic block's labels.
15127         * tree-vect-slp.c (vect_slp_transform_bb): Call destroy_bb_vec_info()
15128         to free the allocated memory.
15129
15130 2009-05-24  Kaz Kojima  <kkojima@gcc.gnu.org>
15131
15132         * gcc/config/sh/sh.c (sh_set_return_address): Mark store of
15133         return address with a USE.
15134
15135 2009-05-24  Richard Guenther  <rguenther@suse.de>
15136
15137         PR middle-end/40233
15138         * tree.c (make_vector_type): Build the TYPE_DEBUG_REPRESENTATION_TYPEs
15139         array type from the main variant of the inner type.
15140
15141 2009-05-24  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
15142
15143         * config/vax/vax-protos.h (legitimate_constant_address_p): Change
15144         definition to bool (from int) to un-break build.
15145         (legitimate_constant_p, vax_mode_dependent_address_p): Likewise.
15146
15147 2009-05-24  Paolo Bonzini  <bonzini@gnu.org>
15148
15149         * tree-ssa-operands.h (push_stmt_changes, pop_stmt_changes,
15150         discard_stmt_changes): Delete.
15151         * tree-ssa-operands.c (scb_stack): Delete.
15152         (init_ssa_operands): Do not initialize it.
15153         (fini_ssa_operands): Do not free it.
15154         (push_stmt_changes, pop_stmt_changes, discard_stmt_changes): Delete.
15155
15156         * tree-cfg.c (replace_uses_by): Replace pop_stmt_changes with
15157         update_stmt, remove the others.  Fix comments.
15158         * tree-dfa.c (optimize_stack_restore): Likewise.
15159         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Likewise.
15160         * tree-ssa-loop-ivopts.c (rewrite_use): Likewise.
15161         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Likewise.
15162         * tree-ssa-ccp.c (optimize_stack_restore, execute_fold_all_builtins):
15163         Likewise.
15164         * tree-ssa-propagate.c (substitute_and_fold): Likewise.
15165         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
15166         (dom_opt_finalize_block): Likewise, adjusting access to
15167         stmts_to_rescan.
15168         (optimize_stmt): Likewise, adjusting access to stmts_to_rescan.
15169         (stmts_to_rescan): Change item type to gimple.
15170         (tree_ssa_dominator_optimize): Change type of stmts_to_rescan.
15171
15172 2009-05-24  Ira Rosen  <irar@il.ibm.com>
15173
15174         * doc/passes.texi (Tree-SSA passes): Document SLP pass.
15175         * tree-pass.h (pass_slp_vectorize): New pass.
15176         * params.h (SLP_MAX_INSNS_IN_BB): Define.
15177         * timevar.def (TV_TREE_SLP_VECTORIZATION): Define.
15178         * tree-vectorizer.c (timevar.h): Include.
15179         (user_vect_verbosity_level): Declare.
15180         (vect_location): Fix comment.
15181         (vect_set_verbosity_level): Update user_vect_verbosity_level
15182         instead of vect_verbosity_level.
15183         (vect_set_dump_settings): Add an argument. Ignore user defined
15184         verbosity if dump flags require higher level of verbosity. Print to
15185         stderr only for loop vectorization.
15186         (vectorize_loops): Update call to vect_set_dump_settings.
15187         (execute_vect_slp): New function.
15188         (gate_vect_slp): Likewise.
15189         (struct gimple_opt_pass pass_slp_vectorize): New.
15190         * tree-vectorizer.h (struct _bb_vec_info): Define along macros to
15191         access its members.
15192         (vec_info_for_bb): New function.
15193         (struct _stmt_vec_info): Add bb_vinfo and a macro for its access.
15194         (VECTORIZATION_ENABLED): New macro.
15195         (SLP_ENABLED, SLP_DISABLED): Likewise.
15196         (vect_is_simple_use): Add bb_vec_info argument.
15197         (new_stmt_vec_info, vect_analyze_data_ref_dependences,
15198         vect_analyze_data_refs_alignment, vect_verify_datarefs_alignment,
15199         vect_analyze_data_ref_accesses, vect_analyze_data_refs,
15200         vect_schedule_slp, vect_analyze_slp): Likewise.
15201         (vect_analyze_stmt): Add slp_tree argument.
15202         (find_bb_location): Declare.
15203         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
15204         * tree-vect-loop.c (new_loop_vec_info): Adjust function calls.
15205         (vect_analyze_loop_operations, vect_analyze_loop,
15206         get_initial_def_for_induction, vect_create_epilog_for_reduction,
15207         vect_finalize_reduction, vectorizable_reduction,
15208         vectorizable_live_operation, vect_transform_loop): Likewise.
15209         * tree-data-ref.c (dr_analyze_innermost): Update comment,
15210         skip evolution analysis if analyzing a basic block.
15211         (dr_analyze_indices): Likewise.
15212         (initialize_data_dependence_relation): Skip the test whether the
15213         object is invariant for basic blocks.
15214         (compute_all_dependences): Skip dependence analysis for data
15215         references in basic blocks.
15216         (find_data_references_in_stmt): Don't fail in case of invariant
15217         access in basic block.
15218         (find_data_references_in_bb): New function.
15219         (find_data_references_in_loop): Move code to
15220         find_data_references_in_bb and add a call to it.
15221         (compute_data_dependences_for_bb): New function.
15222         * tree-data-ref.h (compute_data_dependences_for_bb): Declare.
15223         * tree-vect-data-refs.c (vect_check_interleaving): Adjust to the case
15224         that STEP is 0.
15225         (vect_analyze_data_ref_dependence): Check for interleaving in case of
15226         unknown dependence in basic block and fail in case of dependence in
15227         basic block.
15228         (vect_analyze_data_ref_dependences): Add bb_vinfo argument, get data
15229         dependence instances from either loop or basic block vectorization
15230         info.
15231         (vect_compute_data_ref_alignment): Check if it is loop vectorization
15232         before calling nested_in_vect_loop_p.
15233         (vect_compute_data_refs_alignment): Add bb_vinfo argument, get data
15234         dependence instances from either loop or basic block vectorization
15235         info.
15236         (vect_verify_datarefs_alignment): Likewise.
15237         (vect_enhance_data_refs_alignment): Adjust function calls.
15238         (vect_analyze_data_refs_alignment): Likewise.
15239         (vect_analyze_group_access): Fix printing. Skip different checks if
15240         DR_STEP is 0. Keep strided stores either in loop or basic block
15241         vectorization data structure. Fix indentation.
15242         (vect_analyze_data_ref_access): Fix comments, allow zero step in
15243         basic blocks.
15244         (vect_analyze_data_ref_accesses): Add bb_vinfo argument, get data
15245         dependence instances from either loop or basic block vectorization
15246         info.
15247         (vect_analyze_data_refs): Update comment. Call
15248         compute_data_dependences_for_bb to analyze basic blocks.
15249         (vect_create_addr_base_for_vector_ref): Check for outer loop only in
15250         case of loop vectorization. In case of basic block vectorization use
15251         data-ref itself as a base.
15252         (vect_create_data_ref_ptr): In case of basic block vectorization:
15253         don't advance the pointer, add new statements before the current
15254         statement.  Adjust function calls.
15255         (vect_supportable_dr_alignment): Support only aligned accesses in
15256         basic block vectorization.
15257         * common.opt (ftree-slp-vectorize): New flag.
15258         * tree-vect-patterns.c (widened_name_p): Adjust function calls.
15259         (vect_pattern_recog_1): Likewise.
15260         * tree-vect-stmts.c (process_use): Likewise.
15261         (vect_init_vector): Add new statements in the beginning of the basic
15262         block in case of basic block SLP.
15263         (vect_get_vec_def_for_operand): Adjust function calls.
15264         (vect_finish_stmt_generation): Likewise.
15265         (vectorizable_call): Add assert that it is loop vectorization, adjust
15266         function calls.
15267         (vectorizable_conversion, vectorizable_assignment): Likewise.
15268         (vectorizable_operation): In case of basic block SLP, take
15269         vectorization factor from statement's type and skip the relevance
15270         check. Adjust function calls.
15271         (vectorizable_type_demotion): Add assert that it is loop
15272         vectorization, adjust function calls.
15273         (vectorizable_type_promotion): Likewise.
15274         (vectorizable_store): Check for outer loop only in case of loop
15275         vectorization. Adjust function calls. For basic blocks, skip the
15276         relevance check and don't advance pointers.
15277         (vectorizable_load): Likewise.
15278         (vectorizable_condition): Add assert that it is loop vectorization,
15279         adjust function calls.
15280         (vect_analyze_stmt): Add argument. In case of basic block SLP, check
15281         that it is not reduction, get vector type, call only supported
15282         functions, skip loop specific parts.
15283         (vect_transform_stmt): Check for outer loop only in case of loop
15284         vectorization.
15285         (new_stmt_vec_info): Add new argument and initialize bb_vinfo.
15286         (vect_is_simple_use): Fix comment, add new argument, fix conditions
15287         for external definition.
15288         * passes.c (pass_slp_vectorize): New pass.
15289         * tree-vect-slp.c (find_bb_location): New function.
15290         (vect_get_and_check_slp_defs): Add argument, adjust function calls,
15291         check for patterns only in loops.
15292         (vect_build_slp_tree): Add argument, adjust function calls, fail in
15293         case of multiple types in basic block SLP.
15294         (vect_mark_slp_stmts_relevant): New function.
15295         (vect_supported_load_permutation_p): Fix comment.
15296         (vect_analyze_slp_instance): Add argument. In case of basic block
15297         SLP, take vectorization factor from statement's type, check that
15298         unrolling factor is 1. Adjust function call. Save SLP instance in
15299         either loop or basic block vectorization structure. Return FALSE,
15300         if SLP failed.
15301         (vect_analyze_slp): Add argument. Get strided stores groups from
15302         either loop or basic block vectorization structure. Return FALSE
15303         if basic block SLP failed.
15304         (new_bb_vec_info): New function.
15305         (destroy_bb_vec_info, vect_slp_analyze_node_operations,
15306         vect_slp_analyze_operations, vect_slp_analyze_bb): Likewise.
15307         (vect_schedule_slp): Add argument. Get SLP instances from either
15308         loop or basic block vectorization structure. Set vectorization factor
15309         to be 1 for basic block SLP.
15310         (vect_slp_transform_bb): New function.
15311         * params.def (PARAM_SLP_MAX_INSNS_IN_BB): Define.
15312
15313 2009-05-23  Mark Mitchell  <mark@codesourcery.com>
15314
15315         * final.c (shorten_branches): Do not align labels for jump tables.
15316         (final_scan_insn): Use JUMP_TABLE_DATA_P.
15317
15318 2009-05-23  Eric Botcazou  <ebotcazou@adacore.com>
15319
15320         * doc/passes.texi: Standardize spelling of RTL, Tree and Tree SSA.
15321         Remove outdated reference to flow.c and fix nits.
15322         * doc/gccint.texi: Tweak RTL description.
15323         * doc/rtl.texi: Likewise.
15324
15325 2009-05-23  Denis Chertykov  <chertykov@gmail.com>
15326
15327         * config/avr/avr.c: Change my email address.
15328         * config/avr/avr.h: Likewise.
15329         * config/avr/avr.md: Likewise.
15330         * config/avr/avr-protos.h: Likewise.
15331         * config/avr/libgcc.S: Likewise.
15332
15333 2009-05-22  Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
15334
15335         * config/spu/spu-protos.h (aligned_mem_p, spu_valid_mov): Remove.
15336         (spu_split_load, spu_split_store): Change return type to int.
15337         (spu_split_convert): Declare.
15338         * config/spu/predicates.md (spu_mem_operand): Remove.
15339         (spu_mov_operand): Update.
15340         (spu_dest_operand, shiftrt_operator, extend_operator): Define.
15341         * config/spu/spu.c (regno_aligned_for_load): Remove.
15342         (reg_aligned_for_addr, spu_expand_load): Define.
15343         (spu_expand_extv): Reimplement and handle MEM.
15344         (spu_expand_insv): Handle MEM.
15345         (spu_sched_reorder): Handle insn's with length 0.
15346         (spu_legitimate_address_p): Reimplement.
15347         (store_with_one_insn_p): Return TRUE for any mode with size
15348         larger than 16 bytes.
15349         (address_needs_split): Define.
15350         (spu_expand_mov): Call spu_split_load and spu_split_store for MEM
15351         operands.
15352         (spu_convert_move): Define.
15353         (spu_split_load): Use spu_expand_load and change all MEM's to TImode.
15354         (spu_split_store): Change all MEM's to TImode.
15355         (spu_init_expanders): Preallocate registers that correspond to
15356         LAST_VIRTUAL_REG+1 and LAST_VIRTUAL_REG+2 and set them with
15357         mark_reg_pointer.
15358         (spu_split_convert): Define.
15359         * config/spu/spu.md (QHSI, QHSDI): New mode iterators.
15360         (_move<mode>, _movdi, _movti): Update predicate and condition.
15361         (load, store): Change to define_split.
15362         (extendqiti2, extendhiti2, extendsiti2, extendditi2): Simplify to
15363         extend<mode>ti2.
15364         (zero_extendqiti2, zero_extendhiti2, <v>lshr<mode>3_imm): Define.
15365         (lshr<mode>3, lshr<mode>3_imm, lshr<mode>3_re): Simplify to one
15366         define_insn_and_split of lshr<mode>3.
15367         (shrqbybi_<mode>, shrqby_<mode>): Simplify to define_expand.
15368         (<v>ashr<mode>3_imm): Define.
15369         (extv, extzv, insv): Allow MEM operands.
15370         (trunc_shr_ti<mode>, trunc_shr_tidi, shl_ext_<mode>ti,
15371         shl_ext_diti, sext_trunc_lshr_tiqisi, zext_trunc_lshr_tiqisi,
15372         sext_trunc_lshr_tihisi, zext_trunc_lshr_tihisi): Define for combine.
15373         (_spu_convert2): Change to define_insn_and_split and remove the
15374         corresponding define_peephole2.
15375         (stack_protect_set, stack_protect_test, stack_protect_test_si):
15376         Change predicates to memory_operand.
15377
15378 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
15379
15380         * config/arm/thumb2.md: Add 16-bit multiply instructions.
15381
15382 2009-05-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
15383
15384         PR tree-optimization/40219
15385         * tree.c (iterative_hash_expr): Make sure the builtin function is
15386         a normal builtin function and not a front end or back end builtin
15387         before indexing into the built_in_decls array.
15388
15389 2009-05-22  Richard Guenther  <rguenther@suse.de>
15390
15391         PR middle-end/38964
15392         * alias.c (write_dependence_p): Do not use TBAA for answering
15393         anti-dependence or output-dependence.
15394         * tree-ssa-structalias.c (set_uids_in_ptset): Remove TBAA pruning code.
15395         (emit_pointer_definition): Remove.
15396         (emit_alias_warning): Likewise.
15397         (find_what_var_points_to): Remove TBAA pruning code.
15398         (find_what_p_points_to): Likewise.  Do not warn about strict-aliasing
15399         violations.
15400         (compute_points_to_sets): Remove code computing the set of
15401         dereferenced pointers.
15402         * tree-data-ref.c (dr_may_alias_p): Properly use the split
15403         oracle for querying anti and output dependencies.
15404         * tree-ssa-alias.c (refs_may_alias_p_1): Add argument specifying
15405         if TBAA may be applied.
15406         (refs_anti_dependent_p): New function.
15407         (refs_output_dependent_p): Likewise.
15408         * tree-ssa-alias.h (refs_anti_dependent_p): Declare.
15409         (refs_output_dependent_p): Likewise.
15410         * doc/tree-ssa.texi (Memory model): New section.
15411         * doc/c-tree.texi (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
15412         * doc/gimple.texi (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
15413         * cfgexpand.c (expand_gimple_basic_block): Do not handle
15414         GIMPLE_CHANGE_DYNAMIC_TYPE or CHANGE_DYNAMIC_TYPE_EXPR.
15415         * expr.c (expand_expr_real_1): Likewise.
15416         * gimple-low.c (lower_stmt): Likewise.
15417         * gimple-pretty-print.c (dump_gimple_stmt): Likewise.
15418         (dump_gimple_cdt): Remove.
15419         * gimple.c (gss_for_code): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
15420         (gimple_size): Likewise.
15421         (walk_gimple_op): Likewise.
15422         (is_gimple_stmt): Likewise.
15423         (walk_stmt_load_store_addr_ops): Likewise.
15424         (gimple_build_cdt): Remove.
15425         * gimple.def (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
15426         * gimple.h (gimple_cdt_new_type): Remove.
15427         (gimple_cdt_new_type_ptr): Likewise.
15428         (gimple_cdt_set_new_type): Likewise.
15429         (gimple_cdt_location): Likewise.
15430         (gimple_cdt_location_ptr): Likewise.
15431         (gimple_cdt_set_location): Likewise.
15432         * gimplify.c (gimplify_expr): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
15433         * tree-cfg.c (remove_useless_stmts_1): Do not handle
15434         GIMPLE_CHANGE_DYNAMIC_TYPE.
15435         (verify_types_in_gimple_stmt): Likewise.
15436         * tree-inline.c (estimate_num_insns): Likewise.
15437         (expand_call_inline): Do not copy DECL_NO_TBAA_P.
15438         (copy_decl_to_var): Likewise.
15439         (copy_result_decl_to_var): Likewise.
15440         * tree-pretty-print.c (dump_generic_node): Do not handle
15441         CHANGE_DYNAMIC_TYPE_EXPR.
15442         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
15443         * tree-ssa-operands.c (get_expr_operands): Likewise.
15444         * tree-ssa-structalias.c (struct variable_info): Remove
15445         no_tbaa_pruning member.
15446         (new_var_info): Do not set it based on DECL_NO_TBAA_P.
15447         (unify_nodes): Do not copy it.
15448         (find_func_aliases): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
15449         (dump_solution_for_var): Do not dump no_tbaa_pruning state.
15450         (set_uids_in_ptset): Do not check it.
15451         (find_what_var_points_to): Likewise.
15452         (compute_tbaa_pruning): Remove.
15453         (compute_points_to_sets): Do not call it.
15454         * tree.c (walk_tree_1): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
15455         * tree.def (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
15456         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Remove.
15457         (CHANGE_DYNAMIC_TYPE_LOCATION): Likewise.
15458         (DECL_NO_TBAA_P): Likewise.
15459         (struct tree_decl_common): Move no_tbaa_flag to unused flags section.
15460         * omp-low.c (copy_var_decl): Do not copy DECL_NO_TBAA_P.
15461         (expand_omp_atomic_pipeline): Do not set it.
15462         * print-tree.c (print_node): Do not dump it.
15463         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
15464         redundant check.
15465
15466 2009-05-22 Vladimir Makarov <vmakarov@redhat.com>
15467
15468         PR target/39856
15469         * reg-stack.c (subst_stack_regs_pat): Remove gcc_assert for note
15470         for clobber.
15471
15472 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
15473
15474         * tree.c (handle_dll_attribute): Mark dllexport'd inlines as
15475         non-external.
15476
15477 2009-05-22  Ben Elliston  <bje@au.ibm.com>
15478
15479         * Makefile.in (bversion.h, s-bversion): New targets.
15480         (TOPLEV_H): Add bversion.h.
15481         * toplev.h: Include "bversion.h".
15482         (ATTRIBUTE_GCC_DIAG): When building with checking disabled, use
15483         the __format__ attribute only if compiling with the same version
15484         of GCC as the sources (the "build version").
15485
15486 2009-05-22  Ben Elliston  <bje@au.ibm.com>
15487
15488         * c-format.c (handle_format_attribute): Fix comment typo.
15489
15490 2009-05-21  Steve Ellcey  <sje@cup.hp.com>
15491
15492         PR target/37846
15493         * config/ia64/ia64.opt (mfused-madd): New.
15494         * config/ia64/ia64.h (TARGET_DEFAULT): Set MASK_FUSED_MADD.
15495         * config/ia64/hpux.h (TARGET_DEFAULT): Ditto.
15496         * config/ia64/ia64.md (maddsf4, msubsf4, nmaddsf4,
15497         madddf4, madddf4_trunc, msubdf4, msubdf4_trunc, nmadddf4,
15498         nmadddf4_truncsf, maddxf4, maddxf4_truncsf, maddxf4_truncdf,
15499         msubxf4, msubxf4_truncsf msubxf4_truncdf, nmaddxf4,
15500         nmaddxf4_truncsf, nmaddxf4_truncdf): Check TARGET_FUSED_MADD.
15501         * config/ia64/vect.md (addv2sf3, subv2sf3): Force fpma/fpms
15502         instruction if !TARGET_FUSED_MADD.
15503         (fpma, fpms): Remove colon from name.
15504
15505 2009-05-22  Richard Guenther  <rguenther@suse.de>
15506
15507         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Record
15508         TMR_ORIGINAL.  Always either record TMR_SYMBOL or TMR_BASE.
15509         * tree-ssa-pre.c (create_component_ref_by_pieces_1): Handle
15510         TARGET_MEM_REF.
15511         (create_expression_by_pieces): Only convert if necessary.
15512         * gimplify.c (gimplify_expr): Handle TARGET_MEM_REF.
15513         * tree-ssa-loop-im.c (gen_lsm_tmp_name): Handle INTEGER_CST.
15514
15515 2009-05-21  Adam Nemet  <anemet@caviumnetworks.com>
15516
15517         * config/mips/mips.md (*extzv_trunc<mode>_exts): Turn into a
15518         regular pattern from a template and rename it ...
15519         (*extzv_truncsi_exts): ... to this.
15520
15521 2009-05-21  Richard Guenther  <rguenther@suse.de>
15522
15523         * cgraph.h (struct cgraph_node): Remove inline_decl member.
15524         * ipa-inline.c (cgraph_mark_inline_edge): Do not check it.
15525         (cgraph_default_inline_p): Likewise.
15526         (cgraph_decide_inlining_incrementally): Likewise.
15527
15528 2009-05-21  H.J. Lu  <hongjiu.lu@intel.com>
15529             Uros Bizjak  <ubizjak@gmail.com>
15530
15531         * config/i386/cpuid.h (bit_MOVBE): New.
15532
15533         * config/i386/driver-i386.c (host_detect_local_cpu): Check movbe.
15534
15535         * config/i386/i386.c (OPTION_MASK_ISA_MOVBE_SET): New.
15536         (OPTION_MASK_ISA_MOVBE_UNSET): Likewise.
15537         (ix86_handle_option): Handle OPT_mmovbe.
15538         (ix86_target_string): Add -mmovbe.
15539         (pta_flags): Add PTA_MOVBE.
15540         (processor_alias_table): Add PTA_MOVBE to "atom".
15541         (override_options): Handle PTA_MOVBE.
15542
15543         * config/i386/i386.h (TARGET_MOVBE): New.
15544
15545         * config/i386/i386.md (bswapsi2): Check TARGET_MOVBE.
15546         (*bswapsi_movbe): New.
15547         (*bswapdi_movbe): Likewise.
15548         (bswapdi2): Renamed to ...
15549         (*bswapdi_1): This.
15550         (bswapdi2): New expander.
15551
15552         * config/i386/i386.opt (mmovbe): New.
15553
15554         * doc/invoke.texi: Document -mmovbe.
15555
15556 2009-05-21  Taras Glek  <tglek@mozilla.com>
15557
15558         * plugin.c (try_init_one_plugin): Updated to new plugin_init API.
15559         * gcc-plugin.h (plugin_init): Updated signature.
15560         * gcc-plugin.h (plugin_name_args): Moved to this header.
15561         * doc/plugins.texi (plugin_init): Updated documention to reflect
15562         API change.
15563         * doc/plugins.texi (plugin_name_args): Added to documention.
15564
15565 2009-05-21  Mark Mitchell  <mark@codesourcery.com>
15566
15567         * config/arm/neon.md (*mul<mode>3add<mode>_neon): New pattern.
15568         (*mul<mode>3neg<mode>add<mode>_neon): Likewise.
15569
15570 2009-05-21  Shujing Zhao  <pearly.zhao@oracle.com>
15571
15572         * config/i386/i386.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P and
15573         JUMP_TABLE_DATA_P predicates where applicable.
15574         * config/i386/predicates.md: Ditto.
15575         * config/i386/sse.md: Ditto.
15576
15577 2009-05-21  Jakub Jelinek  <jakub@redhat.com>
15578
15579         * config/i386/i386.md (adddi_4_rex64, addsi_4, addhi_4): For
15580         operand2 -128 override length_immediate attribute to 1.
15581         * config/i386/predicates.md (constm128_operand): New predicate.
15582
15583         * config/i386/i386.c (memory_address_length): Handle %r12
15584         the same as %rsp and %r13 the same as %rbp.  For %rsp and %rbp
15585         also check REGNO.
15586         (ix86_attr_length_address_default): For MODE_SI lea in 64-bit
15587         mode look through optional ZERO_EXTEND and SUBREG.
15588         * config/i386/i386.md (R12_REG): New define_constant.
15589         (prefix_data16): For sse unit set also for MODE_TI insns.
15590         (prefix_rex): For -m32 always return 0.  For TYPE_IMOVX
15591         insns set if operand 1 is ext_QIreg_operand.
15592         (modrm): For TYPE_IMOV clear only if not MODE_DI.  For
15593         TYPE_{ALU{,1},ICMP,TEST} insn clear if there is non-shortened
15594         immediate.
15595         (*movdi_extzv_1, zero_extendhidi2, zero_extendqidi2): Change
15596         mode from MODE_DI to MODE_SI.
15597         (movdi_1_rex64): Override modrm and length_immediate attributes
15598         only for movabs (TYPE_IMOV, alternative 2).
15599         (zero_extendsidi2_rex64): Clear prefix_0f attribute if TYPE_IMOVX.
15600         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit,
15601         *float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit,
15602         *float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit,
15603         *float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Set
15604         prefix_rex attribute if DImode.
15605         (*adddi_1_rex64, *adddi_2_rex64, *adddi_3_rex64, *adddi_5_rex64,
15606         *addsi_1, *addsi_1_zext, *addsi_2, *addsi_2_zext, *addsi_3,
15607         *addsi_3_zext, *addsi_5, *addhi_1_lea, *addhi_1, *addhi_2, *addhi_3,
15608         *addhi_5, *addqi_1_lea, *addqi_1): Override length_immediate
15609         attribute to 1 if TYPE_ALU and operand 2 is const128_operand.
15610         (pro_epilogue_adjust_stack_1, pro_epilogue_adjust_stack_rex64):
15611         Likewise.  For TYPE_IMOV clear length_immediate attribute.
15612         (*ashldi3_1_rex64, *ashldi3_cmp_rex64, *ashldi3_cconly_rex64,
15613         *ashlsi3_1, *ashlsi3_1_zext, *ashlsi3_cmp, **ashlsi3_cconly,
15614         *ashlsi3_cmp_zext, *ashlhi3_1_lea, *ashlhi3_1, *ashlhi3_cmp,
15615         *ashlhi3_cconly, *ashlqi3_1_lea, *ashlqi3_1, *ashlqi3_cmp,
15616         *ashlqi3_cconly): Override length_immediate attribute to 0 if TYPE_ALU
15617         or one operand TYPE_ISHIFT.
15618         (*ashrdi3_1_one_bit_rex64, *ashrdi3_one_bit_cmp_rex64,
15619         *ashrdi3_one_bit_cconly_rex64, *ashrsi3_1_one_bit,
15620         *ashrsi3_1_one_bit_zext, *ashrsi3_one_bit_cmp,
15621         *ashrsi3_one_bit_cconly, *ashrsi3_one_bit_cmp_zext,
15622         *ashrhi3_1_one_bit, *ashrhi3_one_bit_cmp, *ashrhi3_one_bit_cconly,
15623         *ashrqi3_1_one_bit, *ashrqi3_1_one_bit_slp, *ashrqi3_one_bit_cmp,
15624         *ashrqi3_one_bit_cconly, *lshrdi3_1_one_bit_rex64,
15625         *lshrdi3_cmp_one_bit_rex64, *lshrdi3_cconly_one_bit_rex64,
15626         *lshrsi3_1_one_bit, *lshrsi3_1_one_bit_zext, *lshrsi3_one_bit_cmp,
15627         *lshrsi3_one_bit_cconly, *lshrsi3_cmp_one_bit_zext,
15628         *lshrhi3_1_one_bit, *lshrhi3_one_bit_cmp, *lshrhi3_one_bit_cconly,
15629         *lshrqi3_1_one_bit, *lshrqi3_1_one_bit_slp, *lshrqi2_one_bit_cmp,
15630         *lshrqi2_one_bit_cconly, *rotlsi3_1_one_bit_rex64, *rotlsi3_1_one_bit,
15631         *rotlsi3_1_one_bit_zext, *rotlhi3_1_one_bit, *rotlqi3_1_one_bit_slp,
15632         *rotlqi3_1_one_bit, *rotrdi3_1_one_bit_rex64, *rotrsi3_1_one_bit,
15633         *rotrsi3_1_one_bit_zext, *rotrhi3_one_bit, *rotrqi3_1_one_bit,
15634         *rotrqi3_1_one_bit_slp): Override length_immediate attribute to 0,
15635         set mode attribute, don't override length attribute.
15636         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Set prefix_0f attribute
15637         to 1.
15638         (return_internal_long): Set length attribute to 2 instead of 1.
15639         (*strmovqi_rex_1, *strsetqi_rex_1, *rep_stosqi_rex64,
15640         *cmpstrnqi_nz_rex_1, *cmpstrnqi_rex_1, *strlenqi_rex_1): Clear
15641         prefix_rex attribute.
15642         * config/i386/predicates.md (ext_QIreg_operand, const128_operand):
15643         New predicates.
15644         (memory_displacement_only_operand): Always return 0 for TARGET_64BIT.
15645
15646 2009-05-21  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
15647
15648         * config/arm/thumb2.md (orsi_notsi_si): Fix typo in pattern.
15649
15650 2009-05-20  Ian Lance Taylor  <iant@google.com>
15651
15652         * tree.c (build_tree_list_vec_stat): New function.
15653         (ctor_to_vec): New function.
15654         (build_nt_call_vec): New function.
15655         (build_call_array): Change args to be a const pointer.
15656         (build_call_vec): New function.
15657         * tree.h (build_nt_call_vec): Declare.
15658         (build_tree_list_vec_stat): Declare.
15659         (build_tree_list_vec): Define.
15660         (build_call_array): Update declaration.
15661         (build_call_vec): Declare.
15662         (ctor_to_vec): Declare.
15663         * c-common.c (tree_vector_cache): New static variable.
15664         (make_tree_vector): New function.
15665         (release_tree_vector): New function.
15666         (make_tree_vector_single): New function.
15667         (make_tree_vector_copy): New function.
15668         * c-common.h (tree_vector_cache, make_tree_vector): Declare.
15669         (make_tree_vector_single, make_tree_vector_copy): Declare.
15670         * c-parser.c (cached_expr_list_1, cached_expr_list_2): Remove.
15671         (c_parser_expr_list): Don't manage cache here, instead call
15672         make_tree_vector.
15673         (c_parser_release_expr_list): Remove static function.
15674         (c_parser_vec_to_tree_list): Remove static function.
15675         (c_parser_attributes): Call build_tree_list_vec instead of
15676         c_parser_vec_to_tree_list.  Call release_tree_vector instead of
15677         c_parser_release_expr_list.
15678         (c_parser_postfix_expression_after_primary): Likewise.
15679         (c_parser_objc_keywordexpr): Likewise.
15680
15681 2009-05-20  Sandra Loosemore  <sandra@codesourcery.com>
15682
15683         * doc/tm.texi (Misc): Document TARGET_INVALID_PARAMETER_TYPE,
15684         TARGET_INVALID_RETURN_TYPE, TARGET_PROMOTED_TYPE, and
15685         TARGET_CONVERT_TO_TYPE.
15686         * hooks.c (hook_tree_const_tree_null): Define.
15687         * hooks.h (hook_tree_const_tree_null): Declare.
15688         * target.h (struct gcc_target):  Add invalid_parameter_type,
15689         invalid_return_type, promoted_type, and convert_to_type fields.
15690         * target-def.h: (TARGET_INVALID_PARAMETER_TYPE): Define.
15691         (TARGET_INVALID_RETURN_TYPE): Define.
15692         (TARGET_PROMOTED_TYPE): Define.
15693         (TARGET_CONVERT_TO_TYPE): Define.
15694         (TARGET_INITIALIZER): Update for new fields.
15695         * c-decl.c (grokdeclarator): Check targetm.invalid_return_type.
15696         (grokparms): Check targetm.invalid_parameter_type.
15697         * c-typeck.c (default_conversion): Check targetm.promoted_type.
15698         * c-convert.c (convert): Check targetm.convert_to_type.
15699
15700 2009-05-20  Adam Nemet  <anemet@caviumnetworks.com>
15701
15702         * config/mips/mips.md (*extenddi_truncate<mode>,
15703         *extendsi_truncate<mode>): Emit exts if supported.  Add attribute
15704         defintions.
15705         (*extendhi_truncateqi): New define_insn_and_sptit.
15706
15707 2009-05-20  Jakub Jelinek  <jakub@redhat.com>
15708
15709         PR middle-end/40204
15710         * fold-const.c (fold_binary) <case BIT_AND_EXPR>: Avoid infinite
15711         recursion if build_int_cst_type returns the same INTEGER_CST as arg1.
15712
15713 2009-05-20  Eric Botcazou  <ebotcazou@adacore.com>
15714
15715         * fold-const.c (build_fold_addr_expr_with_type): Take the address of
15716         the operand of VIEW_CONVERT_EXPR.
15717
15718 2009-05-20  H.J. Lu  <hongjiu.lu@intel.com>
15719
15720         * config/i386/driver-i386.c (host_detect_local_cpu): Check
15721         extended family and model for Intel processors.  Support Intel Atom.
15722
15723 2009-05-20  Olivier Hainque  <hainque@adacore.com>
15724
15725         * gstab.h (stab_code_type): Define, to be used instead of the
15726         __stab_debug_code enum, made anonymous.  Add 2009 to the copyright
15727         notice.
15728         * dbxout.c (STAB_CODE_TYPE): Remove #define and replace use
15729         occurrences by stab_code_type.
15730         * mips-tfile.c (STAB_CODE_TYPE): Remove #define, unused.
15731
15732 2009-05-20  Martin Jambor  <mjambor@suse.cz>
15733
15734         * tree-flow.h (insert_edge_copies_seq): Undeclare.
15735         (sra_insert_before): Likewise.
15736         (sra_insert_after): Likewise.
15737         (sra_init_cache): Likewise.
15738         (sra_type_can_be_decomposed_p): Likewise.
15739         * tree-mudflap.c (insert_edge_copies_seq): Copied here from tree-sra.c
15740         * tree-sra.c (sra_type_can_be_decomposed_p): Made static.
15741         (sra_insert_before): Likewise.
15742         (sra_insert_after): Likewise.
15743         (sra_init_cache): Likewise.
15744         (insert_edge_copies_seq): Made static and moved upwards.
15745
15746         * tree-complex.c (extract_component): Added VIEW_CONVERT_EXPR switch
15747         case.
15748
15749         * tree-flow-inline.h (contains_view_convert_expr_p): New function.
15750
15751         * ipa-prop.c (get_ssa_def_if_simple_copy): New function.
15752         (determine_cst_member_ptr): Call get_ssa_def_if_simple_copy to skip
15753         simple copies.
15754
15755 2009-05-20  Richard Guenther  <rguenther@suse.de>
15756
15757         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
15758         with mismatched comparison modes.
15759
15760 2009-05-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
15761
15762         * config/arm/arm.md (*arm_iorsi3): Refactored for only ARM.
15763         (peephole ior (reg, int) -> mov, ior): Refactored for only ARM.
15764         * config/arm/thumb2.md (*thumb_andsi_not_shiftsi_si): Allow bic
15765         with shifts for Thumb2.
15766         (orsi_notsi): New for orn.
15767         (*thumb_orsi_notshiftsi_si): Allow orn with shifts.
15768         (*thumb2_iorsi3): Rewrite support for iorsi for Thumb2.
15769         * config/arm/arm.c (const_ok_for_op): Split case for IOR for Thumb2.
15770         (arm_gen_constant): Set can_invert for IOR and Thumb2, Add comments.
15771         Don't invert remainder for IOR.
15772
15773 2009-05-19  Zdenek Dvorak  <ook@ucw.cz>
15774
15775         PR tree-optimization/40087
15776         * tree-ssa-loop-niter.c (number_of_iterations_ne_max,
15777         number_of_iterations_ne): Rename never_infinite argument.
15778         (number_of_iterations_lt_to_ne, number_of_iterations_lt,
15779         number_of_iterations_le): Handle pointer-type ivs when
15780         exit_must_be_taken is false.
15781         (number_of_iterations_cond):  Do not always assume that
15782         exit_must_be_taken if the control variable is a pointer.
15783
15784 2009-05-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15785
15786         * c-typeck.c (build_binary_op): Allow % on integal vectors.
15787         * doc/extend.texi (Vector Extension): Document that % is allowed too.
15788
15789 2009-05-19  H.J. Lu  <hongjiu.lu@intel.com>
15790
15791         * config/i386/i386.c (ix86_avoid_jump_mispredicts): Check
15792         ASM_OUTPUT_MAX_SKIP_PAD instead of ASM_OUTPUT_MAX_SKIP_ALIGN.
15793
15794 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
15795
15796         PR c/40172
15797         * c.opt (Wlogical-op): Disabled by default.
15798         * c-opt (c_common_post_options): Do not enable Wlogical-op with
15799         Wextra.
15800         * doc/invoke.texi (Wlogical-op): Likewise.
15801
15802 2009-05-19  Eric Botcazou  <ebotcazou@adacore.com>
15803
15804         * tree-scalar-evolution.c (follow_ssa_edge_expr) <NOP_EXPR>: Turn
15805         into CASE_CONVERT.
15806         <PLUS_EXPR>: Strip useless type conversions instead of type nops.
15807         Propagate the type of the first operand.
15808         <ASSERT_EXPR>: Simplify.
15809         (follow_ssa_edge_in_rhs): Use gimple_expr_type to get the type.
15810         Rewrite using the RHS code as discriminant.
15811         <NOP_EXPR>: Turn into CASE_CONVERT.
15812         <PLUS_EXPR>: Propagate the type of the first operand.
15813
15814 2009-05-19  Steve Ellcey  <sje@cup.hp.com>
15815
15816         * config/ia64/ia64-protos.h (ia64_dconst_0_5): New.
15817         (ia64_dconst_0_375): New.
15818         * config/ia64/ia64.c (ia64_override_options): Remove
15819         -minline-sqrt-min-latency warning.
15820         (ia64_dconst_0_5_rtx, ia64_dconst_0_5): New.
15821         (ia64_dconst_0_375_rtx, ia64_dconst_0_375): New
15822         * config/ia64/ia64.md (*sqrt_approx): Remove.
15823         (sqrtsf2): Remove #if 0.
15824         (sqrtsf2_internal_thr): Rewrite and move to div.md.
15825         (sqrtdf): Remove assert.
15826         (sqrtdf2_internal_thr): Rewrite and move to div.md.
15827         (sqrtxf2): Remove #if 0.
15828         (sqrtxf2_internal_thr): Rewrite and move to div.md.
15829         * div.md (sqrt_approx_rf): New.
15830         (sqrtsf2_internal_thr): New implementation.
15831         (sqrtsf2_internal_lat): New.
15832         (sqrtdf2_internal_thr: New implementation.
15833         (sqrtxf2_internal): New implementation.
15834
15835 2009-05-19  Francois-Xavier Coudert  <fxcoudert@gmail.com>
15836             Hans-Peter Nilsson  <hp@axis.com>
15837
15838         * defaults.h (UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE)
15839         (WCHAR_TYPE, MODIFIED_WCHAR_TYPE, PTRDIFF_TYPE, WINT_TYPE)
15840         (INTMAX_TYPE, UINTMAX_TYPE, SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE)
15841         (INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE)
15842         (UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE)
15843         (INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE)
15844         (UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE)
15845         (INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE)
15846         (UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE)
15847         (SIZE_TYPE, PID_TYPE, CHAR16_TYPE, CHAR32_TYPE): Move defaults here...
15848         * c-common.c: ...from here.
15849
15850 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
15851
15852         * c-common.c (warn_logical_operator): Remove unnecessary conditionals.
15853
15854 2009-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15855
15856         * builtins.c (do_mpc_arg1): Separate MPFR/MPC C rounding types.
15857
15858 2009-05-19  Ben Elliston  <bje@au.ibm.com>
15859
15860         * unwind-dw2-fde.c (fde_unencoded_compare): Replace type punning
15861         assignments with memcpy calls.
15862         (add_fdes): Likewise.
15863         (binary_search_unencoded_fdes): Likewise.
15864         (linear_search_fdes): Eliminate type puns.
15865
15866 2009-05-19  Richard Guenther  <rguenther@suse.de>
15867
15868         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do
15869         not falsely claim to have propagated into all uses.
15870
15871 2009-05-19  Ben Elliston  <bje@au.ibm.com>
15872
15873         * doc/invoke.texi (C Dialect Options): Update OpenMP specification
15874         version to v3.0.
15875
15876 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
15877
15878         * config/sh/sh-protos.h (sh_legitimate_address_p): Remove.
15879         * config/sh/sh.c (sh_legitimate_address_p): Make static.
15880         (TARGET_LEGITIMATE_ADDRESS_P): New.
15881         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
15882         * config/sh/sh.md: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
15883
15884 2009-05-18  Dodji Seketeli  <dodji@redhat.com>
15885
15886         PR debug/40109
15887         * dwarf2out.c (gen_type_die_with_usage): Generate the DIE as a
15888         child of the containing namespace's DIE.
15889
15890 2009-05-18  Adam Nemet  <anemet@caviumnetworks.com>
15891
15892         * config/mips/mips.md (*zero_extend<GPR:mode>_trunc<SHORT:mode>,
15893         *zero_extendhi_truncqi):  Move after the zero_extend patterns.
15894         (*extenddi_truncate<mode>, *extendsi_truncate<mode>): Move after the
15895         extend patterns.
15896
15897 2009-05-18  H.J. Lu  <hongjiu.lu@intel.com>
15898
15899         PR target/39942
15900         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Replace
15901         gen_align with gen_pad.
15902         (ix86_reorg): Check ASM_OUTPUT_MAX_SKIP_PAD instead of
15903         #ifdef ASM_OUTPUT_MAX_SKIP_ALIGN.
15904
15905         * config/i386/i386.h (ASM_OUTPUT_MAX_SKIP_PAD): New.
15906         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_PAD): Likewise.
15907
15908         * config/i386/i386.md (align): Renamed to ...
15909         (pad): This.  Replace ASM_OUTPUT_MAX_SKIP_ALIGN with
15910         ASM_OUTPUT_MAX_SKIP_PAD.
15911
15912 2009-05-18  Andreas Schwab  <schwab@linux-m68k.org>
15913
15914         * config.gcc: Fix variable syntax.
15915
15916         PR target/39531
15917         * config/m68k/m68k.c (output_andsi3): Mask off sign bit copies
15918         before calling exact_log2.
15919         (output_iorsi3): Likewise.
15920         (output_xorsi3): Likewise.
15921
15922 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
15923
15924         * config/sh/sh.c (expand_cbranchdi4): Use a scratch register
15925         for the none zero constant operand except for EQ and NE
15926         comprisons even when the first operand is R0.
15927
15928 2009-05-18  Andreas Krebbel  <krebbel1@de.ibm.com>
15929
15930         * config/s390/2064.md: Remove trailing whitespaces.
15931         * config/s390/2084.md: Likewise.
15932         * config/s390/constraints.md: Likewise.
15933         * config/s390/fixdfdi.h: Likewise.
15934         * config/s390/libgcc-glibc.ver: Likewise.
15935         * config/s390/s390-modes.def: Likewise.
15936         * config/s390/s390-protos.h: Likewise.
15937         * config/s390/s390.c: Likewise.
15938         * config/s390/s390.h: Likewise.
15939         * config/s390/s390.md: Likewise.
15940         * config/s390/tpf-unwind.h: Likewise.
15941
15942 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
15943
15944         * config/m68k/m68k.c (m68k_legitimize_address): Fix typo in signature.
15945
15946 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
15947
15948         M68K TLS support.
15949         * configure.ac (m68k-*-*): Check if binutils support TLS.
15950         * configure: Regenerate.
15951         * config/m68k/predicates.md (symbolic_operand): Extend comment.
15952         * config/m68k/constraints.md (Cu): New constraint.
15953         * config/m68k/m68k.md (UNSPEC_GOTOFF): Remove.
15954         (UNSPEC_RELOC16, UNSPEC_RELOC32): New constants.
15955         (movsi): Handle TLS symbols.
15956         (addsi3_5200): Handle XTLS symbols, indent.
15957         * config/m68k/m68k-protos.h (m68k_legitimize_tls_address): Declare.
15958         (m68k_tls_reference_p): Declare.
15959         (m68k_legitimize_address): Declare.
15960         (m68k_unwrap_symbol): Declare.
15961         * config/m68k/m68k.opt (mxtls): New option.
15962         * config/m68k/m68k.c (ggc.h): Include.
15963         (m68k_output_dwarf_dtprel): Implement hook.
15964         (TARGET_HAVE_TLS, TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
15965         (m68k_expand_prologue): Load GOT pointer when function needs it.
15966         (m68k_illegitimate_symbolic_constant_p): Handle TLS symbols.
15967         (m68k_legitimate_constant_address_p): Same.
15968         (m68k_decompose_address): Handle TLS references.
15969         (m68k_get_gp): New static function.
15970         (enum m68k_reloc): New contants.
15971         (TLS_RELOC_P): New macro.
15972         (m68k_wrap_symbol): New static function.
15973         (m68k_unwrap_symbol): New function.
15974         (m68k_final_prescan_insn_1): New static function.
15975         (m68k_final_prescan_insn): New function.
15976         (m68k_move_to_reg, m68k_wrap_symbol_into_got_ref): New static
15977         functions.
15978         (legitimize_pic_address): Handle TLS references..
15979         (m68k_tls_get_addr, m68k_get_tls_get_addr)
15980         (m68k_libcall_value_in_a0_p)
15981         (m68k_call_tls_get_addr, m68k_read_tp, m68k_get_m68k_read_tp)
15982         (m68k_call_m68k_read_tp): Helper variables and functions for ...
15983         (m68k_legitimize_tls_address): Handle TLS references.
15984         (m68k_tls_symbol_p, m68k_tls_reference_p_1, m68k_tls_reference_p):
15985         New functions.
15986         (m68k_legitimize_address): Handle TLS symbols.
15987         (m68k_get_reloc_decoration): New static function.
15988         (m68k_output_addr_const_extra): Handle UNSPEC_RELOC16 and
15989         UNSPEC_RELOC32.
15990         (m68k_output_dwarf_dtprel): Implement hook.
15991         (print_operand_address): Handle UNSPEC_RELOC16 adn UNSPEC_RELOC32.
15992         (m68k_libcall_value): Return result in A0 instead of D0 when asked by
15993         m68k_call_* routines.
15994         (sched_attr_op_type): Handle TLS symbols.
15995         (gt-m68k.h): Include.
15996         * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
15997         (LEGITIMATE_PIC_OPERAND_P): Support TLS.
15998
15999 2009-05-18  Martin Jambor  <mjambor@suse.cz>
16000
16001         * ipa-prop.c (ipa_check_stmt_modifications): Removed.
16002         (visit_store_addr_for_mod_analysis): New function.
16003         (ipa_detect_param_modifications): Use walk_stmt_load_store_addr_ops.
16004         (determine_cst_member_ptr): Use gimple_assign_single_p.
16005         (ipa_get_stmt_member_ptr_load_param): Use gimple_assign_single_p.
16006         (ipa_analyze_call_uses): Use !gimple_assign_rhs2 rather than number of
16007         operands.  Don't check number of operands of a NOP_EXPR.
16008
16009 2009-05-18  Eric Fisher  <joefoxreal@gmail.com>
16010
16011         * doc/tree-ssa.texi (SSA Operands): Fix a mistake.
16012
16013 2009-05-17  Manuel López-Ibáñez  <manu@gcc.gnu.org>
16014
16015         PR c/40172
16016         * c-common.c (warn_logical_operator): Don't warn if one of
16017         expression isn't always true or false.
16018
16019 2009-05-17  Kai Tietz  <kai.tietz@onevision.com>
16020
16021         * config/i386/biarch32.h: New file.
16022         * config.gcc: Add for target i386-w64-* the biarch32.h to tm_file.
16023
16024 2009-05-17  Adam Nemet  <anemet@caviumnetworks.com>
16025
16026         * config/mips/mips.md (*zero_extend<mode>_trunchi,
16027         *zero_extend<mode>_truncqi): Merge these into ...
16028         (*zero_extend<GPR:mode>_trunc<SHORT:mode>): ... this new pattern.
16029         Name the pattern following this as *zero_extendhi_truncqi.
16030
16031 2009-05-16  Brad Lucier  <lucier@math.purdue.edu>
16032
16033         PR middle-end/39301
16034         * hwint.h: Add macro HOST_WIDEST_INT_PRINT.
16035         * bitmap.c (bitmap_descriptor): Make fields HOST_WIDEST_INT.
16036         (output_info): Make field HOST_WIDEST_INT.
16037         (print_statistics): Use HOST_WIDEST_INT_PRINT.
16038         (dump_bitmat_statistics): Same.
16039
16040 2009-05-16  Francois-Xavier Coudert  <fxcoudert@gmail.com>
16041
16042         * config.gcc (use_gcc_stdint):  Set to wrap.
16043         * config/darwin.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
16044         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
16045         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
16046         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
16047         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
16048         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
16049         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
16050         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
16051
16052 2009-05-16  Joseph Myers  <joseph@codesourcery.com>
16053
16054         * config.gcc (mips*-*-*): Support arch_32, arch_64, tune_32 and
16055         tune_64.
16056         * config/mips/mips.h (MIPS_ABI_DEFAULT, MULTILIB_ABI_DEFAULT):
16057         Move definitions earlier.
16058         (OPT_ARCH64, OPT_ARCH32): Define.
16059         (OPTION_DEFAULT_SPECS): Add entries for arch_32, arch_64, tune_32
16060         and tune_64.
16061
16062 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
16063
16064         PR target/40153
16065         * arm.md (cstoresi_nltu_thumb1): Use a neg of ltu as the pattern name
16066         implies.
16067
16068 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
16069
16070         * arm.md (movdi2): Copy non-reg values to DImode registers.
16071
16072 2009-05-16  Jakub Jelinek  <jakub@redhat.com>
16073
16074         PR target/39942
16075         * final.c (label_to_max_skip): New function.
16076         (label_to_alignment): Only use LABEL_TO_ALIGNMENT if
16077         CODE_LABEL_NUMBER <= max_labelno.
16078         * output.h (label_to_max_skip): New prototype.
16079         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Renamed to...
16080         (ix86_avoid_jump_mispredicts): ... this.  Don't define if
16081         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.  Update comment.
16082         Handle CODE_LABELs with >= 16 byte alignment or with
16083         max_skip == (1 << align) - 1.
16084         (ix86_reorg): Don't call ix86_avoid_jump_mispredicts if
16085         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.
16086
16087         PR target/39942
16088         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Don't emit second
16089         .p2align 3 if MAX_SKIP is smaller than 7.
16090         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
16091
16092 2009-05-15  Ian Lance Taylor  <iant@google.com>
16093
16094         * alias.c (struct alias_set_entry_d): Rename from struct
16095         alias_set_entry.  Change all uses.
16096         * except.c (struct call_site_record_d): Rename from struct
16097         call_site_record.  Change all uses.
16098         * except.h (struct eh_region_d): Rename from struct eh_region.
16099         Change all uses.
16100         * gcse.c (struct hash_table_d): Rename from struct hash_table.
16101         Change all uses.
16102         * graphite.c (struct ivtype_map_elt_d): Rename fromstruct
16103         ivtype_map_elt.  Change all uses.
16104         (struct rename_map_elt_d): Rename fromstruct rename_map_elt.
16105         Change all uses.
16106         (struct ifsese_d): Rename fromstruct ifsese.  Change all uses.
16107         * graphite.h (struct name_tree_d): Rename from struct name_tree.
16108         Change all uses.
16109         (struct sese_d): Rename from struct sese.  Change all uses.
16110         * omega.h (struct eqn_d): Rename from struct eqn.  Change all uses.
16111         (struct omega_pb_d): Rename from struct omega_pb.  Change all uses.
16112         * optabs.h (struct optab_d): Rename from struct optab.  Change all
16113         uses.
16114         (struct convert_optab_d): Rename from struct convert_optab.
16115         Change all uses.
16116         * tree-pass.h (struct ipa_opt_pass_d): Rename fromstruct
16117         ipa_opt_pass.  Change all uses.
16118         * tree-predcom.c (struct dref_d): Rename from struct dref.  Change
16119         all uses.
16120
16121         * c-decl.c (pushtag): If -Wc++-compat, warn if the tag is already
16122         defined as a typedef.
16123         (grokdeclarator): If -Wc++-compat, warn if a typedef is already
16124         defined as a tag.
16125
16126 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
16127
16128         PR 16302
16129         * fold-const.c (make_range,build_range_check,merge_ranges): Move
16130         declaration to...
16131         (merge_ranges): Returns bool.
16132         * tree.h (make_range): .. to here.
16133         (build_range_check): Likewise.
16134         (merge_ranges): Likewise. Renamed from merge_ranges.
16135         * c-typeck.c (parser_build_binary_op): Update calls to
16136         warn_logical_operator.
16137         * c-common.c (warn_logical_operator): Add new warning.
16138         * c-common.h (warn_logical_operator): Update declaration.
16139
16140 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
16141
16142         * ira-conflicts.c (add_insn_allocno_copies): Fix wrong conditional.
16143
16144 2009-05-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16145
16146         * doc/install.texi: Document MPC requirements, flags etc.
16147
16148         * builtins.c (do_mpc_arg1, fold_builtin_ccos): New.
16149         (fold_builtin_cexp): Ensure we get a complex REAL_TYPE.
16150         Evaluate constant arguments.
16151         (fold_builtin_carg): Ensure we get a complex REAL_TYPE.
16152         (fold_builtin_1): Likewise, also evaluate constant arguments.
16153         Remove superfluous break.
16154         (do_mpc_ckconv): New.
16155         * real.h: Include mpc.h.
16156         * toplev.c (print_version): Output MPC version info if available.
16157
16158 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
16159
16160         * fold-const.c (fold_convert_const_real_from_real): Check for overflow.
16161
16162 2009-05-15  H.J. Lu  <hongjiu.lu@intel.com>
16163
16164         * config/i386/i386.c (ix86_reorg): Call optimize_function_for_speed_p
16165         only once.
16166
16167 2009-05-15  Jan Hubicka  <jh@suse.cz>
16168
16169         * doc/invoke.texi (max-early-inliner-iterations): New flag.
16170         * ipa-inline.c (enum inlining_mode): New INLINE_SIZE_NORECURSIVE.
16171         (try_inline): Fix return value.
16172         (cgraph_decide_inlining_incrementally): Honor new value.
16173         (cgraph_early_inlining): Handle indirect inlining.
16174         * params.def (PARAM_EARLY_INLINER_MAX_ITERATIONS): New.
16175
16176 2009-05-15  Jan Hubicka  <jh@suse.cz>
16177
16178         * cgraph.h (struct cgraph_node): Add finalized_by_frotnend flag.
16179         * cgraphunit.c (cgraph_finalize_function): Set it.
16180         (cgraph_expand_function): Use it.
16181
16182 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
16183
16184         * real.c (encode_ieee_half): Define.
16185         (decode_ieee_half): Define.
16186         (ieee_half_format): Define.
16187         (arm_half_format): Define.
16188         * real.h (ieee_half_format): Declare.
16189         (arm_half_format): Declare.
16190
16191 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
16192
16193         * optabs.c (prepare_float_lib_cmp):  Test that the comparison,
16194         swapped, and reversed optabs exist before trying to use them.
16195
16196 2009-05-15  Paul Brook  <paul@codesourcery.com>
16197             Sandra Loosemore  <sandra@codesourcery.com>
16198
16199         * config/arm/arm.c (neon_vector_mem_operand): Handle element/structure
16200         loads.  Allow PRE_DEC.
16201         (output_move_neon): Handle PRE_DEC.
16202         (arm_print_operand): Add 'A' for neon structure loads.
16203         * config/arm/arm-protos.h (neon_vector_mem_operand): Update prototype.
16204         * config/arm/neon.md (neon_mov): Update comment.
16205         * config/arm/constraints.md (Un, Us): Update neon_vector_mem_operand
16206         calls.
16207         (Um): New constraint.
16208
16209 2009-05-15  Jan Hubicka  <jh@suse.cz>
16210
16211         Revert the following patch until testsuite fallout is fixed:
16212         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
16213         * cgraph.h (struct inline_summary): New filed self_wize,
16214         size_inlining_benefit, self_time and time_inlining_benefit.
16215         (struct cgraph_global_info): Replace insns by time ans size fields.
16216         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
16217         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
16218         (ipcp_update_callgraph): Do not touch function bodies.
16219         * ipa-inline.c: Include except.h
16220         (MAX_TIME): New constant.
16221         (overall_insns): Remove
16222         (overall_size, max_benefit): New static variables.
16223         (cgraph_estimate_time_after_inlining): New function.
16224         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
16225         (cgraph_clone_inlined_nodes): Update size.
16226         (cgraph_mark_inline_edge): Update size.
16227         (cgraph_estimate_growth): Use size info.
16228         (cgraph_check_inline_limits): Check size.
16229         (cgraph_default_inline_p): Likewise.
16230         (cgraph_edge_badness): Compute badness based on benefit and size cost.
16231         (cgraph_decide_recursive_inlining): Check size.
16232         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
16233         and times.
16234         (cgraph_decide_inlining): Likewise.
16235         (cgraph_decide_inlining_incrementally): Likewise; honor
16236         PARAM_EARLY_INLINING_INSNS.
16237         (likely_eliminated_by_inlining_p): New predicate.
16238         (estimate_function_body_sizes): New function.
16239         (compute_inline_parameters): Use it.
16240         * except.c (must_not_throw_labels): New function.
16241         * except.h (must_not_throw_labels): Declare.
16242         * tree-inline.c (init_inline_once): Kill inlining_weigths
16243         * tree-ssa-structalias.c: Avoid uninitialized warning.
16244         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
16245         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
16246         (PARAM_INLINE_CALL_COST): Remove.
16247         (PARAM_EARLY_INLINING_INSNS): New.
16248
16249 2009-05-15  Richard Guenther  <rguenther@suse.de>
16250
16251         * tree-ssa-pre.c (eliminate): Use TODO_update_ssa_only_virtuals,
16252         not TODO_update_ssa.
16253
16254 2009-05-15  Richard Guenther  <rguenther@suse.de>
16255
16256         PR tree-optimization/39999
16257         * gimple.h (gimple_expr_type): Use the expression type looking
16258         through useless conversions.
16259         * tree-ssa-sccvn.c (vn_nary_op_lookup_stmt): Use gimple_expr_type.
16260         (vn_nary_op_insert_stmt): Likewise.
16261         (simplify_binary_expression): Likewise.
16262
16263 2009-05-15  Richard Guenther  <rguenther@suse.de>
16264
16265         * common.opt (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
16266         New options, enabled by default.
16267         * doc/invoke.texi (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
16268         Document.
16269         * tree-ssa-forwprop.c (gate_forwprop): Use flag_tree_forwprop.
16270         * tree-ssa-phiprop.c (gate_phiprop): Use flag_tree_phiprop.
16271         * tree-ssa-structalias.c (gate_tree_pta): New function.
16272         (pass_build_alias): Use it.
16273
16274 2009-05-15  Joseph Myers  <joseph@codesourcery.com>
16275
16276         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Also
16277         recurse on an invariant address if a conversion from a pointer
16278         type to a wider integer type is involved.
16279
16280 2009-05-15  Jan Hubicka  <jh@suse.cz>
16281
16282         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
16283         * cgraph.h (struct inline_summary): New filed self_wize,
16284         size_inlining_benefit, self_time and time_inlining_benefit.
16285         (struct cgraph_global_info): Replace insns by time ans size fields.
16286         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
16287         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
16288         (ipcp_update_callgraph): Do not touch function bodies.
16289         * ipa-inline.c: Include except.h
16290         (MAX_TIME): New constant.
16291         (overall_insns): Remove
16292         (overall_size, max_benefit): New static variables.
16293         (cgraph_estimate_time_after_inlining): New function.
16294         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
16295         (cgraph_clone_inlined_nodes): Update size.
16296         (cgraph_mark_inline_edge): Update size.
16297         (cgraph_estimate_growth): Use size info.
16298         (cgraph_check_inline_limits): Check size.
16299         (cgraph_default_inline_p): Likewise.
16300         (cgraph_edge_badness): Compute badness based on benefit and size cost.
16301         (cgraph_decide_recursive_inlining): Check size.
16302         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
16303         and times.
16304         (cgraph_decide_inlining): Likewise.
16305         (cgraph_decide_inlining_incrementally): Likewise; honor
16306         PARAM_EARLY_INLINING_INSNS.
16307         (likely_eliminated_by_inlining_p): New predicate.
16308         (estimate_function_body_sizes): New function.
16309         (compute_inline_parameters): Use it.
16310         * except.c (must_not_throw_labels): New function.
16311         * except.h (must_not_throw_labels): Declare.
16312         * tree-inline.c (init_inline_once): Kill inlining_weigths
16313         * tree-ssa-structalias.c: Avoid uninitialized warning.
16314         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
16315         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
16316         (PARAM_INLINE_CALL_COST): Remove.
16317         (PARAM_EARLY_INLINING_INSNS): New.
16318         doc/invoke.texi (max-inline-insns-auto, early-inlining-insns): Update.
16319         (inline-call-cost): Remove.
16320         (early-inlining-insns): New.
16321
16322 2009-05-15  Eric Botcazou  <ebotcazou@adacore.com>
16323
16324         * dbxout.c (dbxout_range_type): Add LOW and HIGH parameters.  Use them
16325         for bounds.
16326         (print_int_cst_bounds_in_octal_p): Likewise.
16327         (dbxout_type): Adjust calls to above functions.  Be prepared to deal
16328         with subtypes.
16329         * dwarf2out.c (base_type_die): Likewise.
16330         (is_subrange_type): Delete.
16331         (subrange_type_die): Add LOW and HIGH parameters.  Use them for bounds.
16332         (modified_type_die): Call subrange_type_for_debug_p on subtypes.
16333         * fold-const.c (fold_truth_not_expr) <CONVERT_EXPR>: Do not strip it
16334         if the destination type is boolean.
16335         (build_range_check): Do not special-case subtypes.
16336         (fold_sign_changed_comparison): Likewise.
16337         (fold_unary): Likewise.
16338         * langhooks-def.h (LANG_HOOKS_GET_SUBRANGE_BOUNDS): Define.
16339         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_GET_SUBRANGE_BOUNDS.
16340         * langhooks.h (lang_hooks_for_types): Add get_subrange_bounds.
16341         * tree.c (subrange_type_for_debug_p): New predicate based on the
16342         former is_subrange_type.
16343         * tree.h (subrange_type_for_debug_p): Declare.
16344         * tree-chrec.c (avoid_arithmetics_in_type_p): Delete.
16345         (convert_affine_scev): Remove call to above function.
16346         (chrec_convert_aggressive): Likewise.
16347         * tree-ssa.c (useless_type_conversion_p_1): Do not specifically return
16348         false for conversions involving subtypes.
16349         * tree-vrp.c (vrp_val_max): Do not special-case subtypes.
16350         (vrp_val_min): Likewise.
16351         (needs_overflow_infinity): Likewise.
16352         (extract_range_from_unary_expr): Likewise.
16353
16354 2009-05-15  Paolo Bonzini  <bonzini@gnu.org>
16355
16356         * config/frv/frv.h: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
16357         * config/frv/frv.c: Likewise.
16358         * config/s390/s390.c: Likewise.
16359         * config/sparc/sparc.h: Likewise.
16360         * config/i386/i386.h: Likewise.
16361         * config/i386/i386.c: Likewise.
16362         * config/crx/crx.c: Likewise.
16363         * config/m68hc11/m68hc11.h: Likewise.
16364         * config/iq2000/iq2000.c: Likewise.
16365         * config/mn10300/mn10300.h: Likewise.
16366         * config/mn10300/mn10300.c: Likewise.
16367         * config/m68k/m68k.c: Likewise.
16368         * config/rs6000/rs6000.c: Likewise.
16369         * config/rs6000/xcoff.h: Likewise.
16370         * config/rs6000/linux64.h: Likewise.
16371         * config/rs6000/sysv4.h: Likewise.
16372         * config/score/score3.c: Likewise.
16373         * config/score/score7.c: Likewise.
16374         * config/score/score.c: Likewise.
16375         * config/arm/arm.md: Likewise.
16376         * config/mips/mips.c: Likewise.
16377         * config/mips/mips.md: Likewise.
16378         * config/bfin/bfin.h: Likewise.
16379         * config/pa/pa.c: Likewise.
16380         * config/pa/constraints.md: Likewise.
16381
16382         * config/pdp11/pdp11-protos.h (legitimate_address_p): Delete.
16383         * config/pdp11/pdp11.c (legitimate_address_p): Delete.
16384         * config/pdp11/pdp11.h: Use memory_address_p instead.
16385
16386 2009-05-14  Ian Lance Taylor  <iant@google.com>
16387
16388         * passes.c (finish_optimization_passes): Change i to int.
16389         * plugin.c (plugins_active_p): Change event to int.
16390         (dump_active_plugins): Likewise.
16391         * reginfo.c (invalid_mode_change_p): Change to to unsigned int.
16392         Add cast.
16393         * tree.c (tree_range_check_failed): Change c to unsigned int.
16394         (omp_clause_range_check_failed): Likewise.
16395         (build_common_builtin_nodes): Change mode to int.  Add cast.
16396         * config/ia64/ia64.c (is_emitted): Change r to unsigned int.
16397         (ia64_hard_regno_rename_ok, ia64_eh_uses): Likewise.
16398
16399         * c-typeck.c (build_unary_op): If -Wc++-compat, warn about using
16400         ++ or -- with a variable of enum type.
16401
16402 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
16403
16404         PR driver/40144
16405         * opts.c (common_handle_option): Add OPT_fcse_skip_blocks as a no-op.
16406
16407 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
16408
16409         * store-motion.c: Do not include params.h
16410         * Makefile.in: Fix dependencies for various files.
16411
16412 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
16413
16414         * auto-inc-dec.c: Fix pass description, remove apparent
16415         accidental duplication.
16416
16417 2009-05-14  H.J. Lu  <hongjiu.lu@intel.com>
16418
16419         PR middle-end/40147
16420         * ipa-utils.h (memory_identifier_string): Moved to ...
16421         * tree.h (memory_identifier_string): Here.  Add GTY(()).
16422
16423 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
16424
16425         * doc/tm.texi (TARGET_LEGITIMATE_ADDRESS_P): Refer mainly to this
16426         in the former documentation of...
16427         (GO_IF_LEGITIMATE_ADDRESS): ... this.
16428         * ira-conflicts.c (get_dup_num): Use address_operand.
16429         * targhooks.c (default_legitimate_address_p): New.
16430         * targhooks.h (default_legitimate_address_p): New.
16431         * reload.c (strict_memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]:
16432         Call hook.
16433         * recog.c (memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]: Call hook.
16434         * target.h (struct target): Add legitimate_address_p.
16435         * target-def.h (TARGET_LEGITIMATE_ADDRESS_P): New.
16436         (TARGET_INITIALIZER): Include it.
16437
16438         * config/alpha/alpha.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
16439         * config/alpha/alpha-protos.h (alpha_legitimate_address_p): Remove.
16440         * config/alpha/alpha.c (alpha_legitimate_address_p): Make static.
16441         (TARGET_LEGITIMATE_ADDRESS_P): New.
16442
16443         * config/frv/frv.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
16444         (REG_OK_STRICT_P): Delete.
16445         * config/frv/frv-protos.h (frv_legitimate_address_p): Rename to...
16446         (frv_legitimate_address_p_1): ... this.
16447         * config/frv/frv.c (frv_legitimate_address_p): Forward to...
16448         (frv_legitimate_address_p_1): ... the renamed old
16449         frv_legitimate_address_p.
16450         * config/frv/predicates.md: Adjust calls to frv_legitimate_address_p.
16451         (TARGET_LEGITIMATE_ADDRESS_P): New.
16452
16453         * config/s390/s390.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
16454         * config/s390/s390-protos.h (legitimate_address_p): Remove.
16455         * config/s390/s390.c (legitimate_address_p): Rename to...
16456         (s390_legitimate_address_p): ... this, make static.
16457         (legitimize_address): Adjust call.
16458         (TARGET_LEGITIMATE_ADDRESS_P): New.
16459         * config/s390/constraints.md ("e"): Call strict_memory_address_p.
16460
16461         * config/m32c/m32c.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
16462         * config/m32c/m32c-protos.h (m32c_legitimate_address_p): Remove.
16463         * config/m32c/m32c.c (m32c_legitimate_address_p): Make static.
16464         (TARGET_LEGITIMATE_ADDRESS_P): New.
16465
16466         * config/spu/spu.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
16467         * config/spu/spu-protos.h (spu_legitimate_address): Remove.
16468         * config/spu/spu.c (spu_legitimate_address): Rename to...
16469         (spu_legitimate_address_p): ... this, make static.
16470         (TARGET_LEGITIMATE_ADDRESS_P): New.
16471
16472         * config/sparc/sparc.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
16473         * config/sparc/sparc-protos.h (legitimate_address_p): Remove.
16474         * config/sparc/sparc.c (legitimate_address_p): Rename to...
16475         (sparc_legitimate_address_p): ... this, make static and return bool.
16476         (legitimize_address): Adjust call.
16477         (TARGET_LEGITIMATE_ADDRESS_P): New.
16478
16479         * config/i386/i386.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
16480         * config/i386/i386-protos.h (legitimate_address_p): Remove.
16481         * config/i386/i386.c (legitimate_address_p): Rename to...
16482         (ix86_legitimate_address_p): ... this, make static.
16483         (constant_address_p): Move after it, adjust call.
16484         (TARGET_LEGITIMATE_ADDRESS_P): New.
16485
16486         * config/avr/avr.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
16487         * config/avr/avr-protos.h (legitimate_address_p): Remove.
16488         * config/avr/avr.c (legitimate_address_p): Rename to...
16489         (avr_legitimate_address_p): ... this, make static.
16490         (legitimize_address): Adjust call.
16491         (TARGET_LEGITIMATE_ADDRESS_P): New.
16492
16493         * config/crx/crx.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
16494         * config/crx/crx-protos.h (crx_legitimate_address_p): Remove.
16495         * config/crx/crx.c (crx_legitimate_address_p): Make static.
16496         (TARGET_LEGITIMATE_ADDRESS_P): New.
16497
16498         * config/xtensa/xtensa.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
16499         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): Remove.
16500         * config/xtensa/xtensa.c (xtensa_legitimate_address_p): Make static.
16501         (TARGET_LEGITIMATE_ADDRESS_P): New.
16502
16503         * config/stormy16/stormy16.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
16504         * config/stormy16/stormy16-protos.h (xstormy16_legitimate_address_p):
16505         Remove.
16506         * config/stormy16/stormy16.c (xstormy16_legitimate_address_p):
16507         Make static.
16508         (TARGET_LEGITIMATE_ADDRESS_P): New.
16509
16510         * config/m68hc11/m68hc11.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
16511         * config/m68hc11/m68hc11-protos.h (m68hc11_go_if_legitimate_address):
16512         Remove.
16513         * config/m68hc11/m68hc11.c (m68hc11_go_if_legitimate_address):
16514         Rename to...
16515         (m68hc11_legitimate_address_p): ... this, make static.
16516         (go_if_legitimate_address_internal): Rename to...
16517         (m68hc11_legitimate_address_p_1): ... this.
16518         (legitimize_address): Adjust call.
16519         (TARGET_LEGITIMATE_ADDRESS_P): New.
16520
16521         * config/iq2000/iq2000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
16522         * config/iq2000/iq2000-protos.h (iq2000_legitimate_address_p): Remove.
16523         * config/iq2000/iq2000.c (iq2000_legitimate_address_p): Make static.
16524         (TARGET_LEGITIMATE_ADDRESS_P): New.
16525
16526         * config/mn10300/mn10300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
16527         * config/mn10300/mn10300-protos.h (legitimate_address_p): Remove.
16528         * config/mn10300/mn10300.c (legitimate_address_p): Rename to...
16529         (mn10300_legitimate_address_p): ... this, make static.
16530         (TARGET_LEGITIMATE_ADDRESS_P): New.
16531
16532         * config/m68k/m68k.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
16533         * config/m68k/m68k-protos.h (m68k_legitimate_address_p): Remove.
16534         * config/m68k/m68k.c (m68k_legitimate_address_p): Make static.
16535         (TARGET_LEGITIMATE_ADDRESS_P): New.
16536
16537         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
16538         (REG_OK_STRICT_FLAG, REG_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P): Delete.
16539         (INT_REG_OK_FOR_BASE_P, INT_REG_OK_FOR_INDEX_P): Move above.
16540         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
16541         * config/rs6000/rs6000-protos.h (rs6000_legitimate_address): Remove.
16542         * config/rs6000/rs6000.c (rs6000_legitimate_address): Rename to...
16543         (rs6000_legitimate_address_p): ... this, make static.
16544         (TARGET_LEGITIMATE_ADDRESS_P): New.
16545         (REG_MODE_OK_FOR_BASE_P): Delete.
16546         (rs6000_legitimize_reload_address): Use INT_REG_OK_FOR_BASE_P.
16547
16548         * config/picochip/picochip.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
16549         * config/picochip/picochip-protos.h (picochip_legitimate_address_p):
16550         Delete.
16551         * config/picochip/picochip.c (picochip_legitimate_address_p): Make
16552         static, adjust types.
16553         (TARGET_LEGITIMATE_ADDRESS_P): New.
16554
16555         * config/score/score.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
16556         * config/score/score.c (score_address_p): Rename to...
16557         (score_legitimate_address_p): ... this.
16558         (TARGET_LEGITIMATE_ADDRESS_P): New.
16559         * config/score/score3.c (score3_address_p): Rename to...
16560         (score3_legitimate_address_p): ... this.
16561         * config/score/score7.c (score7_address_p): Rename to...
16562         (score7_legitimate_address_p): ... this.
16563
16564         * config/arm/arm.h (ARM_GO_IF_LEGITIMATE_ADDRESS,
16565         THUMB2_GO_IF_LEGITIMATE_ADDRESS, THUMB1_GO_IF_LEGITIMATE_ADDRESS,
16566         GO_IF_LEGITIMATE_ADDRESS): Delete.
16567         * config/arm/arm-protos.h (thumb1_legitimate_address_p,
16568         thumb2_legitimate_address_p): Delete.
16569         (arm_legitimate_address_p): Rename to...
16570         (arm_legitimate_address_outer_p): ... this.
16571         * config/arm/constraints.md ("Uq"): Adjust call.
16572         * config/arm/predicates.md (arm_extendqisi_mem_op): Likewise.
16573         * config/arm/arm.c (arm_legitimate_address_p): New, rename old one
16574         to...
16575         (arm_legitimate_address_outer_p): ... this.
16576         (thumb1_legitimate_address_p, thumb2_legitimate_address_p): Make
16577         static.
16578         (TARGET_LEGITIMATE_ADDRESS_P): New.
16579
16580         * config/mips/mips.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
16581         * config/mips/mips-protos.h (mips_legitimate_address_p): Remove.
16582         * config/mips/mips.c (mips_legitimate_address_p): ... Make static.
16583         (TARGET_LEGITIMATE_ADDRESS_P): New.
16584
16585         * config/vax/vax.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
16586         * config/vax/vax-protos.h (legitimate_address_p): Remove.
16587         * config/vax/vax.c (legitimate_address_p): Rename to...
16588         (vax_legitimate_address_p): ... this, make static.
16589         (TARGET_LEGITIMATE_ADDRESS_P): New.
16590
16591         * config/h8300/h8300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
16592         * config/h8300/h8300-protos.h (h8300_legitimate_address_p): Remove.
16593         * config/h8300/h8300.c (h8300_legitimate_address_p): ... Make static.
16594         (TARGET_LEGITIMATE_ADDRESS_P): New.
16595
16596         * config/mmix/mmix.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
16597         * config/mmix/mmix-protos.h (mmix_legitimize_address): Remove.
16598         * config/mmix/mmix.c (mmix_legitimate_address): Rename to...
16599         (mmix_legitimate_address_p): ... this, make static.
16600         (TARGET_LEGITIMATE_ADDRESS_P): New.
16601
16602         * config/bfin/bfin.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
16603         * config/bfin/bfin-protos.h (bfin_legitimate_address_p): Remove.
16604         * config/bfin/bfin.c (bfin_legitimate_address_p): ... Make static.
16605         (TARGET_LEGITIMATE_ADDRESS_P): New.
16606
16607 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
16608
16609         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Remove handling
16610         of MODE_COMPLEX_INT.
16611
16612 2009-05-14  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
16613
16614         * config/alpha/alpha.c (alpha_initialize_trampoline): Change 0 to
16615         LCT_NORMAL in function call.
16616         * mips-tdump.c (print_file_desc): Add cast to enum type.
16617         * mips-tfile.c (add_ext_symbol): Add casts to enum types.
16618         (mark_stabs): Add casts to enum types.
16619         (parse_stabs_common): Add casts to enum types.
16620
16621 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
16622
16623         * config/mips/mips.c (mips_print_operand) <REG, MEM, default>:
16624         Check for invalid values of LETTER.
16625
16626 2009-05-13  Taras Glek  <tglek@mozilla.com>
16627
16628         * attribs.c (register_attribute): moved out attribute registration
16629         into register_attribute.
16630         * doc/plugins.texi: Documented register_attribute and
16631         PLUGIN_ATTRIBUTES.
16632         * gcc-plugin.h: Added forward decl for register_attribute.
16633         * gcc-plugin.h (plugins_event): Added PLUGIN_ATTRIBUTES.
16634         * plugin.c (register_callback, invoke_plugin_callbacks): Added
16635         PLUGIN_ATTRIBUTES boilerplate.
16636
16637 2009-05-14  Dave Korn  <dave.korn.cygwin@gmail.com>
16638
16639         * config/i386/msformat-c.c (ms_printf_length_specs):  Use enumeration
16640         values even in sentinel and empty entries.
16641         (ms_printf_flag_specs):  Likewise.
16642         (ms_scanf_flag_specs):  Likewise.
16643         (ms_strftime_flag_specs):  Likewise.
16644         (ms_print_char_table):  Likewise.
16645         (ms_scan_char_table):  Likewise.
16646         (ms_time_char_table):  Likewise.
16647
16648 2009-05-13  Doug Kwan  <dougkwan@google.com>
16649
16650         * tree-ssa-sccvn.c (compare_ops): Stabilize qsort.
16651
16652 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
16653
16654         * config/mips/mips.md (store): Add attributes for QI and HI.
16655         Update comment.
16656         (truncdisi2, truncdihi2, truncdiqi2): Merge these into ...
16657         (truncdi<mode>2): ... this new pattern.
16658
16659 2009-05-13  Brad Hards  <bradh@kde.org>
16660
16661         * Makefile.in (TEXI_GCCINT_FILES): Add plugins.texi.
16662
16663 2009-05-14  Jakub Jelinek  <jakub@redhat.com>
16664             Ben Elliston <bje@au.ibm.com>
16665
16666         PR middle-end/40035
16667         * dse.c (check_mem_read_rtx): Guard against width == -1.
16668
16669 2009-05-13  Michael Matz  <matz@suse.de>
16670
16671         PR middle-end/39976
16672         * tree-outof-ssa.c (maybe_renumber_stmts_bb): New function.
16673         (trivially_conflicts_p): New function.
16674         (insert_backedge_copies): Use it.
16675
16676 2009-05-13  Janis Johnson  <janis187@us.ibm.com>
16677
16678         * c-pragma.c (enum pragma_switch_t): Prefix constants with PRAGMA_.
16679         (handle_stdc_pragma): Use new enum constant names.
16680         (handle_pragma_float_const_decimal64): Ditto.
16681
16682 2009-05-13  Ian Lance Taylor  <iant@google.com>
16683
16684         * Makefile.in (build/gencheck.o): Depend upon all-tree.def, not
16685         tree.def.
16686
16687 2009-05-13  Nathan Sidwell  <nathan@codesourcery.com>
16688
16689         * config/m68k/t-uclinux (M68K_MLIB_CPU): Check for FL_UCLINUX.
16690         * config/m68k/m68k-devices.def: Add FL_UCLINUX to 68020 and 54455
16691         multilibs.
16692         * config/m68k/m68k.h (FL_UCLINUX): Define.
16693
16694 2009-05-13  Jan Hubicka  <jh@suse.cz>
16695
16696         * options.c (gfc_post_options): -fwhole-program imply -fwhole-file.
16697
16698 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
16699
16700         * config/sh/sh.h (OVERRIDE_OPTIONS): Clear flag_schedule_insns
16701         unless -fschedule-insns is specified.
16702
16703 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
16704
16705         PR target/39561
16706         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Don't set
16707         TARGET_EXPAND_CBRANCHDI4.
16708         * config/sh/sh.md (cbranchdi4): Don't check TARGET_EXPAND_CBRANCHDI4.
16709         * config/sh/sh.opt (mexpand-cbranchdi): Remove.
16710         (cmpeqdi): Fix comment.
16711
16712 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
16713
16714         * config/sh/sh-protos.h (sh_legitimate_index_p): Declare.
16715         (sh_legitimate_address_p): Likewise.
16716         * config/sh/sh.c (sh_legitimate_index_p): New.
16717         (sh_legitimate_address_p): Likewise.
16718         * config/sh/sh.h (REG_OK_FOR_BASE_P): Add STRICT parameter.
16719         (REG_OK_FOR_INDEX_P, SUBREG_OK_FOR_INDEX_P): Likewise.
16720         (MODE_DISP_OK_4, MODE_DISP_OK_8): Remove.
16721         (MAYBE_BASE_REGISTER_RTX_P): New macro.
16722         (MAYBE_INDEX_REGISTER_RTX_P): Likewise.
16723         (BASE_REGISTER_RTX_P): Use MAYBE_BASE_REGISTER_RTX_P.
16724         (INDEX_REGISTER_RTX_P): Use MAYBE_INDEX_REGISTER_RTX_P.
16725         (GO_IF_LEGITIMATE_INDEX): Use sh_legitimate_index_p.
16726         (GO_IF_LEGITIMATE_ADDRESS): Use sh_legitimate_address_p.
16727
16728 2009-05-12  Jan Hubicka  <jh@suse.cz>
16729
16730         * tree-inline.c (estimate_operator_cost): Add operands;
16731         when division happens by constant, it is cheap.
16732         (estimate_num_insns): Loads and stores are not having cost of 0;
16733         EH magic stuff is cheap; when computing runtime cost of switch,
16734         use log2 base of amount of its cases; builtin_expect has cost of 0;
16735         compute cost for moving return value of call.
16736         (init_inline_once): Initialize time_based flags.
16737         * tree-inline.h (eni_weights_d): Add time_based flag.
16738
16739 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
16740
16741         * df-core.c: Update head documentation.
16742
16743 2009-05-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
16744
16745         PR bootstrap/40118
16746         * rs6000.c (rs6000_generate_compare): Use op1b instead of
16747         shadowing exisiting variable op1.
16748
16749 2009-05-12  Uros Bizjak  <ubizjak@gmail.com>
16750
16751         PR target/37179
16752         * config/i386/driver-i386.c (processor_signatures): New enum.
16753         (SIG_GEODE): Move from vendor_signatures to processor_signatures.
16754         (host_detect_local_cpu): For SIG_AMD vendor, check for SIG_GEODE
16755         processor signature to detect geode processor.
16756
16757 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
16758
16759         Revert:
16760
16761         2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
16762
16763         * optabs.c (prepare_cmp_insn): Temporarily disable test that
16764         causes spurious differences between trunk and cond-optab branch.
16765
16766 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
16767
16768         * dojump.c (compare_from_rtx): Delete.
16769         * expmed.c (emit_store_flag): Only try cstore_optab.  Canonicalize
16770         any MODE_CC mode to the cstorecc4 pattern.  Use prepare_operand, fail
16771         if the comparison does not satisfy the predicate; test predicates for
16772         operands 2 and 3 of a cstore pattern.  Don't try cstore optab
16773         further if one existing pattern fails.
16774         * expr.h (compare_from_rtx): Delete.
16775         (prepare_operand): Declare it.
16776         * optabs.c: Change "lib call" to "libcall" throughout.
16777         (bcc_gen_fctn, setcc_gen_code, trap_rtx,
16778         HAVE_conditional_trap, emit_cmp_insn): Delete.
16779         (can_compare_p): Delete cmp_optab case.
16780         (prepare_float_lib_cmp): Return an rtx and a machine mode.
16781         Accept other parameters by value.
16782         (prepare_operand): Make non-static.
16783         (prepare_cmp_insn): Return an rtx and a machine mode.  Accept
16784         other parameters by value.  Try to widen operands here based on
16785         an optab_methods argument and looking at cbranch_optab.
16786         (emit_cmp_and_jump_insn_1): Accept test and mode, remove widening
16787         loop.  Use cbranch_optab directly.
16788         (emit_cmp_and_jump_insns): Fix comment.  Adjust call to
16789         prepare_cmp_insn and emit_cmp_and_jump_insn_1, remove obsolete
16790         assertion.
16791         (emit_conditional_move, emit_conditional_add): Inline what's needed
16792         of compare_from_rtx, using new prepare_cmp_insn for the rest.
16793         (init_optabs): Init cmp_optab with UNKNOWN, cbranch_optab
16794         with COMPARE.  Move cmov_optab and cstore_optab above
16795         with cbranch_optab, move cmp_optab down with ucmp_optab,
16796         remove tst_otpab.  Do not initialize trap_rtx.
16797         (gen_cond_trap): Do it here.  Use ctrap_optab.  Test predicate
16798         for trap code.  Do not check HAVE_conditional_trap.  Use
16799         prepare_cmp_insn.  Accept no predicate for operand 3.
16800         * optabs.h (OTI_cmp): Mark as used only for libcalls.
16801         (OTI_ctrap, ctrap_optab): New.
16802         (tst_optab): Delete.
16803         (bcc_gen_fctn, setcc_gen_code, emit_cmp_insn): Delete.
16804         * ifcvt.c (find_if_header): Replace HAVE_conditional_trap
16805         with lookup of ctrap_optab.
16806         * genopinit.c (cmp_optab, tst_optab, bcc_gen_fctn, setcc_gen_code):
16807         Delete.
16808         (ctrap_optab): New.
16809
16810         * combine.c (combine_simplify_rtx, simplify_set): Do not
16811         special case comparing against zero for cc0 machines.
16812         * simplify-rtx.c (simplify_binary_operation_1): Never remove
16813         COMPARE on cc0 machines.
16814         (simplify_relational_operation): Return a new expression when
16815         a COMPARE could be removed.
16816         * final.c (final_scan_insn): Compare cc_status values
16817         against LHS of a (compare FOO (const_int 0)) cc0 source.
16818         Also check if cc_status.value is the full compare.
16819
16820         * doc/md.texi (bCC, sCC, tstMM, cmpMM): Delete.
16821         (cstoreMM4): Document.
16822         (conditional_trap): Document ctrapMM4 instead.
16823         (sync_compare_and_swapMM): Refer to cbranchcc4.
16824         (Dependent Patterns): Eliminate obsolete information referring to
16825         the old jump optimization phase.
16826         (Canonicalization): Include cbranchcc4 case, omit canonicalization
16827         of compares with 0 on cc0 machines.
16828         (Jump Patterns): Refer to MODE_CC jump patterns preferably,
16829         avoiding references to cc0.  Remove text about storing operands
16830         in cmpMM.
16831         * doc/tm.texi (Condition Codes): Include blurb on different
16832         condition code representations, separate into subsections for
16833         CC0, MODE_CC and conditional execution.
16834
16835         * config/alpha/alpha-protos.h (alpha_emit_conditional_branch,
16836         alpha_emit_setcc): Accept operands and a machine mode.
16837         * config/alpha/alpha.c (alpha_emit_conditional_branch):
16838         Get code/op0/op1 from operands, use machine mode argument
16839         instead of alpha_compare.fp_p.  Emit the branch here.
16840         (alpha_emit_setcc): Likewise, and return boolean.
16841         (alpha_emit_conditional_move): Likewise.  Assert that
16842         cmp_op_mode == cmp_mode, and simplify accordingly.
16843         * config/alpha/alpha.h (struct alpha_compare, alpha_compare): Delete.
16844         * config/alpha/alpha.md (cmpdf, cmptf, cmpdi, bCC, sCC): Delete.
16845         (cbranchdf4, cbranchtf4, cbranchdi4, cstoredf4, cstoretf4,cstoredi4):
16846         Delete.
16847         (stack probe test): Use cbranchdi4.
16848         * config/alpha/predicates.md (alpha_cbranch_operator): New.
16849
16850         * config/arc/arc.c (gen_compare_reg): Do not emit cmp.
16851         * config/arc/arc.h (movsicc, movsfcc): Use it.
16852         (movdicc, *movdicc_insn, movdfcc, *movdfcc_insn): Remove.
16853         (cbranchsi4, cstoresi4): New.
16854         (cmpsi, bCC and sCC expanders): Remove.
16855
16856         * config/arm/arm.c (arm_compare_op0, arm_compare_op1): Delete.
16857         * config/arm/arm.h (arm_compare_op0, arm_compare_op1): Delete.
16858         * config/arm/predicates.md (arm_comparison_operator): Only include
16859         floating-point operators if there is a hardware floating-point unit.
16860         * config/arm/arm.md (cbranchsi4, cstoresi4): Enable for TARGET_32BIT,
16861         deferring to cbranch_cc and cstore_cc respectively.
16862         (cbranchsf4, cbranchdf4, cbranchdi4, cstoresf4, cstoredf4, cstoredi4,
16863         cbranch_cc, cstore_cc): New.
16864         (movsicc, movsfcc, movdfcc): Do not use arm_compare_op0 and
16865         arm_compare_op1.
16866         (bCC, sCC, cmpsi, cmpsf, cmpdf, cmpdi): Delete.
16867
16868         * config/avr/avr-protos.h (out_tstsi, out_tsthi): Adjust prototype.
16869         * config/avr/avr.c (out_tstsi, out_tsthi): Get the tested operand
16870         as an argument.
16871         (adjust_insn_length): Adjust calls.
16872         (avr_reorg): Handle (compare (foo) (const_int 0)).
16873         * config/avr/avr.md (tstqi, tsthi, tstsi): Remove.
16874         (*negated_tstqi, *negated_tsthi, *negated_tstsi): Unmacroize.
16875         (*reversed_tsthi, *reversed_tstsi): Add a scratch for simplicity.
16876         (cmpqi, cmphi, cmpsi): Prepend asterisk, fuse tst[qhs]i here.
16877         (bCC): Remove.
16878         (cbranchqi4, cbranchhi4, cbranchsi4): New.
16879         (tst -> sbrc/sbrs peephole2, cpse peephole): Wrap RHS with COMPARE.
16880
16881         * config/bfin/bfin.md (cmpbi, cmpsi, bCC, sCC): Delete.
16882         (cbranchsi4, cstorebi4, cstoresi4): New.
16883         (movbisi): This insn is duplicate, split it to zero_extend.
16884         * config/bfin/bfin.c (bfin_compare_op0, bfin_compare_op1): Delete
16885         (bfin_gen_compare): Do not use them.  Emit VOIDmode SET, not BImode.
16886         (bfin_optimize_loop): Use cbranch expander.
16887         * config/bfin/bfin.h (bfin_compare_op0, bfin_compare_op1): Delete.
16888         * config/bfin/predicates.md (bfin_cbranch_operator): Rename to...
16889         (bfin_bimode_comparison_operator): ... this.
16890         (bfin_direct_comparison_operator): New.
16891
16892         * config/cris/cris.c (cris_normal_notice_update_cc): Look
16893         inside (compare FOO (const_int 0)).
16894         (cris_rtx_costs): Handle ZERO_EXTRACT.
16895         * config/cris/cris.md (tstdi, tst<mode>, cmpdi): Delete.
16896         (*tstdi_non_v32): Fold in *cmpdi_non_v32.
16897         (*tstdi_v32): Delete.
16898         (*cmpdi_non_v32): Add M alternative for operand 1.
16899         (cmpsi, cmp<mode>): Make private.
16900         (*tstsi, *tst<mode>_cmp, *tst<mode>_non_cmp, *btst): Wrap LHS
16901         with COMPARE.
16902         (cbranch<mode>4, cbranchdi4, cstore<mode>4): New.
16903
16904         * config/crx/crx.md (cstore<mode>4, cbranchcc4): New.
16905         (cmp<mode>, bCOND_internal, b<code>, s<code>): Delete.
16906         (cbranch<mode>4, sCOND_internal): Use ordered_comparison_operator.
16907         (cc_reg_operand): New.
16908         (any_cond): Delete.
16909         * config/crx/crx.c (crx_compare_op0, crx_compare_op1,
16910         crx_expand_compare, crx_expand_branch, crx_expand_scond): Delete.
16911         * config/crx/crx.h (crx_compare_op0, crx_compare_op1): Delete.
16912         * config/crx/crx-protos.h (crx_expand_compare, crx_expand_branch,
16913         crx_expand_scond): Delete.
16914
16915         * config/fr30/fr30.md (cmp<mode>, bCC): Delete.
16916         (cbranchsi4): New.
16917         * config/fr30/fr30.c (fr30_compare_op0, fr30_compare_op1): Delete
16918         * config/fr30/fr30.h (fr30_compare_op0, fr30_compare_op1): Delete.
16919
16920         * config/frv/frv.md (cbranchsi4, cbranchsf4, cbranchdf4,
16921         cstoresi4, cstoresf4, cstoredf4): New.
16922         (cmpdi, cmpsi, cmpsf, cmpdf, bCC, sCC): Remove.
16923         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
16924         Receive the entire operands array.
16925         * config/frv/frv.h (frv_compare_op0, frv_compare_op1): Delete.
16926         * config/frv/frv.c (frv_compare_op0, frv_compare_op1): Delete.
16927         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
16928         Get test/op0/op1 from the operands array.
16929         (frv_emit_cond_move): Get test/op0/op1 from the test_rtx.
16930
16931         * config/h8300/h8300-protos.h (h8300_expand_branch): Accept operands.
16932         (h8300_expand_store): New.
16933         * config/h8300/h8300.c (h8300_rtx_costs): Handle (compare FOO
16934         (const_int 0)).
16935         (h8300_expand_branch): Emit compare here.  Adjust for new arguments.
16936         (h8300_expand_store): New.
16937         * config/h8300/h8300.md (btst combine patterns): Wrap with COMPARE
16938         or do not try to produce (set (cc0) REG).
16939         (peepholes): Wrap arguments with COMPARE.  Add a peephole to
16940         change a compare into a move to a scratch register.  Disable some
16941         peepholes when comparing with zero.
16942         (tstsi, tsthi, tstsi, cmpqi): Make private.
16943         (cmphi): Delete.
16944         (bCC, sCC): Delete.
16945         (cbranchqi4, cbranchhi4, cbranchsi4, cstoreqi4, cstorehi4,
16946         cstoresi4): New.
16947
16948         * config/i386/i386.c (ix86_expand_int_movcc, ix86_expand_int_addcc,
16949         ix86_expand_fp_movcc): Set ix86_compare_op0 and ix86_compare_op1.
16950         (ix86_emit_i387_log1p): Use gen_cbranchxf4.
16951         (ix86_emit_i387_log1p): Use cbranchxf2.
16952         (ix86_expand_setcc): Return void.
16953         * config/i386/i386-protos.h (ix86_expand_setcc): Return void.
16954         * config/i386/i386.md (cmpti, cmpdi, cmpsi, cmphi, cmpqi, cmpxf,
16955         cmp<MODEF>, cmpcc): Remove.
16956         (cbranchti4, cbranchdi4, cbranchsi4, cbranchhi4, cbranchqi4,
16957         cbranchxf4, cbranch<MODEF>4, cbranchcc4, cstoredi4, cstoresi4,
16958         cstorehi4, cstoreqi4, cstorexf4, cstore<MODEF>4, cstorecc): New.
16959         (sCC and bCC expanders): Remove.
16960         (stack_protect_test): Use cbranchcc4.
16961
16962         * config/ia64/ia64-protos.h (ia64_compare_op0, ia64_compare_op1):
16963         Delete.
16964         (ia64_expand_compare): Accept three rtx by reference and return void.
16965         * config/ia64/ia64.c (ia64_compare_op0, ia64_compare_op1): Delete.
16966         (ia64_expand_compare): Replace op0/op1 with *op0/*op1.  Get code
16967         from *expr.  Update *expr with the BImode comparison to do.
16968         * config/ia64/ia64.md (cmpbi, cmpsi, cmpdi, cmpsf, cmpdf, cmpxf,
16969         cmptf, bCC, sCC, conditional_trap): Delete.
16970         (cbranchbi4, cbranchsi4, cbranchdi4, cbranchsf4, cbranchdf4,
16971         cbranchxf4, cbranchtf4, cstorebi4, cstoresi4, cstoredi4, cstoresf4,
16972         cstoredf4, cstorexf4, cstoretf4, ctrapbi4, ctrapsi4, ctrapdi4,
16973         ctrapsf4, ctrapdf4, ctrapxf4, ctraptf4): New.
16974         * config/ia64/predicates.md (ia64_cbranch_operator): New.
16975
16976         * config/iq2000/iq2000-protos.h (gen_conditional_branch): Change
16977         type of last argument.
16978         * config/iq2000/iq2000.c (branch_cmp, branch_type): Remove.
16979         (gen_conditional_branch): Get code/cmp0/cmp1 from operands,
16980         use machine mode argument instead of branch_type.  Remove dead
16981         code for floating-point comparisons.
16982         * config/iq2000/iq2000.h (branch_cmp, branch_type): Remove.
16983         * config/iq2000/iq2000.md (cmpsi, cmpdi, cmpsf, cmpdf, tstsi, bCC):
16984         Remove.
16985         (cbranchsi4, cstoresi4): New.
16986         * config/iq2000/predicates.md (reg_or_const_operand): New.
16987
16988         * config/m32c/m32c.md (cbranch splitter): Use match_op_dup.
16989         * config/m32c/m32c.md (any_cond, gl_cond): Delete.
16990         (b<code>_op): Rewrite to...
16991         (bcc_op): ... this, using match_operator.
16992         (s<code>_op): Rewrite to...
16993         (scc_op): ... this, using match_operator.
16994         (s<code>_24_op): Rewrite to...
16995         (scc_op_24): ... this, using match_operator.
16996         (s<code>_<mode>): Rewrite to...
16997         (cstore<mode>4): ... this, using match_operator.
16998         (s<code>_<mode>_24): Rewrite to...
16999         (cstore<mode>4_24): ... this, using match_operator.
17000         * config/m32c/m32c-protos.h (m32c_cmp_flg_0, m32c_pend_compare,
17001         m32c_unpend_compare, m32c_expand_scc): Delete.
17002         * config/m32c/m32c.c (compare_op0, compare_op1, m32c_cmp_flg_0,
17003         m32c_pend_compare, m32c_unpend_compare, m32c_expand_scc): Delete.
17004         (m32c_expand_movcc): Change NE to EQ if necessary.
17005         (m32c_init_libfuncs): Modify cstore optab instead of setcc_gen_code.
17006
17007         * config/m32r/m32r-protos.h (gen_cond_store): New.
17008         * config/m32r/m32r.c (m32r_compare_op0, m32r_compare_op1): Delete.
17009         (gen_cond_store): New, from sCC patterns.
17010         (m32r_expand_block_move): Use cbranchsi4.
17011         * config/m32r/m32r.h (m32r_compare_op0, m32r_compare_op1): Delete.
17012         * config/m32r/m32r.md (cmpsi, bCC, sCC): Delete.
17013         (cbranchsi4, cstoresi4): New.
17014
17015         * config/m68hc11/m68hc11.c (m68hc11_compare_op0, m68hc11_compare_op1):
17016         Delete.
17017         (m68hc11_rtx_costs_1, m68hc11_rtx_costs): Handle ZERO_EXTRACT.
17018         (m68hc11_notice_update_cc): Look into a compare with 0.
17019         * config/m68hc11/m68hc11.h (m68hc11_compare_op0, m68hc11_compare_op1):
17020         Delete.
17021         * config/m68hc11/m68hc11.md (tstsi, tsthi, tstqi, cmpsi,
17022         cmphi, cmpqi, bCC): Delete.
17023         (cbranchsi4, cbranchhi4, cbranchqi4): New.
17024         (tstqi_1, tstqi_z_used, tstqi_1, bitcmpqi, bitcmpqi_z_used,
17025         bitcmpqi_12, bitcmphi, various splits and peephole2s): Wrap cc0<-reg
17026         sets with COMPARE.
17027
17028         * config/m68k/predicates.md (m68k_cstore_comparison_operator,
17029         const0_operand, const1_operand, m68k_subword_comparison_operand): New.
17030         * config/m68k/constraints.md (H): New.
17031         * config/m68k/m68k.md (tstdi): Remove define_expand, use name for
17032         the define_insn below.
17033         (tstsi, tsthi, tst<FP:mode>, cmphi, cmpqi, cmp<FP:mode>): Delete.
17034         (*tstsi_internal_68020_cf, *tstsi_internal, *tsthi_internal,
17035         *tstqi_internal, tst<mode>_6881, tst<mode>_cf, many unnamed
17036         patterns): Wrap RHS with COMPARE.
17037         (tst<FP>_68881, tst<FP>_cf): Use const0_operand.
17038         (*cmpdi_internal): Name this pattern.
17039         (cmpdi): Change to define_insn.
17040         (cbranchdi4, cstoredi4, cbranchsi4, cstoresi4, cbranchhi4, cstorehi4,
17041         cbranchqi4, cstoreqi4, cbranch<FP:mode>4, cstore<FP:mode>4): New.
17042         (scc0_di, scc0_di_5200, scc_di): Use the ordered_comparison_operator
17043         predicate.
17044         (seq, sne, sgt, sgtu, slt, sltu, sge, sgeu, sle, sleu, sordered,
17045         sunordered, suneq, sunge, sungt, sunle, sunlt, sltgt): Delete
17046         (conditional_trap): Change to...
17047         (ctrapdi4, ctrapsi4, ctraphi4, ctrapqi4): ... these.
17048         (*conditional_trap): Use the ordered_comparison_operator and
17049         const1_operand predicates.
17050         * config/m68k/m68k.c (m68k_last_compare_had_fp_operands): Delete.
17051         (m68k_expand_prologue): Use ctrapsi4 instead of cmpsi+conditional_trap.
17052         (m68k_rtx_costs): Look for ZERO_EXTRACT in a COMPARE.
17053         * config/m68k/m68k.h (m68k_last_compare_had_fp_operands): Delete.
17054
17055         * config/mcore/mcore-protos.h (arch_compare_op0, arch_compare_op1,
17056         mcore_modify_comparison, mcore_gen_compare_reg): Remove.
17057         (mcore_gen_compare): New.
17058         * config/mcore/mcore.c (arch_compare_op0, arch_compare_op1): Delete.
17059         (mcore_modify_comparison, mcore_gen_compare_reg): Fold into...
17060         (mcore_gen_compare): ... this.
17061         * config/mcore/mcore.md (cmpsi, bCC, sCC): Remove.
17062         (cbranchsi4, cstoresi4): New, using mcore_gen_compare.
17063         (stack probe pattern): Use cbranchsi4.
17064
17065         * config/mips/predicates.md (mips_cstore_operator): New.
17066         * config/mips/mips-ps-3d.md (movv2sfcc): Do not use cmp_operands.
17067         * config/mips/mips.md (any_cond): Delete.
17068         (conditional_trap): Rename to ctrap<GPR:mode>4.  Adjust predicates,
17069         always succeed.
17070         (fixuns_truncdfsi2, fixuns_truncdfdi2, fixuns_truncsfsi2,
17071         fixuns_truncsfdi2): Use cbranch patterns.
17072         (cmp<GPR:mode>, cmp<SCALARF:mode>): Delete.
17073         (b<code>): Change to cbranch<GPR:mode>4 and cbranch<SCALARF:mode>4.
17074         Adjust call to mips_expand_conditional_branch.
17075         (seq, sne, slt<u>, sle<u>, sgt<u>, sge<u>): Change to
17076         cstore<GPR:mode>4.
17077         * config/mips/mips-protos.h (mips_expand_conditional_branch,
17078         mips_expand_scc, mips_expand_conditional_trap): Adjust prototypes.
17079         * config/mips/mips.c (cmp_operands): Delete.
17080         (mips_emit_compare): Get comparison operands from *op0/*op1.
17081         (mips_expand_scc): Get code/op0/op1/target from operands.  Assert
17082         that it succeeds.  Use op0/op1 instead of cmp_operands.
17083         (mips_expand_conditional_branch, mips_expand_conditional_move,
17084         mips_expand_conditional_trap): Likewise.
17085         (mips_block_move_loop): Use cbranch patterns.
17086         * config/mips/mips.h (cmp_operands): Delete.
17087
17088         * config/mmix/mmix.c (mmix_valid_comparison): Delete.
17089         (mmix_gen_compare_reg): Just return a register in the right CC mode.
17090         * config/mmix/mmix.h (mmix_compare_op0, mmix_compare_op1): New.
17091         * config/mmix/mmix.md (cmpdi, cmpdf): Remove.
17092         (*cmpcc_folded): Rename to...
17093         (*cmpdi_folded): this.
17094         (*cmpcc): Rename to...
17095         (*cmps): ... this.
17096         (movdfcc, movdicc): Adjust for new semantics of mmix_gen_compare_reg.
17097         (bCC): Remove.
17098         (cbranchdi4): New.
17099         (cbranchdf4): New.  Handle invalid comparisons here.
17100         * config/mmix/predicates.md (float_comparison_operator): New.
17101
17102         * config/mn10300/mn10300.c (mn10300_rtx_costs): Consider 0 and
17103         zero_extract to be cheap in (compare (zero_extract) (const_int 0).
17104         * config/mn10300/mn10300.md (tst): Delete.
17105         (*tst_extqisi_am33, *tst_extqisi, *tst_exthisi_am33, *tst_exthisi):
17106         Name these patterns and wrap RHS in a compare.
17107         (*cmpsi): Make this pattern private.  Include tst.
17108         (*cmpsf): Make this pattern private.
17109         (and and zero_extract cc0 set): Wrap RHS in a COMPARE.
17110         (compare with zero peepholes): Likewise.
17111         (bCC): Remove.
17112         (cbranchsi4, cbranchsf4): New.
17113         (casesi): Use cbranchsi4.
17114
17115         * config/pa/pa.c (hppa_compare_op0, hppa_compare_op1,
17116         hppa_branch_type): Delete.
17117         (return_addr_rtx): Use cbranchsi4.
17118         (emit_bcond_fp): Accept all operands.  Replace CODE with NE.
17119         Emit CCFPmode comparison here.
17120         (gen_cmp_fp): Delete, now part of emit_bcond_fp.
17121         * config/pa/pa.h (enum cmp_type, hppa_compare_op0, hppa_compare_op1,
17122         hppa_branch_type): Delete.
17123         * config/pa/pa.md (cmpdi, cmpsi, cmpsf, cmpdf, sCC, bCC): Delete.
17124         (movsicc, movdicc): Remove references to hppa_compare_op0,
17125         hppa_compare_op1 and compare_from_rtx.
17126         (cbranchdi4, cbranchsi4, cbranchsf4, cbranchdf4, cstoresi4): New.
17127         (casesi): Use cbranchsi4.
17128
17129         * config/pdp11/pdp11-protos.h (output_jump): Change prototype.
17130         * config/pdp11/pdp11.c (output_jump): Embed opcodes here.
17131         * config/pdp11/pdp11.md (register_or_const0_operand): New.
17132         (cmpdf, cmphi, cmpqi): Make private.  Add tst alternatives.
17133         (cmpsi, tstsi, tstdf, tsthi, tstqi): Delete.
17134         (bCC): Delete.
17135         (cbranchdf4, cbranchhi4, cbranchqi4): New.
17136         (*branch, *branch_inverted): New.
17137
17138         * config/picochip/picochip.md (cbranchhi4): Use
17139         ordered_comparison_operator.
17140         (cmphi, bCC): Remove.
17141
17142         * config/rs6000/predicates.md (rs6000_cbranch_operator): New.
17143         (trap_comparison_operator): Delete.
17144         * config/rs6000/rs6000-protos.h (rs6000_emit_sCOND,
17145         rs6000_emit_cbranch): Accept mode and operands.
17146         * config/rs6000/rs6000.c (rs6000_compare_op0, rs6000_compare_op1,
17147         rs6000_compare_fp_p): Delete.
17148         (rs6000_generate_compare): Accept mode and comparison.  Extract code
17149         and op0/op1 from there.  Replace references to rs6000_compare_op0
17150         and rs6000_compare_op1.
17151         (rs6000_emit_sCOND): Adjust call to rs6000_generate_compare and
17152         extract result from passed operands.
17153         (rs6000_emit_cbranch): Adjust call to rs6000_generate_compare and
17154         extract loc from passed operands.
17155         (rs6000_emit_cmove): Likewise.
17156         * config/rs6000/rs6000.h (rs6000_compare_op0, rs6000_compare_op1,
17157         rs6000_compare_fp_p): Delete.
17158         * config/rs6000/rs6000.md (cmp<GPR>, cmp<FP>, bCC, sCC): Delete.
17159         (cbranch<GPR>4, cbranch<FP>4): New.
17160         (cstore<mode>4): New.  Consolidate here all choices about when to use
17161         portable or specialized sCC sequences.
17162         (stack_protect_test): Use cbranchsi4.
17163         (conditional_trap): Replace with ctrap<GPR>4.
17164         (conditional trap insn): Replace trap_comparison_operator with
17165         ordered_comparison_operator.
17166
17167         * config/s390/s390.c (s390_compare_op0, s390_compare_op1): Delete.
17168         (s390_emit_prologue): Use ctrap.
17169         * config/s390/s390.h (s390_compare_op0, s390_compare_op1): Delete.
17170         * config/s390/predicates.md (s390_eqne_operator, s390_scond_operator):
17171         New predicates replacing...
17172         * config/s390/s390.md (COMPARE, SCOND): ... these iterators.
17173         (cmp<GPR>, cmp<FP>, cmpcc): Delete.
17174         (trunc patterns): Use emit_cmp_and_jump_insns instead of cmp/branch.
17175         (add<mode>cc): Do not use s390_compare_op0/op1.
17176         (s<code>): Change to...
17177         (cstore<mode>4): ... this. Do not use s390_compare_op0/op1.
17178         (seq): Change to...
17179         (cstorecc4): ... this.  Handle EQ or NE equally.
17180         (*sne): Un-privatize for use in cstorecc4.
17181         (b<code>): Change to...
17182         (cbranch<GPR>4, cbranch<FP>4, cbranchcc4): ... these.
17183         (conditional_trap): Replace with...
17184         (ctrap<GPR>4, ctrap<FP>4): ... these.
17185         (stack_protect): Use cbranchcc4.
17186
17187         * config/score/score-conv.h (cmp_op0, cmp_op1): Delete.
17188         * config/score/score-protos.h (score_gen_cmp): Delete.
17189         * config/score/score.c (cmp_op0, cmp_op1, score_gen_cmp): Delete.
17190         (score_block_move-loop): Use cbranchsi4.
17191         * config/score/score.md (cbranchsi4): New.
17192         (cmpsi, bCC): Delete.
17193         * config/score/score3.c (cmp_op0, cmp_op1, score3_gen_cmp): Delete.
17194         (score3_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
17195         * config/score/score7.c (cmp_op0, cmp_op1, score7_gen_cmp): Delete.
17196         (score7_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
17197         * config/score/score3.h (score3_gen_cmp): Delete.
17198         * config/score/score7.h (score7_gen_cmp): Delete.
17199
17200         * config/sh/sh-protos.h (prepare_scc_operands): Rename to...
17201         (sh_emit_scc_to_t): ... this.  Return void.
17202         (from_compare): Rename to...
17203         (sh_emit_compare_and_branch): ... this.
17204         (sh_emit_compare_and_set): New.
17205         (sh_expand_t_scc): Accept operands.
17206         * config/sh/predicates.md (sh_float_comparison_operator): New.
17207         * config/sh/sh.c (sh_compare_op0, sh_compare_op1): Delete.
17208         (prepare_scc_operands): Rename to...
17209         (sh_emit_scc_to_t): ... this.  Return void.  Get op0/op1 from
17210         arguments.
17211         (sh_emit_cheap_store_flag): New.
17212         (sh_emit_set_t_insn): New.
17213         (from_compare): Rename to...
17214         (sh_emit_compare_and_branch): ... this.  Accept mode.  Rewrite
17215         handling of TARGET_SH2E floating point to avoid recursive call.
17216         Generate branch here.
17217         (sh_emit_compare_and_set): New.
17218         (sh_expand_t_scc): Get op0/op1 from arguments.
17219         (sh_emit_cheap_store_flag): New.
17220         * config/sh/sh.md (cbranchdi4, cbranchsi4): Include -mno-cbranchdi
17221         cases.
17222         (cbranchdi4_i): Use an "I08" constraint instead of an "i" constraint.
17223         (cmpsi, cmpdi, cmpsf, cmpdf): Delete.
17224         (movsicc, movdicc): Do nothing when it recreated operands from
17225         sh_compare_*. Use sh_emit_cheap_store_flag.  Adjust call to
17226         prepare_scc_operands (now sh_emit_scc_to_t).
17227         (udivdi3): Use cstoresi4.
17228         (beq_media, bne_media, bge_media, bgtu_media, bgeu_media, beq,
17229         bne, bgt, blt, ble, bge, bgtu, bltu, bgeu, bleu, bunordered): Delete.
17230         (cbranchint4_media, cbranchfp4_media): New.
17231         (casesi): Use cbranchdi4.
17232         (seq, slt, sle, sgt, sge, sgtu, sltu, sgeu, sne, sleu, sunordered):
17233         Delete.
17234         (cstore4_media, cstoresi4, cstoredi4, cstoresf4, cstoredf4): New.
17235         (movnegt): Remove second operand.
17236         (cbranchsf4, cbranchdf4): New.
17237         (stack_protect): Use cbranchdi4/cbranchsi4.
17238
17239         * config/sparc/sparc.c (sparc_compare_op0, sparc_compare_op1): Delete.
17240         (gen_compare_reg): Accept comparison, extract part of it to...
17241         (gen_compare_reg_1): ... this.
17242         (gen_compare_operator): Delete.
17243         (gen_v9_scc): Accept separate destination, comparison code and arms.
17244         Do not use sparc_compare_op0/sparc_compare_op1.
17245         (emit_scc_insn, emit_conditional_branch_insn): New.
17246         (emit_v9_brxx): Make static.  Remove useless assertion.
17247         (sparc_emit_float_lib_cmp): Return RTL instead of calling
17248         emit_cmp_insn.
17249         (sparc_expand_compare_and_swap_12): Use gen_compare_reg_1+cbranchcc4.
17250         * config/sparc/sparc-protos.h (gen_compare_reg,
17251         sparc_emit_float_lib_cmp): Adjust prototype.
17252         (emit_scc_insn, emit_conditional_branch_insn): New.
17253         (gen_v9_scc, emit_v9_brxx_insn, gen_compare_operator): Delete.
17254         * config/sparc/sparc.h (sparc_compare_op0, sparc_compare_op1): Delete.
17255         * config/sparc/sparc.md (P, I, F, V32, V32I, V64, V64I): Move all
17256         iterators to the top.
17257         (cmpsi, cmpdi, cmpsf, cmpdf, cmptf, seqsi_special_extend,
17258         snesi_special_extend, sCC, bCC, seqdi_special_trunc,
17259         snedi_special_trunc): Delete.
17260         (seqdi_special, snedi_special): Use expansion of seqdi_special_trunc
17261         and snedi_special_trunc.
17262         (cstoresi4, cstoredi4, cstore<F:mode>4, cbranchcc4, cbranchsi4,
17263         cbranchdi4, cbranch<F:mode>4): New.
17264         (mov<I:mode>cc, mov<F:mode>cc): Handle sparc_emit_float_lib_cmp
17265         here.  Use gen_compare_reg instead of gen_compare_operator.
17266         (conditional_trap): Replace with...
17267         (ctrapsi4, ctrapdi4): ... this.
17268         (stack_protect_test): Use cbranchcc4.
17269
17270         * config/spu/spu-protos.h (spu_emit_branch_or_set): Change second
17271         argument to rtx.
17272         * config/spu/spu.c (spu_compare_op0, spu_compare_op1): Remove.
17273         (spu_emit_branch_or_set): Get code/op0/op1 from second argument.
17274         Change spu_compare_op0/op1 to op0/op1 throughout.  Get target
17275         from operands[0] or operands[3] depending on is_set.
17276         * config/spu/spu.h (spu_compare_op0, spu_compare_op1): Remove.
17277         * config/spu/spu.md (cmp<mode:VQHSI>, cmp<mode:DTI>, cmp<mode:VSF>,
17278         cmpdf, bCC), sCC: Remove.
17279         (cbranch<mode:VQHSI>4, cbranch<mode:DTI>, cbranch<mode:VSF>4,
17280         cbranchdf4, cstore<mode:VQHSI>4, cstore<mode:DTI>, cstore<mode:VSF>4,
17281         cstoredf4): New.
17282         (mov<mode>cc): Accept ordered_comparison_operator, adjust call to
17283         spu_emit_branch_or_set.
17284
17285         * config/stormy16/stormy16-protos.h (xstormy16_emit_cbranch):
17286         Add two arguments.
17287         * config/stormy16/stormy16.h (xstormy16_compare_op0,
17288         xstormy16_compare_op1): Delete.
17289         * config/stormy16/stormy16.c (xstormy16_compare_op0,
17290         xstormy16_compare_op1): Delete.
17291         (xstormy16_emit_cbranch): Get op0/op1 from the new arguments.
17292         Adjust calls.
17293         * config/stormy16/stormy16.md (cbranchsi4, cbranchhi4): New.
17294         (cmphi, cmpsi, bCC): Remove.
17295
17296         * config/v850/v850.md (tstsi, cmpsi): Fold into...
17297         (*cmpsi): ... this one.
17298         (cbranchsi4, cstoresi4): New.
17299         (bCC expanders): Delete.
17300         (sCC insns): Fold into...
17301         (*setcc): ... this one.
17302         (casesi): Do not use gen_cmpsi and gen_bgtu.
17303         (various splits): Wrap "naked" RHS of a cc0 set with COMPARE.
17304         (movsicc): Simplify.
17305         * config/v850/v850.c (v850_rtx_costs): Handle ZERO_EXTRACT in COMPARE.
17306
17307         * config/vax/vax-protos.h (cond_name): New.
17308         (vax_output_conditional_branch): Remove.
17309         * config/vax/vax.c (cond_name): New.
17310         (vax_output_conditional_branch): Remove.
17311         * config/vax/vax.h (PRINT_OPERAND): Dispatch %c to cond_name.
17312         * config/vax/vax.md (tst<VAXint>, tst<VAXfp>): Remove.
17313         (cmp<VAXint>, cmp<VAXfp>): Privatize.  Add constraints for tst.
17314         (bit<VAXint>): Wrap source with (compare).
17315         (b<code> and following unnamed pattern): Rename to *branch and
17316         *branch_reversed.  Change macroization to match_operator.
17317         (cbranch<VAXint>4, cbranch<VAXfp>4): New.
17318
17319         * config/xtensa/predicates.md (xtensa_cstoresi_operator): New.
17320         * config/xtensa/xtensa-protos.h (xtensa_expand_conditional_branch):
17321         Change last argument to machine_mode.
17322         (xtensa_expand_scc): Add machine_mode argument.
17323         * config/xtensa/xtensa.c (branch_cmp, branch_type): Remove.
17324         (gen_conditional_move, xtensa_expand_conditional_branch,
17325         xtensa_expand_scc, xtensa_expand_conditional_move): Use mode
17326         instead of branch_type, fetch cmp0/cmp1/test_code from operands[].
17327         Adjust operand numbers.
17328         * config/xtensa/xtensa.h (enum cmp_type, branch_cmp, branch_type):
17329         Delete.
17330         * config/xtensa/xtensa.md (any_cond, any_scc): Delete.
17331         (cmpsi, cmpsf, b<code>, s<code>): Delete.
17332         (cbranchsi4, cbranchsf4, cstoresi4, cstoresf4): New.
17333
17334 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
17335
17336         * optabs.c (prepare_cmp_insn): Temporarily disable test that
17337         causes spurious differences between trunk and cond-optab branch.
17338
17339 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
17340
17341         PR target/37137
17342         * doc/install.texi (STAGE1_TFLAGS, BUILD_CONFIG): Document.
17343
17344 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
17345
17346         * tree.c (iterative_hash_pointer): Delete.
17347         (iterative_hash_expr): Short-circuit handling of NULL pointer.
17348         Hash UIDs and versions of SSA names.  Don't special-case built-in
17349         function declarations.
17350
17351 2009-05-11  Ian Lance Taylor  <iant@google.com>
17352
17353         PR bootstrap/40103
17354         * graphite.c: Force -Wc++-compat to only be a warning before
17355         #including "cloog/cloog.h".
17356
17357 2009-05-11  Martin Jambor  <mjambor@suse.cz>
17358
17359         * ipa-cp.c (ipcp_cloning_candidate_p): Add missing return false.
17360
17361 2009-05-11  Jan Hubicka  <jh@suse.cz>
17362
17363         * tree-ssa-loop-ivcanon.c: Include target.h
17364         (struct loop_size): new structure.
17365         (constant_after_peeling): New predicate.
17366         (tree_estimate_loop_size): New function.
17367         (estimated_unrolled_size): Rewrite for new estimates.
17368         (try_unroll_loop_completely): Use new estimates.
17369         * Makefile.in (tree-ssa-loop-ivcanon.o): Add dependenc on target.h
17370
17371 2009-05-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
17372
17373         * config/spu/spu-c.c (spu_categorize_keyword): Update for recent
17374         libcpp interface change.
17375         (spu_macro_to_expand): Likewise.
17376
17377 2009-05-11  Paolo Bonzini  <bonzini@gnu.org>
17378
17379         PR tree-optimization/40026
17380         * gimplify.c (gimplify_init_constructor): Change initial conditional
17381         to assertion.  Rewrite TREE_OPERAND (*expr_p, 1) after
17382         optimize_compound_literals_in_ctor.
17383
17384 2009-05-11  Nathan Sidwell  <nathan@codesourcery.com>
17385
17386         * config/m68k/m68k-devices.def (52274, 52277, 5301x, 5225x, 51xx):
17387         New devices.
17388         * doc/invoke.texi (M680x0 Options): Document new coldfire cpus.
17389
17390 2009-05-11  H.J. Lu  <hongjiu.lu@intel.com>
17391
17392         * tree-vect-data-refs.c (vect_analyze_group_access): Use
17393         HOST_WIDE_INT for gap.
17394
17395 2009-05-11  Ira Rosen  <irar@il.ibm.com>
17396
17397         PR tree-optimization/40074
17398         * tree-vect-data-refs.c (vect_analyze_group_access): Take gaps into
17399         account in group size and step comparison.
17400
17401 2009-05-11  Richard Guenther  <rguenther@suse.de>
17402
17403         * passes.c (init_optimization_passes): Strip now incorrect comment.
17404         (execute_function_todo): Do not set PROP_alias.
17405         * tree-pass.h (PROP_alias): Remove.
17406         * tree-ssa-structalias.c (pass_build_alias): Do not provide PROP_alias.
17407         * tree-if-conv.c (pass_if_conversion): Do not require PROP_alias.
17408         * tree-nrv.c (pass_return_slot): Likewise.
17409         * tree-object-size.c (pass_object_sizes): Likewise.
17410         * tree-ssa-dom.c (pass_dominator): Likewise.
17411         (pass_phi_only_cprop): Likewise.
17412         * tree-ssa-dse.c (pass_dse): Likewise.
17413         * tree-ssa-phiopt.c (pass_phiopt): Likewise.
17414         (pass_cselim): Likewise.
17415         * tree-ssa-pre.c (pass_pre): Likewise.
17416         (pass_fre): Likewise.
17417         * tree-ssa-reassoc.c (pass_reassoc): Likewise.
17418         * tree-ssa-sink.c (pass_sink_code): Likewise.
17419         * tree-stdarg.c (pass_stdarg): Likewise.
17420         * tree-tailcall.c (pass_tail_calls): Likewise.
17421         * tree-vrp.c (pass_vrp): Likewise.
17422
17423 2009-05-10  Ian Lance Taylor  <iant@google.com>
17424
17425         * basic-block.h (enum profile_status): Break out of struct
17426         control_flow_graph.
17427         * cgraph.h (struct inline_summary): Break out of struct
17428         cgraph_local_info.
17429         * cgraphunit.c (enum cgraph_order_sort_kind): New enum, broken out
17430         of struct cgraph_order_sort.
17431         * combine.c (enum undo_kind): New enum, broken out of struct undo.
17432         * cse.c (struct branch_path): Break out of struct
17433         cse_basic_block_data.
17434         * except.h (enum eh_region_type): Break out of struct eh_region.
17435         * gcc.c (enum add_del): Break out of struct modify_target.
17436         * genrecog.c (enum decision_type): Break out of struct decision_test.
17437         * ggc-page.c (struct ggc_pch_ondisk): Break out of struct
17438         ggc_pch_data.
17439         * matrix-reorg.c (struct free_info): Break out of struct matrix_info.
17440         * regmove.c (enum match_use): New enum, broken out of struct match.
17441         * sched-int.h (enum post_call_group): New enum, broken out of
17442         struct deps.
17443         (struct deps_reg): Break out of struct deps.
17444         * target.h (struct asm_int_op): Break out of struct gcc_target.
17445         * tree-eh.c (struct goto_queue_node): Break out of struct
17446         leh_tf_state.
17447         * tree-inline.h (enum copy_body_cge_which): Break out of
17448         copy_body_data.
17449         * tree-pass.h (enum opt_pass_type): Break out of struct opt_pass.
17450
17451         * c-decl.c (in_struct, struct_types): New static variables.
17452         (pushtag): Add loc parameter.  Change all callers.
17453         (lookup_tag): Add ploc parameter.  Change all callers.
17454         (check_compound_literal_type): New function.
17455         (parser_xref_tag): Add loc parameter.  Change all callers.  If
17456         -Wc++-compat, warn about struct/union/enum types defined within a
17457         struct or union.
17458         (start_struct): Add enclosing_in_struct, enclosing_struct_types,
17459         and loc parameters.  Change all callers.  Change error calls to
17460         error_at, using loc.  For a redefinition, if the location of the
17461         original definition is known, report it.  Set in_struct and
17462         struct_types.  If -Wc++-compat warn if in sizeof, typeof, or alignof.
17463         (finish_struct): Add new parameters enclosing_in_struct and
17464         enclosing_struct_types.  Change all callers.  Set
17465         C_TYPE_DEFINED_IN_STRUCT for all struct/union/enum types defined
17466         in the struct.  If in a struct, add this struct to struct_types.
17467         (start_enum): Add loc parameter.  Change all callers.  Use
17468         error_at for errors, using loc.  For a redefinition, if the
17469         location of the original definition is known, report it.  If in a
17470         struct, add this enum type to struct_types.  If -Wc++-compat warn
17471         if in sizeof, typeof, or alignof.
17472         * c-parser.c (disable_extension_diagnostics): Disable -Wc++-compat.
17473         (enable_extension_diagnostics): Reenable -Wc++-compat if appropriate.
17474         (c_parser_enum_specifier): Get enum location for start_enum.
17475         (c_parser_struct_or_union_specifier): Get struct location for
17476         start_struct.  Save in_struct and struct_types status between
17477         start_struct and finish_struct.
17478         (c_parser_cast_expression): Get location of cast.
17479         (c_parser_alignof_expression): Get location of type.
17480         (c_parser_postfix_expression): Likewise.
17481         (c_parser_postfix_expression_after_paren_type): Add type_loc
17482         parameter.  Change all callers.  Call check_compound_literal_type.
17483         Use type_loc for error about variable size type.
17484         * c-typeck.c (build_external_ref): If -Wc++-compat, warn about a use
17485         of an enum constant from an enum type defined in a struct or union.
17486         (c_cast_expr): Add loc parameter.  Change all callers.  If
17487         -Wc++-compat, warn about defining a type in a cast.
17488         * c-tree.h (C_TYPE_DEFINED_IN_STRUCT): Define.
17489         (start_enum, start_struct, finish_struct): Update declarations.
17490         (parser_xref_tag, c_cast_expr): Update declarations.
17491         (check_compound_literal_type): Declare.
17492
17493 2009-05-11  Ben Elliston  <bje@au.ibm.com>
17494
17495         * config/rs6000/rs6000-c.c (altivec_categorize_keyword): Update
17496         for recent libcpp interface change.
17497         (rs6000_macro_to_expand): Likewise.
17498
17499 2009-05-10  Michael Matz  <matz@suse.de>
17500
17501         PR target/40031
17502         * config/arm/arm.c (require_pic_register): Emit on entry edge,
17503         not at entry of function.
17504
17505 2009-05-10  Richard Guenther  <rguenther@suse.de>
17506
17507         PR tree-optimization/40081
17508         Revert
17509         * tree-sra.c (instantiate_element): Instantiate scalar replacements
17510         using the main variant of the element type.  Do not fiddle with
17511         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
17512
17513         * tree-sra.c (sra_type_can_be_decomposed_p): Do not decompose
17514         structs with volatile fields.
17515
17516 2009-05-10  Jan Hubicka  <jh@suse.cz>
17517
17518         * tree-inline.c (delete_unreachable_blocks_update_callgraph): Declare.
17519         (estimate_move_cost): Assert that it does not get called for
17520         VOID_TYPE_P.
17521         (estimate_num_insns): Skip VOID types in argument handling.
17522         (optimize_inline_calls): Delete unreachable blocks and verify that
17523         callgraph is valid.
17524
17525 2009-05-10  Jan Hubicka  <jh@suse.cz>
17526
17527         * cgraphbuild.c (record_reference): Use cgraph_mark_address_taken_node.
17528         * cgraph.c (cgraph_mark_address_taken_node): New function.
17529         (dump_cgraph_node): Dump new flag.
17530         * cgraph.h (struct cgraph_node): Add address_taken.
17531         (cgraph_mark_address_taken_node): New function.
17532         * ipa.c (cgraph_postorder): Prioritize functions with address taken
17533         since new direct calls can be born.
17534
17535 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
17536
17537         * c-lex.c (c_lex_with_flags): Expect cpp_hashnode in
17538         tok->val.node.node.
17539
17540 2009-05-10  Jan Hubicka  <jh@suse.cz>
17541
17542         PR middle-end/40084
17543         * cgraph.c (cgraph_update_edges_for_call_stmt_node): Take old_call
17544         argument; rewrite.
17545         (cgraph_update_edges_for_call_stmt): Take old_decl argument.
17546         * cgraph.h (cgraph_update_edges_for_call_stmt): Update prototype.
17547         * tree-inline.c (copy_bb): Set frequency correctly.
17548         (fold_marked_statements): Update call to
17549         cgraph_update_edges_for_call_stmt.
17550
17551 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
17552
17553         * config/arc/arc.c (arc_handle_interrupt_attribute): Use %qE for
17554         identifiers in diagnostics.
17555         * config/arm/arm.c (arm_handle_fndecl_attribute,
17556         arm_handle_isr_attribute): Likewise.
17557         * config/avr/avr.c (avr_handle_progmem_attribute,
17558         avr_handle_fndecl_attribute, avr_handle_fntype_attribute): Likewise.
17559         * config/bfin/bfin.c (handle_int_attribute,
17560         bfin_handle_longcall_attribute, bfin_handle_l1_text_attribute,
17561         bfin_handle_l1_data_attribute, bfin_handle_longcall_attribute,
17562         bfin_handle_l1_text_attribute, bfin_handle_l1_data_attribute):
17563         Likewise.
17564         * config/darwin.c (darwin_handle_kext_attribute,
17565         darwin_handle_weak_import_attribute): Likewise.
17566         * config/h8300/h8300.c (h8300_handle_fndecl_attribute,
17567         h8300_handle_eightbit_data_attribute,
17568         h8300_handle_tiny_data_attribute): Likewise.
17569         * config/i386/i386.c (ix86_handle_cconv_attribute,
17570         ix86_handle_abi_attribute, ix86_handle_struct_attribute): Likewise.
17571         * config/i386/winnt.c (ix86_handle_shared_attribute,
17572         ix86_handle_selectany_attribute): Likewise.
17573         * config/ia64/ia64.c (ia64_handle_model_attribute): Likewise.
17574         * config/m32c/m32c.c (function_vector_handler): Likewise.
17575         * config/m68hc11/m68hc11.c (m68hc11_handle_page0_attribute,
17576         m68hc11_handle_fntype_attribute): Likewise.
17577         * config/m68k/m68k.c (m68k_handle_fndecl_attribute): Likewise.
17578         * config/mcore/mcore.c (mcore_handle_naked_attribute): Likewise.
17579         * config/mips/mips.c (mips_insert_attributes,
17580         mips_merge_decl_attributes, mips_expand_builtin): Likewise.
17581         * config/rs6000/rs6000.c (rs6000_handle_longcall_attribute,
17582         rs6000_handle_struct_attribute): Likewise.
17583         * config/sh/sh.c (sh_insert_attributes,
17584         sh_handle_resbank_handler_attribute,
17585         sh_handle_interrupt_handler_attribute,
17586         sh2a_handle_function_vector_handler_attribute,
17587         sh_handle_sp_switch_attribute, sh_handle_trap_exit_attribute):
17588         Likewise.
17589         * config/sh/symbian.c (sh_symbian_mark_dllimport): Likewise.
17590         * config/spu/spu.c (spu_handle_fndecl_attribute,
17591         spu_handle_vector_attribute): Likewise.
17592         * config/stormy16/stormy16.c
17593         (xstormy16_handle_interrupt_attribute): Likewise.
17594         * config/v850/v850-c.c (ghs_pragma_section): Likewise.
17595         * config/v850/v850.c (v850_handle_interrupt_attribute): Likewise.
17596
17597 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
17598
17599         * pretty-print.h (struct pretty_print_info): Add translate_identifiers.
17600         (pp_translate_identifiers): New.
17601         (pp_identifier): Only conditionally translate identifier to locale
17602         character set.
17603         * pretty-print.c (pp_construct): Set pp_translate_identifiers.
17604         (pp_base_tree_identifier): Only conditionally translate identifier
17605         to locale character set.
17606         * c-pretty-print.c (M_): Define.
17607         (pp_c_type_specifier, pp_c_primary_expression): Mark English
17608         fragments for conditional translation with M_.
17609         * tree-pretty-print.c (maybe_init_pretty_print): Disable
17610         identifier translation.
17611
17612 2009-05-10  Richard Guenther  <rguenther@suse.de>
17613
17614         PR tree-optimization/40081
17615         * tree-sra.c (instantiate_element): Instantiate scalar replacements
17616         using the main variant of the element type.  Do not fiddle with
17617         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
17618
17619 2009-05-09  Jan Hubicka  <jh@suse.cz>
17620
17621         PR middle-end/40080
17622         * cgraphunit.c (cgraph_materialize_all_clones): Do not redirect
17623         indirect calls; verify cgraph afterwards.
17624
17625 2009-05-09  Jan Hubicka  <jh@suse.cz>
17626
17627         PR bootstrap/40082
17628         * ipa.c (update_inlined_to_pointer): New function.
17629         (cgraph_remove_unreachable_nodes): Use it.
17630
17631 2009-05-09  Jan Hubicka  <jh@suse.cz>
17632
17633         * tree-eh.c (struct leh_state): Remove prev_try.
17634         (lower_try_finally, lower_catch, lower_eh_filter, lower_cleanup): Do
17635         not track prev_try.
17636         * except.c (gen_eh_region_cleanup, duplicate_eh_regions,
17637         copy_eh_region_1, copy_eh_region, redirect_eh_edge_to_label,
17638         remove_eh_handler_and_replace, foreach_reachable_handler,
17639         verify_eh_region, verify_eh_tree): Remove tracking of prev_try pointer.
17640         * except.h (struct eh_region): Remove eh_region_u_cleanup.
17641         (gen_eh_region_cleanup): Update prototype.
17642
17643 2009-05-09  Jan Hubicka  <jh@suse.cz>
17644
17645         PR middle-end/40043
17646         * except.c (copy_eh_region): Always set prev_try.
17647         (redirect_eh_edge_to_label): Find outer try.
17648         (foreach_reachable_handler): When looking for prev try
17649         handle case where previous try is not going to be taken.
17650
17651 2009-05-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
17652
17653         PR tree-optimization/40049
17654         * tree-vect-stmts.c (vectorizable_operation): If the machine has
17655         only vector/vector shifts, convert the type of the constant to the
17656         appropriate type to avoid building incorrect trees, which
17657         eventually have problems with garbage collection.
17658
17659 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
17660
17661         * fold-const.c (fold_binary): Do not fold multiplication by 1 or
17662         -1 for complex floating-point types if honoring signed zeros.
17663
17664 2009-05-08  Jan Hubicka  <jh@suse.cz>
17665
17666         * cgraphbuild.c (compute_call_stmt_bb_frequency): Accept function
17667         argument; handle correctly when profile is absent.
17668         (build_cgraph_edges): Update.
17669         (rebuild_cgraph_edges): Update.
17670         * cgraph.c: Do not include varray.h.
17671         (cgraph_set_call_stmt_including_clones): New function.
17672         (cgraph_create_edge_including_clones): Likewise
17673         (cgraph_update_edges_for_call_stmt_node): New static cfunction.
17674         (cgraph_update_edges_for_call_stmt): Handle clones.
17675         (cgraph_remove_node): Handle clone tree.
17676         (cgraph_remove_node_and_inline_clones): New function.
17677         (dump_cgraph_node): Dump clone tree.
17678         (cgraph_clone_node): Handle clone tree.
17679         (clone_function_name): Bring here from tree-inline.c.
17680         (cgraph_create_virtual_clone): New function.
17681         * cgraph.h (ipa_replace_map): Move here from ipa.h.
17682         (cgraph_clone_info): New function.
17683         (strut cgraph_node): Add clone_info and new clone tree pointers.
17684         (cgraph_remove_node_and_inline_clones,
17685         cgraph_set_call_stmt_including_clones,
17686         cgraph_create_edge_including_clones,
17687         cgraph_create_virtual_clone): Declare.
17688         (cgraph_function_versioning): Use VEC argument.
17689         (compute_call_stmt_bb_frequency): Update prototype.
17690         (cgraph_materialize_all_clones): New function.
17691         * ipa-cp.c (ipcp_update_cloned_node): Remove.
17692         (ipcp_create_replace_map): Update to VECtors.
17693         (ipcp_update_callgraph): Use virtual clones.
17694         (ipcp_update_bb_counts, ipcp_update_edges_counts): Remove.
17695         (ipcp_update_profiling): Do not update local profiling.
17696         (ipcp_insert_stage): Use VECtors and virtual clones.
17697         * cgraphunit.c (verify_cgraph_node): Verify clone tree.
17698         (clone_of_p): New function.
17699         (cgraph_preserve_function_body_p): Use clone tree.
17700         (cgraph_optimize): Materialize clones.
17701         (cgraph_function_versioning): Update for VECtors.
17702         (save_inline_function_body): Use clone tree.
17703         (cgraph_materialize_clone): New function.
17704         (cgraph_materialize_all_clones): Likewise.
17705         * ipa-inline.c (cgraph_default_inline_p): Use analyzed flags.
17706         * ipa.c: Include gimple.h.
17707         (cgraph_remove_unreachable_nodes): Use clone tree.
17708         * ipa-prop.c (ipa_note_param_call): Update call to
17709         compute_call_stmt_bb_frequencycall.
17710         * ipa-prop.h (ipa_replace_map): Move to cgraph.h.
17711         * tree-inline.c: Do not include varray.h or gt-tree-inline.h.
17712         (copy_bb): Handle updating of clone tree; add new edge when new call
17713         appears.
17714         (expand_call_inline): Be strict about every call having edge.
17715         (clone_fn_id_num, clone_function_name): Move to cgraph.c.
17716         (delete_unreachable_blocks_update_callgraph): New function.
17717         (tree_function_versioning): Use VECtors; always remove unreachable
17718         blocks and fold conditionals.
17719         * tree-inline.h: Do not include varray.h.
17720         (tree_function_versioning): Remove.
17721         * Makefile.in (GTFILES): Remove tree-inline.c
17722         * passes.c (do_per_function): Do only functions having body.
17723         * ipa-struct-reorg.c (do_reorg_1, collect_data_accesses): Handle clone
17724         tree.
17725
17726 2009-05-08  H.J. Lu  <hongjiu.lu@intel.com>
17727             Andrew Morrow  <acm@google.com>
17728
17729         PR c/36892
17730         * c-common.c (c_common_attribute_table): Permit deprecated
17731         attribute to take an optional argument.
17732         (handle_deprecated_attribute): If the optional argument to
17733         __attribute__((deprecated)) is not a string ignore the attribute
17734         and emit a warning.
17735
17736         * c-decl.c (grokdeclarator): Updated warn_deprecated_use call.
17737         * c-typeck.c (build_component_ref): Likewise.
17738         (build_external_ref): Likewise.
17739
17740         * toplev.c (warn_deprecated_use): Add an attribute argument.
17741         Emit the message associated with __attribute__((deprecated)).
17742
17743         * toplev.h (warn_deprecated_use): Updated.
17744
17745         * doc/extend.texi: Document new optional parameter to
17746         __attribute__((deprecated))
17747
17748 2009-05-08  Michael Eager <eager@eagercon.com>
17749
17750         * config/rs6000/rs6000.md (*movdf_softfloat32): replace
17751         !TARGET_DOUBLE_FLOAT with TARGET_SINGLE_FLOAT.
17752
17753 2009-05-08  Richard Guenther  <rguenther@suse.de>
17754
17755         PR tree-optimization/40062
17756         * tree-scalar-evolution.c (follow_ssa_edge_in_condition_phi):
17757         Avoid exponential behavior.
17758
17759 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
17760
17761         PR rtl-optimization/33928
17762         PR 26854
17763         * fwprop.c (use_def_ref, get_def_for_use, bitmap_only_bit_bitween,
17764         process_uses, build_single_def_use_links): New.
17765         (update_df): Update use_def_ref.
17766         (forward_propagate_into): Use get_def_for_use instead of use-def
17767         chains.
17768         (fwprop_init): Call build_single_def_use_links and let it initialize
17769         dataflow.
17770         (fwprop_done): Free use_def_ref.
17771         (fwprop_addr): Eliminate duplicate call to df_set_flags.
17772         * df-problems.c (df_rd_simulate_artificial_defs_at_top,
17773         df_rd_simulate_one_insn): New.
17774         (df_rd_bb_local_compute_process_def): Update head comment.
17775         (df_chain_create_bb): Use the new RD simulation functions.
17776         * df.h (df_rd_simulate_artificial_defs_at_top,
17777         df_rd_simulate_one_insn): New.
17778         * opts.c (decode_options): Enable fwprop at -O1.
17779         * doc/invoke.texi (-fforward-propagate): Document this.
17780
17781 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
17782
17783         PR c/24581
17784         * c-typeck.c (build_binary_op): Handle arithmetic between one real
17785         and one complex operand specially.
17786         * tree-complex.c (some_nonzerop): Do not identify a real value as
17787         zero if flag_signed_zeros.
17788
17789 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
17790
17791         PR rtl-optimization/33928
17792         * loop-invariant.c (record_use): Fix && vs. || mishap.
17793
17794 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
17795
17796         PR rtl-optimization/33928
17797         * loop-invariant.c (struct use): Add addr_use_p.
17798         (struct def): Add n_addr_uses.
17799         (struct invariant): Add cheap_address.
17800         (create_new_invariant): Set cheap_address.
17801         (record_use): Accept df_ref.  Set addr_use_p and update n_addr_uses.
17802         (record_uses): Pass df_ref to record_use.
17803         (get_inv_cost): Do not add inv->cost to comp_cost for cheap addresses
17804         used only as such.
17805
17806 2009-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
17807
17808         * config/sh/sh.c: Do not include c-pragma.h.
17809
17810 2009-05-07  Andrew Pinski  <andrew_pinski@playstation.sony.com>
17811
17812         * config/spu/spu.c: Remove include of c-common.h.
17813
17814 2009-05-07  Janis Johnson  <janis187@us.ibm.com>
17815
17816         PR c/39037
17817         * c-common.h (mark_valid_location_for_stdc_pragma,
17818         valid_location_for_stdc_pragma_p, set_float_const_decimal64,
17819         clear_float_const_decimal64, float_const_decimal64_p): New.
17820         * c.opt (Wunsuffixed-float-constants): New.
17821         * c-lex.c (interpret_float): Use pragma FLOAT_CONST_DECIMAL64 for
17822         unsuffixed float constant, handle new warning.
17823         * c-cppbuiltin.c (c_cpp_builtins): Use cast for double constants.
17824         * c-decl.c (c_scope): New flag float_const_decimal64.
17825         (set_float_const_decimal64, clear_float_const_decimal64,
17826         float_const_decimal64_p): New.
17827         (push_scope): Set new flag.
17828         * c-parser.c (c_parser_translation_unit): Mark when it's valid
17829         to use STDC pragmas.
17830         (c_parser_external_declaration): Ditto.
17831         (c_parser_compound_statement_nostart): Ditto.
17832         * c-pragma.c (valid_location_for_stdc_pragma,
17833         mark_valid_location_for_stdc_pragma,
17834         valid_location_for_stdc_pragma_p, handle_stdc_pragma,
17835         handle_pragma_float_const_decimal64): New.
17836         (init_pragma): Register new pragma FLOAT_CONST_DECIMAL64.
17837         * cp/semantics.c (valid_location_for_stdc_pragma_p,
17838         set_float_const_decimal64, clear_float_const_decimal64,
17839         float_const_decimal64_p): New dummy functions.
17840         * doc/extend.texi (Decimal Float): Remove statement that the
17841         pragma, and suffix for double constants, are not supported.
17842         * doc/invoke.texi (Warning Options): List new option.
17843         (-Wunsuffixed-float-constants): New.
17844
17845 2009-05-08  Steven Bosscher  <steven@gcc.gnu.org>
17846
17847         * config/i386/i386.c: Do not include c-common.h.
17848
17849 2009-05-07  Mark Heffernan  <meheff@google.com>
17850
17851         * doc/invoke.texi (Debugging Options): Document change of debugging
17852         dump location.
17853         * opts.c (decode_options): Make dump_base_name relative to
17854         aux_base_name directory.
17855
17856 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
17857
17858         * config/picochip/picochip.h (NO_DOLLAR_IN_LABEL): Added.
17859         * config/picochip/libgccExtras/divmod15.asm : Removed redefiniton.
17860
17861 2009-05-07  Rafael Avila de Espindola  <espindola@google.com>
17862
17863         * Makefile.in (install-plugin): Simplify a bit.
17864
17865 2009-05-07  Paolo Bonzini  <bonzini@gnu.org>
17866
17867         * Makefile.in (OBJS-common): Add regcprop.o.
17868         (regcprop.o): New.
17869         * timevar.def (TV_CPROP_REGISTERS): New.
17870         * regrename.c (regrename_optimize): Return 0.
17871         (rest_of_handle_regrename): Delete.
17872         (pass_rename_registers): Point to regrename_optimize.
17873         (struct value_data_entry, struct value_data,
17874         kill_value_one_regno, kill_value_regno, kill_value,
17875         set_value_regno, init_value_data, kill_clobbered_value,
17876         kill_set_value, kill_autoinc_value, copy_value,
17877         mode_change_ok, maybe_mode_change, find_oldest_value_reg,
17878         replace_oldest_value_reg, replace_oldest_value_addr,
17879         replace_oldest_value_mem, copyprop_hardreg_forward_1,
17880         debug_value_data, validate_value_data): Move...
17881         * regcprop.c: ... here.
17882         (rest_of_handle_cprop): Delete.
17883         (pass_cprop_hardreg): Point to copyprop_hardreg_forward.
17884
17885 2009-05-07  Jakub Jelinek  <jakub@redhat.com>
17886
17887         PR middle-end/40057
17888         * dojump.c (prefer_and_bit_test): Use immed_double_const instead of
17889         GEN_INT for 1 << bitnum.
17890         (do_jump) <case BIT_AND_EXPR>: Use build_int_cst_wide_type instead of
17891         build_int_cst_type.
17892
17893 2009-05-07  Uros Bizjak  <ubizjak@gmail.com>
17894
17895         * doc/md.texi (Standard Pattern Names For Generation) [sync_nand]:
17896         Remove wrong description of "nand" operation.
17897
17898 2009-05-06  Richard Guenther  <rguenther@suse.de>
17899             Adam Nemet  <anemet@caviumnetworks.com>
17900
17901         * gimple.def (GIMPLE_ASSIGN): Fix incorrect information in the
17902         comment.  Add that if LHS is not a gimple register, then RHS1 has
17903         to be a single object (GIMPLE_SINGLE_RHS).
17904
17905 2009-05-06  Adam Nemet  <anemet@caviumnetworks.com>
17906
17907         * expr.c (get_def_for_expr): Move it up in the file.
17908         (store_field): When expanding a bit-field store, look at the
17909         defining gimple stmt for the masking conversion.
17910
17911 2009-05-06  Janis Johnson  <janis187@us.ibm.com>
17912
17913         PR middle-end/39986
17914         * dfp.c (encode_decimal32, decode_decimal32, encode_decimal64,
17915         decode_decimal64, encode_decimal128, decode_decimal128): Avoid
17916         32-bit memcpy into long.
17917
17918 2009-05-06  Jakub Jelinek  <jakub@redhat.com>
17919
17920         * dwarf2out.c (new_reg_loc_descr): Don't ever create DW_OP_regX.
17921         (one_reg_loc_descriptor): Create DW_OP_regX here instead of calling
17922         new_reg_loc_descr.
17923         (loc_by_reference): If loc is DW_OP_regX, change it into DW_OP_bregX 0
17924         instead of appending DW_OP_deref*.
17925
17926 2009-05-06  Michael Matz  <matz@suse.de>
17927
17928         PR middle-end/40021
17929         * cfgexpand.c (maybe_cleanup_end_of_block): New static function.
17930         (expand_gimple_cond): Use it to cleanup CFG and superfluous jumps.
17931
17932 2009-05-06  Rafael Avila de Espindola  <espindola@google.com>
17933
17934         * Makefile.in (install-plugin): Fix srcdir handling.
17935
17936 2009-05-06  Andrey Belevantsev  <abel@ispras.ru>
17937
17938         * tree-ssa.c (execute_update_address_taken): Handle TARGET_MEM_REF
17939         when processing for not_regs_needed bitmap.
17940         * gimple.c (walk_stmt_load_store_addr_ops): When visiting address,
17941         handle TARGET_MEM_REF in lhs.  Check TMR_BASE for NULL while
17942         handling it for rhs.
17943
17944 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
17945
17946         * config/i386/i386.md (unnamed inc/dec peephole): Use
17947         optimize_insn_for_size_p instead of optimize_size.
17948         * config/i386/predicates.md (incdec_operand): Likewise.
17949         (aligned_operand): Likewise.
17950         * config/i386/sse.md (divv8sf3): Likewise.
17951         (sqrtv8sf2): Likewise.
17952
17953 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
17954
17955         * config/i386/i386.c (ix86_build_signbit_mask): Make it static.
17956
17957         * config/i386/i386-protos.h (ix86_build_signbit_mask): Removed.
17958
17959 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
17960
17961         * config/i386/i386.md (*avx_<code><mode>3_finite): Replace
17962         ssemodesuffixf2c with avxmodesuffixf2c.
17963
17964 2009-05-06  Joseph Myers  <joseph@codesourcery.com>
17965
17966         PR c/40032
17967         * c-decl.c (grokdeclarator): Handle incomplete type of unnamed field.
17968
17969 2009-05-05  Jakub Jelinek  <jakub@redhat.com>
17970
17971         * tree.h: Remove DECL_BY_REFERENCE from private_flag comment.
17972         (struct tree_base): Adjust spacing for 8 bit boundaries.
17973         (struct tree_decl_common): Add decl_by_reference_flag bit.
17974         (DECL_BY_REFERENCE): Adjust.
17975         * print-tree.c (print_node): For VAR_DECL, PARM_DECL or RESULT_DECL,
17976         print DECL_BY_REFERENCE bit.
17977         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Revert last change.
17978         * dwarf2out.c (loc_by_reference, gen_decl_die): Check
17979         DECL_BY_REFERENCE for all VAR_DECLs, not just non-static ones.
17980         (gen_variable_die): Likewise.  Check TREE_PRIVATE/TREE_PROTECTED
17981         unconditionally.
17982
17983         PR middle-end/39666
17984         * gimplify.c (gimplify_switch_expr): If case labels cover the whole
17985         range of the type, but default label is missing, add it with one
17986         of the existing labels instead of adding a new label for it.
17987
17988 2009-05-05  Joseph Myers  <joseph@codesourcery.com>
17989
17990         * dwarf.h: Remove.
17991
17992 2009-05-05  Rafael Avila de Espindola  <espindola@google.com>
17993
17994         * Makefile.in (enable_plugin, plugin_includedir): New.
17995         (install): Depend on install-plugin.
17996         (PLUGIN_HEADERS): New.
17997         (install-plugin): New.
17998         * config.gcc: Add vxworks-dummy.h to tm_file for x86 and x86-64.
17999
18000 2009-05-05  Richard Guenther  <rguenther@suse.de>
18001
18002         PR tree-optimization/40022
18003         * tree-ssa-phiprop.c (struct phiprop_d): Exchange vop_stmt for
18004         the only vuse.
18005         (phivn_valid_p): Fix tuplification error, simplify.
18006         (phiprop_insert_phi): Add dumps.
18007         (propagate_with_phi): Simplify.
18008
18009 2009-05-05  Richard Guenther  <rguenther@suse.de>
18010
18011         PR middle-end/40023
18012         * builtins.c (gimplify_va_arg_expr): Properly build the address.
18013
18014 2009-05-05  Shujing Zhao  <pearly.zhao@oracle.com>
18015
18016         * tree.h (strip_float_extensions): Remove duplicate declaration.
18017         (build_low_bits_mask, debug_fold_checksum, expand_function_end,
18018         expand_function_start, stack_protect_prologue, stack_protect_epilogue,
18019         block_ultimate_origin): Rearrange the declarations line to match the
18020         comment that indicates the .c file which the functions are defined.
18021         (dwarf2out_*, set_decl_rtl): Add comment.
18022         (get_base_address): Adjust comment.
18023         (change_decl_assembler_name, maybe_fold_*, build_addr): Rearrange the
18024         declarations line and add comment.
18025         (is_builtin_name): Add blank after function name, for clarity.
18026
18027 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
18028
18029         * attribs.c (decl_attributes): Use %qE for identifiers in
18030         diagnostics.
18031         * cgraphunit.c (verify_cgraph_node): Translate function names to
18032         locale character set in diagnostics.
18033         * coverage.c (get_coverage_counts): Use %qE for identifiers in
18034         diagnostics.
18035         * doc/invoke.texi (-finstrument-functions-exclude-function-list):
18036         Document that functions are named in UTF-8.
18037         * expr.c (expand_expr_real_1): Translate function names to locale
18038         character set in diagnostics.
18039         * gimplify.c (omp_notice_variable, omp_is_private,
18040         gimplify_scan_omp_clauses): Use %qE for identifiers in
18041         diagnostics.
18042         * langhooks.c (lhd_print_error_function): Translate function names
18043         to locale character set.
18044         * langhooks.h (decl_printable_name): Document that return value is
18045         in internal character set.
18046         * stmt.c: Include pretty-print.h
18047         (tree_conflicts_with_clobbers_p): Use %qE for identifiers in
18048         diagnostics.
18049         (resolve_operand_name_1): Translate named operand name to locale
18050         character set.
18051         * stor-layout.c (finalize_record_size): Use %qE for identifiers in
18052         diagnostics.
18053         * toplev.c (announce_function): Translate function names to locale
18054         character set.
18055         (warn_deprecated_use): Use %qE for identifiers in diagnostics.
18056         (default_tree_printer): Use pp_identifier or translate identifiers
18057         to locale character set.  Mark "<anonymous>" for translation.
18058         * tree-mudflap.c (mx_register_decls, mudflap_finish_file): Use %qE
18059         for identifiers in diagnostics.
18060         * tree.c (handle_dll_attribute): Use %qE for identifiers in
18061         diagnostics.
18062         * varasm.c (output_constructor): Use %qE for identifiers in
18063         diagnostics.
18064
18065 2009-05-04  Rafael Avila de Espindola  <espindola@google.com>
18066
18067         * configure.ac: use ` ` instead of $()
18068         * configure: Regenerate.
18069
18070 2009-05-05  Ben Elliston  <bje@au.ibm.com>
18071
18072         * config/pa/linux-atomic.c: Eliminate conditional include of
18073         errno.h on non-LP64 systems to simplify build requirements.
18074
18075 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
18076
18077         * c-common.c (handle_mode_attribute): Use %qE for identifiers in
18078         diagnostics.
18079         * c-decl.c (check_bitfield_type_and_width): Make orig_name a tree
18080         and pass value to identifier_to_locale.
18081         (warn_variable_length_array): Make name a tree.
18082         (grokdeclarator): Separate diagnostic texts for named and unnamed
18083         declarators.  Use %qE for named declarators.
18084         * c-parser.c (c_lex_one_token): Use %qE for identifiers in
18085         diagnostics.
18086         * c-pragma.c (pop_alignment, handle_pragma_pack): Use %qE for
18087         identifiers in diagnostics.
18088         * c-typeck.c (push_member_name, start_init): Pass identifiers to
18089         identifier_to_locale.  Mark "anonymous" strings for translation.
18090
18091 2009-05-04  Michael Eager <eager@eagercon.com>
18092
18093         * config/rs6000/rs6000.c (rs6000_legitimate_address): Allow
18094         address for DImode/DFmode only if double-precision FP regs.
18095
18096 2009-05-04  Michael Eager <eager@eagercon.com>
18097
18098         * config/rs6000/rs6000.c (rs6000_libcall_value): Add
18099         TARGET_SINGLE_FLOAT check.
18100
18101 2009-05-04  Michael Eager <eager@eagercon.com>
18102
18103         * config/rs6000/xilinx.h: Add CPP_SPEC for -mxilinx-fpu options.
18104
18105 2009-05-04  Michael Eager <eager@eagercon.com>
18106
18107         * gcc/config.gcc: (powerpc-xilinx-eabi*): Add tm t-xilinx
18108         * config/rs6000/t-xilinx: New
18109
18110 2009-05-04  Paolo Bonzini  <bonzini@gnu.org>
18111
18112         * doc/tm.texi (LEGITIMIZE_ADDRESS): Revise documentation.
18113         * gcc/defaults.h (LEGITIMIZE_ADDRESS): Delete.
18114         * gcc/explow.c (memory_address): Use target hook.
18115         * gcc/targhooks.c (default_legitimize_address): New.
18116         * gcc/targhooks.h (default_legitimize_address): New.
18117         * gcc/target.h (legitimize_address): New.
18118         * gcc/target-def.h (TARGET_LEGITIMIZE_ADDRESS): New.
18119         (TARGET_INITIALIZER): Include it.
18120         * gcc/system.h (LEGITIMIZE_ADDRESS): Poison.
18121
18122         * config/bfin/bfin-protos.h (legitimize_address): Remove.
18123         * config/bfin/bfin.c (legitimize_address): Remove.
18124         * config/bfin/bfin.h (LEGITIMIZE_ADDRESS): Remove.
18125         * config/m68hc11/m68hc11-protos.h (m68hc11_legitimize_address):
18126         Remove.
18127         * config/m68hc11/m68hc11.c (m68hc11_legitimize_address): Remove.
18128         * config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Remove.
18129
18130         * gcc/config/arm/arm.h (LEGITIMIZE_ADDRESS, ARM_LEGITIMIZE_ADDRESS,
18131         THUMB_LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS): Delete.
18132         * gcc/config/s390/s390.h (LEGITIMIZE_ADDRESS): Delete.
18133         * gcc/config/m32c/m32c.h (LEGITIMIZE_ADDRESS): Delete.
18134         * gcc/config/sparc/sparc.h (LEGITIMIZE_ADDRESS): Delete.
18135         * gcc/config/m32r/m32r.h (LEGITIMIZE_ADDRESS): Delete.
18136         * gcc/config/i386/i386.h (LEGITIMIZE_ADDRESS): Delete.
18137         * gcc/config/sh/sh.h (LEGITIMIZE_ADDRESS): Delete.
18138         * gcc/config/avr/avr.h (LEGITIMIZE_ADDRESS): Delete.
18139         * gcc/config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Delete.
18140         * gcc/config/iq2000/iq2000.h (LEGITIMIZE_ADDRESS): Delete.
18141         * gcc/config/mn10300/mn10300.h (LEGITIMIZE_ADDRESS): Delete.
18142         * gcc/config/m68k/m68k.h (LEGITIMIZE_ADDRESS): Delete.
18143         * gcc/config/score/score.h (LEGITIMIZE_ADDRESS): Delete.
18144         * gcc/config/pa/pa.h (LEGITIMIZE_ADDRESS): Delete.
18145         * gcc/config/mips/mips.h (LEGITIMIZE_ADDRESS): Delete.
18146         * gcc/config/alpha/alpha.h (LEGITIMIZE_ADDRESS): Delete.
18147         * gcc/config/frv/frv.h (LEGITIMIZE_ADDRESS): Delete.
18148         * gcc/config/spu/spu.h (LEGITIMIZE_ADDRESS): Delete.
18149         * gcc/config/xtensa/xtensa.h (LEGITIMIZE_ADDRESS): Delete.
18150         * gcc/config/cris/cris.h (LEGITIMIZE_ADDRESS): Delete.
18151         * gcc/config/rs6000/rs6000.h (LEGITIMIZE_ADDRESS): Delete.
18152         * gcc/config/picochip/picochip.h (LEGITIMIZE_ADDRESS): Delete.
18153
18154         * gcc/config/s390/s390-protos.h (legitimize_address): Delete.
18155         * gcc/config/m32c/m32c-protos.h (m32c_legitimize_address): Delete.
18156         * gcc/config/sparc/sparc-protos.h (legitimize_address): Delete.
18157         * gcc/config/i386/i386-protos.h (legitimize_address): Delete.
18158         * gcc/config/avr/avr-protos.h (legitimize_address): Delete.
18159         * gcc/config/mn10300/mn10300-protos.h (legitimize_address): Delete.
18160         * gcc/config/score/score-protos.h (score_legitimize_address): Delete.
18161         * gcc/config/arm/arm-protos.h (arm_legitimize_address,
18162         (thumb_legitimize_address): Delete.
18163         * gcc/config/pa/pa-protos.h (hppa_legitimize_address): Delete.
18164         * gcc/config/mips/mips-protos.h (mips_legitimize_address): Delete.
18165         * gcc/config/alpha/alpha-protos.h (alpha_legitimize_address): Delete.
18166         * gcc/config/frv/frv-protos.h (frv_legitimize_address): Delete.
18167         * gcc/config/spu/spu-protos.h (spu_legitimize_address): Delete.
18168         * gcc/config/xtensa/xtensa-protos.h (xtensa_legitimize_address):
18169         Delete.
18170         * gcc/config/rs6000/rs6000-protos.h (rs6000_legitimize_address):
18171         Delete.
18172
18173         * config/arm/arm.c (arm_legitimize_address): Maybe call Thumb version.
18174         * config/m32c/m32c.c (m32c_legitimize_address): Standardize.
18175         * config/m32r/m32r.c (m32r_legitimize_address): New.
18176         * config/m68k/m68k.c (m68k_legitimize_address): New.
18177         * config/score/score.c (score_legitimize_address): Standardize.
18178         * config/score/score3.c (score3_legitimize_address): Standardize.
18179         * config/score/score3.h (score3_legitimize_address): Adjust.
18180         * config/score/score7.c (score7_legitimize_address): Standardize.
18181         * config/score/score7.h (score7_legitimize_address): Adjust.
18182         * config/sh/sh.c (sh_legitimize_address): New.
18183         * config/iq2000/iq2000.c (iq2000_legitimize_address): New.
18184
18185         * gcc/config/s390/s390.c (legitimize_address): Rename to...
18186         (s390_legitimize_address): ... this.
18187         * gcc/config/sparc/sparc.c (legitimize_address): Rename to...
18188         (sparc_legitimize_address): ... this.
18189         * gcc/config/i386/i386.c (legitimize_address): Rename to...
18190         (ix86_legitimize_address): ... this.
18191         * gcc/config/avr/avr.c (legitimize_address): Rename to...
18192         (avr_legitimize_address): ... this.
18193         * gcc/config/mn10300/mn10300.c (legitimize_address): Rename to...
18194         (mn10300_legitimize_address): ... this.
18195         * config/alpha/alpha.c (alpha_legitimize_address): Wrap...
18196         (alpha_legitimize_address_1): ... the old alpha_legitimize_address.
18197         (alpha_expand_mov): Adjust call.
18198
18199         * config/frv/frv.c (frv_legitimize_address): Return x on failure.
18200         * config/spu/spu.c (spu_legitimize_address): Likewise.
18201         * config/xtensa/xtensa.c (xtensa_legitimize_address): Likewise.
18202         * config/rs6000/rs6000.c (rs6000_legitimize_address): Likewise.
18203
18204 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
18205
18206         * intl.c (locale_encoding, locale_utf8): New.
18207         (gcc_init_libintl): Initialize locale_encoding and locale_utf8.
18208         * intl.h (locale_encoding, locale_utf8): Declare.
18209         * pretty-print.c: Include ggc.h.  Include iconv.h if HAVE_ICONV.
18210         (pp_base_tree_identifier, decode_utf8_char, identifier_to_locale):
18211         New.
18212         * pretty-print.h (pp_identifier): Call identifier_to_locale on ID
18213         argument.
18214         (pp_tree_identifier): Define to call pp_base_tree_identifier.
18215         (pp_base_tree_identifier): Declare as function.
18216         (identifier_to_locale): Declare.
18217         * Makefile.in (pretty-print.o): Update dependencies.
18218         * varasm.c (finish_aliases_1): Use %qE for identifiers in diagnostics.
18219
18220 2009-05-04  Richard Guenther  <rguenther@suse.de>
18221
18222         PR middle-end/40015
18223         * builtins.c (fold_builtin_memory_op): Do not decay to element
18224         type if the size matches the whole array.
18225
18226 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
18227
18228         * expmed.c (synth_mult): When trying out a shift, pass the result
18229         of a signed shift.
18230
18231 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
18232
18233         * expmed.c (shiftsub_cost): Rename to shiftsub0_cost.
18234         (shiftsub1_cost): New.
18235         (init_expmed): Compute shiftsub1_cost.
18236         (synth_mult): Optimize multiplications by constants of the form
18237         -(2^^m-1) for some constant positive integer m.
18238
18239 2009-05-03  Richard Guenther  <rguenther@suse.de>
18240
18241         PR c/39983
18242         * c-typeck.c (array_to_pointer_conversion): Do not built
18243         ADDR_EXPRs of arrays of pointer-to-element type.
18244         * c-gimplify.c (c_gimplify_expr): Revert change fixing
18245         up wrong ADDR_EXPRs after-the-fact.
18246         * c-common.c (strict_aliasing_warning): Strip pointer
18247         conversions for obtaining the original type.
18248         * builtins.c (fold_builtin_memset): Handle array types.
18249         (fold_builtin_memory_op): Handle folded POINTER_PLUS_EXPRs
18250         and array types
18251
18252 2009-05-03  Richard Guenther  <rguenther@suse.de>
18253
18254         PR middle-end/23329
18255         * tree-ssa.c (useless_type_conversion_p_1): Use get_deref_alias_set.
18256         Do not lose casts from array types with unknown extent to array
18257         types with known extent.
18258         * tree-ssa-copy.c (may_propagate_copy): Remove hack checking for
18259         alias set compatibility.
18260
18261 2009-05-03  Manuel López-Ibáñez  <manu@gcc.gnu.org>
18262
18263         * flags.h (extra_warnings): Delete.
18264         * toplev.c (process_options): Handle Wuninitialized here.
18265         * opts.c (extra_warnings): Delete.
18266         (set_Wextra): Delete.
18267         (common_handle_option): -Wextra can be handled automatically.
18268         * c-opts.c (c_common_handle_option): Delete obsolete code.
18269         (c_common_post_options): Simplify comment.
18270         * common.opt (W): Add Var.
18271         (Wextra): Add Var.
18272         (Wuninitialized): Initialize to -1.
18273
18274 2009-05-03  Adam Nemet  <anemet@caviumnetworks.com>
18275             Richard Guenther  <rguenther@suse.de>
18276
18277         * expr.c (get_def_for_expr): New function.
18278         (expand_expr_real_1) <PLUS_EXPR, MINUS_EXPR>: Adjust to work with
18279         SSA rather than trees.
18280         <MULT_EXPR>: Likewise.  Use subexp0 and subexp1 instead of
18281         TREE_OPERAND (exp, 0) and TREE_OPERAND (exp, 1).
18282
18283 2009-05-03  Joseph Myers  <joseph@codesourcery.com>
18284
18285         * c-common.c (reswords): Add _Imaginary.
18286         * c-common.c (enum rid): Add RID_IMAGINARY.
18287
18288 2009-05-03  Paolo Bonzini  <bonzini@gnu.org>
18289
18290         * tree.h (TYPE_VECTOR_OPAQUE): Fix documentation.
18291         Patch by Richard Guenther.
18292
18293 2009-05-03  Anatoly Sokolov  <aesok@post.ru>
18294
18295         * defaults.h (FRAME_POINTER_REQUIRED): Provide default.
18296         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
18297         * config/alpha/alpha.h (FRAME_POINTER_REQUIRED): Delete.
18298         * config/s390/s390.h (FRAME_POINTER_REQUIRED): Delete.
18299         * config/spu/spu.h (FRAME_POINTER_REQUIRED): Delete.
18300         * config/sh/sh.h (FRAME_POINTER_REQUIRED): Delete.
18301         * config/pdp11/pdp11.h (FRAME_POINTER_REQUIRED): Delete.
18302         * config/stormy16/stormy16.h (FRAME_POINTER_REQUIRED): Delete.
18303         * config/m68hc11/m68hc11.h (FRAME_POINTER_REQUIRED): Delete.
18304         * config/iq2000/iq2000.h (FRAME_POINTER_REQUIRED): Delete.
18305         * config/mn10300/mn10300.h (FRAME_POINTER_REQUIRED): Delete.
18306         * config/ia64/ia64.h (FRAME_POINTER_REQUIRED): Delete.
18307         * config/m68k/m68k.h (FRAME_POINTER_REQUIRED): Delete.
18308         * config/rs6000/rs6000.h (FRAME_POINTER_REQUIRED): Delete.
18309         * config/picochip/picochip.h (FRAME_POINTER_REQUIRED): Delete.
18310         * config/mcore/mcore.h (FRAME_POINTER_REQUIRED): Delete.
18311         * config/h8300/h8300.h (FRAME_POINTER_REQUIRED): Delete.
18312         * config/v850/v850.h (FRAME_POINTER_REQUIRED): Delete.
18313
18314 2009-05-02  Richard Guenther  <rguenther@suse.de>
18315
18316         PR tree-optimization/39940
18317         * tree-ssa-pre.c (eliminate): Make sure we may propagate before
18318         doing so.
18319
18320 2009-05-02  Richard Guenther  <rguenther@suse.de>
18321
18322         PR middle-end/40001
18323         * tree-ssa.c (execute_update_addresses_taken): Properly check
18324         if we can mark a variable DECL_GIMPLE_REG_P.
18325         * gimple.c (is_gimple_reg): Re-order check for DECL_GIMPLE_REG_P
18326         back to the end of the function.
18327         (is_gimple_reg_type): Remove complex type special casing.
18328         * gimplify.c (gimplify_bind_expr): Do not set DECL_GIMPLE_REG_P
18329         if not optimizing.
18330
18331 2009-05-02  Ben Elliston  <bje@au.ibm.com>
18332
18333         * doc/collect2.texi (Collect2): Document search path behaviour
18334         when configured with --with-ld.
18335
18336 2009-05-02  Jan Hubicka  <jh@suse.cz>
18337
18338         * tree-ssa-coalesce.c (coalesce_cost): Do not take ciritical
18339         parameter; update callers.
18340         (coalesce_cost_edge): EH edges are costier because they needs
18341         splitting even if not critical and even more costier when there are
18342         multiple EH predecestors.
18343
18344 2009-05-02  Jan Hubicka  <jh@suse.cz>
18345
18346         * except.c (remove_eh_handler_and_replace): Handle updating after
18347         removing TRY blocks.
18348
18349 2009-05-02  Eric Botcazou  <ebotcazou@adacore.com>
18350
18351         * store-motion.c (compute_store_table): Add ENABLE_CHECKING guard.
18352
18353 2009-05-02  Steven Bosscher  <steven@gcc.gnu.org>
18354
18355         * varasm.c: Do not include c-pragma.h.
18356         * attribs.c: Do not incude c-common.h.
18357
18358 2009-05-01  Michael Matz  <matz@suse.de>
18359
18360         * calls.c (initialize_argument_information): Handle SSA names like
18361         decls with a non MEM_P DECL_RTL.
18362
18363 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
18364
18365         * ipa-reference.c: Do not include c-common.h, include splay-tree.h.
18366         * ipa-utils.c: Likewise.
18367         * ipa-type-escape.c: Likewise.
18368         * cgraphunit.c Do not include c-common.h.
18369         * ipa-pure-const.c: Likewise.
18370         * tree-if-conv.c: Likewise.
18371         * matrix-reorg.c: Do not include c-common.h and c-tree.h.
18372         * ipa-struct-reorg.c: Likewise.
18373         * tree-nomudflap.c: Likewise.
18374         * tree-ssa-structalias.c: Likewise.
18375
18376 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
18377
18378         * store-motion.c: Many cleanups to make this pass a first-class
18379         citizen instead of an appendix to gcse load motion.  Add TODO list
18380         to make this pass faster/cleaner/better.
18381
18382         (struct ls_expr): Post gcse.c-split cleanups.
18383         Rename to st_expr.  Rename "loads" field to "antic_stores".  Rename
18384         "stores" field to "avail_stores".
18385         (pre_ldst_mems): Rename to store_motion_mems.
18386         (pre_ldst_table): Rename to store_motion_mems_table.
18387         (pre_ldst_expr_hash): Rename to pre_st_expr_hash, update users.
18388         (pre_ldst_expr_eq): Rename to pre_st_expr_eq, update users.
18389         (ldst_entry): Rename to st_expr_entry, update users.
18390         (free_ldst_entry): Rename to free_st_expr_entry, update users.
18391         (free_ldst_mems): Rename to free_store_motion_mems, update users.
18392         (enumerate_ldsts): Rename to enumerate_store_motion_mems,
18393         update caller.
18394         (first_ls_expr): Rename to first_st_expr, update users.
18395         (next_ls_expr): Rename to next_st_expr, update users.
18396         (print_ldst_list): Rename to print_store_motion_mems.  Print names of
18397         fields properly for store motion instead of names inherited from load
18398         motion in gcse.c.
18399         (ANTIC_STORE_LIST, AVAIL_STORE_LIST): Remove.
18400         (LAST_AVAIL_CHECK_FAILURE): Explain what this is.  Undefine when we
18401         are done with it.
18402
18403         (ae_kill): Rename to st_kill, update users.
18404         (ae_gen): Rename to st_avloc, update users.
18405         (transp): Rename to st_transp, update users.
18406         (pre_insert_map): Rename to st_insert_map, update users.
18407         (pre_delete_map): Rename to st_delete_map, update users.
18408         (insert_store, build_store_vectors, free_store_memory,
18409         one_store_motion_pass): Update for abovementioned changes.
18410
18411         (gcse_subst_count, gcse_create_count): Remove.
18412         (one_store_motion_pass): New statistics counters "n_stores_deleted"
18413         and "n_stores_created", local variables.
18414
18415         (extract_mentioned_regs, extract_mentioned_regs_1): Rewrite to
18416         use for_each_rtx.
18417
18418         (regvec, compute_store_table_current_insn): Remove.
18419         (reg_set_info, reg_clear_last_set): Remove.
18420         (compute_store_table): Use DF caches instead of local dataflow
18421         solvers.
18422
18423 2009-05-01  Joseph Myers  <joseph@codesourcery.com>
18424
18425         * c-objc-common.c (c_tree_printer): Print identifiers with
18426         pp_identifier, not pp_string.  Mark "({anonymous})" for
18427         translation.
18428         * c-pretty-print.c (pp_c_ws_string): New.
18429         (pp_c_cv_qualifier, pp_c_type_specifier,
18430         pp_c_specifier_qualifier_list, pp_c_parameter_type_list,
18431         pp_c_storage_class_specifier, pp_c_function_specifier,
18432         pp_c_attributes, pp_c_bool_constant, pp_c_constant,
18433         pp_c_primary_expression, pp_c_postfix_expression,
18434         pp_c_unary_expression, pp_c_shift_expression,
18435         pp_c_relational_expression, pp_c_equality_expression,
18436         pp_c_logical_and_expression, pp_c_logical_or_expression): Mostly
18437         use pp_string and pp_c_ws_string in place of pp_identifier and
18438         pp_c_identifier for non-identifiers.  Mark English strings for
18439         translation.
18440         * c-pretty-print.h (pp_c_ws_string): Declare.
18441
18442 2009-04-30  Paul Pluzhnikov  <ppluzhnikov@google.com>
18443             Roland McGrath <roland@redhat.com>
18444
18445         * configure.ac (HAVE_LD_BUILDID): New check for ld --build-id support.
18446         (ENABLE_LD_BUILDID): New configuration option.
18447         * gcc.c [HAVE_LD_BUILDID and ENABLE_LD_BUILDID]
18448         (LINK_BUILDID_SPEC): New macro.
18449         (init_spec): If defined, prepend it between LINK_EH_SPEC and
18450         link_spec.
18451         * doc/install.texi: Document --enable-linker-build-id option.
18452         * configure: Rebuild.
18453         * config.in: Rebuild.
18454
18455 2009-04-30  Adam Nemet  <anemet@caviumnetworks.com>
18456
18457         * config/mips/mips.h (FRAME_GROWS_DOWNWARD,
18458         MIPS_GP_SAVE_AREA_SIZE): Define new macros.
18459         (STARTING_FRAME_OFFSET): Return 0 if FRAME_GROWS_DOWNWARD.  Use
18460         MIPS_GP_SAVE_AREA_SIZE.
18461         * config/mips/mips.c (struct mips_frame_info): Update comment
18462         before arg_pointer_offset and hard_frame_pointer_offset.
18463         (mips_compute_frame_info): Update diagram before function: to
18464         correctly use stack_pointer_rtx for fp_sp_offset and gp_sp_offset, to
18465         indicate the position of frame_pointer_rtx with -fstack-protector and
18466         to show args_size.  Don't allocate cprestore area for leaf functions
18467         if FRAME_GROWS_DOWNWARD.  Use MIPS_GP_SAVE_AREA_SIZE to set
18468         cprestore_size.
18469         (mips_initial_elimination_offset): Update for FRAME_GROWS_DOWNWARD.
18470
18471 2009-04-30  Michael Matz  <matz@suse.de>
18472
18473         PR tree-optimization/39955
18474         * config/rs6000/rs6000.c (rs6000_check_sdmode): Also check SSA_NAMEs.
18475
18476 2009-04-30  Dave Korn  <dave.korn.cygwin@gmail.com>
18477
18478         * ira.c (setup_cover_and_important_classes):  Use safe macro
18479         REG_CLASS_FOR_CONSTRAINT instead of calling regclass_for_constraint
18480         directly.
18481         * genpreds.c (write_tm_preds_h):  Output suitable definition of
18482         REG_CLASS_FOR_CONSTRAINT.
18483
18484 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
18485
18486         * alloc-pool.c (alloc_pool_descriptor): Use an insert_opion value
18487         instead of an int.
18488         * bitmap.c (bitmap_descriptor): Likewise.
18489         * ggc-common.c (loc_descriptor): Likewise.
18490         * varray.c (varray_descriptor): Likewise.
18491         * vec.c (vec_descriptor): Likewise.
18492
18493 2009-04-30  Eric Botcazou  <ebotcazou@adacore.com>
18494
18495         * Makefile.in (dce.o): Add $(EXCEPT_H).
18496         * dce.c: Include except.h and delete redundant vector definitions.
18497         (deletable_insn_p): Return false for non-call insns that can throw
18498         if DF is running.
18499
18500 2009-04-30  Steven Bosscher  <steven@gcc.gnu.org>
18501
18502         * gcse.c (ae_gen): Remove.
18503         (can_assign_to_reg_p): Rename to can_assign_to_reg_without_clobbers_p
18504         and make non-static function to make it available in store-motion.c.
18505         Update call sites with search-and-replace.
18506         (enumerate_ldsts, reg_set_info, reg_clear_last_set, store_ops_ok,
18507         extract_mentioned_regs, extract_mentioned_regs_helper,
18508         find_moveable_store, compute_store_table, load_kills_store, find_loads,
18509         store_killed_in_insn, store_killed_after, store_killed_before,
18510         build_store_vectors, insert_insn_start_basic_block, insert-store,
18511         remove_reachable_equiv_notes, replace_store_insn, delete_store,
18512         free_store_memory, one_store_motion_pass, gate_rtl_store_motion,
18513         execute_rtl_store_motion, pass_rtl_store_motion): Move to...
18514         * store-motion.c: ...new file.  Also copy data structures from gcse.c
18515         and clean up to remove parts not used by store motion.
18516         * rtl.h (can_assign_to_reg_without_clobbers_p): Add prototype.
18517         * Makefile.in (store-motion.o): New rule. Add to OBJS-common.
18518
18519 2009-04-30  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
18520
18521         PR target/38571
18522         * config/arm/arm.h (FUNCTION_BOUNDARY): Set to 16 for thumb
18523         when optimizing for size.
18524
18525 2009-04-30  Hans-Peter Nilsson  <hp@axis.com>
18526
18527         * gcse.c (gcse_constant_p): Fix typo in last change.
18528
18529 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
18530
18531         * plugin.c: Include plugin-version.h only if ENABLE_PLUGIN is defined.
18532
18533 2009-04-30  Andreas Krebbel  <krebbel1@de.ibm.com>
18534
18535         * gcse.c (gcse_constant_p): Make sure the constant is sharable.
18536
18537 2009-04-29  James E. Wilson  <wilson@codesourcery.com>
18538
18539         * config/mips/mips.c (mips_add_offset): Use gen_int_mode for
18540         CONST_HIGH_PART result.
18541
18542 2009-04-29  Anatoly Sokolov  <aesok@post.ru>
18543
18544         * config/avr/avr.c (initial_elimination_offset): Rename to
18545         avr_initial_elimination_offset.
18546         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p,
18547         change return type to bool.
18548         (avr_can_eliminate): New function.
18549         * config/avr/avr.h (CAN_ELIMINATE): Use avr_can_eliminate.
18550         (FRAME_POINTER_REQUIRED): Use avr_frame_pointer_required_p.
18551         (INITIAL_ELIMINATION_OFFSET): Use avr_initial_elimination_offset.
18552         * config/avr/avr-protos.h (initial_elimination_offset): Rename to
18553         avr_initial_elimination_offset.
18554         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p.
18555         (avr_initial_elimination_offset): Define.
18556
18557 2009-04-29  Eric Botcazou  <ebotcazou@adacore.com>
18558             Steven Bosscher  <steven@gcc.gnu.org>
18559
18560         PR rtl-optimization/39938
18561         * Makefile.in (cfgrtl.o): Add $(INSN_ATTR_H).
18562         * cfgrtl.c: Include insn-attr.h.
18563         (rest_of_pass_free_cfg): New function.
18564         (pass_free_cfg): Use rest_of_pass_free_cfg as execute function.
18565         * resource.c (init_resource_info): Remove call to df_analyze.
18566
18567 2009-04-29  Richard Guenther  <rguenther@suse.de>
18568
18569         PR target/39943
18570         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Only
18571         allow conversion to signed integers.
18572
18573 2009-04-29  Richard Guenther  <rguenther@suse.de>
18574
18575         * tree-cfg.c (verify_gimple_assign_binary): Allow vector
18576         shifts of floating point vectors if the shift amount is
18577         a constant multiple of the element size.
18578
18579 2009-04-29  Andreas Krebbel  <krebbel1@de.ibm.com>
18580             Michael Matz  <matz@suse.de>
18581
18582         PR middle-end/39927
18583         PR bootstrap/39929
18584         * tree-outof-ssa.c (emit_partition_copy): New function.
18585         (insert_partition_copy_on_edge, insert_rtx_to_part_on_edge,
18586         insert_part_to_rtx_on_edge): Perform the partition base var
18587         copy using emit_partition_copy.
18588         (insert_value_copy_on_edge): Convert constants to the right mode.
18589         (insert_rtx_to_part_on_edge): Add UNSIGNEDSRCP parameter.
18590         (elim_create): Pass the sign of the src to insert_rtx_to_part_on_edge.
18591
18592 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
18593
18594         * config/bfin/bfin.c (bfin_optimize_loop): If we need a scratch reg,
18595         scan backwards to try to find a constant to initialize it.
18596
18597         * config/bfin/bfin.c (bfin_optimize_loop): When looking for the last
18598         insn before the loop_end instruction, don't look past labels.
18599
18600 2009-04-29  Richard Guenther  <rguenther@suse.de>
18601
18602         PR middle-end/39937
18603         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do not
18604         loose type conversions.
18605         (forward_propagate_addr_expr): Fix tuplification bug.  Remove
18606         stmts only if there are no uses of its definition.
18607
18608 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
18609
18610         * config/bfin/bfin.h (splitting_loops): Declare.
18611         * config/bfin/bfin-protos.h (WA_05000257, WA_05000283, WA_05000315):
18612         Reorder bit definitions to be ascending.
18613         (WA_LOAD_LCREGS, ENABLE_WA_LOAD_LCREGS): New macros.
18614         * config/bfin/bfin.c (splitting_loops): New variable.
18615         (bfin_cpus): Add WA_LOAD_LCREGS as needed.
18616         (struct loop_info): Remove members INIT and LOOP_INIT.
18617         (bfin_optimize_loop): Don't set them.  Reorder the code that generates
18618         the LSETUP sequence.  Allow LC to be loaded from any register, but
18619         also add a case to push/pop a PREG scratch if ENABLE_WA_LOAD_LCREGS.
18620         (bfin_reorg_loops): When done, split all BB_ENDs with splitting_loops
18621         set to 1.
18622         * config/bfin/bfin.md (loop_end splitter): Use splitting_loops instead
18623         of reload_completed.
18624
18625         From Jie Zhang:
18626         * config/bfin/bfin.md (movsi_insn): Refine constraints.
18627
18628 2009-04-29  Rafael Avila de Espindola  <espindola@google.com>
18629
18630         * Makefile.in (PLUGIN_VERSION_H): New.
18631         (OBJS-common): Remove plugin-version.o.
18632         (plugin.o): Depend on (PLUGIN_VERSION_H).
18633         (plugin-version.o): Remove.
18634         * configure: Regenerate
18635         * configure.ac: Create plugin-version.h.
18636         * gcc-plugin.h (plugin_gcc_version): Remove.
18637         (plugin_default_version_check): Change signature.
18638         * plugin-version.c: Remove.
18639         * plugin.c: Include plugin-version.h.
18640         (str_plugin_gcc_version_name): Remove.
18641         (try_init_one_plugin): Pass gcc version to plugin_init.
18642         (plugin_default_version_check): Both gcc and plugin versions are now
18643         arguments.
18644
18645 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
18646
18647         * config/bfin/bfin.c (bfin_optimize_loop): Unify handling of
18648         problematic last insns.  Test for TYPE_CALL rather than CALL_P.
18649         Remove special case testing for last insn of inner loops. Don't fail
18650         if the loop ends with a jump, emit an extra nop instead.
18651
18652         * config/bfin/bfin.c (bfin_register_move_cost): Test for subsets of
18653         DREGS rather than comparing directly.  Remove code that tries to
18654         account for latencies.
18655
18656 2009-04-29  Richard Guenther  <rguenther@suse.de>
18657
18658         PR tree-optimization/39941
18659         * tree-ssa-pre.c (eliminate): Schedule update-ssa after
18660         eliminating an indirect call.
18661
18662 2009-04-29  Richard Guenther  <rguenther@suse.de>
18663
18664         * tree-cfg.c (verify_types_in_gimple_reference): Add require_lvalue
18665         parameter.  Allow invariants as base if !require_lvalue.
18666         (verify_gimple_assign_single): Adjust.
18667
18668 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
18669
18670         * config/bfin/bfin.md (sp_or_sm, spm_string, spm_name): New macro.
18671         (ss<spm_name>hi3, ss<spm_name>hi3_parts, ss<spm_name>hi3_low_parts,
18672         ss<spm_name_hi3_high_parts): New patterns, replacing ssaddhi3,
18673         ssubhi3, ssaddhi3_parts and sssubhi3_parts.
18674         (flag_mulhi3_parts): Produce a HImode output rather than trying to set
18675         a VEC_SELECT.
18676         * config/bfin/bfin.c (bfin_expand_builtin,
18677         case BFIN_BUILTIN_CPLX_SQU): Adjust accordingly.
18678
18679 2009-04-28  Richard Guenther  <rguenther@suse.de>
18680
18681         * tree-vect-loop.c (get_initial_def_for_induction): Use
18682         correct types for pointer increment.
18683
18684 2009-04-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
18685
18686         * toplev.c (print_version): Update GMP version string calculation.
18687
18688 2009-04-28  Eric Botcazou  <ebotcazou@adacore.com>
18689
18690         PR rtl-optimization/39938
18691         * resource.c (init_resource_info): Add call to df_analyze.
18692
18693 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
18694
18695         * config/alpha/alpha.md (usegp): Cast the result of
18696         alpha_find_lo_sum_using_gp to enum attr_usegp.
18697         * config/alpha/alpha.c (override_options): Remove end-of-structure
18698         marker element from cpu_table.  Use array size of cpu_table to handle
18699         -mcpu and -mtune options.
18700         (tls_symbolic_operand_type): Change 0 to TLS_MODEL_NONE.
18701
18702 2009-04-28  Joseph Myers  <joseph@codesourcery.com>
18703
18704         * config.gcc (powerpc*-*-* | rs6000-*-*): Add
18705         rs6000/option-defaults.h to tm_file.  Support cpu_32, cpu_64,
18706         tune_32 and tune_64.
18707         * doc/install.texi (--with-cpu-32, --with-cpu-64): Document
18708         support on PowerPC.
18709         * config/rs6000/rs6000.h (OPTION_DEFAULT_SPECS): Move to ...
18710         * config/rs6000/option-defaults.h: ... here.  New file.
18711         (OPT_64, OPT_32): Define.
18712         (MASK_64BIT): Define to 0 if not already defined.
18713         (OPT_ARCH64, OPT_ARCH32): Define.
18714         (OPTION_DEFAULT_SPECS): Add entries for cpu_32, cpu_64, tune_32
18715         and tune_64.
18716
18717 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
18718
18719         * config/arm/arm.c (arm_override_options): Emit error on using
18720         fpa with AAPCS.
18721
18722 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
18723
18724         PR rtl-optimization/39914
18725         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
18726         registers for allocnos created from user-defined variables only
18727         when not optimizing.
18728
18729 2009-04-28  Richard Guenther  <rguenther@suse.de>
18730
18731         PR middle-end/39937
18732         * fold-const.c (fold_binary): Use distribute_real_division only
18733         on float types.
18734
18735 2009-04-28  Steve Ellcey  <sje@cup.hp.com>
18736
18737         * config.gcc (hppa*64*-*-hpux11*): Set use_gcc_stdint and
18738         add hpux-stdint.h to tm_file.
18739         (hppa[12]*-*-hpux11*): Ditto.
18740         (ia64*-*-hpux*): Ditto.
18741         * config/hpux-stdint.h: New.
18742         * config/ia64/hpux.h (TARGET_OS_CPP_BUILTINS): Set
18743         __STDC_EXT__ for all compiles.
18744         * config/pa/pa-hpux.h: Ditto.
18745         * config/pa/pa-hpux10.h: Ditto.
18746         * config/pa/pa-hpux11.h: Ditto.
18747
18748 2009-04-28  Catherine Moore  <clm@codesourcery.com>
18749
18750         * debug.h (set_name): Add comment.
18751
18752 2009-04-28  Andrew Pinski  <pinskia@gmail.com>
18753
18754         PR target/39929
18755         * config/darwin.c (machopic_gen_offset): Check
18756         currently_expanding_to_rtl if current_ir_type returns IR_GIMPLE.
18757         * config/arm/arm.c (require_pic_register): Likewise.
18758
18759 2009-04-28  Paolo Bonzini  <bonzini@gnu.org>
18760
18761         * config/m32c/m32c.c (TARGET_PROMOTE_FUNCTION_RETURN,
18762         m32c_promote_function_return, TARGET_PROMOTE_PROTOTYPES,
18763         m32c_promote_prototypes): Delete.
18764
18765 2009-04-28  Michael Matz  <matz@suse.de>
18766
18767         PR middle-end/39922
18768         * tree-outof-ssa.c (insert_value_copy_on_edge): Don't convert
18769         constants.
18770
18771 2009-04-28  Richard Guenther  <rguenther@suse.de>
18772
18773         * tree-vect-stmts.c (vect_get_vec_def_for_operand): Fix type error.
18774
18775 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
18776
18777         * config/arm/arm-cores.def: Add support for arm1156t2f-s.
18778         * doc/invoke.texi (ARM Options): Document support for arm1156t2f-s.
18779         * config/arm/arm-tune.md: Regenerate.
18780
18781 2009-04-28  Alexander Monakov  <amonakov@ispras.ru>
18782
18783         * sel-sched-ir.c (maybe_tidy_empty_bb): Do not attempt to delete a
18784         block if there are complex incoming edges.
18785         (sel_merge_blocks): Remove useless assert.
18786         (sel_redirect_edge_and_branch): Check that edge was redirected.
18787         * sel-sched-ir.h (_eligible_successor_edge_p): Remove assert.
18788         (sel_find_rgns): Delete declaration.
18789         * sel-sched.c (purge_empty_blocks): Attempt to remove first block of
18790         the region when it is not a preheader.
18791
18792 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
18793
18794         PR c/39323
18795         * config/alpha/elf.h (MAX_OFILE_ALIGNMENT): Sync with elfos.h
18796
18797 2009-04-28  Richard Guenther  <rguenther@suse.de>
18798
18799         * tree.h (SSA_NAME_VALUE): Remove.
18800         (struct tree_ssa_name): Remove value_handle member.
18801         * tree-vrp.c (execute_vrp): Initialize/free the value-handle
18802         array for jump threading.
18803         * tree-ssa-propagate.c (ssa_prop_init): Do not initialize
18804         SSA_NAME_VALUEs.
18805         * print-tree.c (print_node): Do not dump SSA_NAME_VALUEs.
18806         * tree-flow.h (threadedge_initialize_values): Declare.
18807         (threadedge_finalize_values): Likewise.
18808         * tree-ssa-threadedge.c (ssa_name_values): New global variable.
18809         (SSA_NAME_VALUE): Define.
18810         (threadedge_initialize_values): New function.
18811         (threadedge_finalize_values): Likewise.
18812         * tree-ssa-dom.c (ssa_name_values): New global variable.
18813         (SSA_NAME_VALUE): Define.
18814         (tree_ssa_dominator_optimize): Initialize/free the value-handle array.
18815
18816 2009-04-28  Ira Rosen  <irar@il.ibm.com>
18817
18818         * tree-vect-loop-manip.c (vect_create_cond_for_alias_checks):
18819         Use REPORT_VECTORIZED_LOCATIONS instead
18820         REPORT_VECTORIZED_LOOPS.
18821         * tree-vectorizer.c (vect_verbosity_level): Make static.
18822         (vect_loop_location): Rename to vect_location.
18823         (vect_set_verbosity_level): Update comment.
18824         (vect_set_dump_settings): Use REPORT_VECTORIZED_LOCATIONS
18825         and vect_location.
18826         (vectorize_loops): Fix comment. Use REPORT_VECTORIZED_LOCATIONS
18827         and vect_location. Use REPORT_UNVECTORIZED_LOCATIONS
18828         instead REPORT_UNVECTORIZED_LOOPS.
18829         * tree-vectorizer.h (enum vect_def_type): Rename vect_invariant_def
18830         and vect_loop_def to vect_external_def and vect_internal_def.
18831         (enum verbosity_levels): Rename REPORT_VECTORIZED_LOOPS
18832         and REPORT_UNVECTORIZED_LOOPS to REPORT_VECTORIZED_LOCATIONS and
18833         REPORT_UNVECTORIZED_LOCATIONS.
18834         (enum vect_relevant): Update comment. Rename vect_unused_in_loop
18835         and vect_used_in_loop and to vect_unused_in_scope and
18836         vect_used_in_scope.
18837         (STMT_VINFO_RELEVANT_P): Use vect_unused_in_scope.
18838         (vect_verbosity_level): Remove declaration.
18839         (vect_analyze_operations): Likewise.
18840         (vect_analyze_stmt): Declare.
18841         * tree-vect-loop.c (vect_determine_vectorization_factor): Use
18842         REPORT_UNVECTORIZED_LOCATIONS.
18843         (vect_get_loop_niters): Fix indentation.
18844         (vect_analyze_loop_form): Use REPORT_UNVECTORIZED_LOCATIONS.
18845         (vect_analyze_loop_operations): New function.
18846         (vect_analyze_loop): Call vect_analyze_loop_operations instead of
18847         vect_analyze_operations.
18848         (vect_is_simple_reduction): Use new names.
18849         (vectorizable_live_operation, vect_transform_loop): Likewise.
18850         * tree-vect-data-refs.c (vect_check_interleaving): Add a return value
18851         to specify whether the data references can be a part of interleaving
18852         chain.
18853         (vect_analyze_data_ref_dependence): Use new names.
18854         (vect_analyze_data_refs_alignment, vect_analyze_data_refs): Likewise.
18855         (vect_create_addr_base_for_vector_ref): Remove redundant code.
18856         * tree-vect-patterns.c (widened_name_p): Use new names.
18857         (vect_recog_dot_prod_pattern): Likewise.
18858         * tree-vect-stmts.c (vect_stmt_relevant_p): Use new names.
18859         (process_use, vect_mark_stmts_to_be_vectorized,
18860         vect_model_simple_cost, vect_model_store_cost,
18861         vect_get_vec_def_for_operand, vect_get_vec_def_for_stmt_copy,
18862         vectorizable_call, vectorizable_conversion, vectorizable_assignment,
18863         vectorizable_operation, vectorizable_type_demotion,
18864         vectorizable_type_promotion, vectorizable_store, vectorizable_load,
18865         vectorizable_condition): Likewise.
18866         (vect_analyze_operations): Split into vect_analyze_loop_operations
18867         and ...
18868         (vect_analyze_stmt): ... new function.
18869         (new_stmt_vec_info): Use new names.
18870         (vect_is_simple_use): Use new names and fix comment.
18871         * tree-vect-slp.c (vect_get_and_check_slp_defs): Use new names.
18872         (vect_build_slp_tree, vect_analyze_slp, vect_schedule_slp): Likewise.
18873
18874 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
18875
18876         PR target/39911
18877         * config/i386/i386.c (print_operand) ['Z']: Handle floating point
18878         and integer modes for x87 operands.  Do not ICE for unsupported size,
18879         generate error instead.  Generate error for unsupported operand types.
18880         ['z']: Do not handle HImode memory operands specially.  Warning
18881         for floating-point operands.  Fallthru to 'Z' for unsupported operand
18882         types.  Do not ICE for unsupported size, generate error instead.
18883         (output_387_binary_op): Use %Z to output operands.
18884         (output_fp_compare): Ditto.
18885         (output_387_reg_move): Ditto.
18886
18887 2009-04-28  Ben Elliston  <bje@au.ibm.com>
18888
18889         PR c++/35652
18890         Revert:
18891
18892         2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
18893
18894         * builtins.c (c_strlen): Do not warn here.
18895         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
18896         * c-common.c (pointer_int_sum): Take an explicit location.
18897         Warn about offsets out of bounds.
18898         * c-common.h (pointer_int_sum): Adjust declaration.
18899
18900 2009-04-27  Ian Lance Taylor  <iant@google.com>
18901
18902         * collect2.c (is_ctor_dtor): Change type of ret field in struct
18903         names to symkind.
18904         * dce.c (run_fast_df_dce): Change type of old_flags to int.
18905         * df-core.c (df_set_flags): Change return type to int.  Change
18906         type of old_flags to int.
18907         (df_clear_flags): Likewise.
18908         * df-scan.c (df_def_record_1): Change 0 to VOIDmode.
18909         (df_get_conditional_uses): Likewise.
18910         * df.h (df_set_flags, df_clear_flags): Update declarations.
18911         * dwarf2out.c (struct indirect_string_node): Change type of form
18912         field to enum dwarf_form.
18913         (AT_string_form): Change return type to enum dwarf_form.
18914         * fixed-value.c (fixed_compare): Add cast to enum type.
18915         * fwprop.c (update_df): Change 0 to VOIDmode.
18916         * gensupport.c: Change 0 to UNKNOWN.
18917         * gimple.h (gimple_cond_code): Add cast to enum type.
18918         * haifa-sched.c (reemit_notes): Add cast to enum type.
18919         * hooks.c (hook_int_void_no_regs): Remove function.
18920         * hooks.h (hook_int_void_no_regs): Remove declaration.
18921         * optabs.c (expand_widen_pattern_expr): Change 0 to VOIDmode.
18922         * predict.c (combine_predictions_for_insn): Add casts to enum type.
18923         * real.c (real_arithmetic): Add cast to enum type.
18924         (real_compare): Likewise.
18925         * target.h (struct gcc_target): Change return type of
18926         branch_target_register_class to enum reg_class.
18927         * target-def.h (TARGET_BRANCH_TARGET_REGISTER_CLASS): Define as
18928         default_branch_target_register_class.
18929         * targhooks.c (default_branch_target_register_class): New function.
18930         * targhooks.h (default_branch_target_register_class): Declare.
18931         * tree-data-ref.c (print_direction_vector): Add cast to enum type.
18932         * tree-vect-data-refs.c (vect_supportable_dr_alignment): Remove
18933         cast to int.
18934         * tree-vect-loop.c (vect_create_epilog_for_reduction): Change 0 to
18935         ERROR_MARK.
18936         * tree-vect-slp.c (vect_build_slp_tree): Change 0 to
18937         vect_uninitialized_def.  Change 0 to ERROR_MARK.
18938         * tree-vect-stmts.c (supportable_widening_operation): Don't
18939         initialize icode1 and icode2.
18940         * tree-vectorizer.h (enum vect_def_type): Add vect_uninitialized_def.
18941         * config/sol2-c.c (cmn_err_length_specs): Change 0 to FMT_LEN_none
18942         and to STD_C89.
18943         (cmn_err_flag_specs): Change 0 to STD_C89.
18944         (cmn_err_char_table): Likewise.
18945         * config/arm/arm.c (get_arm_condition_code): Change type of code
18946         to enum arm_cond_code.
18947         (IWMMXT_BUILTIN): Change 0 to UNKNOWN.
18948         (IWMMXT_BUILTIN2): Likewise.
18949         (neon_builtin_type_bits): Don't define typedef.
18950         (neon_builtin_datum): Change type of bits field to int.
18951         (arm_expand_neon_args): Add cast to enum type.
18952         * config/ia64/ia64.c (tls_symbolic_operand_type): Change 0 to
18953         TLS_MODEL_NONE.
18954         * config/i386/i386.c (bdesc_multi_arg): Change 0 to UNKNOWN.  Add
18955         casts to enum type.
18956         * config/mips/mips.c (LOONGSON_BUILTIN_ALIAS): Change 0 to
18957         MIPS_FP_COND_f.
18958         * config/mips/mips.md (jal_macro): Return enum constant.
18959         (single_insn): Likewise.
18960         * config/rs6000/rs6000.c (bdesc_altivec_preds): Change 0 to
18961         CODE_FOR_nothing.
18962         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
18963         casts to enum type.
18964         * config/s390/s390.c (s390_tune_flags): Change type to int.
18965         (s390_arch_flags): Likewise.
18966         (s390_handle_arch_option): Change flags field of struct pta to int.
18967         * config/s390/s390.h (s390_tune_flags): Update declaration.
18968         (s390_arch_flags): Likewise.
18969         * config/sh/sh.c (prepare_move_operands): Compare
18970         tls_symbolic_operand result with enum constant.
18971         (sh_reorg): Change PUT_MODE to PUT_REG_NOTE_KIND.
18972         (sh_expand_prologue): Add cast to enum type.
18973         (sh_expand_epilogue): Likewise.
18974         (tls_symbolic_operand): Change return type to enum tls_model.
18975         (fpscr_set_from_mem): Add cast to enum type.
18976         (legitimize_pic_address): Compare tls_symbolic_operand result with
18977         enum constant.
18978         (sh_target_reg_class): Change return type to enum reg_class.
18979         * config/sh/sh.h (OVERRIDE_OPTIONS): Change CPU_xxx to
18980         PROCESSOR_xxx.
18981         * config/sh/sh-protos.h (tls_symbolic_operand): Update declaration.
18982         * config/sparc/sparc.c (sparc_override_options): Add cast to enum type.
18983         * config/sparc/sparc.md (empty_delay_slot): Return enum constant.
18984         (pic, calls_alloca, calls_eh_return, leaf_function): Likewise.
18985         (delayed_branch, tls_call_delay): Likewise.
18986         (eligible_for_sibcall_delay): Likewise.
18987         (eligible_for_return_delay): Likewise.
18988         * config/spu/spu.c (expand_builtin_args): Add cast to enum type.
18989         (spu_expand_builtin_1): Likewise.
18990
18991         * c-typeck.c (convert_for_assignment): Issue -Wc++-compat warnings
18992         for all types of conversions.
18993         (output_init_element): Issue -Wc++-compat warning if needed when
18994         initializing a bitfield with enum type.
18995         * c-parser.c (c_parser_expression): Set original_type to
18996         original_type of right hand operand of comma operator.
18997
18998 2009-04-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
18999
19000         * doc/c-tree.texi (Types, Functions, Expression trees): Fix
19001         grammar nits.
19002         * doc/cfg.texi (Maintaining the CFG, Liveness information): Likewise.
19003         * doc/cpp.texi (Standard Predefined Macros)
19004         (Implementation-defined behavior): Likewise.
19005         * doc/extend.texi (Function Attributes, Type Attributes): Likewise.
19006         * doc/gimple.texi (GIMPLE Exception Handling)
19007         (@code{GIMPLE_ASSIGN}): Likewise.
19008         * doc/install.texi (Prerequisites, Configuration, Specific): Likewise.
19009         * doc/invoke.texi (Warning Options, Optimize Options)
19010         (AVR Options, Darwin Options): Likewise.
19011         (Optimize Options): Reformulate -fwhole-program description.
19012         * doc/loop.texi (Lambda): Likewise.
19013         * doc/md.texi (Output Template, Define Constraints)
19014         (Standard Names, Insn Splitting): Likewise.
19015         * doc/options.texi (Option properties): Likewise.
19016         * doc/passes.texi (Tree-SSA passes): Likewise.
19017         * doc/rtl.texi (Side Effects, Assembler, Insns): Likewise.
19018         * doc/tm.texi (Register Classes, Old Constraints, Scalar Return)
19019         (File Names and DBX): Likewise.
19020         * doc/trouble.texi (Incompatibilities): Likewise.
19021
19022 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
19023
19024         * spu.c (spu_machine_dependent_reorg): Make sure branch label on hint
19025         instruction is correct.
19026
19027 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
19028
19029         Allow non-constant arguments to conversion intrinsics.
19030         * spu-protos.h (exp2_immediate_p, spu_gen_exp2): Declare.
19031         * predicates.md (spu_inv_exp2_operand, spu_exp2_operand): New.
19032         * spu.c (print_operand): Handle 'v' and 'w'.
19033         (exp2_immediate_p, spu_gen_exp2): Define.
19034         * spu-builtins.def (spu_convts, spu_convtu, spu_convtf_0,
19035         spu_convtf_1): Update parameter descriptions.
19036         * spu-builtins.md (spu_csflt, spu_cuflt, spu_cflts, spu_cfltu): Update.
19037         * constraints.md ('v', 'w'): New.
19038         * spu.md (UNSPEC_CSFLT, UNSPEC_CFLTS, UNSPEC_CUFLT, UNSPEC_CFLTU):
19039         Remove.
19040         (i2f, I2F): New define_mode_attr.
19041         (floatsisf2, floatv4siv4sf2, fix_truncsfsi2, fix_truncv4sfv4si2,
19042         floatunssisf2, floatunsv4siv4sf2, fixuns_truncsfsi2,
19043         fixuns_truncv4sfv4si2):  Update to use mode attribute.
19044         (float<mode><i2f>2_mul, float<mode><i2f>2_div,
19045         fix_trunc<mode><f2i>2_mul, floatuns<mode><i2f>2_mul,
19046         floatuns<mode><i2f>2_div, fixuns_trunc<mode><f2i>2_mul): New
19047         patterns for combine.
19048
19049 2009-04-27  Steven Bosscher  <steven@gcc.gnu.org>
19050
19051         * dbgcnt.def (cprop1, cprop2, gcse, jump_bypass): Remove
19052         (cprop, hoist, pre, store_motion): New debug counters.
19053         * tree-pass.h (pass_tracer): Move to list of gimple passes, it
19054         is not an RTL pass anymore.
19055         (pass_profiling): Remove extern decl for pass removed in 2005.
19056         (pass_gcse, pass_jump_bypass): Remove.
19057         * final.c (rest_of_clean_state): Set flag_rerun_cse_after_global_opts
19058         to 0 for clean state.
19059         * toplev.h (flag_rerun_cse_after_global_opts): Add extern declaration.
19060         * cse.c (gate_handle_cse_after_global_opts,
19061         rest_of_handle_cse_after_global_opts): New functions.
19062         (pass_cse_after_global_opts): New pass, does local CSE.
19063         * timevar.def (TV_GCSE, TV_CPROP1, TV_CPROP2, TV_BYPASS): Remove.
19064         (TV_CPROP): New timevar.
19065         * gcse.c (flag_rerun_cse_after_global_opts): New global variable.
19066         (run_jump_opt_after_gcse, max_gcse_regno): Remove global vars.
19067         (gcse_main, recompute_all_luids): Remove.
19068         (compute_hash_table_work): Call max_reg_num instead of reading
19069         max_gcse_regno.
19070         (cprop_jump): Don't set run_jump_opt_after_gcse.
19071         (constprop_register): Always allow to alter jumps.
19072         (cprop_insn): Likewise.
19073         (do_local_cprop): Likewise.
19074         (local_cprop_pass): Likewise.  Return non-zero if something changed.
19075         (cprop): Remove function, fold interesting bits into one_cprop_pass.
19076         (find_implicit_sets): Add note about missed optimization opportunity.
19077         (one_cprop_pass): Rewrite to be "the" CPROP pass, called from the
19078         pass_rtl_cprop execute function.
19079         Don't bother tracking the pass number, each pass gets its own dumpfile
19080         now anyway.
19081         Always allow to alter jumpsand bypass jumps.
19082         (bypass_block): Don't ignore regno >= max_gcse_regno, find_bypass_set
19083         will just find no suitable set.
19084         (pre_edge_insert): Fix dumping, this function is for PRE only.
19085         (one_pre_gcse_pass): Rewrite to be "the" PRE pass, called from the
19086         pass_rtl_pre execute function.
19087         (hoist_code): Return non-zero if something changed.  Keep track of
19088         substitutions and insertions for statistics gathering similar to PRE.
19089         (one_code_hoisting_pass): Rewrite to be "the" code hoisting pass,
19090         called from the pass_rtl_hoist execute function.  Show pass statistics.
19091         (compute_store_table): Use max_reg_num directly instead of using the
19092         formerly global max_gcse_regno.
19093         (build_store_vectors): Likewise.
19094         (replace_store_insn): Fix dumping.
19095         (store_motion): Rename to ...
19096         (one_store_motion_pass): ... this.  Rewrite to be "the" STORE_MOTION
19097         pass, called from the pass_rtl_store_motion execute function.  Keep
19098         track of substitutions and insertions for statistics gathering similar
19099         to PRE.
19100         (bypass_jumps): Remove, fold interesting bits into ...
19101         (one_cprop_pass): ... this.  Rewrite to be "the" CPROP pass, called
19102         from the pass_rtl_cprop execute function.
19103         (gate_handle_jump_bypass, rest_of_handle_jump_bypass,
19104         pass_jump_bypass): Remove.
19105         (gate_handle_gcse, rest_of_handle_gcse): Remove.
19106         (gate_rtl_cprop, execute_rtl_cprop, pass_rtl_cprop): New.
19107         (gate_rtl_pre, execute_rtl_pre, pass_rtl_pre): New.
19108         (gate_rtl_hoist, execute_rtl_hoist, pass_rtl_hoist): New.
19109         (gate_rtl_store_motion, execute_rtl_store_motion,
19110         pass_rtl_store_motion): New.
19111         * common.opt: Remove flag_cse_skip_blocks, adjust documentation to
19112         make it clear that -fcse-skip-blocks is a no-op for backward compat.
19113         * passes.c (init_optimization_passes): Remove pass_gcse and
19114         pass_jump_bypass.  Schedule cprop, pre, hoist, cprop, store_motion,
19115         and cse_after_global_opts in place of pass_gcse.  Schedule cprop
19116         instead of pass_jump_bypass.
19117
19118 2009-04-27  Richard Guenther  <rguenther@suse.de>
19119
19120         PR middle-end/39928
19121         * gimplify.c (gimplify_expr): If we are required to create
19122         a temporary make sure it ends up as register.
19123
19124 2009-04-27  H.J. Lu  <hongjiu.lu@intel.com>
19125
19126         PR target/39903
19127         * config/i386/i386.c (construct_container): Don't call
19128         gen_reg_or_parallel with BLKmode on X86_64_SSE_CLASS,
19129         X86_64_SSESF_CLASS and X86_64_SSEDF_CLASS.
19130
19131 2009-04-27  Michael Matz  <matz@suse.de>
19132
19133         * ssaexpand.h (struct ssaexpand): Member 'values' is a bitmap.
19134         (get_gimple_for_ssa_name): Adjust, lookup using SSA_NAME_DEF_STMT.
19135         * tree-ssa-live.h: (find_replaceable_exprs): Return a bitmap.
19136         (dump_replaceable_exprs): Take a bitmap.
19137         * cfgexpand.c (gimple_cond_pred_to_tree): Handle bitmap instead of
19138         array.
19139         (expand_gimple_basic_block): Likewise.
19140         * tree-ssa-ter.c (struct temp_expr_table_d): Make
19141         replaceable_expressions member a bitmap.
19142         (free_temp_expr_table): Pass back and deal with bitmap, not gimple*.
19143         (mark_replaceable): Likewise.
19144         (find_replaceable_in_bb, dump_replaceable_exprs): Likewise.
19145         * tree-outof-ssa.c (remove_ssa_form): 'values' is a bitmap.
19146
19147 2009-04-27  Richard Guenther  <rguenther@suse.de>
19148
19149         * tree-cfg.c (remove_useless_stmts): Verify stmts afterwards.
19150         (verify_stmts): Dispatch to gimple/type verification code.
19151         * tree-inline.c (remap_gimple_op_r): Work around C++ FE
19152         issue with call argument types.
19153
19154 2009-04-27  Michael Matz  <matz@suse.de>
19155
19156         * tree-into-ssa.c (regs_to_rename, mem_syms_to_rename): Remove.
19157         (init_update_ssa, delete_update_ssa, update_ssa): Remove references
19158         to above.
19159
19160 2009-04-27  Richard Sandiford  <rdsandiford@googlemail.com>
19161             Eric Botcazou  <ebotcazou@adacore.com>
19162
19163         * resource.c (find_basic_block): Use BLOCK_FOR_INSN to look up
19164         a label's basic block.
19165         (mark_target_live_regs): Tidy and rework obsolete comments.
19166         Change back DF problem to LIVE.  If a label starts a basic block,
19167         assume that all registers that used to be live then still are.
19168         (init_resource_info): If a label starts a basic block, set its
19169         BLOCK_FOR_INSN accordingly.
19170         (fini_resource_info): Undo the setting of BLOCK_FOR_INSN.
19171
19172 2009-04-27  Richard Guenther  <rguenther@suse.de>
19173
19174         * tree-flow-inline.h (function_ann): Remove.
19175         (get_function_ann): Likewise.
19176         * tree-dfa.c (create_function_ann): Remove.
19177         * tree-flow.h (struct static_var_ann_d): Remove.
19178         (struct function_ann_d): Likewise.
19179         (union tree_ann_d): Remove fdecl member.
19180         (function_ann_t): Remove.
19181         (function_ann, get_function_ann, create_function_ann): Remove
19182         declarations.
19183
19184 2009-04-27  Uros Bizjak  <ubizjak@gmail.com>
19185
19186         * config/alpha/alpha.c (code_for_builtin): Declare as enum insn_code.
19187
19188 2009-04-27  Jan Hubicka  <jh@suse.cz>
19189
19190         * ipa-pure-const.c (struct funct_state_d): New fields
19191         state_previously_known, looping_previously_known; remove
19192         state_set_in_source.
19193         (analyze_function): Use new fields.
19194         (propagate): Avoid assumption that state_set_in_source imply
19195         nonlooping.
19196
19197         * tree-ssa-loop-niter.c (finite_loop_p): New function.
19198         * tree-ssa-loop-ivcanon.c (empty_loop_p): Use it.
19199         * cfgloop.h (finite_loop_p): Declare.
19200
19201 2009-04-26  Michael Matz  <matz@suse.de>
19202
19203         * tree-flow.h (tree_ann_common_d): Remove aux and value_handle members.
19204
19205 2009-04-26  Michael Matz  <matz@suse.de>
19206
19207         * tree-pass.h (pass_del_ssa, pass_mark_used_blocks,
19208         pass_free_cfg_annotations, pass_free_datastructures): Remove decls.
19209         * gimple-low.c (mark_blocks_with_used_vars, mark_used_blocks,
19210         pass_mark_used_blocks): Remove.
19211         * tree-optimize.c (pass_free_datastructures,
19212         execute_free_cfg_annotations, pass_free_cfg_annotations): Remove.
19213         * passes.c (init_optimization_passes): Don't call
19214         pass_mark_used_blocks, remove dead code.
19215
19216 2009-04-26  H.J. Lu  <hongjiu.lu@intel.com>
19217
19218         * tree-outof-ssa.c (rewrite_trees): Add ATTRIBUTE_UNUSED.
19219         * tree-ssa-live.h (register_ssa_partition): Likewise.
19220
19221 2009-04-26  Michael Matz  <matz@suse.de>
19222
19223         Expand from SSA.
19224         * builtins.c (fold_builtin_next_arg): Handle SSA names.
19225         * tree-ssa-copyrename.c (rename_ssa_copies): Use ssa_name() directly.
19226         * tree-ssa-coalesce.c (create_outofssa_var_map): Mark only useful
19227         SSA names.
19228         (compare_pairs): Swap cost comparison.
19229         (coalesce_ssa_name): Don't use change_partition_var.
19230         * tree-nrv.c (struct nrv_data): Add modified member.
19231         (finalize_nrv_r): Set it.
19232         (tree_nrv): Use it to update statements.
19233         (pass_nrv): Require PROP_ssa.
19234         * tree-mudflap.c (mf_decl_cache_locals,
19235         mf_build_check_statement_for): Use make_rename_temp.
19236         (pass_mudflap_2): Require PROP_ssa, run ssa update at finish.
19237         * alias.c (find_base_decl): Handle SSA names.
19238         * emit-rtl (set_reg_attrs_for_parm): Make non-static.
19239         (component_ref_for_mem_expr): Don't leak SSA names into RTL.
19240         * rtl.h (set_reg_attrs_for_parm): Declare.
19241         * tree-optimize.c (pass_cleanup_cfg_post_optimizing): Rename
19242         to "optimized", remove unused locals at finish.
19243         (execute_free_datastructures): Make global, call
19244         delete_tree_cfg_annotations.
19245         (execute_free_cfg_annotations): Don't call
19246         delete_tree_cfg_annotations.
19247
19248         * ssaexpand.h: New file.
19249         * expr.c (toplevel): Include ssaexpand.h.
19250         (expand_assignment): Handle SSA names the same as register variables.
19251         (expand_expr_real_1): Expand SSA names.
19252         * cfgexpand.c (toplevel): Include ssaexpand.h.
19253         (SA): New global variable.
19254         (gimple_cond_pred_to_tree): Fold TERed comparisons into predicates.
19255         (SSAVAR): New macro.
19256         (set_rtl): New helper function.
19257         (add_stack_var): Deal with SSA names, use set_rtl.
19258         (expand_one_stack_var_at): Likewise.
19259         (expand_one_stack_var): Deal with SSA names.
19260         (stack_var_size_cmp): Use code (SSA_NAME / DECL) as tie breaker
19261         before unique numbers.
19262         (expand_stack_vars): Use set_rtl.
19263         (expand_one_var): Accept SSA names, add asserts for them, feed them
19264         to above subroutines.
19265         (expand_used_vars): Expand all partitions (without default defs),
19266         then only the local decls (ignoring those expanded already).
19267         (expand_gimple_cond): Remove edges when jumpif() expands an
19268         unconditional jump.
19269         (expand_gimple_basic_block): Don't clear EDGE_EXECUTABLE here,
19270         or remove abnormal edges.  Ignore insns setting the LHS of a TERed
19271         SSA name.
19272         (gimple_expand_cfg): Call into rewrite_out_of_ssa, initialize
19273         members of SA; deal with PARM_DECL partitions here; expand
19274         all PHI nodes, free tree datastructures and SA.  Commit instructions
19275         on edges, clear EDGE_EXECUTABLE and remove abnormal edges here.
19276         (pass_expand): Require and destroy PROP_ssa, verify SSA form, flow
19277         info and statements at start, collect garbage at finish.
19278         * tree-ssa-live.h (struct _var_map): Remove partition_to_var member.
19279         (VAR_ANN_PARTITION) Remove.
19280         (change_partition_var): Don't declare.
19281         (partition_to_var): Always return SSA names.
19282         (var_to_partition): Only accept SSA names.
19283         (register_ssa_partition): Only check argument.
19284         * tree-ssa-live.c (init_var_map): Don't allocate partition_to_var
19285         member.
19286         (delete_var_map): Don't free it.
19287         (var_union): Only accept SSA names, simplify.
19288         (partition_view_init): Mark only useful SSA names as used.
19289         (partition_view_fini): Only deal with SSA names.
19290         (change_partition_var): Remove.
19291         (dump_var_map): Use ssa_name instead of partition_to_var member.
19292         * tree-ssa.c (delete_tree_ssa): Don't remove PHI nodes on RTL
19293         basic blocks.
19294         * tree-outof-ssa.c (toplevel): Include ssaexpand.h and expr.h.
19295         (struct _elim_graph): New member const_dests; nodes member vector of
19296         ints.
19297         (set_location_for_edge): New static helper.
19298         (create_temp): Remove.
19299         (insert_partition_copy_on_edge, insert_part_to_rtx_on_edge,
19300         insert_value_copy_on_edge, insert_rtx_to_part_on_edge): New functions.
19301         (new_elim_graph): Allocate const_dests member.
19302         (clean_elim_graph): Truncate const_dests member.
19303         (delete_elim_graph): Free const_dests member.
19304         (elim_graph_size): Adapt to new type of nodes member.
19305         (elim_graph_add_node): Likewise.
19306         (eliminate_name): Likewise.
19307         (eliminate_build): Don't take basic block argument, deal only with
19308         partition numbers, not variables.
19309         (get_temp_reg): New static helper.
19310         (elim_create): Use it, deal with RTL temporaries instead of trees.
19311         (eliminate_phi): Adjust all calls to new signature.
19312         (assign_vars, replace_use_variable, replace_def_variable): Remove.
19313         (rewrite_trees): Only do checking.
19314         (edge_leader, stmt_list, leader_has_match, leader_match): Remove.
19315         (same_stmt_list_p, identical_copies_p, identical_stmt_lists_p,
19316         init_analyze_edges_for_bb, fini_analyze_edges_for_bb,
19317         contains_tree_r, MAX_STMTS_IN_LATCH,
19318         process_single_block_loop_latch, analyze_edges_for_bb,
19319         perform_edge_inserts): Remove.
19320         (expand_phi_nodes): New global function.
19321         (remove_ssa_form): Take ssaexpand parameter.  Don't call removed
19322         functions, initialize new parameter, remember partitions having a
19323         default def.
19324         (finish_out_of_ssa): New global function.
19325         (rewrite_out_of_ssa): Make global.  Adjust call to remove_ssa_form,
19326         don't reset in_ssa_p here, don't disable TER when mudflap.
19327         (pass_del_ssa): Remove.
19328         * tree-flow.h (struct var_ann_d): Remove out_of_ssa_tag and
19329         partition members.
19330         (execute_free_datastructures): Declare.
19331         * Makefile.in (SSAEXPAND_H): New variable.
19332         (tree-outof-ssa.o, expr.o, cfgexpand.o): Depend on SSAEXPAND_H.
19333         * basic-block.h (commit_one_edge_insertion): Declare.
19334         * passes.c (init_optimization_passes): Move pass_nrv and
19335         pass_mudflap2 before pass_cleanup_cfg_post_optimizing, remove
19336         pass_del_ssa, pass_free_datastructures, pass_free_cfg_annotations.
19337         * cfgrtl.c (commit_one_edge_insertion): Make global, don't declare.
19338         (redirect_branch_edge): Deal with super block when expanding, split
19339         out jump patching itself into ...
19340         (patch_jump_insn): ... here, new static helper.
19341
19342 2009-04-26  Michael Matz  <matz@suse.de>
19343
19344         * tree-ssa-copyrename.c (rename_ssa_copies): Don't iterate
19345         beyond num_ssa_names.
19346         * tree-ssa-ter.c (free_temp_expr_table): Likewise.
19347         * tree-ssa-coalesce.c (create_outofssa_var_map): Likewise.
19348
19349 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
19350
19351         PR inline-asm/39543
19352         * fwprop.c (forward_propagate_asm): New function.
19353         (forward_propagate_and_simplify): Propagate also into __asm, if it
19354         doesn't increase the number of referenced registers.
19355
19356         PR c/39889
19357         * stmt.c (warn_if_unused_value): Look through NON_LVALUE_EXPR.
19358
19359 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
19360
19361         * tree-nested.c (get_nonlocal_vla_type): If not optimizing, call
19362         note_nonlocal_vla_type for nonlocal VLAs.
19363         (note_nonlocal_vla_type, note_nonlocal_block_vlas,
19364         contains_remapped_vars, remap_vla_decls): New functions.
19365         (convert_nonlocal_reference_stmt): If not optimizing, call
19366         note_nonlocal_block_vlas on GIMPLE_BIND block vars.
19367         (nesting_copy_decl): Return {VAR,PARM,RESULT}_DECL unmodified
19368         if it wasn't found in var_map.
19369         (finalize_nesting_tree_1): Call remap_vla_decls.  If outermost
19370         GIMPLE_BIND doesn't have gimple_bind_block, chain debug_var_chain
19371         to BLOCK_VARS (DECL_INITIAL (root->context)) instead of calling
19372         declare_vars.
19373         * gimplify.c (nonlocal_vlas): New variable.
19374         (gimplify_var_or_parm_decl): Add debug VAR_DECLs for non-local
19375         referenced VLAs.
19376         (gimplify_body): Create and destroy nonlocal_vlas.
19377
19378         * dwarf2out.c (loc_descr_plus_const): New function.
19379         (build_cfa_aligned_loc, tls_mem_loc_descriptor,
19380         mem_loc_descriptor, loc_descriptor_from_tree_1,
19381         descr_info_loc, gen_variable_die): Use it.
19382
19383         * tree.h (DECL_BY_REFERENCE): Note that it is also valid for
19384         !TREE_STATIC VAR_DECLs.
19385         * dwarf2out.c (loc_by_reference, gen_decl_die): Handle
19386         DECL_BY_REFERENCE on !TREE_STATIC VAR_DECLs.
19387         (gen_variable_die): Likewise.  Don't look at TREE_PRIVATE if
19388         DECL_BY_REFERENCE is valid.
19389         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Don't look at TREE_PRIVATE
19390         for PARM_DECLs, RESULT_DECLs or !TREE_STATIC VAR_DECLs.
19391         * tree-nested.c (get_nonlocal_debug_decl, get_local_debug_decl):
19392         Copy DECL_BY_REFERENCE.
19393         (struct nesting_copy_body_data): New type.
19394         (nesting_copy_decl): New function.
19395         (finalize_nesting_tree_1): Remap types of debug_var_chain variables,
19396         if they have variable length.
19397
19398 2009-04-26  Michael Matz  <matz@suse.de>
19399
19400         * tree-sra.c (sra_build_assignment): Don't use into_ssa mode,
19401         mark new temporaries for renaming.
19402
19403 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
19404
19405         PR c/39581
19406         * c-decl.c (global_bindings_p): Return negative value.
19407         (c_variable_size): New.  Based on variable_size from
19408         stor-layout.c.
19409         (grokdeclarator): Call c_variable_size not variable_size.
19410
19411 2009-04-26  Uros Bizjak  <ubizjak@gmail.com>
19412
19413         * config/i386/i386.c (print_operand) ['z']: Fix typo.
19414
19415 2009-04-26  Kai Tietz  <kai.tietz@onevision.com>
19416
19417         * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR):
19418         Redefine it to just use mingw/include.
19419         (ASM_SPEC): Rules for -m32 and -m64.
19420         (LINK_SPEC): Use Likewise.
19421         (SPEC_32): New define.
19422         (SPEC_64): Likewise.
19423         (SUB_LINK_SPEC): Likewise.
19424         (MULTILIB_DEFAULTS): New define.
19425         * config/i386/t-mingw-w64 (MULTILIB_OPTIONS):
19426         Add multilib options.
19427         (MULTILIB_DIRNAMES): Likewise.
19428         (MULTILIB_OSDIRNAMES): Likewise.
19429         (LIBGCC): Likewise.
19430         (INSTALL_LIBGCC): Likewise.
19431
19432 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
19433
19434         PR c/39556
19435         * c-tree.h (enum c_inline_static_type): New.
19436         (record_inline_static): Declare.
19437         * c-decl.c (struct c_inline_static, c_inline_statics,
19438         record_inline_static, check_inline_statics): New.
19439         (pop_file_scope): Call check_inline_statics.
19440         (start_decl): Call record_inline_static instead of pedwarning
19441         directly for static in inline function.
19442         * c-typeck.c (build_external_ref): Call record_inline_static
19443         instead of pedwarning directly for static referenced in inline
19444         function.
19445
19446 2009-04-26  Steven Bosscher  <steven@gcc.gnu.org>
19447
19448         * df-scan.c (df_insn_rescan): Salvage insn's LUID if the insn is
19449         not new but only being rescanned.
19450         * gcse.c (uid_cuid, max_uid, INSN_CUID, max_cuid, struct reg_set,
19451         reg_set_table, REG_SET_TABLE_SLOP, reg_set_in_block,
19452         alloc_reg_set_mem, free_reg_set_mem, record_one_set,
19453         record_set_info, compute_set, grealloc): Remove.
19454         (recompute_all_luids): New function.
19455         (gcse_main): Don't compute sets, and don't do related memory
19456         allocations/free-ing.  If something changed before the end of the
19457         pass, update LUIDs using recompute_all_luids.
19458         (alloc_gcse_mem): Don't compute LUIDs.  Don't allocate reg_set memory.
19459         (free_gcse_mem): Don't free it either.
19460         (oprs_unchanged_p, load_killed_in_block, record_last_reg_set_info):
19461         Use the df insn LUIDs.
19462         (load_killed_in_block): Likewise.
19463         (compute_hash_table_work): Don't compute reg_set_in_block.
19464         (compute_transp): Use DF_REG_DEF_CHAINs.
19465         (local_cprop_pass): Don't use compute_sets and related functions.
19466         (one_cprop_pass, pre_gcse, one_pre_gcse_pass, one_code_hoisting_pass):
19467         Use get_max_uid() instead of max_cuid.
19468         (insert_insn_end_basic_block, pre_insert_copy_insn,
19469         update_ld_motion_stores): Don't try to
19470         keep reg_set tables up to date.
19471         (pre_insert_copies): Use df insn LUIDs.
19472         (sbitmap pre_redundant_insns): Replace with uses of INSN_DELETED_P.
19473         (reg_set_info): Don't use extra bitmap argument.
19474         (compute_store_table): Don't compute reg_set_in_block.  Use DF scan
19475         information to compute regs_set_in_block.
19476         (free_store_memory, store_motion): Don't nullify reg_set_in_block.
19477         (bypass_jumps): Don't use compute_sets and friends.
19478
19479 2009-04-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
19480
19481         PR testsuite/39710
19482         * opts.c (undocumented_msg): Do not leave blank even with
19483         ENABLE_CHECKING.
19484
19485 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
19486
19487         * c-decl.c (build_enumerator): Allow values folding to integer
19488         constants but not integer constant expressions with a pedwarn if
19489         pedantic.
19490
19491 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
19492
19493         PR c/39582
19494         * c-typeck.c (c_expr_sizeof_type): Create a C_MAYBE_CONST_EXPR
19495         with non-null C_MAYBE_CONST_EXPR_PRE if size of a variable-length
19496         type is an integer constant.
19497
19498 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
19499
19500         PR target/39897
19501         * config/i386/i386.c (print_operand) ['z']: Revert handling of
19502         HImode operands.
19503
19504 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
19505
19506         PR c/39564
19507         * c-decl.c (grokdeclarator): Diagnose declarations of functions
19508         with variably modified return type and no storage class
19509         specifiers, except for the case of nested functions.  Distinguish
19510         extern declarations of functions with variably modified return
19511         types from those of objects with variably modified types.
19512
19513 2009-04-25  Jan Hubicka  <jh@suse.cz>
19514
19515         * tree.c (list_equal_p): New function.
19516         * tree.h (list_equal_p): Declare.
19517         * coretypes.h (edge_def, edge, const_edge, basic_block_def
19518         basic_block_def, basic_block, const_basic_block): New.
19519         * tree-eh.c (make_eh_edge): EH edges are not abnormal.
19520         (redirect_eh_edge): New function.
19521         (make_eh_edge_update_phi): EH edges are not abnormal.
19522         * except.c: Include tree-flow.h.
19523         (list_match): New function.
19524         (eh_region_replaceable_by_p): New function.
19525         (replace_region): New function.
19526         (hash_type_list): New function.
19527         (hash_eh_region): New function.
19528         (eh_regions_equal_p): New function.
19529         (merge_peers): New function.
19530         (remove_unreachable_regions): Verify EH tree when checking;
19531         merge peers.
19532         (copy_eh_region_1): New function.
19533         (copy_eh_region): New function.
19534         (push_reachable_handler): New function.
19535         (build_post_landing_pads, dw2_build_landing_pads): Be ready for
19536         regions without label but with live RESX.
19537         * except.h (redirect_eh_edge_to_label): New.
19538         * tree-flow.h (redirect_eh_edge): New.
19539         * coretypes.h (edge_def, edge, const_edge, basic_block_def
19540         basic_block_def, basic_block, const_basic_block): Remove.
19541         * Makefile.in (except.o): Add dependency on tree-flow.h
19542         * tree-cfg.c (gimple_redirect_edge_and_branch): Handle EH edges.
19543         * basic-block.h (edge, const_edge, basic_block, const_basic_block):
19544         Remove.
19545
19546 2009-04-25  Eric Botcazou  <ebotcazou@adacore.com>
19547
19548         PR bootstrap/39645
19549         * config/sparc/sparc.c (sparc_gimplify_va_arg): Set TREE_ADDRESSABLE
19550         on the destination of memcpy.
19551
19552 2009-04-25  Paolo Bonzini  <bonzini@gnu.org>
19553
19554         * doc/tm.texi (REGNO_OK_FOR_BASE_P, REGNO_MODE_OK_FOR_BASE_P,
19555         REGNO_MODE_OK_FOR_REG_BASE_P, REGNO_MODE_CODE_OK_FOR_BASE_P,
19556         REGNO_OK_FOR_INDEX_P): Mention strict/nonstrict difference.
19557
19558 2009-04-25  Jan Hubicka  <jh@suse.cz>
19559
19560         * tree-eh.c (tree_remove_unreachable_handlers): Handle shared labels.
19561         (tree_empty_eh_handler_p): Allow non-EH predecestors; allow region
19562         to be reached by different label than left.
19563         (update_eh_edges): Update comment; remove edge_to_remove if possible
19564         and return true if suceeded.
19565         (cleanup_empty_eh): Accept sharing map; handle shared regions.
19566         (cleanup_eh): Compute sharing map.
19567         * except.c (remove_eh_handler_and_replace): Add argument if we should
19568         update regions.
19569         (remove_unreachable_regions): Update for label sharing.
19570         (label_to_region_map): Likewise.
19571         (get_next_region_sharing_label): New function.
19572         (remove_eh_handler_and_replace): Add update_catch_try parameter; update
19573         prev_try pointers.
19574         (remove_eh_handler): Update.
19575         (remove_eh_region_and_replace_by_outer_of): New function.
19576         * except.h (struct eh_region): Add next_region_sharing_label.
19577         (remove_eh_region_and_replace_by_outer_of,
19578         get_next_region_sharing_label): Declare.
19579         * tree-cfgcleanup.c (tree_forwarder_block_p): Simplify.
19580
19581 2009-04-25  Jan Hubicka  <jh@suse.cz>
19582
19583         * tree-cfg.c (split_critical_edges): Split also edges where we can't
19584         insert code even if they are not critical.
19585
19586 2009-04-25  Jan Hubicka  <jh@suse.cz>
19587
19588         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
19589         (gimple_can_remove_branch_p): EH edges won't remove branch by
19590         redirection.
19591         * tree-inline.c (update_ssa_across_abnormal_edges): Do handle
19592         updating of non-abnormal EH edges.
19593         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
19594         (gimple_can_remove_branch_p): EH edges are unremovable by redirection.
19595         (split_critical_edges): Split also edges where emitting code on them
19596         will lead to splitting later.
19597
19598 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
19599             H.J. Lu  <hongjiu.lu@intel.com>
19600
19601         PR target/39590
19602         * configure.ac (HAVE_AS_IX86_FILDQ): On x86 targets check whether
19603         the configured assembler supports fildq and fistpq mnemonics.
19604         (HAVE_AS_IX86_FILDS): Rename from HAVE_GAS_FILDS_FISTS.
19605         * configure: Regenerated.
19606         * config.in: Ditto.
19607
19608         * config/i386/i386.c (print_operand): Handle 'Z'.
19609         ['z']: Remove handling of special fild/fist suffixes.
19610         (output_fix_trunc): Use '%Z' to output suffix of fist{,p,tp} insn.
19611         * config/i386/i386.md (*floathi<mode>2_i387): Use '%Z' to output
19612         suffix of fild insn.
19613         (*floatsi<mode>2_vector_mixed): Ditto.
19614         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit): Ditto.
19615         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit): Ditto.
19616         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp): Ditto.
19617         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387): Ditto.
19618         * config/i386/gas.h (GAS_MNEMONICS): Remove.
19619
19620 2009-04-25  Ben Elliston  <bje@au.ibm.com>
19621
19622         * genrecog.c (validate_pattern): Do not warn for VOIDmode CALLs as
19623         the source of a set operation.
19624
19625 2009-04-25  Anatoly Sokolov  <aesok@post.ru>
19626
19627         * target.h (struct gcc_target): Add case_values_threshold field.
19628         * target-def.h (TARGET_CASE_VALUES_THRESHOLD): New.
19629         (TARGET_INITIALIZER): Use TARGET_CASE_VALUES_THRESHOLD.
19630         * targhooks.c (default_case_values_threshold): New function.
19631         * targhooks.h (default_case_values_threshold): Declare function.
19632         * stmt.c (expand_case): Use case_values_threshold target hook.
19633         * expr.h (case_values_threshold): Remove declartation.
19634         * expr.c (case_values_threshold): Remove function.
19635         * doc/tm.texi (CASE_VALUES_THRESHOLD): Revise documentation.
19636
19637         * config/avr/avr.h (CASE_VALUES_THRESHOLD): Remove macro.
19638         * config/avr/avr.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
19639         (avr_case_values_threshold): Declare as static.
19640         * config/avr/avr-protos.h (avr_case_values_threshold): Remove.
19641
19642         * config/avr/mn10300.h (CASE_VALUES_THRESHOLD): Remove macro.
19643         * config/avr/mn10300.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
19644         (mn10300_case_values_threshold): New function.
19645
19646 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
19647
19648         * ira.c (setup_cover_and_important_classes): Add enum cast.
19649
19650 2009-04-24  Vladimir Makarov  <vmakarov@redhat.com>
19651
19652         * genpreds.c (write_enum_constraint_num): Output definition of
19653         CONSTRAINT_NUM_DEFINED_P macro.
19654         * ira.c (setup_cover_and_important_classes): Use
19655         CONSTRAINT_NUM_DEFINED_P instead of CONSTRAINT__LIMIT in #ifdef.
19656
19657 2009-04-24  DJ Delorie  <dj@redhat.com>
19658
19659         * config/sh/sh.h (LIBGCC2_DOUBLE_TYPE_SIZE): Test
19660         __SH2A_SINGLE_ONLY__ also.
19661
19662 2009-04-24  Steve Ellcey  <sje@cup.hp.com>
19663
19664         * config/ia64/ia64.md (movfs_internal): Allow flt constants.
19665         (movdf_internal): Ditto.
19666         * config/ia64/ia64.c (ia64_legitimate_constant_p): Allow
19667         SFmode and DFmode constants.
19668         (ia64_print_operand): Add 'G' format for printing
19669         floating point constants.
19670
19671 2009-04-24  Richard Guenther  <rguenther@suse.de>
19672
19673         * tree-vrp.c (extract_range_from_binary_expr): Handle overflow
19674         from unsigned additions.
19675
19676 2009-04-24  Joseph Myers  <joseph@codesourcery.com>
19677
19678         * c-typeck.c (set_init_index): Allow array designators that are
19679         not integer constant expressions with a pedwarn if pedantic.
19680
19681 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
19682
19683         * simplify-rtx.c (simplify_binary_operation_1, case AND): Result is
19684         zero if no overlap in nonzero bits between the operands.
19685
19686 2009-04-24  Ian Lance Taylor  <iant@google.com>
19687
19688         * combine.c (record_value_for_reg): Change 0 to VOIDmode, twice.
19689         (record_dead_and_set_regs): Likewise.
19690         * df.h (struct df_mw_hardreg): Change flags field to int.
19691         (struct df_base_ref): Likewise.
19692         (struct df): Change changeable_flags field to int.
19693         * df-scan.c (df_defs_record): Change clobber_flags to int.
19694         * dwarf2.h (enum dwarf_tag): Make lo_user and hi_user values enum
19695         constants rather than #define macros.
19696         (enum dwarf_attribute, enum dwarf_location_atom): Likewise.
19697         (enum dwarf_type, enum dwarf_endianity_encoding): Likewise.
19698         (enum dwarf_calling_convention): Likewise.
19699         (enum dwarf_line_number_x_ops): Likewise.
19700         (enum dwarf_call_frame_info): Likewise.
19701         (enum dwarf_source_language): Likewise.
19702         * dwarf2out.c (int_loc_descriptor): Add cast to enum type.
19703         (add_calling_convention_attribute): Likewise.
19704         * fold-const.c (fold_undefer_overflow_warnings): Add cast to enum type.
19705         (combine_comparisons): Change compcode to int.  Add cast to enum type.
19706         * genrecog.c (maybe_both_true_2): Change c to int.
19707         (write_switch): Likewise.  Add cast to enum type.
19708         * gimplify.c (gimplify_omp_for): Handle return values from
19709         gimplify_expr using MIN rather than bitwise or.
19710         (gimplify_expr): Add cast to enum type.
19711         * ipa-prop.c (update_jump_functions_after_inlining): Change
19712         IPA_BOTTOM to IPA_JF_UNKNOWN.
19713         * ira.c (setup_class_subset_and_memory_move_costs): Change mode to int.
19714         Add casts to enum type.
19715         (setup_cover_and_important_classes): Change cl to int.  Add casts
19716         to enum type.
19717         (setup_class_translate): Change cl and mode to int.
19718         (ira_init_once): Change mode to int.
19719         (free_register_move_costs): Likewise.
19720         (setup_prohibited_mode_move_regs): Add casts to enum type.
19721         * langhooks.c (add_builtin_function_common): Rework assertion that
19722         value fits bitfield.
19723         * mcf.c (add_fixup_edge): Change type parameter to edge_type.
19724         * omega.c (omega_do_elimination): Avoid math on enum types.
19725         * optabs.c (expand_vec_shift_expr): Remove casts to int.
19726         * opts.c (set_debug_level): Change 2 to enum constant.  Use new
19727         int local to handle integral_argment value.
19728         * regmove.c (try_auto_increment): Change PUT_MODE to
19729         PUT_REG_NOTE_KIND.
19730         * reload.c (push_secondary_reload): Add casts to enum type.
19731         (secondary_reload_class, find_valid_class): Likewise.
19732         * reload1.c (emit_input_reload_insns): Likewise.
19733         * rtl.h (NOTE_VAR_LOCATION_STATUS): Likewise.
19734         * sel-sched.c (init_hard_regs_data): Change cur_mode to int.
19735         * sel-sched-ir.c (hash_with_unspec_callback): Change 0 to enum
19736         constant.
19737         * tree.c (build_common_builtin_nodes): Add casts to enum type.
19738         * tree-complex.c (complex_lattice_t): Typedef to int rather than
19739         enum type.
19740         (expand_complex_libcall): Add casts to enum type.
19741         * tree-into-ssa.c (get_ssa_name_ann): Change 0 to enum constant.
19742         * tree-vect-loop.c (vect_model_reduction_cost): Compare reduc_code
19743         with ERROR_MARK, not NUM_TREE_CODES.
19744         (vect_create_epilog_for_reduction): Likewise.
19745         (vectorizable_reduction): Don't initialize epiloc_reduc_code.
19746         When not using it, set it to ERROR_MARK rather than NUM_TREE_CODES.
19747         * tree-vect-patterns.c (vect_pattern_recog_1): Change vec_mode to
19748         enum machine_mode.
19749         * tree-vect-stmts.c (new_stmt_vec_info): Change 0 to
19750         vect_unused_in_loop.  Change 0 to loop_vect.
19751         * tree-vectorizer.c (vect_set_verbosity_level): Add casts to enum type.
19752         * var-tracking.c (get_init_value): Change return type to enum
19753         var_init_status.
19754         * vec.h (DEF_VEC_FUNC_P) [iterate]: Cast 0 to type T.
19755         * config/arm/arm.c (fp_model_for_fpu): Change to array to enum
19756         arm_fp_model.
19757         (arm_override_options): Add casts to enum type.
19758         (arm_emit_tls_decoration): Likewise.
19759         * config/i386/i386.c (ix86_function_specific_restore): Add casts
19760         to enum type.
19761         * config/i386/i386-c.c (ix86_pragma_target_parse): Likewise.
19762         * config/ia64/ia64.c (ia64_expand_compare): Change magic to int.
19763         * config/rs6000/rs6000.c (rs6000_override_options): Add casts to
19764         enum type.
19765         * config/s390/s390.c (code_for_builtin_64): Change to array of
19766         enum insn_code.
19767         (code_for_builtin_31): Likewise.
19768         (s390_expand_builtin): Change code_for_builtin to enum insn_code
19769         const *.
19770         * config/sparc/sparc.c (sparc_override_options): Change value
19771         field in struct code_model to enum cmodel.  In initializer change
19772         0 to NULL and add cast to enum type.
19773
19774         * c-typeck.c (build_modify_expr): Add lhs_origtype parameter.
19775         Change all callers.  Issue a -Wc++-compat warning using
19776         lhs_origtype if necessary.
19777         (convert_for_assignment): Issue -Wc++-compat warnings about
19778         invalid conversions to enum type on assignment.
19779         * c-common.h (build_modify_expr): Update declaration.
19780
19781 2009-04-24  Nick Clifton  <nickc@redhat.com>
19782
19783         * config/iq2000/iq2000.c (function_arg): Handle TImode values.
19784         (function_arg_advance): Likewise.
19785         * config/iq2000/iq2000.md (movsi_internal2): Fix the length of the
19786         5th alternative.
19787
19788 2009-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
19789
19790         * config/s390/constraints.md ('I', 'J'): Fix condition.
19791
19792 2009-04-24  Diego Novillo  <dnovillo@google.com>
19793
19794         * gengtype-parse.c (parse_error): Add newline after message.
19795
19796 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
19797
19798         * config/i386/sse.md (avxmodesuffixs): Removed.
19799         (*avx_pinsr<avxmodesuffixs>): Renamed to ...
19800         (*avx_pinsr<ssevecsize>): This.
19801
19802 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
19803
19804         * loop-iv.c (replace_single_def_regs): Look for REG_EQUAL notes;
19805         follow chains of regs with a single definition, and allow expressions
19806         that are function_invariant_p.
19807         (simple_rhs_p): Allow expressions that are function_invariant_p.
19808
19809 2009-04-24  Paolo Bonzini  <bonzini@gnu.org>
19810
19811         PR middle-end/39867
19812         * fold-const.c (fold_cond_expr_with_comparison): When folding
19813         > and >= to MAX, make sure the MAX uses the same type as the
19814         comparison's operands.
19815
19816 2009-04-24  Nick Clifton  <nickc@redhat.com>
19817
19818         * config/frv/frv.c (frv_frame_access): Do not use reg+reg
19819         addressing for DImode accesses.
19820         (frv_print_operand_address): Handle PLUS case.
19821         * config/frv/frv.h (FIXED_REGISTERS): Mark link register as fixed.
19822
19823 2009-04-24  Jakub Jelinek  <jakub@redhat.com>
19824
19825         PR rtl-optimization/39794
19826         * alias.c (canon_true_dependence): Add x_addr argument.
19827         * rtl.h (canon_true_dependence): Adjust prototype.
19828         * cse.c (check_dependence): Adjust canon_true_dependence callers.
19829         * cselib.c (cselib_invalidate_mem): Likewise.
19830         * gcse.c (compute_transp): Likewise.
19831         * dse.c (scan_reads_nospill): Likewise.
19832         (record_store, check_mem_read_rtx): Likewise.  For non-const-or-frame
19833         addresses pass base->val_rtx as mem_addr, for const-or-frame addresses
19834         canon_base_addr of the group, plus optional offset.
19835         (struct group_info): Rename canon_base_mem to
19836         canon_base_addr.
19837         (get_group_info): Set canon_base_addr to canon_rtx of base, not
19838         canon_rtx of base_mem.
19839
19840 2009-04-23  Paolo Bonzini  <bonzini@gnu.org>
19841
19842         * config/sh/sh.c (sh_expand_prologue, sh_expand_epilogue):
19843         Use memory_address_p instead of GO_IF_LEGITIMATE_ADDRESS.
19844
19845 2009-04-23  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
19846
19847         * config/spu/spu-builtins.h: Delete file.
19848
19849         * config/spu/spu.h (enum spu_builtin_type): Move here from
19850         spu-builtins.h.
19851         (struct spu_builtin_description): Likewise.  Add GTY marker.
19852         Do not use enum spu_function_code or enum insn_code.
19853         (spu_builtins): Add extern declaration.
19854
19855         * config/spu/spu.c: Do not include "spu-builtins.h".
19856         (enum spu_function_code, enum spu_builtin_type_index,
19857         V16QI_type_node, V8HI_type_node, V4SI_type_node, V2DI_type_node,
19858         V4SF_type_node, V2DF_type_node, unsigned_V16QI_type_node,
19859         unsigned_V8HI_type_node, unsigned_V4SI_type_node,
19860         unsigned_V2DI_type_node): Move here from spu-builtins.h.
19861         (spu_builtin_types): Make static.  Add GTY marker.
19862         (spu_builtins): Add extern declaration with GTY marker.
19863         Include "gt-spu.h".
19864
19865         * config/spu/spu-c.c: Do not include "spu-builtins.h".
19866         (spu_resolve_overloaded_builtin): Do not use spu_function_code.
19867         Check programmatically whether all parameters are scalar.
19868
19869         * config/spu/t-spu-elf (spu.o, spu-c.o): Update dependencies.
19870
19871 2009-04-23  Eric Botcazou  <ebotcazou@adacore.com>
19872
19873         * gimplify.c (gimplify_modify_expr_rhs) <VAR_DECL>: Do not do a direct
19874         assignment from the constructor either if the target is volatile.
19875
19876 2009-04-23  Daniel Jacobowitz  <dan@codesourcery.com>
19877
19878         * config/arm/arm.md (insv): Do not share operands[0].
19879
19880 2009-04-23  Nathan Sidwell  <nathan@codesourcery.com>
19881
19882         * config/vxlib-tls.c (active_tls_threads): Delete.
19883         (delete_hook_installed): New.
19884         (tls_delete_hook): Don't delete the delete hook.
19885         (tls_destructor): Delete it here.
19886         (__gthread_set_specific): Adjust installing the delete hook.
19887         (tls_delete_hook): Use __gthread_enter_tsd_dtor_context and
19888         __gthread_leave_tsd_dtor_context.
19889
19890 2009-04-23  Rafael Avila de Espindola  <espindola@google.com>
19891
19892         * c-format.c (gcc_tdiag_char_table): Add support for %E.
19893
19894 2009-04-23  Uros Bizjak  <ubizjak@gmail.com>
19895
19896         * config/alpha/alpha.c (alpha_legitimize_reload_address): Add cast to
19897         enum type.
19898         (alpha_rtx_costs): Ditto.
19899         (emit_unlikely_jump): Use add_reg_note.
19900         (emit_frame_store_1): Ditto.
19901         (alpha_expand_prologue): Ditto.
19902         (alpha_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
19903         * config/alpha/alpha.c (Unicos/Mk address splitter): Use add_reg_note.
19904
19905 2009-04-23  Nick Clifton  <nickc@redhat.com>
19906
19907         * config/v850/v850.md (epilogue): Remove suppressed code.
19908         (return): Rename to return_simple and remove test of frame size.
19909         * config/v850/v850.c (expand_epilogue): Rename call to gen_return
19910         to gen_return_simple.
19911
19912 2009-04-22  Jing Yu  <jingyu@google.com>
19913
19914         PR testsuite/39781
19915         * config/arm/arm.h: Define HANDLE_PRAGMA_PACK_PUSH_POP.
19916
19917 2009-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
19918
19919         PR C/31499
19920         * c-typeck.c (process_init_element): Treat VECTOR_TYPE like ARRAY_TYPE
19921         and RECORD_TYPE/UNION_TYPE.  When outputing the actual element and the
19922         value is a VECTOR_CST, the element type is the element type of the
19923         vector.
19924
19925 2009-04-22  DJ Delorie  <dj@redhat.com>
19926
19927         * config/m32c/m32c.h: Update GTY annotations to new syntax.
19928
19929 2009-04-22  Jakub Jelinek  <jakub@redhat.com>
19930
19931         * alias.c (find_base_term): Move around LO_SUM case, so that
19932         CONST falls through into PLUS/MINUS handling.
19933
19934         PR c/39855
19935         * fold-const.c (fold_binary) <case LSHIFT_EXPR>: When optimizing
19936         into 0, use omit_one_operand.
19937
19938 2009-04-23  Ben Elliston  <bje@au.ibm.com>
19939
19940         * config/rs6000/linux-unwind.h (get_regs): Remove type
19941         puns. Change the type of `pc' to an array of unsigned ints and
19942         update all users.  Constify frame24.
19943
19944 2009-04-22  DJ Delorie  <dj@redhat.com>
19945
19946         * config/m32c/m32c.c (m32c_special_page_vector_p): Move
19947         declarations before code.
19948         (current_function_special_page_vector): Likewise.
19949         (m32c_expand_insv): Silence a warning.
19950
19951 2009-04-21  Taras Glek  <tglek@mozilla.com>
19952
19953         * alias.c: Update GTY annotations to new syntax.
19954         * basic-block.h: Likewise.
19955         * bitmap.h: Likewise.
19956         * c-common.h: Likewise.
19957         * c-decl.c: Likewise.
19958         * c-parser.c: Likewise.
19959         * c-pragma.c: Likewise.
19960         * c-tree.h: Likewise.
19961         * cfgloop.h: Likewise.
19962         * cgraph.h: Likewise.
19963         * config/alpha/alpha.c: Likewise.
19964         * config/arm/arm.h: Likewise.
19965         * config/avr/avr.h: Likewise.
19966         * config/bfin/bfin.c: Likewise.
19967         * config/cris/cris.c: Likewise.
19968         * config/darwin.c: Likewise.
19969         * config/frv/frv.c: Likewise.
19970         * config/i386/i386.c: Likewise.
19971         * config/i386/i386.h: Likewise.
19972         * config/i386/winnt.c: Likewise.
19973         * config/ia64/ia64.h: Likewise.
19974         * config/iq2000/iq2000.c: Likewise.
19975         * config/mips/mips.c: Likewise.
19976         * config/mmix/mmix.h: Likewise.
19977         * config/pa/pa.c: Likewise.
19978         * config/pa/pa.h: Likewise.
19979         * config/rs6000/rs6000.c: Likewise.
19980         * config/s390/s390.c: Likewise.
19981         * config/sparc/sparc.c: Likewise.
19982         * config/xtensa/xtensa.c: Likewise.
19983         * cselib.h: Likewise.
19984         * dbxout.c: Likewise.
19985         * dwarf2out.c: Likewise.
19986         * except.c: Likewise.
19987         * except.h: Likewise.
19988         * fixed-value.h: Likewise.
19989         * function.c: Likewise.
19990         * function.h: Likewise.
19991         * gimple.h: Likewise.
19992         * integrate.c: Likewise.
19993         * optabs.c: Likewise.
19994         * output.h: Likewise.
19995         * real.h: Likewise.
19996         * rtl.h: Likewise.
19997         * stringpool.c: Likewise.
19998         * tree-data-ref.c: Likewise.
19999         * tree-flow.h: Likewise.
20000         * tree-scalar-evolution.c: Likewise.
20001         * tree-ssa-address.c: Likewise.
20002         * tree-ssa-alias.h: Likewise.
20003         * tree-ssa-operands.h: Likewise.
20004         * tree.c: Likewise.
20005         * tree.h: Likewise.
20006         * varasm.c: Likewise.
20007         * varray.h: Likewise.
20008         * vec.h: Likewise.
20009         * coretypes.h: Do not define GTY macro if it is already defined.
20010         * doc/gty.texi: Update GTY documentation to new syntax.
20011         * gengtype-lex.l: Enforce attribute-like syntax for GTY
20012         annotations on structs.
20013         * gengtype-parse.c: Likewise.
20014
20015 2009-04-22  Mark Heffernan  <meheff@google.com>
20016
20017         * gcc.c (LINK_COMMAND_SPEC): Link with gcov with -fprofile-generate=.
20018
20019 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
20020
20021         * config/arm/arm.c (arm_rtx_costs_1): Use power_of_two_operand
20022         where appropriate.
20023
20024 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
20025
20026         * config/arm/arm.c (arm_size_rtx_costs): Treat a PLUS with a shift
20027         the same as a PLUS without a shift.  Increase the cost of a
20028         CONST_INT in MULT.
20029
20030 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
20031
20032         * Makefile.in: Update dependencies.
20033         * errors.c (warning): Remove unused parameter 'opt'. Returns 'void'.
20034         * errors.h: Remove bogus comment about compatibility.
20035         (warning): Update declaration.
20036         * genautomata.c: Update all calls to warning.
20037         * gimple.c: Do not include errors.h. Include toplev.h.
20038         * tree-ssa-structalias.c: Do not include errors.h.
20039         * omega.c: Likewise.
20040         * tree-ssa-reassoc.c: Likewise.
20041         * config/spu/spu-c.c: Likewise.
20042         * config/spu/t-spu-elf: Update dependencies.
20043
20044 2009-04-22  Richard Guenther  <rguenther@suse.de>
20045
20046         PR tree-optimization/39824
20047         * tree-ssa-ccp.c (fold_const_aggregate_ref): For INDIRECT_REFs
20048         make sure the types are compatible.
20049
20050 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
20051
20052         PR c++/14875
20053         * c-common.c (c_parse_error): Take a token_flags parameter.
20054         Use token_type for the token type instead.
20055         Pass token_flags to cpp_type2name.
20056         * c-common.h (c_parse_error): Update declaration.
20057         * c-parser.c (c_parser_error): Pass 0 as token flags.
20058
20059 2009-04-22  Andrey Belevantsev  <abel@ispras.ru>
20060
20061         PR rtl-optimization/39580
20062         * sel-sched-ir.c (insert_in_history_vect): Remove incorrect gcc_assert.
20063
20064 2009-04-22  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
20065
20066         * function.c (expand_function_end): Do not emit a jump to the "naked"
20067         return label for fall-through returns.
20068         * except.c (sjlj_emit_function_exit): Always place the call to the
20069         unregister function at the location installed by expand_function_end.
20070
20071 2009-04-22  Richard Guenther  <rguenther@suse.de>
20072
20073         PR tree-optimization/39845
20074         * tree-switch-conversion.c (build_arrays): Add new referenced vars.
20075         (gen_inbound_check): Likewise.
20076
20077 2009-04-22  Nathan Sidwell  <nathan@codesourcery.com>
20078
20079         * gthr-vxworks.h (struct __gthread_once_t): Add alignment and
20080         padding for PPC.
20081         (__GTHREAD_ONCE_INIT): Adjust ppc initializer.
20082         * config/vxlib.c (__gthread_once): Add race guard for PPC.
20083
20084 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
20085
20086         * config/sh/sh.c (shift_insns_rtx, shiftcosts, gen_shifty_op,
20087         sh_dynamicalize_shift_p, shl_and_scr_length): Truncate
20088         shift counts to avoid out-of-bounds array accesses.
20089
20090 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
20091
20092         * config/sparc/sparc.h (POINTER_SIZE): Fix comment.
20093         (Pmode): Move above.
20094
20095 2009-04-22  Uros Bizjak  <ubizjak@gmail.com>
20096
20097         * config/alpha/alpha.c: Use REG_P, MEM_P, CONST_INT_P, JUMP_P,
20098         NONJUMP_INSN_P, CALL_P, LABEL_P and NOTE_P predicates instead of
20099         GET_CODE macro.  Use IN_RANGE macro where appropriate.
20100         * config/alpha/alpha.h: Ditto.
20101         * config/alpha/alpha.md: Ditto.
20102         * config/alpha/constraints.md: Ditto.
20103         * config/alpha/predicates.md: Ditto.
20104
20105 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
20106
20107         * defaults.h (GO_IF_MODE_DEPENDENT_ADDRESS): Provide empty default.
20108         * config/frv/frv.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
20109         * config/s390/s390.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
20110         * config/m32c/m32c.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
20111         * config/spu/spu.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
20112         * config/i386/i386.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
20113         * config/sh/sh.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
20114         * config/pdp11/pdp11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
20115         * config/avr/avr.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
20116         * config/crx/crx.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
20117         * config/fr30/fr30.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
20118         * config/m68hc11/m68hc11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
20119         * config/cris/cris.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
20120         * config/iq2000/iq2000.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
20121         * config/mn10300/mn10300.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
20122         * config/ia64/ia64.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
20123         * config/m68k/m68k.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
20124         * config/picochip/picochip.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
20125         * config/arc/arc.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
20126         * config/mcore/mcore.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
20127         * config/score/score.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
20128         * config/arm/arm.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
20129         * config/pa/pa.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
20130         * config/mips/mips.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
20131         * config/v850/v850.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
20132         * config/mmix/mmix.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
20133         * config/bfin/bfin.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
20134
20135 2009-04-22  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
20136
20137         * cfghooks.c (tidy_fallthru_edges): Remove find_basic_blocks
20138         references from comments.
20139         * cfgbuild.c: (count_basic_blocks): Delete.
20140         (find_basic_blocks_1): Delete.
20141         (find_basic_blocks): Delete.
20142         * except.c (finish_eh_generation): Make static.  Move comment from
20143         except.h here.  Remove find_basic_blocks references from comments.
20144         * except.h (finish_eh_generation): Delete.
20145         * basic-block.h (find_basic_blocks): Delete.
20146         * config/sh/sh.c (sh_output_mi_thunk): Delete a "#if 0" block.
20147
20148 2009-04-22  Dave Korn  <dave.korn.cygwin@gmail.com>
20149
20150         * sdbout.c (sdbout_symbol):  Pass VOIDmode to eliminate_regs.
20151         (sdbout_parms):  Likewise.
20152
20153 2009-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
20154
20155         * config/sh/sh.c (prepare_cbranch_operands): Use
20156         LAST_AND_UNUSED_RTX_CODE instead of CODE_FOR_nothing.
20157         (expand_cbranchdi4): Likewise.
20158         (from_compare): Add cast to enum type.
20159         (expand_cbranchsi4): Use add_reg_note.
20160         (output_stack_adjust, push, pop, sh_expand_prologue): Likewise.
20161         (sh_insn_length_adjustment): Use sh_cpu_attr instead of sh_cpu.
20162         (sh_initialize_trampoline): Change 0 to LCT_NORMAL in function call.
20163         (sh_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
20164         * config/sh/sh.md (cbranchsi4): Use LAST_AND_UNUSED_RTX_CODE
20165         instead of CODE_FOR_nothing.
20166         (cbranchdi4): Likewise.  Fix the order of arguments for
20167         gen_rtx_fmt_ee.
20168         (push_fpscr): Use add_reg_note.
20169         (pop_fpscr, movdf_i4+1, reload_outdf__RnFRm+3, reload_outdf__RnFRm+4,
20170         reload_outdf__RnFRm+5, fpu_switch+1, fpu_switch+2): Likewise.
20171
20172 2009-04-21  Joseph Myers  <joseph@codesourcery.com>
20173
20174         * ABOUT-GCC-NLS, ChangeLog, ChangeLog-1997, ChangeLog-1998,
20175         ChangeLog-1999, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
20176         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
20177         ChangeLog-2007, ChangeLog-2008, ChangeLog.dataflow, ChangeLog.lib,
20178         ChangeLog.ptr, ChangeLog.tree-ssa, ChangeLog.tuples, FSFChangeLog,
20179         FSFChangeLog.10, FSFChangeLog.11, LANGUAGES, ONEWS, acinclude.m4,
20180         config/alpha/gnu.h, config/alpha/libgcc-alpha-ldbl.ver,
20181         config/alpha/t-osf4, config/alpha/t-vms, config/alpha/va_list.h,
20182         config/alpha/x-vms, config/arc/t-arc,
20183         config/arm/README-interworking, config/arm/arm-c.c,
20184         config/arm/gentune.sh, config/arm/libgcc-bpabi.ver,
20185         config/arm/t-arm, config/arm/t-arm-elf, config/arm/t-arm-softfp,
20186         config/arm/t-bpabi, config/arm/t-linux, config/arm/t-linux-eabi,
20187         config/arm/t-netbsd, config/arm/t-pe, config/arm/t-strongarm-elf,
20188         config/arm/t-symbian, config/arm/t-vxworks, config/arm/t-wince-pe,
20189         config/avr/t-avr, config/bfin/elf.h, config/bfin/libgcc-bfin.ver,
20190         config/bfin/linux.h, config/bfin/t-bfin, config/bfin/t-bfin-elf,
20191         config/bfin/t-bfin-linux, config/bfin/t-bfin-uclinux,
20192         config/bfin/uclinux.h, config/cris/mulsi3.asm, config/cris/t-cris,
20193         config/cris/t-elfmulti, config/crx/t-crx,
20194         config/darwin-ppc-ldouble-patch.def, config/darwin-sections.def,
20195         config/divmod.c, config/fr30/t-fr30, config/frv/libgcc-frv.ver,
20196         config/frv/t-frv, config/frv/t-linux, config/h8300/genmova.sh,
20197         config/h8300/t-h8300, config/i386/athlon.md,
20198         config/i386/darwin-libgcc.10.4.ver,
20199         config/i386/darwin-libgcc.10.5.ver, config/i386/libgcc-glibc.ver,
20200         config/i386/mach.h, config/i386/netbsd.h, config/i386/t-crtpc,
20201         config/i386/t-cygming, config/i386/t-cygwin, config/i386/t-i386,
20202         config/i386/t-linux64, config/i386/t-nwld,
20203         config/i386/t-rtems-i386, config/i386/t-sol2-10,
20204         config/i386/x-mingw32, config/ia64/div.md, config/ia64/elf.h,
20205         config/ia64/ia64.opt, config/ia64/libgcc-glibc.ver,
20206         config/ia64/libgcc-ia64.ver, config/ia64/linux.h,
20207         config/ia64/sysv4.h, config/ia64/t-hpux, config/ia64/t-ia64,
20208         config/iq2000/abi, config/iq2000/lib2extra-funcs.c,
20209         config/iq2000/t-iq2000, config/libgcc-glibc.ver,
20210         config/m32r/libgcc-glibc.ver, config/m32r/t-linux,
20211         config/m32r/t-m32r, config/m68hc11/t-m68hc11,
20212         config/m68k/t-floatlib, config/m68k/t-linux, config/m68k/t-mlibs,
20213         config/m68k/t-uclinux, config/mcore/t-mcore,
20214         config/mcore/t-mcore-pe, config/mips/20kc.md, config/mips/4130.md,
20215         config/mips/5400.md, config/mips/5500.md, config/mips/crti.asm,
20216         config/mips/crtn.asm, config/mips/irix-crti.asm,
20217         config/mips/irix-crtn.asm, config/mips/libgcc-mips16.ver,
20218         config/mips/mips-dsp.md, config/mips/mips-dspr2.md,
20219         config/mips/mips-fixed.md, config/mips/sb1.md,
20220         config/mips/sr71k.md, config/mips/t-elf, config/mips/t-gofast,
20221         config/mips/t-iris6, config/mips/t-isa3264,
20222         config/mips/t-libgcc-mips16, config/mips/t-linux64,
20223         config/mips/t-mips, config/mips/t-r3900, config/mips/t-rtems,
20224         config/mips/t-sb1, config/mips/t-sde, config/mips/t-sdemtk,
20225         config/mips/t-slibgcc-irix, config/mips/t-sr71k, config/mips/t-st,
20226         config/mips/t-vr, config/mips/t-vxworks, config/mmix/t-mmix,
20227         config/mn10300/t-linux, config/mn10300/t-mn10300,
20228         config/pa/pa32-regs.h, config/pa/t-hpux-shlib, config/pa/t-linux,
20229         config/pa/t-linux64, config/pa/t-pa64, config/pdp11/t-pdp11,
20230         config/picochip/libgccExtras/clzsi2.asm,
20231         config/picochip/t-picochip, config/rs6000/darwin-ldouble-format,
20232         config/rs6000/darwin-libgcc.10.4.ver,
20233         config/rs6000/darwin-libgcc.10.5.ver,
20234         config/rs6000/libgcc-ppc-glibc.ver, config/rs6000/ppc-asm.h,
20235         config/rs6000/t-aix43, config/rs6000/t-aix52,
20236         config/rs6000/t-darwin, config/rs6000/t-fprules,
20237         config/rs6000/t-fprules-fpbit, config/rs6000/t-linux64,
20238         config/rs6000/t-lynx, config/rs6000/t-netbsd,
20239         config/rs6000/t-ppccomm, config/rs6000/t-ppcendian,
20240         config/rs6000/t-ppcgas, config/rs6000/t-rs6000,
20241         config/rs6000/t-rtems, config/rs6000/t-spe,
20242         config/rs6000/t-vxworks, config/s390/libgcc-glibc.ver,
20243         config/score/t-score-elf, config/sh/divcost-analysis,
20244         config/sh/libgcc-glibc.ver, config/sh/t-netbsd, config/sh/t-sh,
20245         config/sh/t-sh64, config/sh/t-superh, config/sh/t-symbian,
20246         config/sparc/libgcc-sparc-glibc.ver, config/sparc/sol2-bi.h,
20247         config/sparc/sol2-gas.h, config/sparc/sol2-gld-bi.h,
20248         config/sparc/t-elf, config/sparc/t-linux64, config/sparc/t-sol2,
20249         config/stormy16/stormy-abi, config/stormy16/t-stormy16,
20250         config/t-darwin, config/t-libunwind, config/t-libunwind-elf,
20251         config/t-linux, config/t-lynx, config/t-slibgcc-elf-ver,
20252         config/t-slibgcc-sld, config/t-sol2, config/t-vxworks,
20253         config/udivmod.c, config/udivmodsi4.c, config/v850/t-v850,
20254         config/v850/t-v850e, config/xtensa/t-xtensa, diagnostic.def,
20255         gdbinit.in, glimits.h, gstab.h, gsyms.h, java/ChangeLog,
20256         java/ChangeLog.ptr, java/ChangeLog.tree-ssa, libgcc-std.ver,
20257         limitx.h, version.c, xcoff.h: Add copyright and license notices.
20258         * config/h8300/genmova.sh: Include copyright and license notices
20259         in generated output.
20260         * config/h8300/mova.md: Regenerate.
20261         * doc/install.texi2html: Include word "Copyright" in copyright
20262         notice and use name "Free Software Foundation, Inc.".
20263         * ChangeLog, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
20264         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
20265         ChangeLog-2007, ChangeLog-2008: Correct dates.
20266
20267 2009-04-21  Eric Botcazou  <ebotcazou@adacore.com>
20268
20269         * c-common.c (c_common_truthvalue_conversion): Use LOCATION to build
20270         NE_EXPR operations as well.
20271         * c-parser.c (c_parser_condition): Do not set location information on
20272         the condition.
20273         (c_parser_conditional_expression): Likewise.
20274         (c_parser_binary_expression): Set location information on operators.
20275         * c-typeck.c (build_unary_op) <TRUTH_NOT_EXPR>: Reset the location if
20276         TRUTH_NOT_EXPR has been folded.
20277         * fold-const.c (fold_truth_not_expr): Copy location information from
20278         the incoming expression to the outgoing one.
20279         * gimplify.c (shortcut_cond_r): Add locus parameter.  Pass it to
20280         recursive calls on the LHS of the operator but pass that of the
20281         operator to recursive calls on the RHS of the operator.  Set it
20282         on the COND_EXPR.
20283         (shortcut_cond_expr): Set the locus of the operator on the second
20284         COND_EXPR and that of the expression on the first in degenerate cases.
20285         Pass the locus of the expression to calls to shortcut_cond_r.
20286         Set the locus of the 'then' block on the associated jump, if any.
20287         (gimplify_boolean_expr): Add locus parameter.  Set it on the COND_EXPR.
20288         (gimplify_expr) <TRUTH_ANDIF_EXPR>: Pass the locus of the outer
20289         expression to call to gimplify_boolean_expr.
20290
20291 2009-04-21  Kai Tietz  <kai.tietz@onevision.com>
20292
20293         * config.gcc: Add additional configuration for
20294         i686-w64-mingw* and x86_64-w64-mingw* triplet.
20295         * config/i386/mingw-w64.h: New mingw-w64 specific header.
20296         (CPP_SPEC): Redefine for allowing -municode option.
20297         (STARTFILE_SPEC): Likewise.
20298         * config/i386/t-mingw-w64: New.
20299         * config/i386/mingw-w64.opt: New.
20300         (municode): Add new target option.
20301         * doc/invoke.texi (municode): Add documentation for new option.
20302
20303 2009-04-21  Ian Lance Taylor  <iant@google.com>
20304
20305         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
20306         Correct test for number of arguments.
20307         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Likewise.
20308
20309 2009-04-21  Andreas Schwab  <schwab@linux-m68k.org>
20310
20311         * config/m68k/linux.h (FINALIZE_TRAMPOLINE): Use enum for second
20312         argument of emit_library_call.
20313
20314 2009-04-21  Richard Guenther  <rguenther@suse.de>
20315
20316         PR middle-end/39829
20317         * gimple.c (walk_stmt_load_store_addr_ops): Catch addresses
20318         inside VIEW_CONVERT_EXPRs.
20319
20320 2009-04-21  Martin Jambor  <mjambor@suse.cz>
20321
20322         * tree-switch-conversion.c (build_constructors): Split a long line.
20323         (constructor_contains_same_values_p): New function.
20324         (build_one_array): Create assigns of constants if possible, do not
20325         call mark_sym_for_renaming, call update_stmt.
20326         (build_arrays): Call make_ssa_name (create_tmp_var ()) instead of
20327         make_rename_temp.  Do not call mark_symbols_for_renaming, call
20328         update_stmt.
20329         (gen_def_assigns): Do not call mark_symbols_for_renaming or
20330         find_new_referenced_vars, call update_stmt.
20331         (gen_inbound_check): Use create_tmp_var and create ssa names manually
20332         instead of calling make_rename_temp.  Do not call
20333         find_new_referenced_vars or mark_symbols_for_renaming, call
20334         update_stmt.
20335
20336 2009-04-21  Richard Guenther  <rguenther@suse.de>
20337
20338         PR tree-optimization/39827
20339         * tree-ssa-phiprop.c (propagate_with_phi): Check SSA_NAME is in range.
20340         (tree_ssa_phiprop): Pass the correct array size.
20341
20342 2009-04-21  Uros Bizjak  <ubizjak@gmail.com>
20343
20344         * config/alpha/alpha.md (tune): Add cast to enum attr_tune.
20345
20346 2009-04-21  Manuel López-Ibáñez  <manu@gcc.gnu.org>
20347
20348         PR 16202
20349         * c-typeck.c (lvalue_p): Move declaration ...
20350         * c-common.h (lvalue_p): ... to here.
20351         * c-common.c (candidate_equal_p): New.
20352         (add_tlist): Use it.
20353         (merge_tlist): Use it.
20354         (warn_for_collisions_1): Likewise.
20355         (warning_candidate_p): Accept more candidates.
20356         (verify_tree): A warning candidate can be an expression. Use
20357         candidate_equal_p.
20358
20359 2009-04-21  Ben Elliston  <bje@au.ibm.com>
20360
20361         PR target/5267
20362         * doc/invoke.texi (RS/6000 and PowerPC Options): Add documentation
20363         for -mcall-eabi, -mcall-aixdesc, -mcall-freebsd and -mcall-openbsd
20364         options.  Remove -mcall-solaris documentation.
20365
20366 2009-04-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
20367
20368         PR c++/13358
20369         * doc/invoke.texi (-Wlong-long): Update description.
20370         * c-lex (interpret_integer): Only warn if there was no previous
20371         overflow and -Wlong-long is enabled.
20372         * c-decl.c (declspecs_add_type): Drop redundant flags.
20373         * c.opt (Wlong-long): Init to -1.
20374         * c-opts.c (sanitize_cpp_opts): Synchronize cpp's warn_long_long
20375         and front-end warn_long_long. Wlong-long only depends on other
20376         flags if it is uninitialized.
20377         * c-parser.c (disable_extension_diagnostics): warn_long_long is
20378         the same for CPP and FE.
20379         (restore_extension_diagnostics): Likewise.
20380
20381 2009-04-20  Ian Lance Taylor  <iant@google.com>
20382
20383         Fix enum conversions which are invalid in C++:
20384         * auto-inc-dec.c (attempt_change): Change 0 to SET in function call.
20385         * calls.c (store_one_arg): Change 0 to EXPAND_NORMAL in function call.
20386         * cse.c (hash_rtx_cb): Change 0 to VOIDmode in function call.
20387         * dbgcnt.c (dbg_cnt_set_limit_by_name): Add cast to enum type.
20388         * dbxout.c (dbxout_symbol): Change 0 to VOIDmode in function call.
20389         (dbxout_parms): Likewise.
20390         * df-core.c (df_set_flags): Change changeable_flags parameter to int.
20391         (df_clear_flags): Likewise.
20392         * df-problems.c (df_rd_bb_local_compute_process_def): Change
20393         top_flag parameter to int.
20394         (df_chain_create_bb_process_use): Likewise.
20395         (df_chain_add_problem): Change chain_flags parameter to unsigned int.
20396         Remove cast.
20397         * df-scan.c (df_ref_create): Change ref_flags parameter to int.
20398         (df_ref_create_structure, df_def_record_1): Likewise.
20399         (df_defs_record, df_uses_record, df_get_call_refs): Likewise.
20400         (df_notes_rescan): Change 0 to VOIDmode in function call.
20401         (df_get_call_refs, df_insn_refs_collect): Likewise.
20402         (df_bb_regs_collect): Likewise.
20403         (df_entry_block_defs_collect): Likewise.
20404         (df_exit_block_uses_collect): Likewise.
20405         * df.h: Update declarations.
20406         * double-int.c (double_int_divmod): Add cast to enum type.
20407         * dse.c (replace_inc_dec): Reverse parameters to gen_int_mode.
20408         * dwarf2out.c (new_reg_loc_descr): Add casts to enum type.
20409         (based_loc_descr): Likewise.
20410         (loc_descriptor_from_tree_1): Change first_op and second_op to
20411         enum dwarf_location_atom.  Add cast to enum type.
20412         * expmed.c (init_expmed): Change 0 to SET in function call.
20413         * expr.c (init_expr_target): Change 0 to VOIDmode in function call.
20414         (expand_expr_real_1): Change 0 to EXPAND_NORMAL in function call.
20415         (do_store_flag): Likewise.
20416         * fixed-value.h (struct fixed_value): Change mode to enum
20417         machine_mode.
20418         * function.c (assign_parms): Change 0 to VOIDmode in function call.
20419         * genautomata.c (insert_automaton_decl): Change 1 to INSERT in
20420         function call.
20421         (insert_insn_decl, insert_decl, insert_state): Likewise.
20422         (automata_list_finish): Likewise.
20423         * genrecog.c (process_define_predicate): Add cast to enum type.
20424         * gensupport.c (init_predicate_table): Add cast to enum type.
20425         * gimple.c (gimple_build_return): Change 0 to ERROR_MARK in
20426         function call.
20427         (gimple_build_call_1, gimple_build_label): Likewise.
20428         (gimple_build_goto, gimple_build_asm_1): Likewise.
20429         (gimple_build_switch_1, gimple_build_cdt): Likewise.
20430         * gimple.h (GIMPLE_CHECK): Change 0 to ERROR_MARK in function call.
20431         (enum fallback): Rename from enum fallback_t.
20432         (fallback_t): Typedef as int.
20433         * gimple-low.c (lower_builtin_setjmp): Change TSI_SAME_STMT to
20434         GSI_SAME_STMT in function call.
20435         * ira.c (setup_class_subset_and_memory_move_costs): Add casts to
20436         enum type.
20437         (setup_reg_class_relations): Likewise.
20438         (setup_reg_class_nregs): Change cl to int.  Add casts to enum type.
20439         (setup_prohibited_class_mode_regs): Add cast to enum type.
20440         (setup_prohibited_mode_move_regs): Likewise.
20441         * ira-costs.c (record_reg_classes): Change rclass to enum reg_class.
20442         (record_address_regs): Change i to enum reg_class.
20443         * lists.c (alloc_EXPR_LIST): Add cast to enum type.
20444         * machmode.h (GET_MODE_CLASS): Cast value to enum mode_class.
20445         (GET_MODE_WIDER_MODE): Cast value to enum machine_mode.
20446         (GET_MODE_2XWIDER_MODE): Likewise.
20447         (GET_CLASS_NARROWEST_MODE): Likewise.
20448         * omp-low.c (expand_omp_for): Add cast to enum type.
20449         * optabs.c (debug_optab_libfuncs): Add casts to enum type.
20450         * opts.c (enable_warning_as_error): Change kind to diagostic_t.
20451         * postreload.c (reload_cse_simplify_operands): Change rclass local
20452         to enum reg_class.
20453         * predict.c (combine_predictions_for_insn): Change best_predictor
20454         and predictor to enum br_predictor.
20455         (combine_predictions_for_bb): Likewise.
20456         (build_predict_expr): Change assignment to PREDICT_EXPR_OUTCOME to
20457         use SET_PREDICT_EXPR_OUTCOME.
20458         * real.c (real_arithmetic): Change icode to code in function call.
20459         * reginfo.c (init_move_cost): Add casts to enum type.
20460         (init_reg_sets_1, init_fake_stack_mems): Likewise.
20461         * regmove.c (regclass_compatible_p): Change class0 and class1 to
20462         enum reg_class.
20463         * reload.c (find_valid_class): Add casts to enum type.
20464         (push_reload): Change 0 to NO_REGS in function call.
20465         (find_reloads): Change this_alternative to array of enum
20466         reg_class.  Remove some now-unnecessary casts.
20467         (make_memloc): Change 0 to VOIDmode in function call.
20468         * reload1.c (reload): Change 0 to VOIDmode in function call.
20469         (eliminate_regs_1, elimination_effects): Likewise.
20470         (eliminate_regs_in_insn): Likewise.
20471         (emit_input_reload_insns): Add cast to enum type.
20472         (delete_output_reload): Change 0 to VOIDmode in function call.
20473         * reorg.c (insn_sets_resource_p): Convert include_delayed_effects
20474         to enum type in function call.
20475         * tree.h (PREDICT_EXPR_OUTCOME): Add cast to enum type.
20476         (SET_PREDICT_EXPR_OUTCOME): Define.
20477         * tree-dump.c (get_dump_file_info): Change phase parameter to int.
20478         (get_dump_file_name, dump_begin, dump_enabled_p): Likewise.
20479         (dump_initialized_p, dump_flag_name, dump_end): Likewise.
20480         (dump_function): Likewise.
20481         * tree-dump.h: Update declarations.
20482         * tree-pass.h: Update declarations.
20483         * varasm.c (assemble_integer): Change mclass to enum mode_class.
20484         * config/arm/arm.c (thumb_legitimize_reload_address): Add cast to
20485         enum type.
20486         (arm_rtx_costs_1): Correct parenthesization.
20487         (arm_rtx_costs): Add casts to enum type.
20488         (adjacent_mem_locations): Reverse arguments to const_ok_for_op.
20489         (vfp_emit_fstmd): Use add_rg_note.
20490         (emit_multi_reg_push, emit_sfm): Likewise.
20491         (thumb_set_frame_pointer): Likewise.
20492         (arm_expand_prologue): Likewise.
20493         (arm_regno_class): Change return type to enum reg_class.
20494         (thumb1_expand_prologue): Use add_reg_note.
20495         * config/arm/arm-protos.h (arm_regno_class): Update declaration.
20496         * config/arm/arm.h (INITIALIZE_TRAMPOLINE): Change 0 to LCT_NORMAL
20497         in function call.
20498         * config/arm/gentune.sh: Add cast to enum type.
20499         * config/arm/arm-tune.md: Rebuild.
20500         * config/i386/i386.c (ix86_expand_prologue): Use add_reg_note.
20501         (ix86_split_fp_branch, predict_jump): Likewise.
20502         (ix86_expand_multi_arg_builtin): Change sub_code from enum
20503         insn_code to enum rtx_code.
20504         (ix86_builtin_vectorized_function): Add cast to enum type.
20505         * config/i386/i386.md (truncdfsf2): Change slot to enum
20506         ix86_stack_slot.
20507         (truncxf<mode>2, isinf<mode>2): Likewise.
20508         * config/i386/i386-c.c (ix86_pragma_target_parse): Add cast to
20509         enum type.
20510         * config/ia64/ia64.c (ia64_split_tmode_move): Use add_reg_note.
20511         (spill_restore_mem, do_spill, ia64_expand_prologue): Likewise.
20512         (insert_bundle_state): Change 1 to INSERT in function call.
20513         (ia64_add_bundle_selector_before): Likewise.
20514         * config/ia64/ia64.md (cpu attr): Add cast to enum type.
20515         (save_stack_nonlocal): Change 0 to LCT_NORMAL in function call.
20516         (restore_stack_nonlocal): Likewise.
20517         * config/mips/mips.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL in
20518         function call.
20519         * config/mips/mips.c (mips_binary_cost): Change 0 to SET in
20520         function call.
20521         (mips_rtx_costs): Likewise.
20522         (mips_override_options): Add casts to enum type.
20523         * config/mips/sdemtk.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL
20524         in function call.
20525         * config/pa/pa.c (legitimize_pic_address): Use add_reg_note.
20526         (store_reg, set_reg_plus_d): Likewise.
20527         (hppa_expand_prologue, hppa_profile_hook): Likewise.
20528         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Add
20529         cast to enum type.
20530         (altivec_expand_vec_set_builtin): Change 0 to EXPAND_NORMAL in
20531         function call.
20532         (emit_unlikely_jump): Use add_reg_note.
20533         (rs6000_emit_allocate_stack): Likewise.
20534         (rs6000_frame_related, rs6000_emit_prologue): Likewise.
20535         (output_toc): Change 1 to INSERT in function call.
20536         (output_profile_hook): Change 0 to LCT_NORMAL in function call.
20537         (rs6000_initialize_trampoline): Likewise.
20538         (rs6000_init_dwarf_reg_sizes_extra): Change 0 to EXPAND_NORMAL in
20539         function call.
20540         * config/s390/s390.c (s390_rtx_costs): Add cast to enum type.
20541         (s390_expand_movmem): Change 0 to OPTAB_DIRECT in function call.
20542         (s390_expand_setmem, s390_expand_cmpmem): Likewise.
20543         (save_gprs): Use add_reg_note.
20544         (s390_emit_prologue): Likewise.
20545         (s390_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
20546         * config/sparc/sparc.c (sparc_expand_prologue): Use add_reg_note.
20547         (sparc_fold_builtin): Add cast to enum type.
20548         * config/spu/spu.c (spu_emit_branch_or_set): Change ior_code to
20549         enum insn_code.
20550         (spu_expand_prologue): Use add_reg_note.
20551         (expand_builtin_args): Change 0 to EXPAND_NORMAL in function call.
20552
20553 2009-04-20  Ian Lance Taylor  <iant@google.com>
20554
20555         * c-parser.c (c_parser_attributes): Change VEC back to tree list.
20556         (c_parser_postfix_expression_after_primary): Get VEC for list of
20557         arguments.  Get original types of arguments.  Call
20558         build_function_call_vec.
20559         (cached_expr_list_1, cached_expr_list_2): New static variables.
20560         (c_parser_expr_list): Change return type to VEC *.  Add
20561         p_orig_types parameter.  Change all callers.
20562         (c_parser_release_expr): New static function.
20563         (c_parser_vec_to_tree_list): New static function.
20564         * c-typeck.c (build_function_call): Rewrite to build a VEC and
20565         call build_function_call_vec.
20566         (build_function_call_vec): New function, based on old
20567         build_function_call.
20568         (convert_arguments): Remove nargs and argarray parameters.  Change
20569         values to a VEC.  Add origtypes parameter.
20570         (build_modify_expr): Add rhs_origtype parameter.  Change all callers.
20571         (convert_for_assignment): Add origtype parameter.  Change all
20572         callers.  If warn_cxx_compat, check for conversion to an enum
20573         type when calling a function.
20574         (store_init_value): Add origtype parameter.  Change all callers.
20575         (digest_init): Likewise.
20576         (struct init_node): Add origtype field.
20577         (add_pending_init): Add origtype parameter.  Change all callers.
20578         (output_init_element): Likewise.
20579         (output_pending_init_elements): Pass origtype from init_node to
20580         output_init_element.
20581         (process_init_element): Pass origtype from c_expr to
20582         output_init_element.
20583         (c_finish_return): Add origtype parameter.  Change all callers.
20584         * c-common.c (sync_resolve_size): Change params to VEC *.  Change
20585         caller.
20586         (sync_resolve_params): Likewise.
20587         (sync_resolve_return): Change params to first_param.  Change caller.
20588         (resolve_overloaded_builtins): Change params to VEC *.  Change
20589         callers.  Save first parameter around call to build_function_call_vec.
20590         * c-decl.c (finish_decl): Add origtype parameter.  Change all
20591         callers.  Call build_function_call_vec rather than
20592         build_function_call for cleanup.
20593         * c-tree.h: Update declarations.
20594         * c-common.h: Update declarations.
20595         * stub-objc.c (objc_rewrite_function_call): Change parameter from
20596         params to first_param.
20597         * target.h (struct gcc_target): Change resolve_overloaded_builtin
20598         params parameter from tree to void *.
20599         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
20600         Change arglist parameter to have type void *, and to be a pointer
20601         to a VEC.
20602         * config/rs6000/rs6000-protos.h
20603         (altivec_resolve_overloaded_builtin): Update declaration.
20604         * config/spu/spu-c.c (spu_resolved_overloaded_builtin): Change
20605         fnargs parameter to have type void *, and to be a pointer to a
20606         VEC.  Call build_function_call_vec instead of
20607         build_function_call.
20608         * config/spu/spu-protos.h (spu_expand_builtin): Update declaration.
20609
20610 2009-04-20  Joey Ye  <joey.ye@intel.com>
20611             Xuepeng Guo  <xuepeng.guo@intel.com>
20612             H.J. Lu  <hongjiu.lu@intel.com>
20613
20614         * config/i386/atom.md: Add bypasses with ix86_dep_by_shift_count.
20615
20616         * config/i386/i386.c (LEA_SEARCH_THRESHOLD): New macro.
20617         (IX86_LEA_PRIORITY): Likewise.
20618         (distance_non_agu_define): New function.
20619         (distance_agu_use): Likewise.
20620         (ix86_lea_for_add_ok): Likewise.
20621         (ix86_dep_by_shift_count): Likewise.
20622
20623         * config/i386/i386.md: Call ix86_lea_for_add_ok to decide we
20624         should split for LEA.
20625
20626         * config/i386/i386-protos.h (ix86_lea_for_add_ok): Declare new
20627         function.
20628         (ix86_dep_by_shift_count): Likewise.
20629
20630 2009-04-20  Richard Guenther  <rguenther@suse.de>
20631
20632         * expr.c (handled_component_p): Move ...
20633         * tree.h (handled_component_p): ... here.
20634         * tree.def: Re-order BIT_FIELD_REF, COMPONENT_REF,
20635         ARRAY_REF, ARRAY_RANGE_REF, VIEW_CONVERT_EXPR, IMAGPART_EXPR
20636         and REALPART_EXPR to be in one group.
20637
20638 2009-04-20  Richard Guenther  <rguenther@suse.de>
20639
20640         * basic-block.h (get_all_dominated_blocks): Declare.
20641         * dominance.c (get_all_dominated_blocks): New function.
20642         * tree-cfg.c (get_all_dominated_blocks): Remove.
20643         (remove_edge_and_dominated_blocks): Adjust.
20644         * tree-ssa-phiprop.c (tree_ssa_phiprop_1): Fold in ...
20645         (tree_ssa_phiprop): ... here.  Use get_all_dominated_blocks
20646         instead of recursing.
20647
20648 2009-04-20  Doug Kwan  <dougkwan@google.com>
20649
20650         * cgraph.h (cgraph_node_ptr): New type for vector functions.
20651         (struct cgraph_node_set_def): New type.
20652         (cgraph_node_set) New type. Also declare vector functions.
20653         (struct cgraph_node_set_element_def): New type.
20654         (cgraph_node_set_element): Ditto.
20655         (cgraph_node_set_iterator): New iterator type.
20656         (cgraph_node_set_new, cgraph_node_set_find, cgraph_node_set_add,
20657         cgraph_node_set_remove, dump_cgraph_node_set,
20658         debug_cgraph_node_set): New prototypes.
20659         (csi_end_p, csi_next, csi_node, csi_start, cgraph_node_in_set_p,
20660         cgraph_node_set_size): New inlines.
20661         * tree-pass.h (struct cgraph_node_set_def): New decl to avoid
20662         including cgraph.h.
20663         (struct ipa_opt_pass): Add struct cgraph_node_set_def
20664         argument to function 'write_summary'.
20665         * ipa.c: Include ggc.h.
20666         (hash_cgraph_node_set_element,
20667         eq_cgraph_node_set_element, cgraph_node_set_new,
20668         cgraph_node_set_add, cgraph_node_set_remove,
20669         cgraph_node_set_find, dump_cgraph_node_set,
20670         debug_cgraph_node_set): New functions.
20671         * Makefile.in (ipa.o): Add dependency on GGC_H.
20672
20673 2009-04-20  Ira Rosen  <irar@il.ibm.com>
20674
20675         PR tree-optimization/39675
20676         * tree-vect-loop.c (vect_transform_loop): Remove currently redundant
20677         check of the return code of vect_schedule_slp. Check that
20678         stmt_vec_info still exists for the statement, before checking its
20679         vectorization type.
20680
20681 2009-04-20  Michael Matz  <matz@suse.de>
20682
20683         * Makefile.in (generated_files): Take out $(simple_generated_c).
20684
20685 2009-04-19  Dave Korn  <dave.korn.cygwin@gmail.com>
20686
20687         * config/i386/cygwin-stdint.h (INTPTR_TYPE):  Remove "long".
20688         (UINTPTR_TYPE):  Likewise.
20689
20690 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
20691
20692         PR c/37481
20693         * c-typeck.c (digest_init): Check for initializing an array with a
20694         string literal.
20695
20696 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
20697
20698         PR c/19771
20699         * c-semantics.c (pop_stmt_list): Propagate
20700         STATEMENT_LIST_HAS_LABEL to parent statement list.
20701
20702 2009-04-19  Adam Nemet  <anemet@caviumnetworks.com>
20703
20704         * config/mips/mips.h (mips_tune_attr): New macro.
20705         * config/mips/mips.md (cpu): Use it.
20706
20707 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
20708
20709         PR c/38243
20710         * c-decl.c (shadow_tag_warned): Diagnose use of restrict when
20711         declaring a tag.
20712
20713 2009-04-19  Diego Novillo  <dnovillo@google.com>
20714
20715         * toplev.c (compile_file): Move call to coverage_finish ...
20716         * cgraphunit.c (ipa_passes): ... here.
20717         Call cgraph_process_new_functions.
20718         * ipa-utils.c (get_base_var): Handle CONSTRUCTOR.
20719         * Makefile.in (cgraphunit.o): Add dependency on COVERAGE_H.
20720
20721 2009-04-19  Jan Hubicka  <jh@suse.cz>
20722
20723         * cgraph.c (cgraph_create_edge, cgraph_set_call_stmt): Set proper
20724         cfun.
20725         (dump_cgraph_node): Dump can throw external flag.
20726         * ipa-pure-const.c (propagate): Fix propagation of nothrow flags.
20727
20728 2009-04-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
20729
20730         PR c/32061
20731         PR c++/36954
20732         * doc/invoke.texi: Add -Wlogical-op to -Wextra.
20733         * common.opt (Wlogical-op): Move from here...
20734         * c.opt (Wlogical-op): ... to here.
20735         * c-typeck.c (parser_build_binary_op): Update call to
20736         warn_logical_operator.
20737         * c-opts.c (c_common_post_options): Enable warn_logical_op with
20738         extra_warnings.
20739         * c-common.c (warn_logical_op): Update.
20740         * c-common.h (warn_logical_op): Update declaration.
20741
20742 2009-04-19  Eric Botcazou  <ebotcazou@adacore.com>
20743
20744         * tree.c (protected_set_expr_location): Fix formatting.
20745
20746 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
20747
20748         PR c/27676
20749         * c-typeck.c (readonly_warning): new.
20750         (build_unary_op, build_modify_expr): Use readonly_warning for
20751         storing into something readonly but not const-qualified.
20752
20753 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
20754
20755         PR c/22367
20756         * c-typeck.c (build_unary_op): Check for taking address of
20757         expression of type void.
20758
20759 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
20760
20761         PR c/35210
20762         * c-typeck.c (build_function_call): Check for calling a function
20763         with qualified void return types.  Call require_complete_type when
20764         generating a trap.
20765
20766 2009-04-18  Jan Hubicka  <jh@suse.cz>
20767
20768         * cgraph.c (cgraph_make_edge, dump_cgraph_node, cgraph_set_call_stmt):
20769         Set nothrow flag.
20770         * cgraph.h (struct function): Reduce loop_nest to 30 bits; add
20771         can_throw_external flag.
20772         * ipa-reference.c (ipa_utils_reduced_inorder): Update call.
20773         * ipa-pure-const.c (ignore_edge): New function.
20774         (propagate): Compute order for NOTHROW computation; set NOTHROWs
20775         only over can_throw_external edges.
20776         (local_pure_const): Add nothrow flag.
20777         * ipa-utils.c (searchc): Add ignore_edge callback.
20778         (ipa_utils_reduced_inorder): Add ignore_edge callback.
20779         * ipa-utils.h (ipa_utils_reduced_inorder): Update prototype.
20780         (set_nothrow_function_flags): Update cgraph.
20781         * tree-cfg.c (verify_stmt): Relax nothrow checking when in IPA mode.
20782
20783 2009-04-18  Richard Guenther  <rguenther@suse.de>
20784
20785         PR middle-end/39804
20786         * tree-ssa-ccp.c (fold_stmt_1): New function factored from ...
20787         (fold_stmt): ... this and ...
20788         (fold_stmt_inplace): ... this.
20789         (fold_stmt_1): Fold references in calls and asms.
20790         * tree-cfg.c (remove_useless_stmts_cond): Use fold_stmt.
20791
20792 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
20793
20794         * tree-vrp.c (ssa_name_nonzero_p): Remove.
20795         * tree.h: Remove the prototype for ssa_name_nonzero_p.
20796
20797 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
20798
20799         * tree.c (function_args_count): Remove.
20800         * tree.h: Remove the prototype for function_args_count.
20801
20802 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
20803
20804         * tree-iterator.c (expr_only): Remove.
20805         * tree.h: Remove the prototype for expr_only.
20806
20807 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
20808
20809         * reginfo.c (cannot_change_mode_set_regs): Remove.
20810         * rtl.h: Remove the prototype for cannot_change_mode_set_regs.
20811
20812 2009-04-08  Anatoly Sokolov  <aesok@post.ru>
20813
20814         * config/avr/avr.md (*rotlsi3_8, *rotlsi3_16, *rotlsi3_24 ): Check
20815         whether operands 0 and 1 overlaps.
20816
20817 2009-04-18  Manuel López-Ibáñez  <manu@gcc.gnu.org>
20818
20819         PR middle-end/36902
20820         * tree-vrp.c (check_array_ref): Pass a location_t instead of a
20821         pointer. Use warning_at instead of warning.
20822         (search_for_addr_array): Likewise.
20823         (check_array_bounds): Likewise.
20824         (check_all_array_refs): Check that the incoming edge is not in the
20825         list of edges to be removed.
20826         (check_all_array_refs): Avoid the temporal pointer.
20827         (vrp_visit_cond_stmt): Fix typo.
20828         (simplify_switch_using_ranges): Handle the case where the switch
20829         index is an integer constant.
20830
20831 2009-04-18  Adam Nemet  <anemet@caviumnetworks.com>
20832
20833         * config/mips/mips.c (mips_final_postscan_insn): Make it static.
20834
20835 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
20836
20837         * doc/extend.texi, doc/invoke.texi: Fix typos.
20838
20839 2009-04-17  Cary Coutant  <ccoutant@google.com>
20840
20841         * tree-flow-inline.h (get_lineno): Fix inverted test.
20842
20843 2009-04-17  Diego Novillo  <dnovillo@google.com>
20844
20845         * tree-ssa-pre.c (create_expression_by_pieces): Remove
20846         assertion for AVAIL_OUT.
20847
20848 2009-04-17  Mike Frysinger  <vapier@gentoo.org>
20849
20850         PR target/38627
20851         * config/sh/lib1funcs.asm [__ELF__ && __linux__]: Add .note.GNU-stack.
20852         * config/sh/linux-atomic.asm: Likewise.
20853
20854 2009-04-17  Diego Novillo  <dnovillo@google.com>
20855
20856         * except.c (debug_eh_tree): New.
20857         (struct eh_region, struct eh_status): Move ...
20858         * except.h: ... here.
20859         (add_type_for_runtime): Declare extern.
20860         (lookup_type_for_runtime): Likewise.
20861         (debug_eh_tree): Declare.
20862         * Makefile.in (GTFILES): List except.h before except.c
20863
20864 2009-04-17  Diego Novillo  <dnovillo@google.com>
20865
20866         * omp-low.c (create_omp_child_function): Set DECL_CONTEXT for DECL.
20867         * cgraphunit.c (cgraph_build_static_cdtor): Likewise.
20868         * tree-dfa.c (find_referenced_vars_in): Factor out of ...
20869         (find_vars_r): ... here.
20870         * tree-flow.h (find_referenced_vars_in): Declare.
20871         * tree-ssa-pre.c (create_expression_by_pieces): Assert
20872         that AVAIL_OUT exists for BLOCK.
20873         * Makefile.in (CGRAPH_H): Add dependency on cif-code.def
20874         (tree-loop-distribution.o): Fix dependency on TREE_VECTORIZER_H.
20875         (tree-parloops.o): Likewise.
20876
20877 2009-04-17  Simon Baldwin  <simonb@google.com>
20878
20879         * toplev.c (default_tree_printer): Add handling for %E format.
20880
20881 2009-04-17  Diego Novillo  <dnovillo@google.com>
20882
20883         * tree-pretty-print.c (dump_generic_node): Add break after
20884         TREE_BINFO handler.  Handle COMPLEX_TYPE, REAL_TYPE and
20885         FIXED_POINT_TYPE.  Handle NULL TREE_TYPEs.  Handle METHOD_TYPE and
20886         FUNCTION_TYPE together.  Call print_struct_decl when printing
20887         structures and TDF_SLIM is not given.
20888         (print_struct_decl): Fix logic for detecting recursion.
20889
20890 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
20891
20892         PR 31567
20893         * gcc.c (create_at_file): New.
20894         (compile_input_file_p): New.
20895         (do_spec_1): Use @args files for %i. Use create_at_file for %o.
20896         * main.c (main): Update call to toplev_main.
20897         * toplev.c (toplev_main): Change signature. Call expandargv.
20898         * toplev.h (toplev_main): Change signature.
20899
20900 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
20901
20902         * dwarf2out.c (field_byte_offset): Use the type size as the field size
20903         if the latter is not constant.
20904
20905 2009-04-17  David Edelsohn  <edelsohn@gnu.org>
20906
20907         * dbxout.c (xcoff_debug_hooks): Add set_name_debug_nothing.
20908
20909 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
20910
20911         * dbxout.c (dbxout_block): Reinstate test on TREE_USED.
20912         * tree-ssa-live.c (remove_unused_scope_block_p): Update TREE_USED bit.
20913
20914 2009-04-17  Richard Guenther  <rguenther@suse.de>
20915
20916         * tree-ssa-structalias.c (get_constraint_for_component_ref):
20917         Handle component references view-converting an invariant address.
20918
20919 2009-04-17  Adam Nemet  <anemet@caviumnetworks.com>
20920
20921         * doc/tm.texi (TARGET_DEFAULT_TARGET_FLAGS,
20922         TARGET_MIN_ANCHOR_OFFSET, TARGET_MAX_ANCHOR_OFFSET,
20923         TARGET_HAVE_SRODATA_SECTION, TARGET_HAVE_TLS,
20924         TARGET_UNWIND_TABLES_DEFAULT, TARGET_TERMINATE_DW2_EH_FRAME_INFO):
20925         Use @deftypevr rather than @deftypevar.
20926
20927 2009-04-17  Richard Guenther  <rguenther@suse.de>
20928
20929         * tree-ssa-forwprop.c (get_prop_dest_stmt): Clean up tuplification.
20930         (get_prop_source_stmt): Likewise.
20931         (can_propagate_from): Likewise.
20932
20933 2009-04-17  Andrew Stubbs  <ams@codesourcery.com>
20934
20935         * configure.ac: Add new AC_SUBST for TM_ENDIAN_CONFIG,
20936         TM_MULTILIB_CONFIG and TM_MULTILIB_EXCEPTIONS_CONFIG.
20937         (--with-multilib-list): Add default value.
20938         * configure: Regenerate.
20939         * Makefile.in (TM_ENDIAN_CONFIG): Define.
20940         (TM_MULTILIB_CONFIG, TM_MULTILIB_EXCEPTIONS_CONFIG): Define.
20941         * config.gcc (sh-*-*): Switch to using TM_ENDIAN_CONFIG,
20942         TM_MULTILIB_CONFIG, and TM_MULTILIB_EXCEPTIONS_CONFIG.
20943         Don't add default cpu to multilib list unnecessarily, but do enable
20944         the relevant compiler option..
20945         Add support for --with-multilib-list=<blank> and
20946         --with-multilib-list=!<somelib> to supress unwanted multilibs.
20947         * config/sh/t-sh (DEFAULT_ENDIAN, OTHER_ENDIAN): New variables.
20948         (MULTILIB_ENDIAN, MULTILIB_CPUS): Delete variables.
20949         (MULTILIB_OPTIONS): Redefine using OTHER_ENDIAN and
20950         TM_MULTILIB_CONFIG.
20951         (MULTILIB_EXCEPTIONS): Add TM_MULTILIB_EXCEPTIONS_CONFIG.
20952         (MULTILIB_OSDIRNAMES): New variable.
20953         * config/sh/t-1e: Delete file.
20954         * config/sh/t-mlib-sh1: Delete file.
20955         * config/sh/t-mlib-sh2: Delete file.
20956         * config/sh/t-mlib-sh2a: Delete file.
20957         * config/sh/t-mlib-sh2a-nofpu: Delete file.
20958         * config/sh/t-mlib-sh2a-single: Delete file.
20959         * config/sh/t-mlib-sh2a-single-only: Delete file.
20960         * config/sh/t-mlib-sh2e: Delete file.
20961         * config/sh/t-mlib-sh3e: Delete file.
20962         * config/sh/t-mlib-sh4: Delete file.
20963         * config/sh/t-mlib-sh4-nofpu: Delete file.
20964         * config/sh/t-mlib-sh4-single: Delete file.
20965         * config/sh/t-mlib-sh4-single-only: Delete file.
20966         * config/sh/t-mlib-sh4a: Delete file.
20967         * config/sh/t-mlib-sh4a-nofpu: Delete file.
20968         * config/sh/t-mlib-sh4a-single: Delete file.
20969         * config/sh/t-mlib-sh4a-single-only: Delete file.
20970         * config/sh/t-mlib-sh4al: Delete file.
20971         * config/sh/t-mlib-sh5-32media: Delete file.
20972         * config/sh/t-mlib-sh5-32media-nofpu: Delete file.
20973         * config/sh/t-mlib-sh5-64media: Delete file.
20974         * config/sh/t-mlib-sh5-64media-nofpu: Delete file.
20975         * config/sh/t-mlib-sh5-compact: Delete file.
20976         * config/sh/t-mlib-sh5-compact-nofpu: Delete file.
20977         * config/sh/t-linux: Don't override MULTILIB_EXCEPTIONS.
20978         * doc/install.texi (Options specification): Add
20979         --with-multilib-list and --with-endian.
20980
20981 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
20982
20983         * Makefile.in (REVISION_s): Always include quotes. Change ifdef to use
20984         REVISION_c.
20985         (OBJS-common): Add plugin-version.o.
20986         (plugin-version.o): New.
20987         * gcc-plugin.h (plugin_gcc_version): New.
20988         (plugin_default_version_check): New.
20989         (plugin_init_func, plugin_init): Add version argument.
20990         * plugin-version.c: New.
20991         * plugin.c (str_plugin_gcc_version_name): New.
20992         (try_init_one_plugin): Read plugin_gcc_version from the plugin and
20993         pass it to the init function.
20994         (plugin_default_version_check): New.
20995
20996 2009-04-17  Richard Guenther  <rguenther@suse.de>
20997
20998         * tree-ssa-alias.c (refs_may_alias_p_1): Do not use TBAA
20999         for decl-vs-decl disambiguation.
21000
21001 2009-04-17  Andreas Krebbel  <krebbel1@de.ibm.com>
21002
21003         * config/s390/s390.h (s390_tune_attr): New macro definition.
21004         * config/s390/s390.md (cpu attribute): Map to s390_tune_attr.
21005
21006 2009-04-17  Richard Guenther  <rguenther@suse.de>
21007
21008         * tree-ssa-ccp.c (struct fold_stmt_r_data): Remove.
21009         (fold_stmt_r): Likewise.
21010         (maybe_fold_reference): New function.
21011         (fold_gimple_assign): Handle cases fold_stmt_r did.
21012         (fold_stmt): Do not use fold_stmt_r.
21013         (fold_stmt_inplace): Likewise.
21014
21015 2009-04-17  Richard Guenther  <rguenther@suse.de>
21016
21017         * tree-ssa-dom.c (gimple_assign_unary_useless_conversion_p): Remove.
21018         (record_equivalences_from_stmt): Remove useless checks and
21019         simplifications.
21020         * tree-ssa-pre.c (eliminate): Avoid converting a constant if
21021         the type is already suitable.
21022
21023 2009-04-17  Paolo Bonzini  <bonzini@gnu.org>
21024
21025         * config/sh/sh.h (FUNCTION_VALUE): Fix call to sh_promote_prototypes.
21026
21027 2009-04-17  Uros Bizjak  <ubizjak@gmail.com>
21028
21029         * config/arm/sfp-machine.h (__gcc_CMPtype): New typedef.
21030         (CMPtype): Define as __gcc_CMPtype.
21031
21032 2009-04-17  Aurelien Jarno  <aurelien@aurel32.net>
21033
21034         * config.gcc: Add soft-fp/t-softfp and i386/t-linux to tmake_file
21035         for i[34567]86-*-kfreebsd*-gnu*, x86_64-*-kfreebsd*-gnu*.
21036
21037 2009-04-17  Richard Guenther  <rguenther@suse.de>
21038
21039         PR tree-optimization/39746
21040         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Remove
21041         special-casing for builtins and static variable use/def.
21042         (call_may_clobber_ref_p_1): Likewise.
21043
21044 2009-04-16  Ian Lance Taylor  <iant@google.com>
21045
21046         * df.h: Include "timevar.h".
21047         (struct df_problem): Change tv_id field to timevar_id_t.
21048         * tree-pass.h: Include "timevar.h".
21049         (struct opt_pass): Change tv_id field to timevar_id_t.
21050         * timevar.h (timevar_id_t): Define TV_NONE.
21051         * passes.c (execute_one_ipa_transform_pass): Check for tv_id !=
21052         TV_NONE rather than tv_id != 0.
21053         (execute_one_pass): Likewise.
21054         * Makefile.in (DF_H): Add $(TIMEVAR_H).
21055         (TREE_PASS_H): Define.  Change all instances of tree-pass.h in
21056         dependencies to $(TREE_PASS_H).
21057         * bt-load.c (pass_branch_target_load_optimize1): Set tv_id field
21058         to TV_NONE.
21059         (pass_branch_target_load_optimize2): Likewise.
21060         * cfglayout.c (pass_into_cfg_layout_mode): Likewise.
21061         (pass_outof_cfg_layout_mode): Likewise.
21062         * cgraphbuild.c (pass_remove_cgraph_callee_edges): Likewise.
21063         (pass_rebuild_cgraph_edges): Likewise.
21064         (pass_remove_cgraph_callee_edges): Likewise.
21065         * df-core.c (pass_df_initialize_opt): Likewise.
21066         (pass_df_initialize_no_opt): Likewise.
21067         (pass_df_finish): Likewise.
21068         * emit-rtl.c (pass_unshare_all_rtl): Likewise.
21069         * except.c (pass_set_nothrow_function_flags): Likewise.
21070         (pass_convert_to_eh_region_ranges): Likewise.
21071         * final.c (pass_compute_alignments): Likewise.
21072         * function.c (pass_instantiate_virtual_regs): Likewise.
21073         (pass_init_function): Likewise.
21074         (pass_leaf_regs): Likewise.
21075         (pass_match_asm_constraints): Likewise.
21076         * gimple-low.c (pass_lower_cf): Likewise.
21077         (pass_mark_used_blocks): Likewise.
21078         * init-regs.c (pass_initialize_regs): Likewise.
21079         * integrate.c (pass_initial_value_sets): Likewise.
21080         * ira.c (pass_ira): Likewise.
21081         * jump.c (pass_cleanup_barriers): Likewise.
21082         * omp-low.c (pass_expand_omp): Likewise.
21083         (pass_lower_omp): Likewise.
21084         * matrix-reorg.c (pass_ipa_matrix_reorg): Likewise.
21085         * recog.c (pass_split_all_insns): Likewise.
21086         (pass_split_after_reload): Likewise.
21087         (pass_split_before_regstack): Likewise.
21088         (pass_split_before_sched2): Likewise.
21089         (pass_split_for_shorten_branches): Likewise.
21090         * reginfo.c (pass_reginfo_init): Likewise.
21091         (pass_subregs_of_mode_init): Likewise.
21092         (pass_subregs_of_mode_finish): Likewise.
21093         * passes.c (pass_postreload): Likewise.
21094         * stack-ptr-mod.c (pass_stack_ptr_mod): Likewise.
21095         * tree-cfg.c (pass_remove_useless_stmts): Likewise.
21096         (pass_warn_function_return): Likewise.
21097         (pass_warn_function_noreturn): Likewise.
21098         * tree-complex.c (pass_lower_complex): Likewise.
21099         (pass_lower_complex_O0): Likewise.
21100         * tree-if-conv.c (pass_if_conversion): Likewise.
21101         * tree-into-ssa.c (pass_build_ssa): Likewise.
21102         * tree-mudflap.c (pass_mudflap_1): Likewise.
21103         (pass_mudflap_2): Likewise.
21104         * tree-nomudflap.c (pass_mudflap_1): Likewise.
21105         (pass_mudflap_2): Likewise.
21106         * tree-nrv.c (pass_return_slot): Likewise.
21107         * tree-object-size.c (pass_object_sizes): Likewise.
21108         * tree-optimize.c (pass_all_optimizations): Likewise.
21109         (pass_early_local_passes): Likewise.
21110         (pass_all_early_optimizations): Likewise.
21111         (pass_cleanup_cfg): Likewise.
21112         (pass_cleanup_cfg_post_optimizing): Likewise.
21113         (pass_free_datastructures): Likewise.
21114         (pass_free_cfg_annotations): Likewise.
21115         (pass_fixup_cfg): Likewise.
21116         (pass_init_datastructures): Likewise.
21117         * tree-ssa.c (pass_early_warn_uninitialized): Likewise.
21118         (pass_late_warn_uninitialized): Likewise.
21119         (pass_update_address_taken): Likewise.
21120         * tree-ssa-ccp.c (pass_fold_builtins): Likewise.
21121         * tree-ssa-math-opts.c (pass_cse_reciprocals): Likewise.
21122         (pass_cse_sincos): Likewise.
21123         (pass_convert_to_rsqrt): Likewise.
21124         * tree-ssa-structalias.c (pass_build_alias): Likewise.
21125         * tree-stdarg.c (pass_stdarg): Likewise.
21126         * tree-tailcall.c (pass_tail_recursion): Likewise.
21127         (pass_tail_calls): Likewise.
21128         * tree-vect-generic.c (pass_lower_vector): Likewise.
21129         (pass_lower_vector_ssa): Likewise.
21130         * tree-vectorizer.c (pass_ipa_increase_alignment): Likewise.
21131
21132 2009-04-16  Joseph Myers  <joseph@codesourcery.com>
21133
21134         * config/mips/mips.c (mips_rtx_cost_data): Use SOFT_FP_COSTS in
21135         XLR entry.
21136         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC, MIPS_ARCH_FLOAT_SPEC):
21137         Handle -march=xlr.
21138         * config/mips/xlr.md (ir_xlr_alu): Also accept insn types move,
21139         logical and signext.
21140
21141 2009-04-16  Kaz Kojima  <kkojima@gcc.gnu.org>
21142
21143         PR target/39767
21144         * config/sh/predicates.md (arith_operand): Check if the operand
21145         of TRUNCATE is a REG.
21146
21147 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
21148
21149         * cfgrtl.c (delete_insn_chain_and_edges): Remove.
21150         * rtl.h: Remove the prototype for delete_insn_chain_and_edges.
21151
21152 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
21153
21154         * tree-iterator.c (tsi_split_statement_list_after,
21155         tsi_split_statement_list_before): Remove.
21156         * tree-iterator.h: Remove the prototypes for
21157         tsi_split_statement_list_after and tsi_split_statement_list_before.
21158
21159 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
21160
21161         * tree-ssa-propagate.c (stmt_makes_single_load): Remove.
21162         * tree-ssa-propagate.h: Remove the prototype for
21163         stmt_makes_single_load.
21164
21165 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
21166
21167         * emit-rtl.c (set_mem_attrs_from_reg): Remove.
21168         * rtl.h: Remove the prototype for set_mem_attrs_from_reg.
21169
21170 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
21171
21172         * tree-iterator.c (EXPR_LAST_BODY): Remove.
21173
21174 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
21175
21176         * except.c (eh_region_outer_p): Remove.
21177         * except.h: Remove the prototype for eh_region_outer_p.
21178
21179 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
21180
21181         * function.c (current_function_assembler_name): Remove.
21182         * function.h: Remove the prototype for
21183         current_function_assembler_name.
21184
21185 2009-04-16  Ian Lance Taylor  <iant@google.com>
21186
21187         * rtlanal.c (alloc_reg_note): New function, broken out of add_reg_note.
21188         (add_reg_note): Call alloc_reg_note.
21189         * rtl.h (alloc_reg_note): Declare.
21190         * combine.c (try_combine): Use alloc_reg_note.
21191         (recog_for_combine, move_deaths): Likewise.
21192         (distribute_notes): Use alloc_reg_note and add_reg_note.
21193         * haifa-sched.c (sched_create_recovery_edges): Use add_reg_note.
21194         * combine-stack-adj.c (adjust_frame_related_expr): Likewise.
21195         * reload1.c (eliminate_regs_1): Use alloc_reg_note.
21196
21197 2009-04-16  Vladimir Makarov  <vmakarov@redhat.com>
21198
21199         PR rtl-optimization/39762
21200         * ira-int.h (ira_register_move_cost, ira_may_move_in_cost,
21201         ira_may_move_out_cost): Add comments about way of their usage.
21202         (ira_get_register_move_cost, ira_get_may_move_cost): New functions.
21203
21204         * ira-conflicts.c (process_regs_for_copy): Use function
21205         ira_get_register_move_cost instead of global
21206         ira_register_move_cost.
21207
21208         * ira-color.c (update_copy_costs, calculate_allocno_spill_cost,
21209         color_pass, move_spill_restore, update_curr_costs): Ditto.
21210
21211         * ira-lives.c (process_single_reg_class_operands): Ditto.
21212
21213         * ira-emit.c (emit_move_list): Ditto.
21214
21215         * ira-costs.c (copy_cost): Don't call ira_init_register_move_cost.
21216         (record_reg_classes): Ditto.  Use functions
21217         ira_get_register_move_cost and ira_get_may_move_cost instead of
21218         global vars ira_register_move_cost, ira_may_move_out_cost and
21219         ira_may_move_in_cost.
21220         (record_address_regs): Don't call ira_init_register_move_cost.
21221         Use function ira_get_may_move_cost instead of global
21222         ira_may_move_in_cost.
21223         (process_bb_node_for_hard_reg_moves): Use function
21224         ira_get_register_move_cost instead of global ira_register_move_cost.
21225         (ira_costs): Don't call ira_init_register_move_cost.
21226
21227 2009-04-16  Richard Guenther  <rguenther@suse.de>
21228
21229         * tree-cfg.c (verify_gimple_assign_binary):
21230         Allow POINTER_PLUS_EXPR-like PLUS_EXPR for vectors.
21231         * ipa-struct-reorg.c (gen_size): Fold the built expressions.
21232         (create_general_new_stmt): Note that this function is broken.
21233
21234 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
21235
21236         * common.opt (fhelp): Add Var(help_flag).
21237         * gcc-plugin.h (plugin_info): Add help.
21238         * plugin.c (plugin_name_args): Add help.
21239         (register_plugin_info): Set plugin->help.
21240         (print_help_one_plugin): New.
21241         (print_plugins_help): New.
21242         * plugin.h (print_plugins_help): New.
21243         * toplev.c (toplev_main): Call print_plugins_help if needed.
21244
21245 2009-04-16  Richard Guenther  <rguenther@suse.de>
21246
21247         * gimple.c (gimple_copy): Do not clear addresses_taken bitmap.
21248         (gimple_ior_addresses_taken_1): New function.
21249         (gimple_ior_addresses_taken): Likewise.
21250         * gimple.h (struct gimple_statement_with_ops_base): Remove
21251         addresses_taken member.
21252         (gimple_ior_addresses_taken): Declare.
21253         (gimple_addresses_taken, gimple_addresses_taken_ptr,
21254         gimple_set_addresses_taken): Remove.
21255         * ipa-reference.c (mark_address): New function.
21256         (scan_stmt_for_static_refs): Use it for marking addresses taken.
21257         * tree-ssa-operands.c (add_to_addressable_set): Rename to ...
21258         (mark_address_taken): ... this.  Just set TREE_ADDRESSABLE.
21259         (gimple_add_to_addresses_taken): Remove.
21260         (get_tmr_operands): Call mark_address_taken.
21261         (get_asm_expr_operands): Likewise.
21262         (get_expr_operands): Likewise.
21263         (build_ssa_operands): Do not clear the addresses_taken bitmap.
21264         (free_stmt_operands): Do not free it.
21265         * tree-ssa.c (delete_tree_ssa): Likewise.
21266         (execute_update_addresses_taken): Use gimple_ior_addresses_taken.
21267
21268 2009-04-16  Richard Guenther  <rguenther@suse.de>
21269
21270         * gimple.h (walk_stmt_load_store_addr_ops): Declare.
21271         (walk_stmt_load_store_ops): Likewise.
21272         * gimple.c (get_base_loadstore): New function.
21273         (walk_stmt_load_store_addr_ops): Likewise.
21274         (walk_stmt_load_store_ops): Likewise.
21275         * ipa-pure-const.c (check_op): Simplify.
21276         (check_load, check_store): New functions.
21277         (check_stmt): Use walk_stmt_load_store_ops.
21278         * ipa-reference.c (mark_load): Adjust signature.
21279         (mark_store): Likewise.
21280         (scan_stmt_for_static_refs): Use walk_stmt_load_store_addr_ops.
21281
21282 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
21283
21284         * gcc-plugin.h (plugin_event): Add PLUGIN_INFO.
21285         (plugin_info): New.
21286         * opts.c (common_handle_option): Don't call print_version.
21287         * plugin.c (plugin_name_args): Add version.
21288         (register_plugin_info): New.
21289         (register_callback): Handle PLUGIN_INFO.
21290         (try_init_one_plugin): New.
21291         (init_one_plugin): Use try_init_one_plugin. Only free plugin_name_args
21292         if failed to init.
21293         (finalize_one_plugin): New.
21294         (finalize_plugins): New.
21295         (print_one_plugin): New.
21296         (print_plugins_versions): New.
21297         * plugin.h (print_plugins_versions): New.
21298         (finalize_plugins): New.
21299         * toplev.c (compile_file): Don't call initialize_plugins.
21300         (print_version): Call print_plugins_versions.
21301         (toplev_main): Call initialize_plugins. Print version if needed.
21302         Call finalize_plugins.
21303
21304 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
21305
21306         * common.opt (fversion): New.
21307         * gcc.c (print_version): New.
21308         (process_command): Don't print the version. Just set print_version.
21309         (main): Print version. Call subprocesses if print_version and
21310         verbose_flag are set.
21311         * opts.c (common_handle_option): Handle OPT_fversion.
21312
21313 2009-04-16  Richard Guenther  <rguenther@suse.de>
21314             Ira Rosen  <irar@il.ibm.com>
21315
21316         PR tree-optimization/39698
21317         * tree-vect-loop.c (get_initial_def_for_reduction): Use the
21318         type of the reduction variable.  Only generate the def if
21319         it is needed.
21320
21321         * omp-low.c (expand_omp_for_generic): When converting to a pointer
21322         make sure to first convert to an integer of the same precision.
21323         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer): Retain
21324         the type of the evolution correctly in computing the new
21325         induction variable base.
21326
21327 2009-04-16  Richard Guenther  <rguenther@suse.de>
21328
21329         PR middle-end/39625
21330         * tree-cfg.c (make_blocks): Split statements with to-be
21331         abnormal SSA names on the lhs.
21332
21333 2009-04-16  Paolo Bonzini  <bonzini@gnu.org>
21334
21335         * c-common.c (vector_targets_convertible_p, vector_types_convertible_p):
21336         Use TYPE_VECTOR_OPAQUE instead of targetm.vector_opaque_p.
21337         * c-typeck.c (really_start_incremental_init): Likewise.
21338         * target-def.h (TARGET_VECTOR_OPAQUE_P): Remove.
21339         (TARGET_INITIALIZER): Remove it.
21340         * target.h (struct target): Remove vector_opaque_p.
21341         * tree.c (build_opaque_vector_type): New.
21342         * tree.h (TYPE_VECTOR_OPAQUE): New.
21343         (build_opaque_vector_type): Declare.
21344         * doc/tm.texi (TARGET_VECTOR_OPAQUE_P): Remove.
21345         * config/rs6000/rs6000.c (build_opaque_vector_type,
21346         rs6000_is_vector_type, TARGET_VECTOR_OPAQUE_P): Remove.
21347         (rs6000_init_builtins): Use build_opaque_vector_type for
21348         opaque_V4SI_type_node.
21349
21350 2009-04-15  Catherine Moore  <clm@codesourcery.com>
21351
21352         * debug.h (set_name):  Declare.
21353         * dwarf2out.c (dwarf2out_set_name): Declare.
21354         (dwarf2_debug_hooks): Add set_name.
21355         (find_AT_string): New.
21356         (add_AT_string): Call find_AT_string.
21357         (dwarf2out_set_name): New.
21358         * cp/decl.c (grokdeclarator): Call set_name.
21359         * vmsdbgout.c (vmsdbg_debug_hooks): Add set_name_debug_nothing.
21360         * debug.c (do_nothing_debug_hooks):  Likewise.
21361         * dbxout.c (dbx_debug_hooks): Likewise.
21362         * sdbout.c (sdb_debug_hooks): Likewise.
21363
21364 2009-04-15  Michael Eager  <eager@eagercon.com>
21365
21366         * config/rs6000/rs6000.c (rs6000_function_value): Set function return
21367         reg for single-precision FPU.
21368         * config/rs6000/rs6000.md (movsi_internal1): Only for
21369         !TARGET_SINGLE_FPU.
21370         (movsi_internal1_single): New. Add pattern to move SI values to/from
21371         single-precision FP regs.
21372
21373 2009-04-15  Richard Guenther  <rguenther@suse.de>
21374
21375         * omp-low.c (lower_rec_input_clauses): Build correct address
21376         expressions.
21377         (expand_omp_for_generic): Fix multiplication type.
21378         * tree-loop-distribution.c (build_size_arg): Build a size_t argument.
21379         (generate_memset_zero): Fix types.
21380         * tree-profile.c (prepare_instrumented_value): Correctly
21381         widen a pointer.
21382
21383 2009-04-15  Ian Lance Taylor  <iant@google.com>
21384
21385         * c.opt (Wenum-compare): Enable for C and Objc.  Initialize to -1.
21386         * c-opts.c (c_common_handle_option): For C, set warn_enum_compare
21387         for -Wall and for -Wc++-compat.
21388         (c_common_post_options): For C++, set warn_enum_compare if not
21389         already set.
21390         * c-tree.h (struct c_expr): Add field original_type.
21391         (build_external_ref): Update declaration.
21392         * c-parser.c (c_parser_braced_init): Set original_type.
21393         (c_parser_initelt): Likewise.
21394         (c_parser_expr_no_commas): Likewise.
21395         (c_parser_conditional_expression): Likewise.
21396         (c_parser_cast_expression): Likewise.
21397         (c_parser_unary_expression): Likewise.  Pull setting of
21398         original_code to top of function.
21399         (c_parser_sizeof_expression): Set original_type.
21400         (c_parser_alignof_expression): Likewise.
21401         (c_parser_postfix_expression): Likewise.  Pull setting of
21402         original_code to top of function.
21403         (c_parser_postfix_expression_after_paren_type): Set original_type.
21404         (c_parser_postfix_expression_after_primary): Likewise.
21405         (c_parser_expression): Likewise.
21406         * c-typeck.c (build_external_ref): Add type parameter.  Change all
21407         callers.
21408         (c_expr_sizeof_expr): Set original_type field.
21409         (parser_build_unary_op): Likewise.
21410         (parser_build_binary_op): Likewise.  Optionally warn about
21411         comparisons of enums of different types.
21412         (digest_init): Set original_type field.
21413         (really_start_incremental_init): Likewise.
21414         (push_init_level, pop_init_level): Likewise.
21415         * doc/invoke.texi (Warning Options): -Wenum-compare now
21416         supported in C.
21417
21418 2009-04-15  Richard Guenther  <rguenther@suse.de>
21419
21420         * tree-ssa-pre.c (eliminate): When replacing a PHI node carry
21421         out a necessary conversion.
21422         * tree-ssa-sccvn.c (run_scc_vn): Also assign value-ids to
21423         names we didn't value number.
21424         * tree-mudflap.c (mf_build_check_statement_for): Use correct types.
21425
21426 2009-04-15  Richard Guenther  <rguenther@suse.de>
21427
21428         PR tree-optimization/39764
21429         * tree-ssa-ccp.c (get_value): Canonicalize value with
21430         canonicalize_float_value.
21431
21432 2009-04-15  Jan Hubicka  <jh@suse.cz>
21433
21434         * builtins.def (va_start, va_end, va_copy): Fix my previous commit.
21435         Wrong version of patch.
21436
21437 2009-04-15  Jan Hubicka  <jh@suse.cz>
21438
21439         * builtins.def (va_start, va_end, va_copy): Mark nothrow.
21440
21441 2009-04-15  Nathan Sidwell  <nathan@codesourcery.com>
21442
21443         * config/rs6000/rs6000.c (rs6000_init_builtins): Set TYPE_NAME of
21444         our distinct integral and vector types.
21445
21446 2009-04-15  Rafael Avila de Espindola  <espindola@google.com>
21447
21448         * class.c (build_vtbl_ref_1): Remove call to assemble_external.
21449         * init.c (build_vtbl_address): Remove call to assemble_external.
21450
21451 2009-04-14  Daniel Jacobowitz  <dan@codesourcery.com>
21452
21453         * config/rs6000/rs6000.c (rs6000_dwarf_register_span): Fix debug
21454         output for other floating point modes.
21455
21456 2009-04-14  Diego Novillo  <dnovillo@google.com>
21457
21458         * diagnostic.c (diagnostic_report_diagnostic): Do not
21459         warn about loaded plugins for DK_ERROR and DK_WARNING.
21460         * c-decl.c (declspecs_add_type): Move call to
21461         invoke_plugin_callbacks ...
21462         * c-parser.c (c_parser_declspecs): ... here.
21463         * plugin.c (dump_active_plugins): Tidy output.
21464
21465 2009-04-14  Diego Novillo  <dnovillo@google.com>
21466             Le-Chun Wu  <lcwu@google.com>
21467
21468         * configure.ac: Add --enable-plugin support.
21469         Define ENABLE_PLUGIN and PLUGINLIBS when specified.
21470         * Makefile.in (PLUGIN_H): Define.
21471         Export ENABLE_PLUGIN and GMPINC to site.exp.
21472         Add PLUGINLIBS to link command.
21473         Add/modify dependencies for plugin.o and files including plugin.h.
21474         (plugin.o): New.
21475         * config.in: Regenerate.
21476
21477         * opts.c (common_handle_option): Handle OPT_fplugin_ and
21478         OPT_fplugin_arg_.
21479
21480 2009-04-14  Le-Chun Wu  <lcwu@google.com>
21481
21482         * tree-pass.h (register_one_dump_file): Add a prototype for
21483         register_one_dump_file.
21484         * toplev.c (compile_file): Call initialize_plugins.
21485         (do_compile): Call invoke_plugin_callbacks.
21486         (toplev_main): Call invoke_plugin_callbacks.
21487         * common.opt: Add -fplugin= and -fplugin-arg-.
21488         * gcc-plugin.h: New public header file for plugins to include.
21489         * plugin.c: New source file.
21490         * plugin.h: New internal header file.
21491         * passes.c (register_one_dump_file): Make it external.
21492
21493         * c-parser.c (c_parser_declspecs): Call invoke_plugin_callbacks.
21494
21495 2009-04-14  Diego Novillo  <dnovillo@google.com>
21496
21497         * doc/plugins.texi: New.
21498         * doc/gccint.texi: Add reference to Plugins chapter.
21499         * doc/invoke.texi: Document -fplugin and -fplugin-arg
21500         * diagnostic.c (diagnostic_report_diagnostic): Warn about
21501         loaded plugins, if any.
21502         * timevar.def (TV_PLUGIN_INIT): Define.
21503         (TV_PLUGIN_RUN): Define.
21504         * plugin.c: Include timevar.h
21505         (plugins_active_p): New.
21506         (dump_active_plugins): New.
21507         (debug_active_plugins): New.
21508
21509 2009-04-14  Joseph Myers  <joseph@codesourcery.com>
21510
21511         * config/sol2.h (LINK_ARCH32_SPEC_BASE): Use %R with absolute
21512         library paths.
21513         * config/sparc/sol2-bi.h (LINK_ARCH64_SPEC_BASE): Likewise.
21514
21515 2009-04-14  Kazu Hirata  <kazu@codesourcery.com>
21516
21517         * config/arm/arm.c (arm_rtx_costs_1): Treat a minus with a shift
21518         the same as a minus without a shift.
21519
21520 2009-04-14  Nick Clifton  <nickc@redhat.com>
21521
21522         * config/stormy16/stormy16.md (ineqbranch_1): Do not assume that
21523         comparisons with small integers will always produce a short
21524         branch.
21525
21526 2009-04-14  Rafael Avila de Espindola  <espindola@google.com>
21527
21528         Merge:
21529         2008-12-19  Diego Novillo  <dnovillo@google.com>
21530
21531         * cgraph.c (dump_cgraph_node): Show memory address of NODE.
21532
21533 2009-04-14  Richard Guenther  <rguenther@suse.de>
21534
21535         * tree-cfg.c (verify_gimple_assign_unary): Adjust vector code
21536         verification.
21537         (verify_gimple_assign_binary): Likewise.  Handle shifts and
21538         rotates correctly.
21539         (verify_gimple_phi): Print the mismatched argument position.
21540         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer):
21541         Fix types.
21542         (vect_update_init_of_dr): Likewise.
21543         * matrix-reorg.c (transform_access_sites): Do what the
21544         comment suggests.
21545         * omp-low.c (expand_omp_atomic_pipeline): Use the correct types.
21546
21547 2009-04-13  Michael Eager  <eager@eagercon.com>
21548
21549         * config/rs6000/rs6000-c.c: generate defines if rs6000_xilinx_fpu:
21550         _XFPU, _XFPU_SP_LITE, _XFPU_SP_FULL, _XFPU_DP_LITE, _XFPU_DP_FULL
21551         * config/rs6000/xilinx.h: New.  Spec for powerpc-xilinx-eabi
21552         * config.gcc (powerpc-xilinx-eabi): add xilinx.h to tm_file,
21553         remove duplicate config
21554
21555 2009-04-13  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
21556
21557         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Dump
21558         file_name:line_number type locator of the call site.
21559
21560 2009-04-13  Vladimir Makarov  <vmakarov@redhat.com>
21561
21562         * genautomata.c: Put blank after comma.
21563         (automaton_decls): New.
21564         (struct unit_usage): Add comments to member next.
21565         (store_alt_unit_usage): Keep the list ordered.
21566         (unit_present_on_list_p, equal_alternatives_p): New.
21567         (check_regexp_units_distribution): Check units distribution
21568         correctness correctly.
21569         (main): Don't write automata if error is found.  Return correct
21570         exit code.
21571
21572         * config/m68k/cf.md (cfv4_ds): Remove.
21573         (cfv4_pOEP1, cfv4_sOEP1, cfv4_pOEP2,cfv4_sOEP2, cfv4_pOEP3,
21574         cfv4_sOEP3): Assign to cfv4_oep instead of cfv4_ds.
21575
21576         * config/rs6000/power4.md (lsuq_power4, iq_power4, fpq_power4,
21577         power4-load-ext, power4-store, power4-store-update,
21578         power4-fpstore, power4-fpstore-update, power4-two, power4-three,
21579         power4-insert, power4-compare, power4-lmul-cmp, power4-imul-cmp,
21580         power4-lmul, , power4-imul, power4-imul3, power4-sdiv,
21581         power4-sqrt, power4-isync): Modify reservation to make correct
21582         unit distribution to automata.
21583
21584         * config/rs6000/power5.md (iq_power5, fpq_power5, power5-store,
21585         power5-store-update, power5-two, power5-three, power5-lmul,
21586         power5-imul, power5-imul3, power5-sdiv, power5-sqrt): Ditto.
21587
21588 2009-04-13  Adam Nemet  <anemet@caviumnetworks.com>
21589
21590         * except.c (pass_set_nothrow_function_flags): Set name and add
21591         TODO_dump_func.
21592         (set_nothrow_function_flags): Mention in the dump file when
21593         changing a function to nothrow.
21594
21595 2009-04-13  Ozkan Sezer  <sezeroz@gmail.com>
21596
21597         PR/39066
21598         * gbl-ctors.h (DO_GLOBAL_CTORS_BODY): Use __SIZE_TYPE__
21599         instead of unsigned long.
21600
21601 2009-04-13  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
21602
21603         * config/arm/arm.c (return_used_this_function): Remove.
21604         (arm_output_function_prologue): Remove use of
21605         return_used_this_function.
21606         (output_return_instruction): Replace use of
21607         return_used_this_function
21608         by cfun->machine->return_used_this_function.
21609         (arm_output_epilogue): Likewise.
21610         (arm_output_function_epilogue): Likewise.
21611         (thumb_unexpanded_epilogue): Likewise.
21612         * config/arm/arm.h (struct machine_function):
21613         New member return_used_this_function.
21614
21615 2009-04-12  Mark Mitchell  <mark@codesourcery.com>
21616
21617         * doc/install.texi: Correct description of default directory for
21618         --with-gxx-include-dir.
21619
21620 2009-04-12  Eric Botcazou  <ebotcazou@adacore.com>
21621
21622         * fold-const.c (build_range_check): Properly deal with enumeral and
21623         boolean base types.
21624
21625 2009-04-12  Steven Bosscher  <steven@gcc.gnu.org>
21626
21627         * doc/invoke.texi (max_gcse_passes): Remove documentation.
21628         * params.def (PARAM_MAX_GCSE_PASSES): Remove.
21629         * params.h (MAX_GCSE_PASSES): Remove.
21630         * gcse.c (gcse_main): Run CPROP1, PRE or HOIST, and CPROP2
21631         in sequence.  Remove ability to run multiple passes.
21632         (bypass_jumps): Report run as third CPROP pass.
21633
21634 2009-04-12  Adam Nemet  <anemet@caviumnetworks.com>
21635
21636         PR middle-end/39651
21637         * except.c (can_throw_external): Look at each insn in a SEQUENCE
21638         when deciding whether the whole SEQUENCE can throw.
21639
21640 2009-04-12  Uros Bizjak  <ubizjak@gmail.com>
21641
21642         PR target/39740
21643         * config/alpha/predicates.md (local_symbolic_operand): Return 1 for
21644         offseted label references.
21645
21646 2009-04-11  Jan Hubicka  <jh@suse.cz>
21647
21648         * tree-ssa-pre.c (eliminate): Fix call of update_stmt.
21649
21650 2009-04-11  Richard Guenther  <rguenther@suse.de>
21651
21652         PR middle-end/39732
21653         * tree-inline.c (declare_return_variable): Mark DECL_BY_REFERENCE
21654         return variables as TREE_ADDRESSABLE.
21655
21656 2009-04-11  Richard Guenther  <rguenther@suse.de>
21657
21658         PR tree-optimization/39713
21659         * tree-ssa-sccvn.c (vn_get_expr_for): Make sure built
21660         reference trees have SSA_NAME operands.
21661
21662 2009-04-11  Richard Guenther  <rguenther@suse.de>
21663
21664         PR c/39712
21665         * c-gimplify.c (c_gimplify_expr): Adjust check for mismatched
21666         address expressions.
21667
21668 2009-04-11  Dave Korn  <dave.korn.cygwin@gmail.com>
21669
21670         * config/i386/cygwin-stdint.h (INT_LEAST32_TYPE):  Update to
21671         match changes in Cygwin 1.7
21672         (UINT_LEAST32_TYPE, INT_FAST16_TYPE, INT_FAST32_TYPE,
21673         UINT_FAST16_TYPE, UINT_FAST32_TYPE):  Likewise.
21674
21675 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
21676
21677         PR tree-optimization/39701
21678         * doc/invoke.texi (Optimization Options): Document change in
21679         meaning and initialization of -fdelete-null-pointer-checks.
21680
21681 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
21682
21683         PR middle-end/39701
21684         * common.opt (-fdelete-null-pointer-checks): Initialize to 1.
21685
21686         * opts.c (decode_options): Don't set flag_delete_null_pointer_checks
21687         here.
21688
21689         * doc/invoke.texi: Update -fdelete-null-pointer-checks.
21690
21691 2009-04-10  Chao-ying Fu  <fu@mips.com>
21692
21693         * doc/tm.texi (Instruction Output): Document
21694         TARGET_ASM_FINAL_POSTSCAN_INSN.
21695         * target.h (final_postscan_insn): New field in asm_out.
21696         * target-def.h (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
21697         (TARGET_ASM_OUT): Add TARGET_ASM_FINAL_POSTSCAN_INSN.
21698         * final.c (final_scan_insn): Call
21699         targetm.asm_out.final_postscan_insn after outputting
21700         an asm macro and a normal instruction.
21701
21702         * config/mips/mips.h (FINAL_PRESCAN_INSN): New define.
21703         * config/mips/mips-protos.h (mips_final_prescan_insn): Declare.
21704         * config/mips/mips.c (mips_at_reg_p): New for_each_rtx callback.
21705         (mips_final_prescan_insn, mips_final_postscan_insn): New functions.
21706         (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
21707
21708 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
21709
21710         PR middle-end/39701
21711         * fold-const.c (tree_single_nonzero_warnv_p): Pass non-static
21712         variables as non-NULL even with -fdelete-null-pointer-checks.
21713
21714 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
21715
21716         * config/rs6000/darwin-vecsave.asm: Remove extra "*/".
21717
21718 2009-04-09  H.J. Lu  <hongjiu.lu@intel.com>
21719
21720         PR target/39678
21721         * config/i386/i386.c (classify_argument): Handle SCmode with
21722         (bit_offset % 64) != 0.
21723
21724 2009-04-09  Sandra Loosemore  <sandra@codesourcery.com>
21725
21726         * doc/invoke.texi (Optimize Options): Add cross-reference to
21727         -Q --help=optimizers examples.
21728
21729 2009-04-10  Ben Elliston  <bje@au.ibm.com>
21730
21731         PR target/36800
21732         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Do not set
21733         regalign for the reg == fpr and TDmode case.
21734
21735 2009-04-09  David Ayers  <ayers@fsfe.org>
21736
21737         PR objc/29200
21738         * objc/objc-act.c (warn_with_method): Remove helper function.
21739         (check_duplicates): Call warning and inform directly.
21740         (really_start_method): Likewise.
21741
21742 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
21743
21744         * expmed.c (expand_divmod): Always use a comparison for a division
21745         by a large unsigned integer.
21746
21747         * fold-const.c (tree_single_nonzero_warnv_p): Always treat decls
21748         for things others than variables or functions as nonzero.
21749
21750 2009-04-09  Nick Clifton  <nickc@redhat.com>
21751
21752         * unwind-compat.c: Change copyright header to refer to version
21753         3 of the GNU General Public License with version 3.1 of the
21754         GCC Runtime Library Exception and to point readers at the
21755         COPYING3 and COPYING3.RUNTIME files and the FSF's license web page.
21756         * config/alpha/crtfastmath.c: Likewise.
21757         * config/alpha/linux-unwind.h: Likewise.
21758         * config/alpha/qrnnd.asm: Likewise.
21759         * config/alpha/vms-crt0-64.c: Likewise.
21760         * config/alpha/vms-crt0.c: Likewise.
21761         * config/alpha/vms-dwarf2.asm: Likewise.
21762         * config/alpha/vms-dwarf2eh.asm: Likewise.
21763         * config/alpha/vms-psxcrt0-64.c: Likewise.
21764         * config/alpha/vms-psxcrt0.c: Likewise.
21765         * config/alpha/vms_tramp.asm: Likewise.
21766         * config/arc/initfini.c: Likewise.
21767         * config/arc/lib1funcs.asm: Likewise.
21768         * config/arm/bpabi-v6m.S: Likewise.
21769         * config/arm/bpabi.S: Likewise.
21770         * config/arm/bpabi.c: Likewise.
21771         * config/arm/crti.asm: Likewise.
21772         * config/arm/crtn.asm: Likewise.
21773         * config/arm/ieee754-df.S: Likewise.
21774         * config/arm/ieee754-sf.S: Likewise.
21775         * config/arm/lib1funcs.asm: Likewise.
21776         * config/arm/libunwind.S: Likewise.
21777         * config/arm/linux-atomic.c: Likewise.
21778         * config/arm/mmintrin.h: Likewise.
21779         * config/arm/pr-support.c: Likewise.
21780         * config/arm/unaligned-funcs.c: Likewise.
21781         * config/arm/unwind-arm.c: Likewise.
21782         * config/arm/unwind-arm.h: Likewise.
21783         * config/avr/libgcc.S: Likewise.
21784         * config/bfin/crti.s: Likewise.
21785         * config/bfin/crtlibid.s: Likewise.
21786         * config/bfin/crtn.s: Likewise.
21787         * config/bfin/lib1funcs.asm: Likewise.
21788         * config/bfin/linux-unwind.h: Likewise.
21789         * config/cris/arit.c: Likewise.
21790         * config/cris/cris_abi_symbol.c: Likewise.
21791         * config/darwin-64.c: Likewise.
21792         * config/darwin-crt2.c: Likewise.
21793         * config/darwin-crt3.c: Likewise.
21794         * config/darwin.h: Likewise.
21795         * config/dbxelf.h: Likewise.
21796         * config/dfp-bit.c: Likewise.
21797         * config/dfp-bit.h: Likewise.
21798         * config/elfos.h: Likewise.
21799         * config/fixed-bit.c: Likewise.
21800         * config/fixed-bit.h: Likewise.
21801         * config/fp-bit.c: Likewise.
21802         * config/fp-bit.h: Likewise.
21803         * config/fr30/crti.asm: Likewise.
21804         * config/fr30/crtn.asm: Likewise.
21805         * config/fr30/lib1funcs.asm: Likewise.
21806         * config/freebsd-spec.h: Likewise.
21807         * config/frv/cmovd.c: Likewise.
21808         * config/frv/cmovh.c: Likewise.
21809         * config/frv/cmovw.c: Likewise.
21810         * config/frv/frvbegin.c: Likewise.
21811         * config/frv/frvend.c: Likewise.
21812         * config/frv/lib1funcs.asm: Likewise.
21813         * config/glibc-stdint.h: Likewise.
21814         * config/h8300/clzhi2.c: Likewise.
21815         * config/h8300/crti.asm: Likewise.
21816         * config/h8300/crtn.asm: Likewise.
21817         * config/h8300/ctzhi2.c: Likewise.
21818         * config/h8300/fixunssfsi.c: Likewise.
21819         * config/h8300/lib1funcs.asm: Likewise.
21820         * config/h8300/parityhi2.c: Likewise.
21821         * config/h8300/popcounthi2.c: Likewise.
21822         * config/i386/ammintrin.h: Likewise.
21823         * config/i386/att.h: Likewise.
21824         * config/i386/avxintrin.h: Likewise.
21825         * config/i386/biarch64.h: Likewise.
21826         * config/i386/bmmintrin.h: Likewise.
21827         * config/i386/cpuid.h: Likewise.
21828         * config/i386/cross-stdarg.h: Likewise.
21829         * config/i386/crtfastmath.c: Likewise.
21830         * config/i386/crtprec.c: Likewise.
21831         * config/i386/cygming-crtbegin.c: Likewise.
21832         * config/i386/cygming-crtend.c: Likewise.
21833         * config/i386/cygwin.asm: Likewise.
21834         * config/i386/emmintrin.h: Likewise.
21835         * config/i386/gmm_malloc.h: Likewise.
21836         * config/i386/gthr-win32.c: Likewise.
21837         * config/i386/i386.h: Likewise.
21838         * config/i386/immintrin.h: Likewise.
21839         * config/i386/linux-unwind.h: Likewise.
21840         * config/i386/linux64.h: Likewise.
21841         * config/i386/mm3dnow.h: Likewise.
21842         * config/i386/mmintrin-common.h: Likewise.
21843         * config/i386/mmintrin.h: Likewise.
21844         * config/i386/nmmintrin.h: Likewise.
21845         * config/i386/pmm_malloc.h: Likewise.
21846         * config/i386/pmmintrin.h: Likewise.
21847         * config/i386/smmintrin.h: Likewise.
21848         * config/i386/sol2-c1.asm: Likewise.
21849         * config/i386/sol2-ci.asm: Likewise.
21850         * config/i386/sol2-cn.asm: Likewise.
21851         * config/i386/sol2-gc1.asm: Likewise.
21852         * config/i386/tmmintrin.h: Likewise.
21853         * config/i386/unix.h: Likewise.
21854         * config/i386/w32-unwind.h: Likewise.
21855         * config/i386/wmmintrin.h: Likewise.
21856         * config/i386/x86-64.h: Likewise.
21857         * config/i386/x86intrin.h: Likewise.
21858         * config/i386/xmmintrin.h: Likewise.
21859         * config/ia64/crtbegin.asm: Likewise.
21860         * config/ia64/crtend.asm: Likewise.
21861         * config/ia64/crtfastmath.c: Likewise.
21862         * config/ia64/crti.asm: Likewise.
21863         * config/ia64/crtn.asm: Likewise.
21864         * config/ia64/fde-glibc.c: Likewise.
21865         * config/ia64/lib1funcs.asm: Likewise.
21866         * config/ia64/linux-unwind.h: Likewise.
21867         * config/ia64/quadlib.c: Likewise.
21868         * config/ia64/unwind-ia64.c: Likewise.
21869         * config/linux.h: Likewise.
21870         * config/m32c/m32c-lib1.S: Likewise.
21871         * config/m32c/m32c-lib2-trapv.c: Likewise.
21872         * config/m32c/m32c-lib2.c: Likewise.
21873         * config/m32r/initfini.c: Likewise.
21874         * config/m68hc11/larith.asm: Likewise.
21875         * config/m68hc11/m68hc11-crt0.S: Likewise.
21876         * config/m68k/cf.md: Likewise.
21877         * config/m68k/crti.s: Likewise.
21878         * config/m68k/crtn.s: Likewise.
21879         * config/m68k/lb1sf68.asm: Likewise.
21880         * config/m68k/linux-unwind.h: Likewise.
21881         * config/mcore/crti.asm: Likewise.
21882         * config/mcore/crtn.asm: Likewise.
21883         * config/mcore/lib1.asm: Likewise.
21884         * config/mips/linux-unwind.h: Likewise.
21885         * config/mips/loongson.h: Likewise.
21886         * config/mips/mips16.S: Likewise.
21887         * config/mmix/crti.asm: Likewise.
21888         * config/mmix/crtn.asm: Likewise.
21889         * config/pa/fptr.c: Likewise.
21890         * config/pa/hpux-unwind.h: Likewise.
21891         * config/pa/lib2funcs.asm: Likewise.
21892         * config/pa/linux-atomic.c: Likewise.
21893         * config/pa/linux-unwind.h: Likewise.
21894         * config/pa/milli64.S: Likewise.
21895         * config/pa/quadlib.c: Likewise.
21896         * config/pa/stublib.c: Likewise.
21897         * config/picochip/libgccExtras/adddi3.asm: Likewise.
21898         * config/picochip/libgccExtras/ashlsi3.asm: Likewise.
21899         * config/picochip/libgccExtras/ashlsi3.c: Likewise.
21900         * config/picochip/libgccExtras/ashrsi3.asm: Likewise.
21901         * config/picochip/libgccExtras/ashrsi3.c: Likewise.
21902         * config/picochip/libgccExtras/cmpsi2.asm: Likewise.
21903         * config/picochip/libgccExtras/divmod15.asm: Likewise.
21904         * config/picochip/libgccExtras/divmodhi4.asm: Likewise.
21905         * config/picochip/libgccExtras/divmodsi4.asm: Likewise.
21906         * config/picochip/libgccExtras/longjmp.asm: Likewise.
21907         * config/picochip/libgccExtras/lshrsi3.asm: Likewise.
21908         * config/picochip/libgccExtras/lshrsi3.c: Likewise.
21909         * config/picochip/libgccExtras/parityhi2.asm: Likewise.
21910         * config/picochip/libgccExtras/popcounthi2.asm: Likewise.
21911         * config/picochip/libgccExtras/setjmp.asm: Likewise.
21912         * config/picochip/libgccExtras/subdi3.asm: Likewise.
21913         * config/picochip/libgccExtras/ucmpsi2.asm: Likewise.
21914         * config/picochip/libgccExtras/udivmodhi4.asm: Likewise.
21915         * config/picochip/libgccExtras/udivmodsi4.asm: Likewise.
21916         * config/rs6000/750cl.h: Likewise.
21917         * config/rs6000/altivec.h: Likewise.
21918         * config/rs6000/biarch64.h: Likewise.
21919         * config/rs6000/crtresfpr.asm: Likewise.
21920         * config/rs6000/crtresgpr.asm: Likewise.
21921         * config/rs6000/crtresxfpr.asm: Likewise.
21922         * config/rs6000/crtresxgpr.asm: Likewise.
21923         * config/rs6000/crtsavfpr.asm: Likewise.
21924         * config/rs6000/crtsavgpr.asm: Likewise.
21925         * config/rs6000/darwin-asm.h: Likewise.
21926         * config/rs6000/darwin-fallback.c: Likewise.
21927         * config/rs6000/darwin-fpsave.asm: Likewise.
21928         * config/rs6000/darwin-ldouble.c: Likewise.
21929         * config/rs6000/darwin-tramp.asm: Likewise.
21930         * config/rs6000/darwin-unwind.h: Likewise.
21931         * config/rs6000/darwin-vecsave.asm: Likewise.
21932         * config/rs6000/darwin-world.asm: Likewise.
21933         * config/rs6000/e500crtres32gpr.asm: Likewise.
21934         * config/rs6000/e500crtres64gpr.asm: Likewise.
21935         * config/rs6000/e500crtres64gprctr.asm: Likewise.
21936         * config/rs6000/e500crtrest32gpr.asm: Likewise.
21937         * config/rs6000/e500crtrest64gpr.asm: Likewise.
21938         * config/rs6000/e500crtresx32gpr.asm: Likewise.
21939         * config/rs6000/e500crtresx64gpr.asm: Likewise.
21940         * config/rs6000/e500crtsav32gpr.asm: Likewise.
21941         * config/rs6000/e500crtsav64gpr.asm: Likewise.
21942         * config/rs6000/e500crtsav64gprctr.asm: Likewise.
21943         * config/rs6000/e500crtsavg32gpr.asm: Likewise.
21944         * config/rs6000/e500crtsavg64gpr.asm: Likewise.
21945         * config/rs6000/e500crtsavg64gprctr.asm: Likewise.
21946         * config/rs6000/eabi-ci.asm: Likewise.
21947         * config/rs6000/eabi-cn.asm: Likewise.
21948         * config/rs6000/eabi.asm: Likewise.
21949         * config/rs6000/linux-unwind.h: Likewise.
21950         * config/rs6000/linux64.h: Likewise.
21951         * config/rs6000/paired.h: Likewise.
21952         * config/rs6000/paired.md: Likewise.
21953         * config/rs6000/ppc64-fp.c: Likewise.
21954         * config/rs6000/ppu_intrinsics.h: Likewise.
21955         * config/rs6000/rs6000.h: Likewise.
21956         * config/rs6000/si2vmx.h: Likewise.
21957         * config/rs6000/sol-ci.asm: Likewise.
21958         * config/rs6000/sol-cn.asm: Likewise.
21959         * config/rs6000/spe.h: Likewise.
21960         * config/rs6000/spu2vmx.h: Likewise.
21961         * config/rs6000/sysv4.h: Likewise.
21962         * config/rs6000/tramp.asm: Likewise.
21963         * config/rs6000/vec_types.h: Likewise.
21964         * config/s390/linux-unwind.h: Likewise.
21965         * config/s390/tpf-unwind.h: Likewise.
21966         * config/score/crti.asm: Likewise.
21967         * config/score/crtn.asm: Likewise.
21968         * config/sh/crt1.asm: Likewise.
21969         * config/sh/crti.asm: Likewise.
21970         * config/sh/crtn.asm: Likewise.
21971         * config/sh/divtab-sh4-300.c: Likewise.
21972         * config/sh/divtab-sh4.c: Likewise.
21973         * config/sh/divtab.c: Likewise.
21974         * config/sh/lib1funcs-4-300.asm: Likewise.
21975         * config/sh/lib1funcs-Os-4-200.asm: Likewise.
21976         * config/sh/lib1funcs.asm: Likewise.
21977         * config/sh/lib1funcs.h: Likewise.
21978         * config/sh/linux-atomic.asm: Likewise.
21979         * config/sh/linux-unwind.h: Likewise.
21980         * config/sh/shmedia.h: Likewise.
21981         * config/sh/sshmedia.h: Likewise.
21982         * config/sh/ushmedia.h: Likewise.
21983         * config/sparc/crtfastmath.c: Likewise.
21984         * config/sparc/linux-unwind.h: Likewise.
21985         * config/sparc/sol2-c1.asm: Likewise.
21986         * config/sparc/sol2-ci.asm: Likewise.
21987         * config/sparc/sol2-cn.asm: Likewise.
21988         * config/spu/divmodti4.c: Likewise.
21989         * config/spu/divv2df3.c: Likewise.
21990         * config/spu/float_disf.c: Likewise.
21991         * config/spu/float_unsdidf.c: Likewise.
21992         * config/spu/float_unsdisf.c: Likewise.
21993         * config/spu/float_unssidf.c: Likewise.
21994         * config/spu/mfc_multi_tag_release.c: Likewise.
21995         * config/spu/mfc_multi_tag_reserve.c: Likewise.
21996         * config/spu/mfc_tag_release.c: Likewise.
21997         * config/spu/mfc_tag_reserve.c: Likewise.
21998         * config/spu/mfc_tag_table.c: Likewise.
21999         * config/spu/multi3.c: Likewise.
22000         * config/spu/spu_internals.h: Likewise.
22001         * config/spu/spu_intrinsics.h: Likewise.
22002         * config/spu/spu_mfcio.h: Likewise.
22003         * config/spu/vec_types.h: Likewise.
22004         * config/spu/vmx2spu.h: Likewise.
22005         * config/stormy16/stormy16-lib2.c: Likewise.
22006         * config/svr4.h: Likewise.
22007         * config/sync.c: Likewise.
22008         * config/v850/lib1funcs.asm: Likewise.
22009         * config/vxlib-tls.c: Likewise.
22010         * config/vxlib.c: Likewise.
22011         * config/vxworks-dummy.h: Likewise.
22012         * config/xtensa/crti.asm: Likewise.
22013         * config/xtensa/crtn.asm: Likewise.
22014         * config/xtensa/ieee754-df.S: Likewise.
22015         * config/xtensa/ieee754-sf.S: Likewise.
22016         * config/xtensa/lib1funcs.asm: Likewise.
22017         * config/xtensa/lib2funcs.S: Likewise.
22018         * config/xtensa/linux-unwind.h: Likewise.
22019         * config/xtensa/unwind-dw2-xtensa.c: Likewise.
22020         * config/xtensa/unwind-dw2-xtensa.h: Likewise.
22021         * coretypes.h: Likewise.
22022         * crtstuff.c: Likewise.
22023         * defaults.h: Likewise.
22024         * dwarf2.h: Likewise.
22025         * emutls.c: Likewise.
22026         * gbl-ctors.h: Likewise.
22027         * gcov-io.h: Likewise.
22028         * ginclude/float.h: Likewise.
22029         * ginclude/iso646.h: Likewise.
22030         * ginclude/stdarg.h: Likewise.
22031         * ginclude/stdbool.h: Likewise.
22032         * ginclude/stddef.h: Likewise.
22033         * ginclude/stdfix.h: Likewise.
22034         * ginclude/stdint-gcc.h: Likewise.
22035         * ginclude/tgmath.h: Likewise.
22036         * gthr-aix.h: Likewise.
22037         * gthr-dce.h: Likewise.
22038         * gthr-gnat.c: Likewise.
22039         * gthr-gnat.h: Likewise.
22040         * gthr-lynx.h: Likewise.
22041         * gthr-mipssde.h: Likewise.
22042         * gthr-nks.h: Likewise.
22043         * gthr-posix.c: Likewise.
22044         * gthr-posix.h: Likewise.
22045         * gthr-posix95.h: Likewise.
22046         * gthr-rtems.h: Likewise.
22047         * gthr-single.h: Likewise.
22048         * gthr-solaris.h: Likewise.
22049         * gthr-tpf.h: Likewise.
22050         * gthr-vxworks.h: Likewise.
22051         * gthr-win32.h: Likewise.
22052         * gthr.h: Likewise.
22053         * libgcc2.c: Likewise.
22054         * libgcc2.h: Likewise.
22055         * libgcov.c: Likewise.
22056         * tsystem.h: Likewise.
22057         * typeclass.h: Likewise.
22058         * unwind-c.c: Likewise.
22059         * unwind-compat.h: Likewise.
22060         * unwind-dw2-fde-compat.c: Likewise.
22061         * unwind-dw2-fde-darwin.c: Likewise.
22062         * unwind-dw2-fde-glibc.c: Likewise.
22063         * unwind-dw2-fde.c: Likewise.
22064         * unwind-dw2-fde.h: Likewise.
22065         * unwind-dw2.c: Likewise.
22066         * unwind-dw2.h: Likewise.
22067         * unwind-generic.h: Likewise.
22068         * unwind-pe.h: Likewise.
22069         * unwind-sjlj.c: Likewise.
22070         * unwind.inc: Likewise.
22071         * config/arm/neon-gen.ml: Change generated copyright header to
22072         refer to version 3 of the GNU General Public License with
22073         version 3.1 of the GCC Runtime Library Exception and to point
22074         readers at the COPYING3 and COPYING3.RUNTIME files and the
22075         FSF's license web page.
22076         * config/arm/arm_neon.h: Regenerate.
22077
22078 2009-04-09  Jakub Jelinek  <jakub@redhat.com>
22079
22080         * config/cris/cris.md: Change copyright header to refer to version
22081         3 of the GNU General Public License.
22082         * doc/install.texi2html: Change copyright header to refer to version
22083         3 of the GNU General Public License and to point readers at the
22084         COPYING3 file and the FSF's license web page.
22085         * config/vax/linux.h: Likewise.
22086
22087 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
22088
22089         * config/i386/i386.md (cmpcc): New.
22090         * config/i386/sync.md (sync_compare_and_swap*): Set FLAGS_REG.
22091         (sync_compare_and_swap_cc*): Delete.
22092
22093         * config/s390/s390.c (s390_compare_emitted): Remove.
22094         (s390_emit_compare): Handle MODE_CC s390_compare_op0 like
22095         s390_compare_emitted used to be handled.  Assert that modes match.
22096         (s390_emit_compare_and_swap): Use s390_emit_compare, do not
22097         refer to sync_compare_and_swap_ccsi.
22098         * config/s390/s390.h (s390_compare_emitted): Remove.
22099         * config/s390/s390.md (seq): Look for MODE_CC s390_compare_op0
22100         instead of s390_compare_emitted.
22101         (stack_protect_test, sync_compare_and_swap_cc): Set s390_compare_op0
22102         instead of s390_compare_emitted.
22103         * config/s390/s390.md (cmpcc): New.
22104         (sync_compare_and_swapqi, sync_compare_and_swaphi): Clobber
22105         CC_REGNUM, do not pretend it's set.
22106         (sync_compare_and_swap_cc*): Delete.
22107         * config/s390/predicates.md (cc_reg_operand): New.
22108
22109         * expr.c (sync_compare_and_swap_cc): Delete.
22110         * optabs.h (sync_compare_and_swap_cc): Delete.
22111         * optabs.c (prepare_cmp_insn): Ignore which specific CCmode
22112         is being used with can_compare_p.
22113         (emit_cmp_and_jump_insn_1): Likewise when looking in the optab.
22114         (find_cc_set): New.
22115         (expand_bool_compare_and_swap): Do not use sync_compare_and_swap_cc,
22116         look for a MODE_CC set instead.  Use emit_store_flag.
22117         (expand_compare_and_swap_loop): Likewise, with some additional
22118         complication to avoid a force_reg when useless.  Use
22119         emit_cmp_and_jump_insns.
22120         * genopinit.c (optabs): Delete sync_compare_and_swap_cc.
22121         * doc/md.texi (sync_compare_and_swap_cc): Merge with
22122         sync_compare_and_swap documentation.
22123
22124 2009-04-09  Jan Hubicka  <jh@suse.cz>
22125
22126         * except.c (find_prev_try): Break out from ....
22127         (duplicate_eh_regions): ... here; properly update prev_try pointers
22128         when duplication part of tree.
22129         (dump_eh_tree): Improve dumping.
22130         (verify_eh_region): New.
22131         (verify_eh_tree): Use it.
22132
22133 2009-04-06  Richard Guenther  <rguenther@suse.de>
22134
22135         * c-gimplify.c (c_gimplify_expr): Fix the invalid GENERIC
22136         &ARRAY addresses by adjusting their types and prepending
22137         a conversion.
22138         * tree-cfg.c (verify_gimple_assign_single): Verify that
22139         addresses are correct.
22140
22141 2009-04-09  Richard Guenther  <rguenther@suse.de>
22142
22143         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Move non-constant
22144         indices into an array reference if possible.
22145         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
22146         Fold POINTER_PLUS_EXPR statements with invariant address.
22147
22148 2009-04-09  Alan Modra  <amodra@bigpond.net.au>
22149
22150         PR target/39634
22151         * config.gcc (powerpc64-*-linux*): Always build biarch.
22152
22153 2009-04-09  Joseph Myers  <joseph@codesourcery.com>
22154
22155         PR c/39613
22156         * c-typeck.c (do_case): If case label is not an INTEGER_CST, fold
22157         it and pedwarn if this results in an INTEGER_CST.
22158
22159 2009-04-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
22160
22161         * doc/install.texi: Update minimum GMP version.  Remove obsolete
22162         text in MPFR section.
22163
22164 2009-04-08  Jakub Jelinek  <jakub@redhat.com>
22165
22166         * dwarf2out.c (class_scope_p): New static inline.
22167         (class_or_namespace_scope_p): Use it.
22168         (gen_variable_die): Use DW_TAG_member tag for static data member
22169         declarations instead of DW_TAG_variable.
22170
22171         PR middle-end/39573
22172         * omp-low.c (expand_omp_taskreg): Finalize taskreg static local_decls
22173         variables.
22174
22175 2009-04-08  Richard Guenther  <rguenther@suse.de>
22176
22177         * tree-ssa-sccvn.c (valueize_refs): Do not continue to
22178         valueize random data.
22179
22180 2009-04-08  David Edelsohn  <edelsohn@gnu.org>
22181
22182         * config.gcc (aix tm_file):  Add aix-stdint.h.
22183         (aix tm clause use_gcc_stdint):  Set to wrap.
22184         * config/rs6000/aix-stdint.h:  New file.
22185
22186 2009-04-08  Richard Guenther  <rguenther@suse.de>
22187
22188         PR middle-end/36291
22189         * tree-dfa.c (add_referenced_var): Do not recurse into
22190         global initializers.
22191         * tree-ssa-ccp.c (get_symbol_constant_value): Add newly
22192         exposed variables.
22193         (fold_const_aggregate_ref): Likewise.
22194
22195 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
22196
22197         * recog.c (ordered_comparison_operator): New.
22198         * gensupport.c (std_preds): Add it.
22199         * doc/md.texi (Machine-Independent Predicates): Document it.
22200
22201 2009-04-08  Jan Hubicka  <jh@suse.cz>
22202
22203         * tree-eh.c (cleanup_eh): When not optimizing, do not try EH merging.
22204         * function.h (rtl_eh): Remove exception_handler_label_map.
22205         * except.c (ehl_hash, ehl_eq, add_ehl_entry,
22206         remove_exception_handler_label, for_each_eh_label_1): Remove.
22207         (rtl_remove_unreachable_regions): Remove.
22208         (convert_from_eh_region_ranges): Do not remove unreachable regions.
22209         (find_exception_handler_labels): Don't build the hashtable.
22210         (maybe_remove_eh_handler): Remove.
22211         (for_each_eh_label): Rewrite to walk the tree.
22212         (rest_of_handle_eh): Do not cleanup cfg prior EH construction.
22213         * except.h (maybe_remove_eh_handler): Remove.
22214         * passes.c (init_optimization_passes): Schedule second EH cleanup
22215         before out-of-ssa.
22216         * cfgrtl.c (rtl_delete_block, rtl_merge_blocks,
22217         cfg_layout_merge_blocks): Do not call maybe_remove_eh_handler.
22218
22219 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
22220
22221         * genoutput.c (validate_optab_operands): New.
22222         (gen_insn, gen_expand): Call it.
22223
22224         * genflags.c (gen_insn): Detect misused iterators.
22225         (main): Pass line_no to gen_insn, exit with status 1 on error.
22226
22227         * genextract.c (line_no): Make global.
22228         (VEC_safe_set_locstr): Change assertion to error message.
22229         (main): Exit with status 1 on error.
22230
22231 2009-04-08  Joseph Myers  <joseph@codesourcery.com>
22232
22233         PR c/39614
22234         PR c/39673
22235         * c-common.h (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
22236         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
22237         EXPR_INT_CONST_OPERANDS): Remove duplicate definitions.
22238         * c-convert.c (convert): Do not call fold on results of conversion
22239         functions when the result is a C_MAYBE_CONST_EXPR.
22240         * c-parser.c (c_parser_postfix_expression): Do not fold condition
22241         of __builtin_choose_expr.
22242         * c-typeck.c (remove_c_maybe_const_expr): New.
22243         (build_unary_op, build_conditional_expr, build_compound_expr,
22244         build_binary_op, c_objc_common_truthvalue_conversion): Call
22245         remove_c_maybe_const_expr on any input C_MAYBE_CONST_EXPR with
22246         integer operands.
22247
22248 2009-04-08  Bingfeng Mei  <bmei@broadcom.com>
22249
22250         * fold-const.c (const_binop): Combine two VECTOR_CST under operation
22251         CODE to produce a new one. Add a prototype to use fold_convert_const
22252
22253 2009-04-08  Danny Smith  <dannysmith@users.sourceforge.net>
22254
22255         PR bootstrap/39660
22256         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address): Don't
22257         mix declarations and code.
22258
22259 2009-04-08  Ben Elliston  <bje@au.ibm.com>
22260
22261         * gcc.c: Replace `CC' with `GCC' throughout.
22262
22263 2009-04-07  H.J. Lu  <hongjiu.lu@intel.com>
22264
22265         * doc/invoke.texi: Document Atom support.
22266
22267 2009-04-07  Jason Merrill  <jason@redhat.com>
22268
22269         PR c++/25185
22270         * c-common.h, c-common.c: Add flag_pretty_templates.
22271         * c-opts.c (c_common_handle_option): Set it.
22272         * c.opt: Add -fno-pretty-templates.
22273         * doc/invoke.texi (C++ Dialect Options): Likewise.
22274
22275 2009-04-07  Uros Bizjak  <ubizjak@gmail.com>
22276
22277         * config/ia64/ia64.c (ia64_builtins): Add IA64_BUILTIN_HUGE_VALQ.
22278         (ia64_init_builtins): Handle IA64_BUILTIN_HUGE_VALQ.
22279         (ia64_expand_builtin): Likewise.
22280
22281 2009-04-07  Martin Jambor  <mjambor@suse.cz>
22282
22283         * tree-ssa-alias.c (refs_may_alias_p_1): Check for
22284         is_gimple_min_invariant rather than CONSTANT_CLASS_P so that invariant
22285         ADDR_EXPRS are include too.
22286
22287 2009-04-07  Richard Guenther  <rguenther@suse.de>
22288
22289         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Non-aliased
22290         decls are only used if passes as parameters or if they are
22291         local statics and the call is not to a builtin.
22292         (call_may_clobber_ref_p_1): Likewise.
22293
22294 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
22295
22296         * expr.c (do_store_flag): Remove last argument.  Simplify code
22297         to avoid duplication of tests already done by can_compare_p.
22298         (expand_expr_real_1): Adjust caller.
22299
22300 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
22301
22302         * optabs.c (can_compare_p): Test the predicate of a
22303         cbranch and cstore pattern.
22304
22305 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
22306
22307         * expr.c (convert_move): Use emit_store_flag instead of
22308         "emulating" it.
22309
22310 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
22311
22312         * config/i386/i386.c (ix86_compare_emitted): Remove.
22313         (ix86_expand_compare, ix86_expand_branch): Handle MODE_CC
22314         ix86_compare_op0 like ix86_compare_emitted used to be handled.
22315         * config/i386/i386.h (ix86_compare_emitted): Remove.
22316         * config/i386/i386.md (stack_protect_test): Set ix86_compare_op0
22317         instead of ix86_compare_emitted.
22318         * config/i386/sync.md (sync_compare_and_swap_cc): Likewise.
22319
22320 2009-04-07  Andrew Stubbs  <ams@codesourcery.com>
22321
22322         * config.gcc (sh-*-*): Add sysroot-suffix.h to tm_file.
22323         Add t-sysroot-suffix to tmake_file.
22324         * config/print-sysroot-suffix.sh: New file.
22325         * config/t-sysroot-suffix: New file.
22326
22327 2009-04-07  Ben Elliston  <bje@au.ibm.com>
22328
22329         * libgcc2.c (INFINITY): Use __builtin_huge_val, not __builtin_inf,
22330         as the latter produces a warning when the target does not support
22331         infinity.
22332
22333 2009-04-07  Ben Elliston  <bje@au.ibm.com>
22334
22335         * dfp.c: Replace type punning assignments with memcpy throughout.
22336         * Makefile.in (dfp.o-warn): Remove.
22337
22338 2009-04-07  Alan Modra  <amodra@bigpond.net.au>
22339
22340         PR target/39634
22341         * config.gcc: Merge powerpc-*-linux* and powerpc64-*-linux*.
22342         Include soft-fp/t-softfp after rs6000/t-linux64.
22343
22344 2009-04-06  Eric Botcazou  <ebotcazou@adacore.com>
22345
22346         * stor-layout.c (set_sizetype): Use the full precision of their
22347         machine mode for bitsize types.
22348
22349 2009-04-06  H.J. Lu  <hongjiu.lu@intel.com>
22350
22351         * config/i386/i386.md: Revert 2 accidental checkins.
22352
22353 2009-04-06  Joey Ye  <joey.ye@intel.com>
22354             Xuepeng Guo  <xuepeng.guo@intel.com>
22355             H.J. Lu  <hongjiu.lu@intel.com>
22356
22357         Atom pipeline model, tuning and insn selection.
22358         * config.gcc (atom): Add atom config options and target.
22359
22360         * config/i386/atom.md: New.
22361
22362         * config/i386/i386.c (atom_cost): New cost.
22363         (m_ATOM): New macro flag.
22364         (initial_ix86_tune_features): Set m_ATOM.
22365         (x86_accumulate_outgoing_args): Likewise.
22366         (x86_arch_always_fancy_math_387): Likewise.
22367         (processor_target): Add Atom cost.
22368         (cpu_names): Add Atom cpu name.
22369         (override_options): Set Atom ISA.
22370         (ix86_issue_rate): New case PROCESSOR_ATOM.
22371         (ix86_adjust_cost): Likewise.
22372
22373         * config/i386/i386.h (TARGET_ATOM): New target macro.
22374         (ix86_tune_indices): Add X86_TUNE_OPT_AGU.
22375         (TARGET_OPT_AGU): New target option.
22376         (target_cpu_default): Add TARGET_CPU_DEFAULT_atom.
22377         (processor_type): Add PROCESSOR_ATOM.
22378
22379         * config/i386/i386.md (cpu): Add new value "atom".
22380         (use_carry, movu): New attr.
22381         (atom.md): Include atom.md.
22382         (adddi3_carry_rex64): Set attr "use_carry".
22383         (addqi3_carry): Likewise.
22384         (addhi3_carry): Likewise.
22385         (addsi3_carry): Likewise.
22386         (*addsi3_carry_zext): Likewise.
22387         (subdi3_carry_rex64): Likewise.
22388         (subqi3_carry): Likewise.
22389         (subhi3_carry): Likewise.
22390         (subsi3_carry): Likewise.
22391         (x86_movdicc_0_m1_rex64): Likewise.
22392         (*x86_movdicc_0_m1_se): Likewise.
22393         (x86_movsicc_0_m1): Likewise.
22394         (*x86_movsicc_0_m1_se): Likewise.
22395         (*adddi_1_rex64): Emit add insn as much as possible.
22396         (*addsi_1): Likewise.
22397         (return_internal): Set atom_unit.
22398         (return_internal_long): Likewise.
22399         (return_pop_internal): Likewise.
22400         (*rcpsf2_sse): Set atom_sse_attr attr.
22401         (*qrt<mode>2_sse): Likewise.
22402         (*prefetch_sse): Likewise.
22403
22404         * config/i386/i386-c.c (ix86_target_macros_internal): New case
22405         PROCESSOR_ATOM.
22406         (ix86_target_macros_internal): Likewise.
22407
22408         * config/i386/sse.md (cpu): Set attr "atom_sse_attr".
22409         (*prefetch_sse_rex): Likewise.
22410         (sse_rcpv4sf2): Likewise.
22411         (sse_vmrcpv4sf2): Likewise.
22412         (sse_sqrtv4sf2): Likewise.
22413         (<sse>_vmsqrt<mode>2): Likewise.
22414         (sse_ldmxcsr): Likewise.
22415         (sse_stmxcsr): Likewise.
22416         (*sse_sfence): Likewise.
22417         (sse2_clflush): Likewise.
22418         (*sse2_mfence): Likewise.
22419         (*sse2_lfence): Likewise.
22420         (avx_movup<avxmodesuffixf2c><avxmodesuffix>): Set attr "movu".
22421         (<sse>_movup<ssemodesuffixf2c>): Likewise.
22422         (avx_movdqu<avxmodesuffix>): Likewise.
22423         (avx_lddqu<avxmodesuffix>): Likewise.
22424         (sse2_movntv2di): Change attr "type" to "ssemov".
22425         (sse2_movntsi): Likewise.
22426         (rsqrtv8sf2): Change attr "type" to "sseadd".
22427         (sse3_addsubv2df3): Set attr "atom_unit".
22428         (sse3_h<plusminus_insn>v4sf3): Likewise.
22429         (*sse2_pmaddwd): Likewise.
22430         (*vec_extractv2di_1_rex64): Likewise.
22431         (*vec_extractv2di_1_avx): Likewise.
22432         (sse2_psadbw): Likewise.
22433         (ssse3_phaddwv8hi3): Likewise.
22434         (ssse3_phaddwv4hi3): Likewise.
22435         (ssse3_phadddv4si3): Likewise.
22436         (ssse3_phadddv2si3): Likewise.
22437         (ssse3_phaddswv8hi3): Likewise.
22438         (ssse3_phaddswv4hi3): Likewise.
22439         (ssse3_phsubwv8hi3): Likewise.
22440         (ssse3_phsubwv4hi3): Likewise.
22441         (ssse3_phsubdv4si3): Likewise.
22442         (ssse3_phsubdv2si3): Likewise.
22443         (ssse3_phsubswv8hi3): Likewise.
22444         (ssse3_phsubswv4hi3): Likewise.
22445         (ssse3_pmaddubsw128): Likewise.
22446         (sse3_pmaddubsw: Likewise.
22447         (ssse3_palignrti): Likewise.
22448         (ssse3_palignrdi): Likewise.
22449
22450 2009-04-06  Gerald Pfeifer  <gerald@pfeifer.com>
22451
22452         * doc/install.texi (Specific): Fix two cross-references to MinGW.
22453
22454 2009-04-06  Richard Guenther  <rguenther@suse.de>
22455
22456         PR tree-optimization/28868
22457         * tree-ssa-pre.c (inserted_phi_names): New bitmap to keep track
22458         of which PHI results we inserted.
22459         (insert_into_preds_of_block): Record inserted PHIs.
22460         (eliminate): Eliminate redundant PHI nodes.
22461         (init_pre): Init inserted_phi_names.
22462
22463 2009-04-06  Richard Guenther  <rguenther@suse.de>
22464
22465         PR tree-optimization/39643
22466         * tree-ssa-ccp.c (ccp_fold): Fold REALPART_EXPRs and
22467         IMAGPART_EXPRs of complex constants.
22468         (execute_fold_all_builtins): If we folded a call queue
22469         TODO_update_address_taken.
22470
22471 2009-04-06  Jan Hubicka  <jh@suse.cz>
22472
22473         PR middle-end/39659
22474         * except.c (remove_unreachable_regions): Propagate may_contain_throw
22475         flag.
22476
22477 2009-04-06  Andrew Stubbs  <ams@codesourcery.com>
22478
22479         * config/sh/lib1funcs.asm (ic_invalidate): Move ICBI out of the
22480         delay slot.
22481         (ic_invalidate_array): Likewise.
22482
22483 2009-04-06  Hariharan Sandanagobalane  <hariharan@picochip.com>
22484
22485         * calls.c (emit_library_call_value_1): Fix a problem with parameter
22486         alignment for library calls.
22487
22488 2009-04-06  Danny Smith  <dannysmith@users.sourceforge.net>
22489
22490         * config.gcc (mingw32 tm_file):  Add mingw-stdint.h.
22491         (mingw32 tm clause use_gcc_stdint):  Set to wrap.
22492         * config/i386/mingw-stdint.h:  New file.
22493
22494 2009-04-05  Richard Guenther  <rguenther@suse.de>
22495
22496         PR tree-optimization/39648
22497         * tree-ssa-sccvn.c (vn_reference_fold_indirect): Work around
22498         our &A vs. &A[0] IL deficiencies.
22499
22500 2009-04-04  Jan Hubicka  <jh@suse.cz>
22501
22502         * except.c (sjlj_find_directly_reachable_regions): Be ready for
22503         removed toplevel regions.
22504         (sjlj_mark_call_sites): Likewise.
22505
22506 2009-04-04  Dave Korn  <dave.korn.cygwin@gmail.com>
22507
22508         * config.gcc (cygwin tm_file):  Add cygwin-stdint.h.
22509         (cygwin tm clause use_gcc_stdint):  Set to wrap.
22510         * config/i386/cygwin-stdint.h:  New file.
22511
22512 2009-04-04  Richard Guenther  <rguenther@suse.de>
22513
22514         * Makefile.in (tree-ssa-copy.o): Add $(CFGLOOP_H) dependency.
22515         * tree-ssa-copy.c (init_copy_prop): Do not propagate through
22516         single-argument PHIs if we are in loop-closed SSA form.
22517         * tree-vect-loop-manip.c (slpeel_add_loop_guard): Pass extra guards
22518         for the pre-condition.
22519         (slpeel_tree_peel_loop_to_edge): Likewise.
22520         (vect_build_loop_niters): Take an optional sequence to append stmts.
22521         (vect_generate_tmps_on_preheader): Likewise.
22522         (vect_do_peeling_for_loop_bound): Take extra guards for the
22523         pre-condition.
22524         (vect_do_peeling_for_alignment): Adjust.  Unconditionally apply
22525         the cost model check.
22526         (vect_loop_versioning): Take stmt and stmt list to put pre-condition
22527         guards if we are going to peel.  Do not apply versioning in that case.
22528         * tree-vectorizer.h (vect_loop_versioning): Adjust declaration.
22529         (vect_do_peeling_for_loop_bound): Likewise.
22530         * tree-vect-loop.c (vect_transform_loop): If we are peeling for
22531         loop bound only record extra pre-conditions, do not apply loop
22532         versioning.
22533
22534 2009-04-04  Richard Guenther  <rguenther@suse.de>
22535
22536         * tree-ssa-operands.c (pop_stmt_changes): Remove automatic
22537         renaming code.
22538
22539 2009-04-04  Jan Hubicka  <jh@suse.cz>
22540
22541         * tree-ssa-uncprop.c (associate_equivalences_with_edges): Use
22542         last_basic_block for size of bb->index indexed array.
22543         * bt-load.c (compute_defs_uses_and_gen, compute_kill,
22544         compute_out, link_btr_uses, build_btr_def_use_webs,
22545         build_btr_def_use_webs, migrate_btr_defs): Likewise.
22546
22547 2009-04-04  Jan Hubicka  <jh@suse.cz>
22548
22549         * except.c (remove_eh_handler_and_replace): Break out from ...
22550         (remove_eh_handler): ... here.
22551         (bring_to_root): New function.
22552         (remove_unreachable_regions): Collect MUST_NOT_THROW, unify runtime
22553         handled ones, bring others to root of tree.
22554
22555 2009-04-04  Jan Hubicka  <jh@suse.cz>
22556
22557         * tree-eh.c (tree_empty_eh_handler_p): Pattern match more curefully.
22558         (all_phis_safe_to_merge): New function.
22559         (update_info): New structure.
22560         (make_eh_edge_and_update_phi, update_eh_edges): New functions.
22561         (cleanup_empty_eh): Update SSA if possible.
22562
22563 2009-04-04  Richard Guenther  <rguenther@suse.de>
22564
22565         * tree-ssa.c (verify_ssa): With -O0 we do not need VOPs.
22566         * tree-ssa-operands.c (append_vdef): Do not append VOPs at -O0.
22567         (append_vuse): Likewise.
22568
22569 2009-04-04  Jakub Jelinek  <jakub@redhat.com>
22570
22571         * unwind-dw2.h (_Unwind_FrameState): Add REG_UNDEFINED enum value.
22572         * unwind-dw2.c (execute_cfa_program): Set how to REG_UNDEFINED
22573         instead of REG_UNSAVED for DW_CFA_undefined.
22574         (uw_update_context_1): Handle REG_UNDEFINED the same as REG_UNSAVED.
22575         (uw_update_context): If RA column is REG_UNDEFINED, mark it as
22576         outermost frame.
22577
22578 2009-04-04  Richard Earnshaw  <rearnsha@arm.com>
22579
22580         PR target/39501
22581         * arm.md (movsfcc): Disable if not TARGET_HARD_FLOAT.
22582
22583 2009-04-04  Richard Guenther  <rguenther@suse.de>
22584
22585         PR tree-optimization/8781
22586         PR tree-optimization/37892
22587         * tree-ssa-sccvn.h (vn_reference_fold_indirect): Declare.
22588         * tree-ssa-sccvn.c (vn_reference_fold_indirect): New function.
22589         (valueize_refs): Call it for *& valueizations.
22590         (shared_reference_ops_from_ref): Rename to ...
22591         (valueize_shared_reference_ops_from_ref): ... this and valueize.
22592         (shared_reference_ops_from_call): Rename to ...
22593         (valueize_shared_reference_ops_from_call): ... this and valueize.
22594         (vn_reference_lookup): Update.
22595         (visit_reference_op_call): Likewise.
22596         * tree-ssa-pre.c (phi_translate_1): Fold *&.
22597         (eliminate): Value-replace the call address in call statements.
22598
22599 2009-04-04  Richard Guenther  <rguenther@suse.de>
22600
22601         PR tree-optimization/39636
22602         * tree-ssa-forwprop.c
22603         (forward_propagate_addr_into_variable_array_index): Check for
22604         GIMPLE_ASSIGN before accessing the rhs code.
22605
22606 2009-04-03  Jason Merrill  <jason@redhat.com>
22607
22608         * stor-layout.c (set_sizetype): Set TYPE_CANONICAL.
22609
22610 2009-04-03  Steve Ellcey  <sje@cup.hp.com>
22611
22612         * config/ia64/ia64.md (extendsfdf2, extendsfxf2, extenddfxf2,
22613         truncdfsf2, truncxfsf2, truncxfdf2, floatdixf2, fix_truncsfdi2,
22614         fix_truncdfdi2, fix_truncxfdi2, fix_truncxfdi2_alts, floatunsdisf2,
22615         floatunsdidf2, floatunsdixf2, fixuns_truncsfdi2, fixuns_truncdfdi2,
22616         fixuns_truncxfdi2, fixuns_truncxfdi2_alts, divsi3_internal,
22617         smuldi3_highpart, umuldi3_highpart, ctzdi2, *getf_exp_xf,
22618         divdi3_internal_lat, divdi3_internal_thr, mulditi3, *mulditi3_internal,
22619         umulditi3, *umulditi3_internal, addsf3, mulsf3, abssf2, negsf2,
22620         *nabssf2, sminsf3, smaxsf3, *maddsf4, *msubsf4, *nmulsf3, *nmaddsf4,
22621         *nmaddsf4_alts, divsf3, *sqrt_approx, sqrtsf2, sqrtsf2_internal_thr,
22622         adddf3, *adddf3_trunc, muldf3, *muldf3_trunc, absdf2, negdf2, *nabsdf2,
22623         smindf3, smaxdf3, *madddf4, *madddf4_trunc, *msubdf4, *msubdf4_trunc,
22624         *nmuldf3, *nmuldf3_trunc, *nmadddf4, *nmadddf4_alts, *nmadddf4_truncsf,
22625         *nmadddf4_truncsf_alts, divdf3, sqrtdf2, sqrtdf2_internal_thr, divxf3,
22626         sqrtxf2, sqrtxf2_internal_thr, *recip_approx):
22627         Use fr_reg_or_fp01_operand instead of fr_register_operand
22628
22629         * config/ia64/div.md (extend<mode>rf2, truncrf<mode>2,
22630         recip_approx_rf, divsf3_internal_thr, divsf3_internal_lat,
22631         divdf3_internal_thr, divdf3_internal_lat divxf3_internal): Ditto.
22632
22633 2009-04-03  Vladimir Makarov  <vmakarov@redhat.com>
22634
22635         PR rtl-optimization/39607
22636         PR rtl-optimization/39631
22637
22638         Revert:
22639
22640         2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
22641         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
22642         instead of DF_LR_OUT.
22643         * ira-lives.c (process_bb_node_lives): Ditto.
22644         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
22645         instead of DF_LR_{OUT,IN}.
22646         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
22647         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
22648
22649 2009-04-03  Steven Bosscher  <steven@gcc.gnu.org>
22650
22651         * omp-low.c (pass_expand_omp): Don't claim to provide PROP_gimple_lomp.
22652         (execute_lower_omp): Always run but take the short way out if -fopenmp
22653         is not given.
22654         (gate_lower_omp): Remove, forcing the pass manager to always run the
22655         pass and always set PROP_gimple_lomp.
22656         (pass_lower_omp): Remove gate function.
22657         * matrix-reorg.c (pass_ipa_matrix_reorg): Don't claim to provide
22658         PROP_trees.  Instead, require it.
22659         * ipa-cp.c (pass_ipa_cp): Likewise.
22660         * ipa-inline.c (pass_early_inline): Don't claim to provide PROP_cfg.
22661         (pass_ipa_early_inline, pass_inline_parameters, pass_ipa_inline): Idem.
22662         * tree-profile.c (pass_tree_profile): Don't claim to provide PROP_cfg
22663         and PROP_gimple_leh.
22664
22665 2009-04-03  Richard Guenther  <rguenther@suse.de>
22666
22667         PR middle-end/13146
22668         PR tree-optimization/23940
22669         PR tree-optimization/33237
22670         PR middle-end/33974
22671         PR middle-end/34093
22672         PR tree-optimization/36201
22673         PR tree-optimization/36230
22674         PR tree-optimization/38049
22675         PR tree-optimization/38207
22676         PR tree-optimization/38230
22677         PR tree-optimization/38301
22678         PR tree-optimization/38585
22679         PR middle-end/38895
22680         PR tree-optimization/38985
22681         PR tree-optimization/39299
22682         * tree-ssa-structalias.h: Remove.
22683         * tree-ssa-operands.h (NULL_USE_OPERAND_P): Make of type use_operand_p.
22684         (NULL_DEF_OPERAND_P): Make of type def_operand_p.
22685         (struct vuse_element_d): Remove.
22686         (struct vuse_vec_d): Likewise.
22687         (VUSE_VECT_NUM_ELEM, VUSE_VECT_ELEMENT_NC, VUSE_ELEMENT_PTR_NC,
22688         VUSE_ELEMENT_VAR_NC, VUSE_VECT_ELEMENT, VUSE_ELEMENT_PTR,
22689         SET_VUSE_VECT_ELEMENT, SET_VUSE_ELEMENT_VAR, SET_VUSE_ELEMENT_PTR,
22690         VUSE_ELEMENT_VAR): Likewise.
22691         (struct voptype_d): Likewise.
22692         (NUM_VOP_FREE_BUCKETS): Likewise.
22693         (struct ssa_operands): Remove vop_free_buckets and mpt_table fields.
22694         (struct stmt_operands_d): Remove.
22695         (VUSE_OP_PTR, VUSE_OP, SET_VUSE_OP, VUSE_NUM, VUSE_VECT,
22696         VDEF_RESULT_PTR, VDEF_RESULT, VDEF_OP_PTR, VDEF_OP, SET_VDEF_OP,
22697         VDEF_NUM, VDEF_VECT): Likewise.
22698         (copy_virtual_operands): Remove.
22699         (operand_build_cmp): Likewise.
22700         (create_ssa_artificial_load_stmt): Likewise.
22701         (enum ssa_op_iter_type): Remove ssa_op_iter_vdef.
22702         (struct ssa_operand_iterator_d): Remove vuses, vdefs, mayusesm
22703         vuse_index and mayuse_index members.  Pack and move done and iter_type
22704         members to the front.
22705         (SSA_OP_VMAYUSE): Remove.
22706         (SSA_OP_VIRTUAL_USES): Adjust.
22707         (FOR_EACH_SSA_VDEF_OPERAND): Remove.
22708         (unlink_stmt_vdef): Declare.
22709         (add_to_addressable_set): Remove.
22710         * tree-vrp.c (stmt_interesting_for_vrp): Adjust.
22711         (vrp_visit_stmt): Likewise.
22712         * doc/tree-ssa.texi (Alias analysis): Update.
22713         * doc/invoke.texi (max-aliased-vops): Remove docs.
22714         (avg-aliased-vops): Likewise.
22715         * tree-into-ssa.c (syms_to_rename): Remove.
22716         (need_to_update_vops_p): Likewise.
22717         (need_to_initialize_update_ssa_p): Rename to ...
22718         (update_ssa_initialized_fn): ... this.  Track function we are
22719         initialized for.
22720         (symbol_marked_for_renaming): Simplify.
22721         (add_new_name_mapping): Do not set need_to_update_vops_p.
22722         (dump_currdefs): Use SYMS_TO_RENAME.
22723         (rewrite_update_stmt): Always walk all uses/defs.
22724         (dump_update_ssa): Adjust.
22725         (init_update_ssa): Take function argument.  Track what we are
22726         initialized for.
22727         (delete_update_ssa): Reset SYMS_TO_RENAME and update_ssa_initialized_fn.
22728         (create_new_def_for): Initialize for cfun, assert we are initialized
22729         for cfun.
22730         (mark_sym_for_renaming): Simplify.
22731         (mark_set_for_renaming): Do not initialize update-ssa.
22732         (need_ssa_update_p): Simplify.  Take function argument.
22733         (name_mappings_registered_p): Assert we ask for the correct function.
22734         (name_registered_for_update_p): Likewise.
22735         (ssa_names_to_replace): Likewise.
22736         (release_ssa_name_after_update_ssa): Likewise.
22737         (update_ssa): Likewise.  Use SYMS_TO_RENAME.
22738         (dump_decl_set): Do not print a newline.
22739         (debug_decl_set): Do it here.
22740         (dump_update_ssa): And here.
22741         * tree-ssa-loop-im.c (move_computations): Adjust.
22742         (movement_possibility): Likewise.
22743         (determine_max_movement): Likewise.
22744         (gather_mem_refs_stmt): Likewise.
22745         * tree-dump.c (dequeue_and_dump): Do not handle SYMBOL_MEMORY_TAG
22746         or NAME_MEMORY_TAG.
22747         * tree-complex.c (update_all_vops): Remove.
22748         (expand_complex_move): Adjust.
22749         * tree-ssa-loop-niter.c (chain_of_csts_start): Use NULL_TREE.
22750         Simplify test for memory referencing statement.  Exclude
22751         non-invariant ADDR_EXPRs.
22752         * tree-pretty-print.c (dump_generic_node): Do not handle memory tags.
22753         * tree-loop-distribution.c (generate_memset_zero): Adjust.
22754         (rdg_flag_uses): Likewise.
22755         * tree-tailcall.c (suitable_for_tail_opt_p): Remove memory-tag
22756         related code.
22757         (tree_optimize_tail_calls_1): Also split the
22758         edge from the entry block if we have degenerate PHI nodes in
22759         the first basic block.
22760         * tree.c (init_ttree): Remove memory-tag related code.
22761         (tree_code_size): Likewise.
22762         (tree_node_structure): Likewise.
22763         (build7_stat): Re-write to be build6_stat.
22764         * tree.h (MTAG_P, TREE_MEMORY_TAG_CHECK, TMR_TAG): Remove.
22765         (SSA_VAR_P): Adjust.
22766         (struct tree_memory_tag): Remove.
22767         (struct tree_memory_partition_tag): Likewise.
22768         (union tree_node): Adjust.
22769         (build7): Re-write to be build6.
22770         * tree-pass.h (pass_reset_cc_flags): Remove.
22771         (TODO_update_address_taken): New flag.
22772         (pass_simple_dse): Remove.
22773         * ipa-cp.c (ipcp_update_callgraph): Update SSA form.
22774         * params.h (MAX_ALIASED_VOPS): Remove.
22775         (AVG_ALIASED_VOPS): Likewise.
22776         * omp-low.c (expand_omp_taskreg): Update SSA form.
22777         * tree-ssa-dse.c (dse_optimize_stmt): Properly query if the rhs
22778         aliases the lhs in a copy stmt.
22779         * tree-ssa-dse.c (struct address_walk_data): Remove.
22780         (memory_ssa_name_same): Likewise.
22781         (memory_address_same): Likewise.
22782         (get_kill_of_stmt_lhs): Likewise.
22783         (dse_possible_dead_store_p): Simplify, use the oracle.  Handle
22784         unused stores.  Look through PHI nodes into post-dominated regions.
22785         (dse_optimize_stmt): Simplify.  Properly remove stores.
22786         (tree_ssa_dse): Compute dominators.
22787         (execute_simple_dse): Remove.
22788         (pass_simple_dse): Likewise.
22789         * ipa-reference.c (scan_stmt_for_static_refs): Open-code
22790         gimple_loaded_syms and gimple_stored_syms computation.
22791         * toplev.c (dump_memory_report): Dump alias and pta stats.
22792         * tree-ssa-sccvn.c (vn_reference_compute_hash): Simplify.
22793         (vn_reference_eq): Likewise.
22794         (vuses_to_vec, copy_vuses_from_stmt, vdefs_to_vec,
22795         copy_vdefs_from_stmt, shared_lookup_vops, shared_vuses_from_stmt,
22796         valueize_vuses): Remove.
22797         (get_def_ref_stmt_vuses): Simplify.  Rename to ...
22798         (get_def_ref_stmt_vuse): ... this.
22799         (vn_reference_lookup_2): New function.
22800         (vn_reference_lookup_pieces): Use walk_non_aliased_vuses for
22801         walking equivalent vuses.  Simplify.
22802         (vn_reference_lookup): Likewise.
22803         (vn_reference_insert): Likewise.
22804         (vn_reference_insert_pieces): Likewise.
22805         (visit_reference_op_call): Simplify.
22806         (visit_reference_op_load): Likewise.
22807         (visit_reference_op_store): Likewise.
22808         (init_scc_vn): Remove shared_lookup_vuses initialization.
22809         (free_scc_vn): Remove shared_lookup_vuses freeing.
22810         (sort_vuses, sort_vuses_heap): Remove.
22811         (get_ref_from_reference_ops): Export.
22812         * tree-ssa-sccvn.h (struct vn_reference_s): Replace vuses
22813         vector with single vuse pointer.
22814         (vn_reference_lookup_pieces, vn_reference_lookup,
22815         vn_reference_insert, vn_reference_insert_pieces): Adjust prototypes.
22816         (shared_vuses_from_stmt): Remove.
22817         (get_ref_from_reference_ops): Declare.
22818         * tree-ssa-loop-manip.c (slpeel_can_duplicate_loop_p): Adjust.
22819         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
22820         memory-tag related code.
22821         * tree-ssa-ccp.c (get_symbol_constant_value): Remove memory-tag code.
22822         (likely_value): Add comment, skip static-chain of call statements.
22823         (surely_varying_stmt_p): Adjust.
22824         (gimplify_and_update_call_from_tree): Likewise.
22825         (execute_fold_all_builtins): Do not rebuild alias info.
22826         (gimplify_and_update_call_from_tree): Properly update VOPs.
22827         * tree-ssa-loop-ivopts.c (get_ref_tag): Remove.
22828         (copy_ref_info): Remove memory-tag related code.
22829         * tree-call-cdce.c (tree_call_cdce): Rename the VOP.
22830         * ipa-pure-const.c (check_decl): Remove memory-tag related code.
22831         (check_stmt): Open-code gimple_loaded_syms and gimple_stored_syms
22832         computation.
22833         * tree-ssa-dom.c (gimple_p): Remove typedef.
22834         (eliminate_redundant_computations): Adjust.
22835         (record_equivalences_from_stmt): Likewise.
22836         (avail_expr_hash): Likewise.
22837         (avail_expr_eq): Likewise.
22838         * tree-ssa-propagate.c (update_call_from_tree): Properly update VOPs.
22839         (stmt_makes_single_load): Likewise.
22840         (stmt_makes_single_store): Likewise.
22841         * tree-ssa-alias.c: Rewrite completely.
22842         (debug_memory_partitions, dump_mem_ref_stats, debug_mem_ref_stats,
22843         debug_mem_sym_stats, dump_mem_sym_stats_for_var,
22844         debug_all_mem_sym_stats, debug_mp_info, update_mem_sym_stats_from_stmt,
22845         delete_mem_ref_stats, create_tag_raw, dump_points_to_info,
22846         dump_may_aliases_for, debug_may_aliases_for, new_type_alias):
22847         Remove public functions.
22848         (pass_reset_cc_flags): Remove.
22849         (pass_build_alias): Move ...
22850         * tree-ssa-structalias.c (pass_build_alias): ... here.
22851         * tree-ssa-alias.c (may_be_aliased): Move ...
22852         * tree-flow-inline.h (may_be_aliased): ... here.
22853         tree-ssa-alias.c (struct count_ptr_d, count_ptr_derefs,
22854         count_uses_and_derefs): Move ...
22855         * gimple.c: ... here.
22856         * gimple.h (count_uses_and_derefs): Declare.
22857         * tree-ssa-alias.c (dump_alias_stats, ptr_deref_may_alias_global_p,
22858         ptr_deref_may_alias_decl_p, ptr_derefs_may_alias_p,
22859         same_type_for_tbaa, nonaliasing_component_refs_p, decl_refs_may_alias_p,
22860         indirect_ref_may_alias_decl_p, indirect_refs_may_alias_p,
22861         ref_maybe_used_by_call_p, ref_maybe_used_by_stmt_p,
22862         call_may_clobber_ref_p, stmt_may_clobber_ref_p, maybe_skip_until,
22863         get_continuation_for_phi, walk_non_aliased_vuses, walk_aliased_vdefs):
22864         New functions.
22865         * tree-dfa.c (refs_may_alias_p): Move ...
22866         * tree-ssa-alias.c (refs_may_alias_p): ... here.  Extend.
22867         * tree-ssa-alias.h: New file.
22868         * tree-ssa-sink.c (is_hidden_global_store): Adjust.
22869         (statement_sink_location): Likewise.
22870         * opts.c (decode_options): Do not adjust max-aliased-vops or
22871         avg-aliased-vops values.
22872         * timevar.def (TV_TREE_MAY_ALIAS): Remove.
22873         (TV_CALL_CLOBBER): Likewise.
22874         (TV_FLOW_SENSITIVE): Likewise.
22875         (TV_FLOW_INSENSITIVE): Likewise.
22876         (TV_MEMORY_PARTITIONING): Likewise.
22877         (TV_ALIAS_STMT_WALK): New timevar.
22878         * tree-ssa-loop-ivcanon.c (empty_loop_p): Adjust.
22879         * tree-ssa-address.c (create_mem_ref_raw): Use build6.
22880         (get_address_description): Remove memory-tag related code.
22881         * tree-ssa-ifcombine.c (bb_no_side_effects_p): Adjust.
22882         * treestruct.def (TS_MEMORY_TAG, TS_MEMORY_PARTITION_TAG): Remove.
22883         * tree-eh.c (cleanup_empty_eh): Do not leave stale SSA_NAMEs
22884         and immediate uses in statements.  Document.
22885         * gimple-pretty-print.c (dump_gimple_mem_ops): Adjust.
22886         (dump_symbols): Remove.
22887         (dump_gimple_mem_ops): Do not dump loaded or stored syms.
22888         * alias.c (get_deref_alias_set): New function split out from ...
22889         (get_alias_set): ... here.
22890         * alias.h (get_deref_alias_set): Declare.
22891         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove unused
22892         type parameter.  Remove restrict pointer handling.  Create a
22893         ref-all pointer in case type-based alias sets do not conflict.
22894         (vect_analyze_data_refs): Remove SMT related code.
22895         * tree-vect-stmts.c (vectorizable_store): Re-instantiate TBAA assert.
22896         (vectorizable_load): Likewise.
22897         * tree-data-ref.h (struct dr_alias): Remove symbol_tag field.
22898         (DR_SYMBOL_TAG, DR_VOPS): Remove.
22899         * tree-data-ref.c (dr_may_alias_p): Use the alias-oracle.
22900         Ignore vops and SMTs.
22901         (dr_analyze_alias): Likewise..
22902         (free_data_ref): Likewise.
22903         (create_data_ref): Likewise.
22904         (analyze_all_data_dependences): Likewise.
22905         (get_references_in_stmt): Adjust.
22906         * tree-flow-inline.h (gimple_aliases_computed_p,
22907         gimple_addressable_vars, gimple_call_clobbered_vars,
22908         gimple_call_used_vars, gimple_global_var, may_aliases, memory_partition,
22909         factoring_name_p, mark_call_clobbered, clear_call_clobbered,
22910         compare_ssa_operands_equal, symbol_mem_tag, set_symbol_mem_tag,
22911         gimple_mem_ref_stats): Remove.
22912         (gimple_vop): New function.
22913         (op_iter_next_use): Remove vuses and mayuses cases.
22914         (op_iter_next_def): Remove vdefs case.
22915         (op_iter_next_tree): Remove vuses, mayuses and vdefs cases.
22916         (clear_and_done_ssa_iter): Do not set removed fields.
22917         (op_iter_init): Likewise.  Skip vuse and/or vdef if requested.
22918         Assert we are not iterating over vuses or vdefs if not also
22919         iterating over uses or defs.
22920         (op_iter_init_use): Likewise.
22921         (op_iter_init_def): Likewise.
22922         (op_iter_next_vdef): Remove.
22923         (op_iter_next_mustdef): Likewise.
22924         (op_iter_init_vdef): Likewise.
22925         (compare_ssa_operands_equal): Likewise.
22926         (link_use_stmts_after): Handle vuse operand.
22927         (is_call_used): Use is_call_clobbered.
22928         (is_call_clobbered): Global variables are always call clobbered,
22929         query the call-clobbers bitmap.
22930         (mark_call_clobbered): Ignore global variables.
22931         (clear_call_clobbered): Likewise.
22932         * tree-ssa-coalesce.c (create_outofssa_var_map): Adjust
22933         virtual operands sanity check.
22934         * tree.def (NAME_MEMORY_TAG, SYMBOL_MEMORY_TAG, MEMORY_PARTITION_TAG):
22935         Remove.
22936         (TARGET_MEM_REF): Remove TMR_TAG operand.
22937         * tree-dfa.c (add_referenced_var): Initialize call-clobber state.
22938         Remove call-clobber related code.
22939         (remove_referenced_var): Likewise.  Do not clear mpt or symbol_mem_tag.
22940         (dump_variable): Do not dump SMTs, memory stats, may-aliases or
22941         partitions or escape reason.
22942         (get_single_def_stmt, get_single_def_stmt_from_phi,
22943         get_single_def_stmt_with_phi): Remove.
22944         (dump_referenced_vars): Tidy.
22945         (get_ref_base_and_extent): Allow bare decls.
22946         (collect_dfa_stats): Adjust.
22947         * graphite.c (rename_variables_in_stmt): Adjust.
22948         (graphite_copy_stmts_from_block): Likewise.
22949         (translate_clast): Likewise.
22950         * tree-ssa-pre.c (struct bb_bitmap_sets): Add expr_dies bitmap.
22951         (EXPR_DIES): New.
22952         (translate_vuse_through_block): Use the oracle.
22953         (phi_translate_1): Adjust.
22954         (value_dies_in_block_x): Use the oracle.  Cache the outcome
22955         in EXPR_DIES.
22956         (valid_in_sets): Check if the VUSE for
22957         a REFERENCE is available.
22958         (eliminate): Do not remove stmts during elimination,
22959         instead queue and remove them afterwards.
22960         (do_pre): Do not rebuild alias info.
22961         (pass_pre): Run TODO_rebuild_alias before PRE.
22962         * tree-ssa-live.c (remove_unused_locals): Remove memory-tag code.
22963         * tree-sra.c (sra_walk_function): Use gimple_references_memory_p.
22964         (mark_all_v_defs_stmt): Remove.
22965         (mark_all_v_defs_seq): Adjust.
22966         (sra_replace): Likewise.
22967         (scalarize_use): Likewise.
22968         (scalarize_copy): Likewise.
22969         (scalarize_init): Likewise.
22970         (scalarize_ldst): Likewise.
22971         (todoflags): Remove.
22972         (tree_sra): Do not rebuild alias info.
22973         (tree_sra_early): Adjust.
22974         (pass_sra): Run TODO_update_address_taken before SRA.
22975         * tree-predcom.c (set_alias_info): Remove.
22976         (prepare_initializers_chain): Do not call it.
22977         (mark_virtual_ops_for_renaming): Adjust.
22978         (mark_virtual_ops_for_renaming_list): Remove.
22979         (initialize_root_vars): Adjust.
22980         (initialize_root_vars_lm): Likewise.
22981         (prepare_initializers_chain): Likewise.
22982         * tree-ssa-copy.c (may_propagate_copy): Remove memory-tag related code.
22983         (may_propagate_copy_into_stmt): Likewise.
22984         (merge_alias_info): Do nothing for now.
22985         (propagate_tree_value_into_stmt): Adjust.
22986         (stmt_may_generate_copy): Likewise.
22987         * tree-ssa-forwprop.c (tidy_after_forward_propagate_addr): Do
22988         not mark symbols for renaming.
22989         (forward_propagate_addr_expr): Match up push/pop_stmt_changes
22990         with the same statement, make sure to update the new pointed-to one.
22991         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do not copy
22992         call statements, do not mark symbols for renaming.
22993         (mark_operand_necessary): Dump something.
22994         (ref_may_be_aliased): New function.
22995         (mark_aliased_reaching_defs_necessary_1): New helper function.
22996         (mark_aliased_reaching_defs_necessary): Likewise.
22997         (mark_all_reaching_defs_necessary_1): Likewise.
22998         (mark_all_reaching_defs_necessary): Likewise.
22999         (propagate_necessity): Do not process virtual PHIs.  For
23000         non-aliased loads mark all reaching definitions as necessary.
23001         For aliased loads and stores mark the immediate dominating
23002         aliased clobbers as necessary.
23003         (visited): New global static.
23004         (perform_tree_ssa_dce): Free visited bitmap after propagating
23005         necessity.
23006         (remove_dead_phis): Perform simple dead virtual PHI removal.
23007         (remove_dead_stmt): Properly unlink virtual operands when
23008         removing stores.
23009         (eliminate_unnecessary_stmts): Schedule PHI removal after
23010         stmt removal.
23011         * tree-ssa-ter.c (is_replaceable_p): Adjust.
23012         (process_replaceable): Likewise.
23013         (find_replaceable_in_bb): Likewise.
23014         * tree-ssa.c (verify_ssa_name): Verify all VOPs are
23015         based on the single gimple vop.
23016         (verify_flow_insensitive_alias_info): Remove.
23017         (verify_flow_sensitive_alias_info): Likewise.
23018         (verify_call_clobbering): Likewise.
23019         (verify_memory_partitions): Likewise.
23020         (verify_alias_info): Likewise.
23021         (verify_ssa): Adjust..
23022         (execute_update_addresses_taken): Export.  Update SSA
23023         manually.  Optimize only when optimizing.  Use a local bitmap.
23024         (pass_update_address_taken): Remove TODO_update_ssa, add
23025         TODO_dump_func.
23026         (pass_update_address_taken): Just use TODO_update_address_taken.
23027         (init_tree_ssa): Do not initialize addressable_vars.
23028         (verify_ssa): Verify new VUSE / VDEF properties.
23029         Verify that all stmts definitions have the stmt as SSA_NAME_DEF_STMT.
23030         Do not call verify_alias_info.
23031         (delete_tree_ssa): Clear the VUSE, VDEF operands.
23032         Do not free the loaded and stored syms bitmaps.  Reset the escaped
23033         and callused solutions.  Do not free addressable_vars.
23034         Remove memory-tag related code.
23035         (warn_uninitialized_var): Aliases are always available.
23036         * tree-ssa-loop-prefetch.c (gather_memory_references): Adjust.
23037         * lambda-code.c (can_put_in_inner_loop): Adjust.
23038         (can_put_after_inner_loop): Likewise.
23039         (perfect_nestify): Likewise.
23040         * tree-vect-stmts.c (vect_stmt_relevant_p): Adjust.
23041         (vect_gen_widened_results_half): Remove CALL_EXPR handling.
23042         (vectorizable_conversion): Do not mark symbols for renaming.
23043         * tree-inline.c (remap_gimple_stmt): Clear VUSE/VDEF.
23044         (expand_call_inline): Unlink the calls virtual operands before
23045         replacing it.
23046         (tree_function_versioning): Do not call update_ssa if we are not
23047         updating clones.  Simplify.
23048         * tree-ssa-phiprop.c (phivn_valid_p): Adjust.
23049         (propagate_with_phi): Likewise..
23050         * tree-outof-ssa.c (create_temp): Remove memory tag and call
23051         clobber code.  Assert we are not aliased or global.
23052         * tree-flow.h: Include tree-ssa-alias.h
23053         (enum escape_type): Remove.
23054         (struct mem_sym_stats_d): Likewise.
23055         (struct mem_ref_stats_d): Likewise.
23056         (struct gimple_df): Add vop member.  Remove global_var,
23057         call_clobbered_vars, call_used_vars, addressable_vars,
23058         aliases_compted_p and mem_ref_stats members.  Add syms_to_rename,
23059         escaped and callused members.
23060         (struct ptr_info_def): Remove all members, add points-to solution
23061         member pt.
23062         (struct var_ann_d): Remove in_vuse_list, in_vdef_list,
23063         call_clobbered, escape_mask, mpt and symbol_mem_tag members.
23064         * Makefile.in (TREE_FLOW_H): Add tree-ssa-alias.h.
23065         (tree-ssa-structalias.o): Remove tree-ssa-structalias.h.
23066         (tree-ssa-alias.o): Likewise.
23067         (toplev.o): Add tree-ssa-alias.h
23068         (GTFILES): Remove tree-ssa-structalias.h, add tree-ssa-alias.h.
23069         * gimple.c (gimple_set_bb): Fix off-by-one error.
23070         (is_gimple_reg): Do not handle memory tags.
23071         (gimple_copy): Also copy virtual operands.
23072         Delay updating the statement.  Do not reset loaded and stored syms.
23073         (gimple_set_stored_syms): Remove.
23074         (gimple_set_loaded_syms): Likewise.
23075         (gimple_call_copy_skip_args): Copy the virtual operands
23076         and mark the new statement modified.
23077         * tree-ssa-structalias.c (may_alias_p): Remove.
23078         (set_uids_in_ptset): Take the alias set to prune with as
23079         parameter.  Fold in the alias test of may_alias_p.
23080         (compute_points_to_sets): Compute whether a ptr is dereferenced
23081         in a local sbitmap.
23082         (process_constraint): Deal with &ANYTHING on the lhs, reject all
23083         other ADDRESSOF constraints on the lhs.
23084         (get_constraint_for_component_ref): Assert that we don't get
23085         ADDRESSOF constraints from the base of the reference.
23086         Properly generate UNKNOWN_OFFSET for DEREF if needed.
23087         (struct variable_info): Remove collapsed_to member.
23088         (get_varinfo_fc): Remove.
23089         (new_var_info): Do not set collapsed_to.
23090         (dump_constraint): Do not follow cycles.
23091         (dump_constraint_graph): Likewise.
23092         (build_pred_graph): Likewise.
23093         (build_succ_graph): Likewise.
23094         (rewrite_constraints): Likewise.
23095         (do_simple_structure_copy): Remove.
23096         (do_rhs_deref_structure_copy): Remove.
23097         (do_lhs_deref_structure_copy): Remove.
23098         (collapse_rest_of_var): Remove.
23099         (do_structure_copy): Re-implement.
23100         (pta_stats): New global variable.
23101         (dump_pta_stats): New function.
23102         (struct constraint_expr): Make offset signed.
23103         (UNKNOWN_OFFSET): Define special value.
23104         (dump_constraint): Dump UNKNOWN_OFFSET as UNKNOWN.
23105         (solution_set_expand): New helper function split out from ...
23106         (do_sd_constraint): ... here.
23107         (solution_set_add): Handle UNKNOWN_OFFSET.  Handle negative offsets.
23108         (do_ds_constraint): Likewise.
23109         (do_sd_constraint): Likewise.  Do not special-case ESCAPED = *ESCAPED
23110         and CALLUSED = *CALLUSED.
23111         (set_union_with_increment): Make inc argument signed.
23112         (type_safe): Remove.
23113         (get_constraint_for_ptr_offset): Handle unknown and negative
23114         constant offsets.
23115         (first_vi_for_offset): Handle offsets before start.  Bail
23116         out early for offsets beyond the variable extent.
23117         (first_or_preceding_vi_for_offset): New function.
23118         (init_base_vars): Add ESCAPED = ESCAPED + UNKNOWN_OFFSET constraint.
23119         Together with ESCAPED = *ESCAPED this properly computes reachability.
23120         (find_what_var_points_to): New function.
23121         (find_what_p_points_to): Implement in terms of find_what_var_points_to.
23122         (pt_solution_reset, pt_solution_empty_p, pt_solution_includes_global,
23123         pt_solution_includes_1, pt_solution_includes, pt_solutions_intersect_1,
23124         pt_solutions_intersect): New functions.
23125         (compute_call_used_vars): Remove.
23126         (compute_may_aliases): New main entry into PTA computation.
23127         * gimple.h (gimple_p): New typedef.
23128         (struct gimple_statement_base): Remove references_memory_p.
23129         (struct gimple_statement_with_memory_ops_base): Remove
23130         vdef_ops, vuse_ops, stores and loads members.  Add vdef and vuse
23131         members.
23132         (gimple_vuse_ops, gimple_set_vuse_ops, gimple_vdef_ops,
23133         gimple_set_vdef_ops, gimple_loaded_syms, gimple_stored_syms,
23134         gimple_set_references_memory): Remove.
23135         (gimple_vuse_op, gimple_vdef_op, gimple_vuse, gimple_vdef,
23136         gimple_vuse_ptr, gimple_vdef_ptri, gimple_set_vuse, gimple_set_vdef):
23137         New functions.
23138         * tree-cfg.c (move_block_to_fn): Fix off-by-one error.
23139         (verify_expr): Allow RESULT_DECL.
23140         (gimple_duplicate_bb): Do not copy virtual operands.
23141         (gimple_duplicate_sese_region): Adjust.
23142         (gimple_duplicate_sese_tail): Likewise.
23143         (mark_virtual_ops_in_region): Remove.
23144         (move_sese_region_to_fn): Do not call it.
23145         * passes.c (init_optimization_passes): Remove pass_reset_cc_flags
23146         and pass_simple_dse.
23147         (execute_function_todo): Handle TODO_update_address_taken,
23148         call execute_update_addresses_taken for TODO_rebuild_alias.
23149         (execute_todo): Adjust.
23150         (execute_one_pass): Init dump files early.
23151         * ipa-struct-reorg.c (finalize_var_creation): Do not mark vars
23152         call-clobbered.
23153         (create_general_new_stmt): Clear vops.
23154         * tree-ssa-reassoc.c (get_rank): Adjust.
23155         * tree-vect-slp.c (vect_create_mask_and_perm): Do not mark
23156         symbols for renaming.
23157         * params.def (PARAM_MAX_ALIASED_VOPS): Remove.
23158         (PARAM_AVG_ALIASED_VOPS): Likewise.
23159         * tree-ssanames.c (init_ssanames): Allocate SYMS_TO_RENAME.
23160         (duplicate_ssa_name_ptr_info): No need to copy the shared bitmaps.
23161         * tree-ssa-operands.c: Simplify for new virtual operand representation.
23162         (operand_build_cmp, copy_virtual_operands,
23163         create_ssa_artificial_load_stmt, add_to_addressable_set,
23164         gimple_add_to_addresses_taken): Remove public functions.
23165         (unlink_stmt_vdef): New function.
23166
23167 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
23168
23169         * config.gcc (powerpc-*-linux*): Merge variants.
23170
23171 2009-04-02  Chao-ying Fu  <fu@mips.com>
23172             James Grosbach  <james.grosbach@microchip.com>
23173
23174         * config/mips/mips.c (mips_frame_info): Add acc_mask, num_acc,
23175         num_cop0_regs, acc_save_offset, cop0_save_offset, acc_sp_offset,
23176         cop0_sp_offset.
23177         (machine_function): Add interrupt_handler_p, use_shadow_register_set_p,
23178         keep_interrupts_masked_p, use_debug_exception_return_p.
23179         (mips_attribute_table): Add interrupt, use_shadow_register_set,
23180         keep_interrupts_masked, use_debug_exception_return.
23181         (mips_interrupt_type_p, mips_use_shadow_register_set_p,
23182         mips_keep_interrupts_masked_p, mips_use_debug_exception_return_p):
23183         New functions.
23184         (mips_function_ok_for_sibcall): Return false for interrupt handlers.
23185         (mips_print_operand): Process COP0 registers to print $0 .. $31
23186         correctly for GAS to process.
23187         (mips_interrupt_extra_call_saved_reg_p): New function.
23188         (mips_cfun_call_saved_reg_p): For interrupt handlers, we need to check
23189         extra registers.
23190         (mips_cfun_might_clobber_call_saved_reg_p): Likewise.
23191         (mips_compute_frame_info): Add supports for interrupt context that
23192         includes doubleword accumulators and COP0 registers.
23193         (mips_for_each_saved_acc): New function.
23194         (mips_for_each_saved_gpr_and_fpr): Change the function name from
23195         mips_for_each_saved_reg.
23196         (mips_save_reg): Save accumulators.
23197         (mips_kernel_reg_p): A new for_each_rtx callback.
23198         (mips_expand_prologue): Support interrupt handlers.
23199         (mips_restore_reg): Restore accumulators.
23200         (mips_expand_epilogue): Support interrupt handlers.
23201         (mips_can_use_return_insn): Return false for interrupt handlers.
23202         (mips_epilogue_uses): New function.
23203         * config/mips/mips.md (UNSPEC_ERET, UNSPEC_DERET, UNSPEC_DI,
23204         UNSPEC_EHB, UNSPEC_RDPGPR, UNSPEC_COP0): New UNSPEC.
23205         (mips_eret, mips_deret, mips_di, mips_ehb, mips_rdpgpr,
23206         cop0_move): New instructions.
23207         * config/mips/mips-protos.h (mips_epilogue_uses): Declare.
23208         * config/mips/mips.h (K0_REG_NUM, K1_REG_NUM, KERNEL_REG_P): New
23209         defines.
23210         (COP0_STATUS_REG_NUM, COP0_CAUSE_REG_NUM, COP0_EPC_REG_NUM):
23211         New defines.
23212         (CAUSE_IPL, SR_IPL, SR_EXL, SR_IE): New defines.
23213         (MIPS_PROLOGUE_TEMP_REGNUM, MIPS_EPILOGUE_TEMP_REGNUM): For
23214         interrupt handlers, we use K0 as the temporary register.
23215         (EPILOGUE_USES): Change to a function call.
23216         * config/mips/sde.h (MIPS_EPILOGUE_TEMP_REGNUM): For interrupt
23217         handlers, we use K0 as the temporary register.
23218
23219         * doc/extend.texi (Function Attributes): Document interrupt,
23220         use_shadow_register_set, keep_interrupts_masked,
23221         use_debug_exception_return for MIPS attributes.
23222
23223 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
23224
23225         * config.gcc (powerpc64-*-gnu*): Add rs6000/default64.h to tm_file.
23226         Remove a number of t-files from tmake_file.
23227         * config/rs6000/sysv4.opt (mprototype): Name variable target_prototype.
23228         * config/rs6000/sysv4.h (TARGET_PROTOTYPE): Define.
23229         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Set
23230         target_prototype, not TARGET_PROTOTYPE.
23231         (LINK_OS_GNU_SPEC): Define.
23232         * config/rs6000/t-linux64 (LIB2FUNCS_EXTRA): Delete tramp.S
23233         and darwin-ldoubdle.c.
23234
23235 2009-04-02  Michael Meissner  <meissner@linux.vnet.ibm.com>
23236
23237         PR driver/39293
23238         * gcc.c (save_temps_flag): Add support for -save-temps=obj.
23239         (cpp_options): Ditto.
23240         (default_compilers): Ditto.
23241         (display_help): Ditto.
23242         (process_command): Ditto.
23243         (do_spec_1): Ditto.
23244         (set_input): Use lbasename instead of duplicate code.
23245         (save_temps_prefix): New static for -save-temps=obj.
23246         (save_temps_length): Ditto.
23247
23248         * doc/invoke.texi (-save-temps=obj): Document new variant to
23249         -save-temps switch.
23250
23251 2009-04-02  Jeff Law  <law@redhat.com>
23252
23253         * reload1.c (fixup_eh_region_notes): Remove write-only "trap_count"
23254         variable.
23255
23256 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
23257
23258         * configure.ac: Support -Bstatic/-Bdynamic for linker version > 2.
23259         * configure: Regenerated.
23260
23261 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
23262
23263         * c-decl.c (merge_decls): Make sure newdecl and olddecl don't
23264         share the argument list.
23265
23266 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
23267
23268         Merge
23269
23270         2009-02-12  Diego Novillo  <dnovillo@google.com>
23271
23272         * varpool.c (debug_varpool): New.
23273         * cgraph.h (debug_varpool): Declare.
23274
23275 2009-04-02  Jan Hubicka  <jh@suse.cz>
23276
23277         * passes.c (init_optimization_passes): Remove two copies of ehcleanup
23278         pass.
23279
23280 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
23281
23282         * config/i386/i386.c (ix86_abi): Move initialization to ...
23283         (override_options): Here.
23284
23285 2009-04-02  Christian Bruel  <christian.bruel@st.com>
23286
23287         * config/sh/sh.c (sh_dwarf_register_span): New function.
23288         (TARGET_DWARF_REGISTER_SPAN): Define.
23289         * config/sh/sh-protos.h (sh_dwarf_register_span): Declare.
23290
23291 2009-04-02  Ira Rosen  <irar@il.ibm.com>
23292
23293         PR tree-optimization/39595
23294         * tree-vect-slp.c (vect_build_slp_tree): Check that the size of
23295         interleaved loads group is not  greater than the SLP group size.
23296
23297 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
23298
23299         * builtins.c (is_builtin_name): New.
23300         (called_as_built_in): Use is_builtin_name.
23301         * tree.h (is_builtin_name): New.
23302         * varasm.c (incorporeal_function_p): Use is_builtin_name
23303
23304 2009-04-02  Andrew Stubbs  <ams@codesourcery.com>
23305
23306         * config/sh/linux-unwind.h: Disable when inhibit_libc is defined.
23307
23308 2009-04-02  Dodji Seketeli  <dodji@redhat.com>
23309
23310         PR c++/26693
23311         * c-decl.c (clone_underlying_type): Move this ...
23312         * c-common.c (set_underlying_type): ... here.
23313         Also, make sure the function properly sets TYPE_STUB_DECL() on
23314         the newly created typedef variant type.
23315         * c-common.h (is_typedef_decl, set_underlying_type): Declare ...
23316         * c-common.c (is_typedef_decl, set_underlying_type): ... new entry
23317         points.
23318
23319 2009-04-02  Richard Guenther  <rguenther@suse.de>
23320
23321         PR tree-optimization/37221
23322         * tree-flow.h (degenerate_phi_result): Declare.
23323         * tree-ssa-dom.c (degenerate_phi_result): Export.
23324         * tree-scalar-evolution.c (analyze_initial_condition): If
23325         the initial condition is defined by a degenerate PHI node
23326         use the degenerate value.
23327
23328 2009-04-01  Eric Botcazou  <ebotcazou@adacore.com>
23329
23330         PR rtl-optimization/39588
23331         * combine.c (merge_outer_ops): Do not set the constant when this
23332         is not necessary.
23333         (simplify_shift_const_1): Do not modify it either in this case.
23334
23335 2009-04-01  Steven Bosscher  <steven@gcc.gnu.org>
23336
23337         * config/ia64/ia64.c (ia64_handle_option): Inform user that Itanium1
23338         tuning is deprecated if -mtune value is set to an Itanium1 variant.
23339
23340 2009-04-01  Janis Johnson  <janis187@us.ibm.com>
23341
23342         PR c/29027
23343         * c-lex.c (interpret_float): Default (no suffix) is double.
23344
23345 2009-04-1  Xinliang David Li  <davidxl@google.com>
23346
23347         * config/i386/i386.c (legitimate_constant_p): Recognize
23348         all one vector constant.
23349
23350 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
23351
23352         * config/vax/vax.c: Add #includes to silence warnings.
23353         Change #include order to silence two warnings.
23354
23355 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
23356
23357         * config/vax/linux.h (TARGET_DEFAULT): Add the MASK_QMATH flag bit.
23358         (ASM_SPEC): Pass -k to the assembler for PIC code.
23359
23360 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
23361
23362         * config.gcc: Add vax-*-linux* to the switch.
23363         * config/vax/linux.h: New file. (TARGET_VERSION,
23364         TARGET_OS_CPP_BUILTINS, TARGET_DEFAULT, CPP_SPEC, LINK_SPEC): Define.
23365
23366 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
23367
23368         * config/vax/vax.c (vax_output_int_move, adjacent_operands_p):
23369         Use predicate macros instead of GET_CODE() == foo.
23370         * config/vax/vax.md (movsi_2, movstrictqi, and<mode>3, ashrsi3,
23371         ashlsi3, rotrsi3, <unnamed>): Likewise.
23372
23373 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
23374
23375         * config/vax/builtins.md (jbbssiqi, jbbssihi, jbbssisi, jbbcciqi,
23376         jbbccihi, jbbccisi): Remova trailing whitespace.
23377         * config/vax/constraints.md: Likewise.
23378         * config/vax/elf.h: (ASM_PREFERRED_EH_DATA_FORMAT): Likewise.
23379         * config/vax/openbsd1.h (OBSD_OLD_GAS): Likewise.
23380         * config/vax/predicates.md: Likewise.
23381         * config/vax/vax.c (print_operand_address, vax_output_int_move,
23382         vax_expand_addsub_di_operands, adjacent_operands_p): Likewise.
23383         * config/vax/vax.h: Likewise.
23384         * config/vax/vax.md (nonlocal_goto): Likewise.
23385
23386 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
23387
23388         * config/vax/vax.c (vax_float_literal, vax_output_int_move)
23389         (indirectable_address_p, adjacent_operands_p): Add spaces around
23390         braces.
23391         * config/vax/vax-protos.h (adjacent_operands_p): Likewise.
23392
23393 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
23394
23395         * config/vax/vax.c (legitimate_constant_address_p,
23396         legitimate_constant_p, indirectable_address_p, nonindexed_address_p,
23397         index_term_p, reg_plus_index_p, legitimate_address_p,
23398         vax_mode_dependent_address_p): Update comments to match functions
23399         modified by the recent int->bool conversion.
23400
23401 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
23402
23403         * config/vax/builtins.md: Update copyright message.
23404         * config/vax/constraints.md: Likewise.
23405         * config/vax/netbsd-elf.h: Likewise.
23406         * config/vax/predicates.md: Likewise.
23407         * config/vax/vax-protos.h: Likewise.
23408         * config/vax/vax.c: Likewise.
23409         * config/vax/vax.h: Likewise.
23410         * config/vax/vax.md: Likewise.
23411         * config/vax/vax.opt: Likewise.
23412
23413 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
23414
23415         * config/vax/builtins.md (ffssi2, ffssi2_internal,
23416         sync_lock_test_and_set<mode>, sync_lock_release<mode>): Fix indention.
23417         * config/vax/constraints.md (B, R): Likewise.
23418         * config/vax/predicates.md (external_memory_operand,
23419         nonimmediate_addsub_di_operand): Likewise.
23420         * config/vax/vax.c (vax_output_int_add): Likewise.
23421         * config/vax/vax.md (movsi, movsi_2, mov<mode>, call_value,
23422         untyped_call): Likewise.
23423
23424 2009-04-01  Matt Thomas  <matt@3am-software.com>
23425
23426         * config/vax/predicates.md: New file.
23427         (symbolic_operand, local_symbolic_operand, external_symbolic_operand,
23428         external_const_operand, nonsymbolic_operand, external_memory_operand,
23429         indirect_memory_operand, indexed_memory_operand,
23430         illegal_blk_memory_operand, illegal_addsub_di_memory_operand,
23431         nonimmediate_addsub_di_operand, general_addsub_di_operand): New
23432         predicate.
23433         * config/vax/constraints.md: New file.
23434         (Z0, U06,  U08, U16, CN6, S08, S16, I, J, K, L, M, N, O, G, Q, B, R, T):
23435         New constraint.
23436         * config/vax/builtins.md: New file.
23437         (ffssi2, ffssi2_internal, sync_lock_test_and_set<mode>, jbbssiqi,
23438         jbbssihi, jbbssisi, sync_lock_release<mode>, jbbcciqi, jbbccihi,
23439         jbbccisi): Define.
23440         * config/vax/vax.opt (mqmath): Add option.
23441         * config/vax/vax.md (isfx): Extend with DI.
23442         (VAXintQH, VAXintQHSD): Define.
23443         (tst<mode>, cmp<mode>, *bit<mode>, movmemhi1, truncsiqi2, truncsihi2,
23444         mulsidi3, add<mode>3, sub<mode>, mul<mode>3, div<mode>3, and<mode>,
23445         and<mode>_const_int, ior<mode>3, xor<mode>3, neg<mode>2,
23446         one_cmpl<mode>2, ashlsi3, lshrsi3, rotlsi3): Update constraints.
23447         (movdi): Update constraints and use vax_output_int_move().
23448         (movsi, movsi_2, pushlclsymreg, pushextsymreg, movlclsymreg,
23449         movextsymreg, adddi3, adcdi3, subdi3, sbcdi3, pushextsym, movextsym,
23450         pushlclsym, movlclsym, movaddr<mode>, pushaddr<mode>,
23451         nonlocal_goto): New.
23452         (mov<mode>): Extend accepted operand types.
23453         (subdi3_old): Rename from subdi3, change update constraints and use
23454         a new implementation.
23455         * config/vax/vax.h (PCC_BITFIELD_TYPE_MATTERS): Add space.
23456         (FRAME_POINTER_CFA_OFFSET, IRA_COVER_CLASSES, CLASS_MAX_NREGS,
23457         MOVE_RATIO, CLEAR_RATIO): Define.
23458         (REG_CLASS_FROM_LETTER, CONST_OK_FOR_LETTER_P,
23459         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT): Delete.
23460         (PRINT_OPERAND): Redefine using a function instead of inlined code.
23461         * config/vax/vax.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Define.
23462         (split_quadword_operands): Make static and really allow variable
23463         splitting.
23464         (print_operand_address): Update for PIC generation.
23465         (print_operand, vax_builtin_setjmp_frame_value, vax_output_int_subtract,
23466         indexable_address_p, fixup_mathdi_operand,
23467         vax_expand_addsub_di_operands, adjacent_operands_p): New.
23468         (vax_float_literal, legitimate_constant_p,
23469         indirectable_constant_address_p, index_term_p,
23470         reg_plus_index_p): Return bool instead of int.
23471         (vax_rtx_costs): Fix cost for CONST_INT, indent and use HOST_WIDE_INT
23472         where needed.
23473         (vax_output_int_move, vax_output_int_add): Extend to allow PIC
23474         generation.
23475         (vax_output_conditional_branch): Indent.
23476         (legitimate_constant_address_p, indirectable_constant_address_p,
23477         indirectable_address_p, nonindexed_address_p, legitimate_address_p,
23478         vax_mode_dependent_address_p): Return bool instead of int, update for
23479         PIC generation.
23480         * config/vax/vax-protos.h (legitimate_constant_address_p,
23481         legitimate_constant_p, legitimate_address_p,
23482         vax_mode_dependent_address_p): Change declaration to bool.
23483         (legitimate_pic_operand_p, adjacent_operands_p, print_operand,
23484         vax_expand_addsub_di_operands, vax_output_int_subtract,
23485         vax_output_movmemsi): Declare.
23486         (split_quadword_operands, vax_float_literal): Delete declaration.
23487         * config/vax/netbsd-elf.h (CC1_SPEC, CC1PLUS_SPEC) Define.
23488         * config/vax/elf.h (NO_EXTERNAL_INDIRECT_ADDRESS,
23489         VAX_CC1_AND_CC1PLUS_SPEC, ASM_PREFERRED_EH_DATA_FORMAT,
23490         ASM_OUTPUT_DWARF_PCREL): Define.
23491         (ASM_SPEC): Change definition to allow PIC generation.
23492
23493 2009-04-01  Steve Ellcey  <sje@cup.hp.com>
23494
23495         * doc/sourcebuild.texi: Update front-end requirements.
23496
23497 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
23498
23499         PR target/39226
23500         * config/rs6000/rs6000.md (andsi3_internal5_nomc,
23501         anddi3_internal2_nomc, anddi3_internal3_nomc): Removed.
23502         (booldi3_internal3): Use boolean_or_operator instead of
23503         boolean_operator.
23504
23505 2009-04-01  Joseph Myers  <joseph@codesourcery.com>
23506
23507         PR c/39605
23508         * c-decl.c (grokdeclarator): Pedwarn for file-scope array
23509         declarator whose size is not an integer constant expression but
23510         folds to an integer constant, then treat it as a constant
23511         subsequently.
23512
23513 2009-04-01  Richard Guenther  <rguenther@suse.de>
23514
23515         * fold-const.c (fold_plusminus_mult_expr): Do not fold
23516         i * 4 + 2 to (i * 2 + 1) * 2.
23517
23518 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
23519
23520         PR c/37772
23521         * c-parser.c (c_parser_asm_statement): Skip until close paren and
23522         return if c_parser_asm_string_literal returned NULL.
23523
23524 2009-04-01  Nick Clifton  <nickc@redhat.com>
23525
23526         * config/m32c/m32c.h (LIBGCC2_UNITS_PER_WORD): Define if not
23527         already defined.
23528         * config/m32c/t-m32c (LIB2FUNCS_EXTRA): Add m32c-lib2-trapv.c.
23529         * config/m32c/m32c-lib2.c: Remove unused typedefs.  Rename the
23530         other typedefs to avoid conflicts with libgcc2.c.  Define labels
23531         to gain 16-bit bit-manipulation functions from libgcc2.c and then
23532         include it.
23533         * config/m32c/m32c-lib2-trapv.c: New file.  Define labels
23534         to gain 16-bit trapping arithmetic functions from libgcc2.c and
23535         then include it.
23536
23537 2009-04-01  Rafael Avila de Espindola  <espindola@google.com>
23538
23539         * varasm.c (default_function_rodata_section): Declare DOT as
23540         const char*.
23541
23542 2009-04-01  Kai Tietz  <kai.tietz@onevision.com>
23543             Andrey Galkin  <agalkin@hypercom.com>
23544
23545         PR/39492
23546         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address):
23547         Make object_name unique for each process.
23548
23549 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
23550
23551         PR other/39591
23552         * omp-low.c (remove_exit_barrier): Don't optimize if there are any
23553         addressable variables in the parallel that could go out of scope while
23554         running queued tasks.
23555
23556 2009-04-01  Anatoly Sokolov  <aesok@post.ru>
23557
23558         * config/avr/avr.h (avr_case_values_threshold): Remove declaration.
23559         (CASE_VALUES_THRESHOLD): Redefine.
23560         * config/avr/avr.c (avr_override_options): Remove initialization of
23561         avr_case_values_threshold variable.
23562         (avr_case_values_threshold): Remove variable. Add new function.
23563         * config/avr/avr-protos.h (avr_case_values_threshold): Declare.
23564         * config/avr/avr.opt (mno-tablejump): Remove option.
23565         * doc/invoke.texi (AVR Options): Remove -mno-tablejump.
23566
23567 2009-04-01  DJ Delorie  <dj@redhat.com>
23568
23569         * varasm.c (default_function_rodata_section): Don't assume
23570         anything about where the first '.' in the section name is.
23571
23572 2009-04-01  Alan Modra  <amodra@bigpond.net.au>
23573
23574         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Delete redundant
23575         rs6000_emit_stack_tie.
23576
23577 2009-03-31  Ian Lance Taylor  <iant@google.com>
23578
23579         * tree-eh.c (tree_remove_unreachable_handlers): Compare
23580         gimple_code with GIMPLE_RESX, not RESX.
23581
23582 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
23583
23584         * c-common.c (c_get_ident): New.
23585         (c_common_nodes_and_builtins): Call it for type names that may be NULL.
23586
23587 2009-04-01  Ben Elliston  <bje@au.ibm.com>
23588
23589         * config/rs6000/sysv4.opt (msdata): Improve option description.
23590
23591 2009-03-31  Steve Ellcey  <sje@cup.hp.com>
23592
23593         * config/ia64/ia64.md (divsf3_internal_lat): Remove.
23594         (divdf3_internal_lat): Remove.
23595         (divxf3_internal_lat): Remove.
23596         (divxf3_internal_thr): Remove.
23597         (divxf): Use divxf3_internal.
23598         * config/ia64/div.md (divsf3_internal_lat): New.
23599         (divdf3_internal_lat): New.
23600         (divxf3_internal): New.
23601
23602 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
23603
23604         PR c/448
23605         * Makefile.in (USE_GCC_STDINT): Define.
23606         (stmp-int-hdrs): Install stdint.h if applicable.
23607         * c-common.c (CHAR16_TYPE): Define in terms of UINT_LEAST16_TYPE
23608         if known.
23609         (CHAR32_TYPE): Define in terms of UINT_LEAST32_TYPE if known.
23610         (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE, INT64_TYPE,
23611         UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
23612         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
23613         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
23614         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
23615         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
23616         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
23617         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
23618         (c_common_nodes_and_builtins): Initialize
23619         underlying_wchar_type_node.  Do not initialize
23620         signed_wchar_type_node or unsigned_wchar_type_node.  Initialize
23621         nodes for new types.
23622         (c_stddef_cpp_builtins): Define macros for new types.
23623         * c-common.h (CTI_SIGNED_WCHAR_TYPE, CTI_UNSIGNED_WCHAR_TYPE):
23624         Remove.
23625         (CTI_UNDERLYING_WCHAR_TYPE, CTI_SIG_ATOMIC_TYPE, CTI_INT8_TYPE,
23626         CTI_INT16_TYPE, CTI_INT32_TYPE, CTI_INT64_TYPE, CTI_UINT8_TYPE,
23627         CTI_UINT16_TYPE, CTI_UINT32_TYPE, CTI_UINT64_TYPE,
23628         CTI_INT_LEAST8_TYPE, CTI_INT_LEAST16_TYPE, CTI_INT_LEAST32_TYPE,
23629         CTI_INT_LEAST64_TYPE, CTI_UINT_LEAST8_TYPE, CTI_UINT_LEAST16_TYPE,
23630         CTI_UINT_LEAST32_TYPE, CTI_UINT_LEAST64_TYPE, CTI_INT_FAST8_TYPE,
23631         CTI_INT_FAST16_TYPE, CTI_INT_FAST32_TYPE, CTI_INT_FAST64_TYPE,
23632         CTI_UINT_FAST8_TYPE, CTI_UINT_FAST16_TYPE, CTI_UINT_FAST32_TYPE,
23633         CTI_UINT_FAST64_TYPE, CTI_INTPTR_TYPE, CTI_UINTPTR_TYPE): Define.
23634         (signed_wchar_type_node, unsigned_wchar_type_node): Remove.
23635         (underlying_wchar_type_node, sig_atomic_type_node, int8_type_node,
23636         int16_type_node, int32_type_node, int64_type_node,
23637         uint8_type_node, uint16_type_node, c_uint32_type_node,
23638         c_uint64_type_node, int_least8_type_node, int_least16_type_node,
23639         int_least32_type_node, int_least64_type_node,
23640         uint_least8_type_node, uint_least16_type_node,
23641         uint_least32_type_node, uint_least64_type_node,
23642         int_fast8_type_node, int_fast16_type_node, int_fast32_type_node,
23643         int_fast64_type_node, uint_fast8_type_node, uint_fast16_type_node,
23644         uint_fast32_type_node, uint_fast64_type_node, intptr_type_node,
23645         uintptr_type_node): Define.
23646         * c-cppbuiltin.c (builtin_define_constants,
23647         builtin_define_type_minmax): New.
23648         (builtin_define_stdint_macros): Define more macros.
23649         (c_cpp_builtins): Define more limit macros.
23650         (type_suffix): New.
23651         (builtin_define_type_max): Define in terms of
23652         builtin_define_type_minmax.  Remove is_long parameter.  All
23653         callers changed.
23654         * config.gcc (use_gcc_stdint): Define.
23655         (tm_file): Add glibc-stdint.h for targets using glibc or uClibc.
23656         Add newlib-stdint.h for generic targets.
23657         * config/glibc-stdint.h, config/newlib-stdint.h,
23658         ginclude/stdint-gcc.h, ginclude/stdint-wrap.h: New.
23659         * config/m32c/m32c.h (UINTPTR_TYPE): Define.
23660         * config/score/score.h (UINTPTR_TYPE): Define.
23661         * config/sol2.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
23662         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
23663         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
23664         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
23665         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
23666         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
23667         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
23668         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
23669         * config/spu/spu.h (STDINT_LONG32): Define.
23670         * configure.ac (use_gcc_stdint): Substitute.
23671         * configure: Regenerate.
23672         * doc/cpp.texi (__SIG_ATOMIC_TYPE__, __INT8_TYPE__,
23673         __INT16_TYPE__, __INT32_TYPE__, __INT64_TYPE__, __UINT8_TYPE__,
23674         __UINT16_TYPE__, __UINT32_TYPE__, __UINT64_TYPE__,
23675         __INT_LEAST8_TYPE__, __INT_LEAST16_TYPE__, __INT_LEAST32_TYPE__,
23676         __INT_LEAST64_TYPE__, __UINT_LEAST8_TYPE__, __UINT_LEAST16_TYPE__,
23677         __UINT_LEAST32_TYPE_, __UINT_LEAST64_TYPE__, __INT_FAST8_TYPE__,
23678         __INT_FAST16_TYPE__, __INT_FAST32_TYPE__, __INT_FAST64_TYPE__,
23679         __UINT_FAST8_TYPE__, __UINT_FAST16_TYPE__, __UINT_FAST32_TYPE__,
23680         __UINT_FAST64_TYPE__, __INTPTR_TYPE__, __UINTPTR_TYPE__,
23681         __WINT_MAX__, __SIZE_MAX__, __PTRDIFF_MAX__, __UINTMAX_MAX__,
23682         __SIG_ATOMIC_MAX__, __INT8_MAX__, __INT16_MAX__, __INT32_MAX__,
23683         __INT64_MAX__, __UINT8_MAX__, __UINT16_MAX__, __UINT32_MAX__,
23684         __UINT64_MAX__, __INT_LEAST8_MAX__, __INT_LEAST16_MAX__,
23685         __INT_LEAST32_MAX__, __INT_LEAST64_MAX__, __UINT_LEAST8_MAX__,
23686         __UINT_LEAST16_MAX__, __UINT_LEAST32_MAX__, __UINT_LEAST64_MAX__,
23687         __INT_FAST8_MAX__, __INT_FAST16_MAX__, __INT_FAST32_MAX__,
23688         __INT_FAST64_MAX__, __UINT_FAST8_MAX__, __UINT_FAST16_MAX__,
23689         __UINT_FAST32_MAX__, __UINT_FAST64_MAX__, __INTPTR_MAX__,
23690         __UINTPTR_MAX__, __WCHAR_MIN__, __WINT_MIN__, __SIG_ATOMIC_MIN__,
23691         __INT8_C, __INT16_C, __INT32_C, __INT64_C, __UINT8_C, __UINT16_C,
23692         __UINT32_C, __UINT64_C, __INTMAX_C, __UINTMAX_C): Document.
23693         * doc/tm.texi (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE,
23694         INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
23695         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
23696         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
23697         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
23698         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
23699         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
23700         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Document.
23701
23702 2009-03-31  Bernd Schmidt  <bernd.schmidt@analog.com>
23703
23704         * loop-iv.c (suitable_set_for_replacement): Renamed from
23705         simplify_using_assignment; changed to return bool and to accept new
23706         args DEST and SRC.  Return true iff we find a source/destination pair
23707         that can be used to make a replacement, and fill SRC and DEST if so.
23708         Remove arg ALTERED.  Don't deal with altered regs here.  All callers
23709         changed.
23710         (simplify_using_initial_values): Deal with altered regs here and track
23711         more precisely the effect they have on the validity of our expression.
23712
23713         * loop-iv.c (simplify_using_condition): A condition of the form
23714         (EQ REG CONST) can be used to simply make a substitution.
23715         (simplify_using_initial_values): Keep track of conditions we have seen
23716         and keep using them to simplify new expressions, while applying the
23717         same substitutions to them as to the expression.
23718
23719         * simplify-rtx.c (simplify_relational_operation_1): Simplify
23720         (LTU (PLUS a C) C) or (LTU (PLUS a C) a) to (GEU a -C); likewise with
23721         GEU/LTU reversed.
23722
23723         * loop-iv.c (determine_max_iter): New arg OLD_NITER.  All callers
23724         changed.  Use this when trying to improve the upper bound.
23725         Generate the comparison by using simplify_gen_relational.
23726
23727         * loop-iv.c (simple_rhs_p): Allow more kinds of expressions.
23728
23729         * loop-iv.c (replace_single_def_regs, replace_in_expr): New static
23730         functions.
23731         (simplify_using_assignment, simplify_using_initial_values): Call
23732         replace_in_expr to make replacements.  Call replace_single_def_regs
23733         once on the initial version of the expression.
23734
23735 2009-03-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
23736
23737         PR target/27237
23738         * doc/invoke.texi (ARM Options): Update documentation for -mthumb.
23739
23740 2009-03-31  Richard Guenther  <rguenther@suse.de>
23741
23742         PR middle-end/31029
23743         * fold-const.c (fold_binary): Fold X +- Y CMP X to Y CMP 0 for
23744         equality comparisons.  Fold C - X CMP X if C % 2 == 1.
23745
23746 2009-03-31  Richard Guenther  <rguenther@suse.de>
23747
23748         * tree.h (div_if_zero_remainder): Declare.
23749         * fold-const.c (div_if_zero_remainder): Export.
23750         * tree-ssa-forwprop.c
23751         (forward_propagate_addr_into_variable_array_index): Handle
23752         constant array index addition outside of the variable index.
23753
23754 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
23755
23756         PR target/39592
23757         * config/i386/i386.md (*floatunssi<mode>2_1, two unnamed
23758         define_splits, floatunssi<mode>2): Require x87 conversions from
23759         DImode to be permitted.
23760
23761 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
23762
23763         PR preprocessor/15638
23764         * c-common.c (c_cpp_error): Handle CPP_DL_FATAL.
23765
23766 2009-03-31  Richard Guenther  <rguenther@suse.de>
23767
23768         PR middle-end/23401
23769         PR middle-end/27810
23770         * tree.h (DECL_GIMPLE_FORMAL_TEMP_P): Remove.
23771         (struct tree_decl_with_vis): Remove gimple_formal_temp member.
23772         * tree-eh.c (lower_eh_constructs_2): Move LHS assignment to
23773         a separate statement.
23774         * gimplify.c (pop_gimplify_context): Remove formal temp handling.
23775         (lookup_tmp_var): Likewise.
23776         (is_gimple_formal_tmp_or_call_rhs): Remove.
23777         (is_gimple_reg_or_call_rhs): Rename to ...
23778         (is_gimple_reg_rhs_or_call): ... this.
23779         (is_gimple_mem_or_call_rhs): Rename to ...
23780         (is_gimple_mem_rhs_or_call): ... this.
23781         (internal_get_tmp_var): Use is_gimple_reg_rhs_or_call.  Set
23782         DECL_GIMPLE_REG_P only if is_formal is true.
23783         (gimplify_compound_lval): Use is_gimple_reg.  Remove workaround
23784         for non-proper post-modify expression gimplification.
23785         (gimplify_self_mod_expr): For post-modify expressions gimplify
23786         the lvalue to a minimal lvalue.
23787         (rhs_predicate_for): Remove formal temp case.
23788         (gimplify_modify_expr_rhs): Likewise.
23789         (gimplify_addr_expr): Use is_gimple_reg.
23790         (gimplify_expr): Remove formal temp cases.
23791         (gimple_regimplify_operands): Likewise.
23792         * tree-ssa-pre.c (get_or_alloc_expr_for): Treat EXC_PTR_EXPR
23793         and FILTER_EXPR like constants.
23794         * gimple.c (walk_gimple_op): Fix val_only initialization, use
23795         is_gimple_reg.
23796         (is_gimple_formal_tmp_rhs): Remove.
23797         (is_gimple_reg_rhs): Remove special casing.
23798         (is_gimple_mem_rhs): Fix.
23799         (is_gimple_reg): Move DECL_GIMPLE_REG_P handling earlier.
23800         (is_gimple_formal_tmp_var): Remove.
23801         (is_gimple_formal_tmp_reg): Likewise.
23802         (is_gimple_min_lval): Allow invariant component ref parts.
23803         * gimple.h (is_gimple_formal_tmp_rhs, is_gimple_formal_tmp_var,
23804         is_gimple_formal_tmp_reg): Remove declarations.
23805         * tree-cfg.c (verify_expr): Verify that variables with address
23806         taken do not have DECL_GIMPLE_REG_P set.
23807         * tree-mudflap.c (mf_build_check_statement_for): Use
23808         force_gimple_operand instead of gimplify_expr.
23809
23810 2009-03-31  Ayal Zaks  <zaks@il.ibm.com>
23811
23812         * modulo-sched.c (sms_schedule_by_order): Pass the actual
23813         schedulable rows to compute_split_row.
23814
23815 2009-03-31  Ben Elliston  <bje@au.ibm.com>
23816
23817         PR target/31635
23818         * config/rs6000/rs6000.c (rs6000_handle_option): Handle
23819         OPT_mvrsave.
23820
23821 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
23822
23823         * doc/invoke.texi (RS/6000 and PowerPC Options):Document mtls-markers.
23824         * configure.ac (HAVE_AS_TLS_MARKERS): New gas feature check.
23825         * configure: Regenerate.
23826         * config.in: Regenerate.
23827         * config/rs6000/rs6000.opt (mtls-markers): Add.
23828         * config/rs6000/rs6000.h (TARGET_TLS_MARKERS): Define.
23829         * config/rs6000/rs6000.md (tls_gd_aix, tls_gd_sysv): Add splitter.
23830         (tls_ld_aix, tls_ld_sysv): Likewise.
23831         (tls_gd, tls_gd_call_aix, tls_gd_call_sysv): New insns.
23832         (tls_ld, tls_ld_call_aix, tls_ld_call_sysv): Likewise.
23833
23834 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
23835
23836         * config/spu/spu.c (spu_expand_prologue): Delete redundant code.
23837
23838 2009-03-30  Jan Hubicka  <jh@suse.cz>
23839
23840         * tree-eh.c (make_eh_edges): Set probability 100% to first edge
23841         out of RESX.
23842         (tree_remove_unreachable_handlers): Cleanup EH predecestor
23843         detection and label handling.
23844
23845 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
23846
23847         * ira-int.h (ira_allocno): Rename left_conflicts_num to
23848         left_conflicts_size.
23849         (ALLOCNO_LEFT_CONFLICTS_NUM): Rename to
23850         ALLOCNO_LEFT_CONFLICTS_SIZE.
23851
23852         * ira-color.c (allocno_spill_priority, push_allocno_to_stack,
23853         remove_allocno_from_bucket_and_push,
23854         allocno_spill_priority_compare, push_allocnos_to_stack,
23855         setup_allocno_available_regs_num): Use ALLOCNO_LEFT_CONFLICTS_SIZE
23856         instead of ALLOCNO_LEFT_CONFLICTS_NUM.
23857         (setup_allocno_left_conflicts_num): Ditto.  Rename to
23858         setup_allocno_left_conflicts_size.
23859         (put_allocno_into_bucket): Use ALLOCNO_LEFT_CONFLICTS_SIZE
23860         instead of ALLOCNO_LEFT_CONFLICTS_NUM and
23861         setup_allocno_left_conflicts_size instead of
23862         setup_allocno_left_conflicts_num.
23863
23864         * ira-build.c (ira_create_allocno): Use
23865         ALLOCNO_LEFT_CONFLICTS_SIZE instead of
23866         ALLOCNO_LEFT_CONFLICTS_NUM.
23867
23868 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
23869
23870         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
23871         instead of DF_LR_OUT.
23872
23873         * ira-lives.c (process_bb_node_lives): Ditto.
23874
23875         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
23876         instead of DF_LR_{OUT,IN}.
23877
23878         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
23879
23880         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
23881
23882 2009-03-30  Jan Hubicka  <jh@suse.cz>
23883
23884         * except.c (label_to_region_map): Fix thinko.
23885
23886 2009-03-30  Steve Ellcey  <sje@cup.hp.com>
23887
23888         PR middle-end/38237
23889         * tree.h (tree_find_value): New declaration.
23890         * tree.c (tree_find_value): New function.
23891         * varasm.c (assemble_external): Avoid duplicate entries on lists.
23892
23893 2009-03-30  Jakub Jelinek  <jakub@redhat.com>
23894
23895         PR debug/39563
23896         * c-decl.c (struct c_binding): Add locus field.
23897         (bind): Add locus argument, set locus field from it.
23898         (pop_scope): For b->nested VAR_DECL or FUNCTION_DECL,
23899         add a DECL_EXTERNAL copy of b->decl to current BLOCK_VARS.
23900         (push_file_scope, pushtag, pushdecl, pushdecl_top_level,
23901         implicitly_declare, undeclared_variable, lookup_label,
23902         declare_label, c_make_fname_decl, c_builtin_function,
23903         c_builtin_function_ext_scope, store_parm_decls_newstyle): Adjust
23904         bind callers.
23905
23906 2009-03-30  H.J. Lu  <hongjiu.lu@intel.com>
23907
23908         PR target/38781
23909         * config/i386/i386.c (classify_argument): Check total size of
23910         structure.
23911
23912 2009-03-30  Martin Jambor  <mjambor@suse.cz>
23913
23914         * ipa-prop.h (jump_func_type): Rename IPA_UNKNOWN, IPA_CONST,
23915         IPA_CONST_MEMBER_PTR, and IPA_PASS_THROUGH to IPA_JF_UNKNOWN,
23916         IPA_JF_CONST, IPA_JF_CONST_MEMBER_PTR, and IPA_JF_PASS_THROUGH
23917         respectively.
23918
23919         * tree-dfa.c (get_ref_base_and_extent): Return -1 maxsize if
23920         seen_variable_array_ref while also traversing a union.
23921
23922         * tree-inline.c (optimize_inline_calls): Do not call
23923         cgraph_node_remove_callees.
23924         * cgraphbuild.c (remove_cgraph_callee_edges): New function.
23925         (pass_remove_cgraph_callee_edges): New variable.
23926         * passes.c (init_optimization_passes): Add
23927         pass_remove_cgraph_callee_edges after early inlining and before all
23928         late intraprocedural passes.
23929
23930         * omp-low.c (expand_omp_taskreg): Always set current_function_decl.
23931
23932 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
23933
23934         * config/sparc/sparc.md (*nand<V64mode>_vis, *nand<V32mode>_vis):
23935         Fix typos in names.
23936
23937 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
23938
23939         * combine.c (simplify_comparison): Use have_insn_for.
23940         * dojump.c (do_jump): Likewise.
23941
23942 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
23943
23944         * config/sparc/sparc.c (sparc_compare_emitted): Remove.
23945         (gen_compare_reg, emit_v9_brxx_insn): Handle MODE_CC
23946         sparc_compare_op0 like sparc_compare_emitted used to be handled.
23947         (sparc_expand_compare_and_swap_12): Set sparc_compare_op0
23948         instead of sparc_compare_emitted.
23949         * config/sparc/sparc.h (sparc_compare_emitted): Remove.
23950         * config/sparc/sparc.md (stack_protect_test): Set sparc_compare_op0
23951         instead of sparc_compare_emitted.
23952
23953 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
23954
23955         * bb-reorder.c (partition_hot_cold_basic_blocks): Do not
23956         enter/exit cfglayout mode.
23957         (pass_partition_block): Require it.
23958         * combine.c (find_single_use, reg_dead_at_p): Use CFG.
23959         (combine_instructions): Track basic blocks instead of labels.
23960         (update_cfg_for_uncondjump): New.
23961         (try_combine): Use it.  Update jumps after rescanning.
23962         (pass_combine): Require PROP_cfglayout.
23963         * passes.c (pass_outof_cfg_layout_mode): Move after regmove.
23964
23965 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
23966
23967         * cfglayout.c (pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode):
23968         Provide/destroy PROP_cfglayout respectively.
23969         * gcse.c (pass_jump_bypass, pass_gcse): Require it.
23970         * tree-pass.h (PROP_cfglayout): New.
23971
23972 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
23973
23974         * fold-const.c (const_binop, fold_convert_const_real_from_fixed,
23975         fold_convert_const_fixed_from_fixed,
23976         fold_convert_const_fixed_from_int,
23977         fold_convert_const_fixed_from_real, fold_negate_const): Do not
23978         set TREE_CONSTANT_OVERFLOW.
23979         * tree.def: Remove mention of TREE_CONSTANT_OVERFLOW.
23980         * tree.h (TREE_CONSTANT_OVERFLOW): Delete.
23981
23982 2009-03-30  Ira Rosen  <irar@il.ibm.com>
23983
23984         * tree-vect-loop-manip.c: New file.
23985         * tree-vectorizer.c: Update documentation and included files.
23986         (vect_loop_location): Make extern.
23987         (rename_use_op): Move to tree-vect-loop-manip.c
23988         (rename_variables_in_bb, rename_variables_in_loop,
23989         slpeel_update_phis_for_duplicate_loop,
23990         slpeel_update_phi_nodes_for_guard1,
23991         slpeel_update_phi_nodes_for_guard2, slpeel_make_loop_iterate_ntimes,
23992         slpeel_tree_duplicate_loop_to_edge_cfg, slpeel_add_loop_guard,
23993         slpeel_can_duplicate_loop_p, slpeel_verify_cfg_after_peeling,
23994         set_prologue_iterations, slpeel_tree_peel_loop_to_edge,
23995         find_loop_location): Likewise.
23996         (new_stmt_vec_info): Move to tree-vect-stmts.c.
23997         (init_stmt_vec_info_vec, free_stmt_vec_info_vec, free_stmt_vec_info,
23998         get_vectype_for_scalar_type, vect_is_simple_use,
23999         supportable_widening_operation, supportable_narrowing_operation):
24000         Likewise.
24001         (bb_in_loop_p): Move to tree-vect-loop.c.
24002         (new_loop_vec_info, destroy_loop_vec_info,
24003         reduction_code_for_scalar_code, report_vect_op,
24004         vect_is_simple_reduction, vect_is_simple_iv_evolution): Likewise.
24005         (vect_can_force_dr_alignment_p): Move to tree-vect-data-refs.c.
24006         (vect_supportable_dr_alignment): Likewise.
24007         * tree-vectorizer.h (tree-data-ref.h): Include.
24008         (vect_loop_location): Declare.
24009         Reorganize function declarations according to the new file structure.
24010         * tree-vect-loop.c: New file.
24011         * tree-vect-analyze.c: Remove. Move functions to tree-vect-data-refs.c,
24012         tree-vect-stmts.c, tree-vect-slp.c, tree-vect-loop.c.
24013         * tree-vect-data-refs.c: New file.
24014         * tree-vect-patterns.c (timevar.h): Don't include.
24015         * tree-vect-stmts.c: New file.
24016         * tree-vect-transform.c: Remove. Move functions to tree-vect-stmts.c,
24017         tree-vect-slp.c, tree-vect-loop.c.
24018         * Makefile.in (OBJS-common): Remove tree-vect-analyze.o and
24019         tree-vect-transform.o. Add tree-vect-data-refs.o, tree-vect-stmts.o,
24020         tree-vect-loop.o, tree-vect-loop-manip.o, tree-vect-slp.o.
24021         (tree-vect-analyze.o): Remove.
24022         (tree-vect-transform.o): Likewise.
24023         (tree-vect-data-refs.o): Add rule.
24024         (tree-vect-stmts.o, tree-vect-loop.o, tree-vect-loop-manip.o,
24025         tree-vect-slp.o): Likewise.
24026         (tree-vect-patterns.o): Remove redundant dependencies.
24027         (tree-vectorizer.o): Likewise.
24028         * tree-vect-slp.c: New file.
24029
24030 2009-03-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
24031
24032         * optc-gen.awk: Warn if an option flag has multiple different
24033         help strings.
24034
24035 2009-03-30  Sebastian Pop  <sebastian.pop@amd.com>
24036
24037         * doc/invoke.texi (-floop-interchange, -floop-strip-mine,
24038         -floop-block): Document dependences on PPL, CLooG and Graphite.
24039
24040 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
24041
24042         PR rtl-optimization/323
24043         * c-common.c (c_fully_fold, convert_and_check,
24044         c_common_truthvalue_conversion): Handle EXCESS_PRECISION_EXPR.
24045         (c_fully_fold_internal): Disallow EXCESS_PRECISION_EXPR.
24046         * c-common.def (EXCESS_PRECISION_EXPR): New.
24047         * c-cppbuiltin.c (builtin_define_float_constants): Define
24048         constants with enough digits for long double.
24049         * c-lex.c (interpret_float): Interpret constant with excess
24050         precision where appropriate.
24051         * c-opts.c (c_common_post_options): Set
24052         flag_excess_precision_cmdline.  Give an error for
24053         -fexcess-precision=standard for C++ for processors where the
24054         option is significant.
24055         * c-parser.c (c_parser_conditional_expression): Handle excess
24056         precision in condition.
24057         * c-typeck.c (convert_arguments): Handle arguments with excess
24058         precision.
24059         (build_unary_op): Move excess precision outside operation.
24060         (build_conditional_expr): Likewise.
24061         (build_compound_expr): Likewise.
24062         (build_c_cast): Do cast on operand of EXCESS_PRECISION_EXPR.
24063         (build_modify_expr): Handle excess precision in RHS.
24064         (convert_for_assignment): Handle excess precision in converted
24065         value.
24066         (digest_init, output_init_element, process_init_element): Handle
24067         excess precision in initializer.
24068         (c_finish_return): Handle excess precision in return value.
24069         (build_binary_op): Handle excess precision in operands and add
24070         excess precision as needed for operation.
24071         * common.opt (-fexcess-precision=): New option.
24072         * config/i386/i386.h (X87_ENABLE_ARITH, X87_ENABLE_FLOAT): New.
24073         * config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
24074         For standard excess precision, output explicit conversion to and
24075         truncation from XFmode.
24076         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1,
24077         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp,
24078         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387, two unnamed
24079         define_splits, floatdi<X87MODEF:mode>2_i387_with_xmm, two unnamed
24080         define_splits, *floatunssi<mode>2_1, two unnamed define_splits,
24081         floatunssi<mode>2, add<mode>3, sub<mode>3, mul<mode>3, divdf3,
24082         divsf3, *fop_<mode>_comm_i387, *fop_<mode>_1_i387,
24083         *fop_<MODEF:mode>_2_i387, *fop_<MODEF:mode>_3_i387,
24084         *fop_df_4_i387, *fop_df_5_i387, *fop_df_6_i387, two unnamed
24085         define_splits, sqrt<mode>2): Disable where appropriate for
24086         standard excess precision.
24087         * convert.c (convert_to_real): Do not shorten arithmetic to type
24088         for which excess precision would be used.
24089         * defaults.h (TARGET_FLT_EVAL_METHOD_NON_DEFAULT): Define.
24090         * doc/invoke.texi (-fexcess-precision=): Document option.
24091         (-mfpmath=): Correct index entry.
24092         * flags.h (enum excess_precision, flag_excess_precision_cmdline,
24093         flag_excess_precision): New.
24094         * langhooks.c (lhd_post_options): Set
24095         flag_excess_precision_cmdline.
24096         * opts.c (common_handle_option): Handle -fexcess-precision=.
24097         * toplev.c (flag_excess_precision_cmdline, flag_excess_precision,
24098         init_excess_precision): New.
24099         (lang_dependent_init_target): Call init_excess_precision.
24100         * tree.c (excess_precision_type): New.
24101         * tree.h (excess_precision_type): Declare.
24102
24103 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
24104
24105         PR c/35235
24106         * c-typeck.c (build_component_ref): Do not copy qualifiers from
24107         non-lvalue to component.
24108
24109 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
24110
24111         PR preprocessor/34695
24112         * Makefile.in (c-opts.o): Depend on c-tree.h.
24113         * c-common.c: Move down include of diagnostic.h.
24114         (done_lexing, c_cpp_error): New.
24115         * c-common.h (done_lexing): Declare.
24116         * c-decl.c (c_write_global_declarations): Don't check cpp_errors
24117         (parse_in).
24118         * c-opts.c: Include c-tree.h.
24119         (c_common_init_options): Set preprocessor error callback.
24120         (c_common_handle_option): Do not set preprocessor
24121         inhibit_warnings, warnings_are_errors, warn_system_headers,
24122         pedantic_errors or inhibit_warnings flags.
24123         (c_common_post_options): Do not check cpp_errors (parse_in).
24124         (c_common_finish): Do not output dependencies if there were
24125         errors.  Do not check return value of cpp_finish.
24126         * c-ppoutput.c (pp_file_change): Set input_location.
24127         * c-tree.h (c_cpp_error): Declare.
24128         * diagnostic.c (diagnostic_set_info_translated): Also initialize
24129         override_column.
24130         (diagnostic_build_prefix): Check override_column.
24131         * diagnostic.h (diagnostic_info): Add override_column field.
24132         (diagnostic_override_column): Define.
24133
24134 2009-03-28  Paolo Bonzini  <bonzini@gnu.org>
24135
24136         * c-common.c (c_expand_expr, c_staticp): Remove.
24137         * c-common.def (COMPOUND_LITERAL_EXPR): Delete.
24138         * c-common.h (emit_local_var, c_staticp, COMPOUND_LITERAL_EXPR_DECL,
24139         COMPOUND_LITERAL_EXPR_DECL_EXPR): Remove.
24140         * c-gimplify.c (gimplify_compound_literal_expr,
24141         optimize_compound_literals_in_ctor): Remove.
24142         (c_gimplify_expr): Remove COMPOUND_LITERAL_EXPR handling.
24143         * c-objc-common.h (LANG_HOOKS_STATICP): Remove.
24144         * c-semantics.c (emit_local_var): Remove.
24145
24146         * langhooks-def.h (lhd_expand_expr): Remove.
24147         * langhooks.c (lhd_expand_expr): Remove.
24148         * langhooks.h (LANG_HOOKS_DEF): Remove LANG_HOOKS_EXPAND_EXPR.
24149
24150         * expr.c (expand_expr_real_1): Move COMPOUND_LITERAL_EXPR
24151         handling from c-semantics.c; don't call into langhook.
24152         (expand_expr_addr_expr_1): Check that we don't get non-GENERIC trees.
24153         * gimplify.c (gimplify_compound_literal_expr,
24154         optimize_compound_literals_in_ctor): Move from c-gimplify.c.
24155         (gimplify_init_constructor): Call optimize_compound_literals_in_ctor.
24156         (gimplify_modify_expr_rhs, gimplify_expr): Handle COMPOUND_LITERAL_EXPR
24157         as was done in c-gimplify.c.
24158         * tree.c (staticp): Move COMPOUND_LITERAL_EXPR handling from c_staticp.
24159         * tree.h (COMPOUND_LITERAL_EXPR_DECL, COMPOUND_LITERAL_EXPR_DECL_EXPR):
24160         Move from c-common.h.
24161         * tree.def (COMPOUND_LITERAL_EXPR): Move from c-common.def.
24162
24163         * tree.c (staticp): Do not call langhook.
24164         * langhooks.c (lhd_staticp): Delete.
24165         * langhooks-def.h (lhd_staticp): Delete prototype.
24166         (LANG_HOOKS_STATICP): Delete.
24167         (LANG_HOOKS_INITIALIZER): Delete LANG_HOOKS_STATICP.
24168
24169         * doc/c-tree.texi (Expression nodes): Refer to DECL_EXPRs
24170         instead of DECL_STMTs.
24171
24172 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
24173
24174         PR c/456
24175         PR c/5675
24176         PR c/19976
24177         PR c/29116
24178         PR c/31871
24179         PR c/35198
24180         * builtins.c (fold_builtin_sincos): Build COMPOUND_EXPR in
24181         void_type_node.
24182         (fold_call_expr): Return a NOP_EXPR from folding rather than the
24183         contained expression.
24184         * c-common.c (c_fully_fold, c_fully_fold_internal, c_save_expr): New.
24185         (c_common_truthvalue_conversion): Use c_save_expr.  Do not fold
24186         conditional expressions for C.
24187         (decl_constant_value_for_optimization): Move from
24188         decl_constant_value_for_broken_optimization in c-typeck.c.  Check
24189         whether optimizing and that the expression is a VAR_DECL not of
24190         array type instead of doing such checks in the caller.  Do not
24191         check pedantic.  Call gcc_unreachable for C++.
24192         * c-common.def (C_MAYBE_CONST_EXPR): New.
24193         * c-common.h (c_fully_fold, c_save_expr,
24194         decl_constant_value_for_optimization): New prototypes.
24195         (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
24196         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
24197         EXPR_INT_CONST_OPERANDS): Define.
24198         * c-convert.c (convert): Strip nops from expression.
24199         * c-decl.c (groktypename): Take extra parameters expr and
24200         expr_const_operands.  Update call to grokdeclarator.
24201         (start_decl): Update call to grokdeclarator.  Add statement for
24202         expressions used in type of decl.
24203         (grokparm): Update call to grokdeclarator.
24204         (push_parm_decl): Update call to grokdeclarator.
24205         (build_compound_literal): Add parameter non_const and build a
24206         C_MAYBE_COSNT_EXPR if applicable.
24207         (grokdeclarator): Take extra parameters expr and
24208         expr_const_operands.  Track expressions used in declaration
24209         specifiers and declarators.  Fold array sizes and track whether
24210         they are constant expressions and whether they are integer
24211         constant expressions.
24212         (parser_xref_tag): Set expr and expr_const_operands fields in
24213         return value.
24214         (grokfield): Update call to grokdeclarator.
24215         (start_function): Update call to grokdeclarator.
24216         (build_null_declspecs): Set expr and expr_const_operands fields in
24217         return value.
24218         (declspecs_add_type): Handle expressions in typeof specifiers.
24219         * c-parser.c (c_parser_declspecs): Set expr and
24220         expr_const_operands fields for declaration specifiers.
24221         (c_parser_enum_specifier): Likewise.
24222         (c_parser_struct_or_union_specifier): Likewise.
24223         (c_parser_typeof_specifier): Likewise.  Update call to
24224         groktypename.  Fold expression as needed.  Return expressions with
24225         type instead of adding statements.
24226         (c_parser_attributes): Update calls to c_parser_expr_list.
24227         (c_parser_statement_after_labels): Fold expression before passing
24228         to objc_build_throw_stmt.
24229         (c_parser_condition): Fold expression.
24230         (c_parser_asm_operands): Fold expression.
24231         (c_parser_conditional_expression): Use c_save_expr.  Update call
24232         to build_conditional_expr.
24233         (c_parser_alignof_expression): Update call to groktypename.
24234         (c_parser_postfix_expression): Preserve C_MAYBE_CONST_EXPR as
24235         original_code.  Fold expression argument of va_arg.  Create
24236         C_MAYBE_CONST_EXPR to preserve side effects of expressions in type
24237         argument to va_arg.  Update calls to groktypename.  Fold array
24238         index for offsetof.  Verify that first argument to
24239         __builtin_choose_expr has integer type.
24240         (c_parser_postfix_expression_after_paren_type): Update calls to
24241         groktypename and build_compound_literal.  Handle expressions with
24242         side effects in type name.
24243         (c_parser_postfix_expression_after_primary): Update call to
24244         c_parser_expr_list.  Set original_code for calls to
24245         __builtin_constant_p.
24246         (c_parser_expr_list): Take extra parameter fold_p.  Fold
24247         expressions if requested.
24248         (c_parser_objc_type_name): Update call to groktypename.
24249         (c_parser_objc_synchronized_statement): Fold expression.
24250         (c_parser_objc_receiver): Fold expression.
24251         (c_parser_objc_keywordexpr): Update call to c_parser_expr_list.
24252         (c_parser_omp_clause_num_threads, c_parser_omp_clause_schedule,
24253         c_parser_omp_atomic, c_parser_omp_for_loop): Fold expressions.
24254         * c-tree.h (CONSTRUCTOR_NON_CONST): Define.
24255         (struct c_typespec): Add elements expr and expr_const_operands.
24256         (struct c_declspecs): Add elements expr and expr_const_operands.
24257         (groktypename, build_conditional_expr, build_compound_literal):
24258         Update prototypes.
24259         (in_late_binary_op): Declare.
24260         * c-typeck.c (note_integer_operands): New function.
24261         (in_late_binary_op): New variable.
24262         (decl_constant_value_for_broken_optimization): Move to c-common.c
24263         and rename to decl_constant_value_for_optimization.
24264         (default_function_array_conversion): Do not strip nops.
24265         (default_conversion): Do not call
24266         decl_constant_value_for_broken_optimization.
24267         (build_array_ref): Do not fold result.
24268         (c_expr_sizeof_expr): Fold operand.  Use C_MAYBE_CONST_EXPR for
24269         result when operand is a VLA.
24270         (c_expr_sizeof_type): Update call to groktypename.  Handle
24271         expressions included in type name.  Use C_MAYBE_CONST_EXPR for
24272         result when operand names a VLA type.
24273         (build_function_call): Update call to build_compound_literal.
24274         Only fold result for calls to __builtin_* functions.  Strip
24275         NOP_EXPR from INTEGER_CST returned from such functions.  Fold
24276         the function designator.
24277         (convert_arguments): Fold arguments.  Update call to
24278         convert_for_assignment.
24279         (build_unary_op): Handle increment and decrement of
24280         C_MAYBE_CONST_EXPR.  Move lvalue checks for increment and
24281         decrement earlier.  Fold operand of increment and decrement.
24282         Handle address of C_MAYBE_CONST_EXPR.  Only fold expression being
24283         built for integer operand.  Wrap returns that are INTEGER_CSTs
24284         without being integer constant expressions or that have integer
24285         constant operands without being INTEGER_CSTs.
24286         (lvalue_p): Handle C_MAYBE_CONST_EXPR.
24287         (build_conditional_expr): Add operand ifexp_bcp.  Track whether
24288         result is an integer constant expression or can be used in
24289         unevaluated parts of one and avoid folding and wrap as
24290         appropriate.  Fold operands before possibly doing -Wsign-compare
24291         warnings.
24292         (build_compound_expr): Wrap result for C99 if operands can be used
24293         in integer constant expressions.
24294         (build_c_cast): Update call to digest_init.  Do not ignore
24295         overflow from casting floating-point constants to integers.  Wrap
24296         results that could be confused with integer constant expressions,
24297         null pointer constants or floating-point constants.
24298         (c_cast_expr): Update call to groktypename.  Handle expressions
24299         included in type name.
24300         (build_modify_expr): Handle modifying a C_MAYBE_CONST_EXPR.  Fold
24301         lhs inside possible SAVE_EXPR.  Fold RHS before assignment.
24302         Update calls to convert_for_assignment.
24303         (convert_for_assignment): Take new parameter
24304         null_pointer_constant.  Do not strip nops or call
24305         decl_constant_value_for_broken_optimization.  Set
24306         in_late_binary_op for conversions to boolean.
24307         (store_init_value): Update call to digest_init.
24308         (digest_init): Take new parameter null_pointer_constant.  Do not
24309         call decl_constant_value_for_broken_optimization.  pedwarn for
24310         initializers not constant expressions.  Update calls to
24311         convert_for_assignment.
24312         (constructor_nonconst): New.
24313         (struct constructor_stack): Add nonconst element.
24314         (really_start_incremental_init, push_init_level, pop_init_level):
24315         Handle constructor_nonconst and nonconst element.
24316         (set_init_index): Call constant_expression_warning for array
24317         designators.
24318         (output_init_element): Fold value.  Set constructor_nonconst as
24319         applicable.  pedwarn for initializers not constant expressions.
24320         Update call to digest_init.  Call constant_expression_warning
24321         where constant initializers are required.
24322         (process_init_element): Use c_save_expr.
24323         (c_finish_goto_ptr): Fold expression.
24324         (c_finish_return): Fold return value.  Update call to
24325         convert_for_assignment.
24326         (c_start_case): Fold switch expression.
24327         (c_process_expr_stmt): Fold expression.
24328         (c_finish_stmt_expr): Create C_MAYBE_CONST_EXPR as needed to
24329         ensure statement expression is not evaluated in constant expression.
24330         (build_binary_op): Track whether results are integer constant
24331         expressions or may occur in such, disable folding and wrap results
24332         as applicable.  Fold operands for -Wsign-compare warnings unless
24333         in_late_binary_op.
24334         (c_objc_common_truthvalue_conversion): Handle results folded to
24335         integer constants that are not integer constant expressions.
24336         * doc/extend.texi: Document when typeof operands are evaluated,
24337         that condition of __builtin_choose_expr is an integer constant
24338         expression, and more about use of __builtin_constant_p in
24339         initializers.
24340
24341 2009-03-29  Richard Guenther  <rguenther@suse.de>
24342
24343         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Properly
24344         propagate addresses of array references.
24345
24346 2009-03-29  Steven Bosscher  <steven@gcc.gnu.org>
24347
24348         * regmove.c (perhaps_ends_bb_p): Remove.
24349         (optimize_reg_copy_1): Don't call perhaps_ends_bb_p.  Get basic block
24350         from INSN and check that the main loop stays within that basic block.
24351         (optimize_reg_copy_1, optimize_reg_copy_3, fixup_match_2): Likewise.
24352         (regmove_forward_pass): Split out from regmove_optimize.  Use
24353         FOR_EACH_BB and FOR_BB_INSNS instead of traversing the insns stream.
24354         (regmove_backward_pass): Split out from regmove_optimize.  Use
24355         FOR_EACH_BB_REVERSE and FOR_BB_INSNS_REVERS_SAFE.
24356         (regmove_optimize): Simplify.
24357
24358 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
24359
24360         PR target/39545
24361         * config/i386/i386.c (classify_argument): Ignore flexible array
24362         member in struct and warn ABI change.
24363
24364 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
24365
24366         * config/i386/i386-protos.h (ix86_agi_dependent): New.
24367
24368         * config/i386/i386.c (ix86_agi_dependent): Rewrite.
24369         (ix86_adjust_cost): Updated.
24370
24371 2009-03-29  Jan Hubicka  <jh@suse.cz>
24372
24373         PR middle-end/28850
24374         * tree-pass.h (pass_cleanup_eh): New function.
24375         (remove_unreachable_regions): Break code handling RTL
24376         to rtl_remove_unreachable_regions; remove ERT_MUST_NOT_THROW
24377         that can not be reached by runtime.
24378         (can_be_reached_by_runtime): New function.
24379         (label_to_region_map): New function.
24380         (num_eh_regions): New function.
24381         (rtl_remove_unreachable_regions): New function.
24382         (convert_from_eh_region_ranges): Call rtl_remove_unreachable_regions.
24383         (remove_eh_region): New function.
24384         * except.h: Include sbitmap and vecprim.
24385         (remove_eh_region, remove_unreachable_regions, label_to_region_map,
24386         num_eh_regions): Declare.
24387         * passes.c (init_optimization_passes): Schedule cleanup_eh.
24388         * Makefile.in (EXCEPT_H): New; replace all uses of except.h by it.
24389         * tree-eh.c (tree_remove_unreachable_handlers): New function.
24390         (tree_empty_eh_handler_p): New function.
24391         (cleanup_empty_eh): New function.
24392         (cleanup_eh): New function.
24393         (pass_cleanup_eh): New function.
24394
24395 2009-03-29  Jan Hubicka  <jh@suse.cz>
24396
24397         * except.c (verify_eh_tree): Fix handling of fun!=cfun; be ready
24398         for removed regions.
24399
24400 2009-03-29  Jan Hubicka  <jh@suse.cz>
24401
24402         * except.c (dump_eh_tree): Dump all datastructures.
24403
24404 2009-03-29  Jan Hubicka  <jh@suse.cz>
24405
24406         * except.c (duplicate_eh_regions_0): Handle AKA bitmap.
24407         (duplicate_eh_regions_1): Likewise.
24408         (duplicate_eh_regions): Likewise; cleanup code gorwing the region
24409         vector; call EH verification.
24410         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
24411         Be ready for region being removed.
24412
24413 2009-03-29  Jan Hubicka  <jh@suse.cz>
24414
24415         * bitmap.c (bitmap_last_set_bit): New function.
24416         * bitmap.h (bitmap_last_set_bit): Declare.
24417
24418 2009-03-29  David Ayers  <ayers@fsfe.org>
24419
24420         PR objc/27377
24421         * c-typeck.c (build_conditional_expr): Emit ObjC warnings
24422         by calling objc_compare_types and surpress warnings about
24423         incompatible C pointers that are compatible ObjC pointers.
24424
24425 2009-03-29  Adam Nemet  <anemet@caviumnetworks.com>
24426
24427         * cgraphbuild.c (build_cgraph_edges, rebuild_cgraph_edges): Don't
24428         call initialize_inline_failed.
24429         (initialize_inline_failed): Move it from here ...
24430         * cgraph.c (initialize_inline_failed): ... to here.
24431         (cgraph_create_edge): Call initialize_inline_failed rather than
24432         setting inline_failed directly.
24433
24434 2009-03-29  Ben Elliston  <bje@au.ibm.com>
24435
24436         PR target/32542
24437         * sysv4.opt (msdata): Improve comment.
24438         * linux64.h (ASM_SPEC32): Do not pass -memb when -msdata is given.
24439         * sysv4.h (SVR4_ASM_SPEC): Likewise.
24440
24441 2009-03-29  Ben Elliston  <bje@au.ibm.com>
24442
24443         PR target/30451
24444         * config/rs6000/rs6000.md (*movti_ppc64): Correct the order of
24445         load and store attributes.
24446
24447 2009-03-29  Ben Elliston  <bje@au.ibm.com>
24448
24449         * config/i386/i386.c (enum ix86_builtins): Add IX86_BUILTIN_HUGE_VALQ.
24450         (ix86_init_builtins): Add built-in function __builtin_huge_valq.
24451         (ix86_expand_builtin): Handle IX86_BUILTIN_HUGE_VALQ.
24452         * doc/extend.texi (X86 Built-in Functions): Add index entries for
24453         __builtin_infq and __builtin_huge_valq.
24454
24455 2009-03-28  Anatoly Sokolov  <aesok@post.ru>
24456
24457         * config/avr/avr.c (avr_mcu_t): Add atmega8c1, atmega16c1 and
24458         atmega8m1 devices.
24459         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
24460         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.)
24461
24462 2009-03-28  Xinliang David Li  <davidxl@google.com>
24463
24464         * tree-ssa-ccp.c (ccp_finalize): Add dbg_count support.
24465         (do_dbg_cnt): New function.
24466
24467 2009-03-28  Jan Hubicka  <jh@suse.cz>
24468
24469         Merge from pretty-ipa:
24470
24471         2009-03-27  Jan Hubicka  <jh@suse.cz>
24472
24473         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
24474         * tree-pass.h (function_called_by_processed_nodes_p): Declare.
24475         * passes.c (function_called_by_processed_nodes_p): New.
24476         * ipa-pure-const.c (check_call): Fix handling of operands.
24477         (analyze_function): Dump debug output for skipped bodies.
24478         (local_pure_const): Use function_called_by_processed_nodes_p.
24479         * dwarf2out.c (reference_to_unused): Use output.
24480         * passes.c (do_per_function_toporder): Likewise.
24481
24482         2008-11-12  Jan Hubicka  <jh@suse.cz>
24483
24484         * tree-pass.h (pass_fixup_cfg, pass_local_pure_const): Declare.
24485         * ipa-pure-const.c (funct_state_d): Add can throw field; make
24486         state_set_in_source enum
24487         (check_decl): Ignore memory tags; do not set fake looping flags;
24488         dump diagnostics.
24489         (check_operand, check_tree, check_rhs_var, check_lhs_var,
24490         get_asm_expr_operands, scan_function_op, scan_function_stmt): Remove.
24491         (check_call, analyze_function): Rewrite.
24492         (check_stmt): New.
24493         (add_new_function): Update call of analyze_function.
24494         (generate_summary): Add call of analyze_function.
24495         (propagate): Propagate can_throw; handle state_set_in_source correctly.
24496         (local_pure_const): New function.
24497         (pass_local_pure_const): New pass.
24498         * ipa-inline.c (inline_transform): Set after_inlining.
24499         * tree-eh.c (stmt_can_throw_external): New.
24500         * tree-optimize.c (execute_fixup_cfg): Do not set after_inlining;
24501         work with aliasing built.
24502         * tree-flow.h (stmt_can_throw_external): New.
24503         * passes.c (init_optimization_passes): Schedule fixup_cfg pass early;
24504         and local pure/const pass in early and late optimization queue.
24505
24506 2009-03-28  Martin Jambor  <mjambor@suse.cz>
24507
24508         * fold-const.c (get_pointer_modulus_and_residue): New parameter
24509         allow_func_align.
24510         (fold_binary): Allow function decl aligment consideration is the
24511         second argument is integer constant one.
24512         * tree-ssa-forwprop.c (simplify_bitwise_and): New function.
24513         (tree_ssa_forward_propagate_single_use_vars): Handle assing statements
24514         with BIT_AND_EXPR on the RHS by calling simplify_bitwise_and.
24515
24516 2009-03-28  Jan Hubicka  <jh@suse.cz>
24517
24518         * dwarf2out.c (dwarf2out_begin_prologue): Use crtl->nothrow
24519         * tree-eh.c (stmt_could_throw_p): Remove check for WEAK decls.
24520         * function.h (rtl_data): Add nothrow flag.
24521         * except.c (set_nothrow_function_flags): Use crtl->nothrow;
24522         set DECL_NOTHROW for AVAILABLE functions.
24523
24524 2009-03-28  Jakub Jelinek  <jakub@redhat.com>
24525
24526         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): If macro
24527         following vector keyword has expansion starting with pixel or bool
24528         keyword, expand vector to __vector and pixel or bool to __pixel or
24529         __bool.
24530
24531         PR c++/39554
24532         * opts.c (warning_disallowed_functions, warn_disallowed_functions,
24533         warn_if_disallowed_function_p): Removed.
24534         (common_handle_option): Don't handle OPT_Wdisallowed_function_list_.
24535         * c-parser.c (c_parser_postfix_expression_after_primary): Don't call
24536         warning_if_disallowed_function_p.
24537         * flags.h (warn_if_disallowed_function_p,
24538         warn_disallowed_functions): Removed.
24539         * common.opt (Wdisallowed-function-list=): Removed.
24540         * doc/invoke.texi (-Wdisallowed-function-list=): Removed.
24541
24542 2009-03-28  Richard Guenther  <rguenther@suse.de>
24543
24544         PR tree-optimization/38723
24545         * tree-ssa-pre.c (compute_avail): Add all default definitions to
24546         the entry block.
24547
24548 2009-03-28  Jan Hubicka  <jh@suse.cz>
24549
24550         * tree-ssa-structalias.c (ipa_pta_execute): Fix bogus node->analyzed
24551         test introduced by my previous patch.
24552
24553 2009-03-28  Richard Guenther  <rguenther@suse.de>
24554
24555         * tree-ssa-copy.c (copy_prop_visit_phi_node): Do not leave
24556         the PHIs value undefined.
24557
24558 2009-03-28  Jan Hubicka  <jh@suse.cz>
24559
24560         * tree-pass.h (pass_fixup_cfg): New pass.
24561         * ipa-inline.c (inline_transform): Set
24562         always_inline_functions_inlined/after_inlining.
24563         * tree-optimize.c (execute_fixup_cfg): Do not set them here.
24564         (pass_fixup_cfg): New pass.
24565         * passes.c (init_optimization_passes): Add fixup_cfg.
24566
24567 2009-03-28  Richard Guenther  <rguenther@suse.de>
24568
24569         PR tree-optimization/38458
24570         * tree-ssa-copy.c (copy_prop_visit_phi_node): For the first
24571         argument use the arguments copy-of value.
24572
24573 2009-03-28  Richard Guenther  <rguenther@suse.de>
24574
24575         PR tree-optimization/38180
24576         * tree-ssa-ccp.c (get_default_value): Simplify.
24577         (likely_value): Likewise.
24578         (surely_varying_stmt_p): Properly handle VOP case.
24579         (ccp_initialize): Likewise.
24580         (ccp_fold): Handle propagating through *&.
24581         (fold_const_aggregate_ref): Also handle decls.
24582
24583 2009-03-28  Jan Hubicka  <jh@suse.cz>
24584
24585         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
24586         * cgraph.h (cgraph_node): Likewise.
24587         * cgraphunit.c (cgraph_process_new_functions): Set process flag.
24588         (cgraph_reset_node): Use process flag.
24589         (cgraph_mark_functions_to_output): Likewise.
24590         (cgraph_expand_function): Likewise.
24591         (cgraph_expand_all_functions): Likewise.
24592         (cgraph_output_in_order): Likewise.
24593         * dwarf2out.c (reference_to_unused): Likewise.
24594         * passes.c do_per_function_toporder): Likewise.
24595
24596 2009-03-28  Jan Hubicka  <jh@suse.cz>
24597
24598         Bring from lto-branch:
24599
24600         2008-09-03  Doug Kwan  <dougkwan@google.com>
24601
24602         * cgraphbuild.c (initialize_inline_failed): Use cgraph_inline_failed_t
24603         enums instead of reason strings.
24604         * cgraph.c (cgraph_create_edge): Same.
24605         (cgraph_inline_failed_string): New function.
24606         * cgraph.h (cgraph_inline_failed_t): New enum type.
24607         (cgraph_inline_failed_string): New prototype.
24608         (struct cgraph_edge): Change type of INLINED_FAILED from constant
24609         char pointer to cgraph_inline_failed_t.
24610         (cgraph_inline_p): Adjust prototype to use cgraph_inline_failed_t.
24611         (cgraph_default_inline_p): Ditto.
24612         * cgraphunit.c (cgraph_inline_p): Change type of parameter REASON
24613         to cgraph_inline_failed_t pointer.
24614         * cif-code.def: New file.
24615         * ipa-inline.c (cgraph_mark_inline_edge): Use an enum instead of a
24616         reason string.
24617         (cgraph_check_inline_limits): Change type of REASON to pointer to
24618         cgraph_inline_failed_t.  Replace reason strings with enums.
24619         (cgraph_default_inline_p): Ditto.
24620         (cgraph_recursive_inlining_p): Ditto.
24621         (update_caller_keys): Change type of FAILED_REASON to
24622         cgraph_inline_failed_t.
24623         (cgraph_set_inline_failed): Change type of REASON to pointer to
24624         cgraph_inline_failed_t.  Call cgraph_inline_failed_string to
24625         convert enums to strings for text output.
24626         (cgraph_decide_inlining_of_small_function): Change FAILED_REASON
24627         to be of type cgraph_inline_failed_t.  Replace reason strings with
24628         enums.  Call cgraph_inline_failed_string to covert enums
24629         to strings for text output.
24630         (cgraph_decide_inlining): Replace reason strings with enums.
24631         (cgraph_decide_inlining_incrementally): Change type of FAILED_REASON
24632         to cgraph_inline_failed_t type.  Call cgraph_inline_failed_string
24633         for text output.
24634         * tree-inline.c (expand_call_inline): Change type of REASON
24635         to cgraph_inline_failed_t.  Replace reason strings with enums.
24636         Call cgraph_inline_failed_string for text output.
24637         * Makefile.in (CGRAPH_H): Add cif-code.def to dependencies.
24638         (cgraph.o): Ditto.
24639
24640 2009-03-28  Jan Hubicka  <jh@suse.cz>
24641
24642         * cgraph.c (cgraph_node, cgraph_remove_node, dump_cgraph_node,
24643         cgraph_clone_node): Remove master clone handling.
24644         (cgraph_is_master_clone, cgraph_master_clone): Remove.
24645         * cgraph.h (master_clone): Remove.
24646         (cgraph_is_master_clone, cgraph_master_clone): Remove.
24647         * ipa-type-escape.c (type_escape_execute): Remove use of master clone.
24648         (tree-ssa-structalias.c (ipa_pta_execute): Likewise.
24649
24650 2009-03-28  Jan Hubicka  <jh@suse.cz>
24651
24652         * cgraph.c (cgraph_function_body_availability): Functions declared
24653         inline are always safe to assume that it is not going to be replaced.
24654
24655 2009-03-28  Richard Guenther  <rguenther@suse.de>
24656
24657         PR tree-optimization/38513
24658         * tree-ssa-pre.c (eliminate): Remove redundant stores.
24659         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle
24660         EXC_PTR_EXPR and FILTER_EXPR.
24661         (get_ref_from_reference_ops): Likewise.
24662
24663 2009-03-28  Richard Guenther  <rguenther@suse.de>
24664
24665         PR tree-optimization/38968
24666         * tree-vect-analyze.c (vect_compute_data_ref_alignment):
24667         Use FLOOR_MOD_EXPR to compute misalignment.
24668
24669 2009-03-28  Richard Guenther  <rguenther@suse.de>
24670
24671         PR tree-optimization/37795
24672         * tree.h (combine_comparisons): Declare.
24673         * fold-const.c (combine_comparisons): Export.
24674         * tree-ssa-ifcombine.c (ifcombine_ifandif): Optimize two successive
24675         comparisons.
24676         (ifcombine_iforif): Use combine_comparisons.
24677
24678 2009-03-28  Jan Hubicka  <jh@suse.cz>
24679
24680         * tree-eh.c (inlinable_call_p): New function.
24681         (make_eh_edges): Use it.
24682         (verify_eh_edges): Use it.
24683         (stmt_can_throw_external, stmt_can_throw_internal): Use it.
24684         * except.c (reachable_next_level): Add inlinable_function argument
24685         (sjlj_find_directly_reachable_regions): Update.
24686         (add_reachable_handler): Do not set saw_any_handlers.
24687         (reachable_next_level): Handle MUST_NOT_THROW more curefully.
24688         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
24689         Add new inlinable call parameter.
24690         (can_throw_internal, can_throw_external): Update.
24691         * except.h (can_throw_internal_1, can_throw_external_1,
24692         foreach_reachable_handler): Update declaration.
24693
24694 2009-03-28  Joseph Myers  <joseph@codesourcery.com>
24695
24696         * config/arm/t-arm-coff, config/h8300/coff.h,
24697         config/i386/i386-aout.h, config/i386/i386-coff.h,
24698         config/libgloss.h, config/m68k/coff.h, config/m68k/m68k-aout.h,
24699         config/pdp11/2bsd.h, config/rs6000/aix41.h,
24700         config/rs6000/aix41.opt, config/rs6000/t-newas, config/sh/coff.h,
24701         fix-header.c, fixproto, gen-protos.c, protoize.c, scan-decls.c,
24702         scan-types.sh, scan.c, scan.h, sort-protos, sys-protos.h,
24703         sys-types.h: Remove.
24704         * Makefile.in: Remove protoize and fixproto support and references
24705         in comments.
24706         (SYSCALLS.c.X-warn, TARGET_GETGROUPS_T, STMP_FIXPROTO,
24707         PROTOIZE_INSTALL_NAME, UNPROTOIZE_INSTALL_NAME, FIXPROTO_DEFINES):
24708         Remove.
24709         (ALL_HOST_OBJS): Remove $(PROTO_OBJS).
24710         (MOSTLYCLEANFILES): Remove protoize$(exeext) and
24711         unprotoize$(exeext).
24712         (rest.encap): Don't depend on $(STMP_FIXPROTO)
24713         (.PHONY): Don't depend on proto.
24714         (libgcc-support): Don't depend on $(STMP_FIXPROTO).
24715         (proto, PROTO_OBJS, protoize$(exeext), unprotoize$(exeext),
24716         protoize.o, unprotoize.o, SYSCALLS.c.X, test-protoize-simple,
24717         deduced.h, GEN_PROTOS_OBJS, build/gen-protos$(build_exeext),
24718         build/gen-protos.o, build/scan.o, xsys-protos.h,
24719         build/fix-header$(build_exeext), build/fix-header.o,
24720         build/scan-decls.o, fixhdr.ready, stmp-fixproto,
24721         stmp-install-fixproto): Remove.
24722         (mostlyclean): Don't remove xsys-protos.hT, SYSCALLS.c.X,
24723         SYSCALLS.c or fixproto files.
24724         (install-common): Don't install protoize.
24725         (install-headers-tar, install-headers-cpio, install-headers-cp):
24726         Don't depend on $(STMP_FIXPROTO).
24727         (install-mkheaders): Don't depend on $(STMP_FIXPROTO).  Don't
24728         install fixproto files or write out fixproto settings.
24729         (uninstall): Don't uninstall protoize.
24730         * config.gcc (use_fixproto): Remove.
24731         (arm-*-coff*, armel-*-coff*, h8300-*-*, i[34567]86-*-aout*,
24732         i[34567]86-*-coff*, m68k-*-aout*, m68k-*-coff*, pdp11-*-bsd,
24733         rs6000-ibm-aix4.[12]*, powerpc-ibm-aix4.[12]*, sh-*-*): Remove.
24734         * config/m32r/t-linux (STMP_FIXPROTO): Remove.
24735         * config/m68k/m68k.c: Remove M68K_TARGET_COFF-conditional code.
24736         * config/mips/t-iris (FIXPROTO_DEFINES): Remove.
24737         * config/pa/t-pa-hpux (FIXPROTO_DEFINES): Remove.
24738         * config/pdp11/pdp11.c: Remove TWO_BSD-conditional code.
24739         * config/t-svr4 (FIXPROTO_DEFINES): Remove.
24740         * config/t-vxworks (STMP_FIXPROTO): Remove.
24741         * configure.ac (AC_TYPE_GETGROUPS, TARGET_GETGROUPS_T,
24742         STMP_FIXPROTO): Remove.
24743         * config.in, configure: Regenerate.
24744         * crtstuff.c (gid_t, uid_t): Don't undefine.
24745         * doc/install.texi: Change m68k-coff to m68k-elf in example.
24746         (arm-*-coff, arm-*-aout: Remove target entries.
24747         (*-ibm-aix*): Mention removal of support for AIX 4.2 and older.
24748         Remove mention of AIX 4.1.
24749         (m68k-*-*): Remove mention of m68k-*-aout and m68k-*-coff*.
24750         * doc/invoke.texi (Running Protoize): Remove.
24751         * doc/trouble.texi (Actual Bugs): Remove mention of fixproto.
24752         (Protoize Caveats): Remove.
24753         * tsystem.h: Update comments on headers assumed to exist.
24754
24755 2009-03-27  Vladimir Makarov  <vmakarov@redhat.com>
24756
24757         * genautomata.c: Add a new year to the copyright.  Add a new
24758         reference.
24759         (struct insn_reserv_decl): Add comments for member bypass_list.
24760         (find_bypass): Remove.
24761         (insert_bypass): New.
24762         (process_decls): Use insert_bypass.
24763         (output_internal_insn_latency_func): Output all bypasses with the
24764         same input insn in one switch case.
24765
24766         * rtl.def (define_bypass): Describe bypass choice.
24767         * doc/md.texi (define_bypass): Ditto.
24768
24769 2009-03-27  Richard Guenther  <rguenther@suse.de>
24770
24771         * gimplify.c (mark_addressable): Export.
24772         * tree-flow.h (mark_addressable): Declare.
24773         * tree-ssa-loop-manip.c (create_iv): Mark the base addressable.
24774         * tree-ssa.c (verify_phi_args): Verify that address taken
24775         variables have TREE_ADDRESSABLE set.
24776
24777 2009-03-27  Richard Guenther  <rguenther@suse.de>
24778
24779         * fold-const.c (build_fold_addr_expr_with_type_1): Rename back to ...
24780         (build_fold_addr_expr_with_type): ... this.  Remove in_fold handling.
24781         Do not mark decls TREE_ADDRESSABLE.
24782         (build_fold_addr_expr): Adjust.
24783         (fold_addr_expr): Remove.
24784         (fold_unary): Use build_fold_addr_expr.
24785         (fold_comparison): Likewise.
24786         (split_address_to_core_and_offset): Likewise.
24787         * coverage.c (tree_coverage_counter_addr): Mark the array decl
24788         TREE_ADDRESSABLE.
24789         * gimplify.c (mark_addressable): Do not exclude RESULT_DECLs.
24790         (gimplify_modify_expr_to_memcpy): Mark source and destination
24791         addressable.
24792         * omp-low.c (create_omp_child_function): Mark the object decl
24793         TREE_ADDRESSABLE.
24794         (lower_rec_input_clauses): Mark the var we take the address of
24795         TREE_ADDRESSABLE.
24796         (lower_omp_taskreg): Mark the sender decl TREE_ADDRESSABLE.
24797
24798 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
24799
24800         PR middle-end/39315
24801         * cfgexpand.c (expand_one_stack_var_at): Change alignment
24802         limit to MAX_SUPPORTED_STACK_ALIGNMENT.
24803
24804 2009-03-27  Richard Guenther  <rguenther@suse.de>
24805
24806         PR tree-optimization/39120
24807         * tree-ssa-structalias.c (handle_rhs_call): Fill out return
24808         constraints.
24809         (handle_lhs_call): Process return constraints.  Add escape
24810         constraints if necessary.
24811         (handle_const_call): Fill out return constraints.  Make nested
24812         case more precise.  Avoid consttmp if possible.
24813         (handle_pure_call): Fill out return constraints.  Avoid
24814         callused if possible.
24815         (find_func_aliases): Simplify call handling.
24816
24817 2009-03-27  Richard Guenther  <rguenther@suse.de>
24818
24819         PR tree-optimization/39120
24820         * tree-ssa-structalias.c (do_sd_constraint): Do not use CALLUSED
24821         as a representative.
24822         (solve_graph): Do propagate CALLUSED.
24823         (handle_pure_call): Use a scalar constraint from CALLUSED for
24824         the return value.
24825         (find_what_p_points_to): CALLUSED shall not appear in poins-to
24826         solutions.
24827
24828 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
24829
24830         PR c/39323
24831         * c-common.c (handle_aligned_attribute): Properly check alignment
24832         overflow.  Use (1U << i) instead of (1 << i).
24833
24834         * emit-rtl.c (get_mem_align_offset): Use "unsigned int" for align.
24835
24836         * expr.h (get_mem_align_offset): Updated.
24837
24838         * tree.h (tree_decl_common): Change align to "unsigned int" and
24839         move it before pointer_alias_set.
24840
24841 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
24842             Jakub Jelinek  <jakub@redhat.com>
24843
24844         PR target/38034
24845         * config/ia64/sync.md (cmpxchg_rel_<mode>): Replace input
24846         gr_register_operand with gr_reg_or_0_operand.
24847         (cmpxchg_rel_di): Likewise.
24848         (sync_lock_test_and_set<mode>): Likewise.
24849
24850 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
24851
24852         * jump.c (rtx_renumbered_equal_p): Use subreg_get_info.
24853         (true_regnum): Likewise.
24854
24855         * rtlanal.c (subreg_info): Moved to ...
24856         * rtl.h (subreg_info): Here.  New.
24857         (subreg_get_info): New.
24858
24859         * rtlanal.c (subreg_get_info): Make it extern.
24860
24861 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
24862
24863         PR target/39472
24864         * config/i386/i386.c (ix86_abi): New.
24865         (override_options): Handle -mabi=.
24866         (ix86_function_arg_regno_p): Replace DEFAULT_ABI with ix86_abi.
24867         (ix86_call_abi_override): Likewise.
24868         (init_cumulative_args): Likewise.
24869         (function_arg_advance): Likewise.
24870         (function_arg_64): Likewise.
24871         (function_arg): Likewise.
24872         (ix86_pass_by_reference): Likewise.
24873         (ix86_function_value_regno_p): Likewise.
24874         (ix86_build_builtin_va_list_abi): Likewise.
24875         (setup_incoming_varargs_64): Likewise.
24876         (is_va_list_char_pointer): Likewise.
24877         (ix86_init_machine_status): Likewise.
24878         (ix86_reg_parm_stack_space): Use enum calling_abi on call_abi.
24879         (ix86_function_type_abi): Return enum calling_abi.  Rewrite
24880         for 64bit.  Replace DEFAULT_ABI with ix86_abi.
24881         (ix86_function_abi): Make it static and return enum calling_abi.
24882         (ix86_cfun_abi): Return enum calling_abi.  Replace DEFAULT_ABI
24883         with ix86_abi.
24884         (ix86_fn_abi_va_list): Updated.
24885
24886         * config/i386/i386.h (ix86_abi): New.
24887         (STACK_BOUNDARY): Replace DEFAULT_ABI with ix86_abi.
24888         (CONDITIONAL_REGISTER_USAGE): Likewise.
24889         (CUMULATIVE_ARGS): Change call_abi type to enum calling_abi.
24890         (machine_function): Likewise.
24891
24892         * config/i386/i386.md (untyped_call): Replace DEFAULT_ABI
24893         with ix86_abi.
24894         * config/i386/cygming.h (TARGET_64BIT_MS_ABI): Likewise.
24895         (STACK_BOUNDARY): Likewise.
24896         * config/i386/mingw32.h (EXTRA_OS_CPP_BUILTINS): Likewise.
24897
24898         * config/i386/i386.opt (mabi=): New.
24899
24900         * config/i386/i386-protos.h (ix86_cfun_abi): Changed to
24901         return enum calling_abi.
24902         (ix86_function_type_abi): Likewise.
24903         (ix86_function_abi): Removed.
24904
24905         * doc/invoke.texi: Document -mabi= option for x86.
24906
24907 2009-03-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
24908
24909         * builtins.c (real_dconstp): Delete.
24910         (fold_builtin_logarithm): Remove inaccurate log(e) special case.
24911
24912 2009-03-27  Dodji Seketeli  <dodji@redhat.com>
24913             Jakub Jelinek  <jakub@redhat.com>
24914
24915         PR debug/37959
24916         * dwarf2out.c (dwarf_attr_name): Handle DW_AT_explicit attribute.
24917         (gen_subprogram_die): When a function is explicit, generate the
24918         DW_AT_explicit attribute.
24919         * langhooks.h (struct lang_hooks_for_decls): Add
24920         function_decl_explicit_p langhook.
24921         * langhooks-def.h (LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P): Define.
24922         (LANG_HOOKS_DECLS): Add LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P.
24923
24924 2009-03-27  Jakub Jelinek  <jakub@redhat.com>
24925
24926         * builtins.c (fold_builtin_memory_op): Optimize memmove
24927         into memcpy if we can prove source and destination don't overlap.
24928
24929         * tree-inline.c: Include gt-tree-inline.h.
24930         (clone_fn_id_num): New variable.
24931         (clone_function_name): New function.
24932         (tree_function_versioning): Use it.
24933         * Makefile.in (GTFILES): Add tree-inline.c.
24934
24935 2009-03-27  Mark Mitchell  <mark@codesourcery.com>
24936
24937         * BASE-VER: Change to 4.5.0.
24938
24939 2009-03-27  Xinliang David Li  <davidxl@google.com>
24940
24941         PR tree-optimization/39557
24942         * tree-ssa.c (warn_uninitialized_vars): free postdom info.
24943
24944 2009-03-27  Xinliang David Li  <davidxl@google.com>
24945
24946         PR tree-optimization/39548
24947         * tree-ssa-copy.c (copy_prop_visit_phi_node): Add copy
24948         candidate check.
24949
24950 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
24951
24952         * c-common.c (pointer_int_sum): Use %wd on return from
24953         tree_low_cst.
24954
24955 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
24956
24957         * c-common.c (pointer_int_sum): Use HOST_WIDE_INT_PRINT_DEC
24958         on return from tree_low_cst.
24959
24960 2009-03-27  Andrew Pinski  <andrew_pinski@playstation.sony.com>
24961
24962         PR c++/36799
24963         * ginclude/stdarg.h (va_copy): Define also for
24964         __GXX_EXPERIMENTAL_CXX0X__.
24965
24966 2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24967
24968         PR c++/35652
24969         * builtins.h (c_strlen): Do not warn here.
24970         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
24971         * c-common.c (pointer_int_sum): Take an explicit location.
24972         Warn about offsets out of bounds.
24973         * c-common.h (pointer_int_sum): Adjust declaration.
24974
24975 2009-03-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
24976
24977         * doc/invoke.texi (i386 and x86-64 Windows Options): Fix texinfo
24978         markup glitch.
24979
24980 2009-03-26  Jakub Jelinek  <jakub@redhat.com>
24981
24982         PR c++/39554
24983         * opts.c (warn_if_disallowed_function_p): Don't assume
24984         get_callee_fndecl must return non-NULL.
24985
24986 2009-03-26  Vladimir Makarov  <vmakarov@redhat.com>
24987
24988         PR rtl-optimization/39522
24989         * reload1.c (reload_as_needed): Invalidate reg_last_reload_reg too
24990         when reg_reloaded_valid is set.
24991
24992 2009-03-26  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
24993
24994         * config/spu/divv2df3.c: New file.
24995         * config/spu/t-spu-elf (LIB2FUNCS_STATIC_EXTRA): Add it.
24996         (DPBIT_FUNCS): Filter out _div_df.
24997
24998 2009-03-26  Bernd Schmidt  <bernd.schmidt@analog.com>
24999
25000         * config/bfin/bfin.c (bfin_optimize_loop): If the LSETUP goes before
25001         a jump insn, count that jump in the distance to the loop start.
25002
25003 2009-03-25  Kaz Kojima  <kkojima@gcc.gnu.org>
25004
25005         PR target/39523
25006         * config/sh/sh.c (calc_live_regs): Fix condition for global
25007         registers except PIC_OFFSET_TABLE_REGNUM.
25008
25009 2009-03-25  Kai Tietz  <kai.tietz@onevision.com>
25010
25011         PR/39518
25012         * doc/invoke.texi (-mconsole): New.
25013         (-mcygwin): New.
25014         (-mno-cygwin): New.
25015         (-mdll): New.
25016         (-mnop-fun-dllimport): New.
25017         (-mthread): New.
25018         (-mwin32): New.
25019         (-mwindows): New.
25020         (sub section "i386 and x86-64 Windows Options"): New.
25021
25022 2009-03-25  Ralf Corsépius  <ralf.corsepius@rtems.org>
25023
25024         * config/arm/rtems-elf.h: Remove LINK_GCC_C_SEQUENCE_SPEC.
25025         * config/rs6000/t-rtems: Remove MULTILIB_EXTRA_OPTS.
25026
25027 2009-03-25  Richard Guenther  <rguenther@suse.de>
25028
25029         PR middle-end/39497
25030         * Makefile.in (dfp.o-warn): Use -fno-strict-aliasing instead
25031         of -Wno-error.
25032
25033 2009-03-25  Andrey Belevantsev  <abel@ispras.ru>
25034
25035         * config/ia64/ia64.c (ia64_set_sched_flags): Zero spec_info->mask when
25036         neither of haifa/selective schedulers are working.
25037
25038 2009-03-25  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
25039
25040         * doc/invoke.texi (Debugging Options): Fix description of
25041         -fno-merge-debug-strings.
25042
25043 2009-03-24  Hans-Peter Nilsson  <hp@axis.com>
25044
25045         * config/cris/libgcc.ver: New version-script.
25046         * config/cris/t-linux (SHLIB_MAPFILES): Use it.
25047
25048         * configure.ac <GAS features, nop mnemonic>: Add pattern
25049         crisv32-*-* for "nop".
25050         <GAS features, Thread-local storage>: Add item for CRIS and CRIS v32.
25051         * configure: Regenerate.
25052
25053 2009-03-24  Ira Rosen  <irar@il.ibm.com>
25054
25055         PR tree-optimization/39529
25056         * tree-vect-transform.c (vect_create_data_ref_ptr): Call
25057         mark_sym_for_renaming for the tag copied to the new vector
25058         pointer.
25059
25060 2009-03-24  Arthur Loiret  <aloiret@debian.org>
25061
25062         * config.host (alpha*-*-linux*): Use driver-alpha.o and alpha/x-alpha.
25063         * config/alpha/linux.h (host_detect_local_cpu): Declare, add to
25064         EXTRA_SPEC_FUNCTIONS.
25065         (MCPU_MTUNE_NATIVE_SPECS, DRIVER_SELF_SPECS): New macros.
25066         * config/alpha/driver-alpha.c, config/alpha/x-alpha: New.
25067         * doc/invoke.texi (DEC Alpha Options): Document 'native' value for
25068         -march and -mtune options.
25069
25070 2009-03-24  Ralf Corsépius  <ralf.corsepius@rtems.org>
25071
25072         * config/m68k/t-rtems: Add m5329 multilib.
25073
25074 2009-03-24  Dodji Seketeli  <dodji@redhat.com>
25075             Jakub Jelinek  <jakub@redhat.com>
25076
25077         PR debug/39524
25078         * dwarf2out.c (gen_variable_die): Avoid adding duplicate declaration
25079         nodes.
25080
25081 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
25082
25083         PR c/39495
25084         * c-parser.c (c_parser_omp_for_loop): Call c_parser_binary_expression
25085         instead of c_parser_expression_conv, if original_code isn't one of the
25086         4 allowed comparison codes, fail.
25087
25088 2009-03-23  Richard Guenther  <rguenther@suse.de>
25089
25090         * cgraph.h (struct cgraph_node): Reorder fields for 64-bit hosts.
25091         * tree.h (struct tree_type): Likewise.
25092         * reload.h (struct insn_chain): Likewise.
25093         * dwarf2out.c (struct dw_loc_descr_struct): Likewise.
25094         * function.h (struct function): Likewise.
25095         * tree-ssa-structalias.c (struct equiv_class_label): Likewise.
25096
25097 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
25098
25099         PR tree-optimization/39516
25100         * lambda-code.c (perfect_nestify): Fix type of the uboundvar variable.
25101
25102 2009-03-23  Bingfeng Mei  <bmei@broadcom.com>
25103
25104         * config.gcc (need_64bit_hwint): Make clear that need_64bit_hwint
25105         should be set true if BITS_PER_WORD of target is bigger than 32
25106
25107 2009-03-22  Hans-Peter Nilsson  <hp@axis.com>
25108
25109         * config/cris/linux.h (CRIS_LINK_SUBTARGET_SPEC):
25110         Translate -B-options to -rpath-link.  Correct existing
25111         rpath-link and conditionalize on !nostdlib.
25112
25113 2009-03-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
25114
25115         * doc/extend.texi (Function Attributes, Variable Attributes):
25116         Fix typos.
25117         * doc/invoke.texi (Debugging Options, Optimize Options)
25118         (i386 and x86-64 Options, MCore Options): Likewise.
25119
25120 2009-03-20  Jakub Jelinek  <jakub@redhat.com>
25121
25122         PR debug/37890
25123         * dwarf2out.c (gen_namespace_die): Add context_die argument and use
25124         it for block local namespace aliases.
25125         (gen_decl_die): Pass context_die to gen_namespace_die.
25126
25127 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
25128
25129         PR c/39495
25130         * c-omp.c (c_finish_omp_for): Allow NE_EXPR with TREE_TYPE (decl)'s
25131         minimum or maximum value.
25132
25133 2009-03-19  Alexandre Oliva  <aoliva@redhat.com>
25134
25135         * reginfo.c (globalize_reg): Recompute derived reg sets.
25136
25137 2009-03-19  Ozkan Sezer  <sezeroz@gmail.com>
25138
25139         PR target/39063
25140         * libgcc2.c (mprotect): Do not use signed arguments for
25141         VirtualProtect, use DWORD arguments.  Also fix the 'may
25142         be used uninitialized' warning for the np variable.
25143
25144 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
25145
25146         PR target/39496
25147         * config/i386/i386.c (ix86_function_regparm): Don't optimize local
25148         functions using regparm calling conventions when not optimizing.
25149         (ix86_function_sseregparm): Similarly for sseregparm calling
25150         conventions.
25151
25152 2009-03-19  Li Feng  <nemokingdom@gmail.com>
25153
25154         PR middle-end/39500
25155         * tree-data-ref.c (analyze_subscript_affine_affine): There is no
25156         dependence if the first conflict is after niter iterations.
25157
25158 2009-03-19  Hans-Peter Nilsson  <hp@axis.com>
25159
25160         PR middle-end/38609
25161         * config/cris/cris.h (FRAME_POINTER_REQUIRED): Force for all
25162         functions with dynamic stack-pointer adjustments.
25163
25164 2009-03-19  Ben Elliston  <bje@au.ibm.com>
25165
25166         * doc/invoke.texi (RS/6000 and PowerPC Options): Fix -msdata-data
25167         option; change to -msdata=data.
25168
25169 2009-03-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
25170
25171         * c.opt: Unify help texts for -Wdeprecated, -Wsystem-headers,
25172         and -fopenmp.
25173
25174 2009-03-18  Eric Botcazou  <ebotcazou@adacore.com>
25175
25176         PR target/35180
25177         * config/sparc/sparc.md (do_builtin_setjmp_setup): Prettify asm output.
25178
25179 2009-03-18  Sandra Loosemore  <sandra@codesourcery.com>
25180
25181         * doc/invoke.texi (Code Gen Options): Expand discussion of
25182         -fno-common.
25183
25184 2009-03-18  Jakub Jelinek  <jakub@redhat.com>
25185
25186         * dse.c (struct group_info): Reorder fields for 64-bit hosts.
25187         * matrix-reorg.c (struct matrix_info): Likewise.
25188         * tree-ssa-loop-ivopts.c (struct ivopts_data): Likewise.
25189         * rtl.h (struct mem_attrs): Likewise.
25190         * df.h (struct df): Likewise.
25191         * tree-data-ref.h (struct data_dependence_relation): Likewise.
25192         * ira-int.h (struct ira_allocno): Likewise.
25193         * df-scan.c (struct df_collection_rec): Likewise.
25194         * ira.c (struct equivalence): Likewise.
25195         * function.c (struct temp_slot): Likewise.
25196         * cfgloop.h (struct loop): Likewise.
25197
25198         PR debug/39485
25199         * function.c (use_register_for_decl): When not optimizing, disregard
25200         register keyword for variables with types containing methods.
25201
25202 2009-03-18  Sebastian Pop  <sebastian.pop@amd.com>
25203
25204         PR middle-end/39447
25205         * graphite.c (exclude_component_ref): Renamed contains_component_ref_p.
25206         (is_simple_operand): Call contains_component_ref_p before calling data
25207         reference analysis that would fail on COMPONENT_REFs.
25208
25209         * tree-vrp.c (search_for_addr_array): Fix formatting.
25210
25211 2009-03-18  Richard Guenther  <rguenther@suse.de>
25212
25213         * tree-vect-transform.c (vect_loop_versioning): Fold the
25214         generated comparisons.
25215         * tree-vectorizer.c (set_prologue_iterations): Likewise.
25216         (slpeel_tree_peel_loop_to_edge): Likewise.
25217
25218 2009-03-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
25219
25220         PR middle-end/37805
25221         * opts.c (print_specific_help): In addition to `undocumented',
25222         accept `separate' and `joined' flags if passed alone.  Describe
25223         output by the first matched one of those.
25224         (common_handle_option): Skip over empty strings.
25225         * gcc.c (display_help): Fix help string for `--help='.
25226         * doc/invoke.texi (Option Summary, Overall Options): With
25227         `--help=', classes and qualifiers can both be repeated, but
25228         only the latter can be negated.  One should not pass only
25229         negated qualifiers.  Fix markup and examples.
25230
25231         Revert
25232         2008-10-14  Jakub Jelinek  <jakub@redhat.com>
25233         PR middle-end/37805
25234         * opts.c (common_handle_option): Don't ICE on -fhelp=joined
25235         and -fhelp=separate.
25236
25237 2009-03-17  Jing Yu  <jingyu@google.com>
25238
25239         PR middle-end/39378
25240         * function.h (struct rtl_data): Move is_thunk from here...
25241         (struct function): ...to here.
25242         * cp/method.c (use_thunk): Change is_thunk from crtl to cfun.
25243         * varasm.c (assemble_start_function): Change is_thunk from crtl to
25244         cfun.
25245         * config/alpha/alpha.c (alpha_sa_mask): Change is_thunk from crtl to
25246         cfun.
25247         (alpha_does_function_need_gp, alpha_start_function): Likewise.
25248         (alpha_output_function_end_prologue): Likewise.
25249         (alpha_end_function, alpha_output_mi_thunk_osf): Likewise.
25250         * config/rs6000/rs6000.c (rs6000_ra_ever_killed): Likewise.
25251         (rs6000_output_function_epilogue): Likewise.
25252         * config/arm/arm.h (ARM_DECLARE_FUNCTION_NAME): Likewise.
25253
25254 2009-03-17  Uros Bizjak  <ubizjak@gmail.com>
25255
25256         PR target/39482
25257         * config/i386/i386.md (*truncdfsf_mixed): Avoid combining registers
25258         from different units in a single alternative.
25259         (*truncdfsf_i387): Ditto.
25260         (*truncxfsf2_mixed): Ditto.
25261         (*truncxfdf2_mixed): Ditto.
25262
25263 2009-03-17  Jakub Jelinek  <jakub@redhat.com>
25264
25265         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Allow
25266         non-NAMESPACE_DECL IMPORTED_DECL_ASSOCIATED_DECL.
25267
25268         PR debug/39474
25269         * tree-ssa-live.c (remove_unused_locals): Don't remove local
25270         unused non-artificial variables when not optimizing.
25271
25272         PR debug/39471
25273         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Emit
25274         DW_TAG_imported_module even if decl is IMPORTED_DECL with
25275         NAMESPACE_DECL in its DECL_INITIAL.
25276
25277         PR middle-end/39443
25278         * optabs.c (set_user_assembler_libfunc): New function.
25279         * expr.h (set_user_assembler_libfunc): New prototype.
25280         * c-common.c: Include libfuncs.h.
25281         (set_builtin_user_assembler_name): Call set_user_assembler_libfunc
25282         for memcmp, memset, memcpy, memmove and abort.
25283         * Makefile.in (c-common.o): Depend on libfuncs.h.
25284
25285         PR debug/39412
25286         * dwarf2out.c (gen_inlined_enumeration_type_die,
25287         gen_inlined_structure_type_die, gen_inlined_union_type_die,
25288         gen_tagged_type_instantiation_die): Removed.
25289         (gen_decl_die): For TYPE_DECL_IS_STUB with non-NULL decl_origin
25290         do nothing.
25291
25292 2009-03-17  Janis Johnson  <janis187@us.ibm.com>
25293
25294         PR testsuite/38526
25295         * Makefile.in (site.exp): Rename TEST_GCC_EXEC_PREFIX and comment
25296         its use.
25297         (check-%): Don't set GCC_EXEC_PREFIX when invoking runtest.
25298         (check-parallel-%): Ditto.
25299         (check-consistency): Ditto.
25300
25301 2009-03-17  Kai Tietz  <kai.tietz@onevision.com>
25302
25303         * ipa-struct-reorg.c (create_general_new_stmt): Initialize
25304         local variable rhs by NULL_TREE.
25305
25306 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
25307
25308         PR target/39477
25309         * doc/extend.texi: Correct register behavior for regparm on Intel 386.
25310
25311 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
25312
25313         PR target/39476
25314         * config/i386/i386.c (ix86_function_regparm): Rewrite for 64bit.
25315
25316 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
25317
25318         PR target/39473
25319         * config/i386/i386.c (ix86_expand_call): Check extra clobbers
25320         for ms->sysv ABI calls only in 64bit mode.
25321
25322         * config/i386/i386.md (untyped_call): Support 32bit.
25323
25324 2009-03-16  H.J. Lu  <hongjiu.lu@intel.com>
25325
25326         * doc/extend.texi: Replace x86_65 with x86_64.
25327
25328 2009-03-16  Jakub Jelinek  <jakub@redhat.com>
25329
25330         PR tree-optimization/39455
25331         * tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Fix types
25332         mismatches for POINTER_TYPE_P (type).
25333         (number_of_iterations_le): Likewise.
25334
25335 2009-03-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
25336
25337         * config/picochip/picochip.c: Removed profiling support.
25338         * config/picochip/picochip.md: Removed profiling instruction.
25339         * config/picochip/picochip.h: Removed profiling builtin.
25340
25341 2009-03-16  Joseph Myers  <joseph@codesourcery.com>
25342
25343         * doc/install.texi (--with-host-libstdcxx): Document.
25344
25345 2009-03-14  Anatoly Sokolov  <aesok@post.ru>
25346
25347         PR target/34299
25348         * config/avr/avr.c (avr_handle_fndecl_attribute): Move code for
25349         generate a warning if the function name does not begin with
25350         "__vector" and the function has either the 'signal' or 'interrupt'
25351         attribute, from here to ...
25352         (avr_declare_function_name): ...here. New function.
25353         * config/avr/avr.h (ASM_DECLARE_FUNCTION_NAME): Redefine.
25354         * config/avr/avr-protos.h (avr_declare_function_name): Declare.
25355
25356 2009-03-14  Jakub Jelinek  <jakub@redhat.com>
25357
25358         PR bootstrap/39454
25359         * cse.c (fold_rtx): Don't modify original const_arg1 when
25360         canonicalizing SHIFT_COUNT_TRUNCATED shift count, do it on a
25361         separate variable instead.
25362         * rtlanal.c (nonzero_bits1) <case ASHIFTRT>: Don't assume anything
25363         from out of range shift counts.
25364         (num_sign_bit_copies1) <case ASHIFTRT, case ASHIFT>: Similarly.
25365
25366 2009-03-13  Catherine Moore  <clm@codesourcery.com>
25367
25368         * config/i386/x-mingw32 (host-mingw32.o): Replace
25369         diagnostic.h with $(DIAGNOSTIC_H).
25370
25371 2009-03-12  Jakub Jelinek  <jakub@redhat.com>
25372
25373         PR target/39431
25374         * config/i386/predicates.md (cmpxchg8b_pic_memory_operand): New
25375         predicate.
25376         * config/i386/sync.md (sync_compare_and_swap<mode>,
25377         sync_compare_and_swap_cc<mode>): For DImode with -m32 -fpic check
25378         if operands[1] is cmpxchg8b_pic_memory_operand, if not force address
25379         into a register.
25380         (sync_double_compare_and_swapdi_pic,
25381         sync_double_compare_and_swap_ccdi_pic): Require operand 1 to be
25382         cmpxchg8b_pic_memory_operand instead of just memory_operand.
25383
25384 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
25385
25386         PR target/39445
25387         * config/i386/i386.c (ix86_expand_push): Don't set memory alignment.
25388
25389 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
25390
25391         PR target/39327
25392         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
25393         (avx_addsubv4df3): Likewise.
25394         (*avx_addsubv4sf3): Likewise.
25395         (sse3_addsubv4sf3): Likewise.
25396
25397 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
25398
25399         PR target/38824
25400         * config/i386/i386.md: Compare REGNO on the new peephole2 patterns.
25401
25402 2009-03-12  Vladimir Makarov  <vmakarov@redhat.com>
25403
25404         PR debug/39432
25405         * ira-int.h (struct allocno): Fix comment for calls_crossed_num.
25406         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
25407         registers for allocnos created from user-defined variables.
25408
25409 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
25410
25411         PR target/39181
25412         * config/spu/spu.c (spu_expand_mov): Handle invalid subregs
25413         of non-integer mode as well.
25414
25415 2009-03-11  Adam Nemet  <anemet@caviumnetworks.com>
25416
25417         * gimplify.c (gimplify_call_expr): Don't set CALL_CANNOT_INLINE_P
25418         for functions for which the parameter types are unknown.
25419
25420 2009-03-11  Jakub Jelinek  <jakub@redhat.com>
25421
25422         PR target/39137
25423         * cfgexpand.c (get_decl_align_unit): Use LOCAL_DECL_ALIGNMENT macro.
25424         * defaults.h (LOCAL_DECL_ALIGNMENT): Define if not yet defined.
25425         * config/i386/i386.h (LOCAL_DECL_ALIGNMENT): Define.
25426         * config/i386/i386.c (ix86_local_alignment): For
25427         -m32 -mpreferred-stack-boundary=2 use 32-bit alignment for
25428         long long variables on the stack to avoid dynamic realignment.
25429         Allow the first argument to be a decl rather than type.
25430         * doc/tm.texi (LOCAL_DECL_ALIGNMENT): Document.
25431
25432 2009-03-11  Nick Clifton  <nickc@redhat.com>
25433
25434         PR target/5362
25435         * config/mcore/mcore.opt: Remove deprecated m4align and m8align
25436         options.
25437         Add description to mno-lsim option.
25438         * config/mcore/mcore.h: Remove comment about deprecated m4align
25439         option.
25440         (TARGET_DEFAULT): Remove deprecated MASK_M8ALIGN.
25441         * doc/invoke.texi: Add description of mno-lsim and
25442         mstack-increment options.
25443
25444         * config/fr30/fr30.opt: Document the -mno-lsim option.
25445         * doc/invoke.texi: Add descriptions of the FR30's -msmall-model
25446         and -mno-lsim options.
25447
25448 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
25449
25450         * fold-const.c (fold_comparison): Only call fold_inf_compare
25451         if the mode supports infinities.
25452
25453 2009-03-11  Jason Merrill  <jason@redhat.com>
25454
25455         PR debug/39086
25456         * tree-nrv.c (tree_nrv): Don't do this optimization if the front
25457         end already did.  Notice GIMPLE_CALL modifications of the result.
25458         Don't copy debug information from an ignored decl or a decl from
25459         another function.
25460
25461 2009-03-10  Richard Guenther  <rguenther@suse.de>
25462             Nathan Froyd  <froydnj@codesourcery.com>
25463
25464         PR middle-end/37850
25465         * libgcc2.c (__mulMODE3): Use explicit assignments to form the result.
25466         (__divMODE3): Likewise.
25467
25468 2009-03-09  Jakub Jelinek  <jakub@redhat.com>
25469
25470         PR tree-optimization/39394
25471         * gimplify.c (gimplify_type_sizes): Gimplify DECL_SIZE and
25472         DECL_SIZE_UNIT of variable length FIELD_DECLs.
25473
25474 2009-03-09  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
25475
25476         * recog.c (verfiy_changes): Disallow renaming of hard regs in
25477         inline asms for register asm ("") declarations.
25478
25479 2009-03-09  Eric Botcazou  <ebotcazou@adacore.com>
25480
25481         * fold-const.c (fold_unary): Fix comment.
25482
25483 2009-03-07  Jan Hubicka  <jh@suse.cz>
25484
25485         PR target/39361
25486         * tree-inline.c (setup_one_parameter): Do replacement of const
25487         argument by constant in SSA form.
25488
25489 2009-03-07  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
25490
25491         PR middle-end/38028
25492         * function.c (assign_parm_setup_stack): Use STACK_SLOT_ALIGNMENT to
25493         determine alignment passed to assign_stack_local.
25494         (assign_parms_unsplit_complex): Likewise.
25495         * except.c (sjlj_build_landing_pads): Likewise.
25496
25497 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
25498
25499         PR middle-end/39360
25500         * tree-flow.h (add_referenced_var): Return bool instead of void.
25501         * tree-dfa.c (add_referenced_var): Return result of
25502         referenced_var_check_and_insert call.
25503         * tree-inline.c (expand_call_inline): Call add_referenced_var instead
25504         of referenced_var_check_and_insert.
25505
25506         PR debug/39372
25507         * dwarf2out.c (add_abstract_origin_attribute): Return origin_die.
25508         (gen_variable_die): Emit DW_AT_location on abstract static variable's
25509         DIE, don't emit it if abstract origin already has it.
25510         * tree-cfg.c (remove_useless_stmts_bind): GIMPLE_BINDs with any
25511         BLOCK_NONLOCALIZED_VARS in its gimple_bind_block aren't useless.
25512
25513 2009-03-06  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
25514
25515         * genpreds.c (needs_variable): Fix parentheses at variable name
25516         detection.
25517         (write_tm_constrs_h): Indent generated code.
25518
25519 2009-03-06  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
25520
25521         * doc/extend.texi (Function Attributes): Add documentation
25522         for isr attributes.
25523
25524 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
25525
25526         PR debug/39387
25527         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): For IMPORTED_DECL
25528         take locus from its DECL_SOURCE_LOCATION instead of input_location.
25529
25530 2009-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
25531
25532         * config/bfin/bfin.c (bfin_discover_loop): When retrying fails, mark
25533         the loop as bad.
25534
25535 2009-03-05  Jakub Jelinek  <jakub@redhat.com>
25536
25537         PR debug/39379
25538         * tree-cfg.c (remove_useless_stmts_bind): Don't remove GIMPLE_BINDs
25539         with blocks containing IMPORTED_DECLs in BLOCK_VARS.
25540
25541 2009-03-05  Uros Bizjak  <ubizjak@gmail.com>
25542
25543         * config/i386/i386.md (R8_REG, R9_REG): New constants.
25544         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Use named
25545         constants instead of magic numbers.
25546         (HARD_REGNO_CALLER_SAVE_MODE): Ditto.
25547         (QI_REG_P): Ditto.
25548         * config/i386/i386.c (x86_64_int_parameter_registers): Ditto.
25549         (x86_64_ms_abi_int_parameter_registers): Ditto.
25550         (x86_64_int_return_registers): Ditto.
25551         (ix86_maybe_switch_abi): Ditto.
25552         (ix86_expand_call): Ditto for clobbered_registers array.
25553         (ix86_hard_regno_mode_ok): Ditto.
25554         (x86_extended_QIreg_mentioned_p): Ditto.
25555
25556 2009-03-05  J"orn Rennecke  <joern.rennecke@arc.com>
25557
25558         PR tree-optimization/39349
25559         * cse.c (cse_insn): Fix loop to stop at VOIDmode.
25560
25561         * combine.c (gen_lowpart_for_combine): Use omode when generating
25562         clobber.
25563
25564 2009-03-04  J"orn Rennecke  <joern.rennecke@arc.com>
25565
25566         PR rtl-optimization/39235
25567         * loop-iv.c (get_simple_loop_desc): Use XCNEW.
25568
25569 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
25570
25571         * graphite.c (nb_reductions_in_loop): Update simple_iv arguments.
25572
25573 2009-03-04  Richard Guenther  <rguenther@suse.de>
25574
25575         PR tree-optimization/39362
25576         * tree-ssa-sccvn.c (visit_use): Stores and copies from SSA_NAMEs
25577         that occur in abnormal PHIs should be varying.
25578
25579 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
25580
25581         * tree-scalar-evolution.c (analyze_scalar_evolution_in_loop):
25582         Extend comments.
25583         (simple_iv):  Take loop as an argument instead of statement.
25584         * tree-scalar-evolution.h (simple_iv): Declaration changed.
25585         * tree-ssa-loop-niter.c (number_of_iterations_exit): Update calls
25586         to simple_iv.
25587         * tree-ssa-loop-ivopts.c (determine_biv_step, find_givs_in_stmt_scev):
25588         Ditto.
25589         * tree-parloops.c (loop_parallel_p, canonicalize_loop_ivs): Ditto.
25590         * matrix-reorg.c (analyze_transpose): Ditto.
25591         * tree-data-ref.c (dr_analyze_innermost): Ditto.
25592         * tree-vect-analyze.c (vect_analyze_data_refs): Ditto.
25593         * tree-predcom.c (ref_at_iteration): Ditto.
25594         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Ditto.
25595
25596 2009-03-04  Richard Guenther  <rguenther@suse.de>
25597
25598         PR tree-optimization/39358
25599         * tree-ssa-structalias.c (do_sd_constraint): Fix check for
25600         escaped_id and callused_id.
25601         (solve_graph): Likewise.
25602
25603 2009-03-04  Richard Guenther  <rguenther@suse.de>
25604
25605         PR tree-optimization/39339
25606         * tree-sra.c (try_instantiate_multiple_fields): Make it
25607         no longer ICE on the above.
25608
25609 2009-03-03  Joseph Myers  <joseph@codesourcery.com>
25610
25611         * emit-rtl.c (adjust_address_1): Reduce offset to a signed value
25612         that fits within Pmode.
25613
25614 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
25615
25616         PR middle-end/10109
25617         * tm.texi (LIBCALL_VALUE): Update description.
25618
25619 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
25620
25621         PR middle-end/34443
25622         * doc/extend.texi (section): Update description.
25623
25624 2009-03-03  H.J. Lu  <hongjiu.lu@intel.com>
25625
25626         PR middle-end/39345
25627         * tree-inline.c (remapped_type): New.
25628         (can_be_nonlocal): Call remapped_type instead of remap_type.
25629
25630 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
25631
25632         PR fortran/39354
25633         * gimplify.c (goa_stabilize_expr): Handle tcc_comparison,
25634         TRUTH_ANDIF_EXPR and TRUTH_ORIF_EXPR.
25635
25636 2009-03-03  Richard Guenther  <rguenther@suse.de>
25637
25638         PR middle-end/39272
25639         * tree.c (tree_nonartificial_location): New function.
25640         * tree.h (tree_nonartificial_location): Declare.
25641         * builtins.c (expand_builtin_memory_chk): Provide location
25642         of the call location for artificial function pieces.
25643         (maybe_emit_chk_warning): Likewise.
25644         (maybe_emit_sprintf_chk_warning): Likewise.
25645         (maybe_emit_free_warning): Likewise.
25646         * expr.c (expand_expr_real_1): Likewise.
25647
25648 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
25649
25650         PR tree-optimization/39343
25651         * tree-ssa-ccp.c (maybe_fold_offset_to_address): Don't check if
25652         COMPONENT_REF t has ARRAY_TYPE.
25653
25654 2009-03-02  Sebastian Pop  <sebastian.pop@amd.com>
25655
25656         PR middle-end/39335
25657         * tree-parloops.c (canonicalize_loop_ivs): Call fold_convert
25658         when the type precision of the induction variable should be
25659         larger than the type precision of nit.
25660         (gen_parallel_loop): Update use of canonicalize_loop_ivs.
25661         * graphite.c (graphite_loop_normal_form): Same.
25662         * tree-flow.h (canonicalize_loop_ivs): Update declaration.
25663
25664 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
25665
25666         * config/i386/i386.md (ST?_REG, MM?_REG): New constants.
25667         (*call_1_rex64_ms_sysv): Use named constants instead of magic
25668         numbers to describe clobbered registers.
25669         (*call_value_0_rex64_ms_sysv): Ditto.
25670         * config/i386/mmx.md (mmx_emms): Ditto.
25671         (mmx_femms): Ditto.
25672
25673 2009-03-02  Richard Sandiford  <rdsandiford@googlemail.com>
25674
25675         * config/mips/mips.c (mips_mdebug_abi_name): Fix the handling
25676         of ABI_64.
25677
25678 2009-03-02  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
25679
25680         * config/spu/spu.c (TARGET_SECTION_TYPE_FLAGS): Define.
25681         (spu_section_type_flags): New function.
25682
25683 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
25684
25685         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not copy
25686         reg_class_contents of FLOAT_REGS into a temporary.
25687
25688 2009-03-02  Richard Guenther  <rguenther@suse.de>
25689             Ira Rosen  <irar@il.ibm.com>
25690
25691         PR tree-optimization/39318
25692         * tree-vect-transform.c (vectorizable_call): Transfer the EH region
25693         information to the vectorized statement.
25694
25695 2009-03-01  Uros Bizjak  <ubizjak@gmail.com>
25696
25697         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not shadow "i"
25698         variable.  Use defined names instead of magic constants for REX SSE
25699         registers.
25700
25701 2009-03-01  Richard Guenther  <rguenther@suse.de>
25702
25703         PR tree-optimization/39331
25704         * omp-low.c (lower_send_shared_vars): Do not receive new
25705         values for the reference of DECL_BY_REFERENCE parms or results.
25706
25707 2009-03-01  Jan Hubicka  <jh@suse.cz>
25708
25709         PR debug/39267
25710         * tree.h (BLOCK_NONLOCALIZED_VARS, BLOCK_NUM_NONLOCALIZED_VARS,
25711         BLOCK_NONLOCALIZED_VAR): New macros.
25712         (tree_block): Add nonlocalized_vars.
25713         * dwarf2out.c (gen_formal_parameter_die, gen_variable_die,
25714         gen_decl_die): Add origin argument.  Allow generation of die with
25715         origin at hand only.
25716         (gen_member_die, gen_type_die_with_usage, force_decl_die,
25717         declare_in_namespace, gen_namescpace_die, dwarf2out_decl): Update use
25718         of gen_*.
25719         (gen_block_die): Fix checking for unused blocks.
25720         (process_scope_var): Break out from .... ; work with origins only.
25721         (decls_for_scope) ... here; process nonlocalized list.
25722         (dwarf2out_ignore_block): Look for nonlocalized vars.
25723         * tree-ssa-live.c (remove_unused_scope_block_p): Look for nonlocalized
25724         vars.
25725         (dump_scope_block): Dump them.
25726         * tree-inline.c (remap_decls): Handle nonlocalized vars.
25727         (remap_block): Likewise.
25728         (can_be_nonlocal): New predicate.
25729         (copy_bind_expr, copy_gimple_bind): Update use of remap_block.
25730
25731 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
25732
25733         * configure: Regenerate.
25734
25735 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
25736
25737         * optc-gen.awk: No need to duplicate option flags twice.
25738         Reuse help texts for duplicate options which do not have any.
25739
25740         * gcc.c (display_help): Document --version.
25741
25742         * gcc.c (main): If print_help_list and verbose_flag, ensure
25743         driver output comes before subprocess output.
25744
25745         * optc-gen.awk: Assign all remaining fields to help string,
25746         space-separated, for multi-line help in *.opt.
25747
25748         * doc/invoke.texi (Warning Options): -Wsync-nand is C/C++ only.
25749         -Wno-pedantic-ms-format is for MinGW targets only.
25750
25751         * doc/options.texi (Option file format): Fix bad indentation,
25752         restoring dropped sentence.
25753
25754 2009-02-28  Jan Hubicka  <jh@suse.cz>
25755
25756         * tree-inline.c (tree_function_versioning): Output debug info.
25757
25758 2009-02-28  Jan Hubicka  <jh@suse.cz>
25759
25760         PR debug/39267
25761         * tree-inline.c (setup_one_parameter): Do not copy propagate
25762         arguments when not optimizing.
25763
25764 2009-02-28  H.J. Lu  <hongjiu.lu@intel.com>
25765
25766         PR target/39327
25767         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
25768         (avx_addsubv4df3): Likewise.
25769         (*avx_addsubv4sf3): Likewise.
25770         (sse3_addsubv4sf3): Likewise.
25771         (*avx_addsubv2df3): Likewise.
25772         (sse3_addsubv2df3): Likewise.
25773         (avx_unpckhps256): Correct item selectors.
25774         (avx_unpcklps256): Likewise.
25775         (avx_unpckhpd256): Likewise.
25776         (avx_unpcklpd256): Likewise.
25777
25778 2009-02-28  Jan Hubicka  <jh@suse.cz>
25779
25780         * tree-inline.c (expand_call_inline): Avoid duplicate declarations of
25781         static vars.
25782         (copy_arguments_for_versioning): If var is declared don't declare it.
25783         (tree_function_versioning): First setup substitutions and then copy
25784         args.
25785
25786 2009-02-27  Jan Hubicka  <jh@suse.cz>
25787
25788         PR debug/39267
25789         * cgraph.h (varpool_output_debug_info): Remove.
25790         * cgraphunit.c (varpool_output_debug_info): Remove.
25791         * dwarf2out.c (deferred_locations_struct): New struct
25792         (deferred_locations): New type.
25793         (deferred_locations_list): New static var.
25794         (deffer_location): New function.
25795         (gen_variable_die): Use it.
25796         (decls_for_scope): Output info on local static vars.
25797         (dwarf2out_finish): Process deferred locations.
25798         * varpool.c (varpool_output_debug_info): Remove.
25799
25800 2009-02-27  Jan Hubicka  <jh@suse.cz>
25801
25802         PR debug/39267
25803         * tree.h (TREE_PROTECTED): Fix comment.
25804         (BLOCK_HANDLER_BLOCK): Remove.
25805         (struct tree_block): Remove handler_block add body_block.
25806         (inlined_function_outer_scope_p): New.
25807         (is_body_block): Remove.
25808         * dbxout.c (dbxout_block): Remove BLOCK_HANDLER_BLOCK.
25809         * dwarf2out.c (is_inlined_entry_point): Remove.
25810         (add_high_low_attributes): Use inlined_function_outer_scope_p.
25811         (gen_block_die): Use is_inlined_entry_point check.  Remove body block
25812         code.
25813         * langhooks.h (struct lang_hooks): Remove no_bodu_blocks.
25814         * gimplify.c (gimplify_expr): Gimplify body blocks.
25815         * tree-ssa-live.c (remove_unused_scope_block_p): Allow removing wrapper
25816         block with multiple subblocks.
25817         (dump_scope_block): Prettier output; dump more flags and info.
25818         (dump_scope_blocks): New.
25819         (remove_unused_locals): Use dump_scope_blocks.
25820         * tree-flow.h (dump_scope_blocks): Declare.
25821         * tree-cfg.c (execute_build_cfg): Dump scope blocks.
25822         * stmt.c (is_body_block): Remove.
25823         * tree-inline.c (remap_block): Copy BODY_BLOCK info.
25824         * langhooks-def.h (LANG_HOOKS_NO_BODY_BLOCKS): Remove.
25825
25826 2009-02-27  Sebastian Pop  <sebastian.pop@amd.com>
25827
25828         PR middle-end/39308
25829         * graphite.c (graphite_loop_normal_form): Do not call
25830         number_of_iterations_exit from a gcc_assert.
25831
25832 2009-02-27  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
25833
25834         * config/s390/s390.c (s390_swap_cmp): Look for conditional
25835         jumps if COND is NULL.
25836         (find_cond_jump): New function.
25837         (s390_z10_optimize_cmp): Handling for reg-reg compares added.
25838         * config/s390/s390.md: Remove z10_cobra attribute value.
25839
25840 2009-02-26  Uros Bizjak  <ubizjak@gmail.com>
25841
25842         * config/alpha/alpha.h (alpha_expand_mov): Return false if
25843         force_const_mem returns NULL_RTX.
25844
25845 2009-02-26  Jan Hubicka  <jh@suse.cz>
25846
25847         PR debug/39267
25848         * cgraph.h (varpool_output_debug_info): Remove.
25849         * cgraphunit.c (varpool_output_debug_info): Remove.
25850         * dwarf2out.c (deferred_locations_struct): New struct
25851         (deferred_locations): New type.
25852         (deferred_locations_list): New static var.
25853         (deffer_location): New function.
25854         (gen_variable_die): Use it.
25855         (decls_for_scope): Output info on local static vars.
25856         (dwarf2out_finish): Process deferred locations.
25857         * varpool.c (varpool_output_debug_info): Remove.
25858
25859 2009-02-25  H.J. Lu  <hongjiu.lu@intel.com>
25860
25861         PR rtl-optimization/39241
25862         * jump.c (rtx_renumbered_equal_p): Remove 2 superfluous calls
25863         to subreg_offset_representable_p.
25864
25865 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
25866
25867         * regmove.c (regmove_optimize): Conform to struct rtl_opt_pass
25868         execute function prototype.  Get f and nregs from max_reg_num
25869         and get_insns.  Remove the first backward pass as it's dead,
25870         guard the forward pass by flag_expensive_optimizations.
25871         (rest_of_handle_regmove): Delete.
25872         (pass_regmove): Replace it with regmove_optimize.
25873
25874 2009-02-25  Martin Jambor  <mjambor@suse.cz>
25875
25876         PR tree-optimization/39259
25877         * tree-inline.c (initialize_cfun): Remove asserts for calls_setjmp and
25878         calls_alloca function flags.
25879         (copy_bb): Set calls_setjmp and alls_alloca function flags if such
25880         calls are detected.
25881
25882 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
25883
25884         * regmove.c (discover_flags_reg, flags_set_1, mark_flags_life_zones,
25885         flags_set_1_rtx, flags_set_1_set): Delete.
25886         (regmove_optimize): Do not call mark_flags_life_zones.
25887
25888 2009-02-24  Julian Brown  <julian@codesourcery.com>
25889
25890         PR target/35965
25891         * config/arm/arm.c (require_pic_register): Only set
25892         cfun->machine->pic_reg once per function.
25893
25894 2009-02-24  Sandra Loosemore  <sandra@codesourcery.com>
25895
25896         * doc/invoke.texi (Link Options): Document an easier way to pass
25897         options that take arguments to the GNU linker using -Xlinker and -Wl.
25898
25899 2009-02-24  Steve Ellcey  <sje@cup.hp.com>
25900
25901         PR target/33785
25902         * doc/tm.texi (TARGET_C99_FUNCTIONS): Fix description.
25903
25904 2009-02-24  Richard Guenther  <rguenther@suse.de>
25905
25906         PR debug/39285
25907         * dwarf2out.c (gen_enumeration_type_die): Handle CONST_DECLs.
25908
25909 2009-02-24  Richard Guenther  <rguenther@suse.de>
25910             Zdenek Dvorak  <ook@ucw.cz>
25911
25912         PR tree-optimization/39233
25913         * tree-ssa-loop-ivopts.c (add_candidate_1): Do not except pointers
25914         from converting them to a generic type.
25915
25916 2009-02-23  Sebastian Pop  <sebastian.pop@amd.com>
25917
25918         PR tree-optimization/39260
25919         * graphite.c (harmful_stmt_in_bb): Stop a SCoP when the basic block
25920         contains a condition with a real type.
25921         (build_scop_conditions_1): Conditions are always last_stmt of a bb.
25922
25923 2009-02-23  Jason Merrill  <jason@redhat.com>
25924
25925         PR c++/38880
25926         * varasm.c (initializer_constant_valid_p) [PLUS_EXPR]: Check
25927         narrowing_initializer_constant_valid_p.
25928         (narrowing_initializer_constant_valid_p): Don't return
25929         null_pointer_node for adding a pointer to itself.
25930
25931 2009-02-23  Jan Hubicka  <jh@suse.cz>
25932
25933         PR c/12245
25934         * ggc.h (htab_create_ggc): Use ggc_free to free hashtable when
25935         resizing.
25936
25937 2009-02-23  Jan Hubicka  <jh@suse.cz>
25938
25939         PR tree-optimization/37709
25940         * tree.c (block_ultimate_origin): Move here from dwarf2out.
25941         * tree.h (block_ultimate_origin): Declare.
25942         * dwarf2out.c (block_ultimate_origin): Move to tree.c
25943         * tree-ssa-live.c (remove_unused_scope_block_p):
25944         Eliminate blocks containig no instructions nor live variables nor
25945         nested blocks.
25946         (dump_scope_block): New function.
25947         (remove_unused_locals): Enable removal of dead blocks by default;
25948         enable dumping at TDF_DETAILS.
25949
25950 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
25951
25952         * config/i386/i386.c (classify_argument): Don't allow COImode
25953         and OImode.
25954         (function_arg_advance_32): Don't allow OImode.
25955         (function_arg_32): Likewise.
25956         (function_value_32): Likewise.
25957         (return_in_memory_32): Likewise.
25958         (function_arg_64): Remove OImode comment.
25959
25960 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
25961
25962         PR target/39261
25963         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Use
25964         ix86_expand_vector_set for V4DImode in 64bit mode only.
25965         (ix86_expand_vector_init_one_var): Likewise.
25966
25967 2009-02-21  Sebastian Pop  <sebastian.pop@amd.com>
25968
25969         * graphite.c (graphite_trans_loop_block): Adjust tile size to 51.
25970
25971 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
25972
25973         PR bootstrap/39257
25974         * loop-iv.c: Revert last change.
25975         * emit-rtl.c: Likewise.
25976
25977 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
25978
25979         PR target/39256
25980         * config/i386/i386.c (type_natural_mode): Remove an extra
25981         space in the warning message.
25982         (function_value_32): Handle 32-byte vector modes.
25983         (return_in_memory_32): Likewise.
25984
25985 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
25986
25987         * loop-iv.c (truncate_value): New function.
25988         (iv_subreg, get_iv_value, iv_number_of_iterations): Use it instead
25989         of lowpart_subreg.
25990         (lowpart_subreg): Move to...
25991         * emit-rtl.c: ...here.
25992
25993 2009-02-21  Danny Smith  <dannysmith@users.sourceforge.net>
25994
25995         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common): Revert
25996         accidental and undocumented change at revision 140860.
25997
25998 2009-02-21  Joseph Myers  <joseph@codesourcery.com>
25999
26000         * config/arm/arm.c (arm_gimplify_va_arg_expr): Update prototype to
26001         take gimple_seq * arguments.
26002         (arm_mangle_type): Use CONST_CAST_TREE on type argument passed to
26003         types_compatible_p langhook.
26004
26005 2009-02-20  Mark Mitchell  <mark@codesourcery.com>
26006             Joseph Myers  <joseph@codesourcery.com>
26007
26008         * config/arm/arm.c (arm_builtin_va_list): New function.
26009         (arm_expand_builtin_va_start): Likewise.
26010         (arm_gimplify_va_arg_expr): Likewise.
26011         (TARGET_BUILD_BUILTIN_VA_LIST): Define.
26012         (TARGET_BUILD_BUILTIN_VA_START): Likewise.
26013         (TARGET_BUILD_BUILTIN_VA_ARG_EXPR): Likewise.
26014         (va_list_type): New variable.
26015         (arm_mangle_type): Mangle va_list_type appropriately.
26016
26017 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
26018
26019         PR middle-end/39157
26020         * Makefile.in (loop-invariant.o): Depend on $(PARAMS_H).
26021         * params.h (LOOP_INVARIANT_MAX_BBS_IN_LOOP): Define.
26022         * params.def (loop-invariant-max-bbs-in-loop): New parameter.
26023         * opts.c (decode_options): Set loop-invariant-max-bbs-in-loop
26024         parameter to 1000 for -O1 by default.
26025         * doc/invoke.texi (loop-invariant-max-bbs-in-loop): Document new
26026         parameter.
26027         * loop-invariant.c: Include params.h.
26028         (move_loop_invariants): Don't call move_single_loop_invariants on
26029         very large loops.
26030
26031 2009-02-20  Jaka Mocnik  <jaka@xlab.si>
26032
26033         * calls.c (emit_library_call_value_1): Use slot_offset instead of
26034         offset when calculating bounds for indexing stack_usage_map.  Fixes
26035         a buffer overflow with certain target setups.
26036
26037 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
26038
26039         PR target/39240
26040         * calls.c (expand_call): Clear try_tail_call if caller and callee
26041         disagree in promotion of function return value.
26042
26043 2009-02-19  Jakub Jelinek  <jakub@redhat.com>
26044
26045         PR target/39175
26046         * c-common.c (c_determine_visibility): If visibility changed and
26047         DECL_RTL has been already set, call make_decl_rtl to update symbol
26048         flags.
26049
26050 2009-02-19  H.J. Lu  <hongjiu.lu@intel.com>
26051
26052         PR c++/39188
26053         * varasm.c (assemble_variable): Don't check DECL_NAME when
26054         globalizing a variable.
26055
26056 2009-02-19  Joseph Myers  <joseph@codesourcery.com>
26057
26058         PR c/38483
26059         * builtins.c (gimplify_va_arg_expr): Evaluate the va_list
26060         expression before any __builtin_trap call.
26061         * c-typeck.c (build_function_call): Convert and check function
26062         arguments before generating a call to a trap.  Evaluate the
26063         function arguments before the trap.
26064
26065 2009-02-19  Uros Bizjak  <ubizjak@gmail.com>
26066
26067         PR target/39228
26068         * config/i386/i386.md (isinfxf2): Split from isinf<mode>2.
26069         (UNSPEC_FXAM_MEM): New unspec.
26070         (fxam<mode>2_i387_with_temp): New insn and split pattern.
26071         (isinf<mode>2): Use MODEF mode iterator.  Force operand[1] through
26072         memory using fxam<mode>2_i387_with_temp to remove excess precision.
26073
26074 2009-02-19  Richard Guenther  <rguenther@suse.de>
26075
26076         PR tree-optimization/39207
26077         PR tree-optimization/39074
26078         * tree-ssa-structalias.c (storedanything_id, var_storedanything,
26079         storedanything_tree): New.
26080         (do_ds_constraint): Simplify ANYTHING shortcutting.  Update
26081         the STOREDANYTHING solution if the lhs solution contains ANYTHING.
26082         (build_succ_graph): Add edges from STOREDANYTHING to all
26083         non-direct nodes.
26084         (init_base_vars): Initialize STOREDANYTHING.
26085         (compute_points_to_sets): Free substitution info after
26086         building the succ graph.
26087         (ipa_pta_execute): Likewise.
26088
26089         * tree-ssa-structalias.c (struct variable_info): Add may_have_pointers
26090         field.
26091         (do_ds_constraint): Do not add to special var or non-pointer
26092         field solutions.
26093         (type_could_have_pointers): Split out from ...
26094         (could_have_pointers): ... here.  For arrays use the element type.
26095         (create_variable_info_for): Initialize may_have_pointers.
26096         (new_var_info): Likewise.
26097         (handle_lhs_call): Make the HEAP variable unknown-sized.
26098         (intra_create_variable_infos): Use a type with pointers for
26099         PARM_NOALIAS, make it unknown-sized.
26100
26101 2009-02-18  H.J. Lu  <hongjiu.lu@intel.com>
26102
26103         PR target/39224
26104         * config/i386/i386.c (ix86_return_in_memory): Properly check ABI.
26105
26106 2009-02-18  Jason Merrill  <jason@redhat.com>
26107
26108         PR target/39179
26109         * tree-ssa-ccp.c (get_symbol_constant_value): Don't assume zero
26110         value if DECL_EXTERNAL.
26111         * tree-sra.c (sra_walk_gimple_assign): Likewise.
26112         * target.h (gcc_target::binds_local_p): Clarify "module".
26113         * tree.h (TREE_PUBLIC): Clarify "module".
26114
26115 2009-02-17  Xuepeng Guo  <xuepeng.guo@intel.com>
26116
26117         PR target/38891
26118         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move the hunk of
26119         initialization for MS_ABI prior to the hunk of !TARGET_MMX.
26120
26121 2009-02-17  H.J. Lu  <hongjiu.lu@intel.com>
26122
26123         PR target/39082
26124         * c.opt (Wabi): Support C and ObjC.
26125         (Wpsabi): New.
26126
26127         * c-opts.c (c_common_handle_option): Handle OPT_Wabi.
26128
26129         * config/i386/i386.c (classify_argument): Warn once about the ABI
26130         change when passing union with long double.
26131
26132         * doc/invoke.texi: Update -Wabi for warning psABI changes.
26133
26134 2009-02-18  Joseph Myers  <joseph@codesourcery.com>
26135
26136         PR c/35447
26137         * c-parser.c (c_parser_compound_statement): Always enter and leave
26138         a scope.
26139
26140 2009-02-17  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
26141
26142         PR target/34587
26143         * config/darwin.h (SUPPORTS_INIT_PRIORITY): Define.
26144
26145 2009-02-18  Jakub Jelinek  <jakub@redhat.com>
26146
26147         PR tree-optimization/36922
26148         * tree-data-ref.c (initialize_matrix_A): Handle BIT_NOT_EXPR.
26149         * tree-scalar-evolution.c (interpret_rhs_expr, instantiate_scev_1):
26150         Likewise.
26151
26152 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
26153
26154         * config/mips/mips.c (mips_override_options): Set flag_dwarf2_cfi_asm
26155         to 0 for EABI64.
26156
26157 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
26158
26159         * config/mips/mips.md (type): Reclassify lui_movf as "unknown".
26160
26161 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
26162
26163         * config/mips/mips.c (mips_gimplify_va_arg_expr): Fix invalid
26164         tree sharing.
26165
26166 2009-02-17  Ruan Beihong  <ruanbeihong@gmail.com>
26167             Richard Sandiford  <rdsandiford@googlemail.com>
26168
26169         * config/mips/mips.c (CODE_FOR_loongson_biadd): Delete.
26170         * config/mips/loongson.md (reduc_uplus_<mode>): Rename to...
26171         (loongson_biadd): ...this.
26172
26173 2009-02-17  Richard Guenther  <rguenther@suse.de>
26174
26175         PR tree-optimization/39202
26176         * tree-ssa-structalias.c (do_structure_copy): Before collapsing
26177         a var make sure to follow existing collapses.
26178
26179 2009-02-17  Richard Guenther  <rguenther@suse.de>
26180
26181         PR middle-end/39214
26182         * langhooks.c (lhd_print_error_function): Check for NULL block.
26183
26184 2009-02-17  Richard Guenther  <rguenther@suse.de>
26185
26186         PR tree-optimization/39204
26187         * tree-ssa-pre.c (phi_translate_1): Lookup the value-number
26188         of the PHI arg.
26189
26190 2009-02-17  Uros Bizjak  <ubizjak@gmail.com>
26191
26192         * config/soft-fp/double.h: Update from glibc CVS.
26193
26194 2009-02-17  Richard Guenther  <rguenther@suse.de>
26195
26196         PR tree-optimization/39207
26197         * tree-ssa-structalias.c (find_what_p_points_to): Do not emit
26198         strict-aliasing warnings for pointers pointing to NULL.
26199
26200 2009-02-16  Joseph Myers  <joseph@codesourcery.com>
26201
26202         PR c/35446
26203         * c-parser.c (c_parser_braced_init): Call pop_init_level when
26204         skipping until next close brace.
26205
26206 2009-02-16  H.J. Lu  <hongjiu.lu@intel.com>
26207
26208         PR target/37049
26209         * config/i386/i386.c (ix86_expand_push): Set memory alignment
26210         to function argument boundary.
26211
26212 2009-02-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
26213
26214         * config/picochip/picochip.md (lea_add): Allow any nonimmediate
26215         in the lea_add. Reload eventually constraints it properly.
26216         * config/picochip/constraints.md: Remove the target constraint
26217         "b", since it is not needed anymore.
26218
26219 2009-02-16  Jakub Jelinek  <jakub@redhat.com>
26220
26221         * gthr-dce.h: Uglify function parameter and local variable names.
26222         * gthr-gnat.h: Likewise.
26223         * gthr-mipssde.h: Likewise.
26224         * gthr-nks.h: Likewise.
26225         * gthr-posix95.h: Likewise.
26226         * gthr-posix.h: Likewise.
26227         * gthr-rtems.h: Likewise.
26228         * gthr-single.h: Likewise.
26229         * gthr-solaris.h: Likewise.
26230         * gthr-tpf.h: Likewise.
26231         * gthr-vxworks.h: Likewise.
26232         * gthr-win32.h: Likewise.
26233
26234 2009-02-15  H.J. Lu  <hongjiu.lu@intel.com>
26235
26236         PR target/39196
26237         * config/i386/i386.md: Restrict the new peephole2 to move
26238         between MMX/SSE registers.
26239
26240 2009-02-15  Richard Guenther  <rguenther@suse.de>
26241
26242         Revert
26243         2009-02-13  Richard Guenther  <rguenther@suse.de>
26244
26245         * configure.ac: Enable LFS.
26246         * configure: Re-generate.
26247         * config.in: Likewise.
26248
26249 2009-02-13  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
26250
26251         * config/spu/spu_internals.h (spu_sr, spu_sra, spu_srqw,
26252         spu_srqwbyte, spu_srqwbytebc): Define.
26253         * config/spu/spu-builtins.def (spu_sr, spu_sra, spu_srqw,
26254         spu_srqwbyte, spu_srqwbytebc): New overloaded builtins.
26255         * config/spu/spu.md ("shrqbybi_<mode>", "shrqbi_<mode>",
26256         "shrqby_<mode>"): New insn-and-split patterns.
26257         * config/spu/spu.c (expand_builtin_args): Determine and return
26258         number of operands using spu_builtin_description data.
26259         (spu_expand_builtin_1): Use it.
26260
26261 2009-02-13  Steve Ellcey  <sje@cup.hp.com>
26262
26263         PR target/38056
26264         * config/ia64/ia64.c (ia64_function_ok_for_sibcall): Check
26265         TARGET_CONST_GP.
26266
26267 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
26268
26269         PR target/39149
26270         * config/i386/i386.c (override_options): Correct warning
26271         messages for -malign-loops, -malign-jumps and -malign-functions.
26272
26273 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
26274
26275         PR target/39152
26276         * config/i386/i386.md: Restrict the new peephole2 to move
26277         between the general purpose registers.
26278
26279 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
26280
26281         PR target/39162
26282         * config/i386/i386.c (type_natural_mode): Add a new argument.
26283         Return the original mode and warn ABI change if vector size is 32byte.
26284         (function_arg_advance): Updated.
26285         (function_arg): Likewise.
26286         (ix86_function_value): Likewise.
26287         (ix86_return_in_memory): Likewise.
26288         (ix86_sol10_return_in_memory): Likewise.
26289         (ix86_gimplify_va_arg): Likewise.
26290         (function_arg_32): Don't warn ABX ABI change here.
26291         (function_arg_64): Likewise.
26292
26293 2009-02-13  Bernd Schmidt  <bernd.schmidt@analog.com>
26294
26295         * loop-iv.c (implies_p): In the final case, test that operands 0
26296         of the two comparisons match.
26297
26298         * config/bfin/bfin.c (find_prev_insn_start): New function.
26299         (bfin_optimize_loop): Use it in some cases instead of PREV_INSN.
26300         (find_next_insn_start): Move.
26301
26302 2009-02-13  Richard Guenther  <rguenther@suse.de>
26303
26304         * configure.ac: Enable LFS.
26305         * configure: Re-generate.
26306         * config.in: Likewise.
26307
26308 2009-02-13  Joseph Myers  <joseph@codesourcery.com>
26309
26310         PR c/35444
26311         * c-parser.c (c_parser_parms_list_declarator): Discard pending
26312         sizes on syntax error after some arguments have been parsed.
26313
26314 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
26315
26316         * doc/invoke.texi (-fira): Remove.
26317
26318 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
26319
26320         * caller-save.c: Replace regclass.c with reginfo.c in comments.
26321         * recog.c: Likewise.
26322         * rtl.h: Likewise.
26323
26324 2009-02-12  Uros Bizjak  <ubizjak@gmail.com>
26325
26326         * longlong.h (sub_ddmmss): New for ia64. Ported from GMP 4.2.
26327         (umul_ppmm): Likewise.
26328         (count_leading_zeros): Likewise.
26329         (count_trailing_zeros): Likewise.
26330         (UMUL_TIME): Likewise.
26331
26332 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
26333
26334         * config.gcc (ia64*-*-linux*): Add ia64/t-fprules-softfp and
26335         soft-fp/t-softfp to tmake_file.
26336
26337         * config/ia64/ia64.c (ia64_soft_fp_init_libfuncs): New.
26338         (ia64_expand_compare): Use HPUX library for TFmode only for HPUX.
26339         (ia64_builtins) [IA64_BUILTIN_COPYSIGNQ, IA64_BUILTIN_FABSQ,
26340         IA64_BUILTIN_INFQ]: New.
26341         (ia64_init_builtins): Initialize __builtin_infq,
26342         __builtin_fabsq and __builtin_copysignq if not HPUX.
26343         (ia64_expand_builtin): Handle IA64_BUILTIN_COPYSIGNQ,
26344         IA64_BUILTIN_FABSQ and IA64_BUILTIN_INFQ.
26345
26346         * config/ia64/lib1funcs.asm (__divtf3): Define only if
26347         SHARED is defined.
26348         (__fixtfti): Likewise.
26349         (__fixunstfti): Likewise.
26350         (__floattitf): Likewise.
26351
26352         * config/ia64/libgcc-glibc.ver: New.
26353         * config/ia64/t-fprules-softfp: Likewise.
26354         * config/ia64/sfp-machine.h: Likewise.
26355
26356         * config/ia64/linux.h (LIBGCC2_HAS_TF_MODE): New.
26357         (LIBGCC2_TF_CEXT): Likewise.
26358         (TF_SIZE): Likewise.
26359         (TARGET_INIT_LIBFUNCS): Likewise.
26360
26361         * config/ia64/t-glibc (SHLINB_MAPFILES):
26362         Add $(srcdir)/config/ia64/libgcc-glibc.ver.
26363
26364 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
26365
26366         * config/i386/i386.c (construct_container): Rewrite processing
26367         BLKmode with X86_64_SSE_CLASS.
26368
26369 2009-02-12  Paolo Bonzini  <bonzini@gnu.org>
26370
26371         PR target/39152
26372         * config/i386/i386.md: Replace simplify_replace_rtx with
26373         replace_rtx in the new peephole2.
26374
26375 2009-02-12  Nathan Sidwell  <nathan@codesourcery.com>
26376
26377         * doc/invoke.texi (Optimize Options): Stop claiming inlining and
26378         loop unrolling do not happen at -O2.
26379
26380 2009-02-12  Michael Matz  <matz@suse.de>
26381
26382         * gcc.c (ASM_DEBUG_SPEC): Check for -g0.
26383
26384 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
26385
26386         * dwarf2out.c (dwarf2out_finish): Force output of comp_unit_die
26387         for -g3.
26388
26389 2009-02-12  Ben Elliston  <bje@au.ibm.com>
26390
26391         * config/rs6000/rs6000.md (allocate_stack): Use _stack form of
26392         patterns when updating the back chain.  Missed in the 2009-02-10
26393         change.
26394
26395 2009-02-11  Janis Johnson  <janis187@us.ibm.com>
26396
26397         * doc/extend.texi (Decimal Floating Types): Update identifier of
26398         draft TR and list of missing support.
26399
26400 2009-02-11  Jakub Jelinek  <jakub@redhat.com>
26401
26402         PR middle-end/39154
26403         * gimplify.c (omp_notice_variable): If adding GOVD_SEEN
26404         bit to variable length decl's flags, add it also to its
26405         pointer replacement variable.
26406
26407 2009-02-11  Uros Bizjak  <ubizjak@gmail.com>
26408             Jakub Jelinek  <jakub@redhat.com>
26409
26410         PR target/39118
26411         * config/i386/i386.md (UNSPEC_MEMORY_BLOCKAGE): New constant.
26412         (memory_blockage): New expander.
26413         (*memory_blockage): New insn pattern.
26414         * config/i386/i386.c (ix86_expand_prologue): Use memory_blockage
26415         instead of general blockage at the end of function prologue when
26416         frame pointer is used to access red zone area.  Do not emit blockage
26417         when profiling, it is emitted in generic code.
26418         (ix86_expand_epilogue): Emit memory_blockage at the beginning of
26419         function epilogue when frame pointer is used to access red zone area.
26420
26421 2009-02-11  Paolo Bonzini  <bonzini@gnu.org>
26422
26423         PR target/38824
26424         * config/i386/i386.md: Add two new peephole2 to avoid mov followed
26425         by arithmetic with memory operands.
26426         * config/i386/predicates.md (commutative_operator): New.
26427
26428 2009-02-10  Janis Johnson  <janis187@us.ibm.com>
26429
26430         * doc/extend.texi (Fixed-Point Types): Break long paragraphs into
26431         bulleted lists.
26432
26433 2009-02-10  Eric Botcazou  <ebotcazou@adacore.com>
26434
26435         * alias.h (record_alias_subset): Declare.
26436         * alias.c (record_alias_subset): Make global.
26437
26438 2009-02-10  Nick Clifton  <nickc@redhat.com>
26439
26440         * tree-parloops.c: Change license to GPLv3.
26441         * ipa-struct-reorg.c: Change license to GPLv3.
26442         * ipa-struct-reorg.h: Change license to GPLv3.
26443
26444 2009-02-10  Steve Ellcey  <sje@cup.hp.com>
26445
26446         PR c/39084
26447         * c-decl.c (start_struct): Return NULL on error.
26448
26449 2009-02-10  Jakub Jelinek  <jakub@redhat.com>
26450
26451         PR middle-end/39124
26452         * cfgloopmanip.c (remove_path): Call remove_bbs after
26453         cancel_loop_tree, not before it.
26454
26455         PR target/39139
26456         * function.h (struct function): Add has_local_explicit_reg_vars bit.
26457         * gimplify.c (gimplify_bind_expr): Set it if local DECL_HARD_REGISTER
26458         VAR_DECLs were seen.
26459         * tree-ssa-live.c (remove_unused_locals): Recompute
26460         cfun->has_local_explicit_reg_vars.
26461         * tree-ssa-sink.c (statement_sink_location): Don't sink BLKmode
26462         copies or clearings if cfun->has_local_explicit_reg_vars.
26463
26464 2009-02-10  Uros Bizjak  <ubizjak@gmail.com>
26465
26466         PR target/39118
26467         * config/i386/i386.c (expand_prologue): Emit blockage at the end
26468         of function prologue when frame pointer is used to access
26469         red zone area.
26470
26471 2009-02-10  Richard Guenther  <rguenther@suse.de>
26472
26473         PR middle-end/39127
26474         * gimplify.c (gimple_regimplify_operands): Always look if
26475         we need to create a temporary.
26476
26477 2009-02-10  Richard Guenther  <rguenther@suse.de>
26478
26479         PR tree-optimization/39132
26480         * tree-loop-distribution.c (todo): New global var.
26481         (generate_memset_zero): Trigger TODO_rebuild_alias.
26482         (tree_loop_distribution): Return todo.
26483
26484 2009-02-10  H.J. Lu  <hongjiu.lu@intel.com>
26485
26486         PR target/39119
26487         * config/i386/i386.c (x86_64_reg_class): Remove X86_64_AVX_CLASS.
26488         (x86_64_reg_class_name): Removed.
26489         (classify_argument): Return 0 if bytes > 32.  Return 0 if the
26490         first one isn't X86_64_SSE_CLASS or any other ones aren't
26491         X86_64_SSEUP_CLASS when size > 16bytes.  Don't turn
26492         X86_64_SSEUP_CLASS into X86_64_SSE_CLASS if the preceded one
26493         is X86_64_SSEUP_CLASS.  Set AVX modes to 1 X86_64_SSE_CLASS
26494         and 3 X86_64_SSEUP_CLASS.
26495         (construct_container): Remove X86_64_AVX_CLASS.  Handle 4
26496         registers with 1 X86_64_SSE_CLASS and 3 X86_64_SSEUP_CLASS.
26497
26498 2009-02-10  Ben Elliston  <bje@au.ibm.com>
26499
26500         * config/rs6000/rs6000.md (allocate_stack): Always use an update
26501         form instruction to update the stack back chain word, even if the
26502         user has disabled the generation of update instructions.
26503         (movdi_<mode>_update_stack): New.
26504         (movsi_update_stack): Likewise.
26505         * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Likewise,
26506         always use an update form instruction to update the stack back
26507         chain word.
26508
26509 2009-02-09  Sebastian Pop  <sebastian.pop@amd.com>
26510
26511         PR middle-end/38953
26512         * graphite.c (if_region_set_false_region): After moving a region in
26513         the false branch of a condition, remove the empty dummy basic block.
26514         (gloog): Remove wrong fix for PR38953.
26515
26516 2009-02-09  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
26517
26518         * config/spu/spu.c (array_to_constant): Fix (latent) wrong-code
26519         generation due to implicit sign extension.
26520
26521 2009-02-09  Eric Botcazou  <ebotcazou@adacore.com>
26522
26523         PR middle-end/38981
26524         * tree-ssa-coalesce.c (add_coalesce): Cap the costs of coalesce pairs
26525         at MUST_COALESCE_COST-1 instead of MUST_COALESCE_COST.
26526
26527 2009-02-09  Richard Guenther  <rguenther@suse.de>
26528
26529         PR middle-end/35202
26530         * convert.c (convert_to_real): Disable (float)fn((double)x)
26531         to fnf(x) conversion if errno differences may occur and
26532         -fmath-errno is set.
26533
26534 2009-02-07  Anatoly Sokolov  <aesok@post.ru>
26535
26536         * config/avr/avr.c (avr_mcu_t): Add ata6289 device.
26537         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
26538         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
26539
26540 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
26541
26542         PR c/35434
26543         * c-common.c (handle_alias_attribute): Disallow attribute for
26544         anything not a FUNCTION_DECL or VAR_DECL.
26545
26546 2009-02-06  Janis Johnson  <janis187@us.ibm.com>
26547
26548         PR c/39035
26549         * real.c (do_compare): Special-case compare of zero against
26550         decimal float value.
26551
26552 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
26553
26554         PR c/36432
26555         * c-decl.c (grokdeclarator): Don't treat [] declarators in fields
26556         as indicating flexible array members unless the field itself is
26557         being declarared as the incomplete array.
26558
26559 2009-02-06  Jan Hubicka  <jh@suse.cz>
26560
26561         PR tree-optimization/38844
26562         * ipa-inline.c (try_inline): Stop inlining recursion when edge
26563         is already inlined.
26564
26565 2009-02-06  Richard Guenther  <rguenther@suse.de>
26566
26567         PR middle-end/38977
26568         * tree-cfg.c (need_fake_edge_p): Force a fake edge for
26569         fork because we may expand it as __gcov_fork.
26570
26571 2009-02-06  Nick Clifton  <nickc@redhat.com>
26572
26573         * config/m32c/m32c.h (PCC_BITFIELD_TYPE_MATTERS): Define to zero.
26574
26575 2009-02-06  Paolo Bonzini  <bonzini@gnu.org>
26576
26577         PR tree-optimization/35659
26578         * tree-ssa-sccvn.c (vn_constant_eq, vn_reference_eq, vn_nary_op_eq
26579         vn_phi_eq): Shortcut if hashcode does not match.
26580         (vn_reference_op_compute_hash): Do not call iterative_hash_expr for
26581         NULL operands.
26582         * tree-ssa-pre.c (pre_expr_hash): Look at hashcode if available,
26583         and avoid iterative_hash_expr.
26584         (FOR_EACH_VALUE_ID_IN_SET): New.
26585         (value_id_compare): Remove.
26586         (sorted_array_from_bitmap_set): Use FOR_EACH_VALUE_ID_IN_SET to
26587         sort expressions by value id.
26588
26589 2009-02-05  Kaz Kojima  <kkojima@gcc.gnu.org>
26590
26591         PR target/38991
26592         * config/sh/predicates.md (general_movsrc_operand): Don't check
26593         the subreg of system registers here.
26594
26595 2009-02-05  Jakub Jelinek  <jakub@redhat.com>
26596
26597         PR c++/39106
26598         * cgraphunit.c (cgraph_function_versioning): Clear also DECL_VIRTUAL_P
26599         on the copied decl.
26600
26601 2009-02-05  Paolo Bonzini  <bonzini@gnu.org>
26602
26603         PR rtl-optimization/39110
26604         * rtlanal.c (rtx_addr_can_trap_p_1): Shortcut unaligned
26605         addresses, not aligned ones.
26606
26607 2009-02-05  Daniel Berlin  <dberlin@dberlin.org>
26608             Richard Guenther  <rguenther@suse.de>
26609
26610         PR tree-optimization/39100
26611         * tree-ssa-structalias.c (do_ds_constraint): Actually do what the
26612         comment says and add edges.
26613
26614 2009-02-05  Joseph Myers  <joseph@codesourcery.com>
26615
26616         PR c/35435
26617         * c-common.c (handle_tls_model_attribute): Ignore attribute for
26618         non-VAR_DECLs without checking DECL_THREAD_LOCAL_P.
26619
26620 2009-02-04  Tobias Grosser  <grosser@fim.uni-passau.de>
26621
26622         * graphite.c (bb_in_sese_p, sese_build_livein_liveouts_use,
26623         sese_build_livein_liveouts_bb, sese_build_livein_liveouts,
26624         register_bb_in_sese, new_sese, free_sese): Moved.
26625         (dot_scop_1, build_scop_loop_nests, build_loop_iteration_domains,
26626         outermost_loop_in_scop, build_scop_iteration_domain,
26627         expand_scalar_variables_ssa_name, get_vdef_before_scop,
26628         limit_scops): Use bb_in_sese_p instead of bb_in_scop_p.
26629         Use loop_in_sese_p instead of loop_in_scop_p.
26630         (new_graphite_bb, gloog): Do not initialize SCOP_BBS_B.
26631         (new_scop, free_scop): Remove SCOP_LOOP2CLOOG_LOOP and SCOP_BBS_B.
26632         (scopdet_basic_block_info): Fix bug in scop detection.
26633         (new_loop_to_cloog_loop_str, hash_loop_to_cloog_loop,
26634         eq_loop_to_cloog_loop): Remove.
26635         (nb_loops_around_loop_in_scop, nb_loop
26636         ref_nb_loops): Moved here...
26637         * graphite.h (ref_nb_loops): ... from here.
26638         (struct scop): Remove bbs_b bitmap and loop2cloog_loop.
26639         (loop_domain_dim, loop_iteration_vector_dim): Remove.
26640         (SCOP_BBS_B, bb_in_scop_p, loop_in_scop_p): Removed.
26641
26642 2009-02-04  Paolo Bonzini  <bonzini@gnu.org>
26643             Hans-Peter Nilsson  <hp@axis.com>
26644
26645         PR rtl-optimization/37889
26646         * rtlanal.c (rtx_addr_can_trap_p_1): Add offset and size arguments.
26647         Move offset handling from PLUS to before the switch.  Use new
26648         arguments when considering SYMBOL_REFs too.
26649         (rtx_addr_can_trap_p): Pass dummy offset and size.
26650         (enum may_trap_p_flags): Remove.
26651         (may_trap_p_1): Pass size from MEM_SIZE.
26652
26653         PR rtl-optimization/38921
26654         * loop-invariant.c (find_invariant_insn): Use may_trap_or_fault_p.
26655         * rtl.h (may_trap_after_code_motion_p): Delete prototype.
26656         * rtlanal.c (may_trap_after_code_motion_p): Delete.
26657         (may_trap_p, may_trap_or_fault_p): Pass 0/1 as flags.
26658
26659 2009-02-04  H.J. Lu  <hongjiu.lu@intel.com>
26660
26661         AVX Programming Reference (January, 2009)
26662         * config/i386/sse.md (*vpclmulqdq): New.
26663
26664 2009-02-04  Jakub Jelinek  <jakub@redhat.com>
26665
26666         PR tree-optimization/38977
26667         PR gcov-profile/38292
26668         * calls.c (special_function_p): Disregard __builtin_ prefix.
26669
26670 2009-02-04  Hariharan Sandanagobalane  <hariharan@picochip.com>
26671
26672         * config/picochip/picochip.c (GO_IF_LEGITIMATE_ADDRESS): Disallow
26673         non-indexable addresses even before reload.
26674
26675 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
26676
26677         PR c/29129
26678         * c-decl.c (grokdeclarator): Mark [*] arrays in field declarators
26679         as having variable size.  Do not give an error for unnamed
26680         parameters with [*] declarators.  Give a warning for type names
26681         with [*] declarators and mark them as variable size.
26682         * c-parser.c (c_parser_sizeof_expression): Do not give an error
26683         for sizeof applied to [*] type names.
26684
26685 2009-02-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
26686
26687         PR C++/36607
26688         * convert.c (convert_to_integer): Treat OFFSET_TYPE like INTEGER_TYPE.
26689
26690 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
26691
26692         * gcc.c (process_command): Update copyright notice dates.
26693         * gcov.c (print_version): Likewise.
26694         * gcov-dump.c (print_version): Likewise.
26695         * mips-tfile.c (main): Likewise.
26696         * mips-tdump.c (main): Likewise.
26697
26698 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
26699
26700         PR c/35433
26701         * c-typeck.c (composite_type): Set TYPE_SIZE and TYPE_SIZE_UNIT
26702         for composite type involving a zero-length array type.
26703
26704 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
26705
26706         PR target/35318
26707         * function.c (match_asm_constraints_1): Skip over
26708         initial optional % in the constraint.
26709
26710         PR inline-asm/39059
26711         * c-parser.c (c_parser_postfix_expression): If fixed point is not
26712         supported, don't accept FIXED_CSTs.
26713         * c-decl.c (finish_declspecs): Error if fixed point is not supported
26714         and _Sat is used without _Fract/_Accum.  Set specs->type to
26715         integer_type_node for cts_fract/cts_accum if fixed point is not
26716         supported.
26717
26718 2009-02-02  Catherine Moore  <clm@codesourcery.com>
26719
26720         * sde.h (SUBTARGET_ARM_SPEC): Don't assemble -fpic code as -mabicalls.
26721
26722 2009-02-02  Richard Sandiford  <rdsandiford@googlemail.com>
26723
26724         * config/mips/mips.h (FILE_HAS_64BIT_SYMBOLS): New macro.
26725         (ABI_HAS_64BIT_SYMBOLS): Use it.
26726         (DWARF2_ADDR_SIZE): Use it instead of ABI_HAS_64BIT_SYMBOLS.
26727
26728 2009-02-02  Paul Brook  <paul@codesourcery.com>
26729
26730         * config/arm/arm.md (arm_addsi3): Add r/r/k alternative.
26731
26732 2009-02-02  Jakub Jelinek  <jakub@redhat.com>
26733
26734         PR inline-asm/39058
26735         * recog.h (asm_operand_ok): Add constraints argument.
26736         * recog.c (asm_operand_ok): Likewise.  If it is set, for digits
26737         recurse on matching constraint.
26738         (check_asm_operands): Pass constraints as 3rd argument to
26739         asm_operand_ok.  Don't look up matching constraint here.
26740         * stmt.c (expand_asm_operands): Pass NULL as 3rd argument
26741         to asm_operand_ok.
26742
26743 2009-02-02  Ben Elliston  <bje@au.ibm.com>
26744
26745         * doc/tm.texi (Storage Layout): Fix TARGET_ALIGN_ANON_BITFIELD and
26746         TARGET_NARROW_VOLATILE_BITFIELD macro names.
26747
26748 2009-01-31  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
26749
26750         * doc/install.texi (hppa*-hp-hpux*): Update binutils and linker
26751         information.  Remove some obsolete information.  Reorganize.
26752
26753         * config/pa/fptr.c: Revert license to GPL 2.
26754         * config/pa/milli64.S: Likewise.
26755
26756 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
26757
26758         PR target/38904
26759         * mkmap-flat.awk (END):  Use pe_dll command-line arg to pass
26760         LIBRARY name in, instead of hard-coding it.
26761         * config.gcc (i[34567]86-*-pe | i[34567]86-*-cygwin*):  Add an
26762         extra target make frag to tmake_files according to EH model.
26763         (i[34567]86-*-mingw* | x86_64-*-mingw*):  Likewise.
26764         * config/i386/t-dw2-eh, config/i386/t-sjlj-eh:  Add new target
26765         frags that define makefile variable EH_MODEL appropriately.
26766         * config/i386/cygming.h (DWARF2_UNWIND_INFO):  Add comment.
26767         * config/i386/cygwin.h (LIBGCC_EH_EXTN):  Define to nothing or
26768         to "-sjlj" according to type of EH configured.
26769         (LIBGCC_SONAME):  Concatenate it to shared library base name.
26770         * config/i386/mingw32.h (LIBGCC_EH_EXTN):  Define to "_dw2" or
26771         to "_sjlj" according to type of EH configured.
26772         (LIBGCC_SONAME):  Concatenate it to shared library base name.
26773         * config/i386/t-cygming (SHLIB_SONAME):  Use EH_MODEL.
26774         (SHLIB_LINK):  Add missing semicolon to if-else construct.
26775         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
26776         string value of "pe_dll" command-line option.
26777         * config/i386/t-cygwin (SHLIB_EH_EXTENSION):  New helper.
26778         (SHLIB_SONAME):  Use it when overriding t-cygming default.
26779         (SHLIB_IMPLIB):  Override t-cygming default.
26780         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
26781         string value of "pe_dll" command-line option.
26782
26783 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
26784
26785         PR target/38952
26786         * config/i386/i386.c (ix86_builtin_setjmp_frame_value): New.
26787         (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Override default to point at it.
26788
26789 2009-01-31  Richard Guenther  <rguenther@suse.de>
26790
26791         PR tree-optimization/38937
26792         * tree-ssa-structalias.c (do_sd_constraint): Do not shortcut
26793         computing the transitive closure.
26794
26795 2009-01-30  Richard Guenther  <rguenther@suse.de>
26796
26797         PR tree-optimization/39041
26798         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
26799         Propagate variable indices only if the types match for this stmt.
26800
26801 2009-01-30  Jakub Jelinek  <jakub@redhat.com>
26802
26803         PR target/39013
26804         * c-decl.c (pop_scope): Set DECL_EXTERNAL for functions declared
26805         inline but never defined.
26806
26807 2009-01-30  Wolfgang Gellerich  <gellerich@de.ibm.com>
26808
26809         * config/s390/s390.md (*insv<mode>_reg_extimm): Removed.
26810         (*insv_h_di_reg_extimm): New insn.
26811         (*insv_l<mode>_reg_extimm): New insn.
26812
26813 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
26814
26815         * config/picochip/picochip.c (flag_conserve_stack): set
26816         PARAM_LARGE_STACK_FRAME and PARAM_STACK_FRAME_GROWTH to zero under
26817         fconserve-stack. Reduce call-overhead used by inliner.
26818
26819 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
26820
26821         PR/38157
26822         * common.opt (flag_conserve_stack): Initialised to zero.
26823
26824 2009-01-30  Kai Tietz  <kai.tietz@onevision.com>
26825
26826         PR/39002
26827         * config/i386/i386.c (ix86_can_use_return_insn_p): Check for nsseregs.
26828         (ix86_expand_epilogue): Take nsseregs in account to use proper restore
26829         method.
26830
26831 2009-01-29  H.J. Lu  <hongjiu.lu@intel.com>
26832
26833         * ira-color.c (allocno_reload_assign): Update comments.
26834         * regmove.c (regmove_optimize): Likewise.
26835
26836         * ra.h: Removed.
26837
26838 2009-01-29  Robert Millan  <rmh@aybabtu.com>
26839
26840         * config.gcc: Recognize GNU/kOpenSolaris (*-*-kopensolaris*-gnu).
26841         * config/i386/kopensolaris-gnu.h: New file.  Undefine
26842         `MD_UNWIND_SUPPORT'.
26843         * config/kopensolaris-gnu.h: New file (based on kfreebsd-gnu.h).
26844
26845 2009-01-29  Kazu Hirata  <kazu@codesourcery.com>
26846
26847         PR tree-optimization/39007
26848         * tree-loop-distribution.c (generate_builtin): Use
26849         recompute_dominator to compute the immediate dominator of the
26850         basic block just after the loop.
26851
26852 2009-01-29  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
26853
26854         * config/i386/sol2-10.h [!HAVE_AS_IX86_DIFF_SECT_DELTA]
26855         (ASM_OUTPUT_DWARF_PCREL): Define.
26856
26857 2009-01-29  Vladimir Makarov  <vmakarov@redhat.com>
26858
26859         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Modify description.
26860         * doc/passes.texi: Remove entries about regclass, local-alloc, and
26861         global.  Modify entries about regmove and IRA.
26862
26863         * ra-conflict.c: Remove the file.
26864
26865         * reload.c (push_reload, find_dummy_reload): Remove flag_ira.
26866
26867         * tree-pass.h (pass_local_alloc, pass_global_alloc): Remove.
26868         (pass_regclass_init): Rename to pass_reginfo_init.
26869
26870         * cfgloopanal.c (estimate_reg_pressure_cost): Remove flag_ira.
26871
26872         * toplev.h (flag_ira): Remove.
26873
26874         * caller-save.c (setup_save_areas): Remove flag_ira.
26875
26876         * ira-color.c (ira_reuse_stack_slot, ira_mark_new_stack_slot): Ditto.
26877
26878         * global.c: Remove the file.
26879
26880         * opts.c (decode_options): Remove flag_ira.
26881
26882         * hard-reg-set.h (losing_caller_save_reg_set): Remove.
26883
26884         * regmove.c: Modify file description.
26885         (find_use_as_address, try_auto_increment): Define them only if
26886         AUTO_INC_DEC is defined.
26887         (replacement_quality, replace_in_call_usage, fixup_match_1,
26888         stable_and_no_regs_but_for_p): Remove.
26889         (reg_set_in_bb): Make it static.
26890         (regmove_optimize): Remove flag_ira and code which worked for
26891         !flag_ira.
26892
26893         * local-alloc.c: Remove the file.
26894
26895         * common.opt (fira): Remove.
26896
26897         * ira.c: Include except.h.
26898         (eliminable_regset): Move from global.c.
26899         (mark_elimination): Ditto.  Remove flag_ira.
26900         (reg_renumber, struct equivalence, reg_equiv, equiv_mem,
26901         equiv_mem_modified, validate_equiv_mem_from_store,
26902         validate_equiv_mem, equiv_init_varies_p, equiv_init_movable_p,
26903         contains_replace_regs, memref_referenced_p, memref_used_between_p,
26904         no_equiv, recorded_label_ref): Move from local-alloc.c.
26905         (update_equiv_regs): Ditto.  Make it static.
26906         (print_insn_chain, print_insn_chains): Move it from global.c.
26907         (pseudo_for_reload_consideration_p): Ditto.  Remove flag_ira.
26908         (build_insn_chain): Ditto.  Make it static.
26909         (ra_init_live_subregs): Move from ra-conflict.c.  Make it static.
26910         Rename to init_live_subregs.
26911         (gate_ira): Remove flag_ira.
26912
26913         * regclass.c: Rename reginfo.c.  Change file description.
26914         (FORBIDDEN_INC_DEC_CLASSES): Remove.
26915         (reg_class_superclasses, forbidden_inc_dec_class, in_inc_dec): Remove.
26916         (init_reg_sets_1): Remove code for evaluation of
26917         reg_class_superclasses and losing_caller_save_reg_set.
26918         (init_regs): Remove init_reg_autoinc.
26919         (struct costs, costs, init_cost, ok_for_index_p_nonstrict,
26920         ok_for_base_p_nonstrict): Remove.
26921         (regclass_init): Rename to reginfo_init.  Don't initialize init_cost.
26922         (pass_regclass_init): Rename to pass_reginfo_init.  Modify
26923         corresponding entries.
26924         (dump_regclass, record_operand_costs, scan_one_insn,
26925         init_reg_autoinc, regclass, record_reg_classes, copy_cost,
26926         record_address_regs, auto_inc_dec_reg_p): Remove.
26927         (gt-regclass.h): Rename to gt-reginfo.h.
26928
26929         * rtl.h (dump_global_regs, retry_global_alloc,
26930         build_insn_chain, dump_local_alloc, update_equiv_regs): Remove.
26931
26932         * Makefile.in (RA_H): Remove.
26933         (OBJS-common): Remove global.o, local-alloc.o, and ra-conflict.o.
26934         Rename regclass.o to reginfo.o.
26935         (regclass.o): Rename to reginfo.o.  Rename gt-regclass.h to
26936         gt-reginfo.h.
26937         (global.o, local-alloc.o, ra-conflict.o): Remove entries.
26938         (GTFILES): Rename regclass.c to reginfo.c.
26939
26940         * passes.c (init_optimization_passes): Remove pass_local_alloc and
26941         pass_global_alloc.  Rename pass_regclass_init to pass_reginfo_init.
26942
26943         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
26944         count_spilled_pseudo, find_reg, alter_reg, delete_output_reload):
26945         Remove flag_ira.
26946         (finish_spills): Ditto.  Remove code for !flag_ira.
26947
26948 2009-01-29  Kenneth Zadeck  <zadeck@naturalbridge.com>
26949
26950         PR middle-end/35854
26951         * doc/invoke.texi (rtl debug options): Complete rewrite.
26952         * auto-inc-dec.c (pass_inc_dec): Rename pass from "auto-inc-dec"
26953         to auto_inc_dec".
26954         * mode-switching.c (pass_mode_switching): Rename pass from
26955         "mode-sw" to "mode_sw".
26956         * except.c (pass_convert_to_eh_ranges): Rename pass from
26957         "eh-ranges" to "eh_ranges".
26958         * lower-subreg.c (pass_lower_subreg): Renamed pass from "subreg"
26959         to "subreg1".
26960
26961
26962 2009-01-29  Andrey Belevantsev  <abel@ispras.ru>
26963             Alexander Monakov  <amonakov@ispras.ru>
26964
26965         PR middle-end/38857
26966         * sel-sched.c (count_occurrences_1): Check that *cur_rtx is a hard
26967         register.
26968         (move_exprs_to_boundary): Change return type and pass through
26969         should_move from move_op.  Relax assert.  Update usage ...
26970         (schedule_expr_on_boundary): ... here.  Use should_move instead of
26971         cant_move.
26972         (move_op_orig_expr_found): Indicate that insn was disconnected from
26973         stream.
26974         (code_motion_process_successors): Do not call after_merge_succs
26975         callback if original expression was not found when traversing any of
26976         the branches.
26977         (code_motion_path_driver): Change return type.  Update prototype.
26978         (move_op): Update comment.  Add a new parameter (should_move).  Update
26979         prototype.  Set *should_move based on indication provided by
26980         move_op_orig_expr_found.
26981
26982 2009-01-28  Pat Haugen  <pthaugen@us.ibm.com>
26983
26984         * doc/invoke.texi (avoid-indexed-addresses): Document new option.
26985         * config/rs6000/rs6000-protos.h (avoiding_indexed_address_p): Declare.
26986         * config/rs6000/rs6000.opt (avoid-indexed-addresses): New option.
26987         * config/rs6000/rs6000.c (rs6000_override_options): Default
26988         avoid-indexed-addresses on for Power6, off for everything else.
26989         (avoiding_indexed_address_p): New function.
26990         (rs6000_legitimize_address): Use it.
26991         (rs6000_legitimate_address): Likewise.
26992         * config/rs6000/rs6000.md (movXX_updateX): Likewise
26993
26994 2009-01-28  Kazu Hirata  <kazu@codesourcery.com>
26995
26996         PR tree-optimization/38997
26997         * tree-loop-distribution.c (generate_memset_zero): Use
26998         POINTER_PLUS_EXPR for a pointer addition.
26999
27000 2009-01-28  Andreas Krebbel  <krebbel1@de.ibm.com>
27001
27002         * config/s390/s390.md (bswap<mode>2): New pattern added.
27003
27004 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
27005
27006         * config/s390/s390.md (*tls_load_31): Added type attribute.
27007
27008 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
27009
27010         * config/s390/s390.md: Fix a few comments.
27011
27012 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
27013
27014         * config/s390/s390.md (*tmsi_reg): Fixed z10prop attribute.
27015         (*tm<mode>_full): Fixed z10prop attribute.
27016         (*tst<mode>_extimm): Fixed z10prop attribute.
27017         (*tst<mode>_cconly_extimm): Fixed z10prop attribute.
27018         (*tstqiCCT_cconly): Fixed z10prop attribute.
27019         (*cmpsi_ccu_zerohi_rlsi): Fixed z10prop attribute.
27020         (*movsi_larl): Fixed z10prop attribute.
27021         (*movsi_zarch): Fixed z10prop attribute.
27022         (*movsi_eas): Fixed z10prop attribute.
27023         (*movhi): Fixed z10prop attribute.
27024         (*movqi): Fixed z10prop attribute.
27025         (*movstrictqi): Fixed z10prop attribute.
27026         (*mov<mode>): Fixed z10prop attribute.
27027         (*movcc): Fixed z10prop attribute.
27028         (*sethighpartdi_64): Fixed z10prop attribute.
27029         (*zero_extendhi<mode>2_z10): Fixed z10prop attribute.
27030         (*negdi2_sign_cc): Fixed z10prop attribute.
27031         (*negdi2_sign): Fixed z10prop attribute.
27032         (*absdi2_sign_cc): Fixed z10prop attribute.
27033         (*absdi2_sign): Fixed z10prop attribute.
27034         (*negabsdi2_sign_cc): Fixed z10prop attribute.
27035         (*negabsdi2_sign): Fixed z10prop attribute.
27036         (*cmp_and_trap_signed_int<mode>): Fixed z10prop attribute.
27037         (*cmp_and_trap_unsigned_int<mode>): Fixed z10prop attribute.
27038         (doloop_si64): Fixed z10prop attribute.
27039         (doloop_si31): Fixed z10prop attribute.
27040         (doloop_long): Fixed z10prop attribute.
27041         (indirect_jump): Fixed z10prop attribute.
27042         (nop): Fixed z10prop attribute.
27043         (main_base_64): Fixed z10prop attribute.
27044         (reload_base_64): Fixed z10prop attribute.
27045
27046 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
27047
27048         PR rtl-optimization/38740
27049         * reorg.c (gate_handle_delay_slots): Avoid dbr scheduling
27050         if !optimize.
27051         * config/mips/mips.c (mips_reorg): Likewise.
27052
27053 2009-01-28  Richard Guenther  <rguenther@suse.de>
27054
27055         PR tree-optimization/38926
27056         * tree-ssa-pre.c (add_to_value): Assert we add only expressions
27057         with the correct value id to a value.
27058         (do_regular_insertion): Use the value number of edoubleprime
27059         for the value number of the expr.
27060
27061         Revert
27062         2008-08-21  Richard Guenther  <rguenther@suse.de>
27063
27064         * tree-ssa-pre.c (insert_into_preds_of_block): Before inserting
27065         a PHI ask VN if it is already available.
27066         * tree-ssa-sccvn.h (vn_phi_lookup): Declare.
27067         * tree-ssa-sccvn.c (vn_phi_lookup): Export.
27068
27069 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
27070
27071         PR middle-end/38934
27072         * tree-vrp.c (extract_range_from_assert): For LE_EXPR and LT_EXPR
27073         set to varying whenever max has TREE_OVERFLOW set, similarly
27074         for GE_EXPR and GT_EXPR and TREE_OVERFLOW min.
27075
27076 2009-01-28  Richard Guenther  <rguenther@suse.de>
27077
27078         PR middle-end/38908
27079         * tree-ssa.c (warn_uninitialized_var): Do not warn for seemingly
27080         uninitialized aggregate uses in call arguments.
27081
27082 2009-01-28  Paolo Bonzini  <bonzini@gnu.org>
27083
27084         PR tree-optimization/38984
27085         * tree-ssa-structalias.c (get_constraints_for_1): Do not use
27086         the nothing_id variable if -fno-delete-null-pointer-checks.
27087
27088 2009-01-28  Uros Bizjak  <ubizjak@gmail.com>
27089
27090         PR target/38988
27091         * config/i386/i386.md (set_rip_rex64): Wrap operand 1 in label_ref.
27092         (set_got_offset_rex64): Ditto.
27093
27094 2009-01-27  H.J. Lu  <hongjiu.lu@intel.com>
27095
27096         PR target/38941
27097         * doc/extend.texi: Improve local variable with asm reg.
27098
27099 2009-01-27  Adam Nemet  <anemet@caviumnetworks.com>
27100
27101         * c.opt (Wpacked-bitfield-compat): Change init value to -1.
27102         * c-opts.c (c_common_post_options): If -W*packed-bitfield-compat
27103         was not supplied then set warn_packed_bitfield_compat to the
27104         default value of 1.
27105         * stor-layout.c (place_field): Check warn_packed_bitfield_compat
27106         against 1.
27107
27108 2009-01-27  Richard Guenther  <rguenther@suse.de>
27109
27110         PR tree-optimization/38503
27111         * cfgexpand.c (expand_gimple_basic_block): Ignore
27112         GIMPLE_CHANGE_DYNAMIC_TYPE during expansion.
27113         * tree-ssa-structalias.c (set_uids_in_ptset): Do not prune
27114         variables that cannot have TBAA applied.
27115         (compute_points_to_sets): Do not remove GIMPLE_CHANGE_DYNAMIC_TYPE
27116         statements.
27117
27118 2009-01-27  Uros Bizjak  <ubizjak@gmail.com>
27119
27120         PR middle-end/38969
27121         * calls.c (initialize_argument_information): Do not wrap complex
27122         arguments in SAVE_EXPR.
27123
27124 2009-01-26  Andreas Tobler  <a.tobler@schweiz.org>
27125
27126         * config/t-vxworks (LIBGCC2_INCLUDES): Fix typo.
27127         (INSTALL_LIBGCC): Revert typo commit.
27128
27129 2009-01-26  Richard Guenther  <rguenther@suse.de>
27130
27131         PR tree-optimization/38745
27132         * tree-ssa-alias.c (update_alias_info_1): Exclude RESULT_DECL
27133         from special handling.
27134
27135 2009-01-26  Richard Guenther  <rguenther@suse.de>
27136
27137         PR tree-optimization/38745
27138         * tree-ssa.c (execute_update_addresses_taken): Do not include
27139         variables that cannot possibly be a register in not_reg_needs.
27140         Do not clear TREE_ADDRESSABLE on vars that may not become
27141         registers.
27142         * tree-ssa.c (update_alias_info_1): Include those in the set
27143         of addressable vars.
27144
27145 2009-01-26  Richard Guenther  <rguenther@suse.de>
27146
27147         PR middle-end/38851
27148         * Makefile.in (tree-ssa-dse.o): Add langhooks.h.
27149         * tree-ssa-dse.c: Include langhooks.h
27150         (execute_simple_dse): Remove stores with zero size.
27151
27152 2009-01-24  Jakub Jelinek  <jakub@redhat.com>
27153
27154         PR c/38957
27155         * c-typeck.c (c_finish_return): Handle POINTER_PLUS_EXPR the same way
27156         as PLUS_EXPR.
27157
27158 2009-01-24  Julian Brown  <julian@codesourcery.com>
27159
27160         * config/arm/t-linux-eabi (LIB2FUNCS_STATIC_EXTRA): Add
27161         config/arm/linux-atomic.c.
27162         * config/arm/linux-atomic.c: New.
27163
27164 2009-01-24  Eric Botcazou  <ebotcazou@adacore.com>
27165
27166         * config/sparc/linux.h (DBX_REGISTER_NUMBER): Delete.
27167         * config/sparc/linux64.h (DBX_REGISTER_NUMBER): Likewise.
27168         * config/sparc/sysv4.h (DBX_REGISTER_NUMBER): Likewise.
27169
27170 2009-01-24  H.J. Lu  <hongjiu.lu@intel.com>
27171
27172         PR c/38938
27173         * c-opts.c (c_common_handle_option): Update warn_pointer_sign
27174         properly.
27175
27176 2009-01-24  Sebastian Pop  <sebastian.pop@amd.com>
27177
27178         PR tree-optimization/38953
27179         * graphite.c (graphite_verify): Add a call to verify_loop_closed_ssa.
27180         (scop_adjust_phis_for_liveouts): Initialize false_i to zero.
27181         (gloog): Split the exit of the scop when the scop exit is a loop exit.
27182         (graphite_transform_loops): Only call cleanup_tree_cfg if gloog
27183         changed the CFG.
27184
27185 2009-01-24  Paul Brook  <paul@codesourcery.com>
27186
27187         * config/arm/neon.md (neon_type): Move to arm.md.
27188         (neon_mov<VSTRUCT>): Add neon_type attribute.
27189         * config/arm/arm.md (neon_type): Move to here.
27190         (conds): Add "unconditioal" and use as default for NEON insns.
27191
27192 2009-01-24  Ben Elliston  <bje@au.ibm.com>
27193
27194         * bitmap.h (BITMAP_FREE): Eliminate `implicit conversion from
27195         void *' warning from -Wc++-compat.
27196         * Makefile.in (dominance.o-warn): Remove.
27197
27198 2009-01-23  Paolo Bonzini  <bonzini@gnu.org>
27199
27200         PR tree-optimization/38932
27201         * fold-const.c (fold_unary_ignore_overflow): New.
27202         * tree.h (fold_unary_ignore_overflow): Declare.
27203         * tree-ssa-ccp.c (ccp_fold): Use fold_unary_ignore_overflow.
27204         * tree-ssa-sccvn.c (visit_reference_op_load,
27205         simplify_unary_expression): Likewise.
27206
27207 2009-01-22  Adam Nemet  <anemet@caviumnetworks.com>
27208
27209         * c-decl.c (finish_struct): Move code to set DECL_PACKED after
27210         DECL_BIT_FIELD is alreay known.  Also inherit packed for bitfields
27211         regardless of their type.
27212         * c-common.c (handle_packed_attribute): Don't ignore packed on
27213         bitfields.
27214         * c.opt (Wpacked-bitfield-compat): New warning option.
27215         * stor-layout.c (place_field): Warn if offset of a field changed.
27216         * doc/extend.texi (packed): Mention the ABI change.
27217         * doc/invoke.texi (-Wpacked-bitfield-compat): Document.
27218         (Warning Options): Add it to the list.
27219
27220 2009-01-22  H.J. Lu  <hongjiu.lu@intel.com>
27221
27222         * c-opts.c (c_common_post_options): Fix a typo in comments.
27223
27224 2009-01-22  Steve Ellcey  <sje@cup.hp.com>
27225
27226         PR middle-end/38615
27227         * gimplify.c (gimplify_init_constructor): Fix promotion of const
27228         variables to static.
27229         * doc/invoke.texi (-fmerge-all-constants): Update description.
27230
27231 2009-01-22  Uros Bizjak  <ubizjak@gmail.com>
27232
27233         PR target/38931
27234         * config/i386/i386.md (*movsi_1): Use type "mmx" for alternative 2.
27235         (*movdi_1_rex64): Use type "mmx" for alternative 5.
27236
27237 2009-01-22  Richard Earnshaw  <rearnsha@arm.com>
27238
27239         * arm.h (DATA_ALIGNMENT): Align structures, unions and arrays to
27240         a word boundary.
27241         (LOCAL_ALIGNMENT): Similarly.
27242
27243 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
27244             Joseph Myers  <joseph@codesourcery.com>
27245
27246         * config/arm/arm.c (all_architectures): Add iWMMXt2 entry.
27247         * config/arm/arm-cores.def: New ARM_CORE entry for iWMMXt2.
27248         * config/arm/arm-tune.md: Regenerate.
27249         * doc/invoke.texi (ARM Options): Document -mcpu=iwmmxt2 and
27250         -march=iwmmxt2.
27251
27252 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
27253
27254         * config/arm/bpabi.h (SUBTARGET_EXTRA_ASM_SPEC): Bump EABI
27255         version number to five.
27256
27257 2009-01-22  Dodji Seketeli  <dodji@redhat.com>
27258
27259         PR c++/38930
27260         * c-decl.c (clone_underlying_type): Revert PR c++/26693 changes.
27261         * c-common.c (set_underlying_type): Likewise.
27262         (is_typedef_decl ): Likewise
27263         * tree.h: Likewise
27264         (set_underlying_type): Likewise.
27265         (is_typedef_type): Likewise.
27266
27267 2009-01-21  Vladimir Makarov  <vmakarov@redhat.com>
27268
27269         PR middle-end/38587
27270         * ira-color.c (coalesce_spill_slots): Don't coalesce allocnos
27271         crossing setjmps.
27272
27273 2009-01-21  Dave Korn  <dave.korn.cygwin@gmail.com>
27274
27275         PR bootstrap/37660
27276         * config/i386/cygwin.h (SHARED_LIBGCC_SPEC):  New helper macro.
27277         (LIBGCC_SPEC):  Don't define.
27278         (REAL_LIBGCC_SPEC):  Define instead, using SHARED_LIBGCC_SPEC.
27279
27280 2009-01-21  Uros Bizjak  <ubizjak@gmail.com>
27281
27282         PR rtl-optimization/38879
27283         * alias.c (base_alias_check): Unaligned access via AND address can
27284         alias all surrounding object types except those with sizes equal
27285         or wider than the size of unaligned access.
27286
27287 2009-01-21  Dodji Seketeli  <dodji@redhat.com>
27288
27289         PR c++/26693
27290         * c-decl.c (clone_underlying_type): Move this ...
27291         * c-common.c (set_underlying_type): ... here.
27292         Also, make sure the function properly sets TYPE_STUB_DECL() on
27293         the newly created typedef variant type.
27294         (is_typedef_decl ): New entry point.
27295         * tree.h: Added a new member member_types_needing_access_check to
27296         struct tree_decl_non_common.
27297         (set_underlying_type): New entry point.
27298         (is_typedef_type): Likewise.
27299
27300 2009-01-21  Bingfeng Mei  <bmei@broadcom.com>
27301
27302         * alias.c (walk_mems_1, walk_mems_2, insn_alias_sets_conflict_p):
27303         Check whether two instructions have memory references that
27304         belong to conflicting alias sets.  walk_mems_1 and walk_mems_2
27305         are helper functions for traversing.
27306         * alias.h (insn_alias_sets_confilict_p): New prototypes.
27307         * ddg.c (add_inter_loop_mem_dep): Call insn_alias_sets_conflict_p
27308         not to draw dependency edge for instructions with non-conflicting
27309         alias sets.
27310
27311 2009-01-20  Joseph Myers  <joseph@codesourcery.com>
27312
27313         PR other/38758
27314         * longlong.h: Update copyright years.  Use soft-fp license notice.
27315         Sync __clz_tab declaration with glibc.
27316
27317 2009-01-20  Steve Ellcey  <sje@cup.hp.com>
27318
27319         PR target/30687
27320         * doc/extend.texi (syscall_linkage): New.
27321         (version_id): Modify.
27322
27323 2009-01-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
27324             Richard Guenther  <rguenther@suse.de>
27325
27326         PR tree-optimization/38747
27327         PR tree-optimization/38748
27328         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Disable the VCE
27329         conversion if the base address is an indirect reference and the
27330         aliasing sets could cause issues.
27331
27332 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
27333
27334         * common.opt (fgraphite, fgraphite-identity): Add comment for
27335         explaining why these options are not documented.
27336
27337 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
27338
27339         * graphite.c (stmt_simple_for_scop_p): Also handle cases when
27340         gimple_call_lhs is NULL.
27341
27342 2009-01-20  Paolo Bonzini  <bonzini@gnu.org>
27343
27344         PR target/38868
27345         * emit-rtl.c (adjust_address_1): Make sure memref is never
27346         overwritten.
27347
27348 2009-01-20  Ben Elliston  <bje@au.ibm.com>
27349
27350         * libgcov.c (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
27351         const qualifier from arg parameter. Remove unnecessary cast to char *.
27352         * gcov-io.h (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
27353         const qualifier from arg 2.
27354
27355 2009-01-19  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
27356
27357         * config/darwin.h: Add static-libgfortran to LINK_SPEC.
27358
27359 2009-01-19  Vladimir Makarov  <vmakarov@redhat.com>
27360
27361         PR c/38869
27362         * rtl.h (reinit_regs): New prototype.
27363         * regclass.c: Include ira.h.
27364         (reinit_regs): New.
27365         * Makefile.in (regclass.o): Add ira.h.
27366         * config/i386/i386.c (ix86_maybe_switch_abi): Use reinit_regs.
27367
27368 2009-01-18  H.J. Lu  <hongjiu.lu@intel.com>
27369
27370         PR target/38736
27371         * c-common.c (handle_aligned_attribute): Use
27372         ATTRIBUTE_ALIGNED_VALUE instead of BIGGEST_ALIGNMENT for
27373         default alignment value.
27374
27375         * c-cppbuiltin.c (c_cpp_builtins): Define __BIGGEST_ALIGNMENT__.
27376
27377         * defaults.h (ATTRIBUTE_ALIGNED_VALUE): New.
27378         * config/i386/i386.h (ATTRIBUTE_ALIGNED_VALUE): Likewise.
27379
27380         * doc/extend.texi: Update __attribute__ ((aligned)).  Document
27381         __BIGGEST_ALIGNMENT__.
27382
27383         * doc/tm.texi: Document ATTRIBUTE_ALIGNED_VALUE.
27384
27385 2009-01-18  Richard Guenther  <rguenther@suse.de>
27386
27387         PR tree-optimization/38819
27388         * tree-flow.h (operation_could_trap_helper_p): Declare.
27389         * tree-eh.c (operation_could_trap_helper_p): Export.
27390         * tree-ssa-sccvn.h (vn_nary_may_trap): Declare.
27391         * tree-ssa-sccvn.c (vn_nary_may_trap): New function.
27392         * tree-ssa-pre.c (insert_into_preds_of_block): Check if we
27393         are about to insert a possibly trapping instruction and fail
27394         in this case.
27395
27396 2009-01-18  Andreas Schwab  <schwab@suse.de>
27397
27398         * doc/install.texi (Configuration): Remove obsolete paragraph
27399         about use of --with-gnu-ld with --with-gnu-as.
27400
27401 2009-01-18  Kazu Hirata  <kazu@codesourcery.com>
27402
27403         * doc/extend.texi, doc/gimple.texi, doc/invoke.texi,
27404         doc/md.texi, doc/sourcebuild.texi, doc/tm.texi: Fix typos.
27405         Follow spelling conventions.
27406
27407 2009-01-18  Ben Elliston  <bje@au.ibm.com>
27408
27409         * bitmap.c (bitmap_obstack_alloc_stat): Adjust cast to eliminate
27410         C++ warning about implicit conversion from void * to struct
27411         bitmap_head_def *.
27412         (bitmap_obstack_free): Likewise for bitmap_element *.
27413         * Makefile.in (bitmap.o-warn): Remove.
27414
27415 2009-01-17  Dave Korn  <dave.korn.cygwin@gmail.com>
27416
27417         * Makefile.in (BACKENDLIBS):  Reorder to match dependencies.
27418
27419 2009-01-17  Sebastian Pop  <sebastian.pop@amd.com>
27420             Tobias Grosser  <tobi.grosser@amd.com>
27421
27422         * graphite.c (graphite_trans_scop_block): Do not block single
27423         nested loops.
27424
27425 2009-01-16  Alexandre Oliva  <aoliva@redhat.com>
27426
27427         * ebitmap.h (ebitmap_iter_init): Initialize all fields.
27428         * ipa-struct-reorg.c (gen_struct_type): Replace known-true
27429         test with assertion.
27430
27431 2009-01-16  Richard Guenther  <rguenther@suse.de>
27432
27433         PR tree-optimization/38835
27434         PR middle-end/36227
27435         * fold-const.c (fold_binary): Remove PTR + INT -> (INT)(PTR p+ INT)
27436         and INT + PTR -> (INT)(PTR p+ INT) folding.
27437         * tree-ssa-address.c (create_mem_ref): Properly use POINTER_PLUS_EXPR.
27438
27439 2009-01-16  Adam Nemet  <anemet@caviumnetworks.com>
27440
27441         PR target/38554
27442         * expmed.c (expand_shift): With SHIFT_COUNT_TRUNCATED, don't lift
27443         the subreg from a lowpart subreg if it is also casting the value.
27444
27445 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
27446             Tobias Grosser  <tobi.grosser@amd.com>
27447
27448         * graphite.c (compare_prefix_loops): New.
27449         (build_scop_canonical_schedules): Rewritten.
27450         (graphite_transform_loops): Move build_scop_canonical_schedules
27451         after build_scop_iteration_domain.
27452
27453 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
27454             Tobias Grosser  <tobi.grosser@amd.com>
27455
27456         * graphite.c (add_conditions_to_domain): Add the loops to
27457         the dimension of the iteration domain.  Do copy the domain
27458         only when it exists.
27459         (build_scop_conditions_1): Do not call add_conditions_to_domain.
27460         (add_conditions_to_constraints): New.
27461         (can_generate_code_stmt, can_generate_code): Removed.
27462         (gloog): Do not call can_generate_code.
27463         (graphite_transform_loops): Call add_conditions_to_constraints
27464         after building the iteration domain.
27465
27466 2009-01-16  Jakub Jelinek  <jakub@redhat.com>
27467
27468         PR tree-optimization/38789
27469         * tree-ssa-threadedge.c
27470         (record_temporary_equivalences_from_stmts_at_dest): Ignore calls to
27471         __builtin_constant_p.
27472
27473 2009-01-16  Kenneth Zadeck  <zadeck@naturalbridge.com>
27474
27475         * dce.c (delete_unmarked_insns): Reversed the order that insns are
27476         examined before deleting them.
27477
27478 2009-01-16  Richard Earnshaw  <rearnsha@arm.com>
27479
27480         * function.c (aggregate_value_p): Correctly extract the function
27481         type from CALL_EXPR_FN lookup.
27482
27483 2009-01-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
27484
27485         * config/picochip/picochip.c (picochip_override_options): Revert
27486         CFI asm flag disable commited previously.
27487
27488 2009-01-15  Sebastian Pop  <sebastian.pop@amd.com>
27489             Tobias Grosser  <tobi.grosser@amd.com>
27490             Jan Sjodin  <jan.sjodin@amd.com>
27491
27492         * graphite.c (scan_tree_for_params): On substractions negate
27493         all the coefficients of the term.
27494         (clast_to_gcc_expression_red): New.  Handle reduction expressions
27495         of more than two operands.
27496         (clast_to_gcc_expression): Call clast_to_gcc_expression_red.
27497         (get_vdef_before_scop): Handle also the case of default definitions.
27498
27499 2009-01-15  Richard Sandiford  <rdsandiford@googlemail.com>
27500
27501         * caller-save.c (add_used_regs_1, add_used_regs): New functions.
27502         (insert_one_insn): Use them instead of REG_DEAD and REG_INC notes.
27503         Also use them when walking CALL_INSN_FUNCTION_USAGE.
27504
27505 2009-01-15  H.J. Lu  <hongjiu.lu@intel.com>
27506             Joey Ye  <joey.ye@intel.com>
27507
27508         PR middle-end/37843
27509         * cfgexpand.c (expand_stack_alignment): Don't update stack
27510         boundary nor check incoming stack boundary here.
27511         (gimple_expand_cfg): Update stack boundary and check incoming
27512         stack boundary here.
27513
27514 2009-01-15  Kenneth Zadeck  <zadeck@naturalbridge.com>
27515
27516         * dce.c (find_call_stack_args, delete_unmarked_insns): Fixed comments.
27517
27518 2009-01-14  Jakub Jelinek  <jakub@redhat.com>
27519
27520         PR rtl-optimization/38245
27521         * calls.c (expand_call): Add stack arguments to
27522         CALL_INSN_FUNCTION_USAGE even for pure calls (when
27523         ACCUMULATE_OUTGOING_ARGS) and even for args partially passed
27524         in regs and partially in memory or BLKmode arguments.
27525         (emit_library_call_value_1): Add stack arguments to
27526         CALL_INSN_FUNCTION_USAGE even for pure calls (when
27527         ACCUMULATE_OUTGOING_ARGS).
27528         * dce.c: Include tm_p.h.
27529         (find_call_stack_args): New function.
27530         (deletable_insn_p): Call it for CALL_P insns.  Add ARG_STORES
27531         argument.
27532         (mark_insn): Call find_call_stack_args for CALL_Ps.
27533         (prescan_insns_for_dce): Walk insns backwards in bb rather than
27534         forwards.  Allocate and free arg_stores bitmap if needed, pass it
27535         down to deletable_insn_p, don't mark stores set in arg_stores
27536         bitmap, clear the bitmap at the beginning of each bb.
27537         * Makefile.in (dce.o): Depend on $(TM_P_H).
27538
27539 2009-01-14  Michael Meissner  <gnu@the-meissners.org>
27540
27541         PR target/22599
27542         * config/i386/i386.c (print_operand): Add tests for 'D', 'C', 'F', 'f'
27543         to make sure the insn is a conditional test (bug 22599).  Reformat a
27544         few long lines.
27545
27546 2009-01-14  Sebastian Pop  <sebastian.pop@amd.com>
27547
27548         PR middle-end/38431
27549         * graphite.c (get_vdef_before_scop, scop_adjust_vphi): New.
27550         (scop_adjust_phis_for_liveouts): Call scop_adjust_vphi.
27551         (gloog): Do not call cleanup_tree_cfg.
27552         (graphite_transform_loops): Call cleanup_tree_cfg after all
27553         scops have been code generated.
27554
27555 2009-01-14  Basile Starynkevitch  <basile@starynkevitch.net>
27556         * doc/gty.texi (Invoking the garbage collector): Added new node
27557         and section documenting ggc_collect.
27558
27559 2009-01-14  Richard Guenther  <rguenther@suse.de>
27560
27561         PR tree-optimization/38826
27562         PR middle-end/38477
27563         * tree-ssa-structalias.c (emit_alias_warning): Emit the pointer
27564         initialization notes only if we actually emitted a warning.
27565         (intra_create_variable_infos): Add constraints for a result decl
27566         that is passed by hidden reference.
27567         (build_pred_graph): Mark all related variables non-direct on
27568         address-taking.
27569
27570 2009-01-14  Nick Clifton  <nickc@redhat.com>
27571
27572         * ira-conflicts.c: Include addresses.h for the definition of
27573         base_reg_class.
27574         (ira_build_conflicts): Use base_reg_class instead of BASE_REG_CLASS.
27575         * Makefile.in: Add a dependency of ira-conflicts.o on addresses.h.
27576
27577 2009-01-13  Vladimir Makarov  <vmakarov@redhat.com>
27578
27579         PR target/38811
27580         * Makefile.in (ira-lives.o): Add except.h.
27581
27582         * ira-lives.c: Include except.h.
27583         (process_bb_node_lives): Process can_throw_internal.
27584
27585 2009-01-13  Jakub Jelinek  <jakub@redhat.com>
27586
27587         PR rtl-optimization/38774
27588         * combine.c (simplify_set): When undoing cc_use change, don't do
27589         PUT_CODE on the newly created comparison, but instead put back the
27590         old comparison.
27591
27592 2009-01-13  Joseph Myers  <joseph@codesourcery.com>
27593
27594         * doc/invoke.texi (ARM Options): Update lists of -mcpu and -march
27595         values.  Remove duplicate arm8 entry.
27596
27597 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
27598
27599         PR tree-optimization/38786
27600         * graphite.c (expand_scalar_variables_ssa_name): New, outlined from
27601         the SSA_NAME case of expand_scalar_variables_expr.
27602         Set the type of an expression to the type of its assign statement.
27603         (expand_scalar_variables_expr): Also gather the scalar computation
27604         used to index the memory access.  Do not pass loop_p.
27605         Fix comment.  Stop recursion on tcc_constant or tcc_declaration.
27606         (expand_scalar_variables_stmt): Pass to expand_scalar_variables_expr
27607         the gimple_stmt_iterator where it inserts new code.
27608         Do not pass loop_p.
27609         (copy_bb_and_scalar_dependences): Do not pass loop_p.
27610         (translate_clast): Update call to copy_bb_and_scalar_dependences.
27611
27612 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
27613
27614         * graphite.h (debug_value): Removed.
27615         * graphite.c (debug_value): Removed.
27616
27617 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
27618
27619         * config/arm/arm.c (output_move_double): Don't synthesize thumb-2
27620         ldrd/strd with two 32-bit instructions.
27621
27622 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
27623
27624         * config/arm/arm.c (struct processors): Pass for speed down into
27625         cost helper functions.
27626         (const_ok_for_op): Handle COMPARE and inequality nodes.
27627         (arm_rtx_costs_1): Rewrite.
27628         (arm_size_rtx_costs): Update prototype.
27629         (arm_rtx_costs): Pass speed down to helper functions.
27630         (arm_slowmul_rtx_costs): Rework cost calculations.
27631         (arm_fastmul_rtx_costs, arm_xscale_rtx_costs): Likewise.
27632         (arm_9e_rtx_costs): Likewise.
27633
27634 2009-01-13  Uros Bizjak  <ubizjak@gmail.com>
27635
27636         * config/alpha/alpha.c (alpha_legitimate_address_p): Explicit
27637         relocations of local symbols wider than UNITS_PER_WORD are not valid.
27638         (alpha_legitimize_address): Do not split local symbols wider than
27639         UNITS_PER_WORD into HIGH/LO_SUM parts.
27640
27641 2009-01-13  Danny Smith  <dannysmith@users.sourceforge.net>
27642
27643         PR bootstrap/38580
27644         * gcc.c (process_command): Replace call to execvp with calls
27645         to pex_one and exit.
27646
27647 2009-01-03  Anatoly Sokolov  <aesok@post.ru>
27648
27649         PR target/29141
27650         * config/avr/t-avr (LIB1ASMFUNCS): Add _tablejump_elpm.
27651         * config/avr/libgcc.S (__do_global_ctors, __do_global_dtors): Add
27652         variant for devices with 3-byte PC.
27653         (__tablejump_elpm__): New.
27654
27655 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
27656
27657         PR c/32041
27658         * c-parser.c (c_parser_postfix_expression): Allow `->' in
27659         offsetof member-designator, handle it as `[0].'.
27660
27661 2009-01-12  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
27662
27663         * pa.c (pa_asm_output_mi_thunk): Use pc-relative branch to thunk
27664         function when not using named sections on targets with named sections
27665         if branch distance is less than 262132.
27666
27667 2009-01-12  Richard Earnshaw  <rearnsha@arm.com>
27668
27669         * combine.c (combine_instructions):  Recompute
27670         optimize_this_for_speed_p  for each BB in the main combine loop.
27671
27672 2009-01-12  Tomas Bily  <tbily@suse.cz>
27673
27674         PR middlend/38385
27675         * tree-loop-distribution.c (prop_phis): New function.
27676         (generate_builtin): Call prop_phis.
27677
27678 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
27679
27680         PR tree-optimization/38807
27681         * tree-ssa-reassoc.c (remove_visited_stmt_chain): Don't look at
27682         gimple_visited_p unless stmt is GIMPLE_ASSIGN.
27683
27684 2009-01-11  Adam Nemet  <anemet@caviumnetworks.com>
27685
27686         * expmed.c (store_bit_field_1): Properly truncate the paradoxical
27687         subreg of op0 to the original op0.
27688
27689 2009-01-11  Laurent GUERBY  <laurent@guerby.net>
27690
27691         * doc/sourcebuild.texi (Source Tree): Move up intl and fixinc.
27692
27693 2009-01-11  Markus Schoepflin  <markus.schoepflin@comsoft.de>
27694
27695         PR debug/7055
27696         * mips-tfile.c (parse_def): Fix parsing of def strings
27697         starting with digits.
27698
27699 2009-01-10  Jakub Jelinek  <jakub@redhat.com>
27700
27701         PR target/38695
27702         * config/arm/arm.c (arm_is_long_call_p): Don't call
27703         arm_function_in_section_p if decl isn't a FUNCTION_DECL.
27704
27705 2009-01-09  Steven Bosscher  <steven@gcc.gnu.org>
27706
27707         * regrename.c (regrename_optimize): Fix dumping.
27708         (find_oldest_value_reg): Preserve REG_POINTER.
27709         (copy_hardreg_forward_1): Likewise.
27710
27711 2009-01-09  Diego Novillo  <dnovillo@google.com>
27712
27713         * gimple.h (struct gimple_statement_base) <uid>: Document
27714         the restrictions on its use.
27715         (gimple_uid): Tidy.
27716         (gimple_set_uid): Tidy.
27717
27718 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
27719
27720         * config/i386/i386.c (ix86_expand_movmem, ix86_expand_setmem): Add
27721         zero guard even if align_bytes != 0 and count is smaller than
27722         size_needed.
27723
27724 2009-01-09  Vladimir Makarov  <vmakarov@redhat.com>
27725
27726         PR rtl-optimization/38495
27727         * ira-emit.c (print_move_list, ira_debug_move_list): New functions.
27728         (add_range_and_copies_from_move_list): Print all added ranges.
27729         Add ranges to memory optimized destination.
27730
27731 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
27732
27733         PR target/38686
27734         PR target/38708
27735         * config/i386/i386.c (override_options): Reject
27736         -mstringop-strategy=rep_8byte with -m32.
27737         (ix86_expand_movmem): For size_needed == 1 set epilogue_size_needed
27738         to 1.  Do count comparison against epilogue_size_needed at compile
27739         time even when count_exp was constant forced into register.  For
27740         size_needed don't jump to epilogue, instead just avoid aligning
27741         and invoke the body algorithm.  If need_zero_guard, add zero guard
27742         even if count is non-zero, but smaller than size_needed + number of
27743         bytes that could be stored for alignment.
27744         (ix86_expand_setmem): For size_needed == 1 set epilogue_size_needed
27745         to 1.  If need_zero_guard, add zero guard even if count is non-zero,
27746         but smaller than size_needed + number of bytes that could be stored
27747         for alignment.  Compare size_needed with epilogue_size_needed instead
27748         of desired_align - align, don't adjust size_needed, pass
27749         epilogue_size_needed to the epilogue expanders.
27750
27751         PR c/35742
27752         * c-pretty-print.c (pp_c_expression): Handle GOTO_EXPR like BIND_EXPR.
27753
27754 2009-01-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
27755
27756         * pa.c (last_address): Change to unsigned.
27757         (update_total_code_bytes): Change argument to unsigned.  Don't
27758         check if insn addresses are set.
27759         (pa_output_function_epilogue): Set last_address to UINT_MAX if insn
27760         addresses are not set.
27761         (pa_asm_output_mi_thunk): Handle wrap when updating last_address.
27762
27763 2009-01-09  Nick Clifton  <nickc@redhat.com>
27764
27765         * config/sh/symbian.c: Replace uses of DECL_INLINE with
27766         DECL_DECLARED_INLINE_P.
27767
27768 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
27769
27770         PR middle-end/38347
27771         * dojump.c (do_jump_by_parts_zero_rtx): Use mode instead of
27772         GET_MODE (op0) in operand_subword_force calls.
27773
27774         PR middle-end/38771
27775         * fold-const.c (fold_unary): For COMPOUND_EXPR and COND_EXPR,
27776         fold_convert arg0 operands to TREE_TYPE (op0) first.
27777
27778 2009-01-08  Vladimir Makarov  <vmakarov@redhat.com>
27779
27780         * params.def (ira-max-conflict-table-size): Decrease default value
27781         to 1000.
27782
27783 2009-01-08  Jakub Jelinek  <jakub@redhat.com>
27784
27785         PR tree-optimization/37031
27786         * lambda-code.c (lambda_collect_parameters): Call pointer_set_destroy
27787         on parameter_set.
27788         (build_access_matrix): Reserve correct size for AM_MATRIX vector,
27789         allocate it using gc instead of heap, use VEC_quick_push instead of
27790         VEC_safe_push.
27791         * graphite.c (build_access_matrix): Allocate AM_MATRIX vector using gc
27792         instead of heap, use VEC_quick_push instead of VEC_safe_push.
27793         * tree-data-ref.h (struct access_matrix): Change matrix to gc
27794         allocated vector from heap allocated.
27795         * lambda.h: Add DEF_VEC_ALLOC_P for gc allocated lambda_vector.
27796         * tree-loop-linear.c (linear_transform_loops): Allocate nest
27797         vector only after perfect_loop_nest_depth call.
27798
27799 2009-01-08  Sebastian Pop  <sebastian.pop@amd.com>
27800             Jan Sjodin  <jan.sjodin@amd.com>
27801
27802         PR tree-optimization/38559
27803         * graphite.c (debug_value, copy_constraint,
27804         swap_constraint_variables, scale_constraint_variable, ): New.
27805         (get_lower_bound, get_upper_bound): Removed.
27806         (graphite_trans_bb_strip_mine): Clean up this code that works
27807         only for constant number of iterations.  Fully copy upper and
27808         lower bound constraints, not only the constant part of them.
27809         * graphite.h (debug_value): Declared.
27810
27811 2009-01-08  Ira Rosen  <irar@il.ibm.com>
27812
27813         PR tree-optimization/37194
27814         * tree-vect-transform.c (vect_estimate_min_profitable_iters):
27815         Don't add the cost of cost model guard in prologue to scalar
27816         outside cost in case of known number of iterations.
27817
27818 2009-01-07  Nathan Froyd  <froydnj@codesourcery.com>
27819             Alan Modra  <amodra@bigpond.net.au>
27820
27821         * config/rs6000/rs6000.c (rs6000_legitimize_address): Check for
27822         non-word-aligned REG+CONST addressing.
27823
27824 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
27825
27826         PR target/38706
27827         * config/alpha/alpha.c (alpha_end_function): For TARGET_ABI_OSF, call
27828         free_after_compilation when outputting a thunk.
27829         (alpha_output_mi_thunk_osf): Assert that we are processing a thunk.
27830         Do not call free_after_compilation here.
27831
27832 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
27833
27834         * config/i386/i386.c (ix86_target_string): Use ARRAY_SIZE.
27835         (ix86_valid_target_attribute_inner_p): Ditto.
27836
27837 2009-01-07  Jan Sjodin  <jan.sjodin@amd.com>
27838
27839         PR tree-optimization/38492
27840         PR tree-optimization/38498
27841         * tree-check.c (operator_is_linear, scev_is_linear_expression): New.
27842         * tree-chrec.h (scev_is_linear_expression): Declared.
27843         * graphite.c (graphite_cannot_represent_loop_niter): New.
27844         (scopdet_basic_block_info): Call graphite_cannot_represent_loop_niter.
27845         (graphite_loop_normal_form): Use gcc_assert.
27846         (scan_tree_for_params): Use CASE_CONVERT.
27847         (phi_node_is_iv, bb_contains_non_iv_scalar_phi_nodes): New.
27848         (build_scop_conditions_1): Call bb_contains_non_iv_scalar_phi_nodes.
27849         Use gcc_assert.  Discard scops that contain unhandled cases.
27850         (build_scop_conditions): Return a boolean status for unhandled cases.
27851         (strip_mine_profitable_p): Print the loop number, not its depth.
27852         (is_interchange_valid): Pass the depth of the loop nest, don't
27853         recompute it wrongly.
27854         (graphite_trans_bb_block): Same.
27855         (graphite_trans_bb_block): Print tentative of loop blocking.
27856         (graphite_trans_scop_block): Do not print that the loop has been
27857         blocked.
27858         (graphite_transform_loops): Do not handle scops that contain condition
27859         scalar phi nodes.
27860
27861 2009-01-07  H.J. Lu  <hongjiu.lu@intel.com>
27862
27863         AVX Programming Reference (December, 2008)
27864         * config/i386/avxintrin.h (_mm256_stream_si256): New.
27865         (_mm256_stream_pd): Likewise.
27866         (_mm256_stream_ps): Likewise.
27867
27868         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MOVNTDQ256,
27869         IX86_BUILTIN_MOVNTPD256 and IX86_BUILTIN_MOVNTPS256.
27870         (ix86_special_builtin_type): Add VOID_FTYPE_PV4DI_V4DI.
27871         (bdesc_special_args): Add __builtin_ia32_movntdq256,
27872         __builtin_ia32_movntpd256 and __builtin_ia32_movntps256.
27873         (ix86_init_mmx_sse_builtins): Handle VOID_FTYPE_PV4DI_V4DI.
27874         (ix86_expand_special_args_builtin): Likewise.
27875
27876         * config/i386/sse.md (AVXMODEDI): New.
27877         (avx_movnt<mode>): Likewise.
27878         (avx_movnt<mode>): Likewise.
27879         (<sse>_movnt<mode>): Remove AVX support.
27880         (sse2_movntv2di): Likewise.
27881
27882 2009-01-07  Richard Guenther  <rguenther@suse.de>
27883
27884         PR middle-end/38751
27885         * fold-const.c (extract_muldiv): Remove obsolete comment.
27886         (fold_plusminus_mult_expr): Undo MINUS_EXPR
27887         to PLUS_EXPR canonicalization for the canonicalization.
27888
27889 2009-01-07  Gerald Pfeifer  <gerald@pfeifer.com>
27890
27891         * doc/install.texi (alpha*-dec-osf*): Remove note on 32-bit
27892         hosted cross-compilers generating less efficient code.
27893
27894 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
27895
27896         * function.h (rtl_data): Add a dbr_scheduled_p field.
27897         * reorg.c (dbr_schedule): Set it.
27898         (gate_handle_delay_slots): Check it.
27899         * config/mips/mips.c (mips_base_delayed_branch): Delete.
27900         (mips_reorg): Check flag_delayed_branch instead of
27901         mips_base_delayed_branch.
27902         (mips_override_options): Don't set mips_base_delayed_branch
27903         or flag_delayed_branch.
27904
27905 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
27906
27907         PR rtl-optimization/38426.
27908         * ira.c (ira): Set current_function_is_leaf earlier.
27909
27910 2009-01-06  Jakub Jelinek  <jakub@redhat.com>
27911
27912         PR rtl-optimization/38722
27913         * combine.c (try_combine): Don't modify PATTERN (i3) and notes
27914         too early, only set a flag and modify after last possible
27915         undo_all point.
27916
27917 2009-01-06  Janis Johnson  <janis187@us.ibm.com>
27918
27919         PR c/34252
27920         * ginclude/float.h: Rename DECnn_DEN to DECnn_SUBNORMAL_MIN.
27921         * real.c (decimal_single_format): Correct values of emin and emax.
27922         (decimal_double_format): Ditto.
27923         (decimal_quad_format): Ditto.
27924         * c-cppbuiltin.c (builtin_define_decimal_float_constants): Adjust
27925         computation of DECnn_MIN and DECnn_MAX for corrected values of
27926         emin and emax.  Define __DECnn_SUBNORMAL_MIN__ instead of
27927         __DECnn_MIN__, and adjust its computation for the corrected value
27928         of emin.
27929
27930 2009-01-06  Jan Hubicka  <jh@suse.cz>
27931
27932         PR target/38744
27933         * config/i386/i386.c (ix86_expand_call): Use ARRAY_SIZE.
27934
27935 2009-01-06  Gerald Pfeifer  <gerald@pfeifer.com>
27936
27937         * doc/contrib.texi (Contributors): Slightly adjust the end note.
27938         Add Robert Clark to the list of testers.
27939
27940 2009-01-06  Jan Hubicka  <jh@suse.cz>
27941             Kai Tietz  <kai.tietz@onevision.com>
27942
27943         * config/i386/i386.md (*msabi_syvabi): Add SSE regs clobbers.
27944         * config/i386/i386.c (ix86_expand_call): Add clobbers.
27945
27946 2009-01-06  Jan Hubicka  <jh@suse.cz>
27947             Kai Tietz  <kai.tietz@onevision.com>
27948
27949         * config/i386/i386.h (CONDITIONAL_CALL_USAGE): SSE regs are not used
27950         for w64 ABI.
27951         * config/i386/i386.c (struct ix86_frame): Add padding0 and nsseregs.
27952         (ix86_nsaved_regs): Count only general purpose regs.
27953         (ix86_nsaved_sseregs): New.
27954         (ix86_compute_frame_layout): Update nsseregs; set preferred alignment
27955         to 16 for w64; compute padding and size of sse reg save area.
27956         (ix86_emit_save_regs, ix86_emit_save_regs_using_mov): Save only
27957         general purpose regs.
27958         (ix86_emit_save_sse_regs_using_mov): New.
27959         (ix86_expand_prologue): Save SSE regs if needed.
27960         (ix86_emit_restore_regs_using_mov): Use only general purpose regs.
27961         (ix86_emit_restore_sse_regs_using_mov): New.
27962         (ix86_expand_epilogue): Save SSE regs if needed.
27963
27964 2009-01-06  Jan Hubicka  <jh@suse.cz>
27965             Kai Tietz  <kai.tietz@onevision.com>
27966
27967         * config/i386/i386.h (ACCUMULATE_OUTGOING_ARGS): Enable for MSABI
27968         * config/i386/i386.c (init_cumulative_args): Disallow calls of MSABI
27969         functions when accumulate outgoing args is off.
27970
27971 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
27972
27973         PR bootstrap/38742
27974         * ira-color.c (ira_reuse_stack_slot): Check ENABLE_IRA_CHECKING
27975         before using pseudos_have_intersected_live_ranges_p.
27976
27977         * ira-int.h (ira_assert): Always define.
27978
27979 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
27980
27981         AVX Programming Reference (December, 2008)
27982         * config/i386/avxintrin.h (_mm_permute2_pd): Removed.
27983         (_mm256_permute2_pd): Likewise.
27984         (_mm_permute2_ps): Likewise.
27985         (_mm256_permute2_ps): Likewise.
27986         * config/i386/i386.md (UNSPEC_VPERMIL2): Likewise.
27987         * config/i386/sse.md (avx_vpermil2<mode>3): Likewise.
27988
27989         * config/i386/i386.c (ix86_builtins): Remove
27990         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMIL2PS,
27991         IX86_BUILTIN_VPERMIL2PD256 and IX86_BUILTIN_VPERMIL2PS256.
27992         (ix86_builtin_type): Remove V8SF_FTYPE_V8SF_V8SF_V8SI_INT,
27993         V4DF_FTYPE_V4DF_V4DF_V4DI_INT, V4SF_FTYPE_V4SF_V4SF_V4SI_INT
27994         and V2DF_FTYPE_V2DF_V2DF_V2DI_INT.
27995         (bdesc_args): Remove __builtin_ia32_vpermil2pd,
27996         __builtin_ia32_vpermil2ps, __builtin_ia32_vpermil2pd256 and
27997         __builtin_ia32_vpermil2ps256.
27998         (ix86_init_mmx_sse_builtins): Updated.
27999         (ix86_expand_args_builtin): Likewise.
28000
28001 2009-01-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
28002
28003         * pa.c (output_call): Relocate non-jump insns in the delay slot of
28004         long absolute calls when generating PA 2.0 code.
28005
28006 2009-01-05  Vladimir Makarov  <vmakarov@redhat.com>
28007
28008         PR rtl-optimization/38583
28009         * params.h (IRA_MAX_CONFLICT_TABLE_SIZE): New macro.
28010
28011         * params.def (ira-max-conflict-table-size): New.
28012
28013         * doc/invoke.texi (ira-max-conflict-table-size): Decribe.
28014
28015         * ira.h (ira_conflicts_p): New external definition.
28016
28017         * ira-conflicts.c (build_conflict_bit_table): Do not build too big
28018         table.  Report this.  Return result of building.
28019         (ira_build_conflicts): Use ira_conflicts_p.  Check result of
28020         building conflict table.
28021
28022         * ira-color.c (fast_allocation): Use num instead of ira_allocnos_num.
28023         (ira_color): Use ira_conflicts_p.
28024
28025         * global.c: Include ira.h.
28026         (pseudo_for_reload_consideration_p, build_insn_chain): Use
28027         ira_conflicts_p.
28028
28029         * Makefile.in (global.o): Add ira.h.
28030
28031         * ira-build.c (mark_all_loops_for_removal,
28032         propagate_some_info_from_allocno): New.
28033         (remove_unnecessary_allocnos): Call
28034         propagate_some_info_from_allocno.
28035         (remove_low_level_allocnos): New.
28036         (remove_unnecessary_regions): Add parameter.  Call
28037         mark_all_loops_for_removal and remove_low_level_allocnos.  Pass
28038         parameter to remove_unnecessary_regions.
28039         (ira_build): Remove all regions but root if the conflict table was
28040         not built.  Update conflict hard regs for allocnos crossing calls.
28041
28042         * ira.c (ira_conflicts_p): New global.
28043         (ira): Define and use ira_conflicts_p.
28044
28045         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
28046         count_spilled_pseudo, find_reg, alter_reg, finish_spills,
28047         emit_input_reload_insns, delete_output_reload): Use ira_conflicts_p.
28048
28049 2009-01-06  Ben Elliston  <bje@au.ibm.com>
28050
28051         * gengtype-lex.l (YY_NO_INPUT): Define.
28052
28053 2009-01-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
28054
28055         PR c/34911
28056         * c-common.c (handle_vector_size_attribute): Also reject
28057         BOOLEAN_TYPE types.
28058
28059 2009-01-05  Sebastian Pop  <sebastian.pop@amd.com>
28060
28061         PR tree-optimization/38492
28062         * graphite.c (rename_map_elt, debug_rename_elt,
28063         debug_rename_map_1, debug_rename_map, new_rename_map_elt,
28064         rename_map_elt_info, eq_rename_map_elts,
28065         get_new_name_from_old_name, bb_in_sese_p): Moved around.
28066         (sese_find_uses_to_rename_use): Renamed sese_build_livein_liveouts_use.
28067         (sese_find_uses_to_rename_bb): Renamed sese_build_livein_liveouts_bb.
28068         (sese_build_livein_liveouts): New.
28069         (new_sese, free_sese): New.
28070         (new_scop): Call new_sese.
28071         (free_scop): Call free_sese.
28072         (rename_variables_from_edge, rename_phis_end_scop): Removed.
28073         (register_old_new_names): Renamed register_old_and_new_names.
28074         (register_scop_liveout_renames, add_loop_exit_phis,
28075         insert_loop_close_phis, struct igp,
28076         default_liveout_before_guard, add_guard_exit_phis,
28077         insert_guard_phis, copy_renames): New.
28078         (translate_clast): Call insert_loop_close_phis and insert_guard_phis.
28079         (sese_add_exit_phis_edge): Renamed scop_add_exit_phis_edge.
28080         (rewrite_into_sese_closed_ssa): Renamed scop_insert_phis_for_liveouts.
28081         (scop_adjust_phis_for_liveouts): New.
28082         (gloog): Call scop_adjust_phis_for_liveouts.
28083
28084         * graphite.h (struct sese): Documented.  Added fields liveout,
28085         num_ver and livein.
28086         (SESE_LIVEOUT, SESE_LIVEIN, SESE_LIVEIN_VER, SESE_NUM_VER): New.
28087         (new_sese, free_sese, sese_build_livein_liveouts): Declared.
28088         (struct scop): Added field liveout_renames.
28089         (SCOP_LIVEOUT_RENAMES): New.
28090
28091 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
28092
28093         PR tree-optimization/38510
28094         * graphite.c (recompute_all_dominators): Call mark_irreducible_loops.
28095         (translate_clast): Call recompute_all_dominators before
28096         graphite_verify.
28097         (gloog): Call recompute_all_dominators before graphite_verify.
28098
28099 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
28100             Jan Sjodin  <jan.sjodin@amd.com>
28101
28102         PR tree-optimization/38500
28103         * graphite.c (create_sese_edges): Call fix_loop_structure after
28104         splitting blocks.
28105
28106 2009-01-05  Joel Sherrill  <joel.sherrill@oarcorp.com>
28107
28108         * config.gcc: Add m32r*-*-rtems*.
28109         * config/m32r/rtems.h: New file.
28110
28111 2009-01-05  Ben Elliston  <bje@au.ibm.com>
28112
28113         * Makefile.in (.po.gmo): Use mkinstalldirs, not test -d || mkdir.
28114         (.po.pox): Likewise.
28115         (po/gcc.pot): Likewise.
28116
28117 2009-01-04  David S. Miller  <davem@davemloft.net>
28118
28119         * config/sparc/sparc.h (SECONDARY_MEMORY_NEEDED_RTX): Delete.
28120         (STARTING_FRAME_OFFSET): Always set to zero.
28121
28122 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
28123
28124         * tree.def (LSHIFT_EXPR, RSHIFT_EXPR): Add commentary.
28125         * tree-cfg.c (verify_gimple_assign_binary): Allow shifts of
28126         fixed-point types, and vectors of the same.
28127
28128 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
28129
28130         * config/mips/sync.md (*mb_barrier): Rename to...
28131         (*memory_barrier): ...this.
28132
28133 2009-01-04  Jonathan Wakely  <jwakely.gcc@gmail.com>
28134
28135         * doc/extend.texi (Function Attributes): Move @cindex after @item
28136         for 'artificial' and 'flatten'. Fix grammar for 'externally_visible'
28137         and put in alphabetical order. Fix 'target' name and put in order.
28138         * doc/invoke.texi (-Wstrict-null-sentinel, -fipa-matrix-reorg): Fix
28139         typos.
28140
28141 2009-01-04  Uros Bizjak  <ubizjak@gmail.com>
28142
28143         * config/s390/s390.md (UNSPEC_MB): Rename from UNSPECV_MB.
28144         (memory_barrier): Expand as unspec instead of unspec_volatile.
28145         Remove mem:BLK from insn operands.  Use Pmode scratch register.
28146         (*memory_barrier): Define as unspec instead of unspec_volatile.
28147         Use (match_dup 0) as input operand.
28148
28149         * config/sparc/sparc.md (UNSPEC_MEMBAR): Rename from UNSPECV_MEMBAR.
28150         * config/sparc/sync.md (memory_barrier): Expand as unspec instead of
28151         unspec_volatile.  Remove mem:BLK from insn operands.  Use Pmode
28152         scratch register.  Remove operand 1.
28153         (*stbar): Define as unspec instead of unspec_volatile.
28154         Use (match_dup 0) as input operand, remove (const_int 8).
28155         (*membar): Define as unspec instead of unspec_volatile.
28156         Use (match_dup 0) as input operand, remove input operand 2.
28157
28158         * config/xtensa/xtensa.md (UNSPEC_MEMW): Rename from UNSPECV_MEMW.
28159         (memory_barrier): Expand as unspec instead of unspec_volatile.
28160         Remove mem:BLK from insn operands.  Use Pmode scratch register.
28161         (*memory_barrier): Define as unspec instead of unspec_volatile.
28162         Use (match_dup 0) as input operand.
28163
28164         * config/ia64/sync.md (memory_barrier): Redefine as expander pattern.
28165         Remove mem:BLK from insn operands.  Use Pmode scratch register.
28166         Set volatile flag on operand 0.
28167         (*memory_barrier): New insn pattern.
28168
28169         * config/rs6000/sync.md (memory_barrier): Remove mem:BLK from
28170         insn operands.
28171         (*memory_barrier): Use (match_dup 0) as input operand.
28172
28173         * config/mips/sync.md (memory_barrier): Redefine as expander pattern.
28174         Remove mem:BLK from insn operands.  Use Pmode scratch register.
28175         Set volatile flag on operand 0.
28176         (*mb_internal): New insn pattern.
28177
28178         * config/alpha/sync.md (*memory_barrier): Rename from *mb_internal.
28179
28180 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
28181
28182         PR middle-end/38586
28183         * function.c (struct temp_slot): Move to the section of the file
28184         that deals with temp slots.  Remove field 'address'.
28185         (temp_slot_address_table): New hash table of address -> temp slot.
28186         (struct temp_slot_address_entry): New struct, items for the table.
28187         (temp_slot_address_compute_hash, temp_slot_address_hash,
28188         temp_slot_address_eq, insert_temp_slot_address): Support functions
28189         for the new table.
28190         (find_temp_slot_from_address): Rewrite to use the new hash table.
28191         (remove_unused_temp_slot_addresses): Remove addresses of temp
28192         slots that have been made available.
28193         (remove_unused_temp_slot_addresses_1): Call-back for htab_traverse,
28194         worker function for remove_unused_temp_slot_addresses.
28195         (assign_stack_temp_for_type): Don't clear the temp slot address list.
28196         Add the temp slot address to the address -> temp slot map.
28197         (update_temp_slot_address): Update via insert_temp_slot_address.
28198         (free_temp_slots): Call remove_unused_temp_slot_addresses.
28199         (pop_temp_slots): Likewise.
28200         (init_temp_slots): Allocate the address -> temp slot map, or empty
28201         the map if it is already allocated.
28202         (prepare_function_start): Initialize temp slot processing.
28203
28204 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
28205
28206         PR middle-end/38584
28207         * cfgexpand.c (estimate_stack_frame_size): Simplify the estimate:
28208         Calculate the size of all stack vars assuming no packing of stack
28209         vars will happen, replacing a quadratic algorithm with a linear one.
28210
28211 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
28212
28213         PR target/38707
28214         * expmed.c (store_bit_field_1): Don't modify op0 if movstrict insn
28215         can't be used.
28216
28217 2009-01-03  Diego Novillo  <dnovillo@google.com>
28218
28219         * doc/contrib.texi: Update contributions.
28220
28221 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
28222
28223         PR c++/38705
28224         * builtins.c (fold_builtin_memory_op): Give up if either operand
28225         is volatile.  Set srctype or desttype to non-qualified version
28226         of the other type.
28227
28228         PR c/38700
28229         * builtins.c (fold_builtin_expect): Only check DECL_WEAK for VAR_DECLs
28230         and FUNCTION_DECLs.
28231
28232 2009-01-02  Kenneth Zadeck  <zadeck@naturalbridge.com>
28233
28234         PR rtl-optimization/35805
28235         * df-problems.c (df_lr_finalize): Add recursive call to resolve lr
28236         problem if fast dce is able to remove any instructions.
28237         * dce.c (dce_process_block): Fix dump message.
28238
28239 2009-01-02  Mark Mitchell  <mark@codesourcery.com>
28240
28241         PR 33649
28242         * tree-ssa-pre.c (compute_antic): Correct loop bounds.
28243
28244 2009-01-02  Jakub Jelinek  <jakub@redhat.com>
28245
28246         PR middle-end/38690
28247         * tree-flow.h (op_code_prio, op_prio): New prototypes.
28248         * tree-pretty-print.c (op_code_prio): New function.
28249         (op_prio): No longer static.  Use op_code_prio.
28250         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs):
28251         Use op_prio and op_code_prio to determine if () should be
28252         printed around operand(s) or not.
28253
28254         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs,
28255         dump_gimple_call, dump_gimple_switch, dump_gimple_cond,
28256         dump_gimple_label, dump_gimple_try, dump_symbols, dump_gimple_phi,
28257         dump_gimple_mem_ops, dump_bb_header, dump_bb_end, pp_cfg_jump): Use
28258         pp_character instead of pp_string for single letter printing.
28259
28260 2009-01-02  Richard Sandiford  <rdsandiford@googlemail.com>
28261
28262         * doc/extend.texi: Fix '#pragma GCC option' typo.
28263
28264 2009-01-02  Richard Guenther  <rguenther@suse.de>
28265
28266         * doc/install.texi (--enable-checking): Mention different
28267         default for stage1.
28268         (--enable-stage1-checking): Document.
28269
28270 2009-01-01  Andrew Pinski  <pinskia@gmail.com>
28271
28272         PR middle-end/30142
28273         * tree-cfg.c (verify_expr): Add INDIRECT_REF case.  Change MODIFY_EXPR
28274         case to be an error.
28275
28276 2009-01-02  Ben Elliston  <bje@au.ibm.com>
28277
28278         * config/fp-bit.h (pack_d): Constify argument.
28279         * config/fp-bit.c (makenan): Constify return type. Remove casts.
28280         (isnan): Constify argument.
28281         (isinf): Likewise.
28282         (iszero): Likewise.
28283         (pack_d): Likewise.
28284         (_fpadd_parts): Constify return type.
28285         (_fpmul_parts): Likewise.
28286         (_fpdiv_parts): Likewise.
28287
28288 2009-01-01  Jakub Jelinek  <jakub@redhat.com>
28289
28290         PR c/36489
28291         * c-typeck.c (add_pending_init): Add IMPLICIT argument.  Only
28292         warn about overwriting initializer with side-effects or
28293         -Woverride-init if !IMPLICIT.
28294         (output_init_element): Likewise.  Pass IMPLICIT down to
28295         add_pending_init.
28296         (process_init_element): Add IMPLICIT argument.  Pass it down
28297         to output_init_element.
28298         (push_init_element, pop_init_level, set_designator): Adjust
28299         process_init_element callers.
28300         (set_nonincremental_init, set_nonincremental_init_from_string):
28301         Adjust add_pending_init callers.
28302         (output_pending_init_elements): Adjust output_init_element callers.
28303         * c-tree.h (process_init_element): Adjust prototype.
28304         * c-parser.c (c_parser_initelt, c_parser_initval): Adjust
28305         process_init_element callers.
28306
28307 \f
28308 Copyright (C) 2009 Free Software Foundation, Inc.
28309
28310 Copying and distribution of this file, with or without modification,
28311 are permitted in any medium without royalty provided the copyright
28312 notice and this notice are preserved.