OSDN Git Service

b90d1f974cb85d1d17036eb2b953eb80d75456a9
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2008-11-25  Uros Bizjak  <ubizjak@gmail.com>
2
3         PR target/38256
4         * config/i386/sync.md (memory_barrier_nosse): New insn
5         (memory_barrier): Generate memory_barrier_nosse insn for !TARGET_SSE2.
6
7 2008-11-24  Maxim Kuvyrkov  <maxim@codesourcery.com>
8
9         * config/m68k/m68k.md (cmpdi): Use (scratch) instead of pseudo.
10
11 2008-11-24  Richard Sandiford  <rdsandiford@googlemail.com>
12
13         * config/mips/mips.h (ASM_OUTPUT_DEBUG_LABEL): Define.
14
15 2008-11-24  Maxim Kuvyrkov  <maxim@codesourcery.com>
16
17         PR target/35018
18         * config/m68k/m68k.md (ok_for_coldfire, enabled): New attributes.
19         (addsi_lshrsi_31): Add ColdFire-friendly alternatives.
20
21 2008-11-24  Uros Bizjak  <ubizjak@gmail.com>
22
23         * config/i386/i386.md (UNSPECV_CMPXCHG): Rename from
24         UNSPECV_CMPXCHG_[12].
25         * config/i386/sync.md: Use UNSPECV_CMPXCHG instead of
26         UNSPECV_CMPXCHG_[12].
27
28         PR target/36793
29         * config/i386/sync.md (memory_barrier): New expander.
30
31 2008-11-24  Jakub Jelinek  <jakub@redhat.com>
32
33         PR middle-end/37135
34         * dse.c (find_shift_sequence): Optimize extraction from a constant.
35
36 2008-11-23  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
37
38         * pa.c (function_arg): Revert 2008-10-26 change.
39
40 2008-11-23  Helge Deller  <deller@gmx.de>
41
42         * pa/linux-atomic.c (EBUSY): Define if not _LP64.
43         (__kernel_cmpxchg): Return -EBUSY if the kernel LWS call
44         succeeded and lws_ret is not equal to oldval.
45
46 2008-11-23  Kaz Kojima  <kkojima@gcc.gnu.org>
47
48         * config/sh/sh.md (consttable_4): Call mark_symbol_refs_as_used.
49
50 2008-11-22  Andreas Schwab  <schwab@suse.de>
51
52         * varasm.c (default_file_start): Suppress ASM_APP_OFF also with
53         -dA and -dP.
54
55 2008-11-22  Adam Nemet  <anemet@caviumnetworks.com>
56
57         * config/mips/mips.md (rdhwr): Rename to rdhwr_synci_step_<mode>.
58         Use constant 1 as the operand.
59         * config/mips/mips.c (mips_expand_synci_loop): Make INC Pmode.
60         Rename gen_rdhwr to gen_rdhwr_synci_step_si or
61         gen_rdhwr_synci_step_di depending on the size of Pmode.
62
63 2008-11-22  Uros Bizjak  <ubizjak@gmail.com>
64
65         PR target/38222
66         * config/i386/i386.md (SWI248): New mode iterator.
67         (SWI32): Remove mode iterator.
68         (popcount<mode>2): Rename from popcounthi2, popcountsi2 and
69         popcounthi2 insn patterns. Macroize pattern using SWI248 mode
70         iterator.  Generate popcnt mnemonic without mode extensions
71         for Darwin x86 targets.
72         (*popcount<mode>2_cmp): Ditto.
73         (*popcountsi2_cmp_zext): Generate popcnt mnemonic without mode
74         extensions for Darwin x86 targets.
75
76 2008-11-22  Eric Botcazou  <ebotcazou@adacore.com>
77
78         * config/sparc/sparc.c (TARGET_ASM_OUTPUT_DWARF_DTPREL): Define
79         only if HAVE_AS_SPARC_UA_PCREL is defined.
80
81 2008-11-22  Richard Sandiford  <rdsandiford@googlemail.com>
82
83         * ira-costs.c (find_allocno_class_costs): Work out the maximum
84         allocno_costs value of the classees with the lowest total_costs
85         value.  Use this to set ALLOCNO_COVER_CLASS_COST here...
86         (setup_allocno_cover_class_and_costs): ...rather than here.
87         Use the ALLOCNO_COVER_CLASS_COST for all registers in the
88         preferred class.
89
90 2008-11-22  Jakub Jelinek  <jakub@redhat.com>
91
92         PR middle-end/37323
93         * builtins.c (expand_builtin_apply_args): Emit sequence before
94         parm_birth_insn instead of after entry_of_function's first insn.
95
96         PR middle-end/37316
97         * function.c (assign_parm_remove_parallels): Pass
98         data->passed_type as third argument to emit_group_store.
99
100         PR target/37170
101         * final.c (mark_symbol_refs_as_used): New function.
102         * output.h (mark_symbol_refs_as_used): New prototype.
103         * config/s390/s390.c (s390_mark_symbol_ref_as_used): Removed.
104         (s390_output_pool_entry): Use mark_symbol_refs_as_used.
105         * config/arm/arm.md (consttable_4): Likewise.
106
107         PR target/37880
108         * doc/invoke.texi: Adjust wording of -mcmodel=medium description.
109
110 2008-11-21  Jakub Jelinek  <jakub@redhat.com>
111
112         PR middle-end/38200
113         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Only
114         propagate x = &a into *x = b if conversion from b to a's type is
115         useless.
116
117 2008-11-21  Eric Botcazou  <ebotcazou@adacore.com>
118
119         * caller-save.c (insert_one_insn): Take into account REG_INC notes
120         for the liveness computation of the new insn.
121
122 2008-11-21  DJ Delorie  <dj@redhat.com>
123
124         * config/stormy16/stormy16.md (movqi_internal, movhi_internal):
125         Moves to/from below100 space (W) can only use r0-r7.
126
127 2008-11-21  Paolo Carlini  <paolo.carlini@oracle.com>
128
129         PR other/38214
130         * doc/invoke.texi (Optimization Options): Fix typo.
131
132 2008-11-21  H.J. Lu  <hongjiu.lu@intel.com>
133             Xuepeng Guo  <xuepeng.guo@intel.com>
134
135         * config.gcc (extra_headers): For x86 and x86-64, remove
136         gmmintrin.h, add immintrin.h and avxintrin.h.
137
138         * config/i386/gmmintrin.h: Renamed to ...
139         * config/i386/avxintrin.h: This.  Issue an error if
140         _IMMINTRIN_H_INCLUDED is undedined.
141
142         * config/i386/immintrin.h: New.
143
144 2008-11-21  Jakub Jelinek  <jakub@redhat.com>
145
146         PR target/38208
147         * reload1.c (eliminate_regs_in_insn): For trunc_int_for_mode use
148         mode of PLUS, not mode of the eliminated register.
149
150 2008-11-21  Uros Bizjak  <ubizjak@gmail.com>
151
152         * config/i386/mmx.md (mmx_nand<mode>3): Rename to mmx_andnot<mode>3.
153         * config/i386/sse.md (avx_nand<mode>3): Rename to avx_andnot<mode>3.
154         (<sse>_nand<mode>3): Rename to <sse>_andnot<mode>3.
155         (sse2_nand<mode>3): Rename to sse2_andnot<mode>3.
156         (*sse_nand<mode>3): Rename to *sse_andnot<mode>3.
157         (*avx_nand<mode>3): Rename to *avx_andnot<mode>3.
158         (*nand<mode>3): Rename to *andnot<mode>3.
159         (*nandtf3): rename to *andnottf3.
160         * config/i386/i386.c (bdesc_args) [IX86_BUILTIN_PANDN]:
161         Use CODE_FOR_mmx_andnotv2si3.
162         [IX86_BUILTIN_ANDNPS]: Use CODE_FOR_sse_andnotv4sf3.
163         [IX86_BUILTIN_ANDNPD]: Use CODE_FOR_sse2_andnotv2df3.
164         [IX86_BUILTIN_PANDN128]: Use CODE_FOR_sse2_andnotv2di3.
165         [IX86_BUILTIN_ANDNPS256]: Use CODE_FOR_avx_andnotv8sf3.
166         [IX86_BUILTIN_ANDNPD256]: Use CODE_FOR_avx_andnotv4df3.
167
168 2008-11-21  Uros Bizjak  <ubizjak@gmail.com>
169
170         PR middle-end/37908
171         * config/ia64/ia64.c (ia64_expand_atomic_ope): Properly handle NAND
172         case by calculating ~(new_reg & val) instead of (~new_reg & val).
173         * config/ia64/sync.md (sync_nand<mode>): Change insn RTX
174         to (not:IMODE (and:IMODE (...))).
175         (sync_old_nand<mode>): Ditto.
176         (sync_new_nand<mode>): Ditto.
177
178 2008-11-20  Joseph Myers  <joseph@codesourcery.com>
179
180         * config/arm/thumb2.md (thumb2_casesi_internal,
181         thumb2_casesi_internal_pic): Use earlyclobber for scratch operand 4.
182
183 2008-11-20  Andreas Krebbel  <krebbel1@de.ibm.com>
184
185         * gcc/config/s390/s390.c (s390_expand_atomic): Adjust QI/HI atomic
186         nand to the changed 4.4 semantic.
187
188 2008-11-20  Jakub Jelinek  <jakub@redhat.com>
189
190         PR middle-end/29215
191         * builtins.c (SLOW_UNALIGNED_ACCESS): Define if not defined.
192         (fold_builtin_memory_op): Handle even the case where just one
193         of src and dest is an address of a var decl component, using
194         TYPE_REF_CAN_ALIAS_ALL pointers.  Remove is_gimple_min_invariant
195         and readonly_data_expr src check.
196         * tree-ssa-sccvn.c (DFS): Use clear_and_done_ssa_iter to shut
197         up warnings.
198
199         PR rtl-optimization/36998
200         * dwarf2out.c (stack_adjust_offset): Add cur_args_size and cur_offset
201         arguments.  Handle sp = reg and (set (foo) (mem (pre_inc (reg sp)))).
202         (compute_barrier_args_size_1, dwarf2out_frame_debug_expr): Adjust
203         stack_adjust_offset callers.
204         (dwarf2out_stack_adjust): Likewise.  Handle insns in annulled
205         branches properly.
206         (compute_barrier_args_size): Handle insns in annulled branches
207         properly.
208
209 2008-11-20  Uros Bizjak  <ubizjak@gmail.com>
210
211         PR target/38151
212         * config/i386/i386.c (classify_argument) [integer mode size <= 64bit]:
213         Handle cases when integer argument crosses argument register boundary.
214
215 2008-11-20  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
216
217         PR bootstrap/33100
218         * config.gcc (i[34567]86-*-solaris2*): Don't include
219         i386/t-crtstuff here.
220         Move extra_parts, i386/t-sol2 in tmake_file to libgcc/config.host.
221         * config/i386/t-sol2: Move to libgcc/config/i386.
222
223 2008-11-20  Samuel Thibault  <samuel.thibault@ens-lyon.org>
224
225         PR driver/21706
226         * tlink.c: Include "libiberty.h".
227         (initial_cwd): Change type into char *.
228         (tlink_init): Call getpwd instead of getcwd.
229
230 2008-11-19  Zdenek Dvorak  <ook@ucw.cz>
231
232         PR rtl-optimization/32283
233         * tree-ssa-loop-niter.c (scev_probably_wraps_p): Use type of the base
234         of the induction variable to decide whether it may wrap.
235         * tree-ssa-loop-ivopts.c (rewrite_use_compare): Emit the
236         initialization of the bound before the loop.
237         * simplify-rtx.c (simplify_binary_operation_1): Add two
238         simplifications regarding AND.
239         (simplify_plus_minus): Only fail if no simplification is possible.
240         * loop-iv.c (simple_rhs_p): Consider reg + reg and reg << cst simple.
241
242 2008-11-20  Jakub Jelinek  <jakub@redhat.com>
243
244         PR c++/36631
245         * gimplify.c (gimplify_call_expr): Defer most of the cannot inline
246         checking until GIMPLE lowering.
247         * gimple-low.c (check_call_args): New function.
248         (lower_stmt) <case GIMPLE_CALL>: Call it.
249
250 2008-11-19  Adam Nemet  <anemet@caviumnetworks.com>
251
252         * config/mips/mips.c (mips_gimplify_va_arg_expr): Use -rsize
253         with the same type as the first operand of the AND expression.
254
255 2008-11-19  Vladimir Makarov  <vmakarov@redhat.com>
256
257         PR bootstrap/37859
258         * ira-int.h (struct ira_loop_tree_node): New member
259         entered_from_non_parent_p.
260
261         * ira-color.c (print_loop_title): Print loop bbs.
262
263         * ira-emit.c (entered_from_non_parent_p,
264         setup_entered_from_non_parent_p): New functions.
265         (not_modified_p): Rename to store_can_be_removed_p.  Check there
266         is no side entries.
267         (generate_edge_moves): Use store_can_be_removed_p instead of
268         not_modified_p.
269         (ira_emit): Call setup_entered_from_non_parent_p.
270         
271         * ira-build.c (copy_info_to_removed_store_destinations):
272         Accumulate CALL_FREQ, CALL_CROSSED_NUM, and
273         ALLOCNO_EXCESS_PRESSURE_POINTS_NUM.
274         (ira_flattening): Don't CHECK MEM_OPTIMIZED_DEST[_P], always
275         update all accumulated attributes.
276         
277 2008-11-19  Vladimir Makarov  <vmakarov@redhat.com>
278
279         PR bootstrap/37790
280         * ira-int.h (ira_copy_allocno_live_range_list,
281         ira_merge_allocno_live_ranges, ira_allocno_live_ranges_intersect_p,
282         ira_finish_allocno_live_range_list): New prototypes.
283         (ira_allocno_live_ranges_intersect_p,
284         ira_pseudo_live_ranges_intersect_p): Remove.
285         
286         * ira-conflicts.c (ira_allocno_live_ranges_intersect_p,
287         ira_pseudo_live_ranges_intersect_p): Rename to
288         allocnos_have_intersected_live_ranges_p and
289         pseudos_have_intersected_live_ranges_p.  Move them from here to ...
290
291         * ira-color.c: ... here
292         (coalesced_allocno_conflict_p): Use
293         allocnos_have_intersected_live_ranges_p.
294         (coalesced_allocnos_living_at_program_points,
295         coalesced_allocnos_live_at_points_p,
296         set_coalesced_allocnos_live_points): Remove.
297         (slot_coalesced_allocnos_live_ranges,
298         slot_coalesced_allocno_live_ranges_intersect_p,
299         setup_slot_coalesced_allocno_live_ranges): New.
300         (coalesce_spill_slots): Use ranges of coalesced allocnos.
301         (ira_sort_regnos_for_alter_reg): Use
302         allocnos_have_intersected_live_ranges_p.
303         (ira_reuse_stack_slot): Use
304         pseudos_have_intersected_live_ranges_p.
305
306         * global.c (pseudo_for_reload_consideration_p): Check
307         flag_ira_share_spill_slots too.
308
309         * ira-build.c (copy_allocno_live_range_list): Rename to
310         ira_copy_allocno_live_range_list.  Make it external.
311         (merge_ranges): Rename to ira_merge_allocno_live_ranges.  Make it
312         external.
313         (ira_allocno_live_ranges_intersect_p): New.
314         (ira_finish_allocno_live_range_list): New.
315         (finish_allocno): Use it.
316         (remove_unnecessary_allocnos): Use ira_merge_allocno_live_ranges.
317         (copy_info_to_removed_store_destinations): Ditto.  Use
318         ira_copy_allocno_live_range_list.
319         (ira_flattening): Use ira_merge_allocno_live_ranges.
320         
321         * ira.c (too_high_register_pressure_p): New function.
322         (ira): Switch off sharing spill slots if the pressure is too high.
323
324 2008-11-19  Richard Guenther  <rguenther@suse.de>
325
326         * tree.c (build2_stat): Allow non-POINTER_PLUS_EXPRs with
327         non-sizetype offsets if their precision matches that of the pointer.
328         * expr.c (expand_expr_real_1): Always sign-extend the offset
329         operand of a POINTER_PLUS_EXPR.
330
331 2008-11-19  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
332
333         * config.gcc: Unobsolete mips-sgi-irix[56]*.
334         (mips-sgi-irix[56]*): No need to use fixproto.
335
336 2008-11-19  Maxim Kuvyrkov  <maxim@codesourcery.com>
337             Paul Brook  <paul@codesourcery.com>
338
339         * config/m68k/lb1sf68.asm: Add GNU-stack annotation to avoid
340         executable stack.
341
342 2008-11-19  Maxim Kuvyrkov  <maxim@codesourcery.com>
343
344         * config/m68k/m68k.c (sched_attr_op_type): Handle all CONSTs.
345
346 2008-11-19  Razya Ladelsky  <razya@il.ibm.com>
347
348         PR target/38156
349         * tree-parloops.c (loop_parallel_p): NULL vect_dump.
350         (separate_decls_in_region): Create shared struct even when there 
351         are only reductions.
352
353 2008-11-19  Hariharan Sandanagobalane <hariharan@picochip.com>
354
355         * config/picochip/picochip.c (headers): Remove an unnecessary
356         header file.
357
358 2008-11-19  Andrew Stubbs  <ams@codesourcery.com>
359
360         PR target/36133
361         * config/m68k/m68k.h (CC_OVERFLOW_UNUSABLE, CC_NO_CARRY): New defines.
362         * config/m68k/m68k.c (notice_update_cc): Set cc_status properly for
363         shift instructions.
364         * config/m68k/m68k.md: Adjust all conditional branches that use the
365         carry and overflow flags so they understand CC_OVERFLOW_UNUSABLE.
366
367 2008-11-18  Uros Bizjak  <ubizjak@gmail.com>
368
369         PR target/37362
370         * config/mips/mips.md (move_doubleword_fpr<mode>): Check that "high"
371         is a register or zero operand in the correct mode before generating
372         mtch1 insn or a register operand in the correct mode before generating
373         mfch1 insn.
374         (mtch1<mode>): Correct operand 1 predicate to reg_or_0_operand.
375
376 2008-11-18  Adam Nemet  <anemet@caviumnetworks.com>
377
378         * config.gcc (mips*-sde-elf*): Handle mipsisa64r2*.
379         (mipsisa64r2-*-elf*, mipsisa64r2el-*-elf*): Add new cases to
380         mipsisa*-*-elf*.  Handle mipsisa64r2*.
381         * config/mips/sde.h (LINK_SPEC): Handle -mips64r2.
382         * config/mips/t-isa3264 (MULTILIB_OPTIONS, MULTILIB_DIRNAMES): Add
383         mips64r2.
384         (MULTILIB_EXCLUSIONS): Add mips64r2/mfp64.
385         * config/mips/t-sde (MULTILIB_OPTIONS, MULTILIB_DIRNAMES): Add
386         mips64r2.
387         (MULTILIB_EXCLUSIONS): Add mips64r2/mfp64.  Add mips64r2/mips16.
388         Fix mips16 if mips64 or mips64r2 are multilib defaults.
389         * config/mips/t-sdemtk (MULTILIB_OPTIONS, MULTILIB_DIRNAMES): Add
390         mips64r2.
391
392 2008-11-18  Jakub Jelinek  <jakub@redhat.com>
393
394         PR target/38130
395         * config/i386/i386.md (allocate_stack_worker_32,
396         allocate_stack_worker_64): Don't use match_dup between input and
397         output operand.
398         (allocate_stack): Adjust gen_stack_worker_{32,64} caller.
399         * config/i386/i386.c (ix86_expand_prologue): Likewise.
400
401 2008-11-18  Kai Tietz  <kai.tietz@onevision.com>
402
403         * config/i386/t-cygming (SHLIB_LINK): Make sure that $(SHLIB_MAP).def
404         is forced when trying to do a symbol link for it.
405
406 2008-11-17  Adam Nemet  <anemet@caviumnetworks.com>
407
408         * expmed.c (extract_bit_field_1): Also use a temporary and
409         convert_extracted_bit_field when the conversion from ext_mode to
410         the target mode requires explicit truncation.
411
412 2008-11-17  Richard Sandiford  <rdsandiford@googlemail.com>
413
414         * config/mips/mips.h (REG_ALLOC_ORDER): Put accumulators first.
415         Tweak formatting.
416         * config/mips/mips.c (mips_ira_cover_classes): Don't use accumulator
417         registers when not optimizing.
418
419 2008-11-17  Richard Sandiford  <rdsandiford@googlemail.com>
420
421         * config/mips/mips.md (*mul_acc_si): Remove middle alternative
422         and its associated define_split.  Expose the all-d alternative
423         to the register allocator, but mark it with "?".  Mark the first
424         alternative with "*?*?".
425         (*mul_sub_si): Likewise.
426         (*mul_acc_si_r3900): New pattern.
427
428 2008-11-17  Jakub Jelinek  <jakub@redhat.com>
429
430         PR middle-end/38140
431         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): If
432         propagating x = &a into *x = b, add a cast if not useless
433         type conversion or don't optimize if another stmt would be
434         needed.
435
436 2008-11-17  Uros Bizjak  <ubizjak@gmail.com>
437
438         PR middle-end/37908
439         * optabs.c (expand_sync_operation): Properly handle NAND case
440         by calculating ~(t1 & val) instead of (~t1 & val).
441         * builtins.c (expand_builtin_sync_operation): Warn for changed
442         semantics in NAND builtins.
443         * c.opt (Wsync-nand): New warning option.  Describe -Wsync-nand.
444         
445         * doc/invoke.texi (Warning options): Add Wsync-nand.
446         * doc/extend.texi (Atomic Builtins) [__sync_fetch_and_nand]: Correct
447         __sync_fetch_and_nand builtin operation in the example.  Add a note
448         about changed semantics in GCC 4.4.
449         [__sync_nand_and_fetch]: Correct __sync_nand_and_fetch builtin
450         operation in the example.  Add a note about changed semantics in
451         GCC 4.4.
452
453 2008-11-16  Jan Hubicka  <jh@suse.cz>
454
455         * cgraph.c (cgraph_function_body_availability): Fix test of externally
456         visible.
457
458 2008-11-16  Joshua Kinard  <kumba@gentoo.org>
459
460         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Map -march=r1[0246]000
461         to -mips4.
462
463 2008-11-16  Richard Sandiford  <rdsandiford@googlemail.com>
464
465         PR target/38052
466         * config/mips/mips.c (mips_cfun_call_saved_reg_p)
467         (mips_cfun_might_clobber_call_saved_reg_p): New functions,
468         split out from...
469         (mips_save_reg_p): ...here.  Always consult TARGET_CALL_SAVED_GP
470         rather than call_really_used_regs when handling $gp.
471
472 2008-11-16  Richard Sandiford  <rdsandiford@googlemail.com>
473
474         PR target/38052
475         * config/mips/mips.c (machine_function): Update the comment
476         above global_pointer.
477         (mips_global_pointer): Use INVALID_REGNUM rather than 0 to indicate
478         that a function doesn't need a global pointer.
479         (mips_current_loadgp_style): Update accordingly.
480         (mips_restore_gp): Likewise.
481         (mips_output_cplocal): Likewise.
482         (mips_expand_prologue): Likewise.
483
484 2008-11-16  Eric Botcazou  <ebotcazou@adacore.com>
485
486         * config/sparc/sparc.c (function_arg_vector_value): Remove 'base_mode'
487         parameter.  Use DImode for computing the number of registers.
488         (function_arg): Adjust for above change.
489         (function_value): Likewise.
490
491 2008-11-15  Zdenek Dvorak  <ook@ucw.cz>
492
493         PR tree-optimization/37950
494         * tree-flow-inline.h (memory_partition): Return NULL when aliases were
495         not computed for the current function.
496
497 2008-11-15  Jakub Jelinek  <jakub@redhat.com>
498
499         PR target/38123
500         * config/i386/i386.c (ix86_gimplify_va_arg): Don't share valist between
501         gpr and other COMPONENT_REFs.
502
503 2008-11-15  Richard Guenther  <rguenther@suse.de>
504
505         PR tree-optimization/38051
506         * tree-ssa-alias.c (update_alias_info_1): Manually find
507         written variables.
508
509 2008-11-15  Joshua Kinard  <kumba@gentoo.org>
510
511         * doc/invoke.texi (-mfix-r10000): Document.
512         * config/mips/mips.opt (mfix-r10000): New option.
513         * config/mips/mips-protos.h (mips_output_sync_loop): Declare.
514         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP): Use %?.
515         (MIPS_COMPARE_AND_SWAP_12): Likewise.
516         (MIPS_SYNC_OP): Likewise.
517         (MIPS_SYNC_OP_12): Likewise.
518         (MIPS_SYNC_OLD_OP_12): Likewise.
519         (MIPS_SYNC_NEW_OP_12): Likewise.
520         (MIPS_SYNC_OLD_OP): Likewise.
521         (MIPS_SYNC_NAND): Likewise.
522         (MIPS_SYNC_OLD_NAND): Likewise.
523         (MIPS_SYNC_EXCHANGE): Likewise.
524         (MIPS_SYNC_EXCHANGE_12): Likewise.
525         (MIPS_SYNC_NEW_OP): Likewise, using %~ to fill branch-likely
526         delay slots.
527         (MIPS_SYNC_NEW_NAND): Likewise.
528         * config/mips/mips.c (mips_print_operand_punctuation): Handle '~'.
529         (mips_init_print_operand_punct): Treat '~' as a punctuation character.
530         (mips_output_sync_loop): New function.
531         (mips_override_options): Make -march=r10000 imply -mfix-r10000.
532         Make -mfix-r10000 require branch-likely instructions.
533         * config/mips/sync.md (sync_compare_and_swap<mode>): Use
534         mips_output_sync_loop.
535         (compare_and_swap_12): Likewise.
536         (sync_add<mode>): Likewise.
537         (sync_<optab>_12): Likewise.
538         (sync_old_<optab>_12): Likewise.
539         (sync_new_<optab>_12): Likewise.
540         (sync_nand_12): Likewise.
541         (sync_old_nand_12): Likewise.
542         (sync_new_nand_12): Likewise.
543         (sync_sub<mode>): Likewise.
544         (sync_old_add<mode>): Likewise.
545         (sync_old_sub<mode>): Likewise.
546         (sync_new_add<mode>): Likewise.
547         (sync_new_sub<mode>): Likewise.
548         (sync_<optab><mode>): Likewise.
549         (sync_old_<optab><mode>): Likewise.
550         (sync_new_<optab><mode>): Likewise.
551         (sync_nand<mode>): Likewise.
552         (sync_old_nand<mode>): Likewise.
553         (sync_new_nand<mode>): Likewise.
554         (sync_lock_test_and_set<mode>): Likewise.
555         (test_and_set_12): Likewise.
556
557 2008-11-15  Eric Botcazou  <ebotcazou@adacore.com>
558
559         * gcc.c (cc1_options): Fix comment.
560
561 2008-11-15  Jakub Jelinek  <jakub@redhat.com>
562
563         PR c++/37561
564         * c-typeck.c (build_unary_op): Don't call get_unwidened.  Use
565         argtype instead of result_type.
566
567 2008-11-14  Adam Nemet  <anemet@caviumnetworks.com>
568
569         * ira-int.h (struct ira_loop_tree_node): Improve comments for
570         subloop_next/next and subloops/childen fields.
571
572 2008-11-14  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
573
574         * config/spu/spu-elf.h (STANDARD_STARTFILE_PREFIX_2): Disable default.
575         (STANDARD_INCLUDE_DIR): Redefine to "/include".
576         (LOCAL_INCLUDE_DIR): Undefine.
577         * config/spu/t-spu-elf (NATIVE_SYSTEM_HEADER_DIR): Define.
578
579 2008-11-14  Vladimir Makarov  <vmakarov@redhat.com>
580
581         PR rtl-optimization/37397
582         * ira-int.h (struct ira_allocno): New member bad_spill_p.
583         (ALLOCNO_BAD_SPILL_P): New macro.
584
585         * ira-color.c (push_allocnos_to_stack): Check ALLOCNO_BAD_SPILL_P.
586
587         * ira-build.c (ira_create_allocno): Initialize ALLOCNO_BAD_SPILL_P.
588         (create_cap_allocno, propagate_allocno_info,
589         remove_unnecessary_allocnos): Set up or update ALLOCNO_BAD_SPILL_P.
590         (update_bad_spill_attribute): New function.
591         (ira_build): Call it.
592
593         * ira-costs.c (record_reg_classes): Set up ALLOCNO_BAD_SPILL_P.
594         
595 2008-11-14  Jakub Jelinek  <jakub@redhat.com>
596
597         PR tree-optimization/38104
598         * gimplify.c (gimple_regimplify_operands): Add referenced vars
599         before calling mark_symbols_for_renaming, not after it.
600
601 2008-11-14  Kaz Kojima  <kkojima@gcc.gnu.org>
602
603         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Revert last change.
604         (OVERRIDE_OPTIONS): Likewise.
605
606 2008-11-14  Maxim Kuvyrkov  <maxim@codesourcery.com>
607             Andrew Stubbs  <ams@codesourcery.com>
608             Gunnar Von Boehn  <gunnar@genesi-usa.com>
609
610         PR target/36134
611         * config/m68k/m68k.md (addsi3_5200): Add a new alternative preferring
612         the shorter LEA insn over ADD.L where possible.
613
614 2008-11-14  Thomas Schwinge  <tschwinge@gnu.org>
615
616         * configure.ac (gcc_cv_libc_provides_ssp): Also consider GNU/Hurd
617         systems, which are assumend to always provide SSP-support in glibc.
618         Also consider GNU/kFreeBSD, GNU/kNetBSD systems in the `*-*-linux*'
619         case.
620         * configure: Regenerate.
621
622 2008-11-14  Jakub Jelinek  <jakub@redhat.com>
623
624         PR middle-end/36125
625         * function.c (gimplify_parameters): For callee copies parameters,
626         move TREE_ADDRESSABLE flag from the PARM_DECL to the local copy.
627
628 2008-11-13  Thomas Schwinge  <tschwinge@gnu.org>
629
630         PR target/28102
631         * config.gcc (*-*-gnu*): Move Alpha parts into the `alpha*-*-gnu*',
632         x86 parts into the `i[34567]86-*-linux*' and parts that are
633         independent of the processor architecture into the `*-*-linux*' cases.
634         (*-*-linux*): Consider `linux.opt' only for Linux-based configurations.
635         * config/i386/gnu.h (GLIBC_DYNAMIC_LINKER): Redefine.
636         (TARGET_OS_CPP_BUILTINS, LINK_SPEC): Don't redefine.
637         [TARGET_LIBC_PROVIDES_SSP] (TARGET_THREAD_SSP_OFFSET): Undefine.
638         * config/gnu.h (NO_IMPLICIT_EXTERN_C): Don't redefine.
639         (HURD_TARGET_OS_CPP_BUILTINS): Don't define, but instead...
640         (LINUX_TARGET_OS_CPP_BUILTINS): Redefine.
641
642 2008-11-13  Ruan Beihong  <ruanbeihong@gmail.com>
643
644         * config/mips/loongson.md (<u>div<mode>3, <u>mod<mode>3): New patterns.
645         * config/mips/loongson2ef.md (ls2_imult): Handle imul3nc.
646         (ls2_idiv): Likewise idiv3.
647         (ls2_prefetch): New reservation.
648         * config/mips/mips.h (ISA_HAS_PREFETCH): Add TARGET_LOONGSON_2EF.
649         * config/mips/mips.md (type): Add imul3nc and idiv3.
650         (length): Handle idiv3.
651         (any_mod): New code_iterator.
652         (u): Handle MOD and UMOD.
653         (mul<mode>3): Generate mul<mode>3_mul3_ls2ef on Loongson targets.
654         (prefetch): Handle TARGET_LOONGSON_2EF.
655
656 2008-11-13  Jakub Jelinek  <jakub@redhat.com>
657
658         PR c++/27017
659         * dwarf2out.c (prune_unused_types_walk_local_classes): New function.
660         (prune_unused_types_walk): Call it for non-perennial local classes.
661         Set die_mark to 2 if recursing on children.  If die_mark is 1 on
662         entry, just set it to 2 and recurse on children, don't walk attributes
663         again.
664
665 2008-11-13  Martin Michlmayr  <tbm@cyrius.com>
666
667         * c-common.c (warn_about_parentheses): Add missing whitespace
668         in warning.
669
670 2008-11-13  Paul Brook  <paul@codesourcery.com>
671
672         * doc/invoke.texi: Document --fix-cortex-m3.
673         * config/arm/arm.c (arm_override_options): Set fix_cm3_ldrd if
674         Cortex-M3 cpu is selected.
675         (output_move_double): Avoid overlapping base register and first
676         destination register when fix_cm3_ldrd.
677         * config/arm/arm.opt: Add mfix-cortex-m3-ldrd.
678
679 2008-11-13  Jakub Jelinek  <jakub@redhat.com>
680
681         PR bootstrap/38100
682         * gimple.h (gimple_range_check_failed): Remove prototype.
683         * gimple.c (gimple_check_failed): Don't check GCC_VERSION
684         in guarding #if.
685         (gimple_range_check_failed): Removed.
686
687 2008-11-13  Andrew Haley  <aph@redhat.com>
688
689         PR bootstrap/38088
690         * mcf.c (CAP_INFINITY): Use HOST_WIDEST_INT maximum, not GCC specific
691         __LONG_LONG_MAX__.
692
693 2008-11-12  Jakub Jelinek  <jakub@redhat.com>
694
695         PR c++/36478
696         Revert:
697         2007-05-07  Mike Stump  <mrs@apple.com>
698         * doc/invoke.texi (Warning Options): Document that -Wempty-body
699         also checks for and while statements in C++.
700
701 2008-11-12  Dodji Seketeli  <dodji@redhat.com>
702
703         PR debug/27574
704         * cgraph.h: New abstract_and_needed member to struct cgraph_node.
705         * cgraphunit.c (cgraph_analyze_functions): Flag abstract functions
706         - which clones are reachable - as "abstract and needed".
707         * cgraph.c (cgraph_release_function_body):  If a node is
708         "abstract and needed", do not release its DECL_INITIAL() content
709         that will be needed to emit debug info.
710
711 2008-11-12  Steve Ellcey  <sje@cup.hp.com>
712
713         PR target/27880
714         * configure.ac (GCC_CHECK_UNWIND_GETIPINFO): Use this macro
715         to set HAVE_GETIPINFO.
716         * aclocal.m4: Include ../config/unwind_ipinfo.m4.
717         * configure: Regenerate.
718         * config.in: Regenerate.
719
720 2008-11-12  Jack Howarth  <howarth@bromo.med.uc.edu>
721
722         PR bootstrap/38010
723         * gcc/config.gcc: Use darwin9.h on darwin10 as well.
724
725 2008-11-12  Jakub Jelinek  <jakub@redhat.com>
726
727         Revert:
728         2008-10-21  Jakub Jelinek  <jakub@redhat.com>
729         * gimplify.c (gimplify_expr): Drop TREE_OVERFLOW from INTEGER_CSTs.
730
731 2008-11-12  Jason Merrill  <jason@redhat.com>
732
733         PR c++/38007
734         * c-common.c (c_common_signed_or_unsigned_type): Remove C++
735         special casing.
736
737 2008-11-12  Anatoly Sokolov  <aesok@post.ru>
738
739         * config/avr/avr.c (avr_mcu_t): Add atmega16hvb, atmega32hvb,
740         atmega4hvd, atmega8hvd, atmega64c1, atmega64m1, atmega16u4 and
741         atmega32u6 devices.
742         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
743         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
744
745 2008-11-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
746
747         * gcc/config/s390/s390.h (INITIAL_FRAME_ADDRESS_RTX): Remove
748         packed-stack special handling.
749         (FRAME_ADDR_RTX): Add definition.
750
751 2008-11-12  Jakub Jelinek  <jakub@redhat.com>
752
753         PR target/35366
754         * fold-const.c (native_encode_string): New function.
755         (native_encode_expr): Use it for STRING_CST.
756
757 2008-11-12  DJ Delorie  <dj@redhat.com>
758
759         * config/m32c/cond.md (cond_to_int peephole2): Don't eliminate the
760         insns if the intermediate value will be used later.
761
762 2008-11-12  Andreas Schwab  <schwab@suse.de>
763
764         * config/m68k/m68k.c (print_operand): Mask off extra extension
765         bits when writing out the representation of real values.
766
767 2008-11-12  Ira Rosen  <irar@il.ibm.com>
768
769         PR tree-optimization/38079
770         * tree-vect-analyze.c (vect_analyze_data_refs): Replace dump_file
771         with vect_dump.
772
773 2008-11-12  Jakub Jelinek  <jakub@redhat.com>
774
775         PR c++/35334
776         * c-pretty-print.c (pp_c_complex_expr): New function.
777         (pp_c_postfix_expression) <case COMPLEX_EXPR>: Call it.
778
779         PR target/35366
780         * expr.c (expand_expr_addr_expr_1): If EXP needs bigger alignment
781         than INNER and INNER is a constant, forcibly align INNER as much
782         as needed.
783
784 2008-11-11  Richard Sandiford  <rdsandiford@googlemail.com>
785
786         * cse.c (fold_rtx): Remove redundant gen_rtx_CONST.
787
788 2008-11-11  Richard Sandiford  <rdsandiford@googlemail.com>
789
790         PR rtl-optimization/37363
791         * simplify-rtx.c (simplify_plus_minus): Don't create
792         (const (minus ...)) expresisons.
793
794 2008-11-11  Eric Botcazou  <ebotcazou@adacore.com>
795
796         * ira-lives.c (process_bb_node_lives): Restore EH_RETURN_DATA_REGNO
797         handling.
798
799 2008-11-10  Catherine Moore  <clm@codesourcery.com>
800
801         * config.gcc (mips64vrel-*-elf*): Include the tm_file
802         prior to vr.h.
803         * config/mips/linux.h (LINUX_DRIVER_SELF_SPECS): New.
804         (BASE_DRIVER_SELF_SPECS): Remove.
805         (DRIVER_SELF_SPECS): New definition.
806         * config/mips/elfoabi.h: (DRIVER_SELF_SPECS): Include
807         BASE_DRIVER_SELF_SPECS.
808         * config/mips/sde.h: Likewise.
809         * config/mips/iris6.h: Likewise.
810         * config/mips/vr.h: Likewise.
811         * config/mips/mips.h (BASE_DRIVER_SELF_SPECS): New. 
812
813 2008-11-10  Vladimir Makarov  <vmakarov@redhat.com>
814
815         PR rtl-optimizations/37948
816         * ira-int.h (struct ira_allocno_copy): New member constraint_p.
817         (ira_create_copy, ira_add_allocno_copy): New parameter.
818
819         * ira-conflicts.c (process_regs_for_copy): New parameter.  Pass it
820         to ira_add_allocno_copy.
821         (process_reg_shuffles, add_insn_allocno_copies): Pass a new
822         parameter to process_regs_for_copy.
823         (propagate_copies): Pass a new parameter to ira_add_allocno_copy.
824         Fix typo in passing second allocno to ira_add_allocno_copy.
825
826         * ira-color.c (update_conflict_hard_regno_costs): Use head of
827         coalesced allocnos list.
828         (assign_hard_reg): Ditto.  Check that assigned allocnos are not in
829         the graph.
830         (add_ira_allocno_to_bucket): Rename to add_allocno_to_bucket.
831         (add_ira_allocno_to_ordered_bucket): Rename to
832         add_allocno_to_ordered_bucket.
833         (push_ira_allocno_to_stack): Rename to push_allocno_to_stack.  Use
834         head of coalesced allocnos list.
835         (push_allocnos_to_stack): Remove calculation of ALLOCNO_TEMP.
836         Check that it is aready calculated.
837         (push_ira_allocno_to_spill): Rename to push_ira_allocno_to_spill.
838         (setup_allocno_left_conflicts_num): Use head of coalesced allocnos
839         list.
840         (coalesce_allocnos): Do extended coalescing too.
841
842         * ira-emit.c (add_range_and_copies_from_move_list): Pass a new
843         parameter to ira_add_allocno_copy.
844
845         * ira-build.c (ira_create_copy, ira_add_allocno_copy): Add a new
846         parameter.
847         (print_copy): Print copy origination too.
848
849         * ira-costs.c (scan_one_insn): Use alloc_pref for load from
850         equivalent memory.
851         
852 2008-11-10  Kaz Kojima  <kkojima@gcc.gnu.org>
853
854         PR rtl-optimization/37514
855         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Set
856         flag_ira_share_spill_slots to 2 if it's already non-zero.
857         (OVERRIDE_OPTIONS): Clear flag_ira_share_spill_slots if
858         flag_ira_share_spill_slots is 2.
859
860 2008-11-10  Kevin Buettner  <kevinb@redhat.com>
861
862         * config/m32c/prologue.md (prologue_enter_16): Set FB to SP - 2.
863         (prologue_enter_32): Set FB to SP - 4.
864
865 2008-11-10  DJ Delorie  <dj@redhat.com>
866
867         * config/m32c/m32c.c (m32c_const_ok_for_constraint_p): Add ImB
868         constraint for single-bit-clear in lower byte of HI constant, vs
869         Imb which just ignores the upper byte.
870         * config/m32c/predicates.md (m32c_1mask8_operand): Use it.
871         * config/m32c/bitops.md (andhi3_16, andhi3_24): Use it.
872         (iorhi3_16): Check for single bit set, not single bit clear.
873
874 2008-11-10  Janis Johnson  <janis187@us.ibm.com>
875
876         * doc/sourcebuild.texi (Torture Tests): Fix formatting for bullets.
877
878         * doc/sourcebuild.texi (Torture Tests): Fix formatting in example.
879
880 2008-11-10  Eric Botcazou  <ebotcazou@adacore.com>
881
882         * calls.c (store_unaligned_arguments_into_pseudos): Deal only with
883         values living in memory and use more precise alignment information.
884
885 2008-11-10  Jakub Jelinek  <jakub@redhat.com>
886
887         PR middle-end/35314
888         * tree-mudflap.c (mf_build_check_statement_for): Split then_block
889         after __mf_check call if the call must end a bb.
890
891 2008-11-10  Ralph Loader  <suckfish@ihug.co.nz>
892
893         PR middle-end/37807
894         PR middle-end/37809
895         * combine.c (force_to_mode): Do not process vector types.
896
897         * rtlanal.c (nonzero_bits1): Do not process vector types.
898         (num_sign_bit_copies1): Likewise.
899
900 2008-11-09  Thomas Schwinge  <tschwinge@gnu.org>
901
902         * config/i386/gnu.h: Add copyright and licensing header.
903         * config/gnu.h: Likewise.
904
905 2008-11-07  Andrew Pinski  <andrew_pinski@playstation.sony.com>
906
907         * fwprop.c (fwprop_done): Call df_remove_problem.
908
909 2008-11-07  Sebastian Pop  <sebastian.pop@amd.com>
910
911         PR middle-end/37379
912         * tree-scalar-evolution.c (instantiate_scev_1): Return
913         chrec_dont_know for VL_EXP_CLASS_P.
914         
915 2008-11-06  Uros Bizjak  <ubizjak@gmail.com>
916
917         * reg-stack.c (reg_to_stack): Add missing braces in memset
918         size calculation.
919
920 2008-11-06  Andrew Stubbs  <ams@codesourcery.com>
921
922         * config/arm/bpabi.h (PROFILE_HOOK): New undef.
923         (NO_PROFILE_COUNTERS): New define.
924
925 2008-11-06  David Edelsohn  <edelsohn@gnu.org>
926
927         PR target/26397
928         * config/rs6000/aix.h (LIBSTDCXX_STATIC): Define.
929         
930 2008-11-06  Kazu Hirata  <kazu@codesourcery.com>
931
932         PR target/35574
933         * config/sparc/constraints.md (D): New.
934         * config/sparc/predicates.md (const_double_or_vector_operand): New.
935         * config/sparc/sparc.c (sparc_extra_constraint_check): Handle the
936         'D' constraint.
937         * config/sparc/sparc.md (*movdf_insn_sp32_v9, *movdf_insn_sp64):
938         Use the 'D' constraint in addition to 'F' in some alternatives.
939         (DF splitter): Generalize for V64mode.
940         * doc/md.texi (SPARC): Document the 'D' constraint.
941
942 2008-11-06  Uros Bizjak  <ubizjak@gmail.com>
943
944         * reg-stack.c (reg_to_stack): Generate +QNaN using real_nan.
945
946 2008-11-06  Ben Elliston  <bje@au.ibm.com>
947
948         * gcc.c: Remove ancient comment about a bug in Sun cc.
949
950 2008-11-05  Janis Johnson  <janis187@us.ibm.com>
951
952         * doc/sourcebuild.texi (Torture Tests): Add ADDITIONAL_TORTURE_OPTIONS.
953
954 2008-11-06  Ben Elliston  <bje@au.ibm.com>      
955
956         * config/rs6000/rs6000.c (rs6000_override_options): Comment fix.
957
958 2008-11-06  Ben Elliston  <bje@au.ibm.com>
959
960         * config/rs6000/rs6000.opt (mwarn-cell-microcode): Improve option
961         description.
962
963 2008-11-05  Hans-Peter Nilsson  <hp@axis.com>
964
965         PR target/38016
966         * config/cris/cris.c (cris_order_for_addsi3): Test for !REG_P, not
967         just MEM_P.
968
969 2008-11-05  Martin Jambor  <mjambor@suse.cz>
970
971         PR middle-end/37861
972         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Don't turn
973         pointer arithmetics into array_ref if the array is accessed
974         through an indirect_ref.
975
976 2008-11-05  Richard Guenther  <rguenther@suse.de>
977
978         PR middle-end/37742
979         * tree-ssa.c (useless_type_conversion_p_1): Check different restrict
980         qualified pointer conversion before stripping qualifiers.
981         * gimplify.c (create_tmp_from_val): Use correctly qualified type.
982         * tree-flow.h (may_propagate_address_into_dereference): Declare.
983         * tree-ssa-ccp.c (may_propagate_address_into_dereference): New
984         function.
985         (ccp_fold): Use it.
986         * tree-ssa-forwprop.c (rhs_to_tree): Remove useless conversions,
987         properly canonicalize binary ops.
988         (forward_propagate_addr_expr_1): Use
989         may_propagate_address_into_dereference.
990
991 2008-11-05  Uros Bizjak  <ubizjak@gmail.com>
992
993         PR middle-end/37286
994         * reg-stack.c (subst_stack_regs_pat) [MINUS, DIV, MULT, PLUS]:
995         Initialize uninitialized input registers with a NaN.
996
997 2008-11-05  Tobias Grosser  <grosser@fim.uni-passau.de>
998
999         PR middle-end/37833
1000
1001         * graphite.c (scan_tree_for_params): Add POINTER_PLUS_EXPR.
1002
1003 2008-11-05  Tobias Grosser  <grosser@fim.uni-passau.de>
1004
1005         PR middle-end/37943
1006
1007         * graphite.c (scopdet_basic_block_info): Fix loops with multiple
1008         exits and conditions.
1009         * testsuite/gcc.dg/graphite/pr37943.c: New.
1010
1011 2008-11-04  Jakub Jelinek  <jakub@redhat.com>
1012             Andrew Pinski  <andrew_pinski@playstation.sony.com>
1013
1014         PR c/35430
1015         * c-common.c (warn_for_sign_compare): For complex result_type
1016         use component's type.
1017
1018 2008-11-04  Jakub Jelinek  <jakuB@redhat.com>
1019
1020         * print-tree.c (print_node): Use code instead of TREE_CODE (node).
1021
1022         * print-tree.c (print_node): Don't print DECL_INITIAL
1023         for PARM_DECL.
1024
1025         PR c/37106
1026         * c-common.c (parse_optimize_options): Save and restore
1027         flag_strict_aliasing around decode_options call.
1028
1029 2008-11-04  Uros Bizjak  <ubizjak@gmail.com>
1030
1031         * config/i386/driver-i386.c (enum vendor_signatures): New enum.
1032         (host_detect_local_cpu): Use it instead of casted strings to
1033         compare vendor signatures.
1034
1035 2008-11-03  Mikael Pettersson  <mikpe@it.uu.se>
1036
1037         PR target/37989
1038         * config/i386/mingw32.h (REAL_LIBGCC_SPEC): Only add libgcc_s.a
1039         or libgcc_eh.a to spec if ENABLE_SHARED_LIBGCC.
1040
1041 2008-11-03  Catherine Moore  <clm@codesourcery.com>
1042
1043         * config/mips.c (mips_conditional_register_usage):  Handle the
1044         DSP control register.
1045         * doc/extend.texi: Document the DSP control register.
1046
1047 2008-11-03  Steve Ellcey <sje@cup.hp.com>
1048             Jakub Jelinek  <jakub@redhat.com>
1049
1050         * omp-low.c (expand_omp_for_generic): If iter_type has different
1051         precision than type and type is a pointer type, cast n1 and n2
1052         first to an integer type with the same precision as pointers
1053         and only afterwards to iter_type.
1054
1055 2008-11-03  Richard Sandiford  <rdsandiford@googlemail.com>
1056
1057         * config/arm/arm.md (UNSPEC_PIC_BASE): Update documentation.
1058         (UNSPEC_GOTSYM_OFF): New unspec.
1059         (pic_add_dot_plus_four): Simplify the UNSPEC_PIC_BASE operands.
1060         (pic_add_dot_plus_eight): Likewise.
1061         (tls_load_dot_plus_eight): Likewise.  Update peephole2.
1062         * config/arm/thumb2.md (pic_load_dot_plus_four): Simplify the
1063         UNSPEC_PIC_BASE operands.
1064         * config/arm/arm.c (arm_load_pic_register): Use UNSPEC_GOTSYM_OFF.
1065         (arm_output_addr_const_extra): Handle it.
1066
1067 2008-11-03  Eric Botcazou  <ebotcazou@adacore.com>
1068
1069         * config/i386/i386.c (classify_argument) <ARRAY_TYPE>: Promote partial
1070         integer class to full integer class if the offset is not word-aligned.
1071
1072 2008-11-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1073
1074         PR rtl-opt/37782
1075         * loop-doloop.c (doloop_modify): Add from_mode argument that says what
1076         mode count is in.
1077         (doloop_optimize): Update call to doloop_modify.
1078
1079 2008-11-03  Eric Botcazou  <ebotcazou@adacore.com>
1080
1081         * tree-sra.c (bitfield_overlaps_p): Fix oversight.
1082
1083 2008-11-03  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
1084
1085         PR other/37463
1086         * configure.ac (gcc_cv_ld_ro_rw_mix): Move before
1087         gcc_cv_as_cfi_directive.
1088         (gcc_cv_as_cfi_directive) [*-*-solaris*]: Check if linker supports
1089         merging read-only and read-write sections or assembler emits
1090         read-write .eh_frame sections.
1091         * configure: Regenerate.
1092         
1093 2008-11-03  Nathan Froyd  <froydnj@codesourcery.com>
1094
1095         Revert:
1096         2008-10-31  Nathan Froyd  <froydnj@codesourcery.com>
1097
1098         * config/rs6000/rs6000.c (no_global_regs_above): Fix precedence
1099         problem.
1100         (rs6000_emit_prologue): Invert logic.
1101         * config/rs6000/rs6000.md (*save_gpregs_<mode>): Use explicit
1102         (reg:P 11) instead of match_operand.
1103         (*save_fpregs_<mode>): Likewise.
1104         (*restore_gpregs_<mode>): Likewise.
1105         (*return_and_restore_gpregs_<mode>): Likewise.
1106         (*return_and_restore_fpregs_<mode>): Likewise.
1107         * config/rs6000/spe.md (*save_gpregs_spe): Use explicit
1108         (reg:P 11) insted of match_operand.
1109         (*restore_gpregs_spe): Likewise.
1110         (*return_and_restore_gpregs_spe): Likewise.
1111
1112 2008-11-03  Harsha Jagasia  <harsha.jagasia@amd.com>
1113
1114         PR tree-optimization/37684
1115         * gcc.dg/graphite/pr37684.c: New.
1116         * graphite.c (exclude_component_ref): New.
1117         (is_simple_operand): Call exclude_component_ref.
1118
1119 2008-11-03  Sebastian Pop  <sebastian.pop@amd.com>
1120
1121         PR tree-optimization/36908
1122         * testsuite/gcc.dg/tree-ssa/pr36908.c: New.
1123         * tree-loop-distribution.c (number_of_rw_in_rdg): New.
1124         (number_of_rw_in_partition): New.
1125         (partition_contains_all_rw): New.
1126         (ldist_gen): Do not distribute when one of the partitions
1127         contains all the memory operations.
1128
1129 2008-11-03  Sebastian Pop  <sebastian.pop@amd.com>
1130
1131         * cfghooks.c (split_block): Set BB_IRREDUCIBLE_LOOP and
1132         EDGE_IRREDUCIBLE_LOOP.
1133
1134 2008-11-03  Bernd Schmidt  <bernd.schmidt@analog.com>
1135
1136         * config/bfin/bfin.c (bfin_optimize_loop): Properly handle case
1137         where we have one entry point in the loop which isn't the head.
1138
1139 2008-11-03  Richard Guenther  <rguenther@suse.de>
1140
1141         PR middle-end/37573
1142         * tree-data-ref.c (split_constant_offset_1): Fix tuplification.
1143
1144 2008-11-03  Jakub Jelinek  <jakub@redhat.com>
1145
1146         PR middle-end/37858
1147         * passes.c (execute_one_pass): Don't look at cfun->curr_properties
1148         for ipa and simple ipa passes.
1149
1150 2008-11-02  Richard Guenther  <rguenther@suse.de>
1151
1152         PR tree-optimization/37542
1153         * tree-ssa-pre.c (fully_constant_expression): Handle more cases.
1154         * tree-ssa-sccvn.c (vn_get_expr_for): Fix typo.
1155         (vn_nary_op_lookup_stmt): Adjust for unary reference trees.
1156         (vn_nary_op_insert_stmt): Likewise.
1157         (visit_use): Likewise.
1158
1159 2008-11-02  Anatoly Sokolov  <aesok@post.ru>
1160
1161         * config/avr/avr.md (UNSPEC_SWAP): Remove constants.
1162         (*swap): Remove.
1163         (rotlqi3, *rotlqi3_4, rotlhi3, *rotlhi3_8,
1164         rotlsi3, *rotlsi3_8, *rotlsi3_16, *rotlsi3_24): New patterns.
1165         (ashlqi3_const4, ashlqi3_const5, ashlqi3_const6, ashlqi3_l_const4,
1166         ashlqi3_l_const5, ashlqi3_l_const6, lshrqi3_const4, lshrqi3_const5,
1167         lshrqi3_const6, lshrqi3_l_const4, lshrqi3_l_const4, lshrqi3_l_const6
1168         peephole2's): Replace unspec with rotate.
1169         * config/avr/avr.c (avr_rtx_costs): Add ROTATE.
1170
1171 2008-11-02  Richard Guenther  <rguenther@suse.de>
1172
1173         PR tree-optimization/37991
1174         * tree-ssa-sccvn.h (copy_vuses_from_stmt): Remove.
1175         * tree-ssa-sccvn.c (copy_vuses_from_stmt): Make static.
1176         (set_ssa_val_to): Print if the value changed.
1177         (simplify_binary_expression): Strip useless conversions.
1178
1179 2008-11-01  Hans-Peter Nilsson  <hp@axis.com>
1180
1181         PR target/37939
1182         * config/cris/cris.c (cris_rtx_costs) <MULT>: Return 0 for an ADDI
1183         operand.
1184
1185 2008-11-01  Richard Guenther  <rguenther@suse.de>
1186
1187         PR middle-end/37976
1188         * builtins.c (fold_builtin_strspn): Return a size_t.
1189         (fold_builtin_strcspn): Likewise.
1190
1191 2008-10-31  Nathan Froyd  <froydnj@codesourcery.com>
1192
1193         * config/rs6000/rs6000.c (rs6000_file_start): Output gnu
1194         attribute for struct return convention.
1195
1196 2008-10-31  Nathan Froyd  <froydnj@codesourcery.com>
1197
1198         * config/rs6000/crtsavres.asm: Really, really delete.
1199
1200 2008-10-31  Nathan Froyd  <froydnj@codesourcery.com>
1201
1202         * config/rs6000/rs6000.c (no_global_regs_above): Fix precedence
1203         problem.
1204         (rs6000_emit_prologue): Invert logic.
1205         * config/rs6000/rs6000.md (*save_gpregs_<mode>): Use explicit
1206         (reg:P 11) instead of match_operand.
1207         (*save_fpregs_<mode>): Likewise.
1208         (*restore_gpregs_<mode>): Likewise.
1209         (*return_and_restore_gpregs_<mode>): Likewise.
1210         (*return_and_restore_fpregs_<mode>): Likewise.
1211         * config/rs6000/spe.md (*save_gpregs_spe): Use explicit
1212         (reg:P 11) insted of match_operand.
1213         (*restore_gpregs_spe): Likewise.
1214         (*return_and_restore_gpregs_spe): Likewise.
1215
1216 2008-10-28  Luis Machado  <luisgpm@br.ibm.com>
1217
1218         * gcc.h (DEFAULT_WORD_SWITCH_TAKES_ARG): Add "dumpbase" to the
1219         list of word switches that take args.
1220
1221 2008-10-30  Jakub Jelinek  <jakub@redhat.com>
1222
1223         * config/s390/s390.c (s390_mark_symbol_ref_as_used): New function.
1224         (s390_output_pool_entry): Call it through for_each_rtx.
1225
1226         PR middle-end/37730
1227         * expr.c (store_constructor): For vectors, if target is a MEM, use
1228         target's MEM_ALIAS_SET instead of elttype alias set.
1229
1230 2008-10-29  Kaz Kojima  <kkojima@gcc.gnu.org>
1231
1232         PR target/37909
1233         * config/sh/sh.c (untangle_mova): Return -1 when NEW_MOVA has
1234         no address.
1235
1236 2008-10-29  David Edelsohn  <edelsohn@gnu.org>
1237
1238         PR target/37878
1239         * config/rs6000/predicates.md (word_offset_memref_operand):
1240         Restructure code and look inside auto-inc/dec addresses.
1241         
1242 2008-10-29  Steve Ellcey  <sje@cup.hp.com>
1243
1244         PR target/32277
1245         * libgcov.c ( __gcov_indirect_call_profiler): Check
1246         TARGET_VTABLE_USES_DESCRIPTORS.
1247
1248 2008-10-29  Stefan Schulze Frielinghaus  <xxschulz@de.ibm.com>
1249
1250         * config/spu/spu.h (FRAME_GROWS_DOWNWARD): Define.
1251         (INITIAL_FRAME_POINTER_OFFSET): Remove.
1252         * config/spu/spu.c (spu_initial_elimination_offset): Calculate new
1253         offset if eliminating soft frame pointer.
1254         * config/spu/spu.md (stack_protect_set, stack_protect_test)
1255         (stack_protect_test_si): Add initial machine description
1256         for Stack Smashing Protector
1257
1258 2008-10-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1259
1260         PR 11492
1261         * c-common.c (min_precision): Move to...
1262         * tree.c (tree_int_cst_min_precision): ... to here. Renamed.
1263         * tree.h (tree_int_cst_min_precision): Declare.
1264         * c-common.h (min_precision): Delete declaration.
1265         * fold-const.c (tree_binary_nonnegative_warnv_p): Handle
1266         multiplication of non-negative integer constants.
1267         * c-decl.c (check_bitfield_type_and_width): Rename min_precision to
1268         tree_int_cst_min_precision.
1269         (finish_enum): Likewise.
1270
1271 2008-10-29  Joseph Myers  <joseph@codesourcery.com>
1272
1273         PR middle-end/36578
1274         * convert.c (convert_to_real): Do not optimize conversions of
1275         binary arithmetic operations between binary and decimal
1276         floating-point types.  Consider mode of target type in determining
1277         decimal type for arithmetic.  Unless
1278         flag_unsafe_math_optimizations, do not optimize binary conversions
1279         where this may change rounding behavior.
1280         * real.c (real_can_shorten_arithmetic): New.
1281         * real.h (real_can_shorten_arithmetic): Declare.
1282
1283 2008-10-29  Bernd Schmidt  <bernd.schmidt@analog.com>
1284         
1285         * config/bfin/bfin-protos.h (WA_05000257, WA_05000283, WA_05000315,
1286         ENABLE_WA_05000257, ENABLE_WA_05000283, ENABLE_WA_05000315): New.
1287         * config/bfin/bfin.c (bfin_cpus): Add these workaround bits as
1288         appropriate.
1289         (must_save_p): For some workarounds, interrupts need to clobber a
1290         P register.
1291         (expand_prologue_reg_save, expand_epilogue_reg_restore): Save LC0
1292         and LC1 for WA_05000257.
1293         (expand_interrupt_handler_prologue): Add dummy read of CHIPID for
1294         WA_05000283 and WA_05000315.
1295         * config/bfin/bfin.md (UNSPEC_VOLATILE_DUMMY): New constant.
1296         (movbi): Add alternative to set CC to 1; improve code for setting
1297         CC to 0.
1298         (dummy_load): New pattern.
1299
1300 2008-10-29  Jakub Jelinek  <jakub@redhat.com>
1301
1302         PR middle-end/37870
1303         * expmed.c (extract_bit_field_1): If int_mode_for_mode returns
1304         BLKmode for non-memory, convert using a wider MODE_INT mode
1305         or through memory.
1306
1307         PR middle-end/37913
1308         * tree-cfgcleanup.c (split_bbs_on_noreturn_calls): Only split bbs
1309         that haven't been removed yet.
1310
1311 2008-10-29  Bernd Schmidt  <bernd.schmidt@analog.com>
1312
1313         * config/bfin/bfin.c (struct machine_function): New member
1314         has_loopreg_clobber.
1315         (bfin_expand_movmem): Set it when generating memcpy insns.
1316         (n_regs_saved_by_prologue, expand_prologue_reg_save,
1317         expand_epilogue_reg_restore): If we have hardware loops,
1318         memcpy insns (indicated by has_loopreg_clobber) or function
1319         calls, we need to save the loop registers.
1320
1321 2008-10-28  H.J. Lu  <hongjiu.lu@intel.com>
1322
1323         * config/i386/i386.c (core2_cost): Fix typos in comments.
1324
1325 2008-10-28  Jakub Jelinek  <jakub@redhat.com>
1326
1327         PR c/37924
1328         * combine.c (make_compound_operation): Don't call make_extraction with
1329         non-positive length.
1330         (simplify_shift_const_1): Canonicalize count even if complement_p.
1331
1332 2008-10-28  Joseph Myers  <joseph@codesourcery.com>
1333
1334         * convert.c (strip_float_extensions): Do not remove or introduce
1335         conversions between binary and decimal floating-point types.
1336
1337 2008-10-28  Jakub Jelinek  <jakub@redhat.com>
1338
1339         PR middle-end/37931
1340         * fold-const.c (distribute_bit_expr): Convert common, left and
1341         right arguments to type.
1342
1343 2008-10-28  Nick Clifton  <nickc@redhat.com>
1344
1345         * config/mn10300/mn10300.h (CALL_REALLY_USED_REGISTERS): Define.
1346         * config/mn10300/mn10300.c (fp_regs_to_save): Test the
1347         call_really_used_regs array rather than the call_used_regs array.
1348         (mn10300_get_live_callee_saved_regs, expand_prologue,
1349         expand_epilogue, output_tst): Likewise.
1350
1351 2008-10-27  Jakub Jelinek  <jakub@redhat.com>
1352
1353         PR target/37378
1354         * df-scan.c (df_bb_refs_collect): Don't handle EH_USES here.
1355         (df_get_entry_block_def_set): Neither here.
1356         (df_get_regular_block_artificial_uses): Add EH_USES registers.
1357
1358         PR tree-optimization/37879
1359         * predict.c (tree_estimate_probability): Check if last_stmt is
1360         non-NULL before dereferencing it.
1361
1362 2008-10-27  Vladimir Makarov  <vmakarov@redhat.com>
1363
1364         * ira-int.h (ira_allocno): Add member updated_cover_class_cost.
1365         (ALLOCNO_UPDATED_COVER_CLASS_COST): New.
1366         (ira_fast_allocation): Remove the prototype.
1367         
1368         * ira-color.c (update_copy_costs, allocno_cost_compare_func,
1369         assign_hard_reg, calculate_allocno_spill_cost): Use updated costs.
1370         (color_pass): Modify the updated costs.
1371         (ira_color): Rename to color.  Make it static.
1372         (ira_fast_allocation): Rename to fast_allocation.  Make it static.
1373         (ira_color): New function.
1374         
1375         * ira-conflicts.c (process_regs_for_copy): Propagate hard reg cost
1376         change.
1377
1378         * ira-lives.c (last_call_num, allocno_saved_at_call): New
1379         variables.
1380         (set_allocno_live, clear_allocno_live, mark_ref_live,
1381         mark_ref_dead): Invalidate corresponding element of
1382         allocno_saved_at_call.
1383         (process_bb_node_lives): Increment last_call_num.  Setup
1384         allocno_saved_at_call.  Don't increase ALLOCNO_CALL_FREQ if the
1385         allocno was already saved.
1386         (ira_create_allocno_live_ranges): Initiate last_call_num and
1387         allocno_saved_at_call.
1388
1389         * ira-build.c (ira_create_allocno): Initiate
1390         ALLOCNO_UPDATED_COVER_CLASS_COST.
1391         (create_cap_allocno, propagate_allocno_info,
1392         remove_unnecessary_allocnos): Remove setting updated costs.
1393         (ira_flattening): Set up ALLOCNO_UPDATED_COVER_CLASS_COST.
1394
1395         * ira.c (ira):  Don't call ira_fast_allocation.
1396
1397         * ira-costs.c (setup_allocno_cover_class_and_costs): Don't set up
1398         updated costs.
1399         
1400 2008-10-27  Vladimir Makarov  <vmakarov@redhat.com>
1401
1402         PR middle-end/37813
1403         * ira-conflicts.c (process_regs_for_copy): Remove class subset check.
1404
1405         * ira-int.h (ira_hard_regno_cover_class): New.
1406
1407         * ira-lives.c (mark_reg_live, mark_reg_dead,
1408         process_bb_node_lives): Use ira_hard_regno_cover_class.
1409
1410         * ira.c (reg_class ira_hard_regno_cover_class): New global variable.
1411         (setup_hard_regno_cover_class): New function.
1412         (ira_init): Call setup_hard_regno_cover_class.
1413
1414         * ira-costs.c (cost_class_nums): Add comment.
1415         (find_allocno_class_costs): Initiate cost_class_nums.
1416         (setup_allocno_cover_class_and_costs): Check cost_class_nums.
1417
1418 2008-10-27  Vladimir Makarov  <vmakarov@redhat.com>
1419
1420         PR middle-end/37884
1421         * ira-build.c (copy_live_ranges_to_removed_store_destinations):
1422         Rename to copy_info_to_removed_store_destinations.  Propagate
1423         conflict hard regs and register stack attribute.
1424
1425 2008-10-26  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1426
1427         PR middle-end/37316
1428         * pa.c (function_arg_padding):  Pad complex and vector types
1429         upward in 64-bit runtime.
1430         (function_arg): Use BLKmode for PARALLEL in 64-bit runtime.
1431
1432 2008-10-26  Matthias Klose  <doko@ubuntu.com>
1433
1434         * doc/install.texi: Document requirements on antlr.
1435
1436 2008-10-25  Richard Sandiford  <rdsandiford@googlemail.com>
1437
1438         * config/mips/mips.h (REG_ALLOC_ORDER): Put call-clobbered registers
1439         first.
1440
1441 2008-10-24  Michael Meissner  <meissner@linux.vnet.ibm.com>
1442
1443         PR target/37841
1444         * function.c (locate_and_pad_parm): If FUNCTION_ARG_ADJUST_OFFSET
1445         is defined, use it to modify the constant offset.
1446
1447         * doc/tm.texi (FUNCTION_ARG_OFFSET): Document new macro.
1448
1449         * config/spu/spu.h (FUNCTION_ARG_OFFSET): New macro to move char
1450         and short arguments to the correct location as mandated by the ABI.
1451
1452 2008-10-24  Kaz Kojima  <kkojima@gcc.gnu.org>
1453
1454         PR rtl-optimization/37769
1455         * regmove.c (optimize_reg_copy_2): Update REG_INC note if needed.
1456
1457 2008-10-24  Kaz Kojima  <kkojima@gcc.gnu.org>
1458
1459         * config/sh/t-sh: Use $(MULTILIB_CFLAGS) when compiling to
1460         unwind-dw2-Os-4-200.o.
1461
1462 2008-10-24  Joseph Myers  <joseph@codesourcery.com>
1463
1464         * c-typeck.c (enum impl_conv): Remove ic_argpass_nonproto.
1465         (convert_for_assignment): Remove ic_argpass_nonproto cases.
1466
1467 2008-10-24  Jakub Jelinek  <jakub@redhat.com>
1468
1469         PR tree-optimization/36038
1470         * tree-ssa-loop-ivopts.c (add_old_iv_candidates): For pointer bases
1471         add sizetype IV with initial value zero instead of pointer type.
1472
1473 2008-10-24  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1474
1475         PR c/7543
1476         * value-prof.c (gimple_stringop_fixed_value): Use parentheses
1477         around bit operation.
1478         * profile.c (is_edge_inconsistent): Likewise.
1479         * fold-const.c (truth_value_p): Move from here...
1480         * tree.h (truth_value_p): ... to here.
1481         * c-tree.h (c_expr): Update description of original_code.
1482         * c-typeck.c (parser_build_unary_op): Set original_code.
1483         (parser_build_binary_op): Update call to warn_about_parentheses.
1484         * c-common.c (warn_about_parentheses): Take two additional
1485         arguments of the operands. Use a switch. Quote operators
1486         appropriately. Define macro APPEARS_TO_BE_BOOLEAN_EXPR_P.
1487         Add warning about !x | y and !x & y.
1488         * c-common.h (warn_about_parentheses): Update declaration.
1489
1490 2008-10-24  Jakub Jelinek  <jakub@redhat.com>
1491
1492         * Makefile.in (lang_checks_parallelized, check_gcc_parallelize,
1493         check_p_tool, check_p_vars, check_p_subno, check_p_comma,
1494         check_p_subwork, check_p_numbers, check_p_subdir, check_p_subdirs):
1495         New variables.
1496         (check-subtargets, check-%-subtargets, check-parallel-%): New targets.
1497         (check-%): For test targets listed in lang_checks_parallelized
1498         if -j is used and RUNTESTFLAGS doesn't specify tests to execute,
1499         run the testing in multiple make goals, possibly parallel, and
1500         afterwards run dg-extract-results.sh to merge the sum and log files.
1501
1502 2008-10-24  Richard Sandiford  <rdsandiford@googlemail.com>
1503
1504         * config/mips/mips.c (mips_canonicalize_move_class): New function.
1505         (mips_move_to_gpr_cost): Likewise.
1506         (mips_move_from_gpr_cost): Likewise.
1507         (mips_register_move_cost): Make more fine-grained.
1508
1509 2008-10-23  Tobias Grosser  <grosser@fim.uni-passau.de>
1510
1511         * graphite.c (graphite_apply_transformations): Check for
1512         -fgraphite-identity.
1513         * toplev.c (process_options): Add graphite_identity.
1514         * tree-ssa-loop.c (gate_graphite_transforms): Add graphite_identity.
1515
1516 2008-10-23  Bernd Schmidt  <bernd.schmidt@analog.com>
1517
1518         * config/bfin/bfin.c (bdesc_2arg): Add mulhisill, mulhisilh,
1519         mulhisihl and mulhisihh builtins.
1520
1521         From Jie Zhang  <jie.zhang@analog.com>
1522         * config/bfin/bfin.md (composev2hi): Put operands into vector
1523         with correct order.
1524         
1525 2008-10-22  Chao-ying Fu  <fu@mips.com>
1526
1527         * config/mips/mips.opt (msmartmips): Accept -mno-smartmips.
1528
1529 2008-10-22  Bernd Schmidt  <bernd.schmidt@analog.com>
1530
1531         From Mike Frysinger  <michael.frysinger@analog.com>
1532         * config/bfin/bfin-protos.h (bfin_cpu_type): Add BFIN_CPU_BF512,
1533         BFIN_CPU_BF514, BFIN_CPU_BF516, and BFIN_CPU_BF518.
1534         * config/bfin/bfin.c (bfin_cpus[]): Add 0.0 for bf512, bf514, bf516,
1535         and bf518.  Add 0.2 for bf522, bf523, bf524, bf526, and bf527.
1536         Add 0.6 for bf533, bf532, and bf531.  Add 0.5 for bf538 and bf539.
1537         Add 0.2 for bf542, bf544, bf547, bf548, and bf549.
1538         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF512__
1539         for BFIN_CPU_BF512, __ADSPBF514__ for BFIN_CPU_BF514, __ADSPBF516__
1540         for BFIN_CPU_BF516, and __ADSPBF518__ for BFIN_CPU_BF518.  Define
1541         __ADSPBF51x__ for all of them.
1542         * config/bfin/elf.h (LIB_SPEC): Select proper linker scripts for
1543         -mcpu bf512, bf514, bf516, and bf518.
1544         * config/bfin/t-bfin-elf (MULTILIB_MATCHES): Select bf532-none for
1545         bf512-none, bf514-none, bf516-none, and bf518-none.
1546         * config/bfin/t-bfin-linux (MULTILIB_MATCHES): Likewise.
1547         * config/bfin/t-bfin-uclinux (MULTILIB_MATCHES): Likewise.
1548         * doc/invoke.texi (Blackfin Options): Document that
1549         -mcpu now accepts bf512, bf514, bf516, and bf518.
1550
1551 2008-10-22  Jakub Jelinek  <jakub@redhat.com>
1552
1553         PR middle-end/37882
1554         * fold-const.c (build_range_type): For 1 .. signed_max
1555         range call build_nonstandard_inter_type if signed_type_for
1556         returned a type with bigger precision.
1557
1558 2008-10-22  Richard Guenther  <rguenther@suse.de>
1559
1560         * tree.def (COMPLEX_TYPE): Constrain element type.
1561         * tree.c (build_complex_type): Assert that.
1562         * tree-ssa-structalias.c (could_have_pointers): Complex types
1563         cannot have pointers.
1564
1565 2008-10-22  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1566
1567         PR c/30949
1568         * c-typeck.c (convert_for_assignment): Do not give declaration's
1569         location for builtins. Spell out which type was expected and which
1570         was given.
1571
1572 2008-10-22  Nick Clifton  <nickc@redhat.com>
1573
1574         * config/frv/frv.h (HARD_REGNO_RENAME_OK): Define.  Do not allow
1575         the fdpic register to be a target when running in fdpic mode.
1576
1577 2008-10-22 Rafael Espindola  <espindola@google.com>
1578
1579         * ipa-struct-reorg.c (create_new_alloc_sites): Properly insert the
1580         newly created statements.
1581
1582 2008-10-22  Kaz Kojima  <kkojima@gcc.gnu.org>
1583
1584         PR target/37633
1585         * config/sh/sh.c (sh_hard_regno_mode_ok): New function.
1586         * config/sh/sh.h (HARD_REGNO_MODE_OK): Use it.
1587         * config/sh/sh-protos.h (sh_hard_regno_mode_ok): Declare.
1588
1589 2008-10-22  Jakub Jelinek  <jakub@redhat.com>
1590
1591         PR target/37880
1592         * doc/invoke.texi: Fix spelling of -mlarge-data-threshold option.
1593         Adjust -mcmodel=medium description for 2005-07-31 changes.
1594
1595 2008-10-22  Jan Hubicka  <jh@suse.cz>
1596             Jakub Jelinek  <jakub@redhat.com>
1597
1598         PR middle-end/35853
1599         * doc/invoke.texi: Remove references to obsoleted -d dumps.
1600
1601 2008-10-21  Richard Henderson  <rth@redhat.com>
1602
1603         PR 37815
1604         * emit-rtl.c (get_spill_slot_decl): Export.
1605         * emit-rtl.h (get_spill_slot_decl): Declare.
1606         * var-tracking.c (vt_add_function_parameters): Relax assertion
1607         on the contents of MEM_EXPR in a PARM_DECL to include a spill slot.
1608
1609 2008-10-21  Bob Wilson  <bob.wilson@acm.org>
1610
1611         * var-tracking.c (insn_stack_adjust_offset_pre_post): If insn has a
1612         REG_FRAME_RELATED_EXPR note, examine the pattern from the note instead
1613         of from insn.
1614
1615 2008-10-21  Adam Nemet  <anemet@caviumnetworks.com>
1616
1617         PR middle-end/37669
1618         * tree-ssa-ccp.c (ccp_fold_builtin): Only allow one argument to be
1619         processed by get_maxval_strlen.
1620
1621 2008-10-21  David Edelsohn  <edelsohn@gnu.org>
1622
1623         PR target/35485
1624         * tree.c (get_file_function_name): Copy first_global_object_name.
1625         Centralize call to clean_symbol_name.
1626
1627 2008-10-21  Sandra Loosemore  <sandra@codesourcery.com>
1628
1629         * config.gcc (powerpc-*): Make t-ppcgas imply usegas.h.
1630         * config/svr4.h (SVR4_ASM_SPEC): New.
1631         (ASM_SPEC): Inherit from SVR4_ASM_SPEC.
1632         * config/rs6000/sysv4.h (ASM_SPEC): Inherit from SVR4_ASM_SPEC.
1633
1634         * doc/invoke.texi (Option Summary): Add -T to linker options.
1635         (Link Options): Document -T.
1636         
1637 2008-10-21  Jakub Jelinek  <jakub@redhat.com>
1638
1639         * tree-inline.c (tree_inlinable_function_p): Remove tuples
1640         debugging hack.
1641
1642         * gimplify.c (gimplify_expr): Drop TREE_OVERFLOW from INTEGER_CSTs.
1643
1644         PR debug/37020
1645         * c-decl.c (merge_decls): Don't call outlining_inline_function hook.
1646
1647 2008-10-20  Daniel Berlin  <dberlin@dberlin.org>
1648
1649         * tree-ssa-pre.c (insert_into_preds_of_block): Don't rewrite constant
1650         part of expression.
1651
1652 2008-10-20  Tobias Schlüter  <tobi@gcc.gnu.org>
1653
1654         * doc/install.texi: Fix typos in previous patch.
1655
1656 2008-10-19  Tobias Schlüter  <tobi@gcc.gnu.org>
1657
1658         * doc/install.texi: Document in-tree building of gcc and mpfr.
1659
1660 2008-10-19  Richard Guenther  <rguenther@suse.de>
1661
1662         * tree-ssa-alias.c (may_alias_p): Remove bogus shortcut.
1663
1664 2008-10-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1665
1666         PR c/30260
1667         * c-decl.c (finish_enum): Convert non-integer enumerators to enum type.
1668         (build_enumerator): Convert enumerators that fit in integer to
1669         integer type.
1670
1671 2008-10-18  Uros Bizjak  <ubizjak@gmail.com>
1672
1673         * config/i386/i386.md (unnamed peephole2): Do not force memory
1674         operands of arith or logical instructions into registers for
1675         non-TARGET_READ_MODIFY targets.
1676
1677         (ffs_cmove): Change operand 0 predicate to register_operand.
1678         Change operand 1 predicate to nonimmediate_operand.
1679         (ffsdi2): Ditto.
1680         (*ffs_no_cmove): Change operand 0 predicate to register_operand.
1681
1682 2008-10-18  Richard Guenther  <rguenther@suse.de>
1683
1684         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Guard
1685         VIEW_CONVERT_EXPR case against invalid gimple.
1686
1687 2008-10-17  Andreas Krebbel  <krebbel1@de.ibm.com>
1688
1689         * c-parser.c (c_parser_binary_expression): Silence the
1690         uninitialized variable warning emitted for binary_loc.
1691
1692 2008-10-16  Daniel Berlin  <dberlin@dberlin.org>
1693
1694         * tree-ssa-pre.c (phi_translate_set): Add constants to phi
1695         translation cache.
1696
1697 2008-10-16  Joseph Myers  <joseph@codesourcery.com>
1698
1699         PR c/33192
1700         * c-typeck.c (build_unary_op): Use omit_one_operand for
1701         IMAGPART_EXPR of real argument.
1702
1703 2008-10-16  Jakub Jelinek  <jakub@redhat.com>
1704
1705         PR tree-optimization/37664
1706         * fold-const.c (fold_binary): When optimizing comparison with
1707         highest or lowest type's value, don't consider TREE_OVERFLOW.
1708
1709 2008-10-16  David Edelsohn  <edelsohn@gnu.org>
1710
1711         PR target/35483
1712         * Makefile.in (coverage.o): Depend on $(TM_P_H).
1713         * coverage.c: Include tm_p.h.
1714         * config/rs6000/x-aix (jc1): Override LDFLAGS.
1715         * config/rs6000/xcoff.h (ASM_GENERATE_INTERNAL_LABEL): Strip
1716         dollar signs from PREFIX.
1717         * config/rs6000/rs6000.c (output_toc): Use RS6000_OUTPUT_BASENAME
1718         instead of manual strip_name_encoding.
1719
1720 2008-10-16  Richard Guenther  <rguenther@suse.de>
1721
1722         PR middle-end/37418
1723         * tree-ssa.c (useless_type_conversion_p_1): Do not treat
1724         volatile qualified functions or methods as relevant.
1725
1726 2008-10-16  Jakub Jelinek  <jakub@redhat.com>
1727
1728         PR tree-optimization/37525
1729         * tree.c (int_fits_type_p): Rewrite using double_int.  Zero extend
1730         sizetype unsigned constants, both in the case of C and bounds.
1731
1732 2008-10-15  Jan Hubicka  <jh@suse.cz>
1733
1734         * ira-emit.c (change_regs): Return false when replacing reg by itself.
1735
1736 2008-10-14  Vladimir Makarov  <vmakarov@redhat.com>
1737
1738         PR target/37633
1739         * ira-costs.c (ira_tune_allocno_costs_and_cover_classes): Check
1740         HARD_REGNO_CALL_PART_CLOBBERED.
1741
1742 2008-10-15  Vladimir Makarov  <vmakarov@redhat.com>
1743
1744         PR middle-end/37535
1745         * ira-lives.c (mark_early_clobbers): Remove.
1746         (make_pseudo_conflict, check_and_make_def_use_conflicts,
1747         check_and_make_def_conflicts,
1748         make_early_clobber_and_input_conflicts,
1749         mark_hard_reg_early_clobbers): New functions.
1750         (process_bb_node_lives): Call
1751         make_early_clobber_and_input_conflicts and
1752         mark_hard_reg_early_clobbers.  Make hard register inputs live again.
1753
1754         * doc/rtl.texi (clobber): Change descriotion of RA behaviour for
1755         early clobbers of pseudo-registers.
1756         
1757 2008-10-15  Vladimir Makarov  <vmakarov@redhat.com>
1758
1759         PR middle-end/37674
1760         * ira-build.c (ira_flattening): Recalculate
1761         ALLOCNO_TOTAL_NO_STACK_REG_P and ALLOCNO_TOTAL_CONFLICT_HARD_REGS
1762         from the scratch instead of the propagation.
1763         
1764 2008-10-15  Richard Sandiford  <rdsandiford@googlemail.com>
1765
1766         * doc/rtl.texi (const_double): Remove the "addr" operand.
1767         Describe CONST_DOUBLE_* macros under const_double rather
1768         than const_vector.
1769         (const_fixed): Fix the operand description.
1770         (const): Add an @findex directive.
1771         (CONST0_RTX, CONST1_RTX, CONST2_RTX): Move description
1772         after the constant rtl table.
1773         (fix): Combine floating-point and fixed-point descriptions.
1774         Fix hyphenation.
1775         * sched-deps.c (sched_analyze_2): Remove reference to
1776         CONST_DOUBLE_CHAIN.
1777
1778 2008-10-15  Richard Sandiford  <rdsandiford@googlemail.com>
1779
1780         * config/mn10300/mn10300.h (OUTPUT_ADDR_CONST_EXTRA): Handle
1781         UNSPEC_GOTSYM_OFFs.
1782         * config/mn10300/mn10300.c (legitimate_pic_operand_p): Return true
1783         for UNSPEC_GOTSYM_OFFs.
1784         * config/mn10300/mn10300.md (UNSPEC_GOTSYM_OFF): New unspec.
1785         (add_GOT_to_pic_reg): Use it.
1786         * config/mn10300/constraints.md (S): Allow UNSPEC_GOTSYM_OFF.
1787
1788 2008-10-15  Jan Sjodin  <jan.sjodin@amd.com>
1789             Harsha Jagasia  <harsha.jagasia@amd.com>
1790
1791         PR tree-optimization/37485
1792         * graphite.c (gmp_cst_to_tree): Moved.
1793         (iv_stack_entry_is_constant): New.
1794         (iv_stack_entry_is_iv): New.
1795         (loop_iv_stack_push): Renamed to loop_iv_stack_push_iv.
1796         (loop_iv_stack_insert_constant): New.
1797         (loop_iv_stack_pop): Use new datatpype.
1798         (loop_iv_stack_get_iv): Same.
1799         (loop_iv_stack_get_iv_from_name): Same.
1800         (loop_iv_stack_debug): Renamed to debug_loop_iv_stack.
1801         (loop_iv_stack_patch_for_consts): New.
1802         (loop_iv_stack_remove_constants): New.
1803         (graphite_create_new_loop): Use loop_iv_stack_push_iv.
1804         (translate_clast): Call loop_iv_stack_patch_for_consts and
1805         loop_iv_stack_remove_constants.
1806         (gloog): Use new datatype.  Redirect construction edge to end
1807         block to avoid accidental deletion.
1808         * graphite.h (enum iv_stack_entry_kind): New.  Tag for data in
1809         iv stack entry.
1810         (union iv_stack_entry_data): New.  Data in iv stack entry.
1811         (struct iv_stack_entry): New.  Datatype for iv stack entries.
1812
1813 2008-10-15  Sebastian Pop  <sebastian.pop@amd.com>
1814
1815         * tree-data-ref.c (stmt_simple_memref_p): Fix memleak.
1816         * graphite.c (free_scop): Same.
1817         (build_scops): Same.
1818         (free_scattering): New.
1819         (build_cloog_prog): Call free_scattering.
1820         (patch_phis_for_virtual_defs): Fix memleak.
1821         (graphite_trans_bb_strip_mine): Same.
1822         (limit_scops): Same.
1823
1824 2008-10-15  Sebastian Pop  <sebastian.pop@amd.com>
1825             Harsha Jagasia  <harsha.jagasia@amd.com>
1826
1827         PR tree-optimization/37828
1828         * graphite.c (graphite_trans_loop_block): Do not loop block
1829         single nested loops.
1830
1831 2008-10-15  Sebastian Pop  <sebastian.pop@amd.com>
1832
1833         PR tree-optimization/37686
1834         * tree-loop-linear.c (linear_transform_loops): Build a
1835         loop nest vector.  Pass it to lambda_compute_access_matrices.
1836         * tree-data-ref.h (struct access_matrix): Store the loop nest
1837         relative to which it encodes the information.
1838         (AM_LOOP_NEST_NUM): Renamed AM_LOOP_NEST.
1839         (am_vector_index_for_loop): Reimplemented: iterate over the
1840         loop nest for finding the loop index in the access matrix.
1841         (lambda_compute_access_matrices): Update declaration.
1842         * lambda-code.c (build_access_matrix): Pass the loop nest and
1843         record it.
1844         (lambda_compute_access_matrices): Same.
1845
1846 2008-10-15  Andreas Krebbel  <krebbel1@de.ibm.com>
1847
1848         * config/s390/s390.h: (TARGET_DFP): This requires TARGET_HARD_FLOAT.
1849         * config/s390/s390.md: Replace "TARGET_HARD_FLOAT &&
1850         TARGET_(HARD_)DFP" with only TARGET_(HARD_)DFP since this
1851         already implies hard float.  Also fix several insn condition
1852         with TARGET_DFP which shall require TARGET_HARD_DFP instead.
1853
1854 2008-10-15  David Edelsohn  <edelsohn@gnu.org>
1855
1856         PR target/35483
1857         Based on patches by Laurent Vivier.
1858         * xcoffout.h (DBX_FINISH_STABS): Translate dollar sign to underscore.
1859         * config/rs6000/rs6000-protos.h (rs6000_xcoff_strip_dollar): Declare.
1860         * config/rs6000/xcoff.h (ASM_DECLARE_FUNCTION_NAME): Translate
1861         dollar sign to underscore.
1862         (ASM_OUTPUT_EXTERNAL): Same.
1863         (ASM_OUTPUT_LABELREF): New.
1864         * config/rs6000/rs6000.c (rs6000_xcoff_strip_dollar): New.
1865
1866         * config/rs6000/aix51.h (TARGET_USE_JCR_SECTION): Define.
1867         * config/rs6000/aix52.h (TARGET_USE_JCR_SECTION): Define.
1868         * config/rs6000/aix53.h (TARGET_USE_JCR_SECTION): Define.
1869         * config/rs6000/aix61.h (TARGET_USE_JCR_SECTION): Define.
1870
1871 2008-10-15  Jakub Jelinek  <jakub@redhat.com>
1872
1873         PR tree-optimization/36881
1874         * tree-switch-conversion.c (check_final_bb): For flag_pic, check
1875         that each value doesn't need runtime relocations, for !flag_pic
1876         check that each value is just a valid initializer constant.
1877
1878 2008-10-14  Richard Sandiford  <rdsandiford@googlemail.com>
1879
1880         * config/mips/mips.h (reg_class): Remove HI_AND_GR_REGS,
1881         LO_AND_GR_REGS, HI_AND_FP_REGS, COP0_AND_GR_REGS, COP2_AND_GR_REGS,
1882         COP3_AND_GR_REGS, ALL_COP_REGS and ALL_COP_AND_GR_REGS.
1883         Add GR_AND_MD0_REGS, GR_AND_MD1_REGS, GR_AND_MD_REGS and
1884         GR_AND_ACC_REGS.
1885         (REG_CLASS_NAMES): Update accordingly.
1886         (REG_CLASS_CONTENTS): Likewise.  Use the class name in the comments,
1887         rather than an unpredictable descriptive string.
1888         * config/mips/mips.c (mips_register_move_cost): Remove comment.
1889         (mips_register_move_cost): Check for specific COP*_REGS classes,
1890         instead of ALL_COP_AND_GR_REGS.
1891         (mips_ira_cover_classes): New function.
1892         (mips_secondary_reload_class): Remove MTLO and MTHI workarounds.
1893         (TARGET_IRA_COVER_CLASSES): Define.
1894
1895 2008-10-14  Douglas Gregor  <doug.gregor@gmail.com>
1896
1897         PR c++/37553
1898         * tree.c (build_type_attribute_qual_variant): Hash on the
1899         unqualified type, and don't overwrite an existing
1900         (type_hash_eq): Make the TYPE_NAME of the types significant, to
1901         allow distinguishing between wchar_t and its underlying type. This
1902         also means that we'll retain a little more typedef information.
1903
1904 2008-10-14  Andrey Belevantsev  <abel@ispras.ru>
1905             Dmitry Melnik  <dm@ispras.ru>
1906             Dmitry Zhurikhin  <zhur@ispras.ru>
1907             Alexander Monakov  <amonakov@ispras.ru>
1908             Maxim Kuvyrkov  <maxim@codesourcery.com>
1909
1910         * target.h (struct gcc_target): Update prototypes of needs_block_p
1911         and gen_spec_check.
1912         * haifa-sched.c (create_check_block_twin): Update calls to the above.
1913         * sel-sched.c (create_speculation_check): Likewise.
1914         * doc/tm.texi: Provide documentation for new target hooks.
1915                 
1916         * config/ia64/ia64.c: Include sel-sched.h.  Rewrite speculation hooks.
1917         (ia64_gen_spec_insn): Removed.
1918         (get_spec_check_gen_function, insn_can_be_in_speculative_p,
1919         ia64_gen_spec_check): New static functions.
1920         (ia64_alloc_sched_context, ia64_init_sched_context,
1921         ia64_set_sched_context, ia64_clear_sched_context,
1922         ia64_free_sched_context, ia64_get_insn_spec_ds,
1923         ia64_get_insn_checked_ds, ia64_skip_rtx_p): Declare functions.
1924         (ia64_needs_block_p): Change prototype.
1925         (ia64_gen_check): Rename to ia64_gen_spec_check.
1926         (ia64_adjust_cost): Rename to ia64_adjust_cost_2.  Add new parameter
1927         into declaration, add special memory dependencies handling.
1928         (TARGET_SCHED_ALLOC_SCHED_CONTEXT, TARGET_SCHED_INIT_SCHED_CONTEXT,
1929         TARGET_SCHED_SET_SCHED_CONTEXT, TARGET_SCHED_CLEAR_SCHED_CONTEXT,
1930         TARGET_SCHED_FREE_SCHED_CONTEXT, TARGET_SCHED_GET_INSN_SPEC_DS,
1931         TARGET_SCHED_GET_INSN_CHECKED_DS, TARGET_SCHED_SKIP_RTX_P):
1932         Define new target hooks.
1933         (TARGET_SCHED_GEN_CHECK): Rename to TARGET_SCHED_GEN_SPEC_CHECK.
1934         (ia64_optimization_options): Turn on selective scheduling with -O3,
1935         disable -fauto-inc-dec. Set mflag_sched_control_spec to true by
1936         default with selective scheduling.
1937         (ia64_override_options): Initialize align_loops and align_functions
1938         to 32 and 64, respectively.  Set global selective scheduling flags
1939         according to target-dependent flags.
1940         (rtx_needs_barrier): Support UNSPEC_LDS_A.
1941         (group_barrier_needed): Use new mstop-bit-before-check flag.
1942         Add heuristic.
1943         (dfa_state_size): Make global.
1944         (spec_check_no, max_uid): Remove.
1945         (mem_ops_in_group, current_cycle): New variables.
1946         (ia64_sched_init): Disable checks for !SCHED_GROUP_P after reload.
1947         Initialize new variables.
1948         (is_load_p, record_memory_reference): New functions.
1949         (ia64_dfa_sched_reorder): Lower priority of loads when limit is
1950         reached.
1951         (ia64_variable_issue): Change use of current_sched_info to
1952         sched_deps_info.  Update comment.  Note if a load or a store is issued.
1953         (ia64_first_cycle_multipass_dfa_lookahead_guard_spec): Require a cycle
1954         advance if maximal number of loads or stores was issued on current
1955         cycle.
1956         (scheduled_good_insn): New static helper function.
1957         (ia64_dfa_new_cycle): Assert that last_scheduled_insn is set when
1958         a group barrier is needed.  Fix vertical spacing.  Guard the code
1959         doing state transition with last_scheduled_insn check.
1960         Mark that a stop bit should be before current insn if there was a 
1961         cycle advance.  Update current_cycle and mem_ops_in_group.
1962         (ia64_h_i_d_extended): Change use of current_sched_info to
1963         sched_deps_info. Reallocate stops_p by larger chunks.
1964         (struct _ia64_sched_context): New structure.
1965         (ia64_sched_context_t): New typedef.
1966         (ia64_alloc_sched_context, ia64_init_sched_context,
1967         ia64_set_sched_context, ia64_clear_sched_context,
1968         ia64_free_sched_context): New static functions.
1969         (gen_func_t): New typedef.
1970         (get_spec_load_gen_function): New function.
1971         (SPEC_GEN_EXTEND_OFFSET): Declare.      
1972         (ia64_set_sched_flags): Check common_sched_info instead of *flags.
1973         (get_mode_no_for_insn): Change the condition that prevents use of
1974         special hardware registers so it can now handle pseudos.
1975         (get_spec_unspec_code): New function.
1976         (ia64_skip_rtx_p, get_insn_spec_code, ia64_get_insn_spec_ds,
1977         ia64_get_insn_checked_ds, ia64_gen_spec_load): New static functions.
1978         (ia64_speculate_insn, ia64_needs_block_p): Support branchy checks
1979         during selective scheduling.
1980         (ia64_speculate_insn): Use ds_get_speculation_types when
1981         determining whether we need to change the pattern.
1982         (SPEC_GEN_LD_MAP, SPEC_GEN_CHECK_OFFSET): Declare.
1983         (ia64_spec_check_src_p): Support new speculation/check codes.
1984         (struct bundle_state): New field.
1985         (issue_nops_and_insn): Initialize it.
1986         (insert_bundle_state): Minimize mid-bundle stop bits.
1987         (important_for_bundling_p): New function.
1988         (get_next_important_insn): Use important_for_bundling_p.
1989         (bundling): When shifting TImode from unimportant insns, ignore
1990         also group barriers.  Assert that best state is found before
1991         the backward bundling pass.  Print number of mid-bundle stop bits.
1992         Minimize mid-bundle stop bits.  Check correct calculation of
1993         mid-bundle stop bits.
1994         (ia64_sched_finish, final_emit_insn_group_barriers): Fix formatting.
1995         (final_emit_insn_group_barriers): Emit stop bits before insns starting
1996         a new cycle.
1997         (sel2_run): New variable.
1998         (ia64_reorg): When flag_selective_scheduling2 is set, run the
1999         selective scheduling pass instead of schedule_ebbs.
2000         
2001         * config/ia64/ia64.md (speculable1, speculable2): New attributes.
2002         (UNSPEC_LDS_A): New UNSPEC.
2003         (movqi_internal, movhi_internal, movsi_internal, movdi_internal,
2004         movti_internal, movsf_internal, movdf_internal,
2005         movxf_internal): Make visible.  Add speculable* attributes.
2006         (output_c_nc): New mode attribute.
2007         (mov<mode>_speculative_a, zero_extend<mode>di2_speculative_a,
2008         mov<mode>_nc, zero_extend<mode>di2_nc,
2009         advanced_load_check_nc_<mode>): New insns.
2010         (zero_extend*): Add speculable* attributes.
2011
2012         * config/ia64/ia64.opt (msched_fp_mem_deps_zero_cost): New option.
2013         (msched-stop-bits-after-every-cycle): Likewise.
2014         (msched-max-memory-insns, msched-max-memory-insns-hard-limit):
2015         Likewise.
2016         (msched-spec-verbose): Remove.
2017         (msched-prefer-non-data-spec-insns,
2018         msched-prefer-non-control-spec-insns,
2019         msched-count-spec-in-critical-path,
2020         msel-sched-dont-check-control-spec): Use Target  Report Var
2021         instead of Common Report Var.
2022
2023         * config/ia64/itanium2.md: Remove incorrect bypass.
2024         
2025         * config/ia64/t-ia64 (ia64.o): Add dependency on sel-sched.h.
2026
2027 2008-10-14  Jakub Jelinek  <jakub@redhat.com>
2028
2029         PR middle-end/37805
2030         * opts.c (common_handle_option): Don't ICE on -fhelp=joined
2031         and -fhelp=separate.
2032
2033 2008-10-14  Ben Elliston  <bje@au.ibm.com>
2034
2035         * config/rs6000/rs6000.md (cell_micro): Fix formatting.
2036
2037 2008-10-13  Joseph Myers  <joseph@codesourcery.com>
2038
2039         * combine.c (simplify_set): Avoid calling LOAD_EXTEND_OP on
2040         non-integer modes.
2041
2042 2008-10-13  Matthias Klose  <doko@ubuntu.com>
2043
2044         * config/pa/linux-atomic.c: Work around missing header file
2045         for hppa64-linux-gnu targets.
2046
2047 2008-10-13  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2048             Kaushal Kantawala <Kaushal_Kantawala@playstation.sony.com>
2049             Trevor Smigiel  <Trevor_Smigiel@playstation.sony.com>
2050             Grace Cao  <grace_cao@playstation.sony.com>
2051
2052         * doc/invoke.texi (-mgen-cell-microcode): Document.
2053         (-mwarn-cell-microcode): Document.
2054         * cfglayout.c (locator_location): Export.
2055         * rtl.h (locator_location): Define prototype.
2056         * config/rs6000/predicates.md (cc_reg_not_micro_cr0_operand):
2057         New predicate.
2058         * rs6000/rs6000-protos.h (rs6000_final_prescan_insn): Define prototype.
2059         * config/rs6000/rs6000.opt (mgen-cell-microcode): New option.
2060         (mwarn-cell-microcode): New option.
2061         * rs6000/rs6000.c (rs6000_cell_dont_microcode): Delete unused variable.
2062         (rs6000_override_options): Set rs6000_gen_cell_microcode if tuning for
2063         cell and not already set.
2064         Turn off string instructions if not generating cell microcode.
2065         (rs6000_final_prescan_insn): New function that warns about microcoded
2066         instructions.
2067         * config/rs6000/rs6000.h (FINAL_PRESCAN_INSN): Define.
2068         * config/rs6000/rs6000.md
2069         Replace cc_reg_not_cr0_operand with cc_reg_not_micro_cr0_operand if
2070         the instruction would have been microcoded on the Cell.  Set
2071         cell_micro to always on unnamed patterns for the string instructions.
2072         (cell_micro): Update definition, remove load/store conditional
2073         microcoded.
2074         (sign_extend:DI): Define new pattern for non microcoded version.
2075         (sign_extend:SI): Likewise.
2076         (compare (div:P)): Set cell_micro to not.
2077         (andsi3): Define as an expand.
2078         (andsi3_mc): New pattern.
2079         (andsi3_nomc): New pattern.
2080         (andsi3_internal0_nomc): New pattern.
2081         (andsi3_internal2): Rename to ...
2082         (andsi3_internal2_mc): this and enable iff generating microcode.
2083         (andsi3_internal3): Rename to ...
2084         (andsi3_internal3_mc): this and enable iff generating microcode.
2085         (andsi3_internal4): Enable iif generating microcode.
2086         (andsi3_internal5): Rename to ..
2087         (andsi3_internal5_mc): this and enable iff generating microcode.
2088         (andsi3_internal5_nomc): New pattern.
2089         (extzvdi_internal1): Enable iff generating microcode.
2090         (extzvdi_internal2): Likewise.
2091         (rotlsi3_internal7): Set cell_micro to always if non immediate form.
2092         (anddi3): Change to expand.
2093         (anddi3_mc): Rename from anddi3.
2094         (anddi3_no_mc): New pattern.
2095         (anddi3_internal2): Rename to ..
2096         (anddi3_internal2_mc): this and enable iff generating microcode.
2097         (anddi3_internal2_nomc): New pattern.
2098         (anddi3_internal3): Rename to ..
2099         (anddi3_internal3_mc): this and enable iff generating microcode.
2100         (anddi3_internal3_nomc): New pattern.
2101         (movti_string): Set cell_micro to always if TARGET_STRING.
2102         (stmsi8): Set cell_micro to always.
2103         (stmsi7): Likewise.
2104         (stmsi6): Likewise.
2105         (stmsi5): Likewise.
2106         (stmsi4): Likewise.
2107         (stmsi3): Likewise.
2108         (stmsi8_power): Likewise.
2109         (stmsi7_power): Likewise.
2110         (stmsi6_power): Likewise.
2111         (stmsi5_power): Likewise.
2112         (stmsi4_power): Likewise.
2113         (stmsi3_power): Likewise.
2114         (movsi_update2): Enable iff generating microcode.
2115         (movhi_update3): Likewise.
2116         (lmw): Set cell_micro to always.
2117
2118 2008-10-13  Richard Sandiford  <rdsandiford@googlemail.com>
2119
2120         * config/s390/s390.md (UNSPEC_POOL_OFFSET): New constant.
2121         * config/s390/s390.c (machine_function): Remove
2122         decomposed_literal_pool_addresses_ok_p.
2123         (s390_decompose_address): Check for UNSPEC_POOL_OFFSET instead of
2124         the difference of two labels.
2125         (s390_output_addr_const_extra): Handle UNSPEC_POOL_OFFSET.
2126         (s390_pool_offset): New function.
2127         (s390_find_constant, s390_find_execute, s390_dump_pool): Use it.
2128         (s390_reorg): Don't set decomposed_literal_pool_addresses_ok_p.
2129
2130 2008-10-13  Nathan Froyd  <froydnj@codesourcery.com>
2131
2132         * doc/install.texi (powerpc-*-*): Require binutils 2.15.
2133         (powerpc*-*-linux-gnu*): Describe.
2134         * config/rs6000/ppc-asm.h (HIDDEN_FUNC): New macro.
2135         * config/rs6000/crtresfpr.asm, config/rs6000/crtresgpr.asm,
2136         config/rs6000/crtresxfpr.asm, config/rs6000/crtresxgpr.asm,
2137         config/rs6000/crtsavfpr.asm, config/rs6000/crtsavgpr.asm,
2138         config/rs6000/e500crtres32gpr.asm,
2139         config/rs6000/e500crtres64gpr.asm,
2140         config/rs6000/e500crtres64gprctr.asm,
2141         config/rs6000/e500crtrest32gpr.asm,
2142         config/rs6000/e500crtrest64gpr.asm,
2143         config/rs6000/e500crtresx32gpr.asm,
2144         config/rs6000/e500crtresx64gpr.asm,
2145         config/rs6000/e500crtsav32gpr.asm,
2146         config/rs6000/e500crtsav64gpr.asm,
2147         config/rs6000/e500crtsav64gprctr.asm,
2148         config/rs6000/e500crtsavg32gpr.asm,
2149         config/rs6000/e500crtsavg64gpr.asm,
2150         config/rs6000/e500crtsavg64gprctr.asm: Use it.
2151         * config/rs6000/crtsavres.asm: Really remove.
2152
2153 2008-10-13  Kai Tietz  <kai.tietz@onevision.com>
2154
2155         Fix PR/25502
2156         * c-format.c (convert_format_name_to_system_name): Use
2157         TARGET_OVERRIDES_FORMAT_INIT.
2158         * config.gcc (extra_options): Add for mingw targets mingw.opt.
2159         * config/i386/mingw.opt: New.
2160         * config/i386/mingw32.h (TARGET_OVERRIDES_FORMAT_INIT): New.
2161         * config/i386/msformat-c.c (TARGET_OVERRIDES_FORMAT_INIT): New.
2162         (ms_printf_length_specs): Removed const specifier.
2163         * doc/tm.texi (TARGET_OVERRIDES_FORMAT_INIT): New.
2164         * doc/invoke.texi (Wno-pedantic-ms-format): New.
2165
2166 2008-10-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2167
2168         * builtins.c: Remove MPFR_VERSION_NUM(2,3,0) conditionals.
2169         * doc/install.texi: Bump recommended MPFR to 2.3.2.
2170
2171 2008-10-12  Kenneth Zadeck <zadeck@naturalbridge.com>
2172
2173         PR middle-end/37808
2174         * df-scan.c (df_ref_change_reg_with_loc_1): Added test to make
2175         sure that ref has valid bb.
2176         
2177 2008-10-12  Richard Henderson  <rth@redhat.com>
2178
2179         PR middle-end/37447
2180         * Makefile.in (reload1.o): Depend on EMIT_RTL_H.
2181         * alias.c (value_addr_p, stack_addr_p): Remove.
2182         (nonoverlapping_memrefs_p): Remove IRA special case.
2183         * emit-rtl.c (get_spill_slot_decl, set_mem_attrs_for_spill): New.
2184         * emit-rtl.h (set_mem_attrs_for_spill): Declare.
2185         * reload1.c (alter_reg): Use it.
2186
2187 2008-10-12  Uros Bizjak  <ubizjak@gmail.com>
2188
2189         * config/i386/driver-i386.c (detect_caches_cpuid2): Use array
2190         of registers instead of eax, ebx, ecx and edx.  Use for loop
2191         and check register for non-zero value before the call
2192         to decode_caches_intel.
2193
2194 2008-10-11  Kenneth Zadeck <zadeck@naturalbridge.com>
2195
2196         PR rtl-optimization/37448
2197         * df.h: (df_ref_class): New enum.
2198         (DF_REF_TYPE_NAMES, df_ref_extract): Removed.
2199         (struct df_ref): Replaced with union df_ref_d.
2200         (df_base_ref, df_artificial_ref, df_regular_ref, df_extract_ref):
2201         New members of df_ref_d union.
2202         (DF_REF_REAL_REG, DF_REF_REGNO, DF_REF_REAL_LOC, DF_REF_REG,
2203         DF_REF_LOC, DF_REF_BB, DF_REF_INSN_INFO, DF_REF_INSN,
2204         DF_REF_CLASS, DF_REF_TYPE, DF_REF_CHAIN, DF_REF_ID, DF_REF_FLAGS,
2205         DF_REF_ORDER, DF_REF_IS_ARTIFICIAL, DF_REF_NEXT_REG,
2206         DF_REF_PREV_REG, DF_REF_EXTRACT_WIDTH, DF_REF_EXTRACT_OFFSET,
2207         DF_REF_EXTRACT_MODE): Replaced definition to access union df_ref_d.
2208         (DF_MWS_REG_DEF_P, DF_MWS_REG_USE_P, DF_MWS_TYPE): New macros.
2209         (df_scan_bb_info, df_bb_regno_first_def_find,
2210         df_bb_regno_last_def_find, df_find_def, df_find_use,
2211         df_refs_chain_dump, df_regs_chain_dump, df_ref_debug,
2212         debug_df_ref, df_chain_create, df_chain_unlink, df_chain_copy,
2213         df_ref_create, df_ref_remove, df_compute_accessed_bytes,
2214         df_get_artificial_defs, df_get_artificial_uses, union_defs)
2215         Replaced struct df_ref * with df_ref.
2216         * df-scan.c (df_collection_rec, df_null_ref_rec,
2217         df_ref_chain_delete_du_chain, df_ref_chain_delete, df_install_ref,
2218         df_grow_ref_info, df_ref_create, df_reg_chain_unlink,
2219         df_ref_compress_rec, df_ref_remove, df_ref_chain_delete_du_chain,
2220         df_ref_chain_delete, df_free_collection_rec, df_insn_rescan,
2221         df_reorganize_refs_by_reg_by_reg,
2222         df_reorganize_refs_by_reg_by_insn, df_reorganize_refs_by_reg,
2223         df_ref_change_reg_with_loc_1, df_notes_rescan, df_swap_refs,
2224         df_sort_and_compress_refs, df_install_ref, df_install_refs,
2225         df_ref_record, df_get_conditional_uses, df_get_call_refs,
2226         df_bb_refs_record, df_exit_block_uses_collect,
2227         df_record_exit_block_uses, df_reg_chain_mark,
2228         df_reg_chain_verify_unmarked, df_refs_verify): Replaced struct
2229         df_ref * with df_ref.
2230         (df_ref_record, df_uses_record, df_ref_create_structure): Added
2231         df_ref_class parameter.
2232         (df_scan_problem_data): Added new pools for different types of refs.
2233         (df_scan_free_internal, df_scan_alloc, df_free_ref,
2234         df_ref_create_structure): Processed new ref pools.
2235         (df_scan_start_dump): Added counts of refs and insns.
2236         (df_ref_create, df_notes_rescan, df_def_record_1, df_uses_record,
2237         df_get_call_refs, df_insn_refs_collect, df_bb_refs_collect,
2238         df_entry_block_defs_collect, df_exit_block_uses_collect): Added
2239         code to pass df_ref_class down to ref creation functions.
2240         (df_reg_chain_unlink, df_ref_remove, df_ref_change_reg_with_loc_1,
2241         df_reg_chain_mark): Use macros to hide references to df_refs.
2242         (df_ref_chain_change_bb): Removed.
2243         (df_insn_change_bb): Remove calls to df_ref_insn_change_bb.
2244         (df_ref_equal_p, df_ref_compare, df_ref_create_structure):
2245         Enhanced to understand df_ref union structure.
2246         * fwprop.c (local_ref_killed_between_p, use_killed_between,
2247         all_uses_available_at, update_df, try_fwprop_subst,
2248         forward_propagate_subreg, forward_propagate_and_simplify,
2249         forward_propagate_into, fwprop, fwprop_addr): Replaced struct
2250         df_ref * with df_ref.
2251         (use_killed_between, all_uses_available_at): Use macros to hide
2252         references to df_refs.
2253         * regstat.c (regstat_bb_compute_ri,
2254         regstat_bb_compute_calls_crossed): Replaced struct df_ref * with
2255         df_ref.
2256         * see.c (see_handle_relevant_defs, see_handle_relevant_uses,
2257         see_handle_relevant_refs, see_analyze_one_def,
2258         see_update_relevancy, see_propagate_extensions_to_uses): Replaced
2259         struct df_ref * with df_ref.
2260         * ra-conflict.c (record_one_conflict, clear_reg_in_live,
2261         global_conflicts): Replaced struct df_ref * with df_ref.
2262         * ddg.c (create_ddg_dep_from_intra_loop_link,
2263         add_cross_iteration_register_deps, build_inter_loop_deps):
2264         Replaced struct df_ref * with df_ref.
2265         (create_ddg_dep_from_intra_loop_link,
2266         add_cross_iteration_register_deps): Use macros to hide references
2267         to df_refs.
2268         * auto-inc-dec.c (find_inc, merge_in_block): Replaced struct
2269         df_ref * with df_ref.
2270         * df-core.c (df_bb_regno_first_def_find,
2271         df_bb_regno_last_def_find, df_find_def, df_find_use,
2272         df_refs_chain_dump, df_regs_chain_dump, df_ref_debug,
2273         debug_df_ref): Replaced struct df_ref * with df_ref.
2274         (df_mws_dump, df_ref_debug): Use macros to hide references to df_refs.
2275         * cse.c (cse_extended_basic_block): Replaced struct df_ref * with
2276         df_ref.
2277         * web.c (union_defs, entry_register, replace_ref, web_main):
2278         Replaced struct df_ref * with df_ref.
2279         (union_defs, replace_ref): Use macros to hide references to df_refs.
2280         * global.c (compute_regs_asm_clobbered, build_insn_chain):
2281         Replaced struct df_ref * with df_ref.
2282         * ifcvt.c (dead_or_predicable): Replaced struct df_ref * with df_ref.
2283         * sel-sched-ir.c (maybe_downgrade_id_to_use, setup_id_reg_sets, ):
2284         Replaced struct df_ref * with df_ref.
2285         * ira-lives.c (mark_ref_live, def_conflicts_with_inputs_p,
2286         mark_ref_dead, process_bb_node_lives): Replaced struct df_ref *
2287         with df_ref.
2288         * local-alloc.c (block_alloc): Replaced struct df_ref * with df_ref.
2289         * df-byte-scan.c (df_compute_accessed_bytes_extract,
2290         df_compute_accessed_bytes_strict_low_part,
2291         df_compute_accessed_bytes_subreg, df_compute_accessed_bytes):
2292         Replaced struct df_ref * with df_ref.
2293         (df_compute_accessed_bytes): Use macros to hide references to df_refs.
2294         * init-regs.c (initialize_uninitialized_regs): Replaced struct
2295         df_ref * with df_ref.
2296         * loop-invariant.c (invariant_for_use, hash_invariant_expr_1,
2297         check_dependency, check_dependencies, record_uses): Replaced
2298         struct df_ref * with df_ref.
2299         (invariant_for_use, check_dependency): Use macros to hide
2300         references to df_refs.
2301         * loop-iv.c (iv_analysis_loop_init, iv_get_reaching_def,
2302         get_biv_step_1, get_biv_step, record_iv, iv_analyze_def,
2303         iv_analyze, biv_p): Replaced struct df_ref * with df_ref.
2304         (iv_analysis_loop_init, iv_get_reaching_def): Use macros to hide
2305         references to df_refs.
2306         * ira.c (compute_regs_asm_clobbered): Replaced struct df_ref *
2307         with df_ref.
2308         * combine.c (create_log_links): Replaced struct df_ref * with df_ref.
2309         * df-problems.c (df_rd_bb_local_compute_process_def,
2310         df_lr_bb_local_compute, df_live_bb_local_compute, df_chain_create,
2311         df_chain_unlink_1, df_chain_unlink, df_chain_copy,
2312         df_chain_remove_problem, df_chain_create_bb_process_use,
2313         df_chain_create_bb, df_chain_top_dump, df_chain_bottom_dump,
2314         df_byte_lr_check_regs, df_byte_lr_bb_local_compute,
2315         df_byte_lr_simulate_defs, df_byte_lr_simulate_uses,
2316         df_byte_lr_simulate_artificial_refs_at_top,
2317         df_byte_lr_simulate_artificial_refs_at_end, df_create_unused_note,
2318         df_note_bb_compute, df_note_add_problem, df_simulate_defs,
2319         df_simulate_uses, df_simulate_artificial_refs_at_end,
2320         df_simulate_artificial_refs_at_top): Replaced struct df_ref * with
2321         df_ref.
2322         (df_chain_dump): Use macros to hide references to df_refs.
2323         * config/mips/mips.c (r10k_simplify_address): Replaced struct
2324         df_ref * with df_ref.
2325         * dce.c (mark_nonreg_stores, delete_corresponding_reg_eq_notes,
2326         mark_artificial_uses, mark_reg_dependencies,
2327         byte_dce_process_block): Replaced struct df_ref * with df_ref.
2328
2329 2008-10-11  Eric Botcazou  <ebotcazou@adacore.com>
2330
2331         * tree.h (contains_packed_reference): Mention ARRAY_RANGE_REF in
2332         head comment.
2333         (array_ref_element_size): Likewise.
2334         (array_ref_low_bound): Likewise.
2335         (array_ref_up_bound): Likewise.
2336         * expr.c (contains_packed_reference): Likewise.
2337         (array_ref_element_size): Likewise.
2338         (array_ref_low_bound): Likewise.
2339         (array_ref_up_bound): Likewise.
2340         * tree-ssa-loop-ivopts.c (idx_contains_abnormal_ssa_name_p): Deal
2341         with ARRAY_RANGE_REF.
2342         (idx_find_step): Likewise.
2343         (idx_record_use): Likewise.
2344         (strip_offset_1): Likewise.
2345         (idx_remove_ssa_names): Likewise.
2346
2347 2008-10-11  Uros Bizjak  <ubizjak@gmail.com>
2348             Andi Kleen  <ak@linux.intel.com>
2349
2350         * config/i386/cpuid.h (__cpuid_count): New defines.
2351         * config/i386/driver-i386.c (struct cache_desc): New structure.
2352         (describe_cache): Use struct cache_desc to pass cache descriptions.
2353         (detect_l2_cache): Ditto. Rename from decode_l2_cache.
2354         (detect_caches_amd): Use struct cache_desc to describe caches.
2355         (decode_caches_intel): Use struct cache_desc to pass cache
2356         descriptions.  Update descriptions to match latest (rev -032,
2357         December 2007) CPUID documentation.  Do not check valid bit here.
2358         Check for Xeon MP value 0x49 problems.
2359         (detect_caches_cpuid2): New function, split from detect_caches_intel.
2360         Check valid bit before calling decode_caches_intel.  Detect number
2361         of times to repeat CPUID instruction.
2362         (detect_caches_cpuid4): New function.
2363         (detect_caches_intel): Depending on max_level, call
2364         detect_caches_cpuid2 or detect_caches_cpuid4.  Call detect_l2_cache
2365         only when other methods fail to provide valid L2 cache description.
2366
2367 2008-10-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2368
2369         PR middle-end/37608
2370         * pa.md (call, call_value): Generate an rtx for register r4 and pass
2371         it to PIC call patterns.
2372         (call_symref_pic): Revise pattern to expose PIC register save.  Remove
2373         code generation and attributes from pattern.  Change peephole2 to
2374         split for noreturn case.  Revise split pattern for non noreturn case.
2375         (call_symref_64bit, call_reg_pic, call_reg_64bit, call_val_symref_pic,
2376         call_val_symref_64bit, call_val_reg_pic, call_val_reg_64bit): Likewise.
2377         * pa.c (attr_length_call): Simplify extraction of call rtx.  Add some
2378         asserts.
2379
2380 2008-10-11  David Edelsohn  <edelsohn@gnu.org>
2381
2382         * config/rs6000/rs6000.md (aux_truncdfsf2): Remove TARGET_SINGLE_FLOAT.
2383         (addsf3, subsf3, mulsf3 ! TARGET_POWERPC): Remove TARGET_SINGLE_FLOAT
2384         and fp_type.
2385         (divdf3): Reformat long line.
2386
2387 2008-10-11  Michael J. Eager  <eager@eagercon.com>
2388
2389         * config/rs6000/rs6000.c (rs6000_parse_fpu_option): Interpret
2390         -mfpu options.
2391         (rs6000_handle_option): Process -mfpu options.
2392         * config/rs6000/rs6000.h: (TARGET_XILINX_FPU): New.
2393         (enum fpu_type_t): New.
2394         * config/rs6000/rs6000.md (attr fp_type): New.  Include xfpu.md.
2395         (addsf3, subsf3, mulsf3, adddf3, subdf3, muldf3, trunctfdf2): Set
2396         fp_type.
2397         (floatsisf2): Remove TARGET_SINGLE_FPU condition.
2398         (floatdidf2): Add TARGET_SINGLE_FPU condition.
2399         * config/rs6000/rs6000.opt (-mfpu): New.
2400         (-mxilinx-fpu): New.
2401         * config/rs6000/sysv4.h: (DRIVER_SELF_SPECS): New.
2402         * config/rs6000/xfpu.h: New. Define TARGET_XILINX_FPU.
2403         * config/rs6000/xfpu.md: New. Define Xilinx pipeline.
2404         * gcc/config.gcc: powerpc-xilinx-eabi target: New.
2405         * gcc/doc/invoke.texi (RS/6000 and PowerPC Options): Add -mfpu option.
2406
2407 2008-10-11  Jakub Jelinek  <jakub@redhat.com>
2408
2409         PR target/35760
2410         * config/rs6000/rs6000.c (rs6000_legitimize_address): Only create
2411         LO_SUM on Darwin if mode has just one unit.
2412
2413 2008-10-10  H.J. Lu  <hongjiu.lu@intel.com>
2414
2415         PR debug/37002
2416         * dwarf2out.c (mem_loc_descriptor): Use DRAP for vDRAP which
2417         has been optimized out.
2418
2419 2008-10-10  Richard Sandiford  <rdsandiford@googlemail.com>
2420
2421         * config/sh/sh.h (PREFERRED_RELOAD_CLASS): Test PIC_ADDR_P
2422         instead of PIC_DIRECT_ADDR_P.
2423         (SECONDARY_INPUT_RELOAD_CLASS): Likewise.
2424         (IS_LITERAL_OR_SYMBOLIC_S16_P, IS_LITERAL_OR_SYMBOLIC_U16_P): Delete.
2425         (IS_NON_EXPLICIT_CONSTANT_P): Don't test PIC_OFFSET_P.
2426         (PIC_OFFSET_P): Rename to...
2427         (PCREL_SYMOFF_P): ...this.
2428         (PIC_DIRECT_ADDR_P): Delete.
2429         (MOVI_SHORI_BASE_OPERAND_P): Check PCREL_SYMOFF_P instead of
2430         PIC_OFFSET_P.
2431         (OUTPUT_ADDR_CONST_EXTRA): Don't require unspecs to have a
2432         single argument.  Handle UNSPEC_EXTRACT_S16, UNSPEC_EXTRACT_U16,
2433         UNSPEC_SYMOFF and UNSPEC_PCREL_SYMOFF.
2434         * config/sh/sh.c (print_operand): Remove CONST handling.
2435         (unspec_caller_rtx_p): Rewrite to use split_const and check
2436         the operands of UNSPEC bases.
2437         (fixup_mova): Replace (unspec [(minus A B)] UNSPEC_PIC)
2438         with (unspec [A B] UNSPEC_SYMOFF).
2439         (nonpic_symbol_mentioned_p): Check for UNSPEC_SYMOFF and
2440         UNSPEC_PCREL_SYMOFF.
2441         (sh_secondary_reload): Test PIC_ADDR_P instead of PIC_DIRECT_ADDR_P.
2442         * config/sh/sh.md (UNSPEC_EXTRACT_S16): New unspec.
2443         (UNSPEC_EXTRACT_U16): Likewise.
2444         (UNSPEC_SYMOFF): Likewise.
2445         (UNSPEC_PCREL_SYMOFF): Likewise.
2446         (movsi_const): Use UNSPEC_EXTRACT_*16s to extract 16-bit portions
2447         of constants.
2448         (movsi_const_16bit): Likewise.
2449         (movdi_const, movdi_const_32bit, movdi_const_16bit): Likewise.
2450         (GOTaddr2picreg): Replace (unspec [(minus A (minus B pc))] UNSPEC_PIC)
2451         with (unspec [A B] UNSPEC_PCREL_SYMOFF).
2452         (sym_label2reg): Replace (minus (const (unspec [A] UNSPEC_PIC)) B)
2453         with (unspec [A B] UNSPEC_SYMOFF).
2454         (symPLT_label2reg): Replace (minus A (minus B pc)) with
2455          (unspec [A B] PCREL_UNSPEC_SYMOFF).
2456         * config/sh/constraints.md (Css): Check for an UNSPEC_EXTRACT_S16.
2457         (Csu): Likewise UNSPEC_EXTRACT_U16.
2458         (Csy): Test PIC_ADDR_P instead of PIC_DIRECT_ADDR_P.
2459         (Cpg): Update after changes to IS_NON_EXPLICIT_CONSTANT_P.
2460
2461 2008-10-10  Stepan Kasal  <skasal@redhat.com>
2462
2463         * gcc/doc/invoke.texi (Optimize Options): Fix typo in examples
2464         for loop strip mining and loop blocking.
2465
2466 2008-10-10  Alexandre Oliva  <aoliva@redhat.com>
2467
2468         * fortran/trans-types.c (gfc_get_nodesc_array_type): Don't
2469         vary types depending on debug info.
2470
2471 2008-10-10  Alexandre Oliva  <aoliva@redhat.com>
2472
2473         * c-gimplify.c (c_genericize): Don't refer to DECL_ASSEMBLER_NAME
2474         before ensuring it's already computed.
2475
2476 2008-10-09  Jakub Jelinek  <jakub@redhat.com>
2477
2478         * rtl.h (locator_eq): New decl.
2479         * cfglayout.c (locator_scope): New function.
2480         (insn_scope): Use it.
2481         (locator_eq): New function.
2482         (fixup_reorder_chain): Search for last insn in src bb
2483         that has locator set or first insn in dest bb.  Use
2484         locator_eq instead of == to compare locators.
2485         * cfgrtl.c (cfg_layout_merge_blocks): Likewise.
2486         * cfgcleanup.c (try_forward_edges): Use locator_eq instead of
2487         == to compare locators.
2488
2489         * tree-ssa-live.c (remove_unused_locals): Mark all edge's goto_block
2490         as used.
2491         * gimple-low.c (lower_function_body, lower_gimple_return,
2492         lower_builtin_setjmp): Set gimple_block on the newly created stmts.
2493         * tree-cfg.c (make_cond_expr_edges, make_goto_expr_edges): Only set
2494         goto_block on edges if goto_locus is known.
2495
2496         PR middle-end/37774
2497         * tree.h (get_object_alignment): Declare.
2498         * emit-rtl.c (set_mem_attributes_minus_bitpos): Call
2499         get_object_alignment if needed.
2500         * builtins.c (get_pointer_alignment): Move ADDR_EXPR operand
2501         handling to ...
2502         (get_object_alignment): ... here.  New function.  Try harder to
2503         determine alignment from get_inner_reference returned offset.
2504
2505 2008-10-08  Jakub Jelinek  <jakub@redhat.com>
2506
2507         * graphite.c (gloog): Don't call find_unreachable_blocks
2508         before delte_unreachable_blocks.
2509
2510         * cfgexpand.c (expand_gimple_cond): Convert also goto_block and
2511         goto_locus of true_edge into RTL locator.
2512
2513 2008-10-08  Uros Bizjak  <ubizjak@gmail.com>
2514
2515         * config/i386/i386.md (*jcc_btdi_rex64): Clobber FLAGS_REG.
2516         (*jcc_btdi_mask_rex64): Ditto.
2517         (*jcc_btsi): Ditto.
2518         (*jcc_btsi_mask): Ditto.
2519         (*jcc_btsi_1): Ditto.
2520         (*jcc_btsi_mask_1): Ditto.
2521
2522 2008-10-08  Paul Brook  <paul@codesourcery.com>
2523
2524         * config/arm/bpabi.h (ARM_FUNCTION_PROFILER): Define new EABI
2525         compatible profiler (__gnu_mcount_nc).
2526         (SUBTARGET_FRAME_POINTER_REQUIRED): Define.
2527
2528 2008-10-08  H.J. Lu  <hongjiu.lu@intel.com>
2529
2530         * config/i386/i386.c (initial_ix86_tune_features): Add
2531         X86_TUNE_USE_VECTOR_FP_CONVERTS.
2532         * config/i386/i386.h (ix86_tune_indices): Likewise.
2533         (TARGET_USE_VECTOR_FP_CONVERTS): New.
2534
2535         * config/i386/i386.md: Check TARGET_USE_VECTOR_FP_CONVERTS
2536         instead of (TARGET_USE_VECTOR_CONVERTS || TARGET_GENERIC)
2537         for FP to FP splitters.
2538
2539 2008-10-08  H.J. Lu  <hongjiu.lu@intel.com>
2540
2541         * config/i386/i386.md: Add missing gen_sse2_cvtdq2p to convert
2542         splitter.
2543
2544 2008-10-08  Jakub Jelinek  <jakub@redhat.com>
2545
2546         PR target/36635
2547         PR target/37290
2548         PR rtl-optimization/37341
2549         * cse.c (cse_cc_succs): Add ORIG_BB argument, don't follow edges
2550         to ORIG_BB, pass through ORIG_BB recursively.
2551         (cse_condition_code_reg): Adjust caller.
2552
2553 2008-10-08  Kai Tietz  <kai.tietz@onevision.com>
2554
2555         * sdbout.c (sdbout_one_type): Treat the value type
2556         CONST_DECL for enumerals.
2557
2558 2008-10-07  H.J. Lu  <hongjiu.lu@intel.com>
2559
2560         * config/i386/i386.md: Remove trailing white spaces.
2561
2562 2008-10-07  Kenneth Zadeck <zadeck@naturalbridge.com>
2563
2564         PR rtl-optimization/37448
2565         * alloc-pool.c (struct alloc_pool_descriptor) [elt_size]: New field.
2566         (stuct alloc_pool_descriptor) [created, allocated, current, peak]:
2567         Make unsigned long.
2568         (struct output_info) [count]: Renamed total_created and made
2569         unsigned long.
2570         (struct output_info) [size]: Renamed total_allocated and made
2571         unsigned long.
2572         (create_alloc_pool, empty_alloc_pool, pool_alloc, pool_free):
2573         Properly keep track of desc->size.
2574         (print_statistics, dump_alloc_pool_statistics): Enhance the
2575         printing of statistics to print the number of elements and to use
2576         unsigned longs.
2577         
2578 2008-10-07  Jakub Jelinek  <jakub@redhat.com>
2579
2580         PR middle-end/37576
2581         * opts.h (CL_SAVE): Move up to flags range.
2582         (CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_TARGET,
2583         CL_COMMON): Renumber.
2584         (CL_MIN_OPTION_CLASS): Set to CL_PARAMS.
2585         * opts.c (common_handle_option): Revert last change.
2586
2587 2008-10-07  H.J. Lu  <hongjiu.lu@intel.com>
2588
2589         * config/i386/i386-protos.h (ix86_schedule): New.
2590
2591         * config/i386/i386.c (ix86_schedule): New.
2592         (override_options): Add schedule to processor_alias_table.  Set
2593         ix86_schedule from the schedule field in processor_alias_table.
2594         (ix86_function_specific_save): Save ix86_schedule.
2595         (ix86_function_specific_restore): Restore ix86_schedule.
2596
2597         * config/i386/i386.md (cpu): Map to ix86_schedule instead of
2598         ix86_tune.  Add none and remove i386, i486, pentium4, nocona
2599         and generic32.
2600
2601         * config/i386/i386.opt: Add schedule.
2602
2603         * config/i386/ppro.md: Remove generic32.
2604
2605 2008-10-07  Simon Martin  <simartin@users.sourceforge.net>
2606
2607         PR c/35437
2608         * expr.c (count_type_elements): Handle ERROR_MARK.
2609
2610 2008-10-07  Jakub Jelinek  <jakub@redhat.com>
2611
2612         PR debug/29609
2613         PR debug/36690
2614         PR debug/37616
2615         * basic-block.h (struct edge_def): Add goto_block field.
2616         * cfglayout.c (fixup_reorder_chain): Ensure that there is at least
2617         one insn with locus corresponding to edge's goto_locus if !optimize.
2618         * profile.c (branch_prob): Copy edge's goto_block.
2619         * cfgrtl.c (force_nonfallthru_and_redirect): Use goto_locus for
2620         emitted jumps.
2621         (cfg_layout_merge_blocks): Emit a nop with edge's goto_locus
2622         locator in between the merged basic blocks if !optimize and needed.
2623         * cfgexpand.c (expand_gimple_cond): Convert goto_block and
2624         goto_locus into RTL locator.  For unconditional jump use that
2625         locator for the jump insn.
2626         (expand_gimple_cond): Convert goto_block and goto_locus into
2627         RTL locator for all remaining edges.  For unconditional jump
2628         use that locator for the jump insn.
2629         * cfgcleanup.c (try_forward_edges): Avoid the optimization if
2630         there is more than one edge or insn locator along the forwarding
2631         edges and !optimize.  If there is just one, set e->goto_locus.
2632         * tree-cfg.c (make_cond_expr_edges, make_goto_expr_edges): Set also
2633         edge's goto_block.
2634         (move_block_to_fn): Adjust edge's goto_block.
2635
2636 2008-10-07  H.J. Lu  <hongjiu.lu@intel.com>
2637
2638         PR middle-end/37731
2639         * expmed.c (expand_mult): Properly check DImode constant in
2640         CONST_DOUBLE.
2641
2642 2008-10-07  Jakub Jelinek  <jakub@redhat.com>
2643
2644         PR debug/37738
2645         * dwarf2out.c (common_block_die_table): New variable.
2646         (common_block_die_table_hash, common_block_die_table_eq): New
2647         functions.
2648         (gen_variable_die): Look up a DW_TAG_common_block die for a particular
2649         COMMON block in the current scope rather than globally.  Optimize
2650         DW_OP_addr SYMBOL_REF DW_OP_plus_uconst off into
2651         DW_OP_addr SYMBOL_REF+off.
2652
2653 2008-10-07  Eric Botcazou  <ebotcazou@adacore.com>
2654
2655         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p) <VIEW_CONVERT_EXPR>:
2656         Return true for non-addressable GIMPLE operands.
2657
2658 2008-10-07  H.J. Lu  <hongjiu.lu@intel.com>
2659
2660         PR target/24765
2661         * config/i386/i386.c (initial_ix86_tune_features): Remove
2662         X86_TUNE_USE_BIT_TEST.
2663         * config/i386/i386.h (ix86_tune_indices): Likewise.
2664         (TARGET_USE_BIT_TEST): Removed.
2665
2666 2008-10-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
2667
2668         * config.gcc (arm*-*-*): Add aapcs-linux to supported ABIs.
2669
2670 2008-10-06  Adam Nemet  <anemet@caviumnetworks.com>
2671
2672         * config/mips/mips.md (mulsi3_mul3, muldi3_mul3): Merge these ...
2673         (mul<mode>3_mul3): ... into this new template.
2674
2675 2008-10-06  Aldy Hernandez  <aldyh@redhat.com>
2676
2677         * gimplify.c (gimplify_arg): Add location argument.  Use it.
2678         (gimplify_call_expr): Pass location to gimplify_arg.
2679         (gimplify_modify_expr_to_memcpy): Same.
2680         (gimplify_modify_expr_to_memset): Same.
2681
2682 2008-10-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2683
2684         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
2685         Update calls to build_unary_op and build_indirect_ref for location
2686         changes.
2687
2688 2008-10-06  Aldy Hernandez  <aldyh@redhat.com>
2689
2690         build_modify_expr.
2691         * c-decl.c (finish_decl): Pass input_location to build_unary_op.
2692         * c-typeck.c (array_to_pointer_conversion): Pass location to
2693         build_unary_op.
2694         (function_to_pointer_conversion): Use error_at and warning_at.
2695         (build_indirect_ref): Same.
2696         (build_array_ref): Pass location to build_binary_op.
2697         (parser_build_unary_op): Do not set location after calling
2698         build_unary_op.
2699         (build_unary_op): Add location argument.  Use it throughout.  Set
2700         EXPR_LOCATION before returning new tree.
2701         (build_modify_expr): Same.
2702         (build_binary_op): Use location throughout.  Set EXPR_LOCATION before
2703         returning node.
2704         * c-omp.c (c_finish_omp_atomic): Pass location to build_unary_op,
2705         build_indirect_ref, build_modify_expr.
2706         (c_finish_omp_for): Same.  Use error_at instead of error.
2707         * c-common.c (c_common_truthvalue_conversion): Pass location to
2708         build_unary_op.
2709         (warn_for_div_by_zero): Add location argument.
2710         * c-common.h: Add argument to build_modify_expr, build_indirect_ref,
2711         build_unary_op, warn_for_div_by_zero.
2712         * c-parser.c (c_parser_typeof_specifier): Use
2713         protected_set_expr_location.
2714         (c_parser_statement_after_labels): Same.
2715         (c_parser_condition): Same.
2716         (c_parser_expr_no_commas): Pass correct location to build_modify_expr.
2717         (c_parser_conditional_expression): Use protected_set_expr_location.
2718         (c_parser_unary_expression): Pass location to build_indirect_ref.
2719         (c_parser_postfix_expression_after_primary): Pass location to
2720         build_indirect_ref, build_unary_op.
2721         (c_parser_omp_for_loop): Set the increment expression's EXPR_LOCATION.
2722
2723 2008-10-06  Joshua Kinard  <kumba@gentoo.org>
2724
2725         * doc/invoke.texi: List r1x000 family under the -march MIPS option.
2726         * config/mips/mips.h (PROCESSOR_R10000): New processor_type.
2727         * config/mips/mips.c (mips_cpu_info_table): Add r10000, r12000,
2728         r14000 and r16000.
2729         (mips_rtx_cost_data): Add a PROCESSOR_R10000 entry.
2730         (mips_issue_rate): Handle PROCESSOR_R10000.
2731         * config/mips/mips.md (cpu): Add r10000.
2732         Include r10000.md.
2733         * config/mips/10000.md: New file.
2734
2735 2008-10-06  Richard Sandiford  <rdsandiford@googlemail.com>
2736
2737         * config/rs6000/rs6000-protos.h (rs6000_find_base_term): Declare.
2738         * config/rs6000/rs6000.h (FIND_BASE_TERM): New macro.
2739         * config/rs6000/rs6000.c (rs6000_find_base_term): New function.
2740
2741 2008-10-06  Richard Sandiford  <rdsandiford@googlemail.com>
2742
2743         * config/darwin-protos.h (machopic_function_base_name): Delete.
2744         (machopic_function_base_sym): Likewise.
2745         (machopic_gen_offset): Declare.
2746         * config/darwin.h (MACHOPIC_FUNCTION_BASE_NAME): New macro.
2747         (ASM_OUTPUT_LABELREF): Use it instead of a hard-coded string constant.
2748         * config/darwin.c (machopic_function_base_name): Delete.
2749         (machopic_function_base_sym): Likewise.
2750         (gen_pic_offset): Rename to...
2751         (machopic_gen_offset): ...this and remove the pic_base argument.
2752         Instead use MACHO_DYNAMIC_NO_PIC_P to decide whether a PIC offset
2753         is needed.  Create an UNSPEC_MACHOPIC_OFFSET if so, and set
2754         crtl->uses_pic_offset_table.
2755         (machopic_indirect_data_reference): Use new machopic_gen_offset
2756         interface.
2757         (machopic_legitimize_pic_address): Likewise.
2758         (machopic_operand_p): Check for UNSPEC_MACHOPIC_OFFSET.
2759
2760         * config/i386/darwin.h (GOT_SYMBOL_NAME): Use
2761         MACHOPIC_FUNCTION_BASE_NAME instead of machopic_function_base_name.
2762         * config/i386/i386.c (output_set_got): Likewise.
2763         (darwin_local_data_pic): Check for an UNSPEC_MACHOPIC_OFFSET
2764         instead of a MINUS.
2765         (legitimate_pic_operand_p): Handle UNSPEC_MACHOPIC_OFFSET.
2766         (legitimate_address_p): Likewise.
2767         (output_pic_addr_const): Likewise.
2768         (output_addr_const_extra): Likewise.
2769         (ix86_delegitimize_address): Expect darwin_local_data_pic to
2770         match an UNSPEC rather than a MINUS.
2771         * config/i386/i386.md (UNSPEC_MACHOPIC_OFFSET): Define.
2772         (builtin_setjmp_receiver): Use machopic_gen_offset.
2773         * config/i386/predicates.md (pic_symbolic_operand): Handle
2774         UNSPEC_MACHOPIC_OFFSET.
2775
2776         * config/rs6000/rs6000.c (rs6000_legitimize_reload_address):
2777         Use machopic_gen_offset and machopic_operand_p.
2778         (rs6000_output_addr_const_extra): Handle UNSPEC_MACHOPIC_OFFSET.
2779         (rs6000_emit_prologue): Use MACHOPIC_FUNCTION_BASE_NAME.
2780         * config/rs6000/rs6000.md (UNSPEC_MACHOPIC_OFFSET): Define.
2781         (builtin_setjmp_receiver): Use MACHOPIC_FUNCTION_BASE_NAME.
2782         Set crtl->uses_pic_offset_table.
2783
2784 2008-10-06  Richard Sandiford  <rdsandiford@googlemail.com>
2785
2786         * config/rs6000/rs6000-protos.h (rs6000_output_addr_const_extra):
2787         Declare.
2788         * config/rs6000/rs6000.h (OUTPUT_ADDR_CONST_EXTRA): New macro.
2789         * config/rs6000/rs6000.md (UNSPEC_TOCREL): New constant.
2790         * config/rs6000/rs6000.c (constant_pool_expr_1): Delete.
2791         (constant_pool_expr_p): Use split_const and check the base.
2792         (toc_relative_expr_p): Likewise, checking for an UNSPEC_TOCREL
2793         instead of a MINUS.
2794         (legitimate_constant_pool_address_p): Check toc_relative_p
2795         instead of constant_pool_expr_p.
2796         (print_operand_address): Always use output_addr_const for
2797         constant pool addresses.
2798         (rs6000_output_addr_const_extra): New function.
2799         (create_TOC_reference): Create an UNSPEC_TOCREL instead of a MINUS.
2800
2801 2008-10-06  Vladimir Makarov  <vmakarov@redhat.com>
2802
2803         PR middle-end/37535
2804
2805         * ira-lives.c (mark_reg_live, mark_reg_dead): New functions.
2806         (mark_ref_live, mark_ref_dead): Use them.
2807         (def_conflicts_with_inputs_p): Remove.
2808         (mark_early_clobbers): New function.
2809         (process_bb_node_lives): Call preprocess_constraints and
2810         mark_early_clobbers.
2811
2812         * doc/rtx.texi (clobber): Change how RA deals with clobbers.
2813
2814 2008-10-06  Danny Smith  <dannysmith@users.sourceforge.net>
2815
2816         * config/i386/mingw32.h (REAL_LIBGCC_SPEC): Add thread cleanup
2817         lib with -mthread switch.
2818
2819 2008-10-05  Dodji Seketeli  <dodji@redhat.com>
2820
2821         PR c++/37410
2822         * dwarf2out.c (dwarf2out_imported_module_or_decl): Split this
2823         function in two, making it call a new and reusable
2824         dwarf2out_imported_module_or_decl() that takes the containing
2825         BLOCK of the declaration in argument.
2826         (dwarf2out_imported_module_or_decl_real): New function.
2827         (decls_for_scope, gen_decl_die, dwarf2out_decl): Take
2828         IMPORTED_DECL in account.
2829         * tree.def: Added IMPORTED_DECL node type.
2830         * tree.h: Added accessors for IMPORTED_DECL nodes.
2831         * tree.c (init_ttree): Initialise IMPORTED_DECL node type.
2832
2833 2008-10-05  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
2834
2835         * doc/gimple.texi: Fix some typos, wrap some long lines,
2836         fix some broken wraps with continuations.
2837         * tree-ssa-reassoc.c: Fix comment typos.
2838
2839 2000-10-04  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2840
2841         PR target/37603
2842         * pa.c (legitimize_pic_address): Force function labels to memory in
2843         word mode.
2844
2845 2008-10-04  Anton Blanchard  <anton@samba.org>
2846
2847         * config/rs6000/rs6000.c (rs6000_emit_sync): Use gen_lwsync().
2848         (rs6000_split_atomic_op): Same.
2849         (rs6000_split_compare_and_swap): Same.
2850         (rs6000_split_compare_and_swapqhi): Same.
2851
2852 2008-10-04  Richard Guenther  <rguenther@suse.de>
2853
2854         * tree-ssa-sccvn.c (vn_reference_op_eq): Use types_compatible_p
2855         instead of pointer equality.
2856         (vn_nary_op_eq): Likewise.
2857
2858 2008-10-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2859
2860         * config/rs6000/rs6000.md (fseldfsf4): Add TARGET_SINGLE_FLOAT 
2861         condition.
2862         (fselsfdf4): Make condition on "TARGET_HARD_FLOAT && TARGET_FPRS &&
2863         TARGET_DOUBLE_FLOAT && TARGET_SINGLE_FLOAT".
2864
2865 2008-10-03  Danny Smith  <dannysmith@users.sourceforge.net>
2866
2867         * config/i386/winnt.c (i386_pe_strip_name_encoding_full):
2868         Revert previous change.
2869
2870 2008-10-03  Tom Tromey  <tromey@redhat.com>
2871
2872         * stringpool.c (ggc_alloc_string): Terminate string.
2873
2874 2008-10-03  Jakub Jelinek  <jakub@redhat.com>
2875
2876         * gimplify.c (gimplify_function_tree): For -finstrument-functions
2877         use gimple_bind_{,set_}block instead of gimple_{,set_}block.
2878         * gimple.h (gimple_bind_set_block): Allow second argument to be NULL.
2879
2880         PR debug/37726
2881         * gimplify.c (declare_vars): Use gimple_bind_block instead of
2882         gimple_block.
2883
2884 2008-10-03  Pascal Obry  <obry@adacore.com>
2885
2886         * gcov.c (create_file_names): Properly handle UNIX and DOS
2887         directory separators.
2888         (make_gcov_file_name): Likewise + convert the ':' DOS drive
2889         separator to '~' to ensure clean filenames on Windows.
2890
2891 2008-10-02  Danny Smith  <dannysmith@users.sourceforge.net>
2892
2893         * config/i386/winnt.c (i386_pe_strip_name_encoding_full):
2894         Add a null terminator to the stripped name.
2895
2896 2008-10-02  David Edelsohn  <edelsohn@gnu.org>
2897
2898         * config/rs6000/rs6000.c (USE_FP_FOR_ARG_P): Revert
2899         TARGET_DOUBLE_FLOAT, TARGET_SINGLE_FLOAT.
2900         (function_arg_advance): Condition on TARGET_DOUBLE_FLOAT,
2901         TARGET_SINGLE_FLOAT.  Revert SCALAR_FLOAT_MODE_P condition.
2902         (function_arg): Condition on TARGET_DOUBLE_FLOAT, TARGET_SINGLE_FLOAT.
2903         (rs6000_function_value): Revert TARGET_DOUBLE_FLOAT,
2904         TARGET_SINGLE_FLOAT.
2905
2906 2008-10-02  Daniel Jacobowitz  <dan@codesourcery.com>
2907
2908         * builtins.c (fold_builtin_pow): Check for 0 ** NEGATIVE.
2909
2910 2008-10-02  Richard Guenther  <rguenther@suse.de>
2911
2912         PR middle-end/37713
2913         * tree-ssa.c (useless_type_conversion_p_1): For COMPLEX_TYPE
2914         and VECTOR_TYPE recurse with useless_type_conversion_p which
2915         properly handles void pointer conversion.
2916
2917 2008-10-02  Danny Smith  <dannysmith@users.sourceforge.net>  
2918
2919         PR target/37528
2920         * config/i386/mingw32.h (LIBGCC_SPEC) : Replace with ..
2921         (REAL_LIBGCC_SPEC): New.  Always include -lgcc.
2922
2923 2008-10-01  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2924
2925         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
2926         Handle ALTIVEC_BUILTIN_VEC_SPLATS, ALTIVEC_BUILTIN_VEC_PROMOTE,
2927         ALTIVEC_BUILTIN_VEC_EXTRACT, and ALTIVEC_BUILTIN_VEC_INSERT specially,
2928         they translate to non builtins.
2929         * config/rs6000/rs6000.c (altivec_init_builtins): Add new variable
2930         opaque_ftype_opaque.  Define builtins __builtin_vec_splats,
2931         __builtin_vec_promote, __builtin_vec_extract, and
2932         __builtin_vec_insert.
2933         * config/rs6000/rs6000.h (enum rs6000_builtins): Add
2934         ALTIVEC_BUILTIN_VEC_EXTRACT, ALTIVEC_BUILTIN_VEC_PROMOTE,
2935         ALTIVEC_BUILTIN_VEC_INSERT, and ALTIVEC_BUILTIN_VEC_SPLATS.
2936         * config/rs6000/altivec.h (vec_extract): Define
2937         (vec_insert): Define.
2938         (vec_splats): Define.
2939         (vec_promote): Define.
2940
2941 2008-10-01  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2942             Yukishige Shibata  <shibata@rd.scei.sony.co.jp>
2943             Trevor Smigiel  <Trevor_Smigiel@playstation.sony.com>
2944
2945         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add Cell
2946         Altivec intrinsics.
2947         * config/rs6000/rs6000.c (altivec_expand_lv_builtin): Delete
2948         prototype.  Add new parameter, blk.
2949         Use BLKmode for the MEM if blk is true.
2950         (altivec_expand_builtin): Handle ALTIVEC_BUILTIN_STVLX,
2951         ALTIVEC_BUILTIN_STVLXL, ALTIVEC_BUILTIN_STVRX, and
2952         ALTIVEC_BUILTIN_STVRXL.
2953         Update usage of altivec_expand_lv_builtin.
2954         Handle ALTIVEC_BUILTIN_LVLX, ALTIVEC_BUILTIN_LVLXL,
2955         ALTIVEC_BUILTIN_LVRX, and ALTIVEC_BUILTIN_LVRXL.
2956         (altivec_init_builtins): If compiling for the Cell, also define the
2957         cell VMX builtins.
2958         * config/rs6000/rs6000.h (rs6000_builtins): Define
2959         ALTIVEC_BUILTIN_LVLX, ALTIVEC_BUILTIN_LVLXL, ALTIVEC_BUILTIN_LVRX,
2960         ALTIVEC_BUILTIN_LVRXL, ALTIVEC_BUILTIN_STVLX, ALTIVEC_BUILTIN_STVLXL,
2961         ALTIVEC_BUILTIN_STVRX, ALTIVEC_BUILTIN_STVRXL,
2962         ALTIVEC_BUILTIN_VEC_LVLX, ALTIVEC_BUILTIN_VEC_LVLXL,
2963         ALTIVEC_BUILTIN_VEC_LVRX, ALTIVEC_BUILTIN_VEC_LVRXL,
2964         ALTIVEC_BUILTIN_VEC_STVLX, ALTIVEC_BUILTIN_VEC_STVLXL,
2965         ALTIVEC_BUILTIN_VEC_STVRX, and ALTIVEC_BUILTIN_VEC_STVRXL.
2966         * config/rs6000/altivec.md (define_constants): Define UNSPEC_LVLX,
2967         UNSPEC_LVLXL, UNSPEC_LVRX, UNSPEC_LVRXL, UNSPEC_STVLX, UNSPEC_STVLXL,
2968         UNSPEC_STVRX, and UNSPEC_STVRXL.
2969         (altivec_lvlx): New pattern.
2970         (altivec_lvlxl): New pattern.
2971         (altivec_lvrx): New pattern.
2972         (altivec_lvrxl): New pattern.
2973         (altivec_stvlx): New pattern.
2974         (altivec_stvlxl): New pattern.
2975         (altivec_stvrx): New pattern.
2976         (altivec_stvrxl): New pattern.
2977         * config/rs6000/altivec.h (vec_lvlx): Define if PPU is defined.
2978         (vec_lvlxl): Likewise.
2979         (vec_lvrx): Define if PPU is defined.
2980         (vec_lvrxl): Likewise.
2981         (vec_stvlx): Define if PPU is defined.
2982         (vec_stvlxl): Likewise.
2983         (vec_stvrx): Define if PPU is defined.
2984         (vec_stvrxl): Likewise.
2985
2986 2008-10-01  Geert Bosch  <bosch@adacore.com>
2987
2988         * tree.c (contains_placeholder_p): Return 0 for a SAVE_EXPR.
2989
2990 2008-10-01  Richard Guenther  <rguenther@suse.de>
2991
2992         PR tree-optimization/37617
2993         * tree-ssa-pre.c (create_expression_by_pieces): During FRE
2994         do not add to the NEW_SETS.
2995
2996 2008-10-01  Richard Guenther  <rguenther@suse.de>
2997
2998         PR middle-end/37285
2999         * tree-vrp.c (execute_vrp): If we optimized away the default
3000         case make sure to promote the label that got in place of it
3001         to a default case label.
3002
3003 2008-10-01  Richard Henderson  <rth@redhat.com>
3004
3005         PR tree-opt/35737
3006         * tree-complex.c (set_component_ssa_name): Don't optimize
3007         is_gimple_min_invariant values with ssa_names in abnormal phis.
3008
3009 2008-09-30  Paolo Bonzini  <bonzini@gnu.org>
3010
3011         PR tree-optimization/37662
3012         * tree-ssa-ccp.c (fold_gimple_assign): Invert the operands of a
3013         commutative binary operation if they are in the wrong order and
3014         fold_build2 produces non-GIMPLE.
3015
3016 2008-09-30  Jakub Jelinek  <jakub@redhat.com>
3017
3018         PR tree-optimization/37662
3019         PR tree-optimization/37663
3020         * tree-vrp.c (simplify_truth_ops_using_ranges): Don't call
3021         get_value_range with non-SSA_NAME.  Don't assert operands have been
3022         folded, instead just bail out.
3023
3024 2008-09-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3025
3026         * config/rs6000/rs6000.md (fnmadds combiner): Revert typo.
3027
3028 2008-09-30  Richard Guenther  <rguenther@suse.de>
3029
3030         PR middle-end/37491
3031         * tree-vect-transform.c (vect_create_data_ref_ptr): Properly
3032         build restrict-qualified pointers.
3033         (vectorizable_store): Move alias check later.
3034         (vectorizable_load): Likewise.
3035
3036 2008-09-30  Paolo Bonzini  <bonzini@gnu.org>
3037
3038         * c-common.c (empty_if_body_warning): Remove.
3039         * c-common.h (empty_if_body_warning): Remove.
3040         * c-parser.c (c_parser_if_body, c_parser_else_body): Implement
3041         here the -Wempty-body warning for `if' and `else' statements.
3042         * c-typeck.c (c_finish_if_stmt): Do not call empty_body_warning.
3043
3044 2008-09-29  H.J. Lu  <hongjiu.lu@intel.com>
3045
3046         * config/i386/i386.opt: Add msse2avx.
3047
3048         * config/i386/linux.h (ASM_SPEC): New.  Support -msse2avx.
3049         * config/i386/linux64.h (ASM_SPEC): Likewise.
3050
3051         * doc/invoke.texi: Document -msse2avx.
3052
3053 2008-09-29  Eric Botcazou  <ebotcazou@adacore.com>
3054
3055         * dwarf2out.c (constant_size): Use HOST_WIDE_INT in parameter type.
3056
3057 2008-09-29  Joseph Myers  <joseph@codesourcery.com>
3058
3059         * ifcvt.c (noce_emit_store_flag): If using condition from original
3060         jump, reverse it if if_info->cond was reversed.
3061
3062 2008-09-29  Eric Botcazou  <ebotcazou@adacore.com>
3063
3064         * expr.c (expand_expr_real_1) <normal_inner_ref>: Force op0 to
3065         non-constant memory if it cannot be forced to constant memory.
3066         Overhaul surrounding code and factor out common condition.
3067
3068 2008-09-29  Jeff Law <law@redhat.com>
3069
3070         * reload1.c (alter_reg): Add missing curly braces.
3071
3072 2008-09-29  Michael J. Eager  <eager@eagercon.com>
3073
3074         * config/rs6000/predicates.md (easy_fp_constant): Single FP consts
3075         are easy.
3076         * config/rs6000/rs6000.c (rs6000_override_options): Move
3077         rs6000_init_hard_regno_mode_ok after all options changed.
3078         Set rs6000_single_float, rs6000_double_float if TARGET_HARD_FLOAT.
3079         (rs6000_handle_option): Process -msingle-float, -mdouble-float,
3080         -msimple-fpu flags.  Add warning messages if single FP not configured.
3081         (rs6000_file_start): Output gnu_attribute for single-float.
3082         (legitimate_lo_sum_address_p): Condition on TARGET_DOUBLE_FLOAT.
3083         (rs6000_legitimize_address): Likewise.
3084         (rs6000_legitimize_reload_address): Likewise.
3085         (rs6000_emit_move): Condition on TARGET_DOUBLE_FLOAT,
3086         TARGET_SINGLE_FLOAT.
3087         (function_arg_advance): Likewise (partial conversion).
3088         (setup_incoming_varargs): Condition on TARGET_DOUBLE_FLOAT.
3089         (rs6000_gimplify_va_arg): Condition on TARGET_DOUBLE_FLOAT,
3090         TARGET_SINGLE_FLOAT.
3091         (rs6000_split_multireg_move): Condition on TARGET_DOUBLE_FLOAT.
3092         (rs6000_emit_prologue): Likewise.
3093         (rs6000_function_value): Condition on TARGET_DOUBLE_FLOAT,
3094         TARGET_SINGLE_FLOAT.
3095         (rs6000_libcall_value): Likewise.
3096         * config/rs6000/rs6000.h (TARGET_SINGLE_FLOAT): New default to 1.
3097         (TARGET_DOUBLE_FLOAT): New default to 1
3098         (TARGET_SIMPLE_FPU): New default to 0
3099         (TARGET_SINGLE_FPU): New default to 0
3100         (TARGET_SINGLE_FLOAT_MODE): New.
3101         (TARGET_DOUBLE_FLOAT_MODE): New.
3102         * config/rs6000/singlefp.h: New; redefine TARGET_SINGLE_FLOAT,
3103         TARGET_DOUBLE_FLOAT, TARGET_SIMPLE_FPU, TARGET_SINGLE_FPU,
3104         UNITS_PER_FP_WORD
3105         * config/rs6000/rs6000.md (define_mode_iterator): Condition on
3106         TARGET_DOUBLE_FLOAT, TARGET_SINGLE_FLOAT.
3107         (extendsfdf2, extendsfdf2_fpr, truncdfsf2, truncdfsf2_fpr,
3108         copysigndf3,fseldfsf4, negdf2, negdf2_fpr, absdf2, absdf2_fpr,
3109         nabsdf2_fpr, adddf3, adddf3_fpr, subdf3, subdf3_fpr, muldf3,
3110         muldf3_fpr, divdf3, divdf3_fpr, sqrtdf2, smaxdf3, smindf3,
3111         movdfcc, *fseldfdf4, floatsidf2, *floatsidf2_internal,
3112         floatunssidf2, *floatunssidf2_internal, fix_truncdfsi2,
3113         *fix_truncdfsi2_internal, fix_truncdfsi2_internal_gfxopt,
3114         fix_truncdfsi2_mfpgpr, fctiwz, btruncdf2, ceildf2, floordf2,
3115         rounddf2, floatdidf2, floatsidf_ppc64_mfpgpr, floatsidf_ppc64,
3116         floatunssidf_ppc64, fix_truncdfdi2, movdf_hardfloat32,
3117         movdf_hardfloat64_mfpgpr, movdf_hardfloat64, extenddftf2_fprs,
3118         extenddftf2_internal, trunctfdf2_internal2, fix_trunc_helper,
3119         abstf2_internal, movdf_update1, movdf_update2, cmpdf_internal1,
3120         cmptf_internal1, *cmptf_internal2): Condition on
3121         TARGET_DOUBLE_FLOAT.
3122         (aux_truncdfsf2, negsf2, *negsf2, abssf2, *abssf2, addsf3, subsf3,
3123         mulsf3, divsf3, sqrtsf2, copysignsf3, smaxsf3, sminsf3, movsfcc,
3124         *fselsfsf4, fixuns_truncsfsi2, fix_truncsfsi2, floatunssisf2,
3125         btruncsf2, ceilsf2, floorsf2, roundsf2, floatdisf2_internal1,
3126         floatdisf2_internal2, *movsf_hardfloat, trunctfsf2_fprs,
3127         *movsf_update1, *movsf_update2, *cmpsf_internal1): Condition on
3128         TARGET_SINGLE_FLOAT.
3129         (divsf3, sqrtsf2, divdf3, divdf3_fpr): Condition on TARGET_SIMPLE_FPU.
3130         * config/rs6000/rs6000.opt (-msingle-float): New.
3131         (-mdouble-float): New.
3132         (-msimple-fpu): New.
3133         * doc/invoke.texi (RS/6000 and PowerPC Options): Add
3134         -msingle-float, -mdouble-float, -msimple-fpu options.
3135         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Set
3136         _SOFT_DOUBLE for -msingle-float.
3137         * config.gcc: New config for target=powerpc-xilinx-eabi.
3138
3139 2008-09-29  Tobias Grosser  <grosser@fim.uni-passau.de>
3140
3141         * graphite.c (dot_all_scops_1): Remove unused checks. SCoPs always
3142         have exit and entry.
3143         (new_scop): Take entry and exit edge to define new SCoP.
3144         (sd_region_p): New structure used during SCoP detection.
3145         (move_scops): Delete.
3146         (move_sd_regions): New.
3147         (scopdet_info): Change the definition from edges back to basic_blocks.
3148         (scopdet_edge_info):  Work on basic_blocks and rename to
3149         scopdet_basic_block_info.
3150         (split_difficult_bb): At the moment removed. We should later
3151         add it at another place.
3152         (build_scops_1): Work on basic_blocks.
3153         (bb_in_sd_region): New.
3154         (find_single_entry_edge): New.
3155         (find_single_exit_edge): New.
3156         (create_single_entry_edge): New.
3157         (sd_region_without_exit): New.
3158         (create_single_exit_edge): New.
3159         (unmark_exit_edges): New.
3160         (mark_exit_edges): New.
3161         (create_sese_edges): New.
3162         (build_graphite_scops): New.
3163         (build_scops): Make SCoPs SESE.
3164         (limit_scops): Use the new functions.
3165
3166 2008-09-29  Hans-Peter Nilsson  <hp@axis.com>
3167
3168         * config/cris/cris.h (IRA_COVER_CLASSES): Define.
3169
3170 2008-09-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3171
3172         PR target/37640
3173         * config/rs6000/rs6000.c (rs6000_expand_compare_and_swapqhi): Force
3174         address to a register before taking the lower part.
3175
3176 2008-09-28  Kaz Kojima  <kkojima@gcc.gnu.org>
3177
3178         * config/sh/sh.h (OVERRIDE_OPTIONS): Unset flag_dwarf2_cfi_asm
3179         for SHmedia.
3180
3181 2008-09-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3182             Kaushal Kantawala  <kaushal_kantawala@playstation.sony.com>
3183
3184         PR tree-opt/36891
3185         * tree-ssa-loop-im.c (rewrite_reciprocal): Set DECL_GIMPLE_REG_P on
3186         the newly created variable.
3187         Create a VECTOR_CST of all 1s for vector types.
3188
3189 2008-09-28  Eric Botcazou  <ebotcazou@adacore.com>
3190
3191         PR middle-end/36575
3192         * fold-const.c (div_and_round_double) <ROUND_DIV_EXPR>: Fix typo.
3193
3194 2008-09-28  Eric Botcazou  <ebotcazou@adacore.com>
3195
3196         * expmed.c (store_fixed_bit_field): Always use convert_to_mode in
3197         order to convert between modes.
3198         (extract_bit_field_1): Test TRULY_NOOP_TRUNCATION on the right mode.
3199
3200 2008-09-27  Kaz Kojima  <kkojima@gcc.gnu.org>
3201
3202         * config/sh/sh.c (sh_gimplify_va_arg_expr): Use VIEW_CONVERT_EXPR
3203         if needed.
3204
3205 2008-09-26  Vladimir Makarov  <vmakarov@redhat.com>
3206
3207         Revert:
3208         2008-09-25  Vladimir Makarov  <vmakarov@redhat.com>
3209         * ira-lives.c:...
3210         * doc/rtl.texi:...
3211
3212 2008-09-26  Adam Nemet  <anemet@caviumnetworks.com>
3213
3214         * config/mips/mips.h (ISA_HAS_DMUL3, ISA_HAS_BADDU, ISA_HAS_BBIT,
3215         ISA_HAS_CINS, ISA_HAS_EXTS, ISA_HAS_SEQ_SNE, ISA_HAS_POP): Change
3216         them to yield false with MIPS16.
3217
3218 2008-09-26  Jakub Jelinek  <jakub@redhat.com>
3219
3220         PR middle-end/37275
3221         * dwarf2out.c (tls_mem_loc_descriptor): New function.
3222         (mem_loc_descriptor): Use it for MEM.  For PLUS fail if second
3223         mem_loc_descriptor failed.  Accept UNSPEC.
3224         (loc_descriptor): Use tls_mem_loc_descriptor for MEM.  For PARALLEL
3225         fail if one of the loc_descriptor calls for pieces failed.
3226         (loc_descriptor_from_tree_1): Handle even DECL_EXTERNAL __thread vars,
3227         as long as they bind locally.  For COMPONENT_REF, ARRAY_REF etc. fail
3228         if loc_descriptor_from_tree_1 on offset failed.
3229
3230         PR middle-end/37576
3231         * opts.c (common_handle_option): Don't call print_specific_help with
3232         CL_SAVE as first argument.
3233
3234 2008-09-26  Peter O'Gorman  <pogma@thewrittenword.com>
3235             Steve Ellcey  <sje@cup.hp.com>
3236
3237         * configure: Regenerate for new libtool.
3238         * aclocal.m4: Ditto.
3239
3240 2008-09-26  Pat Haugen  <pthaugen@us.ibm.com>
3241
3242         * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Use correct
3243         alias set on MEM when saving stack pointer.
3244         * config/rs6000/rs6000.md (allocate_stack): Likewise
3245
3246 2008-09-26  Dorit Nuzman  <dorit@il.ibm.com>
3247
3248         PR tree-optimization/37574
3249         * tree-vectorizer.c (vect_is_simple_use): Fix indentation.
3250         * tree-vect-transform.c (vect_get_constant_vectors): Use vectype
3251         instead of vector_type for constants. Take computation out of loop.
3252         (vect_get_vec_def_for_operand): Use only vectype for constant case,
3253         and use only vector_type for invariant case.
3254         (get_initial_def_for_reduction): Use vectype instead of vector_type.
3255
3256 2008-09-25  Jakub Jelinek  <jakub@redhat.com>
3257
3258         PR c/37645
3259         * c-common.c (handle_weakref_attribute): Ignore the attribute unless
3260         the decl is a VAR_DECL or FUNCTION_DECL.
3261
3262 2008-09-25  Vladimir Makarov  <vmakarov@redhat.com>
3263
3264         PR middle-end/37535
3265         * ira-lives.c (mark_reg_live, mark_reg_dead): New functions.
3266         (mark_ref_live, mark_ref_dead): Use them.
3267         (def_conflicts_with_inputs_p): Remove.
3268         (mark_early_clobbers): New function.
3269         (process_bb_node_lives): Call preprocess_constraints and
3270         mark_early_clobbers.
3271
3272         * doc/rtl.texi (clobber): Change how RA deals with clobbers.
3273
3274 2008-09-25  Vladimir Makarov  <vmakarov@redhat.com>
3275
3276         PR middle-end/37448
3277         * ira-int.h (IRA_ALLOCNO_TEMP): Rename to ALLOCNO_TEMP.
3278         (ira_compress_allocno_live_ranges): New prototype.
3279
3280         * ira-color.c: Rename IRA_ALLOCNO_TEMP to ALLOCNO_TEMP.
3281         (coalesced_allocnos_living_at_program_points): New.
3282         (coalesced_allocnos_live_at_points_p,
3283         set_coalesced_allocnos_live_points): New functions.
3284         (coalesce_spill_slots): Rewrite.
3285         
3286         * ira-lives.c (remove_some_program_points_and_update_live_ranges,
3287         ira_compress_allocno_live_ranges): New functions.
3288
3289         * ira-build.c (ira_flattening): Call
3290         ira_compress_allocno_live_ranges.
3291         (ira_build): Ditto.
3292
3293 2008-09-25  H.J. Lu  <hongjiu.lu@intel.com>
3294
3295         * config/i386/i386.md: Check cmp/branch fuse for cmp peephole
3296         optimization.
3297
3298 2008-09-25  Richard Sandiford  <rdsandiford@googlemail.com>
3299
3300         * combine.c (make_compound_operation): Handle the 'E' format.
3301         (count_rtxs): Likewise.
3302         (update_table_tick): Likewise.
3303         (get_last_value_validate): Likewise.
3304
3305 2008-09-25  Eric Botcazou  <ebotcazou@adacore.com>
3306
3307         * dbxout.c (dbxout_parms): Fetch the inner REG inside a PARALLEL.
3308
3309 2008-09-25 Sergei Dyshel <sergeid@il.ibm.com>
3310
3311         * matrix-reorg.c (transform_allocation_sites): Initializers 
3312         added to avoid the warning.
3313
3314 2008-09-25  Martin Jambor  <mjambor@suse.cz>
3315
3316         * cgraph.c (free_nodes): New variable.
3317         (NEXT_FREE_NODE): New macro.
3318         (cgraph_create_node): Reuse nodes from the free list.  Do not
3319         update uid if doing so.
3320         (cgraph_remove_node): Add the node to the free list.
3321
3322 2008-09-25  Gerald Pfeifer  <gerald@pfeifer.com>
3323
3324         * config/freebsd.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define.
3325
3326 2008-09-24  Richard Henderson  <rth@redhat.com>
3327
3328         * dwarf2.h (DW_OP_GNU_encoded_addr): New.
3329         * unwind-dw2.c (execute_stack_op): Handle it.
3330
3331 2008-09-24  David Edelsohn  <edelsohn@gnu.org>
3332
3333         Revert:
3334         2008-09-24  Michael J. Eager  <eager@eagercon.com>
3335
3336 2008-09-24  Aldy Hernandez  <aldyh@redhat.com>
3337
3338         * c-common.c (fname_decl): New location argument.
3339         * c-common.h (fname_decl): Same.
3340         * c-parser.c (c_lex_one_token): Use {warning,error}_at instead of
3341         {warning,error}.
3342         (c_parser_typeof_specifier): Same.
3343         (c_parser_parms_list_declarator): Same.
3344         (c_parser_asm_string_literal): Same.
3345         (c_parser_compound_statement_nostart): Same.
3346         (c_parser_label): Same.
3347         (c_parser_do_statement): Same.
3348         (c_parser_asm_statement): Same.
3349         (c_parser_unary_expression): Same.
3350         (c_parser_sizeof_expression): Same.
3351         (c_parser_postfix_expression): Same.
3352         (c_parser_pragma): Same.
3353         (c_parser_omp_clause_collapse): Same.
3354         (c_parser_omp_clause_num_threads): Same.
3355         (c_parser_omp_clause_schedule): Same.
3356         (c_parser_omp_all_clauses): Same.
3357         (c_parser_omp_sections_scope): Same.
3358         (c_parser_omp_for_loop): Same.  Pass condition's location to
3359         c_objc_common_truthvalue_conversion.
3360         (c_parser_enum_specifier): Remove comment.
3361
3362 2008-09-24  Michael J. Eager  <eager@eagercon.com>
3363
3364         * config/rs6000/predicates.md (easy_fp_constant): Single FP consts
3365         are easy.
3366         * config/rs6000/rs6000.c (rs6000_override_options): Move
3367         rs6000_init_hard_regno_mode_ok after all options changed.
3368         Set rs6000_single_float, rs6000_double_float if TARGET_HARD_FLOAT.
3369         (rs6000_handle_option): Process -msingle-float, -mdouble-float,
3370         -msimple-fpu flags.  Add warning messages if single FP not configured.
3371         (rs6000_file_start): Output gnu_attribute for single-float.
3372         (legitimate_lo_sum_address_p): Condition on TARGET_DOUBLE_FLOAT.
3373         (rs6000_legitimize_address): Likewise.
3374         (rs6000_legitimize_reload_address): Likewise.
3375         (rs6000_emit_move): Condition on TARGET_DOUBLE_FLOAT,
3376         TARGET_SINGLE_FLOAT.
3377         (function_arg_advance): Likewise.
3378         (function_arg): Likewise.
3379         (setup_incoming_varargs): Condition on TARGET_DOUBLE_FLOAT.
3380         (rs6000_gimplify_va_arg): Condition on TARGET_DOUBLE_FLOAT,
3381         TARGET_SINGLE_FLOAT.
3382         (rs6000_split_multireg_move): Condition on TARGET_DOUBLE_FLOAT.
3383         (rs6000_emit_prologue): Likewise.
3384         (rs6000_function_value): Condition on TARGET_DOUBLE_FLOAT,
3385         TARGET_SINGLE_FLOAT.
3386         (rs6000_libcall_value): Likewise.
3387         * config/rs6000/rs6000.h (TARGET_SINGLE_FLOAT): New default to 1.
3388         (TARGET_DOUBLE_FLOAT): New default to 1
3389         (TARGET_SIMPLE_FPU): New default to 0
3390         (TARGET_SINGLE_FPU): New default to 0
3391         (TARGET_SINGLE_FLOAT_MODE): New.
3392         (TARGET_DOUBLE_FLOAT_MODE): New.
3393         * config/rs6000/singlefp.h: New; redefine TARGET_SINGLE_FLOAT,
3394         TARGET_DOUBLE_FLOAT, TARGET_SIMPLE_FPU, TARGET_SINGLE_FPU,
3395         UNITS_PER_FP_WORD
3396         * config/rs6000/rs6000.md (define_mode_iterator): Condition on
3397         TARGET_DOUBLE_FLOAT, TARGET_SINGLE_FLOAT.
3398         (extendsfdf2, extendsfdf2_fpr, truncdfsf2, truncdfsf2_fpr,
3399         copysigndf3,fseldfsf4, negdf2, negdf2_fpr, absdf2, absdf2_fpr,
3400         nabsdf2_fpr, adddf3, adddf3_fpr, subdf3, subdf3_fpr, muldf3,
3401         muldf3_fpr, divdf3, divdf3_fpr, sqrtdf2, smaxdf3, smindf3,
3402         movdfcc, *fseldfdf4, floatsidf2, *floatsidf2_internal,
3403         floatunssidf2, *floatunssidf2_internal, fix_truncdfsi2,
3404         *fix_truncdfsi2_internal, fix_truncdfsi2_internal_gfxopt,
3405         fix_truncdfsi2_mfpgpr, fctiwz, btruncdf2, ceildf2, floordf2,
3406         rounddf2, floatdidf2, floatsidf_ppc64_mfpgpr, floatsidf_ppc64,
3407         floatunssidf_ppc64, fix_truncdfdi2, movdf_hardfloat32,
3408         movdf_hardfloat64_mfpgpr, movdf_hardfloat64, extenddftf2_fprs,
3409         extenddftf2_internal, trunctfdf2_internal2, fix_trunc_helper,
3410         abstf2_internal, movdf_update1, movdf_update2, cmpdf_internal1,
3411         cmptf_internal1, *cmptf_internal2): Condition on
3412         TARGET_DOUBLE_FLOAT.
3413         (aux_truncdfsf2, negsf2, *negsf2, abssf2, *abssf2, addsf3, subsf3,
3414         mulsf3, divsf3, sqrtsf2, copysignsf3, smaxsf3, sminsf3, movsfcc,
3415         *fselsfsf4, fixuns_truncsfsi2, fix_truncsfsi2, floatunssisf2,
3416         btruncsf2, ceilsf2, floorsf2, roundsf2, floatdisf2_internal1,
3417         floatdisf2_internal2, *movsf_hardfloat, trunctfsf2_fprs,
3418         *movsf_update1, *movsf_update2, *cmpsf_internal1): Condition on
3419         TARGET_SINGLE_FLOAT.
3420         (divsf3, sqrtsf2, divdf3, divdf3_fpr): Condition on TARGET_SIMPLE_FPU.
3421         * config/rs6000/rs6000.opt (-msingle-float): New.
3422         (-mdouble-float): New.
3423         (-msimple-fpu): New.
3424         * doc/invoke.texi (RS/6000 and PowerPC Options): Add
3425         -msingle-float, -mdouble-float, -msimple-fpu options.
3426         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Set
3427         _SOFT_DOUBLE for -msingle-float.
3428         * config.gcc: New config for target=powerpc-xilinx-eabi.
3429
3430 2008-09-23  Eric Botcazou  <ebotcazou@adacore.com>
3431
3432         * config/sparc/constraints.md: New file.
3433         * config/sparc/sparc.md: Include it.
3434         * config/sparc/sparc-protos.h (memory_ok_for_ldd): Declare.
3435         (sparc_extra_constraint_check): Delete.
3436         * config/sparc/sparc.c (register_ok_for_ldd): Minor tweaks.
3437         (memory_ok_for_ldd): New predicate.
3438         (sparc_extra_constraint_check): Delete.
3439         * config/sparc/sparc.h (REG_CLASS_FROM_LETTER): Likewise.
3440         (CONST_OK_FOR_LETTER_P): Likewise.
3441         (CONST_DOUBLE_OK_FOR_LETTER_P): Likewise.
3442         (EXTRA_CONSTRAINT): Likewise.
3443
3444 2008-08-23  Steve Ellcey  <sje@cup.hp.com>
3445
3446         * regrename.c (do_replace): Copy REG_POINTER value to new reg.
3447
3448 2008-09-23  Richard Sandiford  <rdsandiford@googlemail.com>
3449
3450         * alias.c (find_base_value): Use FIND_BASE_TERM.
3451         * doc/tm.texi (FIND_BASE_TERM): Update documentation.
3452
3453 2008-09-23  Richard Sandiford  <rdsandiford@googlemail.com>
3454
3455         * config/i386/i386.c: Include cselib.h.
3456         (ix86_pic_register_p): New function.
3457         (ix86_delegitimize_address): Use it to check for the PIC register.
3458
3459 2008-09-23  Richard Sandiford  <rdsandiford@googlemail.com>
3460
3461         * doc/tm.texi (FIND_BASE_TERM): Expand documentation.
3462         * config/i386/i386.c (ix86_find_base_term): Don't check for
3463         SYMBOL_REF and LABEL_REF.
3464
3465 2008-09-23  Richard Sandiford  <rdsandiford@googlemail.com>
3466
3467         * config/i386/i386.c (ix86_delegitimize_address): Wrap the
3468         constant PLUS in a CONST.
3469
3470 2008-09-23  Kai Tietz  <kai.tietz@onevision.com>
3471
3472         * config/i386/i386.c (ix86_function_ok_for_sibcall): Correct
3473         check for sibcall support for w64.
3474
3475 2008-09-23  Eric Botcazou  <ebotcazou@adacore.com>
3476
3477         * c-ppoutput.c (cb_used_define): Do nothing for a builtin node.
3478
3479 2008-09-23  Aldy Hernandez  <aldyh@redhat.com>
3480
3481         * c-tree.h: Add argument to c_objc_common_truthvalue_conversion,
3482         parser_build_binary_op.
3483         * c-decl.c (build_enumerator): Pass location to build_binary_op.
3484         * c-typeck.c (build_array_ref): Same.
3485         (parser_build_unary_op): New location argument.
3486         (pointer_diff): Pass location to build_binary_op,
3487         c_objc_common_truthvalue_conversion.
3488         (build_modify_expr): Same.
3489         (build_unary_op): New location argument.
3490         (build_binary_op): New location argument.
3491         (c_objc_common_truthvalue_conversion): Pass location to
3492         c_*common_truthvalue_conversion.
3493         * c-convert.c (convert): Same.
3494         * c-common.c (binary_op_error): New location argument.
3495         (pointer_int_sum): Pass location to build_binary_op.
3496         (c_common_truthvalue_conversion): New location argument.
3497         (warn_for_sign_compare): Same.
3498         * c-common.h: Add location argument to c_common_truthvalue_conversion,
3499         binary_op_error, build_binary_op, warn_for_sign_compare.
3500         * c-parser.c (c_parser_condition): Pass location to
3501         c_*common_truthvalue_conversion.
3502         (c_parser_conditional_expression): Save condition's location and pass
3503         it on down.
3504         (c_parser_binary_expression): Same, but for the binary operator's
3505         location.
3506         (c_parser_omp_for_loop): Pass location to
3507         c_objc_common_truthvalue_conversion.
3508
3509 2008-09-23  Martin Jambor  <mjambor@suse.cz>
3510
3511         * cgraph.c (cgraph_free_edge): Use sizeof(*e).
3512         (cgraph_node_remove_callees): New temporary f.  Hold the next item
3513         in f when looping.
3514         (cgraph_node_remove_callers): Likewise.
3515
3516         * ipa-prop.c (ipa_edge_removal_hook): Use ATTRIBUTE_UNUSED.
3517         (ipa_node_removal_hook): Likewise.
3518
3519         * doc/gimple.texi (gimple_copy_call_skip_args): Changed to
3520         gimple_call_copy_skip_args and moved to the gimple_call section.
3521         * gimple.c (gimple_copy_call_skip_args): Renamed to
3522         gimple_call_copy_skip_args.  Changed al users.
3523
3524 2008-09-22  Vladimir Makarov  <vmakarov@redhat.com>
3525
3526         * ira-color.c (start_allocno_priorities): Rename to
3527         setup_allocno_priorities.  Use costs and
3528         ALLOCNO_EXCESS_PRESSURE_POINTS_NUM instead of frequencies and
3529         range lengths.  Get rid off doubles.
3530         (ira_fast_allocations): Call start_allocno_priorities.
3531         
3532 2008-09-22  David Daney  <ddaney@avtrex.com>
3533
3534         PR target/37593
3535         * config/mips/mips.h (FUNCTION_PROFILER): Call _mcount via a
3536         register if TARGET_LONG_CALLS.
3537
3538 2008-09-22  Richard Guenther  <rguenther@suse.de>
3539
3540         PR tree-optimization/37145
3541         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Re-enable
3542         value-numbering union accesses with their offset and size only.
3543         (visit_reference_op_load): Fix simplification of inserted conversions.
3544         * tree-ssa-pre.c (find_or_generate_expression): Do not
3545         recursively generate expressions if running FRE.
3546
3547 2008-09-22  Adam Nemet  <anemet@caviumnetworks.com>
3548
3549         * config/mips/mips.h (ISA_HAS_BADDU): New macro.
3550         * config/mips/mips.md (*baddu_si_eb, *baddu_si_el, *baddu_di<mode>):
3551         New patterns.
3552
3553 2008-09-22  Richard Guenther  <rguenther@suse.de>
3554
3555         PR tree-optimization/37145
3556         * tree-ssa-pre.c (fully_constant_expression): Simplify builtin calls.
3557         (phi_translate_1): Constant fold references.
3558
3559 2008-09-22  Ira Rosen  <irar@il.ibm.com>
3560
3561         PR tree-optimization/37482
3562         * tree-vectorizer.h (struct _slp_instance): Add new field.
3563         (SLP_INSTANCE_FIRST_LOAD_STMT): New.
3564         (get_earlier_stmt): New function.
3565         * tree-vect-analyze.c (vect_find_first_load_in_slp_instance): New
3566         function.
3567         (vect_analyze_slp_instance): Set SLP_INSTANCE_FIRST_LOAD_STMT.
3568         * tree-vect-transform.c (vect_finish_stmt_generation): Remove the
3569         asserts that GSI points to the scalar statement being vectorized.
3570         Set new statement location according to GSI.
3571         (vect_schedule_slp_instance): Use GSI of
3572         SLP_INSTANCE_FIRST_LOAD_STMT when vectorizing loads.
3573
3574 2008-09-21  Jan Hubicka  <jh@suse.cz>
3575
3576         * ipa-cp.c (ipcp_estimate_growth): Check recursive calls.
3577         (ipcp_insert_stage): Update dead_nodes bitmap.
3578
3579 2008-09-22  Danny Smith  <dannysmith@users.sourceforge.net>
3580
3581         PR target/37528 
3582         * config/i386/t-cygming (SHLIB_LC): Remove.
3583         (SHLIB_LINK): Don't add static objects to SHLIB_IMPLIB
3584         * config/i386/t-cygwin (SHLIB_LC): Specify all required libraries.
3585
3586 2008-09-22  Hans-Peter Nilsson  <hp@axis.com>
3587
3588         PR middle-end/37170
3589         PR middle-end/37280
3590         * final.c (mark_symbol_ref_as_used): New helper function.
3591         (output_operand): Instead of just looking inside MEMs for
3592         SYMBOL_REFs, use new helper function and for_each_rtx.
3593         * varasm.c (assemble_external): Move #ifndef ASM_OUTPUT_EXTERNAL
3594         to after weak-handling.  Don't mark decls with TREE_STATIC as weak.
3595         Make head comment more general.
3596         * config/darwin.c (machopic_output_indirection): Handle weak
3597         references here, like in assemble_external.
3598
3599 2008-09-21  Eric Botcazou  <ebotcazou@adacore.com>
3600
3601         * config/sparc/sparc-protos.h (gen_compare_operator): Declare.
3602         (sparc_emit_float_lib_cmp): Change return type.
3603         * config/sparc/sparc.c (gen_compare_reg): Add comment about TFmode.
3604         (gen_compare_operator): New function.
3605         (sparc_emit_float_lib_cmp): Return the new operator to be used in
3606         the comparison sequence.  Minor tweaks.
3607         * config/sparc/sparc.md (seq, sne, sgt, slt, sge, sle): Assert
3608         that the final operator and the result of sparc_emit_float_lib_cmp
3609         match for software TFmode; use emit_insn in lieu of emit_jump_insn.
3610         (beq, bne, bgt, blt, bge, ble, bunordered, bordered, bungt, bunlt,
3611         buneq, bunge, bunle, bltgt): Assert that the final operator and the
3612         result of sparc_emit_float_lib_cmp match for software TFmode.
3613         (movqicc, movhicc, movsicc, movdicc): Merge into...
3614         (mov<I:mode>cc): ...this.
3615         (movsfcc, movdfcc, movtfcc): Merge into...
3616         (mov<F:mode>cc): ...this.
3617         (movqi_cc_sp64, movhi_cc_sp64, movsi_cc_sp64, movdi_cc_sp64): Merge
3618         into...
3619         (mov<I:mode>_cc_v9): ...this.
3620         (movdi_cc_sp64_trunc): Delete.
3621         (movqi_cc_reg_sp64, movhi_cc_reg_sp64, movsi_cc_reg_sp64,
3622         movdi_cc_reg_sp64): Merge into...
3623         (mov<I:mode>_cc_reg_sp64): ...this.
3624         (movsf_cc_sp64): Rename into...
3625         (movsf_cc_v9): ...this.
3626         (movdf_cc_sp64): Rename into...
3627         (movdf_cc_v9): ...this.
3628         (movtf_cc_hq_sp64): Rename into...
3629         (movtf_cc_hq_v9): ...this.
3630         (movtf_cc_sp64): Rename into...
3631         (movtf_cc_v9): ...this.  Adjust for renaming of movdf_cc_sp64.
3632
3633 2008-09-21  Diego Novillo  <dnovillo@google.com>
3634
3635         * doc/gccint.texi: Include generic.texi and gimple.texi.
3636         Re-order index.
3637         * doc/tree-ssa.texi (GENERIC): Move to generic.texi.
3638         (GIMPLE): Move to gimple.texi.
3639         (Annotations): Remove references to to stmt_ann_t and
3640         ssa_name_ann_t.
3641         (SSA Operands): Rename from 'Statement Operands'.
3642         * doc/generic.texi: New.
3643         * doc/gimple.texi: New.
3644         * Makefile.in (TEXI_GCCINT_FILES): Add generic.texi and gimple.texi.
3645         * Makefile.in (TEXI_GCCINT_FILES):
3646         * gimple.c (gimple_copy_call_skip_args): Rename from
3647         giple_copy_call_skip_args.  Update all users.
3648         * doc/gimple.texi (gimple_copy_call_skip_args): Document.
3649
3650 2008-09-21  Ira Rosen  <irar@il.ibm.com>
3651
3652         PR tree-optimization/37539
3653         * tree-vect-transform.c (vect_transform_strided_load): Save vector
3654         statement in related statement field only for the first load of the
3655         group of loads with the same data reference.
3656
3657 2008-09-20  Adam Nemet  <anemet@caviumnetworks.com>
3658
3659         * config/mips/mips.h (TUNE_OCTEON): New macro.
3660         * config/mips/mips.c (mips_issue_rate): Return 2 for Octeon.
3661         (mips_multipass_dfa_lookahead): Return 2 for Octeon.
3662         * config/mips/octeon.md: New file.
3663         * config/mips/mips.md: Include octeon.md.  Restore
3664         semi-alphabetical order of include files.
3665
3666 2008-09-20  H.J. Lu  <hongjiu.lu@intel.com>
3667
3668         PR target/37571
3669         * config/i386/i386.md (*jcc_fused_1): Removed.
3670         (*jcc_fused_2): Likewise.
3671         (*jcc_fused_3): Likewise.
3672         (*jcc_fused_4): Likewise.
3673
3674 2008-09-20  Richard Sandiford  <rdsandiford@googlemail.com>
3675
3676         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Define.
3677         (IRA_COVER_CLASSES): Refer to TARGET_IRA_COVER_CLASSES.
3678         * target.h (gcc_target): Add ira_cover_classes.
3679         * ira.c: Remove IRA_COVER_CLASSES guards.
3680         (setup_cover_and_important_classes): Use targetm.ira_cover_classes
3681         instead of IRA_COVER_CLASSES.
3682         (setup_cover_and_important_classes): Remove IRA_COVER_CLASSES guard.
3683         (setup_class_translate): Likewise.
3684         (setup_reg_class_intersect_union): Likewise.
3685         (find_reg_class_closure): Replace IRA_COVER_CLASSES guard with a
3686         test of targetm.ira_cover_classes.
3687         * opts.c (decode_options): Use targetm.ira_cover_classes instead
3688         of IRA_COVER_CLASSES.
3689         * target-def.h (TARGET_IRA_COVER_CLASSES): Define.
3690         (TARGET_INITIALIZER): Include it.
3691         * targhooks.h (default_ira_cover_classes): Declare.
3692         * targhooks.c (default_ira_cover_classes): New function.
3693
3694 2008-09-19  Bob Wilson  <bob.wilson@acm.org>
3695         
3696         * config/xtensa/xtensa.md (reload<mode>_literal): Handle MEM operands.
3697         
3698 2008-09-19  Ian Lance Taylor  <iant@google.com>
3699
3700         * varasm.c (narrowing_initializer_constant_valid_p): Return
3701         NULL_TREE if ENDTYPE is not an integer.
3702
3703 2008-09-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3704
3705         PR tree-opt/30930
3706         * tree-ssa.c (execute_update_addresses_taken): Also update
3707         DECL_GIMPLE_REG_P for vector and complex types.
3708
3709 2008-09-19  Andrew MacLeod  <amacleod@redhat.com>
3710             Jan Hubicka  <jh@suse.cz>
3711
3712         PR middle-end/37567
3713         * tree-ssa-ter.c (free_temp_expr_table): Make sure fields are actually
3714         empty before freeing them.
3715         (find_replaceable_exprs): Move asserts to free_temp_expr_table.
3716
3717 2008-09-18  Bob Wilson  <bob.wilson@acm.org>
3718
3719         * configure.ac: Add HAVE_AS_TLS check for Xtensa.
3720         * config/xtensa/predicates.md (tls_symbol_operand): New.
3721         * config/xtensa/xtensa.c (TARGET_HAVE_TLS): Define.
3722         (TARGET_CANNOT_FORCE_MEM): Define.
3723         (xtensa_tls_symbol_p): New.
3724         (xtensa_emit_move_sequence): Check for and legitimize TLS addresses.
3725         (xtensa_legitimate_address_p): Disallow constant pool TLS references.
3726         (xtensa_tls_module_base): New.
3727         (xtensa_call_tls_desc): New.
3728         (xtensa_legitimize_tls_address): New.
3729         (xtensa_legitimize_address): Handle TLS symbols.
3730         (xtensa_tls_referenced_p_1): New.
3731         (xtensa_tls_referenced_p): New.
3732         (xtensa_output_addr_const_extra): Handle UNSPEC_TPOFF and
3733         UNSPEC_DTPOFF.
3734         (XTENSA_BUILTIN_THREAD_POINTER): New.
3735         (XTENSA_BUILTIN_SET_THREAD_POINTER): New.
3736         (xtensa_init_builtins): Set NOTHROW and READONLY for umulsidi3
3737         builtin.  Add declarations for __builtin_thread_pointer and
3738         __builtin_set_thread_pointer.
3739         (xtensa_fold_builtin): Recognize new builtins.
3740         (xtensa_expand_builtin): Expand new builtins.
3741         * config/xtensa/xtensa.h (XCHAL_HAVE_THREADPTR): Define default value.
3742         (TARGET_THREADPTR): Define.
3743         (HAVE_AS_TLS): Define default value.
3744         (LEGITIMATE_CONSTANT_P): Disallow TLS references.
3745         * config/xtensa/xtensa.md (UNSPEC_TPOFF, UNSPEC_DTPOFF): New.
3746         (UNSPEC_TLS_FUNC, UNSPEC_TLS_ARG, UNSPEC_TLS_CALL, UNSPEC_TP): New.
3747         (UNSPECV_SET_TP): New.
3748         (sym_TPOFF, sym_DTPOFF): New.
3749         (load_tp, set_tp, tls_func, tls_arg, tls_call): New.
3750         * config/xtensa/xtensa-protos.h (xtensa_tls_referenced_p): Declare.
3751         * configure: Regenerated.
3752         
3753 2008-09-18  H.J. Lu  <hongjiu.lu@intel.com>
3754
3755         PR target/37394
3756         * config/ia64/ia64.c (ia64_optimization_options): Move
3757         checking and setting flag_schedule_insns_after_reload and
3758         ia64_flag_schedule_insns2 back to ...
3759         (ia64_override_options): Here.
3760
3761 2008-09-18  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3762
3763         PR rtl-opt/37451
3764         * loop-doloop.c (doloop_modify): New argument zero_extend_p and
3765         zero extend count after the correction to it is done.
3766         (doloop_optimize): Update call to doloop_modify, don't zero extend
3767         count before call.
3768
3769 2008-09-18  Martin Jambor  <mjambor@suse.cz>
3770
3771         * ipa-cp.c (ipcp_estimate_growth): Return 0 instead of false.
3772
3773         * ipa-prop.c: Correct comments.
3774         * ipa-prop.h: Likewise.
3775
3776 2008-09-18  Jan Hubicka  <jh@suse.cz>
3777
3778         PR middle-end/37448
3779         * ipa-reference.c (ipa_reference_local_vars_info_d,
3780         ipa_reference_global_vars_info_d,
3781         ipa_reference_local_vars_info_t, ipa_reference_global_vars_info_t,
3782         ipa_reference_vars_info_t): Move here from ipa-reference.h
3783         (node_duplication_hook_holder, node_removal_hook_holder): New.
3784         (get_reference_vars_info_from_cgraph): Rename to ...
3785         (get_reference_vars_info): ... this one, use cgraph uids.
3786         (get_local_reference_vars_info, get_global_reference_vars_info):
3787         Use cgraph instead of decl.
3788         (ipa_reference_get_read_local, ipa_reference_get_written_local):
3789         Remove.
3790         (ipa_reference_get_read_global, ipa_reference_get_not_read_global
3791         ipa_reference_get_written_global,
3792         ipa_reference_get_not_written_global): Use cgraph argument.
3793         (check_call): Simplify avail check.
3794         (scan_stmt_for_static_refs): Update.
3795         (propagate_bits): Update.
3796         (merge_callee_local_info): Remove.
3797         (init_function_info): Use cgraph nodes.
3798         (clean_function_local_data): Break out from ...
3799         (clean_function): ... here.
3800         (copy_local_bitmap, copy_global_bitmap): New functions.
3801         (duplicate_node_data, remove_node_data): New functions.
3802         (generate_summary): Register hooks; use visibility instead of
3803         master clones.
3804         (propafate): Use cgraph nodes; copy bitmap to each node in cycle.
3805         * ipa-reference.h (ipa_reference_local_vars_info_d,
3806         ipa_reference_global_vars_info_d,
3807         ipa_reference_local_vars_info_t, ipa_reference_global_vars_info_t,
3808         ipa_reference_vars_info_t): Move to ipa-reference.c
3809         (ipa_reference_get_read_local, ipa_reference_get_written_local):
3810         Remove.
3811         (ipa_reference_get_read_global, ipa_reference_get_written_global,
3812         ipa_reference_get_not_read_global,
3813         ipa_reference_get_not_written_global): Update prototype.
3814         * ipa-pure-const.c (funct_state_vec): Turn into VECtor.
3815         (init_state): Remove.
3816         (node_duplication_hook_holder, node_removal_hook_holder): New.
3817         (get_function_state, set_function_state): Use VECtor.
3818         (analyze_function): Check body availability.
3819         (add_new_function): Likewise.
3820         (duplicate_node_data, remove_node_data): New.
3821         (generate_summary): Register hooks; do not care about clones.
3822         (propafate): Do not care about clones; recursive functions are
3823         not looping.
3824         * ipa-utils.c (searchc, ipa_utils_reduced_inorder): Do not skip clones.
3825         * ipa-prop.c (edge_removal_hook_holder, node_removal_hook_holder,
3826         * edge_duplication_hook_holder, node_duplication_hook_holder): Make
3827         static.
3828         * tree-flow.h (function_ann_d): Remove reference_vars_info.
3829         * tree-ssa-opreands.c (add_call_clobber_ops, add_call_read_ops):
3830         Update call of ipa-reference accesors.
3831
3832 2008-09-18  Simon Baldwin  <simonb@google.com>
3833
3834         * c-opts.c (c_common_handle_option): Add handling for
3835         -Wbuiltin-macro-redefined command line option.
3836         * c.opt: Added builtin-macro-redefined option.
3837         * doc/invoke.texi (Warning Options): Add -Wbuiltin-macro-redefined
3838         documentation.
3839
3840 2008-09-18  Richard Guenther  <rguenther@suse.de>
3841
3842         PR tree-optimization/37258
3843         * tree-ssa-sccvn.c (vn_phi_compute_hash): Include the precision
3844         and signedness for integral types.
3845         (vn_phi_eq): Require compatible types.
3846
3847 2008-09-18  Jakub Jelinek  <jakub@redhat.com>
3848
3849         PR debug/34037
3850         * gimplify.c (gimplify_type_sizes): When not optimizing, ensure
3851         TYPE_MIN_VALUE and TYPE_MAX_VALUE is not is not DECL_IGNORED_P
3852         VAR_DECL.
3853         * cfgexpand.c (expand_used_vars): Keep DECL_ARTIFICIAL
3854         !DECL_IGNORED_P vars in local_decls list for instantiate_decls,
3855         ggc_free other TREE_LIST nodes from that chain.
3856         * function.c (instantiate_decls): Instantiate also DECL_RTL
3857         of vars in cfun->local_decls, free that list afterwards.
3858
3859 2008-09-18  Eric Botcazou  <ebotcazou@adacore.com>
3860
3861         * config/sparc/sol2.h (WIDEST_HARDWARE_FP_SIZE): Move to...
3862         * config/sparc/sparc.h (WIDEST_HARDWARE_FP_SIZE): ...here.
3863
3864 2008-09-18  Andrew MacLeod  <amacleod@redhat.com>
3865
3866         * tree-outof-ssa.c (eliminate_useless_phis): Fix formatting.
3867         * tree-flow-.h (struct immediate_use_iterator_d): Fix comment.
3868
3869 2008-09-18  Andrew MacLeod  <amacleod@redhat.com>
3870
3871         PR tree-optimization/37102
3872         * tree-outof-ssa.c (remove_gimple_phi_args): Remove all the PHI args
3873         from a node. Check to see if another PHI is dead.
3874         (eliminate_useless_phis): Rename from eliminate_virtual_phis and 
3875         remove real PHIs which have no uses.
3876         (rewrite_out_of_ssa): Call eliminate_useless_phis.
3877
3878 2008-09-18  Richard Guenther  <rguenther@suse.de>
3879
3880         PR middle-end/37284
3881         * tree-cfg.c (remove_useless_stmts_1): Remove
3882         GIMPLE_CHANGE_DYNAMIC_TYPE if not optimizing.
3883
3884 2008-09-18  Nick Clifton  <nickc@redhat.com>
3885
3886         * config/frv/frv.h (IRA_COVER_CLASSES): Define.
3887         (SECONDARY_INPUT_RELOAD_CLASS): Omit unused argument in call
3888         to frv_secondary_reload_class.
3889         (SECONDARY_OUTPUT_RELOAD_CLASS): Likewise.
3890         * config/frv/frv.c (TARGET_SECONDARY_RELOAD): Define.
3891         (frv_secondary_reload_class): Omit unused parameter.
3892         (frv_secondary_reload): New function.  Handle the case when
3893         secondary_reload_class() is called before the reload_(in|out)
3894         _optabs have been initialised.
3895         * config/frv/frv-protos.h (frv_secondary_reload_class): Omit
3896         unused parameter.
3897         * config/frv/frv.md: Define an exclusion set between fr550_m0
3898         and fr550_f0.
3899
3900 2008-09-18  Richard Guenther  <rguenther@suse.de>
3901
3902         PR tree-optimization/37456
3903         * tree-ssa-reassoc.c (build_and_add_sum): If the stmt we
3904         want to insert after ends a BB insert on the single fallthru
3905         outgoing edge.
3906
3907 2008-09-18  Andreas Krebbel  <krebbel1@de.ibm.com>
3908
3909         * doc/invoke.texi: Document -mhard-dfp, -mno-hard-dfp.
3910         Mention -march=z9-109, z9-ec and z10.
3911
3912 2008-09-18  Uros Bizjak  <ubizjak@gmail.com>
3913
3914         PR rtl-optimization/37544
3915         * regrename.c (maybe_mode_change): Exit early when copy_mode
3916         is narrower than orig_mode and narrower than new_mode.
3917
3918 2008-09-18  Alexander Monakov  <amonakov@ispras.ru>
3919
3920         PR middle-end/37499
3921         * sched-int.h (struct _haifa_insn_data): Remove unused field ref_count.
3922
3923         * sched-rgn.c (ref_counts): Remove.
3924         (insn_referenced): New static variable.
3925         (INSN_REF_COUNT): Remove.
3926         (sched_run_compute_dependencies): Use insn_referenced instead of
3927         INSN_REF_COUNT.
3928         (add_branch_dependences): Likewise.  Delete dead assignment.
3929
3930 2008-09-17  Adam Nemet  <anemet@caviumnetworks.com>
3931
3932         * haifa-sched.c (dep_cost_1): Recognize the producer even if the
3933         consumer is an asm.  Add comment why this is important.
3934         (choose_ready): Add comment to the "INSN_CODE (insn) >= 0 ||
3935         recog_memoized (insn) < 0" assert.  Put ENABLE_CHECKING around it.
3936
3937 2008-09-17  Joseph Myers  <joseph@codesourcery.com>
3938
3939         * expr.c (emit_group_store): Do not shift before moving via a
3940         stack slot.
3941
3942 2008-09-17  Eric Botcazou  <ebotcazou@adacore.com>
3943
3944         * varasm.c (initializer_constant_valid_p): Forbid view-conversions
3945         from aggregate to non-aggregate type if the bit pattern is not fully
3946         preserved afterwards.
3947
3948 2008-09-17  Richard Guenther  <rguenther@suse.de>
3949
3950         * tree-cfg.c (verify_types_in_gimple_assign): Rename to ...
3951         (verify_gimple_assign): ... this.  Split into ...
3952         (verify_gimple_assign_unary): ... this,
3953         (verify_gimple_assign_binary): ... that,
3954         (verify_gimple_assign_single): ... and this.
3955         (verify_types_in_gimple_stmt): Call verify_gimple_assign.
3956         Fix GIMPLE_CHANGE_DYNAMIC_TYPE handling.
3957         (verify_types_in_gimple_min_lval): Handle TARGET_MEM_REF.
3958         (verify_types_in_gimple_reference): Be forgiving with
3959         VIEW_CONVERT_EXPRs.
3960         (verify_gimple_phi): Deal with virtual operands.
3961
3962         * tree.def (PREDICT_EXPR): Change to tcc_expression.
3963
3964 2008-09-17  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3965
3966         * tree.c (get_callee_fndecl): Don't call the language hook.
3967         * langhooks.h (lang_hooks): Remove lang_get_callee_fndecl.
3968         * langhooks-def.h (LANG_HOOKS_GET_CALLEE_FNDECL): Kill.
3969         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_GET_CALLEE_FNDECL.
3970
3971 2008-09-17  Jakub Jelinek  <jakub@redhat.com>
3972
3973         * tree.c (protected_set_expr_location): Don't unnecessarily
3974         check for error_mark_node.
3975
3976 2008-09-17  Art Haas  <ahaas@impactweather.com>
3977
3978         * ipa-reference.c (analyze_function): Declare step only if
3979         ENABLE_CHECKING is defined.
3980
3981 2008-09-17  Jan Hubicka  <jh@suse.cz>
3982
3983         PR c++/18071
3984         * tree.h (DECL_INLINE): remove.
3985         (DECL_DECLARED_INLINE_P): Update docs.
3986         (DECL_NO_INLINE_WARNING_P): new.
3987         (tree_function_decl): Replace inline_flag by no_inline_warning_flag.
3988         * tree-inline.c (inlinable_function_p): Set DECL_NO_INLINE_WARNING_P.
3989
3990 2008-09-17  Jakub Jelinek  <jakub@redhat.com>
3991             Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
3992
3993         PR bootstrap/37441
3994         * dwarf2out.c (dwarf2out_do_cfi_asm) [MIPS_DEBUGGING_INFO]: Return
3995         false.
3996
3997 2008-09-17  Jan Hubicka  <jh@suse.cz>
3998
3999         * ipa-reference.c (ipa_obstack): Remove.
4000         (local_info_obstack, global_info_obstack): New.
4001         (add_static_var): We now handle variables only.
4002         (mark_address_taken, mark_load, mark_store): New functions based on ...
4003         (check_operand): ... remove.
4004         (get_asm_stmt_operands): Rename to ...
4005         (check_asm_memory_clobber): ... this. Look only for memory clobber.
4006         (scan_stmt_for_static_refs): Rewrite.
4007         (scan_op_for_static_refs): Rename to ...
4008         (scan_initializer_for_static_refs): do not look for VAR_DECL
4009         initializers; stop recursion on types and decls.
4010         (ipa_init): Use proper obstacks.
4011         (analyze_variable): Use scan_initializer_for_static_refs.
4012         (init_function_info): Use local obstack.
4013         (analyze_function): Simplify.
4014         (add_new_function): We don't need visited_nodes obstack.
4015         (generate_summary): Use proper obstacks; cleanup after propagation.
4016
4017 2008-09-17  Richard Guenther  <rguenther@suse.de>
4018
4019         PR middle-end/37385
4020         PR tree-optimization/37491
4021         * alias.c (get_alias_set): Use the canonical type.
4022         * tree-vect-transform.c (vectorizable_store): Use the type of
4023         the lhs for the vector type.  Adjust checking.
4024         (vectorizable_load): Adjust checking.
4025
4026 2008-09-16  Jakub Jelinek  <jakub@redhat.com>
4027             Adam Nemet  <anemet@caviumnetworks.com>
4028
4029         PR rtl-optimization/37483
4030         * ifcvt.c (noce_try_sign_mask): Use if_info->test_bb instead of
4031         if_info->insn_b's bb as argument to optimize_bb_for_speed_p.
4032         Rearrange code to better match the original comment.  Check
4033         t_unconditional first.  Improve comment.
4034
4035 2008-09-16  Jakub Jelinek  <jakub@redhat.com>
4036
4037         PR c/37529
4038         * gimplify.c (gimplify_expr) <case GOTO_EXPR>: If gimplification of
4039         GOTO_DESTINATION failed, don't create GIMPLE_GOTO.
4040
4041         PR c++/37530
4042         * gimplify.c (gimplify_expr) <case TRY_CATCH_EXPR>: Don't create
4043         GIMPLE_TRY if cleanup sequence is empty.
4044
4045 2008-09-16  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4046
4047         PR middle-end/37263
4048         * tree-ssa-loop-ivopts.c (determine_use_iv_cost_condition): Prefer the
4049         eliminate IV if the cost are the same.
4050
4051 2008-09-16  Richard Guenther  <rguenther@suse.de>
4052
4053         PR middle-end/37380
4054         * tree-sra.c (sra_build_assignment): Do not call the gimplifier
4055         if not necessary.
4056
4057 2008-09-16  Richard Guenther  <rguenther@suse.de>
4058
4059         PR tree-optimization/37508
4060         * tree-vrp.c (simplify_truth_ops_using_ranges): Also allow -1.
4061
4062 2008-09-15  Kaz Kojima  <kkojima@gcc.gnu.org>
4063
4064         * config/sh/sh.md (movsf_ie): Fix length for TARGET_SH2A.
4065
4066 2008-09-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4067
4068         * config/rs6000/rs6000.md (floatsidf2): Rewrite PowerPC64 case to
4069         use gen_floatdidf2 directly.
4070         (floatunssidf2): Likewise.
4071         (floatsidf_ppc64_mfpgpr): Remove.
4072         (floatsidf_ppc64): Remove.
4073         (floatunssidf_ppc64): Remove.
4074
4075 2008-09-15  Jakub Jelinek  <jakub@redhat.com>
4076
4077         * ira-color.c (finish_cost_update): Free update_cost_queue_elems
4078         rather than update_cost_queue.
4079
4080         * tree-ssa-alias.c (init_alias_info): Call bitmap_obstack_release
4081         in every call starting with the second one, instead of only when
4082         alias_bitmap_obstack.elements != NULL.
4083
4084         * tree-predcom.c (filter_suitable_components): Free all refs in
4085         act->refs vector before calling release_component.
4086         (add_ref_to_chain): Free ref if not adding it to chain->refs.
4087
4088         * tree-data-ref.c (free_subscripts): Free all subscript objects.
4089
4090         * tree-loop-linear.c (linear_transform_loops): Initialize
4091         lambda_obstack only after calling perfect_loop_nest_depth.
4092         Goto free_and_continue instead of just continue for later failures.
4093
4094         PR middle-end/37479
4095         * doc/invoke.texi: Document -fno-dwarf2-cfi-asm.
4096
4097         PR libmudflap/36397
4098         * tree-mudflap.c (mf_xform_derefs_1): Handle VIEW_CONVERT_EXPR.
4099
4100 2008-09-14  Andreas Schwab  <schwab@suse.de>
4101
4102         * tree-call-cdce.c (check_target_format): Accept Motorola formats.
4103
4104 2008-09-14  Jan Hubicka  <jh@suse.cz>
4105
4106         * invoke.texi (-fconserve-stack): Document.
4107         * opts.c (decode_options): Handle conserve_stack.
4108         * common.opt (fconvserve_stack): New.
4109
4110 2008-09-14  David Edelsohn  <edelsohn@gnu.org>
4111
4112         * config.host: Add x-aix to host_xmake_file.
4113         * config/rs6000/t-aix52: Do not override LDFLAGS.
4114         * config/rs6000/x-aix: New file.
4115
4116 2008-09-14  Andy Hutchinson  <hutchinsonandy@aim.com>
4117
4118         PR target/19636
4119         PR target/24894
4120         PR target/31644
4121         PR target/31786
4122         * config/avr/avr.c (legitimate_address_p): Fix problem where subreg
4123         is not recognized as a valid register usage. Allow REG_X to be used
4124         as a base pointer.
4125         * config/avr/avr.h (LEGITIMIZE_RELOAD_ADDRESS): Remove code that
4126         forces a reload when using a base register.
4127
4128 2008-09-14  Danny Smith  <dannysmith@users.sourceforge.net>
4129
4130         * config/i386/cygming-crtend.c (register_frame_ctor): If
4131         DEFAULT_USE_CXA_ATEXIT, register __gcc_deregister_frame
4132         directly with atexit.
4133         (deregister_frame_ctor): Rename to ...
4134         (deregister_frame_dtor): Use to call __gcc_deregister_frame
4135         if !DEFAULT_USE_CXA_ATEXIT.
4136
4137 2008-09-13  Jan Hubicka  <jh@suse.cz>
4138
4139         * cgraph.c: Include value-prof.h
4140         * Makefile.in (cgraph.o): Add value-prof.h dependency.
4141
4142 2008-09-13  Jan Hubicka  <jh@suse.cz>
4143
4144         PR middle-end/32581
4145         * tree-profile.c (add_abnormal_goto_call_edges): New function.
4146         (tree_gen_interval_profiler, tree_gen_pow2_profiler,
4147         tree_gen_one_value_profiler, tree_gen_average_profiler,
4148         tree_gen_ic_func_profiler, tree_gen_ior_profiler): Use it.
4149
4150 2008-09-13  Jan Hubicka  <jh@suse.cz>
4151
4152         * i386.c (ix86_expand_movmem, ix86_expand_movstr): Avoid processing
4153         too many bytes on misalligned blocks.
4154
4155 2008-09-13  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
4156
4157         * doc/cfg.texi: Fix some typos.
4158         * doc/extend.texi: Likewise.
4159         * doc/install.texi: Likewise.
4160         * doc/invoke.texi: Likewise.
4161         * doc/rtl.texi: Likewise.
4162         * doc/tree-ssa.texi: Likewise.
4163
4164 2008-09-13  Richard Guenther  <rguenther@suse.de>
4165
4166         PR middle-end/30141
4167         * tree-nested.c (finalize_nesting_tree_1): Generate valid
4168         gimple stores for memory rhs.
4169
4170 2008-09-13  H.J. Lu  <hongjiu.lu@intel.com>
4171
4172         PR rtl-optimization/37489
4173         * cse.c (fold_rtx): Don't return const_true_rtx for float
4174         compare if FLOAT_STORE_FLAG_VALUE is undefined.
4175
4176 2008-09-13  Jan Hubicka  <jh@suse.cz>
4177
4178         PR tree-optimization/37392
4179         * tree-inline.c (remap_gimple_stmt): Do not remap return value.
4180
4181 2008-09-13  Martin Jambor  <mjambor@suse.cz>
4182             Jan Hubicka  <jh@suse.cz>
4183
4184         * cgraph.c (free_edges): New variable.
4185         (NEXT_FREE_EDGE): New macro.
4186         (cgraph_free_edge): New function.
4187         (cgraph_remove_edge): Call cgraph_remove_edge_1.
4188         (cgraph_node_remove_callees): Likewise.
4189         (cgraph_node_remove_callers): Likewise.
4190         (cgraph_create_edge): Reuse edges from the free list.  Do not
4191         update uid if doing so.
4192         (cgraph_remove_*_hook): Add free call.
4193
4194 2008-09-13  Richard Sandiford  <rdsandiford@googlemail.com>
4195
4196         * ira-color.c (conflict_allocno_vec): Delete.
4197         (update_cost_queue_elem): New structure.
4198         (update_cost_queue): New variable.
4199         (update_cost_queue_tail): Likewise.
4200         (update_cost_queue_elems): Likewise.
4201         (allocno_update_cost_check): Delete.
4202         (initiate_cost_update): Allocate update_cost_queue_elems
4203         instead of allocno_update_cost_check.
4204         (finish_cost_update): Update the free()s accordingly.
4205         (start_update_cost): New function.
4206         (queue_update_cost): Likewise.
4207         (get_next_update_cost): Likewise.
4208         (update_copy_costs_1): Inline into...
4209         (update_copy_costs): ...here.  Use a queue instead of recursive calls.
4210         Use cover_class instead of ALLOCNO_COVER_CLASS (another_allocno),
4211         once we've established they are equal.  Don't allocate update
4212         costs if there is nothing to add to them.
4213         (update_conflict_hard_regno_costs): Remove ALLOCNO and
4214         DIVISOR arguments.  Use a queue instead of recursive calls;
4215         process all the allocnos in the initial queue, rather than
4216         a single allocno.
4217         (assign_hard_reg): Use queue_update_cost instead of
4218         conflict_allocno_vec.  Queue coalesced allocnos instead
4219         of calling update_conflict_hard_regno_costs for each one.
4220         Just call update_conflict_hard_regno_costs once for the
4221         entire queue.
4222         (ira_color): Remove conflict_allocno_vec handling.
4223
4224 2008-09-12  Sebastian Pop  <sebastian.pop@amd.com>
4225
4226         PR tree-optimization/37484
4227         * graphite.c (scop_record_loop): Use snprintf instead of sprintf.
4228         (save_var_name): Same.
4229         (initialize_cloog_names): Same.
4230         (initialize_cloog_names): Same.
4231
4232 2008-09-12  Sebastian Pop  <sebastian.pop@amd.com>
4233
4234         * tree-scalar-evolution.c (set_instantiated_value): Set
4235         instantiated_below.
4236
4237 2008-09-12  Vladimir Makarov  <vmakarov@redhat.com>
4238
4239         PR rtl-opt/37377
4240
4241         * ira-build.c (common_loop_tree_node_dominator): Remove.
4242         (copy_live_ranges_to_removed_store_destinations): New function.
4243         (regno_top_level_allocno_map): Move to top level from ...
4244         (ira_flattening): ... here.  Use
4245         copy_live_ranges_to_removed_store_destinations.
4246
4247         * ira-emit.c (generate_edge_moves): Fix a comment.
4248
4249 2008-09-12  Anatoly Sokolov  <aesok@post.ru>
4250
4251         PR target/37466
4252         * config/avr/avr.md (movsi_lreg_const peephole2): Add match_dup for
4253         scratch register after 'set' pattern.
4254
4255 2008-09-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
4256
4257         * emit-rtl.c (set_reg_attrs_from_value): Fix invalid alignment
4258         information passed to mark_reg_pointer.
4259         * explow.c (force_reg): Likewise.
4260
4261 2008-09-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
4262
4263         * config/spu/spu.c (spu_override_options): Default to -mno-safe-hints
4264         when building for the celledp architecture.
4265
4266 2008-09-12  Richard Guenther  <rguenther@suse.de>
4267
4268         * tree-vrp.c (simplify_truth_ops_using_ranges): Fix types.
4269
4270 2008-09-12  Eric Botcazou  <ebotcazou@adacore.com>
4271
4272         PR rtl-optimization/37424
4273         * ira-color.c (coalesced_pseudo_reg_slot_compare): Untie by comparing
4274         the regnos instead of the addresses.
4275
4276 2008-09-11  Janis Johnson  <janis187@us.ibm.com>
4277
4278         * ginclude/float.h (DEC_EVAL_METHOD): Correct the macro name.
4279
4280 2008-09-11  Richard Guenther  <rguenther@suse.de>
4281
4282         * tree-ssa-uncprop.c (associate_equivalences_with_edges): Avoid
4283         entering the weaker equivalence recording.
4284
4285         * tree-ssa-phiprop.c (propagate_with_phi): Fix tuplification.
4286
4287 2008-09-11  Jeff Law <law@redhat.com>
4288
4289         * reload1.c (alter_reg): Undo the BYTE_BIG_ENDIAN correction performed
4290         by assign_stack_local on the IRA path for stack slot sharing
4291         as well as the non-IRA path.
4292
4293 2008-09-11  Uros Bizjak  <ubizjak@gmail.com>
4294
4295         * config/i386/i386.h: Fix whitespace issues.
4296
4297 2008-09-11  Martin Jambor  <mjambor@suse.cz>
4298
4299         * ipa-prop.h (struct ipa_param_flags): Removed.
4300         (struct ipa_param_descriptor): New structure.
4301         (struct ipa_node_params): ipcp_lattices, param_decls and
4302         param_flags moved to ipa_param_description.
4303         (ipa_get_ith_param): Renamed to ipa_get_param, changed to access
4304         descriptors.  Renamed all users.
4305         (ipa_is_ith_param_modified): Renamed to ipa_is_param_modified,
4306         changed to access descriptors.  Renamed all users.
4307         (ipa_is_ith_param_called): Renamed to ipa_is_param_called, changed
4308         to access descriptors. Renamed all users.
4309         * ipa-cp.c (ipcp_init_cloned_node): Call
4310         ipa_initialize_node_params instead of ipa_count_formal_params and
4311         ipa_create_param_decls_array.
4312         (ipcp_analyze_node): Likewise.
4313         (ipcp_get_ith_lattice): Renamed to ipcp_get_lattice, changed to access
4314         descriptors.  Renamed all users.
4315         (ipcp_initialize_node_lattices): Remove allocation.
4316         * ipa-inline.c (inline_indirect_intraprocedural_analysis): Call
4317         ipa_initialize_node_params instead of ipa_count_formal_params and
4318         ipa_create_param_decls_array.
4319         * ipa-prop.c (ipa_create_param_decls_array): Renamed to
4320         ipa_populate_param_decls, made static, added parameter info,
4321         renamed mt to node, removed allocation, changed to use
4322         descriptors.
4323         (ipa_count_formal_params): Made static, added parameter info,
4324         renamed mt to node.
4325         (ipa_initialize_node_params): New function.
4326         (ipa_check_stmt_modifications): Changed to use descriptors.
4327         (ipa_detect_param_modifications): Removed allocation, changed to
4328         use descriptors.
4329         (ipa_note_param_call): Changed to use descriptors.
4330         (ipa_analyze_params_uses): Removed allocation.
4331         (ipa_free_node_params_substructures): Changed to use descriptors.
4332         (ipa_edge_duplication_hook): Use the unused attribute.
4333         (ipa_node_duplication_hook): Use the unused attribute, changed to
4334         use descriptors, changed to duplicate descriptors.
4335
4336         * ipa-inline.c (cgraph_mark_inline_edge): New parameter new_edges,
4337         changed all callers.  Call ipa_propagate_indirect_call_infos if doing
4338         indirect inlining.  Made static.
4339         (cgraph_decide_inlining): Freeing ipa-prop structures after inlining
4340         functions called only once.
4341         (cgraph_decide_recursive_inlining): Don't call
4342         ipa_propagate_indirect_call_infos, pass new_edges to
4343         cgraph_mark_inline_edge instead.
4344         (cgraph_decide_inlining_of_small_functions): Don't call
4345         ipa_propagate_indirect_call_infos, pass new_edges to
4346         cgraph_mark_inline_edge instead.
4347         (cgraph_decide_inlining): Don't call
4348         ipa_propagate_indirect_call_infos.
4349         * ipa-prop.c: Check that vectors are allocated.
4350
4351         * ipa-inline.c (cgraph_mark_inline_edge): Returns boolean, true
4352         iff a new cgraph edges have been created.
4353         (cgraph_decide_inlining): New variable redo_always_inline.
4354         Flattening and always_inlining loop until callgraph stabilizes.
4355         * ipa-prop.c (update_call_notes_after_inlining): Returns boolean,
4356         true iff new cgraph edges have been created.
4357         (propagate_info_to_inlined_callees): Likewise.
4358         (ipa_propagate_indirect_call_infos): Likewise.
4359
4360 2008-09-11  Richard Guenther  <rguenther@suse.de>
4361
4362         * tree-vectorizer.c (slpeel_add_loop_guard): Fix types.
4363         (set_prologue_iterations): Likewise.
4364         * tree-vect-transform.c (vect_create_addr_base_for_vector_ref):
4365         Likewise.
4366         (vect_update_init_of_dr): Likewise.
4367         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Fix
4368         type verification.
4369         * fold-const.c (fold_unary): Do not generate calculations
4370         in sub-types.
4371
4372 2008-09-11  Paolo Bonzini  <bonzini@gnu.org>
4373
4374         * dojump.c (do_jump) [BIT_AND_EXPR]: Move below.  Fall through to
4375         TRUTH_AND_EXPR for boolean (1-bit precision) expressions.
4376         (do_jump) [BIT_IOR_EXPR]: Compile as TRUTH_OR_EXPR.
4377
4378         * tree-flow.h (simplify_stmt_using_ranges): Accept a GSI, return
4379         a bool.
4380         * tree-ssa-propagate.c (substitute_and_fold): Pass a GSI to
4381         VRP's simplify_stmt_using_ranges.  Do simplify_stmt_using_ranges
4382         before finalizing the changes.
4383         * tree-vrp.c (extract_range_from_binary_expr): Add limited support
4384         for BIT_IOR_EXPR.
4385         (simplify_truth_ops_using_ranges): New.
4386         (simplify_div_or_mod_using_ranges, simplify_abs_using_ranges,
4387         simplify_cond_using_ranges, simplify_switch_using_ranges): Return
4388         whether a simplification was made.
4389         (simplify_stmt_using_ranges): Ditto, and accept a GSI.  For GS_ASSIGN,
4390         use a switch statement and also call simplify_truth_ops_using_ranges.
4391
4392 2008-09-11  Jan Hubicka  <jh@suse.cz>
4393
4394         * ggc-common.c (loc_array): Make static.
4395         * dce.c (rest_of_handle_ud_dce): Free worklist.
4396
4397 2008-09-11  Jan Hubicka  <jh@suse.cz>
4398
4399         * cgraph.c (cgraph_release_function_body): Plug memory leak on
4400         ipa_transforms_to_apply and CFG; ggc_free gimple df and struct
4401         function so we are sure we do not dangle it forever.
4402         * function.c (outer_function_chain, find_function_data): Remove.
4403         (function_context_stack): New.
4404         (push_function_context, pop_function_context): Update.
4405         * function.h (struct function): Remove pointer outer.
4406         (outer_function_chain, find_function_data): Remove.
4407         * stmt.c (force_label_rtx): Remove dead call of find_function_data.
4408
4409 2008-09-11  Jan Hubicka  <jh@suse.cz>
4410
4411         PR middle-end/37448
4412         * cgraph.c (cgraph_create_edge): Use !cgraph_edge for sanity check.
4413
4414 2008-09-11  Jan Hubicka  <jh@suse.cz>
4415
4416         * tree-ssa-pre.c (phi_translate_1): Fix memory leak
4417
4418 2008-09-11  Jan Hubicka  <jh@suse.cz>
4419
4420         * tree-ssa.c (redirect_edge_var_map_clear): Fix formatting.
4421         (free_var_map_entry): New function.
4422         (redirect_edge_var_map_destroy): Use it.
4423
4424 2008-09-11  Jan Hubicka  <jh@suse.cz>
4425
4426         PR middle-end/37448
4427         * tree-inline.c (add_lexical_block): Replace with ...
4428         (prepend_lexical_block): ... prepend at begginig.
4429         (remap_blocks): Use it and reverse later.
4430         (expand_call_inline): Use prepend_lexical_block.
4431
4432 2008-09-11  Jan Hubicka  <jh@suse.cz>
4433
4434         * gimplify.c (pop_gimplify_context): Free bind_expr_stack.
4435
4436 2008-09-11  Jan Hubicka  <jh@suse.cz>
4437
4438         * function.c (free_after_compilation): Call insn_locators_free.
4439         * cfglayout.c (insn_locators_free): New function.
4440         * rtl.h (insn_locators_free): Declare.
4441
4442 2008-09-11  Jan Hubicka  <jh@suse.cz>
4443
4444         * ifcvt.c (check_cond_move_block): Make regs argument pointer to
4445         vector pointer.
4446         (cond_move_process_if_block): Update call.
4447
4448 2008-09-11  Jan Hubicka  <jh@suse.cz>
4449
4450         * toplev.c (dump_memory_report): Call dump_vec_loc_statistics.
4451         * vec.c: Include hashtab.h
4452         (vec_descriptor, ptr_hash_entry): New structures.
4453         (vec_desc_hash, vec_ptr_map): New static variables.
4454         (hash_descriptor, eq_descriptor, hash_ptr, eq_ptr, vec_descriptor,
4455         register_overhead, free_overhead, vec_heap_free): New functions.
4456         (vec_gc_o_reserve_1): ggc_free when resizing to 0.
4457         (vec_heap_o_reserve_1): free when resizing to 0; add statistics.
4458         (cmp_statistic, add_statistics, dump_vec_loc_statistics):
4459         New functions.
4460
4461 2008-09-11  Ira Rosen  <irar@il.ibm.com>
4462
4463         PR tree-optimization/37474
4464         * tree-vect-analyze.c (vect_supported_load_permutation_p): Check the
4465         length of load permutation.
4466
4467 2008-09-11  Andreas Schwab  <schwab@suse.de>
4468
4469         * config/m68k/m68k.h (IRA_COVER_CLASSES): Define.
4470
4471 2008-09-11  Jakub Jelinek  <jakub@redhat.com>
4472
4473         PR target/37382
4474         * expmed.c (extract_low_bits): Avoid creating invalid subregs.
4475         * dse.c (find_shift_sequence): Use extract_low_bits instead of
4476         simplify_gen_subreg.
4477
4478 2008-09-11  Ira Rosen  <irar@il.ibm.com>
4479
4480         * tree-vect-transform.c (vectorizable_store): Use the rhs vector type
4481         for alias check.
4482
4483 2008-09-10  Jakub Jelinek  <jakub@redhat.com>
4484
4485         PR middle-end/37338
4486         * gimplify.c (gimplify_body): Call default_rtl_profile.
4487
4488         PR target/36904
4489         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): Return NULL
4490         instead of tok->val.node if not expanding to something else.  Handle
4491         intervening CPP_PADDING tokens.
4492         (altivec_categorize_keyword): Remove unneeded comparisons.
4493
4494 2008-09-10  Richard Guenther  <rguenther@suse.de>
4495
4496         * tree-ssa-pre.c (phi_translate_1): Fix memory leak.
4497
4498 2008-09-10  Richard Guenther  <rguenther@suse.de>
4499
4500         PR middle-end/37432
4501         * tree-inline.c (insert_init_stmt): Make sure to not
4502         insert invalid gimple stores.
4503
4504 2008-09-10  Sebastian Pop  <sebastian.pop@amd.com>
4505
4506         PR tree-optimization/37388
4507         * toplev.c (process_options): Fail and warn when graphite
4508         flags are used, but the compiler has not been configured
4509         with graphite libraries.
4510         * graphite.c (graphite_transform_loops): Remove printfs
4511         to dump_file for the case when graphite is not available.
4512
4513 2008-09-10  H.J. Lu  <hongjiu.lu@intel.com>
4514
4515         PR target/37434:
4516         * config/i386/i386.c (ix86_expand_vector_init_interleave): Force
4517         the even element into register.
4518         (ix86_expand_vector_init_general): Don't use
4519         ix86_expand_vector_init_interleave on V16QImode and V8HImode
4520         if we can't move from GPR to SSE register directly.
4521
4522 2008-09-10  Bernd Schmidt  <bernd.schmidt@analog.com>
4523
4524         * config/bfin/bfin.c (workaround_speculation): Correct algorithm to
4525         not lose track of the number of NOPs needed.  Number of NOPs needed
4526         for sync vs. loads workaround was switched; corrected.  Run second
4527         pass for all workarounds.  No NOPs needed after call insns.  Change
4528         second pass to use find_next_insn_start and find_load helpers in order
4529         to properly detect parallel insns.
4530         * config/bfin/bfin.md (cbranch_with_nops): Increase length.
4531
4532 2008-09-10  Jan Hubicka  <jh@suse.cz>
4533
4534         * value-prof.c (gimple_ic): Fix tuplification bug.
4535         * sched-deps.c (sched_insns_conditions_mutex_p): Silence unitialized
4536         var warning.
4537
4538 2008-09-10  Jakub Jelinek  <jakub@redhat.com>
4539
4540         PR tree-optimization/37353
4541         * tree-call-cdce.c (cond_dead_built_in_calls): Remove.
4542         (shrink_wrap_conditional_dead_built_in_calls): Add calls argument, use
4543         calls instead of cond_dead_built_in_calls.
4544         (tree_call_cdce): Add cond_dead_built_in_calls automatic variable,
4545         initalize the vector only before adding first entry.  Use VEC_safe_push
4546         instead of VEC_quick_push.  Pass cond_dead_built_in_calls to
4547         shrink_wrap_conditional_dead_built_in_calls call.
4548
4549 2008-09-10  Ira Rosen  <irar@il.ibm.com>
4550
4551         PR tree-optimization/37385
4552         * tree-vect-transform.c (vect_create_data_ref_ptr): Add a new
4553         argument, and use it as a vector type if not NULL.
4554         (vectorizable_store): Call vect_create_data_ref_ptr with the type of
4555         vectorized rhs.
4556         (vect_setup_realignment): Call vect_create_data_ref_ptr with
4557         additional argument.
4558         (vectorizable_load): Likewise.
4559
4560 2008-09-10  Jakub Jelinek  <jakub@redhat.com>
4561
4562         * config/i386/i386.md (SWI32): New mode iterator.
4563         (jcc_fused_1, jcc_fused_2, jcc_fused_3, jcc_fused_4): Use it instead
4564         of SWI.
4565
4566 2008-09-09  Vladimir Makarov  <vmakarov@redhat.com>
4567
4568         PR rtl-optimization/37435
4569         * caller-save.c (insert_restore, insert_save): Check the mode by
4570         reg_save_code.
4571
4572 2008-09-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4573
4574         PR other/37265
4575         * dwarf2asm.c (dw2_force_const_mem): Use unstripped symbol name for
4576         splay tree lookup.
4577         (dw2_output_indirect_constant_1): Use unstripped name in symbol
4578         reference.
4579
4580 2008-09-09  Sandra Loosemore  <sandra@codesourcery.com>
4581
4582         * doc/invoke.texi (ARM Options): Correct errors in discussion
4583         of -mfloat-abi, -mhard-float, and -msoft-float.
4584
4585 2008-09-09  Jakub Jelinek  <jakub@redhat.com>
4586             Jan Hubicka  <jh@suse.cz>
4587
4588         PR middle-end/37356
4589         * tree-inline.c (copy_bb): Insert stmt into copy_basic_block before
4590         calling gimple_regimplify_operands on it.  Iterate over all newly
4591         added statements, not just the last one.
4592         (insert_init_stmt): Insert stmt into seq first, then call
4593         gimple_regimplify_operands on it.  Don't create new gimplification
4594         context, nor find referenced vars.
4595
4596 2008-09-09  Jakub Jelinek  <jakub@redhat.com>
4597
4598         PR other/37419
4599         * ipa-prop.h (ipa_propagate_indirect_call_infos): Change last argument
4600         to pointer to vector pointer.
4601         * ipa-prop.c (ipa_propagate_indirect_call_infos,
4602         propagate_info_to_inlined_callees): Likewise.
4603         (update_call_notes_after_inlining): Likewise.  Push new indirect edge
4604         to *new_edges instead of new_edges.  Reread IPA_EDGE_REF after
4605         ipa_check_create_edge_args.
4606         * ipa-inline.c (cgraph_decide_recursive_inlining): Change last
4607         argument to pointer to vector pointer.
4608         (cgraph_decide_inlining_of_small_function): Adjust
4609         cgraph_decide_recursive_inlining and ipa_propagate_indirect_call_infos
4610         calls.
4611
4612         PR target/37438
4613         * config/i386/i386.md (zero_extendqihi2_movzbl): Enable when
4614         optimizing for size, not speed.
4615
4616         PR rtl-optimization/37408
4617         * function.c (assign_parm_find_stack_rtl): Set correct MEM_SIZE
4618         if parm is promoted.
4619
4620 2008-09-09  Sebastian Pop  <sebastian.pop@amd.com>
4621
4622         PR tree-optimization/37375
4623         * tree-scalar-evolution.c (scev_info_str): Add field
4624         instantiated_below.
4625         (new_scev_info_str, eq_scev_info, find_var_scev_info,
4626         set_scalar_evolution, get_scalar_evolution, get_instantiated_value,
4627         set_instantiated_value): Pass instantiated_below.
4628         (analyze_scalar_evolution_1, analyze_scalar_evolution): Update calls
4629         to above functions.
4630         (instantiate_scev_1, instantiate_scev): Pass a basic block above which
4631         the definitions are not instantiated.
4632
4633         * tree-scalar-evolution.h (instantiate_scev): Update declaration.
4634         (block_before_loop): New.
4635         * tree-data-ref.c (dr_analyze_indices): Update uses of
4636         instantiate_scev.
4637         * graphite.c (block_before_scop): New.
4638         (loop_affine_expr, stmt_simple_for_scop_p, harmful_stmt_in_bb): Pass a
4639         basic block, not a loop for determining the parameters.
4640         (scopdet_edge_info, build_scops_1): Do not pass outermost loop in the
4641         scop.
4642         (idx_record_params, find_params_in_bb, find_scop_parameters,
4643         build_loop_iteration_domains, add_conditions_to_domain): Update calls
4644         to instantiate_scev.
4645
4646         * Makefile.in (cfgloopmanip.o): Add missing dependency on TREE_FLOW_H.
4647
4648 2008-09-09  Vladimir Makarov  <vmakarov@redhat.com>
4649
4650         PR rtl-opt/37333
4651
4652         * ira-build.c (ira_create_allocno): Setup frequency to 0.
4653
4654         * ira-color.c (update_conflict_hard_regno_costs): Remove assert.
4655         Check zero freq and increase if necessary.
4656
4657 2008-09-09  Vladimir Makarov  <vmakarov@redhat.com>
4658
4659         * ira-conflicts.c (process_regs_for_copy): Check that the hard
4660         regno is in the right range.  Add comments.
4661
4662 2008-09-09  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
4663
4664         * Makefile.in (mips-tfile.o-warn): Don't error out on mips-tfile.c
4665         warnings.
4666         * mips-tfile.c (copy_object): Cast alloca result to int *.
4667         * mips-tdump.c (print_symbol): Cast xmalloc return values to
4668         proper types.
4669         Rename class to sclass.
4670         (read_tfile): Cast read_seek return values to proper types.
4671         Cast xcalloc return value to proper type.
4672
4673 2008-09-09  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
4674
4675         * config/sol2.h (REGISTER_TARGET_PRAGMAS): Move ...
4676         * config/i386/sol2.h (REGISTER_SUBTARGET_PRAGMAS): ... here.
4677         * config/sparc/sol2.h (REGISTER_TARGET_PRAGMAS): ... and here.
4678
4679 2008-09-09  Jan Hubicka  <jh@suse.cz>
4680
4681         * profile.c (is_edge_inconsistent): Add debug output; ignore
4682         negative count on fake edges.
4683         (is_inconsistent): Add debug output.
4684
4685 2008-09-09  Andrey Belevantsev  <abel@ispras.ru>
4686
4687         * haifa-sched.c (advance_one_cycle): Do not print '\n' before printing
4688         dump message.
4689         (choose_ready): When first insn is chosen from the ready list, also
4690         dump it.
4691
4692 2008-09-09  Andrey Belevantsev  <abel@ispras.ru>
4693
4694         PR rtl-optimization/37360
4695         * haifa-sched.c (max_issue): Do not assert that we never issue more
4696         insns than issue_rate.  Add comment.
4697
4698 2008-09-09  Richard Guenther  <rguenther@suse.de>
4699
4700         * tree-cfg.c (verify_types_in_gimple_op): Remove.
4701         (verify_types_in_gimple_call): Rename to ...
4702         (verify_gimple_call): ... this.  Enhance.
4703         (verify_types_in_gimple_cond): Remove.
4704         (verify_gimple_comparison): New function ...
4705         (verify_types_in_gimple_assign): ... split out from here.
4706         (verify_types_in_gimple_return): Rename to ...
4707         (verify_gimple_return): ... this.  Enhance.
4708         (verify_types_in_gimple_switch): Rename to ...
4709         (verify_gimple_switch): ... this.  Enhance.
4710         (verify_gimple_goto): New function.
4711         (verify_types_in_gimple_phi): Rename to ...
4712         (verify_gimple_phi): ... this.  Enhance.
4713         (verify_types_in_gimple_stmt): Adjust calls to helper functions.
4714         Fold in single-statement cases from verify_types_in_gimple_seq_2.
4715         (verify_types_in_gimple_seq_2): Remove cases handled in
4716         verify_types_in_gimple_stmt.
4717
4718 2008-09-09  Bernd Schmidt  <bernd.schmidt@analog.com>
4719
4720         * config/bfin/bfin.c (n_regs_to_save): New static variable.
4721         (push_multiple_operation, pop_multiple_operation): Set it.
4722         (workaround_rts_anomaly): New function.
4723         (workaround_speculation): New function, broken out of bfin_reorg.
4724         (bfin_reorg): Call the new functions.
4725
4726 2008-09-09  Richard Guenther  <rguenther@suse.de>
4727
4728         PR middle-end/37354
4729         PR middle-end/30165
4730         * gimplify.c (gimplify_conversion): Change conversions of
4731         non-register type to VIEW_CONVERT_EXPRs.
4732         (gimplify_addr_expr): If we need to make the operand
4733         addressable make sure to use a properly initialized
4734         temporary for that so it gets a valid gimple store.
4735
4736 2008-09-09  Aldy Hernandez  <aldyh@redhat.com>
4737
4738         * function.h (struct function): Add function_start_locus.
4739         * cfgexpand.c (gimple_expand_cfg): Use it.
4740         * c-parser.c (c_parser_declaration_or_fndef): Set it.
4741
4742 2008-09-09  Richard Guenther  <rguenther@suse.de>
4743
4744         PR tree-optimization/37433
4745         * tree-ssa-ccp.c (ccp_fold): Properly guard folding of
4746         function calls.
4747
4748 2008-09-09  Richard Guenther  <rguenther@suse.de>
4749
4750         PR tree-optimization/37387
4751         * tree-ssa-ifcombine.c (ifcombine_iforif): Convert the name
4752         and bits to a common type.
4753
4754 2008-09-09  Nick Clifton  <nickc@redhat.com>
4755
4756         * config/v850/v850.md (return): Restore frame size restriction.
4757
4758 2008-09-09  Paolo Bonzini  <bonzini@gnu.org>
4759
4760         * c-common.c (c_expand_decl): Remove.
4761         * c-common.h (anon_aggr_type_p): Remove prototype.
4762         (DECL_ANON_UNION_ELEMS): Remove.
4763         * c-objc-common.h (LANG_HOOKS_EXPAND_DECL): Remove.
4764         * c-decl.c (anon_aggr_type_p): Remove.
4765         * langhooks-def.h (LANG_HOOKS_EXPAND_DECL): Remove.
4766         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_EXPAND_DECL.
4767         * langhooks.h (struct lang_hooks): Remove expand_decl.
4768         * langhooks.c (lhd_expand_decl): Remove.
4769         * stmt.c (expand_anon_union_decl): Remove.
4770         * tree.h (expand_anon_union_decl): Remove prototype.
4771
4772 2008-08-09  Andy Hutchinson  <hutchinsonandy@aim.com>
4773
4774         PR target/36609
4775         * config/avr/avr.c (avr_reorg): Create RTL for reversed compare with
4776         zero.
4777         * config/avr/avr.md  (QISI) : Define mode iterator.
4778         (negated_tst<mode>) : Redefine as split using mode macro.
4779         (reversed_tstqi): Define insn as reversed compare with zero.
4780         (reversed_tsthi): Ditto.
4781         (reversed_tstsi): Ditto.
4782
4783 2008-09-08  Jakub Jelinek  <jakub@redhat.com>
4784
4785         PR middle-end/37393
4786         * tree-inline.c (copy_bb): When replacing a gimple_call_va_arg_pack_p
4787         call stmt by new_call, clear gimple_bb on stmt after gsi_replace.
4788
4789         PR middle-end/37414
4790         * predict.c (optimize_function_for_size_p): Don't segfault if
4791         FUN is NULL.
4792         * fold-const.c (LOGICAL_OP_NON_SHORT_CIRCUIT, fold_truthop,
4793         tree_swap_operands_p): Don't test cfun != NULL before calling
4794         optimize_function_for_s*_p.
4795
4796 2008-09-08  Eric Botcazou  <ebotcazou@adacore.com>
4797
4798         * ira-color.c (ira_reuse_stack_slot): Set slot_num on success at the
4799         end of the search.
4800
4801 2008-09-08  M R Swami Reddy <MR.Swami.Reddy@nsc.com>
4802
4803         * crx/crx.h (IRA_COVER_CLASSES): Define.
4804
4805 2008-09-08  Jakub Jelinek  <jakub@redhat.com>
4806
4807         PR middle-end/37337
4808         * tree-ssa-dom.c (optimize_stmt): Call maybe_clean_or_replace_eh_stmt
4809         even when a stmt has been gimple_modified_p, but after fold_stmt is
4810         not any longer.  Remove unneeded may_have_exposed_new_symbols
4811         initializations.
4812
4813 2008-09-08  Richard Guenther  <rguenther@suse.de>
4814
4815         PR tree-optimization/37421
4816         * tree-ssa-sccvn.c (visit_copy): Make sure to fully
4817         valueize the RHS.
4818
4819 2008-09-08  Jakub Jelinek  <jakub@redhat.com>
4820
4821         PR middle-end/37415
4822         * opts.c (common_handle_option): Handle OPT_ftree_store_ccp.
4823
4824 2008-09-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4825
4826         PR driver/37409
4827         * pa-hpux.h (LINK_SPEC): Strip -fwhole-program.
4828         * pa-hpux10.h (LINK_SPEC): Likewise.
4829         * pa-hpux11.h (LINK_SPEC): Likewise.
4830
4831 2008-09-07  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4832
4833         * pa32-regs.h (IRA_COVER_CLASSES): Define.
4834         * pa64-regs.h (IRA_COVER_CLASSES): Define.
4835
4836 2008-09-07  Helge Deller  <deller@gmx.de>
4837
4838         * pa/linux-atomic.c: New file.
4839         * pa/t-linux (LIB2FUNCS_STATIC_EXTRA): Define.
4840         * pa/t-linux64 (LIB2FUNCS_STATIC_EXTRA): Define.
4841
4842 2008-09-07  Richard Guenther  <rguenther@suse.de>
4843             Ira Rosen  <irar@il.ibm.com>
4844
4845         PR tree-optimization/36630
4846         * tree-vect-transform.c (vect_update_ivs_after_vectorizer):
4847         Call STRIP_NOPS before calling evolution_part_in_loop_num.
4848
4849 2008-09-07  Dorit Nuzman  <dorit@il.ibm.com>
4850             Ira Rosen  <irar@il.ibm.com>
4851
4852         PR tree-optimization/35642
4853         * config/rs6000/altivec.md (mulv8hi3): Implement.
4854
4855 2008-09-06  Jeff Law <law@redhat.com>
4856
4857         * h8300/h8300.h (IRA_COVER_CLASSES): Define.
4858
4859 2008-09-06  Jan Hubicka  <jh@suse.cz>
4860
4861         PR tree-optimization/14703
4862         * tree-ssa-live.c (remove_unused_scope_block_p): Remove ignored
4863         declarations.
4864         * passes.c (init_optimization_passes): Recompute inline parameters.
4865
4866 2008-09-06  Richard Sandiford  <rdsandiford@googlemail.com>
4867
4868         * config/mips/mips.c (mips_function_ok_for_sibcall): Check for
4869         DECL being null.
4870
4871 2008-09-06  Richard Sandiford  <rdsandiford@goolemail.com>
4872             Peter Fuerst  <post@pfrst.de>
4873
4874         * doc/invoke.texi: Document -mr10k-cache-barrier=.
4875         * doc/extend.texi: Document __builtin_mips_cache.
4876         * config/mips/mips-ftypes.def: Add a (VOID, SI, CVPOINTER) entry.
4877         * config/mips/mips.opt (mr10k-cache-barrier=): New option.
4878         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define
4879         __GCC_HAVE_BUILTIN_MIPS_CACHE.
4880         (TARGET_CACHE_BUILTIN, ISA_HAS_CACHE): New macros.
4881         * config/mips/mips.c (mips_r10k_cache_barrier_setting): New enum.
4882         (set_push_mips_isas): New variable.
4883         (mips_r10k_cache_barrier): New variable.
4884         (cache): New availability predicate.
4885         (mips_builtins): Add an entry for __builtin_mips_cache.
4886         (mips_build_cvpointer_type): New function.
4887         (MIPS_ATYPE_CVPOINTER): New macro.
4888         (mips_prepare_builtin_arg): Only use the insn's mode if the rtx's
4889         mode is VOIDmode.
4890         (r10k_simplified_address_p, r10k_simplify_address)
4891         (r10k_uncached_address_p, r10k_safe_address_p)
4892         (r10k_needs_protection_p_1, r10k_needs_protection_p_store)
4893         (r10k_needs_protection_p_call, r10k_needs_protection_p)
4894         (r10k_insert_cache_barriers): New functions.
4895         (mips_reorg_process_insns): Delete cache barriers after a
4896         branch-likely instruction.
4897         (mips_reorg): Call r10k_insert_cache_barriers.
4898         (mips_handle_option): Handle OPT_mr10k_cache_barrier_.
4899         * config/mips/mips.md (UNSPEC_MIPS_CACHE): New constant.
4900         (UNSPEC_R10K_CACHE_BARRIER): Likewise.
4901         (mips_cache, r10k_cache_barrier): New define_insns.
4902
4903 2008-09-06  Richard Sandiford  <rdsandiford@googlemail.com>
4904
4905         * ira-int.h (ira_zero_hard_reg_set, ira_one_hard_reg_set): Delete.
4906         * ira-color.c (setup_allocno_left_conflicts_num): Use
4907         hard_reg_set_equal_p instead of a comparison with
4908         ira_zero_hard_reg_set.
4909         * ira.c (setup_reg_subclasses): Likewise.
4910         (setup_cover_and_important_classes): Likewise.
4911         (setup_class_translate): Likewise.
4912         (setup_reg_class_intersect_union): Likewise.
4913         (ira_zero_hard_reg_set, ira_one_hard_reg_set): Delete.
4914         (ira_init_once): Don't initialize them.
4915
4916 2008-09-05  Vladimir Makarov  <vmakarov@redhat.com>
4917
4918         * doc/tm.texi (IRA_COVER_CLASSES): Fix a typo.
4919
4920 2008-09-05  Vladimir Makarov  <vmakarov@redhat.com>
4921
4922         * ira-color.c (ira_fast_allocation): Permit global allocno allocation.
4923
4924 2008-09-05  Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
4925
4926         Improved branch hints, safe hints, and scheduling.
4927
4928         * haifa-sched.c (sched_emit_insn) : Define.
4929         * sched-int.h (sched_emit_insn) : Add prototype.
4930         * doc/invoke.texi (-mdual-nops, -mhint-max-nops,
4931         -mhint-max-distance -msafe-hints) : Document.
4932         * config/spu/spu.c (spu_flag_var_tracking): New.
4933         (TARGET_SCHED_INIT_GLOBAL, TARGET_SCHED_INIT,
4934         TARGET_SCHED_REORDER, TARGET_SCHED_REORDER2,
4935         TARGET_ASM_FILE_START): Define.
4936         (TARGET_SCHED_ADJUST_PRIORITY): Remove.
4937         (STOP_HINT_P, HINTED_P, SCHED_ON_EVEN_P): Define.
4938         (spu_emit_branch_hint): Add blocks argument.
4939         (insert_branch_hints, insert_nops): Remove.
4940         (pad_bb, insert_hbrp_for_ilb_runout, insert_hbrp, in_spu_reorg,
4941         uses_ls_unit, spu_sched_init_global, spu_sched_init,
4942         spu_sched_reorder, asm_file_start): New functions.
4943         (clock_var, spu_sched_length, pipe0_clock,
4944         pipe1_clock, prev_clock_var, prev_priority,
4945         spu_ls_first, prev_ls_clock): New static variables.
4946         * config/spu/spu.h (TARGET_DEFAULT): Add MASK_SAFE_HINTS.
4947         * config/spu.md (iprefetch): Add operand, make it clobber MEM.
4948         (nopn_nv): Add a non-volatile version of nop.
4949         * config/spu/spu.opt (-mdual-nops, -mhint-max-nops,
4950         -mhint-max-distance, -msafe-hints): New options.
4951
4952 2008-09-05  Janis Johnson  <janis187@us.ibm.com>
4953             Samuel Tardieu  <sam@rfc1149.net>
4954
4955         * opts.c (decode_options): Combine nested if statements.
4956
4957         PR target/37283
4958         * opts.c (decode_options): Handle more relationships among
4959         unit-at-a-time, toplevel-reorder, and section-anchors.
4960
4961 2008-09-05  David Daney  <ddaney@avtrex.com>
4962
4963         * doc/install.texi (--enable-reduced-reflection): Document new option.
4964
4965 2008-09-05  Bob Wilson  <bob.wilson@acm.org>
4966
4967         * config/xtensa/predicates.md (nonimmed_operand, mem_operand): Use
4968         constantpool_mem_p.
4969         (constantpool_operand): New.
4970         (move_operand): Disallow sub-word modes for the constant pool.
4971         * config/xtensa/xtensa.c (TARGET_SECONDARY_RELOAD): Define.
4972         (xtensa_secondary_reload_class): Replace with....
4973         (xtensa_secondary_reload): this function.  Remove SIGN_EXTEND check.
4974         Set icode for sub-word reloads from the constant pool.
4975         * config/xtensa/xtensa.h (SECONDARY_INPUT_RELOAD_CLASS): Delete.
4976         (SECONDARY_OUTPUT_RELOAD_CLASS): Delete.
4977         * config/xtensa/xtensa.md (reload<mode>_literal): New.
4978         * config/xtensa/xtensa-protos.h: Update prototypes.
4979
4980 2008-09-05  Joseph Myers  <joseph@codesourcery.com>
4981
4982         * config/mips/mips.h (enum reg_class): Add FRAME_REGS.
4983         (REG_CLASS_NAMES): Update.
4984         (REG_CLASS_CONTENTS): Update.
4985         * config/mips/mips.c (mips_regno_to_class): Use FRAME_REGS instead
4986         of ALL_REGS for regs 77 and 78.
4987         * function.c (instantiate_virtual_regs_in_insn): Assert that
4988         return value of simplify_gen_subreg is not NULL.
4989
4990 2008-09-05  Paolo Bonzini  <bonzini@gnu.org>
4991
4992         * emit-rtl.c (gen_rtvec): Rewrite not using gen_rtvec_v.
4993         (gen_rtvec_v): Fix coding standards.
4994
4995 2008-09-04  Jan Hubicka  <jh@suse.cz>
4996
4997         * i386.c (decide_alg): Be more conservative about optimizing for size.
4998
4999 2008-09-04  Ian Lance Taylor  <iant@google.com>
5000
5001         * varasm.c (narrowing_initializer_constant_valid_p): New
5002         static function.
5003         (initializer_constant_valid_p): Call it.
5004
5005 2008-09-04  Jeff Law  <law@redhat.com>
5006
5007         * fold-const.c (native_encode_real): Fix computation of WORDS.
5008         (native_interpret_real): Likewise.
5009
5010 2008-09-04  Janis Johnson  <janis187@us.ibm.com>
5011
5012         * config/rs6000/t-rs6000: Remove target gt-rs6000.h.
5013
5014 2008-09-04  Vladimir Makarov  <vmakarov@redhat.com>
5015
5016         * ira-conflicts.c (process_regs_for_copy): Check insn to check
5017         that the cost is already taken into account in ira-costs.c
5018
5019         * ira-int.h (ira_debug_copy, ira_debug_copies): New.
5020
5021         * ira-build.c (print_copy, print_copies, ira_debug_copy,
5022         ira_debug_copies): New.
5023         (ira_bulid): Call print_copies.
5024
5025         * doc/tm.texi (IRA_COVER_CLASSES): Fix the description.
5026
5027 2008-09-04  Samuel Tardieu  <sam@rfc1149.net>
5028
5029         PR target/32783
5030         * config/rs6000/rs6000.c (optimization_options): Remove check of
5031         flag_toplevel_order.
5032
5033 2008-09-04  Adam Nemet  <anemet@caviumnetworks.com>
5034
5035         * config/mips/mips.h (ISA_HAS_SEQ_SNE): New macro.
5036         * config/mips/mips.c (mips_expand_scc): Also expand seq and sne if
5037         second operand is a reg_imm10_operand.
5038         * config/mips/mips.md (*seq_<GPR:mode><GPR2:mode>_seq,
5039         *sne_<GPR:mode><GPR2:mode>_sne): New patterns.
5040         (*seq_<GPR:mode><GPR2:mode>): Rename to
5041         *seq_zero_<GPR:mode><GPR2:mode>.  Don't match if
5042         ISA_HAS_SEQ_SNE.
5043         (*seq_<GPR:mode><GPR2:mode>_mips16): Rename to
5044         *seq_zero_<GPR:mode><GPR2:mode>_mip16.  Don't match if
5045         ISA_HAS_SEQ_SNE.
5046         (*sne_<GPR:mode><GPR2:mode>): Rename to
5047         *sne_zero_<GPR:mode><GPR2:mode>.  Don't match if
5048         ISA_HAS_SEQ_SNE.
5049
5050 2008-09-04  Adam Nemet  <anemet@caviumnetworks.com>
5051
5052         * config/mips/mips.h (ISA_HAS_EXTS): New macro.
5053         * config/mips/mips.md (*ashr_trunc<mode>): Name the pattern
5054         combining an arithmetic right shift by more than 31 and a
5055         trunction.  Don't match for out-of-range shift amounts.  Set
5056         attribute mode to <MODE>.
5057         (*lshr32_trunc<mode>): Name the pattern combining a logical right
5058         shift by 32 and and a truncation.  Set attribute mode to <MODE>.
5059         (*<optab>_trunc<mode>_exts): New pattern for truncated right
5060         shifts by less than 32.
5061         (extv): Change predicate on first operand to accept registers.
5062         Change predicate of the other operands from immediate_operand to
5063         const_int_operand.  Expand exts when source is a register.
5064         (extzv): Change predicate of the constant operands from
5065         immediate_operand to const_int_operand.
5066         (extzv<mode>): Change predicate of the constant operands from
5067         immediate_operand to const_int_operand and no constraint. Also
5068         remove mode.
5069         (*extzv_trunc<mode>_exts): New pattern.
5070
5071 2008-09-04  Adam Nemet  <anemet@caviumnetworks.com>
5072
5073         * config/mips/mips.h (ISA_HAS_CINS): New macro.
5074         * config/mips/mips-protos.h (mask_low_and_shift_p,
5075         mask_low_and_shift_len): Declare.
5076         * config/mips/mips.c (mask_low_and_shift_p,
5077         mask_low_and_shift_len): New functions.
5078         (mips_print_operand): Handle new operand prefix "m".
5079         * config/mips/mips.md (*cins<mode>): New pattern.
5080
5081 2008-09-04  Bernd Schmidt  <bernd.schmidt@analog.com>
5082
5083         * config/bfin/bfin.c (gen_one_bundle): Don't create new nops when
5084         optimizing for size.
5085
5086 2008-09-04  Richard Sandiford  <rdsandiford@googlemail.com>
5087
5088         * df-scan.c (df_get_entry_block_def_set): Add STACK_POINTER_REGNUM
5089         regardless of epilogue_completed.
5090
5091 2008-09-04  Vladimir Makarov  <vmakarov@redhat.com>
5092
5093         PR middle-end/37359
5094         * ira-lives.c (process_bb_node_lives): Check setjmp.
5095
5096 2008-09-04  Richard Sandiford  <rdsandiford@googlemail.com>
5097
5098         PR middle-end/37243
5099         * ira-build.c (form_loop_tree): Reverse BB walk.
5100         (create_bb_allocnos): Likewise.
5101         * ira-lives.c (make_regno_born_and_dead, regs_set): Delete.
5102         (mark_reg_store): Rename to...
5103         (mark_ref_live): ...this and take a df_ref argument instead of
5104         note_stores arguments.  Assert that we have a register.
5105         (mark_reg_clobber): Delete.
5106         (def_conflicts_with_inputs_p): New function.
5107         (mark_reg_conflicts): Delete.
5108         (mark_reg_death): Rename to...
5109         (mark_ref_dead): ...this and take a df_ref argument instead of
5110         a register.  Assert that we have a register.
5111         (process_bb_node_lives): Hoist frequency calculation out of
5112         instruction walk.  Convert from a forwards scan to a backwards scan.
5113         Use DF_REF_USES and DF_REF_DEFS instead of register notes and
5114         note_stores.  Remove EH_RETURN_DATA_REGNO and regs_set handling.
5115         (create_allocno_live_ranges): Don't create regs_set.
5116
5117 2008-09-04  Ian Lance Taylor  <iant@google.com>
5118
5119         * rtl.h (LABEL_REF_NONLOCAL_P): Don't check for REG_LABEL_OPERAND
5120         or REG_LABEL_TARGET.
5121         * calls.c (emit_library_call_value_1): Use MEM_P rather than
5122         comparing MODE with MEM.
5123         * gimple.c (gimple_build_predict): Cast END_PREDICTORS before
5124         comparing with GF_PREDICT_TAKEN.
5125         (gimple_get_lhs): Change code to enum gimple_code.
5126         (gimple_set_lhs): Likewise.
5127         * ifcvt.c (noce_process_if_block): Correct GET_MODE to GET_CODE.
5128         * omp-low.c (find_omp_clause): Change kind parameter to enum
5129         omp_clause_code.
5130         * tree-flow.h (find_omp_clause): Update declaration.
5131         * regrename.c (clear_dead_regs): Change kind parameter to enum
5132         reg_note.
5133         * reload1.c (eliminate_regs_1): Use REG_NOTE_KIND rather than
5134         GET_MODE.
5135         * see.c (see_get_extension_data): Change return type to enum
5136         entry_type.  Change UNKNOWN to NOT_RELEVANT, SIGN_EXTEND to
5137         SIGNED_EXTENDED_DEF, ZERO_EXTEND to ZERO_EXTENDED_DEF.
5138         (see_gen_normalized_extension): Change extension_code parameter to
5139         enum entry_type.
5140         (see_seek_pre_extension_expr): Change extension_code to enum
5141         entry_type.
5142         (see_merge_one_def_extension): Likewise.
5143         (see_handle_relevant_defs): Likewise.
5144         (see_handle_relevant_uses): Likewise.
5145         (see_analyze_one_def): Likewise.
5146         * tree-cfg.c (need_fake_edge_p): Compare gimple code with
5147         GIMPLE_ASM rather than ASM_EXPR.
5148         * tree-ssa-alias.c (is_escape_site): Compare gimple code with
5149         GIMPLE_RETURN rather than RETURN_EXPR.
5150         * tree-ssa-ccp.c (likely_value): Change code to enum gimple_code.
5151         (evaluate_stmt): Likewise.
5152         * tree-vect-analyze.c (vect_analyze_operations): Change relevance
5153         to enum vect_relevant.
5154         (vect_mark_stmts_to_be_vectorized): Change assertion to not
5155         compare gimple codes with tree codes.
5156
5157 2008-09-04  Paul Brook  <paul@codesourcery.com>
5158
5159         * config/arm/arm.c (arm_size_rtx_costs): Call cost function.
5160
5161 2008-09-04  Bernd Schmidt  <bernd.schmidt@analog.com>
5162
5163         * config/bfin/bfin.c (bfin_function_ok_for_sibcall): Restore a null
5164         pointer check lost in the recent no-unit-at-a-time patch.
5165
5166 2008-09-04  Jan Hubicka  <jh@suse.cz>
5167
5168         PR middle-end/37343
5169         * tree-switch-conversion.c (check_final_bb): Accept only IP
5170         invariants.
5171
5172 2008-09-04  Jan Hubicka  <jh@suse.cz>
5173
5174         * tree-vrp.c (vrp_evaluate_conditional_warnv_with_ops_using_ranges):
5175         Break out from ...
5176         (vrp_evaluate_conditional_warnv_with_ops): ... this one.  Add
5177         using_ranges argument.
5178         (vrp_evaluate_conditional): Avoid bogus warning for type range.
5179         (vrp_visit_cond_stmt): Update call of
5180         vrp_evaluate_conditional_warnv_with_ops
5181
5182 2008-09-04  Jan Hubicka  <jh@suse.cz>
5183
5184         PR tree-optimization/37345
5185         PR tree-optimization/37358
5186         PR tree-optimization/37357
5187         * tree.c (build_function_type_skip_args): Build distinct type copy;
5188         set TYPE_CONTEXT.
5189         (build_function_decl_skip_args): Set type of new decl not orig decl;
5190         clear DECL_VINDEX for methods turned into functions.
5191
5192 2008-09-04  Nick Clifton  <nickc@redhat.com>
5193
5194         * configure.ac (HAVE_GAS_LCOMM_WITH_ALIGNMENT): New assembler check.
5195         * configure: Regenerate.
5196         * config.in: Regenerate.
5197         * config/i386/bsd.h (ASM_OUTPUT_ALIGNED_LOCAL): Use .lcomm with an
5198         alignment field, if it is supported.
5199
5200 2008-09-04  Kai Tietz  <kai.tietz@onevision.com>
5201
5202         * config/i386/t-mingw32 (SHLIB_LC): Change order of import
5203         libraries.
5204
5205 2008-09-03  David Edelsohn  <edelsohn@gnu.org>
5206
5207         * config/rs6000/rs6000.c (processor_target_table): Do not
5208         enable VMX for POWER6.
5209
5210 2008-09-03  Anton Blanchard  <anton@samba.org>
5211
5212         * config/rs6000/rs6000.c (rs6000_split_lock_test_and_set): Do not
5213         emit memory barrier before operation.
5214
5215 2008-09-03  John David Anglin  <dave.anglin@nrc.cnrc.gc.ca>
5216
5217         PR testsuite/37325
5218         * config/pa/pa64-hpux.h (ASM_OUTPUT_EXTERNAL_REAL): Call
5219         default_elf_asm_output_external.
5220
5221 2008-09-03  Jeff Law  <law@redhat.com>
5222
5223         * h8300.c (expand_a_shift): Avoid invalid RTL sharing.
5224
5225 2008-09-03  Richard Henderson  <rth@redhat.com>
5226
5227         * config/alpha/alpha.c (alpha_split_lock_test_and_set): Move
5228         memory barrier to below the test-and-set.
5229         (alpha_split_lock_test_and_set_12): Likewise.
5230
5231 2008-09-03  Vladimir Makarov  <vmakarov@redhat.com>
5232
5233         PR rtl-opt/37243
5234
5235         * ira-int.h (ira_loop_tree_node): Rename mentioned_allocnos to
5236         all_allocnos.
5237
5238         * ira-color.c (print_loop_title): Use all_allocnos.
5239         (color_pass): Ditto.  Don't add border_allocnos.  Check that
5240         subloop allocno in the correspdoning bitmap all_allocnos.
5241
5242         * ira-emit.c (change_loop): Use all_allocnos.
5243
5244         * ira-build.c (create_loop_tree_nodes, finish_loop_tree_node): Ditto.
5245         (ira_create_allocno): Set up all_allocnos bit for the created allocno.
5246         (create_cap_allocno): Remove setting mentioned_allocnos.
5247         (create_insn_allocnos): Ditto.
5248         (remove_unnecessary_allocnos): Use all_allocnos.
5249         (check_allocno_creation): Check that allocnos are in the
5250         corresponding bitmap all_allocnos.
5251
5252 2008-09-03  Vladimir Makarov  <vmakarov@redhat.com>
5253
5254         PR rtl-opt/37243
5255
5256         * ira-conflicts.c (REG_SUBREG_P, go_through_subreg): New.
5257         (process_regs_for_copy): Process subregs.  Refine check when cost
5258         is taken into account in ira-costs.c.
5259         (process_reg_shuffles): Use REG_SUBREG_P.
5260         (add_insn_allocno_copies): Ditto.  Ignore modes.
5261
5262         * ira-color.c (conflict_allocno_vec): New.
5263         (COST_HOP_DIVISOR): New macro.
5264         (update_copy_costs_1): Use it.
5265         (update_conflict_hard_regno_costs): New function.
5266         (assign_hard_reg): Use it.
5267         (ira_color): Allocate and free conflict_allocno_vec.
5268
5269 2008-09-03  Vladimir Makarov  <vmakarov@redhat.com>
5270
5271         PR rtl-opt/37296
5272
5273         * ira-int.h (ira_sort_insn_chain): Remove.
5274
5275         * ira.c (basic_block_order_nums, chain_insn_order,
5276         chain_freq_compare, chain_bb_compare, ira_sort_insn_chain): Remove.
5277         (ira): Don't call ira_sort_insn_chain.
5278
5279         * reload1.c (reload): Don't call ira_sort_insn_chain.
5280
5281 2008-09-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5282
5283         PR middle-end/37293
5284         * cgraphunit.c (update_call_expr): Remove eh regions from statements
5285         which become non throw.
5286         (cgraph_function_versioning): Also clear DECL_WEAK.  Call
5287         update_call_expr after updating the flags on the decl.
5288
5289 2008-09-03  Jan Hubicka  <jh@suse.cz>
5290
5291         PR tree-optimization/37315
5292         * cgraph.c (cgraph_create_edge): Use gimple_has_body_p.
5293         * cgraphunit.c (verify_cgraph_node): drop gimple_body check.
5294         (cgraph_analyze_functions): Use node->analyzed
5295         (cgraph_mark_functions_to_output): Likewise.
5296         (cgraph_expand_function): All functions can be released after
5297         expanding.
5298         (cgraph_optimize): Use gimple_has_body_p.
5299         * ipa-inline.c (cgraph_clone_inlined_nodes): Use analyzed flag.
5300         (cgraph_decide_inlining_incrementally): Likewise.
5301         (inline_transform): Inline transform.
5302         * tree-inline.c (initialize_cfun): Do now shallow copy structure;
5303         copy fields needed.
5304         (inlinable_function_p): Drop gimple_body check.
5305         (expand_call_inline): Use gimple_has_body_p.
5306         * gimple.c (gimple_has_body_p): New.
5307         * gimple.h (gimple_has_body_p): Add prototype.
5308         * tree-cfg.c (execute_build_cfg): Remove gimple_body.
5309         (dump_function_to_file): Use gimple_has_body_p check.
5310
5311 2008-09-03  Jakub Jelinek  <jakub@redhat.com>
5312
5313         PR c++/37346
5314         * gimple.h (gimple_has_substatements): GIMPLE_OMP_CRITICAL has
5315         substatements.
5316         * tree-inline.c (remap_gimple_stmt): Handle GIMPLE_OMP_CRITICAL.
5317
5318 2008-09-03  Bernd Schmidt  <bernd.schmidt@analog.com>
5319
5320         From Michael Frysinger  <michael.frysinger@analog.com>
5321         * config/bfin/bfin.c (bfin_cpus[]): Add 0.1 for bf522, bf523, bf524,
5322         bf525, bf526, bf527, bf542, bf544, bf547, bf548, and bf549.  Add 0.2
5323         for bf538.
5324
5325 2008-09-03  Hari Sandanagobalane  <hariharan@picochip.com>
5326
5327         Add picoChip port.
5328         * doc/extend.texi: Document picoChip builtin functions.
5329         * doc/invoke.texi: Document picoChip options.
5330         * doc/contrib.texi: Add picoChip contribution.
5331         * doc/md.texi: Document picoChip constraints.
5332         * config.gcc: Add picochip-*-*.
5333         * config/picochip/: Add new port.
5334
5335 2008-09-03  Richard Guenther  <rguenther@suse.de>
5336
5337         PR tree-optimization/37328
5338         * tree-sra.c (sra_build_assignment): Gimplify properly.
5339         (generate_copy_inout): Take the correct stmt as definition,
5340         remove bogus assert.
5341
5342 2008-09-03  Bernd Schmidt  <bernd.schmidt@analog.com>
5343
5344         * config/bfin/bfin.c (bfin_expand_prologue): Honour no_stack_limit
5345         attributes.
5346
5347         From Michael Frysinger  <michael.frysinger@analog.com>
5348         * config/bfin/bfin.c (bfin_handle_option): Remove BF561 warning.
5349
5350 2008-09-03 Danny Smith  <dannysmith@usrs.sourceforge.net>
5351
5352         * gthr-win32.h (CONST_CAST2): Really make sure CONST_CAST2 is defined.
5353         (__gthread_setspecific): Revert 2008-08-31 change to
5354         __GTHREAD_HIDE_W32API case.  Apply it to !__GTHREAD_HIDE_W32API case.
5355
5356 2008-09-02  Aldy Hernandez  <aldyh@redhat.com>
5357
5358         * diagnostic.c (error_at): New.
5359         * toplev.h (error_at): New prototype.
5360         * c-typeck.c (build_array_ref): Call error_at instead of error.
5361         Pass location to pedwarn.
5362
5363 2008-09-02  Adam Nemet  <anemet@caviumnetworks.com>
5364
5365         * sel-sched.c (sel_hard_regno_rename_ok): Mark arguments unused.
5366
5367 2008-09-02  Jakub Jelinek  <jakub@redhat.com>
5368
5369         * dwarf2out.c (tree_add_const_value_attribute): Only handle
5370         VAR_DECL and CONST_DECL.
5371
5372 2008-09-02  H.J. Lu  <hongjiu.lu@intel.com>
5373             Jakub Jelinek  <jakub@redhat.com>
5374
5375         * config/i386/i386.c (X86_64_VARARGS_SIZE): Removed.
5376         (setup_incoming_varargs_64): Assume cum != NULL. Set/check
5377         ix86_varargs_gpr_size and ix86_varargs_fpr_size.  Use
5378         ix86_varargs_gpr_size instead of X86_64_REGPARM_MAX.
5379         Don't set ix86_save_varrargs_registers.
5380         (ix86_setup_incoming_varargs): Assume cum != NULL.
5381         (ix86_va_start): Check ix86_varargs_gpr_size and
5382         ix86_varargs_fpr_size instead of cfun->va_list_gpr_size and
5383         cfun->va_list_fpr_size, respectively.  Subtract 8*X86_64_REGPARM_MAX
5384         from frame pointer if ix86_varargs_gpr_size == 0.
5385         (ix86_compute_frame_layout): Updated.
5386         * config/i386/i386.h (ix86_save_varrargs_registers): Removed.
5387         (ix86_varargs_gpr_size): Define.
5388         (ix86_varargs_fpr_size): Likewise.
5389         (machine_function): Remove save_varrargs_registers.
5390         Add varargs_gpr_size and varargs_fpr_size.
5391
5392 2008-09-02  Jakub Jelinek  <jakub@redhat.com>
5393
5394         * config/alpha/alpha.c (va_list_skip_additions,
5395         alpha_stdarg_optimize_hook, alpha_gimplify_va_arg_1): Tuplify.
5396         (alpha_gimplify_va_arg): Call unshare_expr on second use of
5397         offset_field.
5398
5399         PR tree-optimization/36766
5400         * tree-cfg.c (gimple_purge_all_dead_eh_edges): Do nothing
5401         for already removed basic blocks.
5402
5403         PR target/36332
5404         * real.c (real_maxval): Clear a lower bit to make real_maxval
5405         match get_max_float for IBM long double format.
5406
5407 2008-09-02  Andreas Schwab  <schwab@suse.de>
5408
5409         * configure.ac: Use m4_quote to quote the expansion of m4_do.
5410         * configure: Regenerate.
5411
5412 2008-09-02  Richard Sandiford  <rdsandiford@googlemail.com>
5413
5414         * simplify-rtx.c (simplify_binary_operation_1): Check for CONST,
5415         SYMBOL_REF and LABEL_REF when applying plus_constant, instead of
5416         checking for a non-VOID CONSTANT_P.
5417
5418 2008-09-02  Jan Hubicka  <jh@suse.cz>
5419
5420         * predict.c (pass_strip_predict_hints): Avoid bugs dump file.
5421         * expmed.c (expand_divmod): Fix test of smod_pow2_cheap and
5422         sdiv_pow2_cheap
5423
5424 2008-09-02  H.J. Lu  <hongjiu.lu@intel.com>
5425
5426         * expr.c (emit_group_store): Don't assert stack temp mode size.
5427
5428 2008-09-02  Sebastian Pop  <sebastian.pop@amd.com>
5429             Tobias Grosser  <grosser@fim.uni-passau.de>
5430             Jan Sjodin  <jan.sjodin@amd.com>
5431             Harsha Jagasia  <harsha.jagasia@amd.com>
5432             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
5433             Konrad Trifunovic  <konrad.trifunovic@inria.fr>
5434             Adrien Eliche  <aeliche@isty.uvsq.fr>
5435
5436         Merge from graphite branch.
5437         * graphite.c: New.
5438         * graphite.h: New.
5439         * tree-loop-linear.c (perfect_loop_nest_depth): Export.
5440         * doc/invoke.texi (-floop-block, -floop-interchange,
5441         -floop-strip-mine): Document new flags.
5442         * tree-into-ssa.c (gimple_vec): Moved...
5443         * tree-loop-distribution.c (rdg_component): Moved...
5444         * cfgloopmanip.c: Include tree-flow.h.
5445         (update_dominators_in_loop): New.
5446         (create_empty_if_region_on_edge): New.
5447         (create_empty_loop_on_edge): New.
5448         (loopify): Use update_dominators_in_loop.
5449         * tree-pass.h (pass_graphite_transforms): Declared.
5450         * configure: Regenerate.
5451         * tree-phinodes.c (make_phi_node): Export.
5452         (add_phi_node_to_bb): New, split from create_phi_node.
5453         * tree-chrec.c (for_each_scev_op): New.
5454         * tree-chrec.h (for_each_scev_op): Declared.
5455         * tree-ssa-loop-ivopts.c (get_phi_with_result): New.
5456         (remove_statement): Call get_phi_with_result.
5457         * config.in (HAVE_cloog): Undef.
5458         * gdbinit.in (pgg): New.
5459         * timevar.def (TV_GRAPHITE_TRANSFORMS): New.
5460         * tree-ssa-loop.c (graphite_transforms): New.
5461         (gate_graphite_transforms): New.
5462         (pass_graphite_transforms): New.
5463         * configure.ac (PPLLIBS, PPLINC, CLOOGLIBS, CLOOGINC,
5464         HAVE_cloog): Defined.
5465         * tree-vectorizer.c (rename_variables_in_bb): Export.
5466         * tree-data-ref.c (dr_may_alias_p): Export.
5467         (stmt_simple_memref_p): New.
5468         (find_data_references_in_stmt): Export.
5469         (find_data_references_in_loop): Export.
5470         (create_rdg_edge_for_ddr): Initialize RDGE_RELATION.
5471         (create_rdg_edges_for_scalar): Initialize RDGE_RELATION.
5472         (create_rdg_vertices): Export.
5473         (build_empty_rdg): New.
5474         (build_rdg): Call build_empty_rdg.  Free dependence_relations.
5475         * tree-data-ref.h (rdg_component): ... here.
5476         (scop_p): New.
5477         (struct data_reference): Add a field scop.
5478         (DR_SCOP): New.
5479         (find_data_references_in_loop): Declared.
5480         (find_data_references_in_stmt): Declared.
5481         (create_rdg_vertices): Declared.
5482         (dr_may_alias_p): Declared.
5483         (stmt_simple_memref_p): Declared.
5484         (struct rdg_edge): Add a field ddr_p relation.
5485         (build_empty_rdg): Declared.
5486         * lambda.h (lambda_matrix): Declare a VEC of.
5487         (find_induction_var_from_exit_cond): Declared.
5488         (lambda_vector_compare): New.
5489         * common.opt (fgraphite, floop-strip-mine,
5490         floop-interchange, floop-block): New flags.
5491         * lambda-code.c (find_induction_var_from_exit_cond): Export.
5492         * cfgloop.c (is_loop_exit): New.
5493         * cfgloop.h (is_loop_exit): Declared.
5494         (create_empty_if_region_on_edge): Declared.
5495         (create_empty_loop_on_edge): Declared.
5496         * tree-flow.h (add_phi_node_to_bb): Declared.
5497         (make_phi_node): Declared.
5498         (rename_variables_in_bb): Declared.
5499         (perfect_loop_nest_depth): Declared.
5500         (graphite_transform_loops): Declared.
5501         * Makefile.in (cfgloopmanip.o): Depend on TREE_FLOW_H.
5502         (graphite.o-warn): Add -Wno-error.
5503         (PPLLIBS, PPLINC, CLOOGLIBS, CLOOGINC): Declared.
5504         (LIBS): Add GMPLIBS, CLOOGLIBS, PPLLIBS.
5505         (INCLUDES): Add PPLINC, CLOOGINC.
5506         (OBJS-common): Add graphite.o.
5507         (graphite.o): Add rule.
5508         * gimple.h (gimple_vec): ... here.
5509         * tree-cfg.c (print_loops): Start printing at ENTRY_BLOCK_PTR.
5510         * passes.c (init_optimization_passes): Schedule
5511         pass_graphite_transforms.
5512
5513 2008-09-02  Samuel Tardieu  <sam@rfc1149.net>
5514
5515         PR target/37283
5516         * opts.c (decode_options): Move processing of -fno-unit-at-a-time
5517         and -fno-toplevel-reorder after handle_options.
5518
5519 2008-09-02  Paul Brook  <paul@codesourcery.com>
5520
5521         * config/arm/arm.c (arm_tune_cortex_a9): Define.
5522         (arm_override_options): Set arm_tune_cortex_a9.
5523         (arm_rtx_costs_1): Make register shifts more expensive on Cortex-A9.
5524         (arm_issue_rate): Handle cortexa9.
5525         * config/arm/arm.h (arm_tune_cortex_a9): Declare.
5526         * config/arm/arm-cores.def: Add cortex-a9.
5527         * config/arm/arm-tune.md: Regenerate.
5528         * config/arm/arm.md: Include cortex-a9.md.
5529         (generic_sched, generic_vfp): Add cortexa9.
5530         * config/arm/cortex-a9.md: New file.
5531
5532 2008-09-02  Richard Guenther  <rguenther@suse.de>
5533
5534         PR tree-optimization/37327
5535         * tree-vrp.c (register_new_assert_for): Make sure to not have
5536         TREE_OVERFLOW set on the bound.
5537
5538 2008-09-02  Alexander Monakov  <amonakov@ispras.ru>
5539
5540         Fixed typo in date of the 2008-09-01 MOVE_RATIO commit.
5541
5542         * config/ia64/ia64.opt (msched-ar-data-spec): Default to 1.
5543         * config/ia64/ia64.c (ia64_set_sched_flags): Always initialize
5544         spec_info->mask.
5545
5546 2008-09-02  Victor Kaplansky  <victork@il.ibm.com>
5547
5548         * gcc/config/spu/spu.md (divdf3): Removed.
5549
5550 2008-09-02  Jakub Jelinek  <jakub@redhat.com>
5551
5552         PR tree-optimization/37095
5553         * cgraph.c (cgraph_node): When creating new cgraph node after
5554         assembler_name_hash has been populated, record it in the hash
5555         table.
5556
5557 2008-09-01  Paul Brook  <paul@codesourcery.com>
5558
5559         * doc/invoke.texi: Document -mword-relocations.
5560         * config/arm/uclinux-elf.h (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
5561         * config/arm/symbian.h (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
5562         * config/arm/vxworks.h (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
5563         * config/arm/arm.c (arm_split_constant): Use arm_emit_movpair.
5564         (arm_rtx_costs_1, arm_size_rtx_costs): Handle HIGH and LO_SUM.
5565         (arm_emit_movpair): New function.
5566         (arm_print_operand <c>): Handle sybolic addresses.
5567         * config/arm/arm.h (TARGET_USE_MOVT): Define.
5568         (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
5569         * config/arm/arm-protos.h (arm_emit_movpair): Add prototype.
5570         * config/arm/arm.opt: Add -mword-relocations.
5571         * config/arm/arm.md (movsi): Use arm_emit_movpair.
5572         (arm_movt, arm_movw): New.
5573
5574 2008-09-01  Paul Brook  <paul@codesourcery.com>
5575
5576         * config/arm/arm.c (arm_override_options): Set arm_abi earlier.
5577         Allow Interworking on ARMv4 EABI based targets.
5578         * config/arm/bpabi.h (TARGET_FIX_V4BX_SPEC): Define.
5579         (SUBTARGET_EXTRA_ASM_SPEC, LINK_SPEC): Add TARGET_FIX_V4BX_SPEC.
5580
5581 2008-09-01  Paul Brook  <paul@codesourcery.com>
5582
5583         * config/arm/thumb2.md (thumb2_negscc): Match the correct operand for
5584         optimized LT0 test.  Remove optimization for GT.
5585
5586 2008-09-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
5587
5588         * pa64-hpux.h (LIB_SPEC): Link against librt when building static
5589         openmp applications.
5590         * pa-hpux11.h (LIB_SPEC): Likewise.
5591
5592         * ira.c (setup_eliminable_regset): Only declare i if ELIMINABLE_REGS
5593         is defined.
5594
5595 2008-09-01  Jan Hubicka  <jh@suse.cz>
5596
5597         * predict.c (maybe_hot_count_p, maybe_hot_edge_p): When profile is
5598         present, use only counts; when guessed use only frequencies.
5599         (estimate_bb_frequencies): Use function_frequency.
5600         * profile.c (compute_branch_probabilities): Exit early when
5601         profile reading failed. Set profile_status.
5602         (branch_prob): Do not set profile_status.
5603
5604 2008-09-01  Aldy Hernandez  <aldyh@redhat.com>
5605
5606         * tree.c (protected_set_expr_location): New.
5607         * tree.h (protected_set_expr_location): New prototype.
5608         * c-tree.h (build_array_ref): Add argument.
5609         (parser_build_unary_op): Same.
5610         * c-typeck.c (build_indirect_ref): Handle new location argument.
5611         (build_array_ref): Same.
5612         (parser_build_unary_op): Same.
5613         * gimplify.c (gimplify_asm_expr): Set input_location before calling
5614         error.
5615         * c-omp.c (c_finish_omp_atomic): Pass location when calling
5616         build_indirect_ref.
5617         * c-common.c (finish_label_address_expr): Handle new location argument.
5618         * c-common.h (build_indirect_ref): Add argument.
5619         (finish_label_address_expr): Same.
5620         * c-parser.c (c_parser_unary_expression): Pass location to build
5621         functions.
5622         (c_parser_postfix_expression): Same.
5623
5624 2008-09-01  Paul Brook  <paul@codesourcery.com>
5625
5626         * config/arm/arm.md: Include cortex-r4f.md.
5627         (attr fpu): Update type list.
5628         (attr type): Add fcpys, ffariths, ffarithd, fadds, faddd, fconsts,
5629         fconstd, fcmps and fcmpd.
5630         (attr tune_cortexr4): Define.
5631         (attr generic_sched, attr generic_vfp): Use tune_cortexr4.
5632         * config/arm/vfp.md: Document fcpys, ffariths, ffarithd, fadds, faddd,
5633         fconsts, fconstd, fcmps and fcmpd.  Use them in insn patterns.
5634         * config/arm/arm.c (arm_issue_rate): Add cortexr4f.
5635         * config/arm/arm1020e.md (v10_ffarith, v10_farith): Use new insn types.
5636         * config/arm/cortex-a8-neon.md (cortex_a8_vfp_add_sub,
5637         cortex_a8_vfp_farith: Ditto.
5638         * config/arm/vfp11.md (vfp_ffarith, vfp_farith): Ditto.
5639         * config/arm/cortex-r4.md: Use tune_cortexr4.
5640         * config/arm/cortex-r4f.md: New file.
5641
5642 2008-09-01  Richard Guenther  <rguenther@suse.de>
5643
5644         PR tree-optimization/37305
5645         * tree-ssa-ccp.c (ccp_fold): Do not set TREE_OVERFLOW on
5646         the result of constant conversions.
5647         (fold_gimple_assign): Likewise.
5648
5649 2008-09-01  Andrey Belevantsev  <abel@ispras.ru>
5650
5651         * sel-sched-ir.c (cmp_v_in_regset_pool): Surround with
5652         #ifdef ENABLE_CHECKING.
5653
5654 2008-09-01  Andrey Belevantsev  <abel@ispras.ru>
5655
5656         * sel-sched-dump.c: Surround with #ifdef INSN_SCHEDULING.
5657         * sched-int.h (print_insn, print_pattern, print_value): Declare also
5658         when !INSN_SCHEDULING.
5659
5660 2008-09-01  Andreas Schwab  <schwab@suse.de>
5661
5662         * config/ia64/ia64.c (TARGET_ADDRESS_COST): Update.
5663
5664 2008-09-01  Paul Brook  <paul@codesourcery.com>
5665
5666         * config/arm/arm.c (arm_no_early_mul_dep): Handle multiply-subtract.
5667
5668 2008-09-01  Jan Hubicka  <jh@suse.cz>
5669
5670         * config/spu/spu.c (spu_expand_block_move) Update call of MOVE_RATIO.
5671
5672         * expr.c (MOVE_BY_PIECES_P, CLEAR_BY_PIECES_P, SET_BY_PIECES_P):
5673         Pass speed operand.
5674         * expr.h (MOVE_RATIO, CLEAR_RATIO, SET_RATIO): Update.
5675         * gimplify.c (gimplify_init_constructor): Add speed operand.
5676         * tree-sra.c (decide_block_copy): Likewise.
5677         * tree-inline.c (estimate_move_cost): Likewise.
5678         * config/alpha/alpha.h (MOVE_RATIO): Update.
5679         * config/frv/frv.c (MOVE_RATIO): Update.
5680         * config/spu/spu.h (MOVE_RATIO): Update.
5681         * config/sparc/sparc.h (MOVE_RATIO): Update.
5682         * config/i386/i386.h (MOVE_RATIO, CLEAR_RATIO): Update.
5683         * config/m68hc11/m68hc11.h (MOVE_RATIO): Update.
5684         * config/cris/cris.h (MOVE_RATIO): Update.
5685         * config/mn10300/mn10300.h (MOVE_RATIO): Update.
5686         * config/arm/arm.h (MOVE_RATIO): Update.
5687         * config/pa/pa.md: Update uses of MOVE_RATIO
5688         * config/pa/pa.h (MOVE_RATIO): Update.
5689         * config/mips/mips.h (MOVE_RATIO, MOVE_BY_PIECES,
5690         CLEAR_RATIO, SET_RATIO): Update.
5691         * config/h8300/h8300.h (MOVE_RATIO): Update.
5692         * config/v850/v850.h (MOVE_RATIO): Update.
5693         * config/bfin/bfin.h (MOVE_RATIO): Update.
5694
5695 2008-08-31  Andrey Belevantsev  <abel@ispras.ru>
5696             Dmitry Melnik  <dm@ispras.ru>
5697             Dmitry Zhurikhin  <zhur@ispras.ru>
5698             Alexander Monakov  <amonakov@ispras.ru>
5699             Maxim Kuvyrkov  <maxim@codesourcery.com>
5700
5701         * sel-sched.h, sel-sched-dump.h, sel-sched-ir.h, sel-sched.c,
5702         sel-sched-dump.c, sel-sched-ir.c: New files.
5703         * Makefile.in (OBJS-common): Add selective scheduling object files.
5704         (sel-sched.o, sel-sched-dump.o, sel-sched-ir.o): New entries.
5705         (SEL_SCHED_IR_H, SEL_SCHED_DUMP_H): New entries.
5706         (sched-vis.o): Add dependency on $(INSN_ATTR_H).
5707         * cfghooks.h (get_cfg_hooks, set_cfg_hooks): New prototypes.
5708         * cfghooks.c (get_cfg_hooks, set_cfg_hooks): New functions.
5709         (make_forwarder_block): Update loop latch if we have redirected
5710         the loop latch edge.
5711         * cfgloop.c (get_loop_body_in_custom_order): New function.
5712         * cfgloop.h (LOOPS_HAVE_FALLTHRU_PREHEADERS): New enum field.
5713         (CP_FALLTHRU_PREHEADERS): Likewise.
5714         (get_loop_body_in_custom_order): Declare.
5715         * cfgloopmanip.c (has_preds_from_loop): New.
5716         (create_preheader): Honor CP_FALLTHRU_PREHEADERS.
5717         Assert that the preheader edge will be fall thru when it is set.
5718         * common.opt (fsel-sched-bookkeeping, fsel-sched-pipelining,
5719         fsel-sched-pipelining-outer-loops, fsel-sched-renaming,
5720         fsel-sched-substitution, fselective-scheduling): New flags.
5721         * cse.c (hash_rtx_cb): New.
5722         (hash_rtx): Use it.
5723         * dbgcnt.def (sel_sched_cnt, sel_sched_region_cnt,
5724         sel_sched_insn_cnt): New counters.
5725         * final.c (compute_alignments): Export.  Free dominance
5726         info after loop_optimizer_finalize.
5727         * genattr.c (main): Output maximal_insn_latency prototype.
5728         * genautomata.c (output_default_latencies): New.
5729         Factor its code from ...
5730         (output_internal_insn_latency_func): ... here.
5731         (output_internal_maximal_insn_latency_func): New.
5732         (output_maximal_insn_latency_func): New.
5733         * hard-reg-set.h (UHOST_BITS_PER_WIDE_INT): Define unconditionally.
5734         (struct hard_reg_set_iterator): New.
5735         (hard_reg_set_iter_init, hard_reg_set_iter_set,
5736         hard_reg_set_iter_next): New functions.
5737         (EXECUTE_IF_SET_IN_HARD_REG_SET): New macro.
5738         * lists.c (remove_free_INSN_LIST_node,
5739         remove_free_EXPR_LIST_node): New functions.
5740         * loop-init.c (loop_optimizer_init): When
5741         LOOPS_HAVE_FALLTHRU_PREHEADERS, set CP_FALLTHRU_PREHEADERS when
5742         calling create_preheaders.
5743         (loop_optimizer_finalize): Do not verify flow info after reload.
5744         * recog.c (validate_replace_rtx_1): New parameter simplify.
5745         Default it to true.  Update all uses.  Factor out simplifying
5746         code to ...
5747         (simplify_while_replacing): ... this new function.
5748         (validate_replace_rtx_part,
5749         validate_replace_rtx_part_nosimplify): New.
5750         * recog.h (validate_replace_rtx_part,
5751         validate_replace_rtx_part_nosimplify): Declare.
5752         * rtl.c (rtx_equal_p_cb): New.
5753         (rtx_equal_p): Use it.
5754         * rtl.h (rtx_equal_p_cb, hash_rtx_cb): Declare.
5755         (remove_free_INSN_LIST_NODE, remove_free_EXPR_LIST_node,
5756         debug_bb_n_slim, debug_bb_slim,    print_rtl_slim): Likewise.
5757         * vecprim.h: Add a vector type for unsigned int.
5758         * haifa-sched.c: Include vecprim.h and cfgloop.h.
5759         (issue_rate, sched_verbose_param, note_list, dfa_state_size,
5760         ready_try, cycle_issued_insns, spec_info): Make global.
5761         (readyp): Initialize.
5762         (dfa_lookahead): New global variable.
5763         (old_max_uid, old_last_basic_block): Remove.
5764         (h_i_d): Make it a vector.
5765         (INSN_TICK, INTER_TICK, QUEUE_INDEX, INSN_COST): Make them work
5766         through HID macro.
5767         (after_recovery, adding_bb_to_current_region_p):
5768         New variables to handle correct insertion of the recovery code.
5769         (struct ready_list): Move declaration to sched-int.h.
5770         (rgn_n_insns): Removed.
5771         (rtx_vec_t): Move to sched-int.h.
5772         (find_insn_reg_weight): Remove.
5773         (find_insn_reg_weight1): Rename to find_insn_reg_weight.
5774         (haifa_init_h_i_d, haifa_finish_h_i_d):
5775         New functions to initialize / finalize haifa instruction data.
5776         (extend_h_i_d, init_h_i_d): Rewrite.
5777         (unlink_other_notes): Move logic to add_to_note_list.  Handle
5778         selective scheduler.
5779         (ready_lastpos, ready_element, ready_sort, reemit_notes,
5780         find_fallthru_edge): Make global, remove static prototypes.
5781         (max_issue): Make global.  Add privileged_n and state parameters.  Use
5782         them.
5783         (extend_global, extend_all): Removed.
5784         (init_before_recovery): Add new param.  Fix the handling of the case
5785         when we insert a recovery code before the EXIT which has a predecessor
5786         with a fallthrough edge to it.
5787         (create_recovery_block): Make global.  Rename to
5788         sched_create_recovery_block.  Update.
5789         (change_pattern): Rename to sched_change_pattern.  Make global.
5790         (speculate_insn): Rename to sched_speculate_insn.  Make global.
5791         Split haifa-specific functionality into ...
5792         (haifa_change_pattern): New static function.
5793         (sched_extend_bb): New static function.
5794         (sched_init_bbs): New function.
5795         (current_sched_info): Change type to struct haifa_sched_info.
5796         (insn_cost): Adjust for selective scheduling.
5797         (dep_cost_1): New function.  Move logic from ...
5798         (dep_cost): ... here.
5799         (dep_cost): Use dep_cost_1.
5800         (contributes_to_priority_p): Use sched_deps_info instead of
5801         current_sched_info.
5802         (priority): Adjust to work with selective scheduling.  Process the
5803         corner case when all dependencies don't contribute to priority.
5804         (rank_for_schedule): Use ds_weak instead of dep_weak.
5805         (advance_state): New function.  Move logic from ...
5806         (advance_one_cycle): ... here.
5807         (add_to_note_list, concat_note_lists): New functions.
5808         (rm_other_notes): Make static.  Adjust for selective scheduling.
5809         (remove_notes, restore_other_notes): New functions.
5810         (move_insn): Add two arguments.  Update assert.  Don't call
5811         reemit_notes.
5812         (choose_ready): Remove lookahead variable, use dfa_lookahead.
5813         Remove more_issue, max_points.  Move the code to initialize
5814         max_lookahead_tries to max_issue.
5815         (schedule_block): Remove rgn_n_insns1 parameter.  Don't allocate
5816         ready.  Adjust use of move_insn.  Call restore_other_notes.
5817         (luid): Remove.
5818         (sched_init, sched_finish): Move Haifa-specific initialization/
5819         finalization to ...
5820         (haifa_sched_init, haifa_sched_finish): ... respectively.
5821         New functions.
5822         (setup_sched_dump): New function.
5823         (haifa_init_only_bb): New static function.
5824         (haifa_speculate_insn): New static function.
5825         (try_ready): Use haifa_* instead of speculate_insn and change_pattern.
5826         (extend_ready, extend_all): Remove.
5827         (sched_extend_ready_list, sched_finish_ready_list): New functions.
5828         (create_check_block_twin, add_to_speculative_block): Use
5829         haifa_insns_init instead of extend_global.  Update to use new
5830         initialization functions.  Change parameter.  Factor out code from
5831         create_check_block_twin to ...
5832         (sched_create_recovery_edges) ... this new function.
5833         (add_block): Remove.
5834         (sched_scan_info): New.
5835         (extend_bb): Use sched_scan_info.
5836         (init_bb, extend_insn, init_insn, init_insns_in_bb, sched_scan): New
5837         static functions for walking through scheduling region.
5838         (sched_luids): New vector variable to replace uid_to_luid.
5839         (luids_extend_insn): New function.
5840         (sched_max_luid): New variable.
5841         (luids_init_insn): New function.
5842         (sched_init_luids, sched_finish_luids): New functions.
5843         (insn_luid): New debug function.
5844         (sched_extend_target): New function.
5845         (haifa_init_insn): New static function.
5846         (sched_init_only_bb): New hook.
5847         (sched_split_block): New hook.
5848         (sched_split_block_1): New function.
5849         (sched_create_empty_bb): New hook.
5850         (sched_create_empty_bb_1): New function.
5851         (common_sched_info, ready): New global variables.
5852         (current_sched_info_var): Remove.
5853         (move_block_after_check): Use common_sched_info.
5854         (haifa_luid_for_non_insn): New static function.
5855         (init_before_recovery): Use haifa_init_only_bb instead of add_block.
5856         (increase_insn_priority): New.
5857         * modulo-sched.c: (issue_rate): Remove static declaration.
5858         (sms_sched_info): Change type to haifa_sched_info.
5859         (sms_sched_deps_info, sms_common_sched_info): New variables.
5860         (setup_sched_infos): New.
5861         (sms_schedule): Initialize them.  Call haifa_sched_init/finish.
5862         Do not call regstat_free_calls_crossed.
5863         (sms_print_insn): Use const_rtx.
5864         * params.def (PARAM_MAX_PIPELINE_REGION_BLOCKS,
5865         PARAM_MAX_PIPELINE_REGION_INSNS, PARAM_SELSCHED_MAX_LOOKAHEAD,
5866         PARAM_SELSCHED_MAX_SCHED_TIMES, PARAM_SELSCHED_INSNS_TO_RENAME,
5867         PARAM_SCHED_MEM_TRUE_DEP_COST): New.
5868         * sched-deps.c (sched_deps_info): New.  Update all relevant uses of
5869         current_sched_info to use it.
5870         (enum reg_pending_barrier_mode): Move to sched-int.h.
5871         (h_d_i_d): New variable. Initialize to NULL.
5872         ({true, output, anti, spec, forward}_dependency_cache): Initialize
5873         to NULL.
5874         (estimate_dep_weak): Remove static declaration.
5875         (sched_has_condition_p): New function.  Adjust users of
5876         sched_get_condition to use it instead.
5877         (conditions_mutex_p): Add arguments indicating which conditions are
5878         reversed.  Use them.
5879         (sched_get_condition_with_rev): Rename from sched_get_condition.  Add
5880         argument to indicate whether returned condition is reversed.  Do not
5881         generate new rtx when condition should be reversed; indicate it by
5882         setting new argument instead.
5883         (add_dependence_list_and_free): Add deps parameter.
5884         Update all users.  Do not free dependence list when
5885         deps context is readonly.
5886         (add_insn_mem_dependence, flush_pending_lists): Adjust for readonly
5887         contexts.
5888         (remove_from_dependence_list, remove_from_both_dependence_lists): New.
5889         (remove_from_deps): New. Use the above functions.
5890         (cur_insn, can_start_lhs_rhs_p): New static variables.
5891         (add_or_update_back_dep_1): Initialize present_dep_type.
5892         (haifa_start_insn, haifa_finish_insn, haifa_note_reg_set,
5893         haifa_note_reg_clobber, haifa_note_reg_use, haifa_note_mem_dep,
5894         haifa_note_dep): New functions implementing dependence hooks for
5895         the Haifa scheduler.
5896         (note_reg_use, note_reg_set, note_reg_clobber, note_mem_dep,
5897         note_dep): New functions.
5898         (ds_to_dt, extend_deps_reg_info, maybe_extend_reg_info_p): New
5899         functions.
5900         (init_deps): Initialize last_reg_pending_barrier and deps->readonly.
5901         (free_deps): Initialize deps->reg_last.
5902         (sched_analyze_reg, sched_analyze_1, sched_analyze_2,
5903         sched_analyze_insn): Update to use dependency hooks infrastructure
5904         and readonly contexts.
5905         (deps_analyze_insn): New function.  Move part of logic from ...
5906         (sched_analyze): ... here.  Also move some logic to ...
5907         (deps_start_bb): ... here.  New function.
5908         (add_forw_dep, delete_forw_dep): Guard use of INSN_DEP_COUNT with
5909         sel_sched_p.
5910         (sched_deps_init): New function.  Move code from ...
5911         (init_dependency_caches): ... here.  Remove.
5912         (init_deps_data_vector): New.
5913         (sched_deps_finish): New function.  Move code from ...
5914         (free_dependency_caches): ... here.  Remove.
5915         (init_deps_global, finish_deps_global): Adjust for use with
5916         selective scheduling.
5917         (get_dep_weak): Move logic to ...
5918         (get_dep_weak_1): New function.
5919         (ds_merge): Move logic to ...
5920         (ds_merge_1): New static function.
5921         (ds_full_merge, ds_max_merge, ds_get_speculation_types): New functions.
5922         (ds_get_max_dep_weak): New function.
5923         * sched-ebb.c (sched_n_insns): Rename to sched_rgn_n_insns.
5924         (n_insns): Rename to rgn_n_insns.
5925         (debug_ebb_dependencies): New function.
5926         (init_ready_list): Use it.
5927         (begin_schedule_ready): Use sched_init_only_bb.
5928         (ebb_print_insn): Indicate when an insn starts a new cycle.
5929         (contributes_to_priority, compute_jump_reg_dependencies,
5930         add_remove_insn, fix_recovery_cfg): Add ebb_ prefix to function names.
5931         (add_block1): Remove to ebb_add_block.
5932         (ebb_sched_deps_info, ebb_common_sched_info): New variables.
5933         (schedule_ebb): Initialize them.  Use remove_notes instead of
5934         rm_other_notes.  Use haifa_local_init/finish.
5935         (schedule_ebbs): Use haifa_sched_init/finish.
5936         * sched-int.h: Include vecprim.h, remove rtl.h.
5937         (struct ready_list): Delete declaration.
5938         (sched_verbose_param, enum sched_pass_id_t,
5939         bb_vec_t, insn_vec_t, rtx_vec_t): New.
5940         (struct sched_scan_info_def): New structure.
5941         (sched_scan_info, sched_scan, sched_init_bbs,
5942         sched_init_luids, sched_finish_luids, sched_extend_target,
5943         haifa_init_h_i_d, haifa_finish_h_i_d): Declare.
5944         (struct common_sched_info_def): New.
5945         (common_sched_info, haifa_common_sched_info,
5946         sched_emulate_haifa_p): Declare.
5947         (sel_sched_p): New.
5948         (sched_luids): Declare.
5949         (INSN_LUID, LUID_BY_UID, SET_INSN_LUID): Declare.
5950         (sched_max_luid, insn_luid): Declare.
5951         (note_list, remove_notes, restore_other_notes, bb_note): Declare.
5952         (sched_insns_init, sched_insns_finish, xrecalloc, reemit_notes,
5953         print_insn, print_pattern, print_value, haifa_classify_insn,
5954         sel_find_rgns, sel_mark_hard_insn, dfa_state_size, advance_state,
5955         setup_sched_dump, sched_init, sched_finish,
5956         sel_insn_is_speculation_check): Export.
5957         (struct ready_list): Move from haifa-sched.c.
5958         (ready_try, ready, max_issue): Export.
5959         (ebb_compute_jump_reg_dependencies, find_fallthru_edge,
5960         sched_init_only_bb, sched_split_block, sched_split_block_1,
5961         sched_create_empty_bb, sched_create_empty_bb_1,
5962         sched_create_recovery_block, sched_create_recovery_edges): Export.
5963         (enum reg_pending_barrier_mode): Export.
5964         (struct deps): New fields `last_reg_pending_barrier' and `readonly'.
5965         (deps_t): New.
5966         (struct sched_info): Rename to haifa_sched_info.  Use const_rtx for
5967         print_insn field.  Move add_block and fix_recovery_cfg to
5968         common_sched_info_def.  Move compute_jump_reg_dependencies,
5969         use_cselib  ...
5970         (struct sched_deps_info_def): ... this new structure.
5971         (sched_deps_info): Declare.
5972         (struct spec_info_def): Remove weakness_cutoff, add
5973         data_weakness_cutoff and control_weakness_cutoff.
5974         (spec_info): Declare.
5975         (struct _haifa_deps_insn_data): Split from haifa_insn_data.  Add
5976         dep_count field.
5977         (struct haifa_insn_data): Rename to struct _haifa_insn_data.
5978         (haifa_insn_data_def, haifa_insn_data_t): New typedefs.
5979         (current_sched_info): Change type to struct haifa_sched_info.
5980         (haifa_deps_insn_data_def, haifa_deps_insn_data_t): New typedefs.
5981         (h_d_i_d): New variable.
5982         (HDID): New accessor macro.
5983         (h_i_d): Change type to VEC (haifa_insn_data_def, heap) *.
5984         (HID): New accessor macro.  Rewrite h_i_d accessor macros through HID
5985         and HDID.
5986         (IS_SPECULATION_CHECK_P): Update for selective scheduler.
5987         (enum SCHED_FLAGS): Update for selective scheduler.
5988         (enum SPEC_SCHED_FLAGS): New flag SEL_SCHED_SPEC_DONT_CHECK_CONTROL.
5989         (init_dependency_caches, free_dependency_caches): Delete declarations.
5990         (deps_analyze_insn, remove_from_deps, get_dep_weak_1,
5991         estimate_dep_weak, ds_full_merge, ds_max_merge, ds_weak,
5992         ds_get_speculation_types, ds_get_max_dep_weak, sched_deps_init,
5993         sched_deps_finish, haifa_note_reg_set, haifa_note_reg_use,
5994         haifa_note_reg_clobber, maybe_extend_reg_info_p, deps_start_bb,
5995         ds_to_dt): Export.
5996         (rm_other_notes): Delete declaration.
5997         (schedule_block): Remove one argument.
5998         (cycle_issued_insns, issue_rate, dfa_lookahead, ready_sort,
5999         ready_element, ready_lastpos, sched_extend_ready_list,
6000         sched_finish_ready_list, sched_change_pattern, sched_speculate_insn,
6001         concat_note_lists): Export.
6002         (struct region): Move from sched-rgn.h.
6003         (nr_regions, rgn_table, rgn_bb_table, block_to_bb, containing_rgn,
6004         RGN_NR_BLOCKS, RGN_BLOCKS, RGN_DONT_CALC_DEPS, RGN_HAS_REAL_EBB,
6005         BLOCK_TO_BB, CONTAINING_RGN): Export.
6006         (ebb_head, BB_TO_BLOCK, EBB_FIRST_BB, EBB_LAST_BB, INSN_BB): Likewise.
6007         (current_nr_blocks, current_blocks, target_bb): Likewise.
6008         (dep_cost_1, sched_is_disabled_for_current_region_p, sched_rgn_init,
6009         sched_rgn_finish, rgn_setup_region, sched_rgn_compute_dependencies,
6010         sched_rgn_local_init, extend_regions,
6011         rgn_make_new_region_out_of_new_block, compute_priorities,
6012         debug_rgn_dependencies, free_rgn_deps, contributes_to_priority,
6013         extend_rgns, deps_join rgn_setup_common_sched_info,
6014         rgn_setup_sched_infos, debug_regions, debug_region, dump_region_dot,
6015         dump_region_dot_file, haifa_sched_init, haifa_sched_finish): Export.
6016         (get_rgn_sched_max_insns_priority, sel_add_to_insn_priority,
6017         increase_insn_priority): Likewise.
6018         * sched-rgn.c: Include sel-sched.h.
6019         (ref_counts): New static variable.  Use it ...
6020         (INSN_REF_COUNT): ... here.  Rewrite and move closer to uses.
6021         (FED_BY_SPEC_LOAD, IS_LOAD_INSN): Rewrite to use HID accessor macro.
6022         (sched_is_disabled_for_current_region_p): Delete static declaration.
6023         (struct region): Move to sched-int.h.
6024         (nr_regions, rgn_table, rgn_bb_table, block_to_bb, containing_rgn,
6025         ebb_head): Define and initialize.
6026         (RGN_NR_BLOCKS, RGN_BLOCKS, RGN_DONT_CALC_DEPS, RGN_HAS_REAL_EBB,
6027         BLOCK_TO_BB, CONTAINING_RGN, debug_regions, extend_regions,
6028         BB_TO_BLOCK, EBB_FIRST_BB, EBB_LAST_BB): Move to
6029         sched-int.h.
6030         (find_single_block_region): Add new argument to indicate that EBB
6031         regions should be constructed.
6032         (debug_live): Delete declaration.
6033         (current_nr_blocks, current_blocks, target_bb):
6034         Remove static qualifiers.
6035         (compute_dom_prob_ps, check_live, update_live, set_spec_fed): Delete
6036         declaration.
6037         (init_regions): Delete declaration.
6038         (debug_region, bb_in_region_p, dump_region_dot_file, dump_region_dot,
6039         rgn_estimate_number_of_insns): New.
6040         (too_large): Use estimate_number_of_insns.
6041         (haifa_find_rgns): New. Move the code from ...
6042         (find_rgns): ... here.  Call either sel_find_rgns or haifa_find_rgns.
6043         (free_trg_info): New.
6044         (compute_trg_info): Allocate candidate tables here instead of ...
6045         (init_ready_list): ... here.
6046         (rgn_print_insn): Use const_rtx.
6047         (contributes_to_priority, extend_regions): Delete static declaration.
6048         (add_remove_insn, fix_recovery_cfg): Add rgn_ to function names.
6049         (add_block1): Rename to rgn_add_block.
6050         (debug_rgn_dependencies): Delete static qualifier.
6051         (new_ready): Use sched_deps_info.  Simplify.
6052         (rgn_common_sched_info, rgn_const_sched_deps_info,
6053         rgn_const_sel_sched_deps_info, rgn_sched_deps_info, rgn_sched_info):
6054         New.
6055         (region_sched_info): Rename to rgn_const_sched_info.
6056         (deps_join): New, extracted from ...
6057         (propagate_deps): ... here.
6058         (compute_block_dependences, debug_dependencies): Update for selective
6059         scheduling.
6060         (free_rgn_deps, compute_priorities): New functions.
6061         (sched_rgn_init, sched_rgn_finish, rgn_setup_region,
6062         sched_rgn_compute_dependencies): New functions.
6063         (schedule_region): Use them.
6064         (sched_rgn_local_init, sched_rgn_local_free, sched_rgn_local_finish,
6065         rgn_setup_common_sched_info, rgn_setup_sched_infos):
6066         New functions.
6067         (schedule_insns): Call new functions that were split out.
6068         (rgn_make_new_region_out_of_new_block): New.
6069         (get_rgn_sched_max_insns_priority): New.
6070         (rest_of_handle_sched, rest_of_handle_sched2): Call selective
6071         scheduling when appropriate.
6072         * sched-vis.c: Include insn-attr.h.
6073         (print_value, print_pattern): Make global.
6074         (print_rtl_slim, debug_bb_slim, debug_bb_n_slim): New functions.
6075         * target-def.h (TARGET_SCHED_ADJUST_COST_2,
6076         TARGET_SCHED_ALLOC_SCHED_CONTEXT, TARGET_SCHED_INIT_SCHED_CONTEXT,
6077         TARGET_SCHED_SET_SCHED_CONTEXT, TARGET_SCHED_CLEAR_SCHED_CONTEXT,
6078         TARGET_SCHED_FREE_SCHED_CONTEXT, TARGET_SCHED_GET_INSN_CHECKED_DS,
6079         TARGET_SCHED_GET_INSN_SPEC_DS, TARGET_SCHED_SKIP_RTX_P): New target
6080         hooks.  Initialize them to 0.
6081         (TARGET_SCHED_GEN_CHECK): Rename to TARGET_SCHED_GEN_SPEC_CHECK.
6082         * target.h (struct gcc_target): Add them.  Rename gen_check field to
6083         gen_spec_check.
6084         * flags.h (sel_sched_switch_set): Declare.
6085         * opts.c (sel_sched_switch_set): New variable.
6086         (decode_options): Unset flag_sel_sched_pipelining_outer_loops if
6087         pipelining is disabled from command line.
6088         (common_handle_option): Record whether selective scheduling is
6089         requested from command line.
6090         * doc/invoke.texi: Document new flags and parameters.
6091         * doc/tm.texi: Document new target hooks.
6092         * config/ia64/ia64.c (TARGET_SCHED_GEN_SPEC_CHECK): Define to
6093         ia64_gen_check.
6094         (dfa_state_size): Do not declare locally.
6095         * config/ia64/ia64.opt (msched-ar-data-spec): Default to 0.
6096         * config/rs6000/rs6000.c (rs6000_init_sched_context,
6097         rs6000_alloc_sched_context, rs6000_set_sched_context,
6098         rs6000_free_sched_context): New functions.
6099         (struct _rs6000_sched_context): New.
6100         (rs6000_sched_reorder2): Do not modify INSN_PRIORITY for selective
6101         scheduling.
6102         (rs6000_sched_finish): Do not run for selective scheduling.
6103
6104 2008-08-31  Jan Hubicka  <jh@suse.cz>
6105
6106         * frv.c (frv_rtx_costs): Update forward declaration.
6107         * spu.c (spu_rtx_costs): Likewise.
6108         * pdp11.c: Include df.h
6109         (pdp11_output_function_epilogue): Use df_set_regs_ever_live.
6110         * m68hc11.c (m68hc11_gen_highpart): Fix call of gen_rtx_SUBREG.
6111         (m68hc11_rtx_costs_1): Fix call of rtx_cost.
6112         * iq2000.c (iq2000_address_cost): Add speed argument.
6113         (iq2000_rtx_costs): Likewise.
6114         * mn10300.c (mn10300_address_cost_1): Remove speed argument;
6115         update call of mn10300_address_cost.
6116         * mcore.c: Include df.h
6117         (mcore_rtx_costs): Update prototype.
6118         * score3.c: Include df.h
6119         (score3_rtx_costs): Remove speed argument.
6120         * score7.c: Include df.h
6121         (score7_address_cost): Remove speed argument.
6122         * score-protos.h (score_address_cost): Update prototype.
6123         * score.c: Include df.h
6124         (score_rtx_costs): Update call of costs functions.
6125         * v850.c (v850_rtx_costs): Add bool argument.
6126
6127 2008-08-31  Hans-Peter Nilsson  <hp@axis.com>
6128
6129         * config/cris/cris.c (cris_rtx_costs): Correct call to rtx_costs.
6130
6131 2008-08-31  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
6132
6133         * gthr-win32.h (__gthread_setspecific): Use CONST_CAST2.
6134         * config/i386/gthr-win32.c (__gthread_setspecific): Same.
6135
6136 2008-08-31  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
6137
6138         * mkmap-flat.awk: Add option pe_dll.
6139         * config/i386/t-cygming (SHLIB_LINK): Support building libgcc_s.
6140         * config/i386/t-cygwin (SHLIB_LC): Add.
6141         * config/i386/t-mingw32 (SHLIB_LC): Add.
6142         * config/i386/mingw32.h (SHARED_LIBGCC_UNDEFS_SPEC): New.
6143         (SUBTARGET_EXTRA_SPECS): Use SHARED_LIBGCC_UNDEFS_SPEC.
6144         (LINK_SPEC): Support libgcc_s.
6145         (LIBGCC_SPEC): Support libgcc_s.
6146         (LIBGCC_SONAME): New.
6147
6148 2008-08-31  Jan Hubicka  <jh@suse.cz>
6149
6150         * predict.c (maybe_hot_bb_p, maybe_hot_edge_p): Previous commit
6151         mistakely had old version of patch.
6152
6153         * ipa-cp.c (ipcp_need_original_clone_p): Remove.
6154         (ipcp_estimate_growth): New.
6155         (ipcp_insert_stage): Use ipcp_estimate_growth.
6156         * profile.c (branch_prob): When reading failed, do not consider
6157         profile as read.
6158
6159 2008-08-31  Jan Hubicka  <jh@suse.cz>
6160
6161         * tree-ssa-loop-unswitch.c (tree_unswitch_single_loop): Check that
6162         loop is optimized for speed.
6163
6164 2008-08-31  Richard Guenther  <rguenther@suse.de>
6165
6166         PR middle-end/37289
6167         * fold-const.c (fold_binary): Retain conversions in folding
6168         ~A + 1 to -A.
6169
6170 2008-08-31  Jan Hubicka  <jh@suse.cz>
6171
6172         * postreload-gcse.c (eliminate_partially_redundant_loads):
6173         Use optimize_bb_for_size_p.
6174         * predict.c (maybe_hot_frequency_p): Make inline.
6175         (maybe_hot_count_p): Break out from ...
6176         (maybe_hot_bb_p): ... this one.
6177         (maybe_hot_edge_p): Simplify.
6178         * basic-block.h (probably_cold_bb_p): Remove.
6179
6180 2008-08-31  Jakub Jelinek  <jakub@redhat.com>
6181
6182         PR target/37168
6183         * config/rs6000/rs6000-protos.h (const_vector_elt_as_int): Add
6184         prototype.
6185         * config/rs6000/rs6000.c (const_vector_elt_as_int): No longer static.
6186         * config/rs6000/altivec.md (easy_vector_constant_add_self splitter):
6187         Also split V4SFmode.
6188         * config/rs6000/predicates.md (easy_vector_constant_add_self): Handle
6189         vector float modes.
6190
6191 2008-08-31  Jan Hubicka  <jh@suse.cz>
6192
6193         * predict.c (PROB_VERY_LIKELY): Make small enough so things
6194         become cold.
6195         * predict.def (PRED_NORETURN_CALL, PRED_COLD_CALL): Use it.
6196
6197 2008-08-31  Jakub Jelinek  <jakub@redhat.com>
6198
6199         PR debug/37287
6200         * dwarf2out.c (gen_namespace_die): For DECL_EXTERNAL modules don't
6201         add source coords.
6202
6203         * dwarf2out.c (native_encode_initializer): Subtract min_index for
6204         non-range array index.  Handle VIEW_CONVERT_EXPR and NON_LVALUE_EXPR.
6205
6206 2008-08-31  Jan Hubicka  <jh@suse.cz>
6207
6208         * sparc.h (BRANCH_COST): Fix macro definition.
6209         * avr.c (avr_operand_rtx_cost): Add speed argument.
6210         (avr_rtx_costs): Update calls of avr_operand_rtx_cost.
6211
6212 2008-08-31  Richard Guenther  <rguenther@suse.de>
6213
6214         * tree-cfg.c (verify_types_in_gimple_assign): Dump mismatched
6215         types instead of operands.  Re-instantiate verifying of
6216         binary expression operands.
6217
6218 2008-08-30  Jan Hubicka  <jh@suse.cz>
6219
6220         * fwprop.c (should_replace_address): Add speed attribute.
6221         (PR_OPTIMIZE_FOR_SPEED): New flag.
6222         (propagate_rtx_1): Use it.
6223         (propagate_rtx): Set it.
6224         (try_fwprop_subst): Update call of rtx_costs.
6225         (forward_propagate_and_simplify): LIkewise.
6226         * hooks.c (hook_int_rtx_bool_0): New
6227         (hook_bool_rtx_int_int_intp_false): Replace by ...
6228         (hook_bool_rtx_int_int_intp_bool_false): .. thisone.
6229         * hooks.h (hook_int_rtx_bool_0): New
6230         (hook_bool_rtx_int_int_intp_false): Replace by ...
6231         (hook_bool_rtx_int_int_intp_bool_false): .. thisone.
6232         * optabs.c (avoid_expensive_constant): UPdate call of rtx_cost.
6233         (prepare_cmp_insn): UPdate call of rtx_cost.
6234         * postreload.c (reload_cse_simplify_set): Update call of rtx_cost.
6235         (reload_cse_simplify_operands): Update call of rtx_cost.
6236         (reload_cse_move2add): call of rtx_cost.
6237         * target.h (struct gcc_target): Update rtx_costs and address_costs.
6238         * rtlanal.c (rtx_cost): Add speed argument.
6239         (address_cost): Add speed argument
6240         (default_address_cost): Likewise.
6241         (insn_rtx_cost): Likewise.
6242         * cfgloopanal.c (seq_cost): Add speed argument.
6243         (target_reg_cost, target_spill_cost): Turn to array.
6244         (init_set_costs): Update for speed.
6245         (estimate_reg_pressure_cost): Add speed argument.
6246         * auto-inc-dec.c (attempt_change): Update call of rtx_cost.
6247         * dojump.c (prefer_and_bit_test): UPdate call of rtx_cost.
6248         * tree-ssa-loop-ivopts.c (struct ivopts_data): New field speed.
6249         (seq_cost): Add speed argument.
6250         (computation_cost): Add speed arugment.
6251         (add_cost, multiply_by_const, get_address_cost): add speed argument.
6252         (force_expr_to_var_cost): Update for profile info.
6253         (force_var_cost): Likewise.
6254         (split_address_cost): Likewise.
6255         (ptr_difference_cost): Likewise.
6256         (difference_cost): Likewise.
6257         (get_computation_cost_at): Likewise.
6258         (determine_iv_cost): Likewise.
6259         (ivopts_global_cost_for_size): Likewise.
6260         (rewrite_use_address): Likewise.
6261         (tree_ssa_iv_optimize_loop): Initialize speed field.
6262         * cse.c (optimize_this_for_speed_p): New static var.
6263         (notreg_cost): Update call of rtx_cost.
6264         (cse_extended_basic_block): set optimize_this_for_speed_p.
6265         * ifcvt.c (cheap_bb_rtx_cost_p): Update call of rtx_cost.
6266         (noce_try_cmove_arith): Likewise.
6267         (noce_try_sign_mask): LIkewise.
6268         * expr.c (compress_float_constant): Update rtx_cost calls.
6269         * tree-ssa-address.c (most_expensive_mult_to_index): Add speed
6270         argument.
6271         (addr_to_parts): Likewise.
6272         (create_mem_ref): Likewise.
6273         * dse.c (find_shift_sequence): Add speed argument.
6274         (replace_read): Update call.
6275         * calls.c (precompute_register_parameters): Update call of rtx_cost.
6276         * expmed.c (sdiv_pow2_cheap, smod_pow2_cheap, zero_cost, add_cost,
6277         * neg_cost, shift_cost, shiftadd_cost,
6278         shiftsub_cost, mul_cost, sdiv_cost, udiv_cost ,mul_widen_cost,
6279         mul_highpart_cost): Increase dimension.
6280         (init_expmed): Initialize for both size and speed.
6281         (expand_shift): Use profile.
6282         (synth_mult): Use profile.
6283         (choose_mult_variant): Use profile.
6284         (expand_mult): Use profile.
6285         (expand_mult_highpart_optab): Use profile.
6286         (expand_mult_highpart): Use profile.
6287         (expand_smod_pow2): Use profile.
6288         (expand_divmod): Use profile.
6289         * simplify-rtx.c (simplify_binary_operation_1): Update call of
6290         rtx_cost.
6291         * loop-invariant.c (create_new_invariant): Use profile.
6292         (gain_for_invariant): Add speed parameter.
6293         (best_gain_for_invariant): Likewise.
6294         (find_invariants_to_move): Likewise.
6295         (move_single_loop_invariants): Set it.
6296         * target-def.h (TARGET_RTX_COSTS): Use hook.
6297         * rtl.h (rtx_cost, address_cost, insn_rtx_cost): Update prototpe.
6298         (optimize_insn_for_size_p, optimize_insn_for_speed_p): Declare.
6299         * output.h (default_address_cost): Update prototype.
6300         * combine.c (optimize_this_for_speed_p): New static var.
6301         (combine_validate_cost): Update call of rtx_cost.
6302         (combine_instructions): Set optimize_this_for_speed_p.
6303         (expand_compound_operation): Update call of rtx_cost.
6304         (make_extraction):Update call of rtx_cost.
6305         (force_to_mode):Update call of rtx_cost.
6306         (distribute_and_simplify_rtx):Update call of rtx_cost.
6307         * cfgloop.h (target_reg_cost, target_spill_cost): Turn to array.
6308         (estimate_reg_pressure_cost): Update prototype.
6309         * tree-flow.h (multiply_by_cost, create_mem_ref): Update prototype.
6310         * basic-block.h (optimize_insn_for_size_p, optimize_insn_for_speed_p):
6311         Remove.
6312         * config/alpha/alpha.c (alpha_rtx_costs): Update.
6313         (alpha_rtx_costs): Update.
6314         * config/frv/frv.c (frv_rtx_costs): Update.
6315         * config/s390/s390.c (s390_rtx_costs): Update.
6316         * config/m32c/m32c.c (m32c_memory_move_cost): Update.
6317         (m32c_rtx_costs): Update.
6318         * config/spu/spu.c (TARGET_ADDRESS_COST): Upate.
6319         (spu_rtx_costs): Update.
6320         * config/sparc/sparc.c (sparc_rtx_costs): Update.
6321         * config/m32r/m32r.c (m32r_rtx_costs): Update.
6322         * config/i386/i386.c (:ix86_address_cost): Update.
6323         (ix86_rtx_costs): Update.
6324         * config/sh/sh.c (sh_rtx_costs, sh_address_cost): Update.
6325         * config/pdp11/pdp11.c (pdp11_rtx_costs): Update.
6326         * config/avr/avr.c (avr_rtx_costs, avr_address_cost): Update.
6327         * config/crx/crx.c (crx_address_cost): Update.
6328         * config/xtensa/xtensa.c (xtensa_rtx_costs): Update.
6329         * config/stormy16/stormy16.c
6330         (xstormy16_address_cost, xstormy16_rtx_costs): Update.
6331         * config/m68hc11/m68hc11.c
6332         (m68hc11_address_cost, m68hc11_rtx_costs): Update.
6333         * config/cris/cris.c (cris_rtx_costs, cris_address_cost): Update.
6334         * config/iq2000/iq2000.c (iq2000_rtx_costs, iq2000_address_cost):
6335         Update.
6336         * config/mn10300/mn10300.c (mn10300_address_cost, mn10300_rtx_costs):
6337         Update
6338         * config/ia64/ia64.c (ia64_rtx_costs): Update.
6339         * config/m68k/m68k.c (m68k_rtx_costs): Update.
6340         * config/rs6000/rs6000.c (rs6000_rtx_costs): Update.
6341         * config/arc/arc.c (arc_rtx_costs, arc_address_cost): Update.
6342         * config/mcore/mcore.c (TARGET_ADDRESS_COST): Update.
6343         (mcore_rtx_costs): update.
6344         * config/score/score3.c (score3_rtx_costs): Update.
6345         * config/score/score7.c (score7_rtx_costs): Update.
6346         * config/score/score3.h (score3_rtx_costs):Update.
6347         * config/score/score7.h (score7_rtx_costs): Update.
6348         * config/score/score.c (score_rtx_costs): Update.
6349         * config/arm/arm.c (arm_address_cost): Update.
6350         (arm_rtx_costs_1): Update.
6351         (arm_rtx_costs_1): Update.
6352         (arm_size_rtx_costs): Update.
6353         (arm_size_rtx_costs): Update.
6354         (arm_size_rtx_costs): Update.
6355         (arm_xscale_rtx_costs): Update.
6356         (arm_thumb_address_cost): Update.
6357         * config/pa/pa.c (hppa_address_cost): Update.
6358         * config/mips/mips.c (mips_rtx_costs): Update.
6359         * config/vax/vax.c (vax_address_cost): Update.
6360         * config/h8300/h8300.c (h8300_shift_costs): Update.
6361         (h8300_rtx_costs): Update.
6362         * config/v850/v850.c (TARGET_ADDRESS_COST): Update.
6363         (v850_rtx_costs): Update.
6364         * config/mmix/mmix.c (mmix_rtx_costs, mmix_rtx_costs): Update.
6365         * config/bfin/bfin.c
6366         (bfin_address_cost): Update.
6367         (bfin_rtx_costs): Update.
6368         * stmt.c (lshift_cheap_p): Update.
6369
6370 2008-08-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6371
6372         PR middle-end/36444
6373         * expmed.c (extract_bit_field_1): Check the mode size to make
6374         sure the vector modes have the same size.
6375
6376 2008-08-29  Michael Meissner  <gnu@the-meissners.org>
6377
6378         * dojump.c (top level): Include basic-block.h to declare
6379         optimize_insn_for_speed_p
6380
6381         * Makefile.in (dodump.h): Add $(BASIC_BLOCK_H) dependency.
6382
6383         * opts.h (CL_SAVE): New option class for marking options that are
6384         target specific options usable in the target attribute.
6385         (CL_MIN_OPTION_CLASS): CL_SAVE is now the minimum option.
6386
6387         * opt-functions.awk (switch_flags): Add CL_SAVE flag so backends
6388         can easily find the target specific options that are safe to use
6389         in the attribute or pragma.
6390
6391         * attribs.c (decl_attributes): Change #pragma GCC option to
6392         #pragma GCC target, and attribute((option(...))) to
6393         attribute((target(...))).
6394
6395         * doc/extend.texi (target attribute): Change from option
6396         attribute.  Delete push/pop/reset.
6397         (#pragma GCC target): Change from #pragma GCC option.  Delete
6398         push/pop/reset.
6399         (#pragma GCC push_options): Document new pragma.
6400         (#pragma GCC pop_options): Document new pragma.
6401         (#pragma GCC reset_options): Document new pragma.
6402
6403         * targhooks.c (default_target_option_valid_attribute_p): Add
6404         warning about port not supporting target attributes.
6405         (default_target_option_pragma_parse): New function, warn about
6406         #pragma GCC target not being supported.
6407
6408         * targhooks.h (default_target_option_pragma_parse): Add
6409         declaration.
6410
6411         * tree.h (TI_CURRENT_TARGET_PRAGMA): Rename from
6412         TI_CURRENT_OPTION_PRAGMA.
6413         (current_target_pragma): Rename from current_option_pragma.
6414
6415         * target.h: (struct target_option): Delete booleans for changing
6416         the optimization level on hot/cold functions.  Change signature of
6417         pragma_parse hook to take a second tree.
6418
6419         * c-tree.h (c_builtin_function_ext_scope): Add declaration.
6420
6421         * c-decl.c (c_builtin_function_ext_scope): New function, guarantee
6422         that the declaration is done at global scope.
6423
6424         * langhooks.c (add_builtin_function_common): Move most of the code
6425         from add_builtin_function here, calling the hook passed in.
6426         (add_builtin_function): Call add_builtin_function_common with
6427         standard builtin hook.
6428         (add_builtin_function_ext_scope): New function to add builtins to
6429         global scope.
6430
6431         * langhooks.h (struct lang_hooks): Add builtin_function_ext_scope
6432         hook.
6433         (add_builtin_function_ext_scope): Add declaration.
6434
6435         * c-pragma.c (handle_pragma_target): Rename from
6436         handle_pragma_option, #pragma GCC option is now #pragma GCC
6437         target.  Move warning about port not supporting target options to
6438         default pragma parse hook.  Remove push/pop/reset from this
6439         pragma.
6440         (handle_pragma_optimize): Remove push/pop/reset from this pragma.
6441         (option_stack): Delete static variable.
6442         (optimize_stack): Ditto.
6443         (optons_stack): New stack of saved target and optimization
6444         options.
6445         (handle_pragma_push_options): New function to handle pushing both
6446         target and optimization options.
6447         (handle_pragma_pop_options): New function to handle popping both
6448         target and optimization options.
6449         (handle_pragma_reset_options): New function to handle resetting
6450         both target and optimization options to their initial state.
6451         (init_pragma): Rename handle_pragma_option to
6452         handle_pragma_target.  Add support for push_options, pop_options,
6453         and reset_options pragmas.
6454
6455         * target-def.h (TARGET_OPTION_PRAGMA_PARSE): Change default to
6456         default_target_option_pragma_parse.
6457         (TARGET_OPTION_VALID_ATTRIBUTE_P): Change default to
6458         default_target_option_valid_attribute_p.
6459         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Delete.
6460         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Ditto.
6461         (TARGET_OPTION_HOOKS): Delete the fields for whether to change
6462         optimization level on hot/cold functions.
6463
6464         * tree-inline.c (tree_can_inline_p): Disable suppressing inlining
6465         if the caller and callee have different optimization levels.
6466
6467         * c-common.c (handle_target_attribute): Rename from
6468         handle_option_attribute, attribute((option(...))) is now
6469         attribute((target(...))).  Move warning if the port does not
6470         support target attributes to the default hook.
6471         (handle_hot_attribute): Delete code to change the optimization
6472         level of hot functions.
6473         (handle_cold_attribute): Ditto.
6474
6475         * config/i386/i386-c.c (ix86_pragma_target_parse): Take a second
6476         argument that is the binary tree options to use if there are no
6477         arguments.  Call ix86_valid_target_attribute_tree instead of
6478         ix86_valid_option_attribute_tree.
6479         (ix86_pragma_target_parse): Rename from ix86_pragma_option_parse.
6480         (ix86_register_pragmas): Use ix86_pragma_target_parse instead of
6481         ix86_pragma_option_parse.
6482
6483         * config/i386/i386-protos.h (ix86_valid_target_attribute_tree):
6484         Rename from ix86_valid_option_attribute_tree.
6485
6486         * config/i386/i386.c (ix86_add_new_builtins): New function to add
6487         new builtins when the ISA changes.
6488         (ix86_valid_target_attribute_tree): Rename from
6489         ix86_valid_option_attribute_tree.  Change callers.  If the
6490         function specified optimization options, use those as the starting
6491         point before setting up the target attributes.  If the
6492         optimization options were changed in the course of setting the
6493         target attributes, record the new optimization options.
6494         (ix86_valid_target_attribute_tree_inner_p): Rename from
6495         ix86_valid_option_attribute_tree_inner_p.  Change callers.  Call
6496         ix86_add_new_builtins if the ISA changed.
6497         (ix86_valid_target_attribute_p): Rename from
6498         ix86_valid_option_attribute_p.  Change callers.
6499         (enum ix86_builtins): Add IX86_BUILTIN_PCMOV to allow both
6500         __builtin_ia32_pcmov and __builtin_ia32_pcmov_v2di to be declared
6501         as delayed builtin functions.
6502         (struct builtin_isa): New structure to record builtin functions
6503         that should be delayed until the ISA for that function is used.
6504         (ix86_builtins_isa): Change from int to struct to track builtin
6505         functions we want to declare at some point.
6506         (def_builtin): If the front end can delay defining the builtin
6507         functions, don't create builtins for ISAs not part of the default
6508         options.
6509         (def_builtin_const): Ditto.
6510         (bdesc_multi_arg): Declare __builtin_ia32_pcmov and
6511         __builtin_ia32_pcmov_v2di to be different builtin functions.
6512         (ix86_expand_builtin): Changes due to ix86_builtins_isa now being
6513         a structure instead of an int.
6514         (TARGET_OPTION_VALID_ATTRIBUTE_P): Use
6515         ix86_valid_target_attribute_p, not ix86_valid_option_attribute_p.
6516         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Delete.
6517         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Ditto.
6518
6519         * config/ia64/ia64.h
6520         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Delete.
6521         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Ditto.
6522
6523         * langhooks-def.h (LANG_HOOKS_BUILTIN_FUNCTION_EXT_SCOPE): New
6524         hook, default to being the same as LANG_HOOKS_BUILTIN_FUNCTION.
6525         (LANG_HOOKS_INITIALIZER): Add
6526         LANG_HOOKS_BUILTIN_FUNCTION_EXT_SCOPE hook.
6527
6528 2008-08-30  Kaz Kojima  <kkojima@gcc.gnu.org>
6529
6530         PR target/37270
6531         * config/sh/sh.h (LEGITIMIZE_RELOAD_ADDRESS): Generate
6532         the reload address with the index register for SFmode
6533         access with a displacement.
6534
6535 2008-08-30  Jan Hubicka  <jh@suse.cz>
6536
6537         * optabs.c (expand_abs_nojump): Update BRANCH_COST call.
6538         * fold-cost.c (LOGICAL_OP_NON_SHORT_CIRCUIT, fold_truthop): Likewise.
6539         * dojump.c (do_jump): Likewise.
6540         * ifcvt.c (MAX_CONDITIONAL_EXECUTE): Likewise.
6541         (note-if_info): Add BRANCH_COST.
6542         (noce_try_store_flag_constants, noce_try_addcc,
6543         noce_try_store_flag_mask, noce_try_cmove_arith, noce_try_cmove_arith,
6544         noce_try_cmove_arith, noce_find_if_block, find_if_case_1,
6545         find_if_case_2): Use computed branch cost.
6546         * expr.h (BRANCH_COST): Update default.
6547         * predict.c (predictable_edge_p): New function.
6548         * expmed.c (expand_smod_pow2, expand_sdiv_pow2, emit_store_flag):
6549         Update BRANCH_COST call.
6550         * basic-block.h (predictable_edge_p): Declare.
6551         * config/alpha/alpha.h (BRANCH_COST): Update.
6552         * config/frv/frv.h (BRANCH_COST): Update.
6553         * config/s390/s390.h (BRANCH_COST): Update.
6554         * config/spu/spu.h (BRANCH_COST): Update.
6555         * config/sparc/sparc.h (BRANCH_COST): Update.
6556         * config/m32r/m32r.h (BRANCH_COST): Update.
6557         * config/i386/i386.h (BRANCH_COST): Update.
6558         * config/i386/i386.c (ix86_expand_int_movcc): Update use of
6559         BRANCH_COST.
6560         * config/sh/sh.h (BRANCH_COST): Update.
6561         * config/pdp11/pdp11.h (BRANCH_COST): Update.
6562         * config/avr/avr.h (BRANCH_COST): Update.
6563         * config/crx/crx.h (BRANCH_COST): Update.
6564         * config/xtensa/xtensa.h (BRANCH_COST): Update.
6565         * config/stormy16/stormy16.h (BRANCH_COST): Update.
6566         * config/m68hc11/m68hc11.h (BRANCH_COST): Update.
6567         * config/iq2000/iq2000.h (BRANCH_COST): Update.
6568         * config/ia64/ia64.h (BRANCH_COST): Update.
6569         * config/rs6000/rs6000.h (BRANCH_COST): Update.
6570         * config/arc/arc.h (BRANCH_COST): Update.
6571         * config/score/score.h (BRANCH_COST): Update.
6572         * config/arm/arm.h (BRANCH_COST): Update.
6573         * config/pa/pa.h (BRANCH_COST): Update.
6574         * config/mips/mips.h (BRANCH_COST): Update.
6575         * config/vax/vax.h (BRANCH_COST): Update.
6576         * config/h8300/h8300.h (BRANCH_COST): Update.
6577         * params.def (PARAM_PREDICTABLE_BRANCH_OUTCOME): New.
6578         * doc/invoke.texi (predictable-branch-cost-outcome): Document.
6579         * doc/tm.texi (BRANCH_COST): Update.
6580
6581 2008-08-30  Samuel Tardieu  <sam@rfc1149.net>
6582
6583         PR target/37283
6584         * config/arm/arm.c (arm_optimization_options): Set
6585         flag_section_anchors to 2 instead of 1 to distinguish it from
6586         -fsection-anchors given explicitely on the command line.
6587
6588 2008-08-30  Richard Sandiford  <rdsandiford@googlemail.com>
6589
6590         * recog.c (split_insn): Consider attaching a REG_EQUAL note to the
6591         final insn of a split.
6592
6593 2008-08-30  Jan Hubicka  <jh@suse.cz>
6594
6595         * postreload-gcse.c (gate_handle_gcse2): Disable for functions
6596         optimized for speed.
6597         * final.c (compute_alignments): Use optimize_bb_for_size_p.
6598         * tree-call-cdce.c (gate_call_cdce): Use optimize_function_for_speed_p.
6599         * opts.c (flag_predictive_commoning_set, flag_unswitch_loops_set,
6600         flag_gcse_after_reload_set): New static vars.
6601         (common_handle_option): Enable those flags for profile-use.
6602         (decode_options): Remove optimize_size flags that are handled
6603         on higher granuality.
6604         * tree-vectorizer.c (vectorize_loops): Use
6605         optimize_loop_nest_for_speed_p.
6606         * tree-ssa-pre.c (do_pre): Use optimize_function_for_speed_p.
6607         * tree-predcom.c (tree_predictive_commoning): Use
6608         optimize_loop_for_speed_p.
6609         * varasm.c (assemble_start_function): Use
6610         optimize_function_for_speed_p.
6611         * bb-reorder.c (rest_of_handle_reorder_blocks): Likewise.
6612         * predict.c (optimize_loop_for_speed_p): Fix walk.
6613
6614 2008-08-30  Jan Hubicka  <jh@suse.cz>
6615
6616         * ipa-inline.c (cgraph_estimate_growth): Discover self recursive
6617         functions.
6618         (cgraph_decide_inlining_of_small_function): Use edge->count to detect
6619         profile presence locally.
6620
6621 2008-08-29  Joseph Myers  <joseph@codesourcery.com>
6622
6623         PR bootstrap/37086
6624         * tree-vrp.c (find_switch_asserts): Make idx volatile for GCC
6625         versions before 4.0.
6626
6627 2008-08-29  Jan Hubicka  <jh@suse.cz>
6628
6629         * tree-inline.c (insert_init_stmt): Insert sequence even when
6630         not in SSA form.
6631
6632 2008-08-29  Jeff Law  <law@redhat.com>
6633
6634         * mn10300.c (mn10300_secondary_reload_class): We need secondary
6635         reloads for AM33-2 if IN is a pseudo with an equivalent memory
6636         location and class is an FP register.
6637
6638 2008-08-29  Jan Hubicka  <jh@suse.cz>
6639
6640         * see.c (see_merge_one_def_extension): Silence used uninitialized
6641         warning.
6642         * matrix-reorg.c (check_allocation_function): Likewise.
6643         * config/i386/driver-i386.c (detect_caches_amd): Likewise.
6644
6645 2008-08-29  Jakub Jelinek  <jakub@redhat.com>
6646
6647         PR c/37261
6648         * fold-const.c (fold_binary): In (X | C1) & C2 canonicalization
6649         compute new & and | in type rather than TREE_TYPE (arg0).
6650
6651         * dwarf2out.c (fortran_common): Update comment.
6652         (gen_variable_die): Swap com_die and var_die variables in Fortran
6653         COMMON block handling code.
6654
6655         * dwarf2out.c (descr_info_loc): Handle VAR_DECL.
6656
6657         * dwarf2out.c (gen_const_die): New function.
6658         (size_of_die, value_format, output_die): Output larger
6659         dw_val_class_vec using DW_FORM_block2 or DW_FORM_block4.
6660         (native_encode_initializer): New function.
6661         (tree_add_const_value_attribute): Call it.
6662         (gen_decl_die, dwarf2out_decl): Handle CONST_DECLs if is_fortran ().
6663
6664         * dwarf2out.c (gen_formal_parameter_die, gen_variable_die): For
6665         DECL_BY_REFERENCE decls don't pass TREE_READONLY and
6666         TREE_THIS_VOLATILE to add_type_attribute.
6667
6668         * dwarf2out.c (add_subscript_info): Stop on Fortran TYPE_STRING_FLAG
6669         types.
6670         (gen_array_type_die): Emit DW_TAG_string_type for Fortran character
6671         types.
6672
6673         * dwarf2out.c (loc_by_reference): New function.
6674         (add_location_or_const_value_attribute): Use it.
6675
6676         PR fortran/23057
6677         * dwarf2out.c (gen_variable_die): Represent Fortran COMMON vars
6678         as DW_TAG_variable children of DW_TAG_common_block rather than
6679         DW_TAG_member children.  Put DW_AT_external to individual
6680         DW_TAG_variable DIEs, not to DW_TAG_common_block.
6681
6682         * dwarf2out.c (add_bound_info): If lookup_decl_die failed, try
6683         loc_descriptor_from_tree_1.
6684
6685         PR fortran/29635
6686         PR fortran/23057
6687         * debug.h (struct gcc_debug_hooks): Add NAME and CHILD
6688         arguments to imported_module_or_decl.
6689         (debug_nothing_tree_tree): Removed.
6690         (debug_nothing_tree_tree_tree_bool): New prototype.
6691         * debug.c (do_nothing_debug_hooks): Adjust.
6692         (debug_nothing_tree_tree): Removed.
6693         (debug_nothing_tree_tree_tree_bool): New function.
6694         * dwarf2out.c (is_symbol_die): Handle DW_TAG_module.
6695         (gen_variable_die): Put all common vars for the
6696         same COMMON block under one DW_TAG_common_block.
6697         (declare_in_namespace): Return new context_die, for Fortran
6698         return the module DIE instead of adding extra declarations into
6699         the namespace.
6700         (gen_type_die_with_usage): Adjust declare_in_namespace caller.
6701         (gen_namespace_die): If is_fortran (), generate DW_TAG_module
6702         instead of DW_TAG_namespace.  If DECL_EXTERNAL is set, add
6703         DW_AT_declaration.
6704         (dwarf2out_global_decl): Don't skip Fortran global vars.
6705         (gen_decl_die): Likewise.  Adjust declare_in_namespace callers.
6706         (dwarf2out_imported_module_or_decl): Add NAME and CHILD arguments.
6707         If NAME is non-NULL, add DW_AT_name.  If CHILD is non-NULL, put
6708         DW_TAG_imported_declaration as child of previous
6709         DW_TAG_imported_module.
6710         * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Adjust.
6711         * sdbout.c (sdb_debug_hooks): Likewise.
6712         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
6713
6714 2008-08-29  Jan Hubicka  <jh@suse.cz>
6715
6716         * cgraph.c (cgraph_remove_node): Do not remove nested nodes.
6717
6718         * cgraph.h (cgraph_maybe_hot_edge_p): Declare.
6719         * ipa-cp.c (n_cloning_candidates): New static variable.
6720         (ipcp_print_profile_data, ipcp_function_scale_print): Forward declare.
6721         (ipcp_print_all_lattices): Improve debug output.
6722         (ipcp_cloning_candidate_p): New function.
6723         (ipcp_initialize_node_lattices): Use it.
6724         (ipcp_init_stage): Do only analyzis here; prettier debug output.
6725         (ipcp_propagate_stage): Prettier debug output.
6726         (ipcp_iterate_stage): Initialize latices here; prettier debug output.
6727         (ipcp_print_all_structures): Remove.
6728         (ipcp_need_redirect_p): Test !n_cloning_candidates.
6729         (ipcp_insert_stage): Prettier debug output; call
6730         cgraph_remove_unreachable_nodes before propagating.
6731         (pass_ipa_cp): Schedule function removal pass.
6732         * ipa-inline.c (inline_indirect_intraprocedural_analysis): Better
6733         debug output.
6734         (cgraph_maybe_hot_edge_p): Move to ...
6735         * predict.c (cgraph_maybe_hot_edge_p) ... here.
6736         * opts.c (flag_ipa_cp_set, flag_ipa_cp_clone_set): New.
6737         (common_handle_option): Set them; enable ipa-cp when profiling.
6738         * ipa-prop.c (ipa_print_node_jump_functions): Prettier output.
6739         (ipa_print_all_jump_functions): Likewise.
6740         (ipa_print_all_tree_maps, ipa_print_node_param_flags): Remove.
6741         (ipa_print_node_params, ipa_print_all_params): New.
6742         * ipa-prop.h (ipa_print_all_tree_maps, ipa_print_node_param_flags,
6743         ipa_print_all_param_flags): Remove.
6744         (ipa_print_node_params, ipa_print_all_params): New.
6745
6746 2008-08-29  Bob Wilson  <bob.wilson@acm.org>
6747
6748         * config/xtensa/xtensa.c (xtensa_secondary_reload_class): Revert
6749         change from 2008-04-03.
6750         * config/xtensa/xtensa.h (IRA_COVER_CLASSES): Define.
6751
6752 2008-08-29  Vladimir Makarov  <vmakarov@redhat.com>
6753
6754         PR rtl-opt/37251
6755         * ira-color.c (push_allocnos_to_stack): Truncate
6756         removed_splay_allocno_vec.
6757
6758 2008-08-29  Vladimir Makarov  <vmakarov@redhat.com>
6759
6760         PR rtl-opt/37243
6761         * ira-color (ira_fast_allocation): Don't assign hard registers to
6762         global allocnos.
6763
6764 2008-08-29  Jan Hubicka  <jh@suse.cz>
6765
6766         PR middle-end/37278
6767         * predict.c (optimize_loop_nest_for_speed_p): Do not ICE
6768         for cold internal loops.
6769
6770 2008-08-29  Richard Guenther  <rguenther@suse.de>
6771
6772         * tree-ssa-structalias.c (create_variable_info_for): Do not
6773         create fields for heap vars or vars with a noalias state.
6774         For NO_ALIAS_ANYTHING variables add a self-constraint, not one
6775         from ESCAPED.
6776
6777 2008-08-29  Richard Guenther  <rguenther@suse.de>
6778
6779         * common.opt (ftree-store-ccp): Mark as preserved for
6780         backward compatibility.
6781         * doc/invoke.texi (-ftree-store-ccp): Remove documentation.
6782         * tree-pass.h (pass_store_ccp): Remove.
6783         * tree-ssa-propagate.h (struct prop_value_d): Remove mem_ref field.
6784         (first_vdef): Remove declaration.
6785         (get_value_loaded_by): Likewise.
6786         * tree-ssa-ccp.c (do_store_ccp): Remove.
6787         (get_default_value): Simplify as do_store_ccp is always false
6788         now.  Do not initialize mem_ref.
6789         (set_value_varying): Likewise.
6790         (canonicalize_float_value): Likewise.
6791         (set_lattice_value): Likewise.
6792         (likely_value): Likewise.
6793         (surely_varying_stmt_p): Likewise.
6794         (ccp_initialize): Likewise.
6795         (ccp_lattice_meet): Likewise.
6796         (ccp_visit_phi_node): Likewise.
6797         (ccp_fold): Likewise.
6798         (evaluate_stmt): Likewise.
6799         (visit_assignment): Likewise.
6800         (ccp_visit_stmt): Likewise.
6801         (execute_ssa_ccp): Fold into ...
6802         (do_ssa_ccp): ... this.
6803         (do_ssa_store_ccp): Remove.
6804         (gate_store_ccp): Likewise.
6805         (pass_store_ccp): Likewise.
6806         * tree-ssa-copy.c (copy_prop_visit_phi_node): Do not
6807         initialize mem_ref.
6808         * tree-ssa-propagate.c (first_vdef): Remove.
6809         (get_value_loaded_by): Likewise.
6810         (replace_vuses_in): Likewise.
6811         (substitute_and_fold): Do not call replace_vuses_in.
6812         * opts.c (decode_options): Do not set flag_tree_store_ccp.
6813
6814 2008-08-29  Richard Guenther  <rguenther@suse.de>
6815
6816         PR middle-end/37236
6817         * tree-ssa-structalias.c (intra_create_variable_infos): Mark
6818         PARAM_NOALIAS tags with is_heapvar.
6819         * tree-ssa-operands.c (access_can_touch_variable): Offset
6820         based tests do not apply for heapvars.  Fix offset test.
6821
6822 2008-08-29  Jan Hubicka  <jh@suse.cz>
6823
6824         * doc/invoke.texi (-fipa-cp): Enabled by default at -O2/-Os/-O3
6825         (-fipa-cp-clone): Enabled by default at -O3.
6826         * opts.c (decode_options): Enable ipa-cp at -O2, ipa-cp-clone at -O3;
6827         make ipa-cp-clone to imply ipa-cp; disable cloning at -Os.
6828
6829 2008-08-29  Jan Hubicka  <jh@suse.cz>
6830
6831         * tree.c (build_function_type_skip_args,
6832         build_function_decl_skip_args): New functions.
6833         * tree.h (build_function_type_skip_args,
6834         build_function_decl_skip_args): Declare.
6835         * gimple.c (giple_copy_call_skip_args): New function.
6836         (giple_copy_call_skip_args): Declare.
6837
6838         * cgraph.h (cgraph_function_versioning): Add skip_args arugmnet
6839         * ipa-cp.c (ipcp_node_not_modifiable_p): Rename to ...
6840         (ipcp_node_modifiable_p): ... this one; use
6841         tree_versionable_function_p.
6842         (ipcp_create_replace_map): Improve debug output.
6843         (ipcp_need_redirect_p): Return false when not clonning.
6844         (ipcp_update_callgraph): Skip args.
6845         (ipcp_insert_stage): UPdate call of !ipcp_node_modifiable_p;
6846         skip args.
6847         * cgraphunit.c (cgraph_function_versioning): Add skip_args argument.
6848         (save_inline_function_body): Update call of tree_function_versioning.
6849         * ipa-prop.c (ipa_edge_removal_hook): Do not ICE on unanalyzed nodes.
6850         * tree-inline.c (copy_arguments_for_versioning): Add skip_args
6851         argument.
6852         (tree_function_versioning): Likewise.
6853         * tree-inline.h (tree_function_versioning): Update prototype.
6854
6855 2008-08-29  Jan Hubicka  <jh@suse.cz>
6856
6857         * loop-unswitch.c (unswitch_single_loop): Use
6858         optimize_loop_for_speed_p.
6859         * tree-ssa-threadupdate.c (mark_threaded_blocks):
6860         Use optimize_function_for_size_p.
6861         * tracer.c (ignore_bb_p): Use optimize_bb_for_size_p.
6862         * postreload-gcse.c (eliminate_partially_redundant_load):
6863         Use optimize_bb_for_size_p.
6864         * value-prof.c (gimple_divmod_fixed_value_transform,
6865         gimple_mod_pow2_value_transform, gimple_mod_subtract_transform,
6866         gimple_stringops_transform): Use optimize_bb_for_size_p.
6867         * ipa-cp.c (ipcp_insert_stage): Use optimize_function_for_size_p.
6868         * final.c (compute_alignments): Use optimize_function_for_size_p.
6869         * builtins.c (fold_builtin_cabs): Use optimize_function_for_speed_p.
6870         (fold_builtin_strcpy, fold_builtin_fputs): Use
6871         optimize_function_for_size_p.
6872         * fold-const.c (tree_swap_operands_p): Use
6873         optimize_function_for_size_p.
6874         * recog.c (relax_delay_slots): Likewise.
6875         * tree-ssa-math-opts.c (replace_reciprocal):
6876         Use optimize_bb_for_speed_p.
6877         (execute_cse_reciprocals): Use optimize_bb_for_size_p.
6878         * ipa-inline.c (cgraph_decide_recursive_inlining): Use
6879         optimize_function_for_size_p.
6880         (cgraph_decide_inlining_of_small_function): Use
6881         optimize_function_for_size_p.
6882         * global.c (find_reg): Use optimize_function_for_size_p.
6883         * opts.c (decode_options): Do not clear flag_tree_ch,
6884         flag_inline_functions, flag_unswitch_loops, flag_unroll_loops,
6885         flag_unroll_all_loops and flag_prefetch_loop_arrays. Those can
6886         work it out from profile.
6887         * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely): Use
6888         optimize_loop_for_speed_p.
6889         * predict.c (optimize_bb_for_size_p, optimize_bb_for_speed_p):
6890         Constify argument.
6891         (optimize_loop_nest_for_size_p, optimize_loop_nest_for_speed_p): New.
6892         * tree-parloops.c (parallelize_loops): Use optimize_loop_for_size_p.
6893         * tree-eh.c (decide_copy_try_finally): Use
6894         optimize_function_for_size_p.
6895         * local-alloc.c (block_alloc): Pass BB pointer.
6896         (find_free_reg): Add BB pointer, use optimize_bb_for_size_p.
6897         * gcse.c (gcse_main): Use optimize_function_for_size_p.
6898         * loop-unroll.c (decide_unrolling_and_peeling):
6899         Use optimize_loop_for_size_p.
6900         (decide_peel_completely): Likewise.
6901         * tree-vect-analyze.c (vect_mark_for_runtime_alias_test): Use
6902         optimize_loop_for_size_p.
6903         (vect_enhance_data_refs_alignment): Likewise.
6904         * tree-ssa-coalesce.c (coalesce_cost): Add optimize_for_size argument.
6905         (coalesce_cost_bb, coalesce_cost_edge, create_outofssa_var_map):
6906         Update call.
6907         * cfgcleanup.c (outgoing_edges_match): Use optimize_bb_for_speed_p.
6908         (try_crossjump_bb): Use optimize_bb_for_size_p.
6909         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Use
6910         optimize_loop_for_speed_p.
6911         * bb-reorder.c (find_traces_1_round): Likewise.
6912         (copy_bb): Use optimize_bb_for_speed_p.
6913         (duplicate_computed_gotos): Likewise.
6914         * basic-block.h (optimize_loop_nest_for_size_p,
6915         optimize_loop_nest_for_speed_p): New.
6916         * stmt.c (expand_case): Use optimize_insn_for_size_p.
6917
6918 2008-08-29  Tristan Gingold  <gingold@adacore.com>
6919
6920         * gcov.c (main): Call expandargv.
6921
6922 2008-08-29  Jan Hubicka  <jh@suse.cz>
6923
6924         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Check that loop
6925         is not cold.
6926         * predict.c (optimize_bb_for_size_p, optimize_bb_for_speed_p):
6927         Constify arguments.
6928         (optimize_loop_for_size_p, optimize_loop_for_speed_p): New functions.
6929         * basic-block.h (optimize_bb_for_size_p, optimize_bb_for_speed_p):
6930         Constify.
6931         (optimize_loop_for_size_p, optimize_loop_for_speed_p): Declare.
6932
6933 2008-08-29  Jan Hubicka  <jh@suse.cz>
6934
6935         * tree-pass.h (pass_strip_predict_hints): Declare.
6936         * predict.c (strip_builtin_expect): Rename to ...
6937         (strip_predict_hints): ... this one; strip also GIMPLE_PREDICT.
6938         (tree_bb_level_predictions): Do not remove GIMPLE_PREDICT.
6939         (tree_estimate_probability): Do not strip builtin_expect.
6940         (pass_strip_predict_hints): New pass.
6941         * tree-inline.c (expand_call_inline): When inlining cold function,
6942         predict it as unlikely.
6943         * passes.c (init_optimization_passes): Add pass_strip_predict_hints.
6944
6945 2008-08-29  Richard Guenther  <rguenther@suse.de>
6946
6947         PR tree-optimization/37207
6948         * tree-vrp.c (extract_range_from_binary_expr): Also try
6949         to constant fold if only one of the operands is a constant.
6950
6951 2008-08-29  Nick Clifton  <nickc@redhat.com>
6952
6953         * config/m32r/m32r.h (LEGITIMATE_CONSTANT_P): Treat LABEL_REFs in
6954         the same way as SYMBOL_REFs.
6955
6956 2008-08-28  Bob Wilson  <bob.wilson@acm.org>
6957
6958         * config/xtensa/xtensa.md (<u>mulsidi3): Use a temporary register.
6959
6960 2008-08-28  Adam Nemet  <anemet@caviumnetworks.com>
6961
6962         * config/mips/mips.h (ISA_HAS_BBIT): New macro.
6963         * config/mips/mips.md (branch_likely): Remove const.  Fix
6964         comment formatting.
6965         (define_delay for type "branch"): Change to only apply for branch
6966         with likely variant.
6967         (define_delay for type "branch" and "branch_likely" no).  New delay
6968         definition.
6969         (equality_op): New code iterator.
6970         (bbv, bbinv): New code attributes.
6971         (*branch_bit<bbv><mode>, *branch_bit<bbv><mode>_inverted): New
6972         patterns.
6973
6974 2008-08-28  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6975             Andrew Pinski  <pinskia@gcc.gnu.org>
6976
6977         PR 18050
6978         * c-common.c (verify_tree): Fix handling of ADDR_EXPR.
6979
6980 2008-08-28  Paolo Carlini  <paolo.carlini@oracle.com>
6981
6982         * gtrh-posix.h: Fix uses of _POSIX_TIMEOUTS per the normal Posix
6983         rule that a symbolic constant must be defined and >= 0 for the
6984         corresponding facility to be present at compile-time.
6985         * gthr-posix.c: Likewise.
6986
6987 2008-08-28  Adam Nemet  <anemet@caviumnetworks.com>
6988
6989         * config/mips/mips.h (ISA_HAS_DMUL3): New macro.
6990         * config/mips/mips.md (D): New mode attribute.
6991         (mulsi3, muldi3): Merge it into ...
6992         (mul<mode>3): ... new template.  Use _mul3 ending for 3-op patterns.
6993         (muldi3_mul3): New pattern.
6994         (mulsi3_mult3): Rename to mulsi3_mul3.
6995
6996 2008-08-28  Jan Hubicka  <jh@suse.cz>
6997
6998         * expmed.c (store_bit_field_1): Be prepared for movstrict expander
6999         to fail.
7000         * predict.c (always_optimize_for_size_p): Rename to ...
7001         (optimize_function_for_size): ... this one; make extern.
7002         (optimize_function_for_speed_p): New.
7003         (optimize_bb_for_size_p, optimize_bb_for_size_p,
7004         optimize_edge_for_size_p,optimize_edge_for_size_p,
7005         optimize_insn_for_size_p, optimize_insn_for_size_p): Update.
7006         * basic-block.h (optimize_function_for_size_p,
7007         optimize_function_for_speed_p): Declare.
7008         * i386.md (optimize_size checks): Replace them by appropriate
7009         predicate.
7010         (standard_80387_constant_p, ix86_compute_frame_layout,
7011         ix86_expand_epilogue, ix86_decompose_address,
7012         print_operand, emit_i387_cw_initialization,
7013         inline_memory_move_cost, ix86_pad_returns,
7014         ix86_reorg): Replace optimize_size checks.
7015
7016 2008-08-28  Richard Sandiford  <rdsandiford@googlemail.com>
7017
7018         * rtl.h (simplify_subreg_regno): Declare.
7019         * rtlanal.c (simplify_subreg_regno): New function, split out from...
7020         * simplify-rtx.c (simplify_subreg): ...here.
7021         * reload.c (find_reloads): Use simplify_subreg_regno instead of
7022         subreg_offset_representable_p.
7023
7024 2008-08-28  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7025
7026         PR c/30949
7027         * c-typeck.c (convert_for_assignment): Give a note describing what
7028         was passed and what was expected.
7029
7030 2008-08-28  Joey Ye  <joey.ye@intel.com>
7031
7032         * doc/extend.texi: Document AVX built-in functions.
7033         * doc/invoke.texi: Document -mavx.
7034
7035 2008-08-28  H.J. Lu  <hongjiu.lu@intel.com>
7036             Joey Ye  <joey.ye@intel.com>
7037             Xuepeng Guo  <xuepeng.guo@intel.com>
7038
7039         * config.gcc (extra_headers): Add gmmintrin.h for x86 and x86-64.
7040
7041         * config/i386/cpuid.h (bit_FMA): New.
7042         (bit_XSAVE): Likewise.
7043         (bit_OSXSAVE): Likewise.
7044         (bit_AVX): Likewise.
7045
7046         * config/i386/gas.h (ASM_OUTPUT_OPCODE): Undefine before
7047         define.  Use ASM_OUTPUT_AVX_PREFIX.
7048
7049         * config/i386/gmmintrin.h: New.
7050
7051         * config/i386/i386.c (x86_64_reg_class): Add X86_64_AVX_CLASS.
7052         (OPTION_MASK_ISA_AVX_SET): New.
7053         (OPTION_MASK_ISA_FMA_SET): Likewise.
7054         (OPTION_MASK_ISA_AVX_UNSET): Likewise.
7055         (OPTION_MASK_ISA_FMA_SET): Likewise.
7056         (OPTION_MASK_ISA_SSE4_2_UNSET): Updated.
7057         (ix86_handle_option): Handle OPT_mavx and OPT_mfma.
7058         (pta_flags): Add PTA_AVX and PTA_FMA.
7059         (override_options): Handle PTA_AVX and PTA_FMA.
7060         (init_cumulative_args): Handle warn_avx.
7061         (classify_argument): Return 0 for COImode and OImode.  Return
7062         1 and X86_64_AVX_CLASS for 256bit vector types.
7063         (examine_argument): Handle X86_64_AVX_CLASS.
7064         (construct_container): Likewise.
7065         (function_arg_advance_32): Pass OImode and 256bit vector types
7066         in AVX register.
7067         (function_arg_advance_64): Take a new argument to indicate if a
7068         parameter is named.  Handle 256bit vector types.  Return
7069         immediately for unnamed 256bit vector mode parameters.
7070         (function_arg_advance): Updated.
7071         (function_arg_32): Add comments for TImode.  Handle OImode
7072         and 256bit vector types.
7073         (function_arg_64): Take a new argument to indicate if a
7074         parameter is named.  Handle 256bit vector types.  Return NULL
7075         for unnamed 256bit vector mode parameters.
7076         (function_arg): Updated.
7077         (setup_incoming_varargs_64): Support
7078         AVX encoding for *sse_prologue_save_insn.
7079         (ix86_gimplify_va_arg): Handle 256bit vector mode parameters.
7080         (standard_sse_constant_p): Return -2 for all 1s if SSE2 isn't
7081         enabled.  For all 1s in 256bit vector modes, return 3 if AVX is
7082         enabled, otherwise return -3.
7083         (standard_sse_constant_opcode): Handle AVX and 256bit vector
7084         modes.
7085         (print_reg): Support AVX registers.  Handle 'x' and 't'.
7086         Handle 'd' to duplicate the operand.
7087         (print_operand): Likewise.  Also support AVX vector compare
7088         instructions.
7089         (output_387_binary_op): Support AVX.
7090         (output_fp_compare): Likewise.
7091         (ix86_expand_vector_move_misalign): Likewise.
7092         (ix86_attr_length_vex_default): New.
7093         (ix86_builtins): Add IX86_BUILTIN_ADDPD256,
7094         IX86_BUILTIN_ADDPS256, IX86_BUILTIN_ADDSUBPD256,
7095         IX86_BUILTIN_ADDSUBPS256, IX86_BUILTIN_ANDPD256,
7096         IX86_BUILTIN_ANDPS256, IX86_BUILTIN_ANDNPD256,
7097         IX86_BUILTIN_ANDNPS256, IX86_BUILTIN_BLENDPD256,
7098         IX86_BUILTIN_BLENDPS256, IX86_BUILTIN_BLENDVPD256,
7099         IX86_BUILTIN_BLENDVPS256, IX86_BUILTIN_DIVPD256,
7100         IX86_BUILTIN_DIVPS256, IX86_BUILTIN_DPPS256,
7101         IX86_BUILTIN_HADDPD256, IX86_BUILTIN_HADDPS256,
7102         IX86_BUILTIN_HSUBPD256, IX86_BUILTIN_HSUBPS256,
7103         IX86_BUILTIN_MAXPD256, IX86_BUILTIN_MAXPS256,
7104         IX86_BUILTIN_MINPD256, IX86_BUILTIN_MINPS256,
7105         IX86_BUILTIN_MULPD256, IX86_BUILTIN_MULPS256,
7106         IX86_BUILTIN_ORPD256, IX86_BUILTIN_ORPS256,
7107         IX86_BUILTIN_SHUFPD256, IX86_BUILTIN_SHUFPS256,
7108         IX86_BUILTIN_SUBPD256, IX86_BUILTIN_SUBPS256,
7109         IX86_BUILTIN_XORPD256, IX86_BUILTIN_XORPS256,
7110         IX86_BUILTIN_CMPSD, IX86_BUILTIN_CMPSS, IX86_BUILTIN_CMPPD,
7111         IX86_BUILTIN_CMPPS, IX86_BUILTIN_CMPPD256,
7112         IX86_BUILTIN_CMPPS256, IX86_BUILTIN_CVTDQ2PD256,
7113         IX86_BUILTIN_CVTDQ2PS256, IX86_BUILTIN_CVTPD2PS256,
7114         IX86_BUILTIN_CVTPS2DQ256, IX86_BUILTIN_CVTPS2PD256,
7115         IX86_BUILTIN_CVTTPD2DQ256, IX86_BUILTIN_CVTPD2DQ256,
7116         IX86_BUILTIN_CVTTPS2DQ256, IX86_BUILTIN_EXTRACTF128PD256,
7117         IX86_BUILTIN_EXTRACTF128PS256, IX86_BUILTIN_EXTRACTF128SI256,
7118         IX86_BUILTIN_VZEROALL, IX86_BUILTIN_VZEROUPPER,
7119         IX86_BUILTIN_VZEROUPPER_REX64, IX86_BUILTIN_VPERMILVARPD,
7120         IX86_BUILTIN_VPERMILVARPS, IX86_BUILTIN_VPERMILVARPD256,
7121         IX86_BUILTIN_VPERMILVARPS256, IX86_BUILTIN_VPERMILPD,
7122         IX86_BUILTIN_VPERMILPS, IX86_BUILTIN_VPERMILPD256,
7123         IX86_BUILTIN_VPERMILPS256, IX86_BUILTIN_VPERMIL2PD,
7124         IX86_BUILTIN_VPERMIL2PS, IX86_BUILTIN_VPERMIL2PD256,
7125         IX86_BUILTIN_VPERMIL2PS256, IX86_BUILTIN_VPERM2F128PD256,
7126         IX86_BUILTIN_VPERM2F128PS256, IX86_BUILTIN_VPERM2F128SI256,
7127         IX86_BUILTIN_VBROADCASTSS, IX86_BUILTIN_VBROADCASTSD256,
7128         IX86_BUILTIN_VBROADCASTSS256, IX86_BUILTIN_VBROADCASTPD256,
7129         IX86_BUILTIN_VBROADCASTPS256, IX86_BUILTIN_VINSERTF128PD256,
7130         IX86_BUILTIN_VINSERTF128PS256, IX86_BUILTIN_VINSERTF128SI256,
7131         IX86_BUILTIN_LOADUPD256, IX86_BUILTIN_LOADUPS256,
7132         IX86_BUILTIN_STOREUPD256, IX86_BUILTIN_STOREUPS256,
7133         IX86_BUILTIN_LDDQU256, IX86_BUILTIN_LOADDQU256,
7134         IX86_BUILTIN_STOREDQU256, IX86_BUILTIN_MASKLOADPD,
7135         IX86_BUILTIN_MASKLOADPS, IX86_BUILTIN_MASKSTOREPD,
7136         IX86_BUILTIN_MASKSTOREPS, IX86_BUILTIN_MASKLOADPD256,
7137         IX86_BUILTIN_MASKLOADPS256, IX86_BUILTIN_MASKSTOREPD256,
7138         IX86_BUILTIN_MASKSTOREPS256, IX86_BUILTIN_MOVSHDUP256,
7139         IX86_BUILTIN_MOVSLDUP256, IX86_BUILTIN_MOVDDUP256,
7140         IX86_BUILTIN_SQRTPD256, IX86_BUILTIN_SQRTPS256,
7141         IX86_BUILTIN_SQRTPS_NR256, IX86_BUILTIN_RSQRTPS256,
7142         IX86_BUILTIN_RSQRTPS_NR256, IX86_BUILTIN_RCPPS256,
7143         IX86_BUILTIN_ROUNDPD256, IX86_BUILTIN_ROUNDPS256,
7144         IX86_BUILTIN_UNPCKHPD256, IX86_BUILTIN_UNPCKLPD256,
7145         IX86_BUILTIN_UNPCKHPS256, IX86_BUILTIN_UNPCKLPS256,
7146         IX86_BUILTIN_SI256_SI, IX86_BUILTIN_PS256_PS,
7147         IX86_BUILTIN_PD256_PD, IX86_BUILTIN_SI_SI256,
7148         IX86_BUILTIN_PS_PS256, IX86_BUILTIN_PD_PD256,
7149         IX86_BUILTIN_VTESTZPD, IX86_BUILTIN_VTESTCPD,
7150         IX86_BUILTIN_VTESTNZCPD, IX86_BUILTIN_VTESTZPS,
7151         IX86_BUILTIN_VTESTCPS, IX86_BUILTIN_VTESTNZCPS,
7152         IX86_BUILTIN_VTESTZPD256, IX86_BUILTIN_VTESTCPD256,
7153         IX86_BUILTIN_VTESTNZCPD256, IX86_BUILTIN_VTESTZPS256,
7154         IX86_BUILTIN_VTESTCPS256, IX86_BUILTIN_VTESTNZCPS256,
7155         IX86_BUILTIN_PTESTZ256, IX86_BUILTIN_PTESTC256,
7156         IX86_BUILTIN_PTESTNZC256, IX86_BUILTIN_MOVMSKPD256
7157         and IX86_BUILTIN_MOVMSKPS256,
7158         (ix86_special_builtin_type): Add V32QI_FTYPE_PCCHAR,
7159         V8SF_FTYPE_PCV4SF, V8SF_FTYPE_PCFLOAT, V4DF_FTYPE_PCV2DF,
7160         V4DF_FTYPE_PCDOUBLE, V8SF_FTYPE_PCV8SF_V8SF,
7161         V4DF_FTYPE_PCV4DF_V4DF, V4SF_FTYPE_PCV4SF_V4SF,
7162         V2DF_FTYPE_PCV2DF_V2DF, VOID_FTYPE_PCHAR_V32QI,
7163         VOID_FTYPE_PFLOAT_V8SF, VOID_FTYPE_PDOUBLE_V4DF,
7164         VOID_FTYPE_PV8SF_V8SF_V8SF, VOID_FTYPE_PV4DF_V4DF_V4DF,
7165         VOID_FTYPE_PV4SF_V4SF_V4SF and VOID_FTYPE_PV2DF_V2DF_V2DF,
7166         (ix86_builtin_type): Add INT_FTYPE_V8SF_V8SF_PTEST,
7167         INT_FTYPE_V4DI_V4DI_PTEST, INT_FTYPE_V4DF_V4DF_PTEST,
7168         INT_FTYPE_V4SF_V4SF_PTEST, INT_FTYPE_V2DF_V2DF_PTEST,
7169         INT_FTYPE_V8SF, INT_FTYPE_V4DF, V8SI_FTYPE_V8SF, V8SI_FTYPE_V4SI,
7170         V8SF_FTYPE_V8SF, V8SF_FTYPE_V8SI, V8SF_FTYPE_V4SF,
7171         V4SI_FTYPE_V8SI, V4SI_FTYPE_V4DF, V4DF_FTYPE_V4DF,
7172         V4DF_FTYPE_V4SI, V4DF_FTYPE_V4SF, V4DF_FTYPE_V2DF,
7173         V4SF_FTYPE_V4DF, V4SF_FTYPE_V8SF, V2DF_FTYPE_V4DF,
7174         V8SF_FTYPE_V8SF_V8SF, V8SF_FTYPE_V8SF_V8SI,
7175         V4DF_FTYPE_V4DF_V4DF, V4DF_FTYPE_V4DF_V4DI,
7176         V4SF_FTYPE_V4SF_V4SI, V2DF_FTYPE_V2DF_V2DI,
7177         V8SF_FTYPE_V8SF_INT, V4SI_FTYPE_V8SI_INT, V4SF_FTYPE_V8SF_INT,
7178         V2DF_FTYPE_V4DF_INT, V4DF_FTYPE_V4DF_INT,
7179         V8SF_FTYPE_V8SF_V8SF_V8SF, V4DF_FTYPE_V4DF_V4DF_V4DF,
7180         V8SI_FTYPE_V8SI_V8SI_INT, V8SF_FTYPE_V8SF_V8SF_INT,
7181         V4DF_FTYPE_V4DF_V4DF_INT, V4DF_FTYPE_V4DF_V2DF_INT,
7182         V8SF_FTYPE_V8SF_V8SF_V8SI_INT, V4DF_FTYPE_V4DF_V4DF_V4DI_INT,
7183         V4SF_FTYPE_V4SF_V4SF_V4SI_INT and V2DF_FTYPE_V2DF_V2DF_V2DI_INT.
7184         (bdesc_special_args): Add IX86_BUILTIN_VZEROALL,
7185         IX86_BUILTIN_VZEROUPPER. IX86_BUILTIN_VZEROUPPER_REX64,
7186         IX86_BUILTIN_VBROADCASTSS, IX86_BUILTIN_VBROADCASTSD256,
7187         IX86_BUILTIN_VBROADCASTSS256, IX86_BUILTIN_VBROADCASTPD256,
7188         IX86_BUILTIN_VBROADCASTPS256, IX86_BUILTIN_LOADUPD256,
7189         IX86_BUILTIN_LOADUPS256, IX86_BUILTIN_STOREUPD256,
7190         IX86_BUILTIN_STOREUPS256, IX86_BUILTIN_LOADDQU256,
7191         IX86_BUILTIN_STOREDQU256, IX86_BUILTIN_LDDQU256,
7192         IX86_BUILTIN_MASKLOADPD, IX86_BUILTIN_MASKLOADPS,
7193         IX86_BUILTIN_MASKLOADPD256, IX86_BUILTIN_MASKLOADPS256,
7194         IX86_BUILTIN_MASKSTOREPD, IX86_BUILTIN_MASKSTOREPS,
7195         IX86_BUILTIN_MASKSTOREPD256 and IX86_BUILTIN_MASKSTOREPS256.
7196         (ix86_builtins): Add IX86_BUILTIN_ADDPD256,
7197         IX86_BUILTIN_ADDPS256, IX86_BUILTIN_ADDSUBPD256,
7198         IX86_BUILTIN_ADDSUBPS256, IX86_BUILTIN_ANDPD256,
7199         IX86_BUILTIN_ANDPS256, IX86_BUILTIN_ANDNPD256,
7200         IX86_BUILTIN_ANDNPS256, IX86_BUILTIN_DIVPD256,
7201         IX86_BUILTIN_DIVPS256, IX86_BUILTIN_HADDPD256,
7202         IX86_BUILTIN_HSUBPS256, IX86_BUILTIN_HSUBPD256,
7203         IX86_BUILTIN_HADDPS256, IX86_BUILTIN_MAXPD256,
7204         IX86_BUILTIN_MAXPS256, IX86_BUILTIN_MINPD256,
7205         IX86_BUILTIN_MINPS256, IX86_BUILTIN_MULPD256,
7206         IX86_BUILTIN_MULPS256, IX86_BUILTIN_ORPD256,
7207         IX86_BUILTIN_ORPS256, IX86_BUILTIN_SUBPD256,
7208         IX86_BUILTIN_SUBPS256, IX86_BUILTIN_XORPD256,
7209         IX86_BUILTIN_XORPS256, IX86_BUILTIN_VPERMILVARPD,
7210         IX86_BUILTIN_VPERMILVARPS, IX86_BUILTIN_VPERMILVARPD256,
7211         IX86_BUILTIN_VPERMILVARPS256, IX86_BUILTIN_BLENDPD256,
7212         IX86_BUILTIN_BLENDPS256, IX86_BUILTIN_BLENDVPD256,
7213         IX86_BUILTIN_BLENDVPS256, IX86_BUILTIN_DPPS256,
7214         IX86_BUILTIN_SHUFPD256, IX86_BUILTIN_SHUFPS256,
7215         IX86_BUILTIN_CMPSD, IX86_BUILTIN_CMPSS, IX86_BUILTIN_CMPPD,
7216         IX86_BUILTIN_CMPPS,
7217         IX86_BUILTIN_CMPPD256,IX86_BUILTIN_CMPPS256,
7218         IX86_BUILTIN_EXTRACTF128PD256, IX86_BUILTIN_EXTRACTF128PS256,
7219         IX86_BUILTIN_EXTRACTF128SI256, IX86_BUILTIN_CVTDQ2PD256,
7220         IX86_BUILTIN_CVTDQ2PS256, IX86_BUILTIN_CVTPD2PS256,
7221         IX86_BUILTIN_CVTPS2DQ256, IX86_BUILTIN_CVTPS2PD256,
7222         IX86_BUILTIN_CVTTPD2DQ256, IX86_BUILTIN_CVTPD2DQ256,
7223         IX86_BUILTIN_CVTTPS2DQ256, IX86_BUILTIN_VPERM2F128PD256,
7224         IX86_BUILTIN_VPERM2F128PS256, IX86_BUILTIN_VPERM2F128SI256,
7225         IX86_BUILTIN_VPERMILPD, IX86_BUILTIN_VPERMILPS,
7226         IX86_BUILTIN_VPERMILPD256, IX86_BUILTIN_VPERMILPS256,
7227         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMILPS,
7228         IX86_BUILTIN_VPERMILPD256, IX86_BUILTIN_VPERMILPS256,
7229         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMIL2PS,
7230         IX86_BUILTIN_VPERMIL2PD256, IX86_BUILTIN_VPERMIL2PS256,
7231         IX86_BUILTIN_VINSERTF128PD256, IX86_BUILTIN_VINSERTF128PS256,
7232         IX86_BUILTIN_VINSERTF128SI256, IX86_BUILTIN_MOVSHDUP256,
7233         IX86_BUILTIN_MOVSLDUP256, IX86_BUILTIN_MOVDDUP256,
7234         IX86_BUILTIN_SQRTPD256, IX86_BUILTIN_SQRTPS256,
7235         IX86_BUILTIN_SQRTPS_NR256, IX86_BUILTIN_RSQRTPS256,
7236         IX86_BUILTIN_RSQRTPS_NR256, IX86_BUILTIN_RCPPS256,
7237         IX86_BUILTIN_ROUNDPD256, IX86_BUILTIN_ROUNDPS256,
7238         IX86_BUILTIN_UNPCKHPD256, IX86_BUILTIN_UNPCKLPD256,
7239         IX86_BUILTIN_UNPCKHPS256, IX86_BUILTIN_UNPCKLPS256,
7240         IX86_BUILTIN_SI256_SI, IX86_BUILTIN_PS256_PS,
7241         IX86_BUILTIN_PD256_PD, IX86_BUILTIN_SI_SI256,
7242         IX86_BUILTIN_PS_PS256, IX86_BUILTIN_PD_PD256,
7243         IX86_BUILTIN_VTESTZPD, IX86_BUILTIN_VTESTCPD,
7244         IX86_BUILTIN_VTESTNZCPD, IX86_BUILTIN_VTESTZPS,
7245         IX86_BUILTIN_VTESTCPS, IX86_BUILTIN_VTESTNZCPS,
7246         IX86_BUILTIN_VTESTZPD256, IX86_BUILTIN_VTESTCPD256,
7247         IX86_BUILTIN_VTESTNZCPD256, IX86_BUILTIN_VTESTZPS256,
7248         IX86_BUILTIN_VTESTCPS256, IX86_BUILTIN_VTESTNZCPS256,
7249         IX86_BUILTIN_PTESTZ256, IX86_BUILTIN_PTESTC256,
7250         IX86_BUILTIN_PTESTNZC256, IX86_BUILTIN_MOVMSKPD256 and
7251         IX86_BUILTIN_MOVMSKPS256.
7252         (ix86_init_mmx_sse_builtins): Support AVX builtins.
7253         (ix86_expand_args_builtin): Likewise.
7254         (ix86_expand_special_args_builtin): Likewise.
7255         (ix86_hard_regno_mode_ok): Handle AVX modes.
7256         (ix86_expand_vector_init_duplicate): Likewise.
7257         (ix86_expand_vector_init_one_nonzero): Likewise.
7258         (ix86_expand_vector_init_one_var): Likewise.
7259         (ix86_expand_vector_init_concat): Likewise.
7260         (ix86_expand_vector_init_general): Likewise.
7261         (ix86_expand_vector_set): Likewise.
7262         (ix86_vector_mode_supported_p): Likewise.
7263         (x86_extended_reg_mentioned_p): Check INSN_P before using
7264         PATTERN.
7265
7266         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
7267         OPTION_MASK_ISA_AVX and OPTION_MASK_ISA_FMA.
7268
7269         * config/i386/i386.h (TARGET_AVX): New.
7270         (TARGET_FMA): Likewise.
7271         (TARGET_CPU_CPP_BUILTINS): Handle TARGET_AVX and TARGET_FMA.
7272         (BIGGEST_ALIGNMENT): Set to 256 for TARGET_AVX.
7273         (VALID_AVX256_REG_MODE): New.
7274         (AVX256_VEC_FLOAT_MODE_P): Likewise.
7275         (AVX_FLOAT_MODE_P): Likewise.
7276         (AVX128_VEC_FLOAT_MODE_P): Likewise.
7277         (AVX256_VEC_FLOAT_MODE_P): Likewise.
7278         (AVX_VEC_FLOAT_MODE_P): Likewise.
7279         (ASM_OUTPUT_AVX_PREFIX): Likewise.
7280         (ASM_OUTPUT_OPCODE): Likewise.
7281         (UNITS_PER_SIMD_WORD): Add a FIXME for 32byte vectorizer
7282         support.
7283         (SSE_REG_MODE_P): Allow 256bit vector modes.
7284         (ix86_args): Add a warn_avx field.
7285
7286         * config/i386/i386.md (UNSPEC_PCMP): New.
7287         (UNSPEC_VPERMIL): Likewise.
7288         (UNSPEC_VPERMIL2): Likewise.
7289         (UNSPEC_VPERMIL2F128): Likewise.
7290         (UNSPEC_MASKLOAD): Likewise.
7291         (UNSPEC_MASKSTORE): Likewise.
7292         (UNSPEC_CAST): Likewise.
7293         (UNSPEC_VTESTP): Likewise.
7294         (UNSPECV_VZEROALL): Likewise.
7295         (UNSPECV_VZEROUPPER): Likewise.
7296         (XMM0_REG): Likewise.
7297         (XMM1_REG): Likewise.
7298         (XMM2_REG): Likewise.
7299         (XMM3_REG): Likewise.
7300         (XMM4_REG): Likewise.
7301         (XMM5_REG): Likewise.
7302         (XMM6_REG): Likewise.
7303         (XMM8_REG): Likewise.
7304         (XMM9_REG): Likewise.
7305         (XMM10_REG): Likewise.
7306         (XMM11_REG): Likewise.
7307         (XMM12_REG): Likewise.
7308         (XMM13_REG): Likewise.
7309         (XMM14_REG): Likewise.
7310         (XMM15_REG): Likewise.
7311         (prefix): Likewise.
7312         (prefix_vex_imm8): Likewise.
7313         (prefix_vex_w): Likewise.
7314         (length_vex): Likewise.
7315         (maxmin): Likewise.
7316         (movoi): Likewise.
7317         (*avx_ashlti3): Likewise.
7318         (*avx_lshrti3): Likewise.
7319         (*avx_setcc<mode>): Likewise.
7320         (*fop_<mode>_comm_mixed_avx): Likewise.
7321         (*fop_<mode>_comm_avx): Likewise.
7322         (*fop_<mode>_1_mixed_avx): Likewise.
7323         (*fop_<mode>_1_avx): Likewise.
7324         (*avx_<code><mode>3): Likewise.
7325         (*avx_ieee_smin<mode>3): Likewise.
7326         (*avx_ieee_smax<mode>3): Likewise.
7327         (mode): Add OI, V8SF and V4DF.
7328         (length): Support VEX prefix.
7329         (*cmpfp_i_mixed): Set prefix attribute.
7330         (*cmpfp_i_sse): Likewise.
7331         (*cmpfp_iu_mixed): Likewise.
7332         (*cmpfp_iu_sse): Likewise.
7333         (*movsi_1): Support AVX.
7334         (*movdi_2): Likewise.
7335         (*movdi_1_rex64): Likewise.
7336         (*movti_internal): Likewise.
7337         (*movti_rex64): Likewise.
7338         (*movsf_1): Likewise.
7339         (*movdf_nointeger): Likewise.
7340         (*movdf_integer_rex64): Likewise.
7341         (*movtf_internal): Likewise.
7342         (zero_extendsidi2_32): Likewise.
7343         (zero_extendsidi2_rex64): Likewise.
7344         (*extendsfdf2_mixed): Likewise.
7345         (*extendsfdf2_sse): Likewise.
7346         (*truncdfsf_fast_mixed): Likewise.
7347         (*truncdfsf_fast_sse): Likewise.
7348         (*truncdfsf_mixed): Likewise.
7349         (fix_trunc<mode>di_sse): Likewise.
7350         (fix_trunc<mode>si_sse): Likewise.
7351         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit): Likewise.
7352         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit): Likewise.
7353         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit): Likewise.
7354         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Likewise.
7355         (*rcpsf2_sse): Likewise.
7356         (*rsqrtsf2_sse): Likewise.
7357         (*sqrt<mode>2_sse): Likewise.
7358         (sse4_1_round<mode>2): Likewise.
7359         (*sse_prologue_save_insn): Disallow REX prefix for AVX.
7360         Support AVX.  Set length attribute properly for AVX.
7361
7362         * config/i386/i386-modes.def (VECTOR_MODES (INT, 32)): New.
7363         (VECTOR_MODES (FLOAT, 32)): Likewise.
7364         (VECTOR_MODE (INT, DI, 8)): Likewise.
7365         (VECTOR_MODE (INT, HI, 32)): Likewise.
7366         (VECTOR_MODE (INT, QI, 64)): Likewise.
7367         (VECTOR_MODE (FLOAT, DF, 8)): Likewise.
7368         (VECTOR_MODE (FLOAT, SF, 16)): Likewise.
7369         (VECTOR_MODE (INT, DI, 4)): Removed.
7370         (VECTOR_MODE (INT, SI, 8)): Likewise.
7371         (VECTOR_MODE (INT, HI, 16)): Likewise.
7372         (VECTOR_MODE (INT, QI, 32)): Likewise.
7373         (VECTOR_MODE (FLOAT, SF, 8)): Likewise.
7374         (INT_MODE (OI, 32)): Likewise.
7375
7376         * config/i386/i386.opt (mavx): New.
7377         (mfma): Likewise.
7378
7379         * config/i386/i386-protos.h (ix86_attr_length_vex_default): New.
7380
7381         * config/i386/mmx.md (*mov<mode>_internal_rex64): Support AVX.
7382         (*mov<mode>_internal_avx): New.
7383         (*movv2sf_internal_rex64_avx): Likewise.
7384         (*movv2sf_internal_avx): Likewise.
7385
7386         * config/i386/predicates.md (const_4_to_5_operand): New.
7387         (const_6_to_7_operand): Likewise.
7388         (const_8_to_11_operand): Likewise.
7389         (const_12_to_15_operand): Likewise.
7390         (avx_comparison_float_operator): Likewise.
7391
7392         * config/i386/sse.md (AVX256MODEI): New.
7393         (AVX256MODE): Likewise.
7394         (AVXMODEQI): Likewise.
7395         (AVXMODE): Likewise.
7396         (AVX256MODEF2P): Likewise.
7397         (AVX256MODE2P): Likewise.
7398         (AVX256MODE4P): Likewise.
7399         (AVX256MODE8P): Likewise.
7400         (AVXMODEF2P): Likewise.
7401         (AVXMODEF4P): Likewise.
7402         (AVXMODEDCVTDQ2PS): Likewise.
7403         (AVXMODEDCVTPS2DQ): Likewise.
7404         (avxvecmode): Likewise.
7405         (avxvecpsmode): Likewise.
7406         (avxhalfvecmode): Likewise.
7407         (avxscalarmode): Likewise.
7408         (avxcvtvecmode): Likewise.
7409         (avxpermvecmode): Likewise.
7410         (avxmodesuffixf2c): Likewise.
7411         (avxmodesuffixp): Likewise.
7412         (avxmodesuffixs): Likewise.
7413         (avxmodesuffix): Likewise.
7414         (vpermilbits): Likewise.
7415         (pinsrbits): Likewise.
7416         (mov<mode>): Likewise.
7417         (*mov<mode>_internal): Likewise.
7418         (push<mode>1): Likewise.
7419         (movmisalign<mode>): Likewise.
7420         (avx_movup<avxmodesuffixf2c><avxmodesuffix>): Likewise.
7421         (avx_movdqu<avxmodesuffix>): Likewise.
7422         (avx_lddqu<avxmodesuffix>): Likewise.
7423         (<plusminus_insn><mode>3): Likewise.
7424         (*avx_<plusminus_insn><mode>3): Likewise.
7425         (*avx_vm<plusminus_insn><mode>3): Likewise.
7426         (mul<mode>3): Likewise.
7427         (*avx_mul<mode>3): Likewise.
7428         (*avx_vmmul<mode>3): Likewise.
7429         (divv8sf3): Likewise.
7430         (divv4df3): Likewise.
7431         (avx_div<mode>3): Likewise.
7432         (*avx_div<mode>3): Likewise.
7433         (*avx_vmdiv<mode>3): Likewise.
7434         (avx_rcpv8sf2): Likewise.
7435         (*avx_vmrcpv4sf2): Likewise.
7436         (sqrtv8sf2): Likewise.
7437         (avx_sqrtv8sf2): Likewise.
7438         (*avx_vmsqrt<mode>2): Likewise.
7439         (rsqrtv8sf2): Likewise.
7440         (avx_rsqrtv8sf2): Likewise.
7441         (*avx_vmrsqrtv4sf2): Likewise.
7442         (<code><mode>3): Likewise.
7443         (*avx_<code><mode>3_finite): Likewise.
7444         (*avx_<code><mode>3): Likewise.
7445         (*avx_vm<code><mode>3): Likewise.
7446         (*avx_ieee_smin<mode>3): Likewise.
7447         (*avx_ieee_smax<mode>3): Likewise.
7448         (avx_addsubv8sf3): Likewise.
7449         (avx_addsubv4df3): Likewise.
7450         (*avx_addsubv4sf3): Likewise.
7451         (*avx_addsubv2df3): Likewise.
7452         (avx_h<plusminus_insn>v4df3): Likewise.
7453         (avx_h<plusminus_insn>v8sf3): Likewise.
7454         (*avx_h<plusminus_insn>v4sf3): Likewise.
7455         (*avx_h<plusminus_insn>v2df3): Likewise.
7456         (avx_cmpp<avxmodesuffixf2c><mode>3): Likewise.
7457         (avx_cmps<ssemodesuffixf2c><mode>3): Likewise.
7458         (*avx_maskcmp<mode>3): Likewise.
7459         (avx_nand<mode>3): Likewise.
7460         (*avx_<code><mode>3): Likewise.
7461         (*avx_nand<mode>3): Likewise.
7462         (*avx_<code><mode>3): Likewise.
7463         (*avx_cvtsi2ss): Likewise.
7464         (*avx_cvtsi2ssq): Likewise.
7465         (*avx_cvtsi2sd): Likewise.
7466         (*avx_cvtsi2sdq): Likewise.
7467         (*avx_cvtsd2ss): Likewise.
7468         (avx_cvtss2sd): Likewise.
7469         (avx_cvtdq2ps<avxmodesuffix>): Likewise.
7470         (avx_cvtps2dq<avxmodesuffix>): Likewise.
7471         (avx_cvttps2dq<avxmodesuffix>): Likewise.
7472         (*avx_cvtsi2sd): Likewise.
7473         (*avx_cvtsi2sdq): Likewise.
7474         (avx_cvtdq2pd256): Likewise.
7475         (avx_cvtpd2dq256): Likewise.
7476         (avx_cvttpd2dq256): Likewise.
7477         (*avx_cvtsd2ss): Likewise.
7478         (*avx_cvtss2sd): Likewise.
7479         (avx_cvtpd2ps256): Likewise.
7480         (avx_cvtps2pd256): Likewise.
7481         (*avx_movhlps): Likewise.
7482         (*avx_movlhps): Likewise.
7483         (avx_unpckhps256): Likewise.
7484         (*avx_unpckhps): Likewise.
7485         (avx_unpcklps256): Likewise.
7486         (*avx_unpcklps): Likewise.
7487         (avx_movshdup256): Likewise.
7488         (avx_movsldup256): Likewise.
7489         (avx_shufps256): Likewise.
7490         (avx_shufps256_1): Likewise.
7491         (*avx_shufps_<mode>): Likewise.
7492         (*avx_loadhps): Likewise.
7493         (*avx_storelps): Likewise.
7494         (*avx_loadlps): Likewise.
7495         (*avx_movss): Likewise.
7496         (*vec_dupv4sf_avx): Likewise.
7497         (*vec_concatv2sf_avx): Likewise.
7498         (*vec_concatv4sf_avx): Likewise.
7499         (*vec_setv4sf_0_avx): Likewise.
7500         (*vec_setv4sf_avx): Likewise.
7501         (*avx_insertps): Likewise.
7502         (avx_vextractf128<mode>): Likewise.
7503         (vec_extract_lo_<mode>): Likewise.
7504         (vec_extract_hi_<mode>): Likewise.
7505         (vec_extract_lo_<mode>): Likewise.
7506         (vec_extract_hi_<mode>): Likewise.
7507         (vec_extract_lo_v16hi): Likewise.
7508         (vec_extract_hi_v16hi): Likewise.
7509         (vec_extract_lo_v32qi): Likewise.
7510         (vec_extract_hi_v32qi): Likewise.
7511         (avx_unpckhpd256): Likewise.
7512         (*avx_unpckhpd): Likewise.
7513         (avx_movddup256): Likewise.
7514         (*avx_movddup): Likewise.
7515         (avx_unpcklpd256): Likewise.
7516         (*avx_unpcklpd): Likewise.
7517         (avx_shufpd256): Likewise.
7518         (avx_shufpd256_1): Likewise.
7519         (*avx_punpckhqdq): Likewise.
7520         (*avx_punpcklqdq): Likewise.
7521         (*avx_shufpd_<mode>): Likewise.
7522         (*avx_storehpd): Likewise.
7523         (*avx_loadhpd): Likewise.
7524         (*avx_loadlpd): Likewise.
7525         (*avx_movsd): Likewise.
7526         (*vec_concatv2df_avx): Likewise.
7527         (*avx_<plusminus_insn><mode>3): Likewise.
7528         (*avx_<plusminus_insn><mode>3): Likewise.
7529         (*avx_mulv8hi3): Likewise.
7530         (*avxv8hi3_highpart): Likewise.
7531         (*avx_umulv8hi3_highpart): Likewise.
7532         (*avx_umulv2siv2di3): Likewise.
7533         (*avx_mulv2siv2di3): Likewise.
7534         (*avx_pmaddwd): Likewise.
7535         (*avx_mulv4si3): Likewise.
7536         (*avx_ashr<mode>3): Likewise.
7537         (*avx_lshr<mode>3): Likewise.
7538         (*avx_ashl<mode>3): Likewise.
7539         (*avx_<code><mode>3): Likewise.
7540         (*avx_eq<mode>3): Likewise.
7541         (*avx_gt<mode>3): Likewise.
7542         (*avx_nand<mode>3): Likewise.
7543         (*avx_nand<mode>3): Likewise.
7544         (*avx_<code><mode>3): Likewise.
7545         (*avx_<code><mode>3): Likewise.
7546         (*avx_packsswb): Likewise.
7547         (*avx_packssdw): Likewise.
7548         (*avx_packuswb): Likewise.
7549         (*avx_punpckhbw): Likewise.
7550         (*avx_punpcklbw): Likewise.
7551         (*avx_punpckhwd): Likewise.
7552         (*avx_punpcklwd): Likewise.
7553         (*avx_punpckhdq): Likewise.
7554         (*avx_punpckldq): Likewise.
7555         (*avx_pinsr<avxmodesuffixs>): Likewise.
7556         (*avx_pinsrq): Likewise.
7557         (*avx_loadld): Likewise.
7558         (*vec_extractv2di_1_rex64_avx): Likewise.
7559         (*vec_extractv2di_1_avx): Likewise.
7560         (*vec_dupv2di_avx): Likewise.
7561         (*vec_concatv2si_avx): Likewise.
7562         (*vec_concatv4si_1_avx): Likewise.
7563         (*vec_concatv2di_avx): Likewise.
7564         (*vec_concatv2di_rex64_avx): Likewise.
7565         (*avx_uavgv16qi3): Likewise.
7566         (*avx_uavgv8hi3): Likewise.
7567         (*avx_psadbw): Likewise.
7568         (avx_movmskp<avxmodesuffixf2c>256): Likewise.
7569         (*avx_phaddwv8hi3): Likewise.
7570         (*avx_phadddv4si3): Likewise.
7571         (*avx_phaddswv8hi3): Likewise.
7572         (*avx_phsubwv8hi3): Likewise.
7573         (*avx_phsubdv4si3): Likewise.
7574         (*avx_phsubswv8hi3): Likewise.
7575         (*avx_pmaddubsw128): Likewise.
7576         (*avx_pmulhrswv8hi3): Likewise.
7577         (*avx_pshufbv16qi3): Likewise.
7578         (*avx_psign<mode>3): Likewise.
7579         (*avx_palignrti): Likewise.
7580         (avx_blendp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
7581         (avx_blendvp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
7582         (avx_dpp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
7583         (*avx_mpsadbw): Likewise.
7584         (*avx_packusdw): Likewise.
7585         (*avx_pblendvb): Likewise.
7586         (*avx_pblendw): Likewise.
7587         (avx_vtestp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
7588         (avx_ptest256): Likewise.
7589         (avx_roundp<avxmodesuffixf2c>256): Likewise.
7590         (*avx_rounds<ssemodesuffixf2c>): Likewise.
7591         (*avx_aesenc): Likewise.
7592         (*avx_aesenclast): Likewise.
7593         (*avx_aesdec): Likewise.
7594         (*avx_aesdeclast): Likewise.
7595         (avx_vzeroupper): Likewise.
7596         (avx_vzeroupper_rex64): Likewise.
7597         (avx_vpermil<mode>): Likewise.
7598         (avx_vpermilvar<mode>3): Likewise.
7599         (avx_vpermil2<mode>3): Likewise.
7600         (avx_vperm2f128<mode>3): Likewise.
7601         (avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>): Likewise.
7602         (avx_vbroadcastss256): Likewise.
7603         (avx_vbroadcastf128_p<avxmodesuffixf2c>256): Likewise.
7604         (avx_vinsertf128<mode>): Likewise.
7605         (vec_set_lo_<mode>): Likewise.
7606         (vec_set_hi_<mode>): Likewise.
7607         (vec_set_lo_<mode>): Likewise.
7608         (vec_set_hi_<mode>): Likewise.
7609         (vec_set_lo_v16hi): Likewise.
7610         (vec_set_hi_v16hi): Likewise.
7611         (vec_set_lo_v32qi): Likewise.
7612         (vec_set_hi_v32qi): Likewise.
7613         (avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
7614         (avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>): Likewise.
7615         (avx_<avxmodesuffixp><avxmodesuffix>_<avxmodesuffixp>): Likewise.
7616         (avx_<avxmodesuffixp>_<avxmodesuffixp><avxmodesuffix>): Likewise.
7617         (vec_init<mode>): Likewise.
7618         (*vec_concat<mode>_avx): Likewise.
7619         (blendbits): Support V8SF and V4DF.
7620         (sse2_movq128): Support AVX.
7621         (<sse>_movnt<mode>): Likewise.
7622         (sse2_movntv2di): Likewise.
7623         (sse_rcpv4sf2): Likewise.
7624         (sse_sqrtv4sf2): Likewise.
7625         (sse_rsqrtv4sf2): Likewise.
7626         (<sse>_comi): Likewise.
7627         (<sse>_ucomi): Likewise.
7628         (sse_cvtss2si): Likewise.
7629         (sse_cvtss2si_2): Likewise.
7630         (sse_cvtss2siq): Likewise.
7631         (sse_cvtss2siq_2): Likewise.
7632         (sse_cvttss2si): Likewise.
7633         (sse_cvttss2siq): Likewise.
7634         (sse2_cvtsd2si): Likewise.
7635         (sse2_cvtsd2si_2): Likewise.
7636         (sse2_cvtsd2siq): Likewise.
7637         (sse2_cvtsd2siq_2): Likewise.
7638         (sse2_cvttsd2si): Likewise.
7639         (sse2_cvttsd2siq): Likewise.
7640         (sse2_cvtdq2pd): Likewise.
7641         (*sse2_cvtpd2dq): Likewise.
7642         (*sse2_cvttpd2dq): Likewise.
7643         (*sse2_cvtpd2ps): Likewise.
7644         (sse2_cvtps2pd): Likewise.
7645         (sse3_movshdup): Likewise.
7646         (sse3_movsldup): Likewise.
7647         (sse_storehps): Likewise.
7648         (*sse4_1_extractps): Likewise.
7649         (sse2_storelpd): Likewise.
7650         (vec_dupv2df_sse3): Likewise.
7651         (*vec_concatv2df_sse3): Likewise.
7652         (*sse4_1_pextrb): Likewise.
7653         (*sse4_1_pextrb_memory): Likewise.
7654         (*sse2_pextrw): Likewise.
7655         (*sse4_1_pextrw_memory): Likewise.
7656         (*sse4_1_pextrd): Likewise.
7657         (*sse4_1_pextrq): Likewise.
7658         (sse2_pshufd_1): Likewise.
7659         (sse2_pshuflw_1): Likewise.
7660         (sse2_pshufhw_1): Likewise.
7661         (*sse2_storeq_rex64): Likewise.
7662         (*vec_dupv4si): Likewise.
7663         (<sse>_movmskp<ssemodesuffixf2c>): Likewise.
7664         (sse2_pmovmskb): Likewise.
7665         (*sse2_maskmovdqu): Likewise.
7666         (*sse2_maskmovdqu_rex64): Likewise.
7667         (sse_ldmxcsr): Likewise.
7668         (sse_stmxcsr): Likewise.
7669         (abs<mode>2): Likewise.
7670         (sse4_1_movntdqa): Likewise.
7671         (sse4_1_phminposuw): Likewise.
7672         (sse4_1_extendv8qiv8hi2): Likewise.
7673         (*sse4_1_extendv8qiv8hi2): Likewise.
7674         (sse4_1_extendv4qiv4si2): Likewise.
7675         (*sse4_1_extendv4qiv4si2): Likewise.
7676         (sse4_1_extendv2qiv2di2): Likewise.
7677         (*sse4_1_extendv2qiv2di2): Likewise.
7678         (sse4_1_extendv4hiv4si2): Likewise.
7679         (*sse4_1_extendv4hiv4si2): Likewise.
7680         (sse4_1_extendv2hiv2di2): Likewise.
7681         (*sse4_1_extendv2hiv2di2): Likewise.
7682         (sse4_1_extendv2siv2di2): Likewise.
7683         (*sse4_1_extendv2siv2di2): Likewise.
7684         (sse4_1_zero_extendv8qiv8hi2): Likewise.
7685         (*sse4_1_zero_extendv8qiv8hi2): Likewise.
7686         (sse4_1_zero_extendv4qiv4si2): Likewise.
7687         (*sse4_1_zero_extendv4qiv4si2): Likewise.
7688         (sse4_1_zero_extendv2qiv2di2): Likewise.
7689         (*sse4_1_zero_extendv2qiv2di2): Likewise.
7690         (sse4_1_zero_extendv4hiv4si2): Likewise.
7691         (*sse4_1_zero_extendv4hiv4si2): Likewise.
7692         (sse4_1_zero_extendv2hiv2di2): Likewise.
7693         (*sse4_1_zero_extendv2hiv2di2): Likewise.
7694         (sse4_1_zero_extendv2siv2di2): Likewise.
7695         (*sse4_1_zero_extendv2siv2di2): Likewise.
7696         (sse4_1_ptest): Likewise.
7697         (sse4_1_roundp<ssemodesuffixf2c>): Likewise.
7698         (sse4_2_pcmpestri): Likewise.
7699         (sse4_2_pcmpestrm): Likewise.
7700         (sse4_2_pcmpistri): Likewise.
7701         (sse4_2_pcmpistrm): Likewise.
7702         (aesimc): Likewise.
7703         (aeskeygenassist): Likewise.
7704
7705 2008-08-28  Uros Bizjak  <ubizjak@gmail.com>
7706
7707         * config/i386/predicates.md (vzeroall_operation): New.
7708
7709         * config/i386/sse.md (avx_vzeroall): New.
7710         (*avx_vzeroall): Likewise.
7711
7712 2008-08-28  Paul Brook  <paul@codesourcery.com>
7713             Mark Shinwell  <shinwell@codesourcery.com>
7714             Richard Earnshaw  <richard.earnshaw@arm.com>
7715
7716         * config/arm/arm.c (TARGET_MAX_ANCHOR_OFFSET): New.
7717         (TARGET_MIN_ANCHOR_OFFSET): New.
7718         (arm_override_options): Set correct anchor ranges for Thumb-1
7719         and Thumb-2 if required.
7720         (legitimize_pic_address): Handle case involving a TLS symbol
7721         reference with an addend.
7722         (arm_optimization_options): Enable section anchors at -O1 and
7723         above.
7724         * config/arm/arm.h (OPTIMIZATION_OPTIONS): New.
7725         * config/arm/arm-protos.h (arm_optimization_options): New.
7726
7727 2008-08-28  Nick Clifton  <nickc@redhat.com>
7728
7729         * config/stormy16/stormy16.h (IRA_COVER_CLASSES): Define.
7730         * config/stormy16/stormy16.md (zero_extendqihi2): Fix length
7731         attribute.
7732
7733         * config/v850/v850.h (IRA_COVER_CLASSES): Define.
7734         * config/v850/v850.md (return): Remove frame size restriction.
7735
7736         * config/mcore/mcore.h (IRA_COVER_CLASSES): Define.
7737
7738         * config/iq2000/iq2000.h (IRA_COVER_CLASSES): Define.
7739
7740         * config/fr30/fr30.h (IRA_COVER_CLASSES): Define.
7741
7742         * config/m32r/m32r.h (IRA_COVER_CLASSES): Define.
7743
7744 2008-08-28  Paul Brook  <paul@codesourcery.com>
7745
7746         * config/arm/vfp11.md: Update license notice.
7747         * config/arm/cortex-r4.md: Ditto.
7748
7749 2008-08-28  Richard Guenther  <rguenther@suse.de>
7750
7751         PR tree-optimization/37207
7752         * tree-ssa-ifcombine.c (recognize_single_bit_test): Fix
7753         tuplification bug.
7754
7755 2008-08-28  Dodji Seketeli  <dodji@redhat.com>
7756
7757         PR c++/36741
7758         * tree.c (int_fits_type_p): Don't forget unsigned integers
7759           of type sizetype which higher end word equals -1.
7760
7761 2008-08-28  Ira Rosen  <irar@il.ibm.com>
7762
7763         * target.h (struct vectorize): Add new target builtin.
7764         * tree-vectorizer.c (destroy_loop_vec_info): Call
7765         vect_free_slp_instance instead of vect_free_slp_node.
7766         * tree-vectorizer.h (enum slp_load_perm_type): New.
7767         (struct _slp_instance): Add new fields.
7768         (SLP_INSTANCE_LOAD_PERMUTATION): New.
7769         (SLP_INSTANCE_LOADS): New.
7770         (vect_free_slp_tree): Remove.
7771         (vect_free_slp_instance): Declare.
7772         (SLP_TREE_LOADS_PERM_TYPE, TARG_VEC_PERMUTE_COST): New.
7773         (vectorizable_load): Add argument.
7774         (vect_transform_slp_perm_load): New.
7775         * tree-vect-analyze.c (vect_analyze_operations): Add an argument to
7776         vectorizable_load.
7777         (vect_get_place_in_interleaving_chain): New function.
7778         (vect_free_slp_tree): Make static.
7779         (vect_free_slp_instance): New function.
7780         (vect_build_slp_tree): Add new arguments. Allow load permutations and
7781         collect the load location in the interleaving chain.
7782         (vect_supported_slp_permutation_p): New function.
7783         (vect_supported_load_permutation_p): Likewise.
7784         (vect_analyze_slp_instance): In case of loads permutation, call
7785         vect_supported_load_permutation_p to check that the permutation is
7786         supported.
7787         * target-def.h (TARGET_VECTORIZE_BUILTIN_VEC_PERM): New.
7788         * tree-vect-transform.c (vect_transform_stmt): Add new argument.
7789         (vect_create_mask_and_perm): New function.
7790         (vect_get_mask_element, vect_transform_slp_perm_load): Likewise.
7791         (vectorizable_load): Add an argument. Don't keep the created vectors
7792         statements in the node if permutation is required. Call
7793         vect_transform_slp_perm_load to generate the permutation.
7794         (vect_transform_stmt): Add new argument. Call vectorizable_load with
7795         additional argument.
7796         (vect_schedule_slp_instance): In case of loads permutation, allocate
7797         vectorized statements structure for all the related SLP nodes. Call
7798         vect_transform_stmt with addditional argument.
7799         (vect_transform_loop): Call vect_transform_stmt with correct arguments.
7800         * config/spu/spu.c (spu_builtin_vec_perm): New.
7801         (TARGET_VECTORIZE_BUILTIN_VEC_PERM): Redefine.
7802         * config/spu/spu.h (TARG_VEC_PERMUTE_COS): Define.
7803         * config/rs6000/rs6000.c (rs6000_builtin_vec_perm): New.
7804         (TARGET_VECTORIZE_BUILTIN_VEC_PERM): Redefine.
7805
7806 2008-08-28  Chris Fairles  <chris.fairles@gmail.com>
7807
7808         * gthr-posix.h (__gthread_create,  __gthread_join, __gthread_detach,
7809         __gthread_mutex_timed_lock, __gthread_recursive_mutex_timed_lock,
7810         __gthread_cond_signal, __gthread_cond_timedwait,
7811         __gthread_cond_timedwait_recursive): New functions.
7812         * gthr-posix.c (pthread_mutex_timedlock, pthread_cond_timedwait):
7813         Likewise.
7814         * gthr.h: Comment on defining __GTHREADS_CXX0X macro in conforming
7815         thread interfaces.
7816
7817 2008-08-28  Richard Guenther  <rguenther@suse.de>
7818
7819         PR middle-end/37005
7820         * fold-const.c (maybe_canonicalize_comparison_1): Require
7821         undefined overflow only for canonicalizing A +- CST cmp CST.
7822         Make sure to not generate new constants that are not inside
7823         their TYPE_MIN/MAX_VALUE range.
7824         (maybe_canonicalize_comparison): Remove undefined overflow
7825         checking from here.
7826         (fold_binary): Remove now duplicate folding.
7827
7828 2008-08-27  Paolo Carlini  <paolo.carlini@oracle.com>
7829
7830         * c-typeck.c (convert_for_assignment): Adjust WARN_FOR_ASSIGNMENT
7831         use not updated in the last change.
7832
7833 2008-08-27  Kaz Kojima  <kkojima@gcc.gnu.org>
7834
7835         * config/sh/sh.h (REG_CLASS_CONTENTS): Drop fr32 from FPUL_REGS.
7836         (IRA_COVER_CLASSES): Add FPUL_REGS.
7837
7838 2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7839
7840         PR 37217
7841         * c-common.c (conversion_warning): Check for null operands.
7842
7843 2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7844
7845         PR c/31673
7846         * c-decl.c (check_for_loop_decls): Improve error message. Give
7847         hint.
7848
7849 2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7850
7851         PR c/37186
7852         * c-typeck.c (WARN_FOR_ASSIGNMENT): Add OPT parameter.
7853         (convert_for_assignment): Pass corrent OPT_W* parameter to
7854         WARN_FOR_ASSIGNMENT.
7855
7856 2008-08-27  Paolo Carlini  <paolo.carlini@oracle.com>
7857
7858         PR c++/35321
7859         * c-common.c (fold_offsetof_1): Handle TARGET_EXPR like CALL_EXPR.
7860
7861 2008-08-27  Paul Brook  <paul@codesourcery.com>
7862
7863         * config.gcc: Loosen checks for arm uclinux eabi targets.
7864
7865 2008-08-27  Paul Brook  <paul@codesourcery.com>
7866
7867         * config/arm/t-arm-coff (LIB1ASMFUNCS): Add missing undescrore on
7868         _clzsi2.
7869         * config/arm/t-linux (LIB1ASMFUNCS): Ditto.
7870
7871 2008-08-26  Douglas Gregor  <doug.gregor@gmail.com>
7872
7873         * c-common.c (do_switch_warnings): Look through the CONST_DECLs in
7874         the enumerators of an ENUMERAL_TYPE.
7875         * dbxout.c (dbxout_type): Ditto.
7876
7877 2008-08-26  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7878
7879         PR rtl-opt/37219
7880         * fwprop.c (fwprop): Check that the loop_father is the outer loop.
7881         (fwprop_addr): Check that the loop_father is not the outer loop.
7882
7883 2008-08-26  Paul Brook  <paul@codesourcery.com>
7884
7885         * config/arm/vfp.md: Document fmul{s,d} and fmac{s,d} types.
7886         Remove documentation entry for fmul type.
7887         Use fmuls to annotate single-precision multiplication patterns,
7888         fmuld to annotate double-precision multiplication patterns,
7889         fmacs to annotate single-precision multiply-accumulate patterns
7890         and fmacd to annotate double-precision multiply-accumulate patterns.
7891         * config/arm/vfp11.md: Update reservations accordingly.
7892         * config/arm/arm.md: Note that certain values of the "type"
7893         attribute are documented in vfp.md.
7894         * config/arm/arm1020e.md: Remove out of date duplicate comment.
7895         (v10_cvt): Use new fmul types.
7896
7897 2008-08-26  Paul Brook  <paul@codesourcery.com>
7898
7899         * config/arm/vfp.md: Move pipeline description for VFP11 to...
7900         * config/arm/vfp11.md: ...here.  New.
7901         * config/arm/arm.md: Include vfp11.md.
7902
7903 2008-08-26  Hans-Peter Nilsson  <hp@axis.com>
7904
7905         * opts.c (decode_options) [!IRA_COVER_CLASSES]: Add missing
7906         parameter to inform call.
7907
7908 2008-08-26  Jeff Law  <law@redhat.com>
7909
7910         * mn10300.md (movqi, movhi): Split i->d*a case into two cases to
7911         avoid the possibility of getting DATA_OR_ADDRESS_REGS as the
7912         preferred class when copying a constant into a partial word register.
7913
7914 2008-08-26  Ben Elliston  <bje@au.ibm.com>
7915
7916         * rtlanal.c: Fix uses of "it's" with "its" where appropriate.
7917         * cp/typeck.c: Likewise.
7918         * cp/tree.c: Likewise.
7919         * gimple-low.c: Likewise.
7920         * jump.c: Likewise.
7921
7922 2008-08-26  Vladimir Makarov  <vmakarov@redhat.com>
7923
7924         * ira-build.c, ira-color.c, ira-costs.c, ira.h, ira-lives.c,
7925         ira.c, ira-conflicts.c, ira-emit.c, ira-int.h: New files.
7926
7927         * doc/passes.texi: Describe IRA.
7928
7929         * doc/tm.texi (IRA_COVER_CLASSES,
7930         IRA_HARD_REGNO_ADD_COST_MULTIPLIER): Describe the new macros.
7931
7932         * doc/invoke.texi (ira-max-loops-num): Describe the new parameter.
7933         (-fira, -fira-algorithm, -fira-coalesce, -fno-ira-move-spills,
7934         -fira-propagate-cost, -fno-ira-share-save-slots,
7935         -fno-ira-share-spill-slots, -fira-verbose): Describe new options.
7936
7937         * flags.h (ira_algorithm): New enumeration.
7938         (flag_ira_algorithm, flag_ira_verbose): New external variable
7939         declarations.
7940
7941         * postreload.c (gate_handle_postreload): Don't do post reload
7942         optimizations unless the reload is completed.
7943
7944         * reload.c (push_reload, find_dummy_reload): Use DF_LR_OUT for
7945         IRA.
7946
7947         * tree-pass.h (pass_ira): New external variable declaration.
7948
7949         * reload.h: Add 2008 to the Copyright.
7950
7951         * cfgloopanal.c: Include params.h.
7952         (estimate_reg_pressure_cost): Decrease cost for IRA optimization
7953         mode.
7954
7955         * params.h (IRA_MAX_LOOPS_NUM): New macro.
7956
7957         * toplev.c (ira.h): New include.
7958         (flag_ira_algorithm, flag_ira_verbose): New external variables.
7959         (backend_init_target): Call ira_init.
7960         (backend_init): Call ira_init_once.
7961         (finalize): Call finish_ira_once.
7962
7963         * toplev.h (flag_ira, flag_ira_coalesce, flag_ira_move_spills,
7964         flag_ira_share_save_slots, flag_ira_share_spill_slots): New
7965         external variables.
7966
7967         * regs.h (contains_reg_of_mode, move_cost, may_move_in_cost,
7968         may_move_out_cost): New external variable declarations.
7969         (move_table): New typedef.
7970
7971         * caller-save.c: Include headers output.h and ira.h.
7972         (no_caller_save_reg_set): New global variable.
7973         (save_slots_num, save_slots): New variables.
7974         (reg_save_code, reg_restore_code, add_stored_regs): Add
7975         prototypes.
7976         (init_caller_save): Set up no_caller_save_reg_set.
7977         (init_save_areas): Reset save_slots_num.
7978         (saved_hard_reg): New structure.
7979         (hard_reg_map, saved_regs_num, all_saved_regs): New variables.
7980         (initiate_saved_hard_regs, new_saved_hard_reg,
7981         finish_saved_hard_regs, saved_hard_reg_compare_func): New
7982         functions.
7983         (setup_save_areas): Add code for sharing stack slots.
7984         (all_blocks): New variable.
7985         (save_call_clobbered_regs): Process pseudo-register too.
7986         (mark_set_regs): Process pseudo-register too.
7987         (insert_one_insn): Put the insn after bb note in a empty basic
7988         block.  Add insn check.
7989
7990         * global.c (eliminable_regset): Make it external.
7991         (mark_elimination): Use DF_LR_IN for IRA.
7992         (pseudo_for_reload_consideration_p): New.
7993         (build_insn_chain): Make it external.  Don't ignore spilled
7994         pseudos for IRA.  Use pseudo_for_reload_consideration_p.
7995         (gate_handle_global_alloc): New function.
7996         (pass_global_alloc): Add the gate function.
7997
7998         * opts.c (decode_options): Set up flag_ira.  Print the warning for
7999         -fira.
8000         (common_handle_option): Process -fira-algorithm and -fira-verbose.
8001
8002         * timevar.def (TV_IRA, TV_RELOAD): New passes.
8003
8004         * regmove.c (regmove_optimize): Don't do replacement of output for
8005         IRA.
8006
8007         * hard-reg-set.h (no_caller_save_reg_set, reg_class_subclasses):
8008         New external variable declarations.
8009
8010         * local-alloc.c (update_equiv_regs): Make it external.  Return
8011         true if jump label rebuilding should be done.  Rescan new_insn for
8012         notes.
8013         (gate_handle_local_alloc): New function.
8014         (pass_local_alloc): Add the gate function.
8015
8016         * alias.c (value_addr_p, stack_addr_p): New functions.
8017         (nonoverlapping_memrefs_p): Use them for IRA.
8018
8019         * common.opt (fira, fira-algorithm, fira-coalesce,
8020         fira-move-spills, fira-share-save-slots, fira-share-spill-slots,
8021         fira-verbose): New options.
8022
8023         * regclass.c (reg_class_subclasses, contains_reg_of_mode,
8024         move_cost, may_move_in_cost, may_move_out_cost): Make the
8025         variables external.
8026         (move_table): Remove typedef.
8027         (init_move_cost): Make it external.
8028         (allocate_reg_info, resize_reg_info, setup_reg_classes): New
8029         functions.
8030
8031         * rtl.h (init_move_cost, allocate_reg_info, resize_reg_info,
8032         setup_reg_classes): New function prototypes.
8033         (eliminable_regset): New external variable declaration.
8034         (build_insn_chain, update_equiv_regs): New function prototypes.
8035
8036         * Makefile.in (IRA_INT_H): New definition.
8037         (OBJS-common): Add ira.o, ira-build.o, ira-costs.o,
8038         ira-conflicts.o, ira-color.o, ira-emit.o, and ira-lives.o.
8039         (reload1.o, toplev.o): Add dependence on ira.h.
8040         (cfgloopanal.o): Add PARAMS_H.
8041         (caller-save.o): Add dependence on output.h and ira.h.
8042         (ira.o, ira-build.o, ira-costs.o, ira-conflicts.o, ira-color.o,
8043         ira-emit.o, ira-lives.o): New entries.
8044
8045         * passes.c (pass_ira): New pass.
8046
8047         * params.def (PARAM_IRA_MAX_LOOPS_NUM): New parameter.
8048
8049         * reload1.c (ira.h): Include the header.
8050         (changed_allocation_pseudos): New bitmap.
8051         (init_reload): Initiate the bitmap.
8052         (compute_use_by_pseudos): Permits spilled registers in FROM.
8053         (temp_pseudo_reg_arr): New variable.
8054         (reload): Allocate and free temp_pseudo_reg_arr.  Sort pseudos for
8055         IRA.  Call alter_reg with the additional parameter.  Don't clear
8056         spilled_pseudos for IRA.  Restore original insn chain for IRA.
8057         Clear changed_allocation_pseudos at the end of reload.
8058         (calculate_needs_all_insns): Call IRA's mark_memory_move_deletion.
8059         (hard_regno_to_pseudo_regno): New variable.
8060         (count_pseudo): Check spilled pseudos.  Set up
8061         hard_regno_to_pseudo_regno.
8062         (count_spilled_pseudo): Check spilled pseudos. Update
8063         hard_regno_to_pseudo_regno.
8064         (find_reg): Use better_spill_reload_regno_p.  Check
8065         hard_regno_to_pseudo_regno.
8066         (alter_reg): Set up spilled_pseudos.  Add a new parameter.  Add
8067         code for IRA.
8068         (eliminate_regs_1): Use additional parameter for alter_reg.
8069         (finish_spills): Set up pseudo_previous_regs only for spilled
8070         pseudos.  Call reassign_pseudos once for all spilled pseudos, pass
8071         more arguments.  Don't clear live_throughout and dead_or_set for
8072         spilled pseudos.  Use additional parameter for alter_reg.  Call
8073         mark_allocation_change.  Set up changed_allocation_pseudos.
8074         Remove sanity check.
8075         (emit_input_reload_insns, delete_output_reload): Use additional
8076         parameter for alter_reg.  Call mark_allocation_change.
8077         (substitute, gen_reload_chain_without_interm_reg_p): New
8078         functions.
8079         (reloads_conflict): Use gen_reload_chain_without_interm_reg_p.
8080
8081         * testsuite/gcc.dg/20080410-1.c: New file.
8082
8083         * config/s390/s390.h (IRA_COVER_CLASSES,
8084         IRA_HARD_REGNO_ADD_COST_MULTIPLIER): Define.
8085
8086         * config/sparc/sparc.h (IRA_COVER_CLASSES): New macro.
8087
8088         * config/i386/i386.h (IRA_COVER_CLASSES): Ditto.
8089
8090         * config/ia64/ia64.h (IRA_COVER_CLASSES): Ditto.
8091
8092         * config/rs6000/rs6000.h (IRA_COVER_CLASSES): Ditto.
8093
8094         * config/arm/arm.h (IRA_COVER_CLASSES): Ditto.
8095
8096         * config/alpha/alpha.h (IRA_COVER_CLASSES): Ditto.
8097
8098         2008-08-24  Jeff Law  <law@redhat.com>
8099         * ira.c (setup_reg_class_intersect_union): Prefer smallest class
8100         when ignoring unavailable registers.
8101
8102         2008-08-24  Jeff Law  <law@redhat.com>
8103         * ira-color.c (coalesced_pseudo_reg_slot_compare): Check
8104         FRAME_GROWS_DOWNWARD and STACK_GROWS_DOWNWARD.
8105         * ira.c (setup_eliminable_regset): Check stack_realign_needed.
8106         * config/mn10300/mn10300.h (IRA_COVER_CLASSES): New macro.
8107
8108         2008-06-03 Steve Chamberlain <steve.chamberlain@gmail.com>
8109         * ira-build.c (allocno_range_compare_func): Stabilize sort.
8110
8111         2008-05-29 Andy Hutchinson <hutchinsonandy@aim.com>
8112         * config/avr/avr.h (IRA_COVER_CLASSES): New macro.
8113         * reload1.c (find_reg): Process registers in register allocation order.
8114
8115         2008-05-10 Richard Sandiford <rsandifo@nildram.co.uk>
8116         * toplev.c (backend_init_target): Move ira_init call from
8117         here...
8118         (lang_dependent_init_target): ...to here.
8119
8120         2008-05-10 Richard Sandiford <rsandifo@nildram.co.uk>
8121         * ira.c (setup_class_subset_and_memory_move_costs): Don't
8122         calculate memory move costs for NO_REGS.
8123
8124         2008-05-05 Kaz Kojima <kkojima@gcc.gnu.org>
8125         * ira-color.c (ira_fast_allocation): Use no_stack_reg_p only if
8126         STACK_REGS is defined.
8127
8128         2008-04-08 Andrew Pinski <andrew_pinski@playstation.sony.com>
8129         * config/spu/spu.h (IRA_COVER_CLASSES): New macro.
8130
8131         2008-04-04 Bernd Schmidt <bernd.schmidt@analog.com>
8132         * config/bfin/bfin.h (IRA_COVER_CLASSES): New macro.
8133
8134         2008-04-04 Kaz Kojima <kkojima@gcc.gnu.org>
8135         * config/sh/sh.h (IRA_COVER_CLASSES): Define.
8136         * config/sh/sh.md (movsicc_true+3): Check if emit returns a
8137         barrier.
8138
8139 2008-08-26  Victor Kaplansky  <victork@il.ibm.com>
8140             Dorit Nuzman  <dorit@il.ibm.com>
8141
8142         * gcc/config/spu/spu.md (vec_extract_evenv4si,
8143         vec_extract_evenv4sf, vec_extract_evenv8hi,
8144         vec_extract_evenv16qi, vec_extract_oddv4si,
8145         vec_extract_oddv4sf, vec_extract_oddv8hi, vec_extract_oddv16qi,
8146         vec_interleave_highv4sf, vec_interleave_lowv4sf,
8147         vec_interleave_highv4si, vec_interleave_lowv4si,
8148         vec_interleave_highv8hi, vec_interleave_lowv8hi,
8149         vec_interleave_highv16qi, vec_interleave_lowv16qi,
8150         vec_pack_trunc_v8hi, vec_pack_trunc_v4si): Implement.S
8151
8152 2008-08-25  Janis Johnson  <janis187@us.ibm.com>
8153
8154         PR target/36756
8155         * config/rs6000/rs6000.c (optimization_options): Don't default to
8156         section anchors without toplevel reorder.
8157
8158 2008-08-25  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
8159
8160         * config/spu/spu_mfcio.h (mfc_begin_critical_section): New function.
8161         (mfc_end_critical_section): Likewise.
8162
8163 2008-08-25  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
8164
8165         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Propagate
8166         all type qualifiers from element type to vector type.
8167
8168 2008-08-25  David Daney  <ddaney@avtrex.com>
8169
8170         * config/mips/mips.md (immediate_insn): Move up in file, fix
8171         comment typo, reformat.
8172         (fetchop_bit, atomic_hiqi_op memory_barrier,
8173         sync_compare_and_swap<mode>, compare_and_swap_12, sync_add<mode>,
8174         sync_<optab><mode>, sync_<optab>_12, sync_old_<optab><mode>,
8175         sync_old_<optab>_12, sync_new_<optab><mode>, sync_new_<optab>_12,
8176         sync_nand<mode>, sync_nand_12, sync_old_nand<mode>,
8177         sync_old_nand_12, sync_new_nand<mode>, sync_new_nand_12,
8178         sync_sub<mode>, sync_old_add<mode>, sync_old_sub<mode>,
8179         sync_new_add<mode>, sync_new_sub<mode>, sync_<optab><mode>,
8180         sync_old_<optab><mode>, sync_new_<optab><mode>, sync_nand<mode>,
8181         sync_old_nand<mode>, sync_new_nand<mode>,
8182         sync_lock_test_and_set<mode>, sync_lock_test_and_set<mode>,
8183         test_and_set_12): Moved to sync.md.
8184         (sync.md): Include.
8185         * config/mips/sync.md: New file.
8186
8187 2008-08-25  Richard Henderson  <rth@redhat.com>
8188
8189         * dwarf2out.c (def_cfa_1): Don't scale by DWARF_CIE_DATA_ALIGNMENT.
8190         (regsave): Likewise.
8191         (lookup_cfa_1): Don't rescale by DWARF_CIE_DATA_ALIGNMENT.
8192         (output_cfi_directive): Likewise.
8193         (div_data_align): New.
8194         (output_cfi): Use it.
8195
8196 2008-08-24  Adam Nemet  <anemet@caviumnetworks.com>
8197
8198         * config.gcc (mips64*-*-linux*): Handle mips64octeon*-*-linux*.
8199         * config/mips/mips.h (enum processor_type): Add PROCESSOR_OCTEON.
8200         (TARGET_OCTEON): New macro.
8201         (TARGET_CPU_CPP_BUILTINS): Define __OCTEON__ for Octeon.
8202         (MIPS_ISA_LEVEL_SPEC, MIPS_ARCH_FLOAT_SPEC): Handle -march=octeon.
8203         (ISA_HAS_POP): New macro.
8204         * config/mips/driver-native.c (host_detect_local_cpu): Handle
8205         Octeon.
8206         * config/mips/mips.c (mips_cpu_info_table, mips_rtx_cost_data):
8207         Handle Octeon.
8208         * config/mips/mips.md (cpu): Add octeon.
8209         (type): Add pop attribute value.
8210         (popcount<mode>2): New pattern.
8211         * doc/invoke.texi (-march=@var{arch}): Add octeon.
8212
8213 2008-08-24  Jan Hubicka  <jh@suse.cz>
8214
8215         * doc/invoke.texi (-fipa-cp-clone): New option.
8216         (-fipa-cp): Update docs.
8217         (--param ipcp-unit-growth):New.
8218         * ipa-cp.c: Include fibheap.h, params.h
8219         (ipcp_initialize_node_lattices): When not cloning, all externally
8220         visible functions are bottom.
8221         (ipcp_need_redirect_p): Accept clones.
8222         (ipcp_insert_stage): Use cost driven heuristics.
8223         (max_count, dead_nodes): New static vars.
8224         (ipcp_need_original_clone_p, ipcp_estimate_cloning_cost,
8225         ipcp_const_param_count): New functions.
8226         * common.opt (ipa-cp-clone): New command line option.
8227         * params.def (ipcp-unit-growth): New.
8228
8229 2008-08-24  Jan Hubicka  <jh@suse.cz>
8230
8231         * tree-inline.c (tree_function_versioning): Look harder
8232         for referenced vars.
8233
8234 2008-08-24  Razya Ladelsky  <razya@il.ibm.com>
8235
8236         PR tree-optimization/37185
8237         * matrix-reorg.c (transform_access_sites): Update changed stmt.
8238
8239 2008-08-23  Jan Hubicka  <jh@suse.cz>
8240
8241         * ipa-cp.c (ipcp_analyze_node): New function.
8242         (ipcp_update_cloned_node): Use it.
8243         (ipcp_init_stage): Likewise.
8244         * ipa-inline.c (function_insertion_hook_holder): New static var.
8245         (analyze_function): Break out from ....
8246         (inline_generate_summary): Here; register insertion hook.
8247         (cgraph_decide_inlining): Remove hook.
8248         (add_new_function): New function.
8249
8250 2008-08-23  Jan Hubicka  <jh@suse.cz>
8251
8252         * opts.c (decode_options): Revert accidental change enabling ipa-cp.
8253
8254 2008-08-23  Jan Hubicka  <jh@suse.cz>
8255
8256         * ipa-cp.c (constant_val_insert): Remove.
8257         (ipcp_propagate_one_const): Remove.
8258         (ipcp_create_replace_map): Always insert replacements to the map.
8259         (ipcp_insert_stage): Do not try to insert statements by hand.
8260         * tree-inline.c (insert_init_stmt): Break out from ...
8261         (setup_one_parameter): ... here; allow NULL BB pointer.
8262         (tree_function_versioning): Use setup_one_parameter to process
8263         replacement map.
8264
8265 2008-08-23  Jan Hubicka  <jh@suse.cz>
8266
8267         * tree.c (decl_address_ip_invariant_p): New function.
8268         * tree.h (decl_address_ip_invariant_p): Declare.
8269         * gimple.c (strip_invariant_refs): Break out from ...
8270         (is_gimple_invariant_address): ... here
8271         (is_gimple_ip_invariant_address): New function.
8272         (is_gimple_ip_invariant): New function.
8273         * gimple.h (is_gimple_ip_invariant_address, is_gimple_ip_invariant):
8274         Declare.
8275
8276         * ipa-cp.c (ipcp_lat_is_const): Remove handling of IPA_CONST_VALUE_REF.
8277         (ipcp_lat_is_insertable): All constants are insertable.
8278         (ipcp_lattice_from_jfunc, ipcp_print_all_lattices): Remove handling of
8279         IPA_CONST_VALUE_REF.
8280         (ipcp_initialize_node_lattices): Propagate all types of operands.
8281         (build_const_val): Do not handle IPA_CONST_VALUE_REF.
8282         (ipcp_create_replace_map): Reformat.
8283         (ipcp_need_redirect_p): Simplify.
8284         (ipcp_insert_stage): Check that argument is used before clonning.
8285         * ipa-prop.c (ipa_print_node_jump_functions): Do not handle
8286         IPA_CONST_REF.
8287         (compute_scalar_jump_functions): Simplify using is_gimple_ip_invariat.
8288         (determine_cst_member_ptr): Keep wrapping ADDR_EXPR of members.
8289         (update_call_notes_after_inlining): Expect ADDR_EXPR in operand.
8290         * ipa-prop.h (jump_func_type): Remove IPA_CONST_REF.
8291         (jump_func_type): Remove IPA_CONST_VALUE_REF.
8292         * tree-inline.c (tree_function_versioning): Add variables referenced
8293         by replacing trees.
8294
8295 2008-08-23  Jan Hubicka  <jh@suse.cz>
8296
8297         PR target/37094
8298         * i386.c (standard_80387_constant_p): Use optimize_size.
8299
8300 2008-08-23  Ira Rosen  <irar@il.ibm.com>
8301
8302         PR tree-optimization/37161
8303         * tree-vectorizer.h (vect_get_smallest_scalar_type): Declare.
8304         * tree-vect-analyze.c (vect_get_smallest_scalar_type): New function.
8305         (vect_determine_vectorization_factor): Move the scalar type
8306         retrieval to vect_get_smallest_scalar_type.
8307         (vect_build_slp_tree): Call vect_get_smallest_scalar_type to get
8308         scalar type. Remove redundant computation.
8309         * tree-vect-transform.c (vect_get_constant_vectors): Add argument.
8310         (vect_get_slp_defs): Take the type of RHS into account if
8311         necessary by calling vect_get_smallest_scalar_type. Call
8312         vect_get_constant_vectors with additional argument.
8313
8314 2008-08-23  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8315
8316         PR 35648
8317         * doc/invoke.texi (Wwrite-strings): Clarify description.
8318
8319 2008-08-23  Ira Rosen  <irar@il.ibm.com>
8320
8321         PR tree-optimization/37174
8322         * tree-vect-analyze.c (vect_get_and_check_slp_defs): Check that the
8323         def stmt is a part of the loop before accessing its stmt_vec_info.
8324
8325 2008-08-22  Anatoly Sokolov  <aesok@post.ru>
8326
8327         PR target/11259
8328         * config/avr/avr.md (UNSPEC_SWAP): New constants.
8329         (*swap): New insn pattern.
8330         (*ashlqi3): Rename from ashlqi3 insn pattern.
8331         (ashlqi3): New expanders.
8332         (*lshrqi3): Rename from lshrqi3 insn pattern.
8333         (lshrqi3): New expanders.
8334         (ashlqi3_const4, ashlqi3_const5, ashlqi3_const6, lshrqi3_const4,
8335         lshrqi3_const5, lshrqi3_const6): New splitters.
8336         (andi, ashlqi3_l_const4, ashlqi3_l_const5, ashlqi3_l_const6,
8337         lshrqi3_l_const4, lshrqi3_l_const5, lshrqi3_l_const6): Define
8338         peephole2 patterns.
8339
8340 2008-08-22  Richard Guenther  <rguenther@suse.de>
8341
8342         PR tree-optimization/37078
8343         * tree-vrp.c (extract_range_from_unary_expr): Avoid generating
8344         [+INF, +INF] ranges.
8345
8346 2008-08-22  Richard Guenther  <rguenther@suse.de>
8347
8348         PR tree-optimization/37143
8349         * tree-vect-transform.c (vect_create_cond_for_align_checks): Build
8350         a conversion statement instead of a copy.
8351
8352 2008-08-22  Uros Bizjak  <ubizjak@gmail.com>
8353
8354         PR target/37184
8355         * config/i386/i386.c (ix86_match_ccmode): Handle CCAmode,
8356         CCCmode, CCOmode and CCSmode destination modes.
8357
8358         PR target/37191
8359         * config/i386/mmx.md (*vec_extractv2sf_0): Avoid combining registers
8360         from different units in a single alternative.
8361         (*vec_extractv2sf_1): Ditto.
8362         (*vec_extractv2si_0): Ditto.
8363         (*vec_extractv2si_1): Ditto.
8364         * config/i386/sse.md (sse2_storehpd): Ditto.
8365         (sse2_storelpd): Ditto.
8366         (sse2_loadhpd): Ditto.
8367         (sse2_loadlpd): Ditto.
8368
8369         PR target/37197
8370         * config/i386/i386.md (clzsi2_abm): Fix operand 1 constraints.
8371         (popcountsi2): Ditto.
8372         (clzdi2_abm): Ditto.
8373         (popcountdi2): Ditto.
8374         (clzhi2_abm): Ditto.
8375         (popcounthi2): Ditto.
8376
8377 2008-08-22  Richard Guenther  <rguenther@suse.de>
8378
8379         PR middle-end/36548
8380         PR middle-end/37125
8381         * fold-const.c (extract_muldiv_1): Optimize (X * C1) % C2 only
8382         if the multiplication does not overflow.
8383
8384 2008-08-21  Nathan Sidwell  <nathan@codesourcery.com>
8385
8386         * c-ppoutput.c (init_pp_output): Initialize src_line to 1.
8387
8388 2008-08-21  Richard Henderson  <rth@redhat.com>
8389
8390         * configure.ac (HAVE_GAS_CFI_PERSONALITY_DIRECTIVE): Remove
8391         spurrious comma from test.
8392         * configure: Rebuild.
8393
8394 2008-08-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8395
8396         PR 30457
8397         * builtins.c (fold_builtin_next_arg): Add warning about undefined
8398         behaviour.
8399
8400 2008-08-21  Aldy Hernandez  <aldyh@redhat.com>
8401
8402         * c-tree.h (grokfield): New argument.
8403         * c-decl.c (grokfield): Handle new location argument.
8404         * c-parser.c (c_parser_struct_declaration): Pass location to grokfield.
8405
8406 2008-08-21  Richard Guenther  <rguenther@suse.de>
8407
8408         * tree-ssa-ccp.c (ccp_fold): Fold VIEW_CONVERT_EXPRs of constants.
8409
8410 2008-08-21  Jan Hubicka  <jh@suse.cz>
8411
8412         * cgraph.c (first_cgraph_function_insertion_hook): New variable.
8413         (cgraph_add_function_insertion_hook,
8414         cgraph_remove_function_insertion_hook,
8415         cgraph_call_function_insertion_hooks): New functions.
8416         * cgraph.h (cgraph_add_function_insertion_hook,
8417         cgraph_remove_function_insertion_hook,
8418         cgraph_call_function_insertion_hooks): Declare.
8419         * ipa-reference.c (function_insertion_hook_holder): New variable.
8420         (check_operand, look_for_address_of): When checking late, do not care
8421         about module bitmaps.
8422         (add_new_function): New function.
8423         (generate_summary): Register hooks; zero module bitmaps.
8424         (propagate): Unregister hooks.
8425         * ipa-pure-const.c (function_insertion_hook_holder): New variable.
8426         (add_new_function): New function.
8427         (generate_summary): Register hook.
8428         (propagate): Remove hook.
8429
8430         * ipa-cp.c (ipcp_need_redirect_p): Fix to not be constant 0.
8431
8432         * tree-pass.h (pass_ipa_cp): Make ipa_opt_pass.
8433         * ipa-cp.c (ipcp_update_cloned_node): New function.
8434         (build_const_val): Handle functions correctly; bring type logic
8435         into sync with tree-inline.c
8436         (ipcp_init_stage):  Take care of computing stuff needed by
8437         indirect inlining; update clones.
8438         (ipcp_generate_summary): Break out of ipcp_driver.
8439         (ipcp_driver): Do only execution and transformation.
8440         (pass_ipa_cp): Make IPA_PASS.
8441         * tree-ssa-ccp.c (fold_stmt_r): Check type before trying to fold
8442         offset to address.
8443         * ipa-inline.c (inline_indirect_intraprocedural_analysis): When doing
8444         ipcp, some info is already available.
8445         * ipa-prop.c (ipa_count_arguments): Grow edge lists as needed.
8446         * tree-inline.c (remap_ssa_name): Unshare expression.
8447
8448 2008-08-21  Richard Guenther  <rguenther@suse.de>
8449
8450         * tree-ssa-pre.c (insert_into_preds_of_block): Before inserting
8451         a PHI ask VN if it is already available.
8452         * tree-ssa-sccvn.h (vn_phi_lookup): Declare.
8453         * tree-ssa-sccvn.c (vn_phi_lookup): Export.
8454
8455 2008-08-21  Richard Guenther  <rguenther@suse.de>
8456
8457         PR middle-end/36817
8458         * tree-chrec.c (chrec_apply): Always call chrec_fold_plus which
8459         makes sure to produce a result of the correct type.
8460
8461 2008-08-21  Jan Hubicka  <jh@suse.cz>
8462         Backport from LTO branch:
8463
8464         2008-05-05  Kenneth Zadeck <zadeck@naturalbridge.com>
8465                     Jan Hubicka  <jh@suse.cz>
8466
8467         * ipa-pure-const.c
8468         (init_state, finish_state, set_function_state, generate_summary):
8469         New functions.
8470         (scan_stmt): Renamed from scan_function.  Changed to keep state in
8471         local static vars rather than cgraph aux field.
8472         (propagate): Renamed from static_execute. Changed to keep state in
8473         local static vars rather than cgraph aux field.
8474         (pass_ipa_pure_const): Changed from SIMPLE_IPA_PASS to IPA_PASS.
8475         * tree-pass.h (pass_ipa_pure_const): Turn into IPA_PASS.
8476
8477         2008-07-15  Kenneth Zadeck <zadeck@naturalbridge.com>
8478
8479         * tree-pass.h (pass_ipa_reference): Make into ipa_opt_pass.
8480         * ipa-reference.c (init_function_info, generate_summary,
8481         propagate): New functions.
8482         (analyze_function):  Call init_function_info.
8483         (static_execute): Stripped into generate_summary and propagate.
8484         (pass_ipa_reference): Made into ipa_opt_pass.
8485
8486 2008-08-21  Richard Guenther  <rguenther@suse.de>
8487
8488         PR tree-optimization/37181
8489         * tree-vrp.c (extract_range_from_binary_expr): Check for NULL
8490         folding result.
8491         (extract_range_from_unary_expr): Likewise.
8492
8493 2008-08-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8494
8495         * diagnostic.c (pedwarn_at): Rename as pedwarn.
8496         (pedwarn): Delete.
8497         * toplev.h (pedwarn_at): Likewise.
8498         * builtins.c: Update all calls to pedwarn.
8499         * c-lex.c: Likewise.
8500         * toplev.c: Likewise.
8501         * c-tree.h: Likewise.
8502         * c-decl.c: Likewise.
8503         * c-errors.c: Likewise.
8504         * c-typeck.c: Likewise.
8505         * c-common.c: Likewise.
8506         * c-parser.c: Likewise.
8507
8508 2008-08-20  Joseph Myers  <joseph@codesourcery.com>
8509
8510         PR target/31070
8511         * config/sparc/sparc.c (function_arg_slotno): Handle structure
8512         with MODE_VECTOR_INT mode.
8513
8514 2008-08-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8515
8516         PR middle-end/179
8517         * tree-ssa.c (warn_uninit): Do not warn for variables that can be
8518         initialized outside the current module.
8519         (warn_uninitialized_var): Ignore left-hand side when walking the
8520         trees. Ignore address expressions. Examine VUSE operands in gimple
8521         statements with a variable declaration on the right-hand side.
8522
8523 2008-08-20  Richard Sandiford  <rdsandiford@googlemail.com>
8524
8525         PR bootstrap/37155
8526         * rtlanal.c (subreg_offset_representable_p): Revert last change.
8527
8528 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8529
8530         PR 35701
8531         * c-common.c (conversion_warning): Do not warn if applying bit-and
8532         operator to unsigned constant that fits in the target type.
8533
8534 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8535
8536         PR c++/35602
8537         * c-common.c (conversion_warning): Do not warn for artificial
8538         expressions.
8539
8540 2008-08-20  Richard Guenther  <rguenther@suse.de>
8541
8542         * tree-vrp.c (op_with_constant_singleton_value_range): New function.
8543         (extract_range_from_binary_expr): Fall back to constant propagation.
8544         (extract_range_from_unary_expr): Likewise.
8545
8546 2008-08-20  Richard Guenther  <rguenther@suse.de>
8547
8548         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Do not mess
8549         with TREE_THIS_VOLATILE on shared nodes.
8550         (fold_stmt_r): Likewise.
8551
8552 2008-08-20  Jakub Jelinek  <jakub@redhat.com>
8553
8554         PR c/37171
8555         * c-parser.c (c_parser_attributes): For keywords use canonical
8556         spelling for attr_name.
8557
8558 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8559
8560         * value-prof.c (check_counter): Revert wrong call to error.
8561
8562 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8563
8564         * profile.c: Update calls to inform.
8565         * value-prof.c: Update calls to inform.
8566
8567 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8568
8569         * diagnostic.c (inform): Add an explicit location_t parameter.
8570         * toplev.h (inform): Update declaration.
8571         * builtins.c: Update all calls to inform.
8572         * c-common.c: Likewise.
8573         * c-decl.c: Likewise.
8574         * c-opts.c: Likewise.
8575         * c-pch.c: Likewise.
8576         * c-pragma.c: Likewise.
8577         * c-typeck.c: Likewise.
8578         * coverage.c: Likewise.
8579         * opts.c: Likewise.
8580         * toplev.c: Likewise.
8581         * tree-cfg.c: Likewise.
8582         * tree-ssa.c: Likewise.
8583
8584 2008-08-20  H.J. Lu  <hongjiu.lu@intel.com>
8585
8586         PR target/37169
8587         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): In
8588         V2DI mode, for SSE4.1, use movq instead of vector set if the
8589         second element is zero and inter-unit moves are OK.
8590
8591 2008-08-20  Richard Guenther  <rguenther@suse.de>
8592
8593         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): More
8594         properly handle conversion/copy chains after tuplification.
8595
8596 2008-08-20  Richard Guenther  <rguenther@suse.de>
8597
8598         * passes.c (init_optimization_passes): Move the second
8599         forwprop pass before alias computation.  Remove the second
8600         DCE pass.  Remove the first dominator and phi copy/const
8601         prop passes.
8602
8603 2008-08-20  Nick Clifton  <nickc@redhat.com>
8604
8605         * configure.ac (HAVE_GAS_CFI_DIRECTIVE): Always test for assembler
8606         support of this feature.  Do not assume that a sufficiently new
8607         assembler will support the feature regardless of the target type.
8608         (HAVE_GAS_CFI_PERSONALITY_DIRECTIVE): Likewise.
8609         * configure: Regenerate.
8610
8611 2008-08-20  Richard Guenther  <rguenther@suse.de>
8612
8613         * tree-vrp.c (found_in_subgraph): Remove.
8614         (live): New global static.
8615         (live_on_edge): New function.
8616         (blocks_visited): Remove.
8617         (register_edge_assert_for_2): Use live_on_edge.
8618         (find_conditional_asserts): Remove code dealing with
8619         found_in_subgraph.  Do not walk the CFG.
8620         (find_switch_asserts): Likewise.
8621         (find_assert_locations_1): Renamed from find_assert_locations.
8622         Move finding assert locations for conditional and switch
8623         statements first.  Update live bitmap.  Do not walk the CFG.
8624         (find_assert_locations): New function.
8625         (insert_range_assertions): Remove entry of CFG walk.
8626         Adjust call to find_assert_locations.
8627         * tree-ssa-pre.c (do_regular_insertion): Ignore critical edges
8628         that only can appear because of fake exit edges but assert we
8629         never try to insert on those.
8630         (fini_pre): Do not remove fake exit edges here...
8631         (execute_pre): ...but here, before committing edge inserts.
8632
8633 2008-08-19  Richard Guenther  <rguenther@suse.de>
8634
8635         * passes.c (init_optimization_passes): Exchange store-ccp
8636         with a ccp pass.
8637
8638 2008-08-19  Rafael Espíndola  <espindola@google.com>
8639
8640         * varasm.c (weak_decls): Move earlier in the file.
8641         (assemble_external): Add weak decls to the weak_decls list.
8642         (declare_weak): Don't add decls to the weak_decls list.
8643
8644 2008-08-19  H.J. Lu  <hongjiu.lu@intel.com>
8645
8646         PR target/37157
8647         * config/i386/sse.md (sse2_punpckhqdq, sse2_punpcklqdq): Moved
8648         before (sse2_shufpd_<mode>).
8649
8650 2008-08-19  Jakub Jelinek  <jakub@redhat.com>
8651
8652         PR debug/37156
8653         * pretty-print.c (pp_base_format): Deal with recursive BLOCK trees.
8654         * tree.c (block_nonartificial_location): Likewise.
8655
8656 2008-08-19  Richard Guenther  <rguenther@suse.de>
8657
8658         PR tree-optimization/35972
8659         PR tree-optimization/23094
8660         * tree-ssa-sccvn.h (vn_reference_lookup_pieces): Add maywalk
8661         parameter.
8662         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Properly
8663         handle MISALIGNED_INDIRECT_REF.
8664         (get_ref_from_reference_ops): New helper.
8665         (vn_reference_lookup_pieces): Walk the use-def chain using the
8666         alias-oracle if requested.
8667         * tree-ssa-pre.c (phi_translate_1): Do reference lookup with
8668         walking the use-def chain.
8669         (compute_avail): But not here.
8670         (create_component_ref_by_pieces_1): Properly handle
8671         MISALIGNED_INDIRECT_REF.
8672         (do_regular_insertion): Handle fully redundant
8673         expressions after PHI-translation also for SSA_NAME values, not
8674         only constants.  Correctly use edoubleprime for that.
8675
8676 2008-08-19  Ira Rosen  <irar@il.ibm.com>
8677
8678         * tree-vectorizer.c (supportable_widening_operation): Support
8679         multi-step conversion, return the number of steps in such conversion
8680         and the required intermediate types.
8681         (supportable_narrowing_operation): Likewise.
8682         * tree-vectorizer.h (vect_pow2): New function.
8683         (supportable_widening_operation): Change argument types.
8684         (supportable_narrowing_operation): Likewise.
8685         (vectorizable_type_promotion): Add an argument.
8686         (vectorizable_type_demotion): Likewise.
8687         * tree-vect-analyze.c (vect_analyze_operations): Call
8688         vectorizable_type_promotion and vectorizable_type_demotion with
8689         additional argument.
8690         (vect_get_and_check_slp_defs): Detect patterns.
8691         (vect_build_slp_tree): Add an argument, don't fail in case of multiple
8692         types.
8693         (vect_analyze_slp_instance): Don't fail in case of multiple types.
8694         Call vect_build_slp_tree with correct arguments. Calculate unrolling
8695         factor according to the smallest type in the loop.
8696         (vect_detect_hybrid_slp_stmts): Include statements from patterns.
8697         * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Call
8698         supportable_widening_operation with correct arguments.
8699         * tree-vect-transform.c (vect_get_slp_defs): Allocate output vector
8700         operands lists according to the number of vector statements in left
8701         or right node, if exists.
8702         (vect_gen_widened_results_half): Remove unused argument.
8703         (vectorizable_conversion): Call supportable_widening_operation,
8704         supportable_narrowing_operation, and vect_gen_widened_results_half
8705         with correct arguments.
8706         (vectorizable_assignment): Change documentation, support multiple
8707         types in SLP.
8708         (vectorizable_operation): Likewise.
8709         (vect_get_loop_based_defs): New function.
8710         (vect_create_vectorized_demotion_stmts): Likewise.
8711         (vectorizable_type_demotion): Support loop-aware SLP and general
8712         multi-step conversion. Call vect_get_loop_based_defs and
8713         vect_create_vectorized_demotion_stmts for transformation.
8714         (vect_create_vectorized_promotion_stmts): New function.
8715         (vectorizable_type_promotion): Support loop-aware SLP and general
8716         multi-step conversion. Call vect_create_vectorized_promotion_stmts
8717         for transformation.
8718         (vectorizable_store): Change documentation, support multiple
8719         types in SLP.
8720         (vectorizable_load): Likewise.
8721         (vect_transform_stmt): Pass SLP_NODE to
8722         vectorizable_type_promotion and vectorizable_type_demotion.
8723         (vect_schedule_slp_instance): Move here the calculation of number
8724         of vectorized statements for each node from...
8725         (vect_schedule_slp): ... here.
8726         (vect_transform_loop): Call vect_schedule_slp without the last
8727         argument.
8728
8729 2008-08-19  Dorit Nuzman  <dorit@il.ibm.com>
8730
8731         PR bootstrap/37152
8732         * tree-vect-transform.c (vect_create_epilog_for_reduction): Change =
8733         to == in assert statement.
8734         (vectorizable_reduction): Fix typo.
8735
8736 2008-08-18  H.J. Lu  <hongjiu.lu@intel.com>
8737
8738         PR bootstrap/37153
8739         * value-prof.c (check_counter): Dereference pointer to overall
8740         count when printing it.
8741
8742 2008-08-18  H.J. Lu  <hongjiu.lu@intel.com>
8743
8744         * profile.h: Really add it.
8745
8746 2008-08-18  H.J. Lu  <hongjiu.lu@intel.com>
8747
8748         * mcf.c: Really add it.
8749
8750 2008-08-18  Paul Yuan  <yingbo.com@gmail.com>
8751             Vinodha Ramasamy  <vinodha@google.com>
8752
8753         * cgraph.c (cgraph_edge): Handle inconsistent counts when setting
8754         count_scale.
8755         * value-prof.c (check_counter): Fix the counter if
8756         flag_profile_correction is true.
8757         (tree_divmod_fixed_value_transform, tree_mod_pow2_value_transform,
8758         tree_mod_subtract_transform):
8759         Follow check_counter parameter change.
8760         * common.opt (fprofile-correction): New option.
8761         * mcf.c: New file.
8762         * profile.h: Likewise.
8763         * profile.c (edge_info, EDGE_INFO): Moved to new file profile.h.
8764         (sum_edge_counts, is_edge_inconsistent, correct_negative_edge_counts,
8765         is_inconsistent, set_bb_counts, read_profile_edge_counts): New
8766         functions.
8767         (compute_branch_probabilities): Refactored. Invokes mcf_smooth_cfg if
8768         flag_profile_correction is set.
8769
8770 2008-08-18  Richard Sandiford  <rdsandiford@googlemail.com>
8771
8772         * rtlanal.c (subreg_offset_representable_p): Check HARD_REGNO_MODE_OK.
8773
8774 2008-08-18  Tomas Bily  <tbily@suse.cz>
8775
8776         * tree.h (IS_CONVERT_EXPR_CODE_P): Renamed to CONVERT_EXPR_CODE_P.
8777         * tree-ssa-threadedge.c (simplify_control_stmt_condition): Use
8778         CONVERT_EXPR_P.
8779         * tree-data-ref.c (split_constant_offset_1): Likewise.
8780         * tree-inline.c (estimate_operator_cost): Use CASE_CONVERT.
8781         * tree-sra.c (sra_walk_expr): Likewise.
8782         * matrix-reorg.c (ssa_accessed_in_assign_rhs): Likewise.
8783         * tree-ssa-loop-niter.c (expand_simple_operations): Likewise.
8784         * gimple.h (gimple_assign_cast_p): Use CONVERT_EXPR_CODE_P.
8785         * tree-ssa-structalias.c (find_func_aliases, find_func_aliases):
8786         Likewise.
8787         * gimple.c (gimple_assign_unary_nop_p): Likewise.
8788         * tree-vect-transform.c (vectorizable_type_demotion)
8789         (vectorizable_type_promotion): Likewise.
8790         * tree-inline.c (expand_call_inline):
8791         * tree-ssa-forwprop.c (get_prop_source_stmt, can_propagate_from)
8792         (forward_propagate_addr_expr_1, forward_propagate_comparison)
8793         (tree_ssa_forward_propagate_single_use_vars): Likewise.
8794         * expr.c (expand_expr_real_1): Likewise.
8795         * tree-ssa-dom.c (hashable_expr_equal_p, iterative_hash_hashable_expr)
8796         (gimple_assign_unary_useless_conversion_p): Likewise.
8797         * tree-stdarg.c (execute_optimize_stdarg): Likewise.
8798         * tree-ssa-ccp.c (ccp_fold, fold_gimple_assign): Likewise.
8799         * fold-const.c (fold_unary): Likewise.
8800         * tree.h (CONVERT_EXPR_P): Likewise.
8801         * tree.c (simple_cst_equal, iterative_hash_expr): Likewise.
8802         * tree-ssa-loop-im.c (rewrite_bittest): Likewise.
8803         * tree-vrp.c:
8804         (register_edge_assert_for_2, extract_range_from_unary_expr)
8805         (register_edge_assert_for_1): Likewise.
8806
8807 2008-08-18  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8808
8809         * real.h (dconst_e, dconst_third, dconst_sqrt2, dconst_e_ptr,
8810         dconst_third_ptr, dconst_sqrt2_ptr): Declare.
8811         (enum real_value_const): Delete.
8812         (get_real_const): Delete.
8813         * real.c (get_real_const): Delete.
8814         (dconst_e_ptr): Define.
8815         (dconst_third_ptr): Define.
8816         (dconst_sqrt2_ptr): Define.
8817         * builtins.c: Update all callers.
8818
8819 2008-08-18  Richard Guenther  <rguenther@suse.de>
8820
8821         * tree-ssa-reassoc.c (reassociate_bb): Properly reset the
8822         statement iterator after statement removal.
8823
8824 2008-08-18  Andreas Tobler  <a.tobler@schweiz.org>
8825
8826         * config/rs6000/driver-rs6000.c (detect_caches_freebsd): New function.
8827         (detect_processor_freebsd): Likewise.
8828         (host_detect_local_cpu): Call newly added functions for FreeBSD.
8829
8830 2008-08-18  Richard Guenther  <rguenther@suse.de>
8831
8832         * tree-cfg.c (verify_types_in_gimple_assign): Verify copies
8833         and loads have the correct types.
8834
8835 2008-08-18  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8836
8837         PR cpp/7263
8838         * c-opts.c (cpp_opts): Remove static.
8839         * c-parser.c (cpp_opts): Declare it extern.
8840         (disable_extension_diagnostics): Handle cpp options.
8841         (enable_extension_diagnostics): Likewise.
8842
8843 2008-08-18  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8844
8845         * diagnostics.c (permerror_at): Rename as permerror.
8846         (permerror): Delete.
8847         * toplev.h: Likewise.
8848
8849 2008-08-18  Richard Guenther  <rguenther@suse.de>
8850
8851         * passes.c (init_optimization_passes): Remove cleanup_cfg1,
8852         sdse1 and addressables2 passes.  Replace dce1 with cddce1.
8853         Move call_cdce before build_alias.  Move copyrename2,
8854         cunrolli and ccp2 beafore build_alias.  Re-add addressable2
8855         right after final inlining.
8856         * tree-cfg.c (build_gimple_cfg): Do not dump function here.
8857         (pass_build_cfg): But instead via TODO_dump_func.
8858
8859 2008-08-18  Richard Guenther  <rguenther@suse.de>
8860
8861         * tree-sra.c (generate_element_init_1): Deal with NULL constructor
8862         element index.
8863         (scalarize_init): If we failed to generate some initializers
8864         do not generate zeros for not instantiated members.  Instead
8865         rely on the copy out.
8866         * tree-ssa-operands.c (get_addr_dereference_operands): Warn
8867         about missing flow-sensitive alias info only if we have
8868         aliases computed.
8869
8870 2008-08-17  Nick Clifton  <nickc@redhat.com>
8871
8872         * doc/extend.texi (Function Attributes): Fix typo in description
8873         if hot function attribute.
8874
8875 2008-08-17  Daniel Jacobowitz  <dan@codesourcery.com>
8876             Richard Sandiford  <rdsandiford@googlemail.com>
8877
8878         * doc/install.texi (--with-mips-plt): Document.
8879         * doc/invoke.texi (-mplt, -mno-plt): Document.
8880         * config.gcc (mips*-*-*): Add mips-plt to supported_defaults
8881         and handle ${with_mips_plt}.
8882         * config/mips/mips.opt (mplt): New option.
8883         * config/mips/mips.h (TARGET_ABICALLS_PIC0): New macro.
8884         (TARGET_ABICALLS_PIC2): Likewise.
8885         (TARGET_GPWORD): Return false for TARGET_ABSOLUTE_ABICALLS.
8886         (OPTION_DEFAULT_SPECS): Add a mips-plt entry.
8887         (ASM_SPEC): Use !mabi=* instead of !mabi*.
8888         (MIPS_CALL): Use TARGET_ABICALLS_PIC2 instead of TARGET_ABICALLS
8889         to decide whether to output ".option picX" directives.
8890         * config/mips/linux.h (SUBTARGET_ASM_SPEC): Remove -mabi=64 handling.
8891         Pass -call_nonpic rather than -KPIC for -mplt.
8892         (BASE_DRIVER_SELF_SPECS): Remove -mplt if -mno-shared is not present
8893         on the command line.  Also remove it when -mabi=64 is used without
8894         -msym32.
8895         * config/mips/linux64.h (SUBTARGET_ASM_SPEC): Delete.
8896         * config/mips/mips.c (mips_use_pic_fn_addr_reg_p): Handle
8897         TARGET_ABICALLS_PIC0.
8898         (mips_classify_symbol): Use TARGET_ABICALLS_PIC2 instead of
8899         TARGET_ABICALLS.
8900         (mips16_build_function_stub): Only output ".option pic" directives
8901         and PIC stubs if TARGET_ABICALLS_PIC2.  Call through $25 instead of $1.
8902         (mips16_build_call_stub): Fix comment and remove redundant
8903         ".set at"/"set .noat" directives.
8904         (mips_function_rodata_section): Use the default behaviour for
8905         TARGET_ABSOLUTE_ABICALLS.
8906         (mips_file_start): Emit ".option pic0" for TARGET_ABICALLS_PIC0.
8907         (mips_global_pointer): Handle TARGET_ABICALLS_PIC0.
8908         (mips_restore_gp): Do nothing if the current function doesn't use
8909         a global pointer.
8910         (mips_expand_prologue): Only save $gp if the current function uses it.
8911         Use a normal move for TARGET_ABICALLS_PIC0.
8912         (mips_override_options): Only set flag_pic if TARGET_ABICALLS_PIC2.
8913
8914 2008-08-17  Richard Sandiford  <rdsandiford@googlemail.com>
8915
8916         * config/mips/mips.c (mips_save_reg_p): Don't short-circuit rest
8917         of function when handling GLOBAL_POINTER_REGNUM.
8918
8919 2008-08-16  Eric Botcazou  <ebotcazou@adacore.com>
8920
8921         PR ada/20548
8922         * common.opt (-fstack-check): Do not declare the variable here.
8923         (-fstack-check=): New option variant.
8924         * doc/invoke.texi (Code Gen Options): Document it.
8925         * expr.h (STACK_OLD_CHECK_PROTECT): New macro.
8926         (STACK_CHECK_PROTECT): Bump to 3 pages if DWARF-2 EH is used.
8927         (STACK_CHECK_STATIC_BUILTIN): New macro.
8928         * doc/tm.texi (Stack Checking): Document STACK_CHECK_STATIC_BUILTIN.
8929         * opts.c: Include expr.h.
8930         (common_handle_option) <OPT_fold_stack_check_>: New case.
8931         <OPT_fstack_check>: Likewise.
8932         * calls.c (initialize_argument_information): Use TYPE_SIZE_UNIT
8933         consistently in the test for variable-sized types.  Adjust for
8934         new behaviour of flag_stack_check.
8935         * explow.c: Include except.h.
8936         (allocate_dynamic_stack_space): Do not take into account
8937         STACK_CHECK_MAX_FRAME_SIZE for static builtin stack checking.
8938         * function.c (gimplify_parameters): Use DECL_SIZE_UNIT in the test
8939         for variable-sized parameters.  Treat all parameters whose size is
8940         greater than STACK_CHECK_MAX_VAR_SIZE as variable-sized if generic
8941         stack checking is enabled.
8942         * gimplify.c (gimplify_decl_expr): Treat non-static objects whose
8943         size is greater than STACK_CHECK_MAX_VAR_SIZE as variable-sized
8944         if generic stack checking is enabled.
8945         (expand_function_end): Adjust for new behaviour of flag_stack_check.
8946         * reload1.c (reload): Likewise.
8947         * stmt.c (expand_decl): Assert that all automatic variables have
8948         fixed size at this point and remove dead code.
8949         * flags.h (stack_check_type): New enumeration type.
8950         (flag_stack_check): Declare.
8951         * toplev.c (flag_stack_check): New global variable.
8952         * Makefile.in (opts.o): Add dependency on EXPR_H.
8953         (explow.o): Add dependency on except.h.
8954
8955 2008-08-16  Andy Hutchinson  <hutchinsonandy@aim.com>
8956
8957         * config/avr/avr.c (avr_override_options): Reduce value of
8958         PARAM_INLINE_CALL_COST.
8959
8960 2008-08-15  Eric Botcazou  <ebotcazou@adacore.com>
8961
8962         * expr.c (expand_expr_real_1) <VIEW_CONVERT_EXPR>: When converting
8963         to BLKmode, try to fetch an inner memory reference.  Use 'mode' in
8964         lieu of TYPE_MODE (type) throughout.
8965
8966 2008-08-15  Joseph Myers  <joseph@codesourcery.com>
8967
8968         * config/arm/arm.c (add_minipool_backward_ref): Check for
8969         8-byte-aligned entries in second case of forcing insertion after a
8970         particular entry.  Change third case to avoid inserting
8971         non-8-byte-aligned entries before 8-byte-aligned ones.
8972
8973 2008-08-15  Richard Guenther  <rguenther@suse.de>
8974
8975         * tree-ssa-ccp.c (maybe_fold_offset_to_reference): Do not
8976         strip components for unknown size accesses.
8977
8978 2008-08-15  Wolfgang Gellerich  <gellerich@de.ibm.com>
8979
8980         * config/s390/2097.md New file.
8981         * config/s390/s390.md ("z10prop" attribute): Define none,
8982         z10_super, z10_super_E1, z10_super_A1, z10_super_c,
8983         z10_super_c_E1, z10_fwd, z10_fwd_A1, z10_fwd_A3, z10_fwd_E1,
8984         z10_rec, z10_fr, z10_fr_A3, z10_fr_E1, z10_c, and z10_cobra as
8985         possible values and apply them to insns as appropriate.
8986         ("type" attribute): Removed itof and added ftrunctf,ftruncdf,
8987         ftruncsd, ftruncdd, itoftf, itofdf, itofsf, itofdd, itoftd,
8988         fdivdd, fdivtd, floaddd, floadsd, fmuldd, fmultd, fsimpdd,
8989         fsimpsd, fsimptd, fstoredd, fstoresd, ftoidfp as possible values.
8990         ("bfp" mode attribute): Removed.  Every occurence replaced
8991         with <mode>.
8992         * config/s390/s390.c (struct "z10_cost"): Updated entries.
8993         * config/s390/2084.md (insn_reservation "x_itof"): Updated
8994         type attribute.
8995
8996 2008-08-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8997
8998         PR c/28152
8999         * c-parser.c (c_lex_one_token): Do not store the canonical spelling
9000         for keywords.
9001
9002 2008-08-14  Dorit Nuzman  <dorit@il.ibm.com>
9003
9004         * tree-vect-transform.c (vect_create_epilog_for_reduction): Takes an
9005         additional argument. Support reduction when duplication is needed due
9006         to data-types of different sizes in the loop.
9007         (get_initial_def_for_induction): Fix printout.
9008         (vect_get_vec_def_for_stmt_copy): Support case where the
9009         vec_stmt_for_operand is a phi node.
9010         (vectorizable_reduction): Support reduction when duplication is needed
9011         due to data-types of different sizes in the loop.
9012         (vectorizable_call): Remove restriction to not vectorize in case we
9013         have data-types of different sizes in the loop.
9014         (vectorizable_conversion): Likewise.
9015         (vectorizable_operation): Likewise.
9016         (vectorizable_type_demotion): Likewise.
9017         (vectorizable_type_promotion): Likewise.
9018         (vectorizable_induction): Add restriction to not vectorize in case
9019         we have data-types of different sizes in the loop.
9020
9021 2008-08-14  Christophe Saout  <christophe@saout.de>
9022             Uros Bizjak  <ubizjak@gmail.com>
9023
9024         PR target/37101
9025         * config/i386/sse.md (vec_concatv2di): Remove movlps alternative.
9026         (*vec_concatv2di_rex64_sse4_1): Ditto.
9027         (*vec_concatv2di_rex64_sse): Ditto.
9028
9029 2008-08-14  Jakub Jelinek  <jakub@redhat.com>
9030
9031         PR middle-end/37103
9032         * fold-const.c (fold_widened_comparison): Do not allow
9033         sign changes that change the result even if shorter type
9034         is wider than arg1_unw's type.
9035
9036 2008-08-13  Kazu Hirata  <kazu@codesourcery.com>
9037
9038         * gcc.dg/arm-g2.c, gcc.dg/arm-mmx-1.c, gcc.dg/arm-scd42-2.c:
9039         Skip if the multilib testing specifies -march that does not
9040         agree with the one specified in the testcase.
9041
9042 2008-08-13  Joseph Myers  <joseph@codesourcery.com>
9043
9044         * config/sparc/sparc.c (emit_soft_tfmode_cvt): Explicitly sign or
9045         zero extend SImode values being converted to TFmode before passing
9046         to libcalls.
9047
9048 2008-08-13  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
9049
9050         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Predefine
9051         __PPU__ when targeting the Cell/B.E. PPU processor.
9052
9053 2008-08-13  Eric Botcazou  <ebotcazou@adacore.com>
9054
9055         * gimple.h (gimple_call_set_chain): Accept SSA variables.
9056         * tree-ssa-pre.c (create_component_ref_by_pieces_1) <CALL_EXPR>:
9057         Rematerialize the static chain, if any.
9058         * tree-ssa-sccvn.c (copy_reference_ops_from_call): Also copy the
9059         static chain.
9060
9061 2008-08-13  H.J. Lu  <hongjiu.lu@intel.com>
9062
9063         * dwarf2out.c (dwarf_stack_op_name): Remove prototype.
9064         (new_loc_descr): Likewise.
9065         (add_loc_descr): Likewise.
9066         (size_of_loc_descr): Likewise.
9067         (size_of_locs): Likewise.
9068         (output_loc_operands): Likewise.
9069         (output_loc_sequence): Likewise.
9070         (new_reg_loc_descr): New.
9071         (build_cfa_loc): Use it.
9072         (build_cfa_aligned_loc): Likewise.
9073         (one_reg_loc_descriptor): Likewise.
9074         (based_loc_descr): Likewise.
9075
9076 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9077
9078         PR 30551
9079         * doc/invoke.texi (Wmain): Update.
9080         * c-decl.c (start_decl): warn_main is only 0 or 1.
9081         (start_function): Likewise. Fix formatting.
9082         (finish_function): Delete redundant warning.
9083         * c.opt (Wmain): Add Var(warn_main) and Init(-1).
9084         * c-opts (c_common_handle_option): -Wall only has effect if
9085         warn_main is uninitialized. OPT_Wmain is automatically
9086         handled. -pedantic also enables Wmain.
9087         (c_common_post_options): Handle all logic for Wmain here.
9088         * c-common.c (warn_main): Delete.
9089         (check_main_parameter_types): Make pedwarns conditional on OPT_Wmain.
9090         * c-common.h (warn_main): Delete.
9091
9092 2008-08-13  H.J. Lu  <hongjiu.lu@intel.com>
9093
9094         PR middle-end/36701
9095         * expr.c (emit_group_store): Allocate stack temp with the
9096         largest alignment when copying from register to stack.
9097
9098 2008-08-13  Richard Guenther  <rguenther@suse.de>
9099
9100         * tree.h (maybe_fold_offset_to_address): Declare.
9101         * tree-ssa-ccp.c (surely_varying_stmt_p): Fix typo in last commit.
9102         (ccp_fold): Handle pointer conversions the same as fold_stmt.
9103         Likewise for POINTER_PLUS_EXPR.
9104         (maybe_fold_offset_to_reference): Enable disabled code.
9105         (maybe_fold_offset_to_address): New function.
9106         (fold_stmt_r): Use it.
9107         (fold_gimple_assign): Likewise.
9108         * gimplify.c (gimplify_conversion): Use maybe_fold_offset_to_address.
9109         (gimplify_expr): Likewise.
9110
9111 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9112
9113         * toplev.h (pedwarn_at): Fix declaration.
9114
9115 2008-08-13  Joseph Myers  <joseph@codesourcery.com>
9116
9117         * config/sparc/linux64.h (LINK_ARCH32_SPEC, LINK_ARCH64_SPEC,
9118         LINK_SPEC): Use %R in -Y P argument.
9119
9120 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9121
9122         PR c/15236
9123         * diagnostic.c (pedwarn_at): New.
9124         * toplev.h (pedwarn_at): Declare.
9125         * c-tree.h (build_enumerator): Update declaration.
9126         * c-decl.c (finish_enum): Update comment.
9127         (build_enumerator): Take a location parameter. Give a pedwarn but do
9128         not perform any conversion.
9129         * c-parser.c (c_parser_enum_specifier): Set correct location for
9130         enumerator.
9131
9132 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9133
9134         PR 35635
9135         * c-common.c (conversion_warning): Use a switch. Ignore boolean
9136         expressions except for conversions to signed:1 bitfields. Handle
9137         COND_EXPR with constant operands.
9138
9139 2008-08-13  Richard Guenther  <rguenther@suse.de>
9140
9141         PR tree-optimization/15255
9142         * tree-ssa-reassoc.c (linearize_expr_tree): Declare.
9143         (struct oecount_s): New struct and VEC types.
9144         (cvec): New global.
9145         (oecount_hash): New function.
9146         (oecount_eq): Likewise.
9147         (oecount_cmp): Likewise.
9148         (zero_one_operation): New function.
9149         (build_and_add_sum): Likewise.
9150         (undistribute_ops_list): Perform un-distribution of multiplication
9151         and division on the chain of summands.
9152         (should_break_up_subtract): Also break up subtracts for factors.
9153         (reassociate_bb): Delete dead visited statements.
9154         Call undistribute_ops_list.  Re-sort and optimize if it did something.
9155         * passes.c (init_optimization_passes): Move DSE before
9156         reassociation.
9157         * tree-ssa-loop-niter.c (stmt_dominates_stmt_p): Correctly handle
9158         PHI nodes.
9159
9160 2008-08-12  Janis Johnson  <janis187@us.ibm.com>
9161
9162         * doc/invoke.texi (-fipa-pta): Say the option is experimental.
9163
9164         * doc/invoke.texi: Revert unintended checkin.
9165
9166 2008-08-12  Nathan Froyd  <froydnj@codesourcery.com>
9167
9168         PR libgomp/26165
9169         * gcc.c (include_spec_function): Tweak call to find_a_file.
9170
9171 2008-08-12  Jakub Jelinek  <jakub@redhat.com>
9172
9173         PR middle-end/37014
9174         * expr.c (expand_expr_real_1): Handle TRUTH_ANDIF_EXPR
9175         and TRUTH_ORIF_EXPR.
9176         * dojump.c (do_jump): Likewise.
9177
9178         PR tree-optimization/37084
9179         * tree-inline.c (copy_bb): Call gimple_regimplify_operands
9180         if id->regimplify, don't assume stmt is a cast assignment.
9181
9182 2008-08-12  Anatoly Sokolov  <aesok@post.ru>
9183
9184         * final.c (final_scan_insn): Use app_enable/app_disable functions.
9185
9186 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
9187
9188         PR bootstrap/37097
9189         * builtins.c (do_mpfr_bessel_n): Fix copy-and-paste bug introduced
9190         by last change.
9191
9192 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
9193
9194         * defaults.h (TARGET_FLOAT_FORMAT): Remove.
9195         (UNKNOWN_FLOAT_FORMAT, IEEE_FLOAT_FORMAT, VAX_FLOAT_FORMAT): Remove.
9196
9197         * config/alpha/alpha.h (TARGET_FLOAT_FORMAT): Remove.
9198         * config/iq2000/iq2000.h (TARGET_FLOAT_FORMAT): Remove.
9199         * config/pdp11/pdp11.h (TARGET_FLOAT_FORMAT): Remove.
9200         * config/score/score.h (TARGET_FLOAT_FORMAT): Remove.
9201         * config/vax/vax.h (TARGET_FLOAT_FORMAT): Remove.
9202
9203         * doc/tm.texi (Storage Layout): Remove documentation for
9204         TARGET_FLOAT_FORMAT.
9205
9206         * simplify-rtx.c (simplify_binary_operation_1): Replace
9207         TARGET_FLOAT_FORMAT check by appropriate HONOR_... checks.
9208
9209 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
9210
9211         * real.h (struct real_format): New member has_sign_dependent_rounding.
9212         * real.c (ieee_single_format, mips_single_format, motorola_single_format,
9213         spu_single_format, ieee_double_format, mips_double_format,
9214         motorola_double_format, ieee_extended_motorola_format,
9215         ieee_extended_intel_96_format, ieee_extended_intel_128_format,
9216         ieee_extended_intel_96_round_53_format, ibm_extended_format,
9217         mips_extended_format, ieee_quad_format, mips_quad_format,
9218         vax_f_format, vax_d_format, vax_g_format): Initialize it.
9219         * config/pdp11/pdp11.c (pdp11_f_format, pdp11_d_format): Likewise.
9220
9221         * defaults.h (MODE_HAS_NANS, MODE_HAS_INFINITIES,
9222         MODE_HAS_SIGNED_ZEROS, MODE_HAS_SIGN_DEPENDENT_ROUNDING): Remove.
9223         * config/spu/spu.h (MODE_HAS_NANS, MODE_HAS_INFINITIES,
9224         MODE_HAS_SIGN_DEPENDENT_ROUNDING): Remove.
9225         (ROUND_TOWARDS_ZERO): Likewise.
9226
9227         * real.h (REAL_MODE_FORMAT): Protect MODE against macro expansion.
9228         (FLOAT_MODE_FORMAT): New macro.
9229         (REAL_MODE_FORMAT_COMPOSITE_P): Remove, replace by ...
9230         (MODE_COMPOSITE_P): ... this new macro.
9231         (MODE_HAS_NANS, MODE_HAS_INFINITIES, MODE_HAS_SIGNED_ZEROS,
9232         MODE_HAS_SIGN_DEPENDENT_ROUNDING): New macros.
9233         * machmode.h (GET_MODE_INNER): Cast result to enum machine_mode.
9234
9235         * flags.h: Include "real.h".
9236
9237         * fold-const.c (const_binop): Use MODE_COMPOSITE_P instead of
9238         REAL_MODE_FORMAT_COMPOSITE_P.
9239         * simplify-rtx.c (simplify_const_binary_operation): Likewise.
9240
9241         * doc/tm.texi (Storage Layout): Remove documentation of
9242         MODE_HAS_NANS, MODE_HAS_INFINITIES, MODE_HAS_SIGNED_ZEROS,
9243         MODE_HAS_SIGN_DEPENDENT_ROUNDING.  Update documentation of
9244         ROUND_TOWARDS_ZERO and LARGEST_EXPONENT_IS_NORMAL to clarify
9245         they only apply to libgcc2.a.
9246
9247 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
9248
9249         * config/spu/float_disf.c: New file.
9250         * config/spu/float_unsdisf.c: New file.
9251         * config/spu/t-elf (LIB2FUNCS_STATIC_EXTRA): Add them.
9252         (LIB2FUNCS_EXCLUDE): Define.
9253
9254 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
9255             Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
9256
9257         * real.h (struct real_format): New member round_towards_zero.
9258         * real.c (round_for_format): Respect fmt->round_towards_zero.
9259         (ieee_single_format, mips_single_format, motorola_single_format,
9260         spu_single_format, ieee_double_format, mips_double_format,
9261         motorola_double_format, ieee_extended_motorola_format,
9262         ieee_extended_intel_96_format, ieee_extended_intel_128_format,
9263         ieee_extended_intel_96_round_53_format, ibm_extended_format,
9264         mips_extended_format, ieee_quad_format, mips_quad_format,
9265         vax_f_format, vax_d_format, vax_g_format): Initialize it.
9266         * config/pdp11/pdp11.c (pdp11_f_format, pdp11_d_format): Likewise.
9267
9268         * builtins.s (do_mpfr_arg1): Consider round_towards_zero member of
9269         real_format to choose rounding mode when calling MPFR functions.
9270         (do_mpfr_arg2, do_mpfr_arg3, do_mpfr_sincos): Likewise.
9271         (do_mpfr_bessel_n, do_mpfr_remquo, do_mpfr_lgamma_r): Likewise.
9272
9273         * real.h (real_to_decimal_for_mode): Add prototype.
9274         * real.c (real_to_decimal_for_mode): Renames old real_to_decimal.
9275         Respect target rounding mode when generating decimal representation.
9276         (real_to_decimal): New stub for backwards compatibility.
9277         * c-cppbuiltin.c (builtin_define_with_hex_fp_value): Use
9278         real_to_decimal_for_mode instead of real_to_decimal.
9279
9280         * config/spu/spu.md ("floatdisf2", "floatunsdisf2"): New.
9281
9282 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
9283             Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
9284
9285         * real.c (spu_single_format): New variable.
9286         * real.h (spu_single_format): Declare.
9287
9288         * config/spu/spu.c (spu_override_options): Install SFmode format.
9289         (spu_split_immediate): Use integer mode to operate on pieces of
9290         floating-point values in all cases.
9291
9292         * config/spu/spu.md (UNSPEC_FLOAT_EXTEND, UNSPEC_FLOAT_TRUNCATE): New.
9293         ("extendsfdf2"): Use UNSPEC_FLOAT_EXTEND instead of FLOAT_EXTEND.
9294         ("truncdfsf2"): Use UNSPEC_FLOAT_TRUNCATE instead of FLOAT_TRUNCATE.
9295
9296 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
9297
9298         * config/spu/spu.c (spu_safe_dma): Respect TARGET_SAFE_DMA.
9299
9300 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
9301
9302         * config/spu/spu.h (DWARF_FRAME_RETURN_COLUMN): Define.
9303
9304 2008-08-12  Jakub Jelinek  <jakub@redhat.com>
9305
9306         PR c++/36688
9307         * gimplify.c (gimplify_modify_expr_rhs): Test TREE_READONLY
9308         on the VAR_DECL instead of TYPE_READONLY on its type.
9309
9310 2008-08-12  Ira Rosen  <irar@il.ibm.com>
9311
9312         * tree-vectorizer.c: Depend on langhooks.h.
9313         (supportable_widening_operation): Add two arguments. Support double
9314         type conversions.
9315         (supportable_narrowing_operation): Likewise.
9316         * tree-vectorizer.h (supportable_widening_operation): Add two
9317         arguments.
9318         (supportable_narrowing_operation): Likewise.
9319         * tree-vect-patterns.c (vect_recog_widen_mult_pattern) : Call
9320         supportable_widening_operation with correct arguments.
9321         * tree-vect-transform.c (vectorizable_conversion): Likewise.
9322         (vectorizable_type_demotion): Support double type conversions.
9323         (vectorizable_type_promotion): Likewise.
9324         * Makefile.in (tree-vectorizer.o): Depend on langhooks.h.
9325
9326 2008-08-11  Michael Matz  <matz@suse.de>
9327
9328         * i386/i386.c (override_options): Move initialisation from
9329         flag_schedule_insns_after_reload to here from ...
9330         (optimization_options): ... here.
9331
9332 2008-08-11  Jakub Jelinek  <jakub@redhat.com>
9333
9334         PR rtl-optimization/36998
9335         * dwarf2out.c (compute_barrier_args_size_1,
9336         compute_barrier_args_size): Temporarily remove assertions.
9337
9338 2008-08-10  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9339
9340         PR middle-end/20644
9341         * tree-ssa.c (struct walk_data): Add new flag
9342         warn_possibly_uninitialized.
9343         (warn_uninitialized_var): Use it.
9344         (warn_uninitialized_vars): New.
9345         (execute_early_warn_uninitialized): Call it.
9346         (execute_late_warn_uninitialized): Likewise.
9347
9348 2008-08-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9349
9350         PR middle-end/36238
9351         * reload1.c (gen_reload): Guard calls to get_secondary_mem
9352         for memory subregs.
9353
9354 2008-08-09  Jan Hubicka  <jh@suse.cz>
9355
9356         PR target/37055
9357         * optabs.c (maybe_emit_unop_insn): Remove produced code if
9358         expansion failed.
9359         (expand_fix): Be prepared for expansion to fail.
9360         (expand_sfix_optab): Remove instructions if expansion failed.
9361
9362 2008-08-09  Anatoly Sokolov  <aesok@post.ru>
9363
9364         * config/avr/avr.c (avr_mcu_types): Move the AT43USB320 device to
9365         avr31 architecture.
9366         * config/avr/avr.h (CRT_BINUTILS_SPECS): (Ditto.).
9367         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
9368
9369 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
9370
9371         * config.gcc (mips*-*-linux*, mips64*-*-linux*): Add
9372         mips/t-libgcc-mips16 to tmake_file.
9373         * config/mips/mips-protos.h (mips_call_type): New enum.
9374         (mips_pic_base_register, mips_got_load): Declare.
9375         (mips_restore_gp): Take an rtx argument.
9376         (mips_use_pic_fn_addr_reg_p): Declare.
9377         (mips_expand_call): Replace the sibcall_p argument with
9378         a mips_call_type argument.  Add a lazy_p parameter.
9379         (mips_split_call): Declare.
9380         * config/mips/mips.h (MIPS16_PIC_TEMP_REGNUM): New macro.
9381         (MIPS16_PIC_TEMP): Likewise.
9382         (reg_class): Delete M16_NA_REGS.
9383         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Update accordingly.
9384         (SYMBOL_FLAG_BIND_NOW, SYMBOL_REF_BIND_NOW_P): New macros.
9385         (mips_split_hi_p): Declare.
9386         * config/mips/mips.c (mips_split_hi_p): New array.
9387         (mips_regno_to_class): Change M16_NA_REGS entries to M16_REGS.
9388         (mips_got_symbol_type_p): New function.
9389         (mips_global_symbol_p): Check SYMBOL_REF_EXTERNAL_P.
9390         (mips16_stub_function_p): New function.
9391         (mips16_local_function_p): Likewise.
9392         (mips_use_pic_fn_addr_reg_p): Likewise.
9393         (mips_cannot_force_const_mem): Return false for HIGHs.
9394         Extend CONST_INT and symbolic handling to MIPS16, using
9395         mips_symbol_insns to check that the base symbol type is a
9396         legitimate constant.  Reject GOT-based constants if
9397         TARGET_MIPS16_PCREL_LOADS.
9398         (mips_const_insns): Check targetm.cannot_force_const_mem when
9399         decomposing a symbolic base and a large offset.
9400         (mips_emit_call_insn): Add ORIG_ADDR and ADDR parameters.
9401         When calling a function that needs $25 from MIPS16 code,
9402         move the target address into $25 separately and add a USE
9403         to the call insn.
9404         (mips16_gp_pseudo_reg): Insert the initializer immediately
9405         before the first real insn.
9406         (mips_pic_base_register, mips_got_load): New functions.
9407         (mips_split_symbol): Generalize the name of the LO_SUM_OUT
9408         parameter to LOW_OUT.  Say that it can be any valid SET_SRC
9409         when splitting a load-address operation.  Split SYMBOL_GOT_DISP
9410         constants and highs of SYMBOL_GOT_PAGE_OFST constants.
9411         (mips_call_tls_get_addr): Update the call to mips_expand_call,
9412         also passing NULL_RTX rather than const0_rtx as the aux argument.
9413         (mips_rewrite_small_data_p): Check mips_lo_relocs and mips_split_p
9414         instead of TARGET_EXPLICIT_RELOCS.
9415         (mips_ok_for_lazy_binding_p): Check SYMBOL_REF_BIND_NOW_P.
9416         (mips_load_call_address): Replace the sibcall_p argument with
9417         a mips_call_type argument.  Use mips_got_load.
9418         (mips16_local_alias): New structure.
9419         (mips16_local_aliases): New variable.
9420         (mips16_local_aliases_hash): New function.
9421         (mips16_local_aliases_eq): Likewise.
9422         (mips16_local_alias): Likewise.
9423         (mips16_stub_function): Likewise.
9424         (mips16_build_function_stub): Create a local alias for the target
9425         function.  Handle TARGET_ABICALLS.  For PIC abicalls, emit a
9426         .cpload directive and an R_MIPS_NONE relocation for the target
9427         function, then load the alias rather than the function itself.
9428         Wrap the non-PIC abicalls version in ".option pic0/.option pic2".
9429         (mips16_copy_fpr_return_value): Use mips16_stub_function and
9430         mips_expand_call.  Set SYMBOL_REF_BIND_NOW on the symbol.
9431         (mips16_build_call_stub): Replace the FN parameter with an
9432         FN_PTR parameter.  Force the address into a register if it
9433         isn't a call_insn_operand; don't rely on the caller to do this.
9434         If a call to a locally-defined and locally-binding MIPS16
9435         function must be made indirectly, redirect the call to the
9436         function's local alias.  Use mips16_stub_function_p,
9437         mips16_stub_function, mips_expand_call and use_reg.
9438         Set SYMBOL_FLAG_BIND_NOW on __mips_call_* symbols.
9439         Use explicit %hi and %lo accesses where possible.
9440         Use MIPS_CALL to generate the correct code form of a
9441         jal instruction.  Add clobbers of $18 instead of uses.
9442         Update the call to mips_emit_call_insn.
9443         (mips_expand_call): Replace the SIBCALL_P argument with a
9444         mips_call_type argument and handle the new MIPS_CALL_EPILOGUE value.
9445         Take a LAZY_P parameter.  Call mips16_build_call_stub first,
9446         allowing it to modify the call address.  Update the calls to
9447         mips_load_call_address and mips_emit_call_insn.
9448         (mips_split_call): New function.
9449         (mips_init_relocs): Clear mips_split_hi_p.  Only use %gp_rel if
9450         !TARGET_MIPS16.  Split SYMBOL_GOT_DISP, and the high parts of
9451         SYMBOL_GOT_PAGE_OFST, for MIPS16 code.
9452         (mips_global_pointer): Check mips16_cfun_returns_in_fpr_p.
9453         (mips_extra_live_on_entry): Include MIPS16_PIC_TEMP_REGNUM
9454         if TARGET_MIPS16.
9455         (mips_cprestore_slot): New function.
9456         (mips_restore_gp): Take a TEMP parameter.  Handle TARGET_MIPS16
9457         and use mips_cprestore_slot.
9458         (mips_output_function_prologue): Handle TARGET_MIPS16 for
9459         LOADGP_OLDABI.
9460         (mips_emit_loadgp): Move into MIPS16_PIC_TEMP for MIPS16,
9461         then use a copygp_mips16 instruction to set up $28.
9462         (mips_expand_prologue): Initialize the cprestore slot for MIPS16 too.
9463         (mips16_lay_out_constants): Call split_all_insns_noflow.
9464         (mips_reorg_process_insns): Explicitly set all_noreorder_p to
9465         false if TARGET_MIPS16.
9466         (mips_reorg): Don't call vr4130_align_insns if TARGET_MIPS16.
9467         (mips_output_mi_thunk): Use mips_got_symbol_type_p.  Use the
9468         mips_dangerous_for_la25_p approach for MIPS16 PIC calls too.
9469         (mips_set_mips16_mode): Always set MASK_EXPLICIT_RELOCS for
9470         MIPS16 code.  Allow MIPS16 o32 PIC.
9471         (mips_override_options): Allow MIPS16 o32 PIC.
9472         * config/mips/mips.md: Lower CONST_GP_P moves into register moves
9473         after reload if TARGET_USE_GOT.
9474         (UNSPEC_COPYGP): New constant.
9475         (length): Use a default length of 8 for MIPS16 GOT loads.
9476         (*got_disp<mode>): Check mips_split_p instead of TARGET_XGOT.
9477         (*got_page<mode>): Check mips_split_hi_p.
9478         (*got_disp<mode>, *got_page<mode>): Use mips_got_load.
9479         (unspec_got<mode>, unspec_call<mode>): New expanders.
9480         (load_got<mode>, load_call<mode>): Remove the length attributes.
9481         Use a got attribute instead of a type attribute.
9482         (copygp_mips16): New insn.
9483         (restore_gp): Add a scratch clobber and pass it to mips_restore_gp.
9484         (load_call<mode>): Use a "d" constraint instead of an "r" constraint.
9485         (sibcall, sibcall_value, call, call_value): Update the calls
9486         to mips_expand_call.
9487         (call_internal, call_value_internal): Use mips_split_call.
9488         (call_value_multiple_internal): Likewise.
9489         (call_split): Move after call_internal (the insn it is split from).
9490         (call_internal_direct, call_value_internal_direct): Turn into
9491         define_insn_and_splits.  Split if TARGET_SPLIT_CALLS.
9492         (call_direct_split, call_value_direct_split): New patterns.
9493         * config/mips/constraints.md (c): Handle TARGET_MIPS16 first
9494         and use M16_REGS instead of M16_NA_REGS.
9495         * config/mips/predicates.md (const_call_insn_operand): Replace
9496         the TARGET_ABSOLUTE_ABICALLS-based check with a more general
9497         mips_use_pic_fn_addr_reg_p check.
9498         (move_operand): Reject HIGHs if mips_split_hi_p.
9499         * config/mips/mips16.S: Assembly as empty if the ABI is not suitable.
9500         (__mips16_floatunsisf): Inline __mips16_floatsisf.
9501         (CALL_STUB_NO_RET, CALL_STUB_REG): Copy the target register to $25.
9502         * config/mips/libgcc-mips16.ver: New file.
9503         * config/mips/t-libgcc-mips16 (SHLIB_MAPFILES): Add
9504         $(srcdir)/config/mips/libgcc-mips16.ver.
9505
9506 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
9507
9508         * config/mips/mips.c (mips_unspec_address_offset): Move earlier
9509         in file.
9510         (mips_unspec_address, mips_unspec_offset_high): Likewise.
9511         (mips_ok_for_lazy_binding_p, mips_load_call_address): Likewise.
9512         (mips16_cfun_returns_in_fpr_p): Likewise.
9513
9514 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
9515
9516         * config/mips/mips.h (MASK_RETURN_ADDR): Expand commentary.
9517         * config/mips/linux-unwind.h (mips_fallback_frame_state): Add 2
9518         rather than 4 to PC.
9519
9520 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
9521
9522         * config/mips/mips.h (STATIC_CHAIN_REGNUM): Remap to $15.
9523         (FUNCTION_PROFILER): Save the static chain pointer into $2
9524         beforehand and restore it aftewards.
9525         (TRAMPOLINE_TEMPLATE): Adjust accordingly.  Load the target
9526         address directly into $25 and call the function through $25;
9527         do not clobber $3.  Pad the DImode version to cover the space
9528         left by the deleted $25 <- $3 move.
9529         (TRAMPOLINE_SIZE): Adjust the size of the SImode version after
9530         the removal of the $25 <- $3 move.
9531         (INITIALIZE_TRAMPOLINE): Update offsets accordingly.
9532         * config/mips/sdemtk.h (FUNCTION_PROFILER): As for mips.h.
9533
9534 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
9535             Daniel Jacobowitz  <dan@codesourcery.com>
9536
9537         * config/mips/mips.h (FUNCTION_NAME_ALREADY_DECLARED): Delete.
9538         * config/mips/linux.h (ASM_DECLARE_FUNCTION_NAME): Delete.
9539         (ASM_DECLARE_FUNCTION_SIZE, FUNCTION_NAME_ALREADY_DECLARED): Delete.
9540         * config/mips/mips.c (mips_start_function_definition): New function.
9541         (mips_end_function_definition): Likewise.
9542         (mips_output_function_prologue): Use mips_start_function_definition.
9543         (mips_output_function_epilogue): Use mips_end_function_definition.
9544         (build_mips16_function_stub): Use mips_start_function_definition
9545         and mips_end_function_definition.
9546         (build_mips16_call_stub): Likewise.
9547
9548 2008-08-09  Richard Guenther  <rguenther@suse.de>
9549
9550         * gimple.c (gimple_build_call_1): Deal with FUNCTION_DECL fn.
9551         * gimple.h (gimple_call_fn): Adjust comment.
9552         (gimple_call_set_fndecl): New function.
9553         (gimple_call_fndecl): Adjust for GIMPLE_CALL no
9554         longer having bare FUNCTION_DECL operand.
9555         (gimple_call_return_type): Likewise.
9556         * tree-cfg.c (verify_stmt): Verify function operand of a GIMPLE_CALL.
9557
9558         * value-prof.c (gimple_divmod_fixed_value): Do not emit labels.
9559         (gimple_mod_pow2): Likewise.
9560         (gimple_mod_subtract): Likewise.
9561         (gimple_ic): Likewise.
9562         (gimple_stringop_fixed_value): Likewise.
9563         (gimple_indirect_call_to_profile): Fix for GIMPLE_CALL no
9564         longer having bare FUNCTION_DECL operand.
9565         * ipa-cp.c (ipcp_update_callgraph): Use gimple_call_set_fndecl.
9566         * omp-low.c (optimize_omp_library_calls): Likewise.
9567         * cgraphunit.c (update_call_expr): Likewise.
9568         * tree-ssa-math-opts.c (execute_cse_reciprocals): Likewise.
9569         (execute_convert_to_rsqrt): Likewise.
9570         * cfgexpand.c (gimple_to_tree): Simplify.
9571         (release_stmt_tree): Fix for GIMPLE_CALL no longer having
9572         bare FUNCTION_DECL operand.
9573         * tree-nested.c (init_tmp_var_with_call): Use gimple_call_return_type.
9574         (convert_gimple_call): Use gimple_call_fndecl.
9575         * c-common.c (c_warn_unused_result): Likewise.
9576
9577 2008-08-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9578
9579         PR c/17880
9580         * c-typeck.c (digest_init): Call verify_sequence_points from here.
9581         (c_finish_return): Likewise.
9582         (c_start_case): Likewise.
9583         * c-common.c (warn_for_collisions_1): Use explicit location in warning.
9584         * c-parser.c (c_parser_condition): New. Call
9585         verify_sequence_points.
9586         (c_parser_paren_condition): Call c_parser_condition.
9587         (c_parser_for_statement): Call c_parser_condition.
9588
9589 2008-08-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9590
9591         PR 36901
9592         * diagnostic.def (DK_PEDWARN, DK_PERMERROR): New.
9593         * diagnostic.c (pedantic_warning_kind, permissive_error_kind):
9594         Moved from diagnostic.h
9595         (diagnostic_report_diagnostic): Return bool. Handle DK_PEDWARN and
9596         DK_PERMERROR.
9597         (emit_diagnostic): New.
9598         (warning0, pedwarn0): Delete.
9599         (warning, warning_at, pedwarn, permerror): Return bool.
9600         * diagnostic.h (pedantic_warning_kind, permissive_error_kind):
9601         Moved to diagnostic.c.
9602         (struct diagnostic_context): Use correct type for
9603         classify_diagnostic.
9604         (diagnostic_report_diagnostic): Update declaration.
9605         (emit_diagnostic): Declare.
9606         * errors.c (warning): Return bool.
9607         * errors.h (warning): Update declaration.
9608         * toplev.h (warning0, pedwarn0): Delete.
9609         (warning, warning_at, pedwarn, permerror): Return bool.
9610         * c-errors.c (pedwarn_c99, pedwarn_c90): Use DK_PEDWARN.
9611         * c-decl.c (locate_old_decl): Delete 'diag' argument. Always use
9612         inform. Update all calls.
9613         (diagnose_mismatched_decls): Check return value of warning/pedwarn
9614         before giving informative note.
9615         (implicit_decl_warning): Likewise.
9616         * c-typeck.c (build_function_call): Likewise.
9617         * tree-sssa.c (warn_uninit): Likewise.
9618         * builtins.c (gimplify_va_arg_expr): Likewise.
9619
9620 2008-08-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9621
9622         PR 7651
9623         * doc/invoke.texi (-Wextra): Move warning from here...
9624         (-Wuninitialized): ... to here.
9625
9626 2008-08-08  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9627
9628         PR 28875
9629         * flags.h (set_Wunused): Delete
9630         * toplev.c (process_options): Handle Wunused flags here.
9631         * opts.c (maybe_warn_unused_parameter): Delete.
9632         (common_handle_option): Replace set_Wunused by warn_unused.
9633         (set_Wextra): Do not handle Wunused-parameter here.
9634         (set_Wunused): Delete.
9635         * c-opts.c (c_common_handle_option): Replace set_Wunused by
9636         warn_unused.
9637         * common.opt (Wunused): Add Var and Init.
9638         (Wunused-function): Likewise.
9639         (Wunused-label): Likewise.
9640         (Wunused-parameter): Likewise.
9641         (Wunused-value): Likewise.
9642         (Wunused-variable): Likewise.
9643
9644 2008-08-08  Peter Bergner  <bergner@vnet.ibm.com>
9645
9646         * doc/invoke.texi: Add cpu_type power7.
9647         * config.in (HAVE_AS_VSX): New.
9648         * config.gcc: Add cpu_type power7.
9649         * configure.ac (HAVE_AS_VSX): Check for assembler support of the
9650         VSX instructions.
9651         * configure: Regenerate.
9652         * config/rs6000/rs6000.c (rs6000_override_options): Alias power7 to
9653         power5.
9654         * config/rs6000/rs6000.h (ASM_CPU_POWER7_SPEC): Define.
9655         (ASM_CPU_SPEC): Pass %(asm_cpu_power7) for -mcpu=power7.
9656         (EXTRA_SPECS): Add asm_cpu_power7 spec string.
9657
9658 2008-08-08  Dorit Nuzman  <dorit@il.ibm.com>
9659
9660         * tree-vect-transform.c (vectorizable_conversion): Pass the integral
9661         type to vectorize.builtin_conversion.
9662         (vectorizable_conversion): Likewise.
9663         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Always takes
9664         integral type as input.
9665         * config/rs6000/rs6000.c (rs6000_builtin_conversion): Add case for
9666         FIX_TRUNC_EXPR.
9667         (rs6000_expand_builtin): Add case for ALTIVEC_BUILTIN_VCTUXS
9668         and ALTIVEC_BUILTIN_VCTSXS.
9669         (rs6000_builtin_mul_widen_even. rs6000_builtin_mul_widen_odd): Fix
9670         formatting.
9671
9672 2008-08-08  Richard Guenther  <rguenther@suse.de>
9673
9674         * tree-ssa-ccp.c (likely_value): Calls are not all varying.
9675         (surely_varying_stmt_p): Calls are varying only if they are
9676         non-builtin and not indirect or have no result.
9677         (ccp_fold): Re-instantiate code before the tuples merge.
9678
9679 2008-08-08  Richard Guenther  <rguenther@suse.de>
9680
9681         PR tree-optimization/37056
9682         * gimple.h (gimple_assign_rhs_class): New helper function.
9683         * tree-ssa-loop-niter.c (get_val_for): Fix tuplification, handle
9684         unary operations properly.
9685
9686 2008-08-07  Jan Hubicka  <jh@suse.cz>
9687
9688         * i386.h (ix86_size_cost): Declare.
9689         (ix86_cur_cost): New function macro.
9690         * i386.md (peepholes expanding size and splitters): Predicate by
9691         optimize_insn_for_speed_p.
9692         (peepholes reduce size and splitters): Predicate by
9693         optimize_insn_for_size_p.
9694         * i386.c (ix86_size_cost): Rename from ...
9695         (size_cost): This one.
9696         (override_options): Update.
9697         (decide_alg): Likewise.
9698         (ix86_expand_clear): Use RTL profile.
9699         (ix86_pad_returns): Use RTL profile.
9700
9701 2008-08-07  Jan Hubicka  <jh@suse.cz>
9702
9703         * recog.c (split_all_insns): Set RTL profile
9704         (peephole2_optimize): Likewise.
9705         * function.c (thread_prologue_and_epilogue_insns): Likewise.
9706         * combine.c (combine_instructions): Likewise.
9707
9708 2008-08-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9709
9710         * c-common.c (c_common_reswords): Also warn about keyword "bool".
9711
9712 2008-08-07  Bob Wilson  <bob.wilson@acm.org>
9713
9714         * config/xtensa/xtensa.c (xtensa_copy_incoming_a7): Copy incoming
9715         value in a6 after the set_frame_ptr insn.
9716
9717 2008-08-07  Richard Henderson  <rth@redhat.com>
9718
9719         PR debug/37033
9720         * gcc.c (cpp_options): Pass along -g*.
9721
9722 2008-08-07  Joseph Myers  <joseph@codesourcery.com>
9723
9724         * config/arm/arm.c (output_move_neon): Update comment describing
9725         big-endian vector layout.
9726         (arm_assemble_integer): Do not handle big-endian NEON vectors
9727         specially.
9728         * config/arm/neon.md (vec_set<mode>_internal, vec_extract<mode>,
9729         neon_vget_lane<mode>_sext_internal,
9730         neon_vget_lane<mode>_zext_internal, neon_vget_lane<mode>): Adjust
9731         element indices for big-endian.
9732
9733 2008-08-07  Richard Henderson  <rth@redhat.com>
9734
9735         * configure.ac (HAVE_GAS_CFI_PERSONALITY_DIRECTIVE): New.
9736         * configure, config.in: Rebuild.
9737         * debug.h (dwarf2out_do_cfi_asm): Declare.
9738         * c-cppbuiltin.c (c_cpp_builtins): Use it.
9739         * dwarf2out.c (dwarf2out_do_cfi_asm): New.
9740         (dwarf2out_cfi_label, add_fde_cfi, output_call_frame_info,
9741         dwarf2out_begin_prologue, dwarf2out_end_epilogue): Use it.
9742
9743 2008-08-07  Joseph Myers  <joseph@codesourcery.com>
9744
9745         * config/arm/iwmmxt.md (movv8qi_internal, movv4hi_internal,
9746         movv2si_internal): Combine into mov<mode>_internal.
9747         (movv2si_internal_2): Remove.
9748
9749 2008-08-07  Jan Hubicka  <jh@suse.cz>
9750
9751         PR target/37048
9752         * i386.md (single stringop patterns): Enable unconditionally.
9753
9754 2008-08-07  H.J. Lu  <hongjiu.lu@intel.com>
9755
9756         PR target/36992
9757         * config/i386/emmintrin.h (_mm_move_epi64): Use __builtin_ia32_movq128.
9758
9759         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MOVQ128.
9760         (bdesc_args): Add IX86_BUILTIN_MOVQ128.
9761
9762         * config/i386/sse.md (sse2_movq128): New.
9763
9764         * doc/extend.texi: Document __builtin_ia32_movq128.
9765
9766 2008-08-07  Richard Guenther  <rguenther@suse.de>
9767
9768         PR middle-end/37042
9769         * tree-ssa-alias-warnings.c (nonstandard_alias_p): Ref-all
9770         pointers can access anything.
9771
9772 2008-08-06  Jan Hubicka  <jh@suse.cz>
9773
9774         * optabs.c (emit_unop_insn): Break out to ...
9775         (maybe_emit_unop_insn): ... this one.
9776         (expand_sfix_optab): Use maybe variant.
9777         * optabs.h (maybe_emit_unop_insn): Declare.
9778
9779         * i386.md (mov0 patterns): Enable by default.
9780         (FP conversion expanders): Disable expansion of code expanding
9781         sequences when instruction should be optimized for size.
9782         (single strinop patterns): Enable when optimizing for size.
9783         (string expanders): Disable expanding of code expanding sequences
9784         when optimizning instruction for size.
9785         * i386.c (ix86_expand_vector_move_misalign): Do code size optimization
9786         per BB basis.
9787         (ix86_fp_comparison_sahf_cost): Likewise.
9788         (ix86_expand_branch): Likewise.
9789         (ix86_expand_ashl_const): Likewise.
9790         (ix86_split_ashl): Likewise.
9791         (ix86_expand_strlen): Likewise.
9792         (ix86_emit_fp_unordered_jump): Likewie.
9793
9794 2008-08-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9795
9796         * c-common.c: Fix typo.
9797         (c_common_reswords): Activate more C++ keyword warnings.
9798
9799         * matrix-reorg.c (compute_offset): Avoid C++ keywords.
9800
9801 2008-08-06  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9802
9803         PR 26785
9804         * diagnostic.c (permerror_at): New.
9805         * toplev.h (permerror_at): Declare.
9806
9807 2008-08-06  Victor Kaplansky  <victork@il.ibm.com>
9808             Ira Rosen  <irar@il.ibm.com>
9809
9810         * tree-vect-transform.c (vect_model_simple_cost): Return
9811         immediately if stmt is pure SLP.
9812         (vect_model_store_cost): Ditto.
9813         (vect_model_load_cost): Ditto.
9814         (vectorizable_store): Remove PURE_SLP check before call
9815         to vect_model_store_cost.
9816         (vect_model_store_cost): When checking whether stmt describe
9817         strided access, add a check that it is not slp_node.
9818
9819 2008-08-06  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9820
9821         PR 8715
9822         * c-common.c (warn_for_sign_compare): New. Handle separately the
9823         case that 'constant' is zero.
9824         * c-typeck.c (build_binary_op): Move code to c-common.c
9825
9826 2008-08-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9827
9828         * config/alpha/alpha.c (alpha_preferred_reload_class,
9829         alpha_secondary_reload, alpha_emit_set_const_1, function_value,
9830         alpha_output_mi_thunk_osf): Avoid C++ keywords.
9831         * config/arm/arm.c (output_move_vfp, output_move_neon): Likewise.
9832         * config/arm/arm.md: Likewise.
9833         * config/avr/avr-protos.h (preferred_reload_class,
9834         test_hard_reg_class, avr_simplify_comparison_p,
9835         out_shift_with_cnt, class_max_nregs): Likewise.
9836         * config/avr/avr.c (class_max_nregs, avr_simplify_comparison_p,
9837         output_movqi, output_movhi, output_movsisf, out_shift_with_cnt,
9838         preferred_reload_class, test_hard_reg_class): Likewise.
9839         * config/bfin/bfin.c (legitimize_pic_address, hard_regno_mode_ok,
9840         bfin_memory_move_cost, bfin_secondary_reload,
9841         bfin_output_mi_thunk): Likewise.
9842         * config/crx/crx.c (crx_secondary_reload_class,
9843         crx_memory_move_cost): Likewise.
9844         * config/frv/frv-protos.h (frv_secondary_reload_class,
9845         frv_class_likely_spilled_p, frv_class_max_nregs): Likewise.
9846         * config/frv/frv.c (frv_override_options, frv_alloc_temp_reg,
9847         frv_secondary_reload_class, frv_class_likely_spilled_p,
9848         frv_class_max_nregs): Likewise.
9849         * config/h8300/h8300.c (h8300_classify_operand,
9850         h8300_unary_length, h8300_bitfield_length, h8300_asm_insn_count):
9851         Likewise.
9852         * config/i386/winnt.c (i386_pe_declare_function_type): Likewise.
9853         * config/ia64/ia64.c (ia64_preferred_reload_class,
9854         ia64_secondary_reload_class, ia64_output_mi_thunk): Likewise.
9855         * config/iq2000/iq2000.c (gen_int_relational): Likewise.
9856         * config/m32c/m32c.c (class_can_hold_mode, m32c_output_compare):
9857         Likewise.
9858         * config/m68hc11/m68hc11.c (preferred_reload_class,
9859         m68hc11_memory_move_cost): Likewise.
9860         * config/mcore/mcore.c (mcore_secondary_reload_class,
9861         mcore_reload_class): Likewise.
9862         * config/mips/mips.c (mips_hard_regno_mode_ok_p,
9863         mips_class_max_nregs, mips_cannot_change_mode_class,
9864         mips_preferred_reload_class, mips_secondary_reload_class,
9865         mips_output_mi_thunk): Likewise.
9866         * config/mmix/mmix.c (mmix_preferred_reload_class,
9867         mmix_preferred_output_reload_class, mmix_secondary_reload_class):
9868         Likewise.
9869         * config/mn10300/mn10300.c (mn10300_secondary_reload_class):
9870         Likewise.
9871         * config/pa/pa.c (pa_secondary_reload, pa_combine_instructions,
9872         pa_can_combine_p, pa_cannot_change_mode_class): Likewise.
9873         * config/pa/pa.h (LEGITIMIZE_RELOAD_ADDRESS): Likewise.
9874         * config/rs6000/rs6000.c (paired_expand_vector_init,
9875         rs6000_secondary_reload_class, rs6000_output_mi_thunk,
9876         compare_section_name, rs6000_memory_move_cost): Likewise.
9877         * config/s390/s390.c (s390_emit_compare_and_swap,
9878         s390_preferred_reload_class, s390_secondary_reload,
9879         legitimize_pic_address, legitimize_tls_address,
9880         legitimize_reload_address, s390_expand_cs_hqi, s390_expand_atomic,
9881         s390_class_max_nregs): Likewise.
9882         * config/s390/s390.h (LEGITIMIZE_RELOAD_ADDRESS): Likewise.
9883         * config/s390/s390.md: Likewise.
9884         * config/score/score-protos.h (score_secondary_reload_class,
9885         score_preferred_reload_class): Likewise.
9886         * config/score/score.c (score_preferred_reload_class,
9887         score_secondary_reload_class): Likewise.
9888         * config/score/score3.c (score3_output_mi_thunk,
9889         score3_preferred_reload_class, score3_secondary_reload_class,
9890         score3_hard_regno_mode_ok): Likewise.
9891         * config/score/score3.h (score3_preferred_reload_class,
9892         score3_secondary_reload_class): Likewise.
9893         * config/score/score7.c (score7_output_mi_thunk,
9894         score7_preferred_reload_class, score7_secondary_reload_class,
9895         score7_hard_regno_mode_ok): Likewise.
9896         * config/score/score7.h (score7_preferred_reload_class,
9897         score7_secondary_reload_class): Likewise.
9898         * config/sh/sh.c (prepare_move_operands, output_far_jump,
9899         output_branchy_insn, add_constant, gen_block_redirect,
9900         sh_insn_length_adjustment, sh_cannot_change_mode_class,
9901         sh_output_mi_thunk, replace_n_hard_rtx, sh_secondary_reload): Likewise.
9902         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
9903         * config/stormy16/stormy16.c (xstormy16_output_cbranch_hi,
9904         xstormy16_output_cbranch_si, xstormy16_secondary_reload_class,
9905         xstormy16_preferred_reload_class): Likewise.
9906         * config/xtensa/xtensa.c (xtensa_expand_compare_and_swap,
9907         xtensa_expand_atomic, override_options,
9908         xtensa_preferred_reload_class, xtensa_secondary_reload_class):
9909         Likewise.
9910         * reorg.c (try_merge_delay_insns): Likewise.
9911         * tree.c (merge_dllimport_decl_attributes): Likewise.
9912
9913         * config/frv/frv.c (frv_print_operand): Change isalpha to ISALPHA.
9914
9915 2008-08-06  Michael Matz  <matz@suse.de>
9916
9917         * Makefile.in (write_entries_to_file): Quote words.
9918         * gengtype.c: (read_input_line): Skip over leading white-space.
9919
9920 2008-08-06  Marc Gauthier  <marc@tensilica.com>
9921
9922         * config.gcc: Match more processor names for Xtensa.
9923         * configure.ac: Likewise.
9924         * doc/install.texi (Specific): Likewise.
9925         * configure: Regenerate.
9926
9927 2008-08-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9928
9929         * builtins.c (expand_builtin_profile_func): Avoid C++ keywords.
9930         * calls.c (avoid_likely_spilled_reg): Likewise.
9931         * cfgexpand.c (gimple_assign_rhs_to_tree): Likewise.
9932         * cgraph.c (cgraph_clone_edge, cgraph_clone_node): Likewise.
9933         * config/i386/i386.c (ix86_expand_special_args_builtin,
9934         ix86_secondary_reload): Likewise.
9935         * except.c (struct eh_region, gen_eh_region_catch,
9936         remove_unreachable_regions, duplicate_eh_regions,
9937         assign_filter_values, build_post_landing_pads,
9938         sjlj_find_directly_reachable_regions, remove_eh_handler,
9939         reachable_next_level, foreach_reachable_handler,
9940         can_throw_internal_1, can_throw_external_1,
9941         collect_one_action_chain): Likewise.
9942         * expr.c (expand_expr_real_1, vector_mode_valid_p): Likewise.
9943         * fold-const.c (twoval_comparison_p, eval_subst): Likewise.
9944         * function.c (update_temp_slot_address, instantiate_new_reg,
9945         instantiate_virtual_regs_in_rtx,
9946         instantiate_virtual_regs_in_insn): Likewise.
9947         * gimple.c (extract_ops_from_tree, gimple_seq_copy): Likewise.
9948         * gimplify.c (gimplify_call_expr, gimplify_init_constructor,
9949         gimplify_cleanup_point_expr): Likewise.
9950         * ipa-cp.c (ipcp_lattice_changed): Likewise.
9951         * passes.c (next_pass_1): Likewise.
9952         * print-tree.c (print_node_brief, print_node): Likewise.
9953         * profile.c (branch_prob): Likewise.
9954         * tree-dump.c (dump_register): Likewise.
9955         * tree-eh.c (replace_goto_queue_cond_clause, lower_catch):
9956         Likewise.
9957         * tree-inline.c (remap_ssa_name, remap_type_1, remap_blocks,
9958         copy_statement_list, remap_gimple_op_r, copy_tree_body_r,
9959         copy_edges_for_bb, copy_cfg_body, copy_tree_r,
9960         copy_arguments_for_versioning, copy_static_chain): Likewise.
9961         * tree-into-ssa.c (names_replaced_by, add_to_repl_tbl,
9962         add_new_name_mapping, register_new_name_mapping): Likewise.
9963         * tree-mudflap.c (mf_xform_derefs): Likewise.
9964         * tree-predcom.c (struct chain, dump_chain, replace_ref_with,
9965         get_init_expr, combine_chains): Likewise.
9966         * tree-pretty-print.c (dump_generic_node): Likewise.
9967         * tree-ssa-structalias.c (create_variable_info_for): Likewise.
9968         * tree-vrp.c (simplify_cond_using_ranges): Likewise.
9969         * tree.c (substitute_in_expr, iterative_hash_expr): Likewise.
9970         * value-prof.c (gimple_duplicate_stmt_histograms): Likewise.
9971
9972 2008-08-06  H.J. Lu  <hongjiu.lu@intel.com>
9973
9974         PR middle-end/37010
9975         * calls.c (expand_call): Use the biggest preferred stack
9976         boundary.
9977
9978 2008-08-06  Michael Matz  <matz@suse.de>
9979
9980         PR target/36613
9981         * reload.c (push_reload): Merge in,out,in_reg,out_reg members
9982         for reused reload, instead of overwriting them.
9983
9984 2008-08-06  H.J. Lu  <hongjiu.lu@intel.com>
9985
9986         PR middle-end/37009
9987         * cfgexpand.c (expand_stack_alignment): Check parm_stack_boundary
9988         for incoming stack boundary.
9989
9990         * function.c (assign_parm_find_entry_rtl): Update
9991         parm_stack_boundary.
9992
9993         * function.h (rtl_data): Add parm_stack_boundary.
9994
9995         * config/i386/i386.c (ix86_finalize_stack_realign_flags): Check
9996         parm_stack_boundary for incoming stack boundary.
9997
9998 2008-08-06  Joseph Myers  <joseph@codesourcery.com>
9999
10000         * jump.c (rtx_renumbered_equal_p): Do not call subreg_regno_offset
10001         for unrepresentable subregs or treat them as equal to other regs
10002         or subregs with the same register number.
10003
10004 2008-08-06  Aldy Hernandez  <aldyh@redhat.com>
10005
10006         PR middle-end/35432
10007         * gimplify.c (gimplify_modify_expr): Do not optimize zero-sized types
10008         if want_value.
10009
10010 2008-08-06  Jan Hubicka  <jh@suse.cz>
10011
10012         * predict.c (maybe_hot_frequency_p): When profile is absent, all
10013         frequencies might be hot.
10014
10015 2008-08-06  Andreas Krebbel  <krebbel1@de.ibm.com>
10016
10017         * reload.c (find_reloads): Force constants into literal pool
10018         also if they are wrapped in a SUBREG.
10019
10020 2008-08-06  Maxim Kuvyrkov  <maxim@codesourcery.com>
10021
10022         PR target/35659
10023         * haifa-sched.c (sched_insn_is_legitimate_for_speculation_p): Move ...
10024         * sched-deps.c (sched_insn_is_legitimate_for_speculation_p): ... here.
10025         Don't allow predicated instructions for data speculation.
10026         * sched-int.h (sched_insn_is_legitimate_for_speculation_p): Move
10027         declaration.
10028
10029 2008-08-06  Maxim Kuvyrkov  <maxim@codesourcery.com>
10030
10031         * haifa-sched.c (extend_global): Split to extend_global_data and
10032         extend_region_data.  Update all uses.
10033         (extend_all): Rename to extend_block_data.
10034
10035 2008-08-06  Maxim Kuvyrkov  <maxim@codesourcery.com>
10036
10037         * sched-rgn.c (new_ready): Check if instruction can be
10038         speculatively scheduled before attempting speculation.
10039         (debug_rgn_dependencies): Remove wrongful assert.
10040
10041 2008-08-05  Bob Wilson  <bob.wilson@acm.org>
10042
10043         * config/xtensa/t-xtensa: Remove dependency for gt-xtensa.h.
10044
10045 2008-08-05  Bob Wilson  <bob.wilson@acm.org>
10046
10047         * config/xtensa/xtensa.c (xtensa_va_start): Unshare valist.
10048         (xtensa_gimplify_va_arg_expr): Unshare valist, orig_ndx, ndx, array,
10049         va_size, and type_size.
10050
10051 2008-08-04  Jason Merrill  <jason@redhat.com>
10052
10053         PR c++/37016
10054         * tree-ssa.c (useless_type_conversion_p_1): Call langhook
10055         if TYPE_STRUCTURAL_EQUALITY_P is true for both types.
10056
10057 2008-08-05  Richard Henderson  <rth@redhat.com>
10058
10059         * configure.ac (HAVE_GAS_CFI_DIRECTIVE): Check .cfi_personality.
10060         * configure: Rebuild.
10061
10062 2008-08-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10063
10064         PR tree-opt/37024
10065         * tree-tailcall.c (process_assignment): Use gimple_assign_cast_p
10066         instead of IS_CONVERT_EXPR_CODE_P for seeing if the assignment
10067         is a conversion.
10068
10069 2008-08-05  Richard Henderson  <rth@redhat.com>
10070
10071         * Makefile.in (c-cppbuiltin.o): Depend on debug.h.
10072         * c-cppbuiltin.c (c_cpp_builtins): Define __GCC_HAVE_DWARF2_CFI_ASM.
10073         * doc/cpp.texi (__GCC_HAVE_DWARF2_CFI_ASM): Document it.
10074         * common.opt (fdwarf2-cfi-asm): New.
10075         * configure.ac (HAVE_GAS_CFI_DIRECTIVE): New.
10076         * config.in, configure: Rebuild.
10077         * dwarf2asm.c (dw2_asm_output_data_raw): New.
10078         (dw2_asm_output_data_uleb128_raw, dw2_asm_output_data_sleb128_raw):
10079         New.
10080         (dw2_force_const_mem): Externalize.
10081         * dwarf2asm.h: Update.
10082         * dwarf2out.c (dwarf2out_cfi_label): If flag_dwarf2_cfi_asm, don't
10083         generate a real label.
10084         (output_cfi_directive): New.
10085         (add_fde_cfi): If flag_dwarf2_cfi_asm, use it.
10086         (output_call_frame_info): Do nothing if flag_dwarf2_cfi_asm.
10087         (dwarf2out_begin_prologue): Emit .cfi_startproc, .cfi_personality,
10088         and .cfi_lsda.
10089         (dwarf2out_end_epilogue): Emit .cfi_endproc.
10090         (output_loc_operands_raw, output_loc_sequence_raw): New.
10091         (output_cfa_loc_raw): New.
10092
10093 2008-08-05  Paul Brook  <paul@codesourcery.com>
10094
10095         * doc/invoke.texi: Document new ARM -mfpu= and -mcpu= options.
10096         * config/arm/arm.c (all_fpus): Add vfpv3 and vfpv3-d16.
10097         (fp_model_for_fpu): Add entry for FPUTYPE_VFP3D16.
10098         (arm_file_start): Add FPUTYPE_VFP3D16.  Rename vfp3 to vfpv3.
10099         * config/arm/arm.h (TARGET_VFPD32): Define.
10100         (TARGET_VFP3): Use TARGET_VFPD32.
10101         (fputype): Add FPUTYPE_VFP3D16.
10102         (LAST_VFP_REGNUM): Use TARGET_VFPD32.
10103         * config/arm/constraints.md ("w"): Use TARGET_VFPD32.
10104         * config/arm/arm-cores.def: Add cortex-r4f.
10105         * config/arm/arm-tune.md: Regenerate.
10106
10107 2008-08-05  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
10108
10109         * config/spu_spu_mfcio.h: Wrap in extern "C" if __cplusplus.
10110         Reword some comments throughout the file.
10111
10112         (MFC_MIN_DMA_LIST_ELEMENTS): New define.
10113         (MFC_MAX_DMA_LIST_ELEMENTS): Likewise.
10114         (MFC_MIN_DMA_LIST_SIZE): Redefine in terms of
10115         MFC_MIN_DMA_LIST_ELEMENTS.
10116         (MFC_MAX_DMA_LIST_SIZE): Redefine in terms of
10117         MFC_MAX_DMA_LIST_ELEMENTS.
10118
10119         (MFC_START_ENABLE): Remove PPU-only define.
10120         (MFC_PUTS_CMD, MFC_PUTFS_CMD, MFC_PUTBS_CMD): Likewise.
10121         (MFC_GETS_CMD, MFC_GETFS_CMD, MFC_GETBS_CMD): Likewise.
10122
10123         (MFC_PUTB_CMD, MFC_PUTF_CMD): Reimplement using symbolic constants.
10124         (MFC_PUTL_CMD, MFC_PUTLB_CMD, MFC_PUTLF_CMD): Likewise.
10125         (MFC_PUTR_CMD, MFC_PUTRB_CMD, MFC_PUTRF_CMD): Likewise.
10126         (MFC_PUTRL_CMD, MFC_PUTRLB_CMD, MFC_PUTRLF_CMD): Likewise.
10127         (MFC_GETB_CMD, MFC_GETF_CMD): Likewise.
10128         (MFC_GETL_CMD, MFC_GETLB_CMD, MFC_GETLF_CMD): Likewise.
10129         (MFC_SNDSIGB_CMD, MFC_SNDSIGF_CMD): Likewise.
10130
10131         (MFC_SDCRT_CMD, MFC_SDCRTST_CMD): New defines.
10132         (MFC_SDCRZ_CMD, MFC_SDCRST_CMD, MFC_SDCRF_CMD): Likewise.
10133         (mfc_sdcrt, mfc_sdcrtst): Likewise.
10134         (mfc_sdcrz, mfc_sdcrst, mfc_sdcrf): Likewise.
10135
10136         (spu_read_machine_status): Fix typo.
10137
10138 2008-08-05  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
10139
10140         * config/spu/spu.h (CANNOT_CHANGE_MODE_CLASS): Allow (multi)word-sized
10141         SUBREG of multi-word hard register.
10142         * config/spu/spu.c (valid_subreg): Likewise.
10143         (adjust_operand): Handle SUBREGs of multi-word hard registers.
10144
10145 2008-08-04  Richard Guenther  <rguenther@suse.de>
10146
10147         * tree-ssa-loop-ivopts.c (add_iv_value_candidates): Also add
10148         the candidate with the stripped base if that base is different
10149         from the original base even for offset zero.
10150
10151 2008-08-04  Richard Guenther  <rguenther@suse.de>
10152
10153         PR middle-end/36691
10154         * tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Correctly
10155         check for no_overflow.
10156
10157 2008-08-04  Richard Guenther  <rguenther@suse.de>
10158
10159         * tree-vect-transform.c (vectorizable_call): Fix tuplification.
10160
10161 2008-08-04  Paul Brook  <paul@codesourcery.com>
10162
10163         * cofig/arm/arm.c (thumb_core_reg_alloc_order): New.
10164         (arm_order_regs_for_local_alloc): New function.
10165         * config/arm/arm-protos.h (arm_order_regs_for_local_alloc): Add
10166         prototype.
10167         * config/arm/arm.h (ORDER_REGS_FOR_LOCAL_ALLOC): Define.
10168
10169 2008-08-04  H.J. Lu  <hongjiu.lu@intel.com>
10170
10171         PR target/37012
10172         * config/i386/i386.c (ix86_expand_prologue): Use UNITS_PER_WORD
10173         instead of STACK_BOUNDARY / BITS_PER_UNIT to align stack.
10174         (ix86_expand_epilogue): Likewise.
10175
10176 2008-08-04  H.J. Lu  <hongjiu.lu@intel.com>
10177
10178         * config/i386/i386.c (ix86_compute_frame_layout): Fix a typo
10179         in comments.
10180
10181 2008-08-03  Uros Bizjak  <ubizjak@gmail.com>
10182
10183         * config/i386/mmx.md (*mov<mode>_internal_rex64): Use Yi instead of x
10184         to avoid inter-unit moves for !TARGET_INTER_UNIT_MOVES.
10185         (*movv2sf_internal_rex64): Ditto.
10186
10187 2008-08-03  Jan Hubicka  <jh@suse.cz>
10188
10189         * optabs.c (expand_binop, expand_builtin_pow, expand_builtin_powi,
10190         expand_builtin_strcat): Upse optimize_insn_for_speed predicate.
10191         * expmed.c (expand_smod_pow2): Likewise.
10192
10193 2008-08-03  Uros Bizjak  <ubizjak@gmail.com>
10194
10195         PR target/36992
10196         * config/i386/sse.md (vec_concatv2di): Add Y2 constraint to
10197         alternative 0 of operand 1.
10198         (*vec_concatv2di_rex64_sse): Ditto.
10199         (*vec_concatv2di_rex64_sse4_1): Add x constraint to alternative 0
10200         of operand 1.
10201         (*sse2_storeq_rex64): Penalize allocation of "r" registers.
10202         * config/i386/mmx.md (*mov<mode>_internal_rex64): Penalize allocation
10203         of "Y2" registers to avoid SSE <-> MMX conversions for DImode moves.
10204         (*movv2sf_internal_rex64): Ditto.
10205
10206 2008-08-02  Richard Guenther  <rguenther@suse.de>
10207
10208         PR target/35252
10209         * config/i386/sse.md (SSEMODE4S, SSEMODE2D): New mode iterators.
10210         (ssedoublesizemode): New mode attribute.
10211         (sse_shufps): Call gen_sse_shufps_v4sf.
10212         (sse_shufps_1): Macroize.
10213         (sse2_shufpd): Call gen_Sse_shufpd_v2df.
10214         (sse2_shufpd_1): Macroize.
10215         (vec_extract_odd, vec_extract_even): New expanders.
10216         (vec_interleave_highv4sf, vec_interleave_lowv4sf,
10217         vec_interleave_highv2df, vec_interleave_lowv2df): Likewise.
10218         * i386.c (ix86_expand_vector_init_one_nonzero): Call
10219         gen_sse_shufps_v4sf instead of gen_sse_shufps_1.
10220         (ix86_expand_vector_set): Likewise.
10221         (ix86_expand_reduc_v4sf): Likewise.
10222
10223 2008-08-01  Doug Kwan  <dougkwan@google.com>
10224
10225         * matrix-reorg.c: Re-enable all code.
10226         (struct malloc_call_data): Change CALL_STMT to gimple type.
10227         (collect_data_for_malloc_call): Tuplify.
10228         (struct access_site_info): Change STMT to gimple type.
10229         (struct matrix_info): Change MIN_INDIRECT_LEVEL_ESCAPE_STMT,
10230         and MALLOC_FOR_LEVEL to gimple and gimple pointer type.
10231         (struct free_info): Change STMT to gimple type.
10232         (struct matrix_access_phi_node):  Change PHI to gimple type.
10233         (get_inner_of_cast_expr): Remove.
10234         (may_flatten_matrices_1): Tuplify.
10235         (may_flatten_matrices): Ditto.
10236         (mark_min_matrix_escape_level): Ditto.
10237         (ssa_accessed_in_tree): Refactor statement RHS related code into ...
10238         (ssa_accessed_in_call_rhs): New
10239         (ssa_accessed_in_assign_rhs): New
10240         (record_access_alloc_site_info): Tuplify.
10241         (add_allocation_site): Ditto.
10242         (analyze_matrix_allocation_site): Ditto.
10243         (analyze_transpose): Ditto.
10244         (get_index_from_offset): Ditto.
10245         (update_type_size): Ditto.
10246         (analyze_accesses_for_call_expr): Tuplify and renamed into ...
10247         (analyze_accesses_for_call_stmt): New. Also handle LHS of a call.
10248         (analyze_accesses_for_phi_node): Tuplify.
10249         (analyze_accesses_for_modify_stmt): Tuplify and renamed into ...
10250         (analyze_accesses_for_assign_stmt): Remove code for handling call LHS.
10251         (analyze_matrix_accesses): Tuplify.
10252         (check_var_data): New call-back type for check_var_notmodified_p.
10253         (check_var_notmodified_p): Tuplify and use call-back struct to
10254         return statement found.
10255         (can_calculate_expr_before_stmt): Factor out statement related code
10256         into ...
10257         (can_calculate_stmt_before_stmt): New.
10258         (check_allocation_function): Tuplify.
10259         (find_sites_in_func): Ditto.
10260         (record_all_accesses_in_func): Ditto.
10261         (transform_access_sites): Ditto.
10262         (transform_allocation_sites): Ditto.
10263         (matrix_reorg): Re-enable.
10264         (gate_matrix_reorg): Re-enable.
10265
10266 2008-08-01  Jakub Jelinek  <jakub@redhat.com>
10267
10268         * dwarf2out.c (compute_barrier_args_size): Set barrier_args_size
10269         for labels for which it hasn't been set yet.  If it has been set,
10270         stop walking insns and continue with next worklist item.
10271         (dwarf2out_stack_adjust): Don't call compute_barrier_args_size
10272         if the only BARRIER is at the very end of a function.
10273
10274 2008-08-01  H.J. Lu  <hongjiu.lu@intel.com>
10275
10276         * cfgexpand.c (expand_stack_alignment): Assert that
10277         stack_realign_drap and drap_rtx must match.
10278
10279         * function.c (instantiate_new_reg): If DRAP is used to realign
10280         stack, replace virtual_incoming_args_rtx with internal arg
10281         pointer.
10282
10283 2008-08-01  Richard Guenther  <rguenther@suse.de>
10284
10285         * tree-ssa-pre.c (fini_pre): Take in_fre parameter.  Free
10286         loop information only if we initialized it.
10287         (execute_pre): Call fini_pre with in_fre.
10288         * tree-ssa-loop-ivcanon (try_unroll_loop_completely): Dump
10289         if we do not unroll because we hit max-completely-peeled-insns.
10290         Use our estimation for consistency, do allow shrinking.
10291
10292 2008-08-01  H.J. Lu  <hongjiu.lu@intel.com>
10293
10294         * config/i386/i386.c (override_options): Replace ABI_STACK_BOUNDARY
10295         with MIN_STACK_BOUNDARY.
10296         (ix86_update_stack_boundary): Likewise.
10297         (ix86_expand_prologue): Assert MIN_STACK_BOUNDARY instead of
10298         STACK_BOUNDARY.
10299
10300         * config/i386/i386.h (ABI_STACK_BOUNDARY): Renamed to ...
10301         (MIN_STACK_BOUNDARY): This.
10302
10303 2008-08-01  Richard Guenther  <rguenther@suse.de>
10304
10305         PR middle-end/36997
10306         * gimplify.c (gimplify_call_expr): Set error_mark_node on GS_ERROR.
10307
10308 2008-08-01  Richard Guenther  <rguenther@suse.de>
10309
10310         PR tree-optimization/36988
10311         * tree-ssa-ccp.c (ccp_fold): Conversions of constants only
10312         do not matter if that doesn't change volatile qualification.
10313
10314 2008-08-01  Paolo Bonzini  <bonzini@gnu.org>
10315
10316         * configure.ac: Do not generate libada-mk.  Do not subst
10317         host_cc_for_libada.
10318         * libada-mk.in: Remove.
10319         * Makefile.in: Pass TARGET_LIBGCC2_CFLAGS to libgcc.mvars.
10320         * configure: Regenerate.
10321
10322 2008-08-01  Basile Starynkevitch  <basile@starynkevitch.net>
10323
10324         * tree-pass.h: Added comment about not dumping passes with name
10325         starting with star in struct opt_pass.
10326         * passes.c (register_dump_files_1): Don't do dump for a pass with
10327         name starting with star.
10328         * doc/passes.texi (Pass manager): Mention pass names and special
10329         meaning of star prefix to avoid dump.
10330
10331 2008-07-31  Adam Nemet  <anemet@caviumnetworks.com>
10332
10333         * config.gcc (mipsisa64r2*-*-linux*): New configuration.  Set ISA
10334         to MIPS64r2.
10335         * config/mips/mips.h (GENERATE_MIPS16E): Update comment.
10336         (ISA_MIPS64R2): New macro.
10337         (TARGET_CPU_CPP_BUILTINS, MULTILIB_ISA_DEFAULT): Handle it.
10338         (ISA_HAS_64BIT_REGS, ISA_HAS_MUL3, ISA_HAS_FP_CONDMOVE,
10339         ISA_HAS_8CC, ISA_HAS_FP4, ISA_HAS_PAIRED_SINGLE,
10340         ISA_HAS_MADD_MSUB, ISA_HAS_NMADD4_NMSUB4, ISA_HAS_CLZ_CLO,
10341         ISA_HAS_ROR, ISA_HAS_PREFETCH, ISA_HAS_PREFETCHX, ISA_HAS_SEB_SEH,
10342         ISA_HAS_EXT_INS, ISA_HAS_MXHC1, ISA_HAS_HILO_INTERLOCKS,
10343         ISA_HAS_SYNCI, MIN_FPRS_PER_FMT): Return true for ISA_MIPS64R2.
10344         (MIPS_ISA_LEVEL_SPEC, ASM_SPEC, LINK_SPEC): Handle -mips64r2.
10345         (TARGET_LOONGSON_2E, TARGET_LOONGSON_2F, TARGET_LOONGSON_2EF):
10346         Move up to keep list alphabetically sorted.
10347         (TUNE_20KC, TUNE_24K, TUNE_74K, TUNE_LOONGSON_2EF): Likewise.
10348         * config/mips/mips.c (mips_cpu_info_table): Add default MIPS64r2
10349         processor.
10350         * doc/invoke.texi (MIPS Options): Add -mips64r2.
10351         (-march=@var{arch}): Add mips64r2.
10352
10353 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
10354
10355         * config/i386/darwin.h (MAIN_STACK_BOUNDARY): Define to 128.
10356
10357 2008-07-31  Steve Ellcey  <sje@cup.hp.com>
10358
10359         * expr.c (expand_assignment): Check for complete type.
10360
10361 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
10362
10363         PR debug/36977
10364         * cfgexpand.c (expand_stack_alignment): Set stack_realign_tried.
10365
10366         * dwarf2out.c (based_loc_descr): Check crtl->stack_realign_tried
10367         for stack alignment.
10368
10369         * function.h (rtl_data): Add stack_realign_tried.  Update comments.
10370
10371 2008-07-31  Kaz Kojima  <kkojima@gcc.gnu.org>
10372
10373         * config/sh/sh.c (sh_canonical_va_list_type): Remove.
10374         (TARGET_CANONICAL_VA_LIST_TYPE): Remove.
10375
10376 2008-07-31  Jakub Jelinek  <jakub@redhat.com>
10377
10378         PR rtl-optimization/36419
10379         * dwarf2out.c (barrier_args_size): New variable.
10380         (compute_barrier_args_size, compute_barrier_args_size_1): New
10381         functions.
10382         (dwarf2out_stack_adjust): For BARRIERs call compute_barrier_args_size
10383         if not called yet in the current function, use barrier_args_size
10384         array to find the new args_size value.
10385         (dwarf2out_frame_debug): Free and clear barrier_args_size.
10386
10387 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
10388
10389         PR debug/36980
10390         * dwarf2out.c (dwarf2out_frame_debug_expr): Move rule 17 before
10391         rule 19.
10392
10393 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
10394
10395         PR debug/36976
10396         * dwarf2out.c (dwarf2out_args_size_adjust): New.
10397         (dwarf2out_stack_adjust): Use it.
10398         (dwarf2out_frame_debug_expr): Likewise.
10399
10400 2008-07-31  Richard Guenther  <rguenther@suse.de>
10401
10402         PR tree-optimization/36978
10403         * tree-ssa-loop-unswitch.c (tree_may_unswitch_on): Do not fold
10404         the generated condition.
10405
10406 2008-07-31  Richard Guenther  <rguenther@suse.de>
10407
10408         * passes.c (init_optimization_passes): Always call
10409         pass_early_warn_uninitialized.
10410         * opts.c (decode_options): Do not warn about -Wuninitialized at -O0.
10411         * doc/invoke.texi (-Wuninitialized): Correct for enabling at -O0.
10412         * doc/passes.texi (Warn for uninitialized variables): Adjust.
10413
10414 2008-07-31  Jakub Jelinek  <jakub@redhat.com>
10415
10416         PR c/36970
10417         * builtins.c (maybe_emit_free_warning): New function.
10418         (expand_builtin): Process BUILT_IN_FREE even at -O0.  Call
10419         maybe_emit_free_warning for BUILT_IN_FREE.
10420
10421         PR debug/36278
10422         * dwarf2out.c (get_context_die): New function.
10423         (force_decl_die, force_type_die): Use it.
10424         (dwarf2out_imported_module_or_decl): Likewise.  If base_type_die
10425         returns NULL, force generation of DW_TAG_typedef and put that into
10426         DW_AT_import.
10427
10428         PR preprocessor/36649
10429         * c-pch.c (c_common_read_pch): Save and restore
10430         line_table->trace_includes across PCH restore.
10431
10432 2008-07-30  Eric Botcazou  <ebotcazou@adacore.com>
10433
10434         PR ada/36554
10435         * dwarf2out.c (is_subrange_type): Deal with BOOLEAN_TYPE.
10436
10437 2008-07-30  Rafael Ávila de Espíndola  <espindola@google.com>
10438
10439         PR 36974
10440         * final.c (call_from_call_insn): Handle COND_EXEC.
10441
10442 2008-07-30  H.J. Lu  <hongjiu.lu@intel.com>
10443
10444         * builtins.c (std_gimplify_va_arg_expr): Replace
10445         PREFERRED_STACK_BOUNDARY with MAX_SUPPORTED_STACK_ALIGNMENT.
10446         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
10447
10448 2008-07-30  Joey Ye  <joey.ye@intel.com>
10449             H.J. Lu  <hongjiu.lu@intel.com>
10450
10451         * builtins.c (expand_builtin_setjmp_receiver): Replace
10452         virtual_incoming_args_rtx with crtl->args.internal_arg_pointer.
10453         (expand_builtin_apply_args_1): Likewise.
10454         (expand_builtin_longjmp): Need DRAP for stack alignment.
10455         (expand_builtin_apply): Likewise.
10456
10457         * caller-save.c (setup_save_areas): Call assign_stack_local_1
10458         instead of assign_stack_local to allow alignment reduction.
10459
10460         * calls.c (emit_call_1): Need DRAP for stack alignment if
10461         return pops.
10462         (expand_call): Replace virtual_incoming_args_rtx with
10463         crtl->args.internal_arg_pointer.
10464         * stmt.c (expand_nl_goto_receiver): Likewise.
10465
10466         * cfgexpand.c (get_decl_align_unit): Estimate stack variable
10467         alignment and store to stack_alignment_estimated and
10468         max_used_stack_slot_alignment.
10469         (expand_one_var): Likewise.
10470         (expand_stack_alignment): New function.
10471         (tree_expand_cfg): Initialize max_used_stack_slot_alignment
10472         and stack_alignment_estimated fields in rtl_data.  Call
10473         expand_stack_alignment at end.
10474
10475         * defaults.h (INCOMING_STACK_BOUNDARY): New.
10476         (MAX_STACK_ALIGNMENT): Likewise.
10477         (MAX_SUPPORTED_STACK_ALIGNMENT): Likewise.
10478         (SUPPORTS_STACK_ALIGNMENT): Likewise.
10479
10480         * emit-rtl.c (gen_reg_rtx): Estimate stack alignment for
10481         stack alignment when generating virtual registers.
10482
10483         * function.c (assign_stack_local): Renamed to ...
10484         (assign_stack_local_1): This.  Add a parameter to indicate
10485         if it is OK to reduce alignment.
10486         (assign_stack_local): Use it.
10487         (instantiate_new_reg): Instantiate virtual incoming args rtx
10488         to vDRAP if stack realignment and DRAP is needed.
10489         (assign_parms): Collect parameter/return type alignment and
10490         contribute to stack_alignment_estimated.
10491         (locate_and_pad_parm): Likewise.
10492         (get_arg_pointer_save_area): Replace virtual_incoming_args_rtx
10493         with crtl->args.internal_arg_pointer.
10494
10495         * function.h (rtl_data): Add new field drap_reg,
10496         max_used_stack_slot_alignment, stack_alignment_estimated,
10497         stack_realign_needed, need_drap, stack_realign_processed and
10498         stack_realign_finalized.
10499         (stack_realign_fp): New macro.
10500         (stack_realign_drap): Likewise.
10501
10502         * global.c (compute_regsets): Frame pointer is needed when
10503         stack is realigned.  Can eliminate frame pointer when stack is
10504         realigned and dynamic realigned argument pointer isn't used.
10505
10506         * reload1.c (update_eliminables):  Frame pointer is needed
10507         when stack is realigned.
10508         (init_elim_table): Can eliminate frame pointer when stack is
10509         realigned and dynamic realigned argument pointer isn't used.
10510
10511         * rtl.h (assign_stack_local_1): Declare new funtion.
10512
10513         * target-def.h (TARGET_UPDATE_STACK_BOUNDARY): New.
10514         (TARGET_GET_DRAP_RTX): Likewise.
10515         (TARGET_CALLS): Add TARGET_UPDATE_STACK_BOUNDARY and
10516         TARGET_GET_DRAP_RTX.
10517
10518         * target.h (gcc_target): Add update_stack_boundary and get_drap_rtx.
10519
10520         * tree-vectorizer.c (vect_can_force_dr_alignment_p): Replace
10521         STACK_BOUNDARY with MAX_STACK_ALIGNMENT.
10522
10523 2008-07-30  Xuepeng Guo  <xuepeng.guo@intel.com>
10524             H.J. Lu  <hongjiu.lu@intel.com>
10525
10526         * dwarf2out.c (dw_fde_struct): Add stack_realignment, drap_reg,
10527         vdrap_reg, stack_realign and drap_reg_saved.
10528         (add_cfi): Don't allow redefining CFA when DRAP is used.
10529         (reg_save): Handle stack alignment.
10530         (dwarf2out_frame_debug_expr): Add rules 16-20 to handle stack
10531         alignment.  Don't generate DWARF information for (set fp sp)
10532         when DRAP is used.
10533         (dwarf2out_begin_prologue): Initialize drap_reg and vdrap_reg
10534         to INVALID_REGNUM.
10535         (int_loc_descriptor): Move prototype forward.  Also define if
10536         DWARF2_UNWIND_INFO is true.
10537         (output_cfa_loc): Handle DW_CFA_expression.
10538         (build_cfa_aligned_loc): New.
10539         (based_loc_descr): Update assert for stack realign.  For local
10540         variables, use sp+offset when stack is aligned without drap and
10541         fp+offset when stack is aligned with drap.  For arguments, use
10542         cfa+offset when drap is used to align stack.
10543
10544 2008-07-30  Joey Ye  <joey.ye@intel.com>
10545             H.J. Lu  <hongjiu.lu@intel.com>
10546
10547         * config/i386/i386.c (ix86_force_align_arg_pointer_string):
10548         Break long line.
10549         (ix86_gen_andsp): New.
10550         (ix86_user_incoming_stack_boundary): Likewise.
10551         (ix86_default_incoming_stack_boundary): Likewise.
10552         (ix86_incoming_stack_boundary): Likewise.
10553         (ix86_can_eliminate): Likewise.
10554         (find_drap_reg): Likewise.
10555         (ix86_update_stack_boundary): Likewise.
10556         (ix86_get_drap_rtx): Likewise.
10557         (ix86_finalize_stack_realign_flags): Likewise.
10558         (TARGET_UPDATE_STACK_BOUNDARY): Likewise.
10559         (TARGET_GET_DRAP_RTX): Likewise.
10560         (override_options): Overide option value for new options.
10561         (ix86_function_ok_for_sibcall): Remove check for
10562         force_align_arg_pointer.
10563         (ix86_handle_cconv_attribute): Likewise.
10564         (ix86_function_regparm): Likewise.
10565         (setup_incoming_varargs_64): Don't set stack_alignment_needed here.
10566         (ix86_va_start): Replace virtual_incoming_args_rtx with
10567         crtl->args.internal_arg_pointer.
10568         (ix86_select_alt_pic_regnum): Check DRAP register.
10569         (ix86_save_reg): Replace force_align_arg_pointer with drap_reg.
10570         (ix86_compute_frame_layout): Compute frame layout wrt stack
10571         realignment.
10572         (ix86_internal_arg_pointer): Just return virtual_incoming_args_rtx.
10573         (ix86_expand_prologue): Decide if stack realignment is needed
10574         and generate prologue code accordingly.
10575         (ix86_expand_epilogue): Generate epilogue code wrt stack
10576         realignment is really needed or not.
10577
10578         * config/i386/i386.h (MAIN_STACK_BOUNDARY): New.
10579         (ABI_STACK_BOUNDARY): Likewise.
10580         (PREFERRED_STACK_BOUNDARY_DEFAULT): Likewise.
10581         (STACK_REALIGN_DEFAULT): Likewise.
10582         (INCOMING_STACK_BOUNDARY): Likewise.
10583         (MAX_STACK_ALIGNMENT): Likewise.
10584         (ix86_incoming_stack_boundary): Likewise.
10585         (FORCE_PREFERRED_STACK_BOUNDARY_IN_MAIN): Removed.
10586         (REAL_PIC_OFFSET_TABLE_REGNUM): Updated to use BX_REG.
10587         (CAN_ELIMINATE): Defined with ix86_can_eliminate.
10588         (machine_function): Remove force_align_arg_pointer.
10589
10590         * config/i386/i386.md (BX_REG): New.
10591         (R13_REG): Likewise.
10592
10593         * config/i386/i386.opt (mforce_drap): New.
10594         (mincoming-stack-boundary): Likewise.
10595         (mstackrealign): Add Init(-1).
10596
10597         * config/i386/i386-protos.h (ix86_can_eliminate): New
10598
10599 2008-07-30  H.J. Lu  <hongjiu.lu@intel.com>
10600
10601         * doc/extend.texi: Update force_align_arg_pointer.
10602
10603         * doc/invoke.texi: Document -mincoming-stack-boundary.  Update
10604         -mstackrealign.
10605
10606         * doc/tm.texi (MAX_STACK_ALIGNMENT): Add macro.
10607         (INCOMING_STACK_BOUNDARY): Likewise.
10608         (TARGET_UPDATE_STACK_BOUNDARY): New target hook.
10609         (TARGET_GET_DRAP_RTX): Likewise.
10610
10611 2008-07-30  Andreas Schwab  <schwab@suse.de>
10612
10613         PR rtl-optimization/36929
10614         * dse.c (replace_inc_dec): Use emit_insn_before instead of
10615         add_insn_before and fix argument order.
10616         (replace_inc_dec_mem): Handle NULL rtx.
10617
10618 2008-07-30  Andrew Jenner  <andrew@codesourcery.com>
10619
10620         * config/arm/arm.c (arm_compute_static_chain_stack_bytes): New
10621         function.
10622         (arm_compute_initial_elimination_offset): Use it.
10623         (arm_compute_save_reg_mask): Include static chain save slot when
10624         calculating alignment.
10625         (arm_get_frame_offsets): Ditto.
10626         (thumb1_compute_save_reg_mask): Ensure we have a low register saved
10627         that we can use to decrement the stack when the stack decrement
10628         could be too big for an immediate value in a single insn.
10629         (thumb1_expand_prologue): Avoid using r12 for stack decrement.
10630
10631 2008-07-30  Richard Guenther  <rguenther@suse.de>
10632
10633         PR tree-optimization/36967
10634         * tree-predcom.c (remove_stmt): Use gimple_assign_ssa_name_copy_p.
10635         Release defs of statements we remove.
10636
10637 2008-07-30  Nathan Froyd  <froydnj@codesourcery.com>
10638
10639         * config/arm/arm.c (arm_expand_prologue): Use 0-length rtvec
10640         instead of NULL_RTVEC.
10641
10642 2008-07-30  Nathan Froyd  <froydnj@codesourcery.com>
10643
10644         PR target/35866
10645
10646         * config/rs6000/rs6000.h (SLOW_UNALIGNED_ACCESS): Add clause for
10647         vector modes.
10648
10649 2008-07-30  Rafael Ávila de Espíndola  <espindola@google.com>
10650
10651         * final.c (call_from_call_insn): New.
10652         (final_scan_insn): Call assemble_external on FUNCTION_DECLs.
10653
10654 2008-07-30  Paolo Bonzini  <bonzini@gnu.org>
10655
10656         * configure.ac: Substitute ADA_CFLAGS.
10657         * configure: Regenerate.
10658         * config.host: Remove mention of pa/x-ada and pa/x-ada-hpux10 files.
10659         * Makefile.in: Remove mention of X_* variables.
10660         * config/pa/x-ada-hpux10: Remove.
10661         * config/pa/x-ada: Remove.
10662
10663         * doc/fragments.texi: Update.
10664
10665 2008-07-30  Olivier Hainque  <hainque@adacore.com>
10666
10667         * config/mips/irix-crti.asm: .hide __gcc_init and __gcc_fini.
10668         * config/mips/iris6.h (IRIX_SUBTARGET_LINK_SPEC, irix ld): Hide
10669         __dso_handle explicitly here.
10670
10671 2008-07-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10672
10673         PR 34389
10674         * c-typeck.c (build_binary_op): Encapsulate code into...
10675         * c-common.c (shorten_binary_op): ...this new function.
10676         (conversion_warning): Use the new function. Handle non-negative
10677         constant in bitwise-and.
10678         * c-common.h (shorten_binary_op): Declare.
10679
10680 2008-07-30  Olivier Hainque  <hainque@adacore.com>
10681
10682         * scan.c (make_sstring_space): Add explicit conversions of
10683         allocator's return value.
10684         * fix-header.c (recognized_function): Likewise.
10685
10686 2008-07-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
10687
10688         * doc/cpp.texi: Update to GFDL 1.2.
10689         * doc/gcc.texi: Do not list GPL as Invariant Section.
10690         * doc/gccint.texi: Likewise.  Update copyright years.
10691         * doc/install.texi: Update copyright years.
10692
10693 2008-07-30  Alan Modra  <amodra@bigpond.net.au>
10694
10695         PR target/36955
10696         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Add
10697         a use of pic_offset_table_rtx for -msecure-plt __tls_get_addr calls.
10698
10699 2008-07-29  Jan Hubicka  <jh@suse.cz>
10700
10701         * c-decl.c (merge_decls): Do not handle DECL_INLINE.
10702         (grokdeclarator): Likewise.
10703         * langhooks.c (lhd_warn_unused_global_decl): Use
10704         DECL_DECLARED_INLINE_P.
10705         * print-tree.c (print_node): Remove DECL_INLINE check.
10706
10707 2008-07-29  Richard Guenther  <rguenther@suse.de>
10708
10709         PR tree-optimization/36945
10710         * tree-ssa-sccvn.h (copy_reference_ops_from_ref): Declare.
10711         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Export.
10712         Record invariant addresses un-decomposed.
10713         (copy_reference_ops_from_call): Record reference call
10714         arguments properly.  Simplify.
10715         * tree-ssa-pre.c (create_component_ref_by_pieces_1): New
10716         helper split out from ...
10717         (create_component_ref_by_pieces): ... here.  Simplify.
10718         Prepare for recursive invocation for call arguments.
10719         (create_expression_by_pieces): Adjust call to
10720         create_component_ref_by_pieces.
10721         (compute_avail): Process operand 2 of reference ops.
10722
10723 2008-07-29  Richard Guenther  <rguenther@suse.de>
10724
10725         * gimplify.c (gimplify_expr): Clear TREE_SIDE_EFFECTS for OBJ_TYPE_REF.
10726
10727 2008-07-29  Jakub Jelinek  <jakub@redhat.com>
10728
10729         * c-format.c (check_format_types): Revert unwanted checkin.
10730
10731 2008-07-29  Jan Hubicka  <jh@suse.cz>
10732
10733         * flags.h (flag_really_no_inline): Remove.
10734         * cgraph.c (cgraph_function_possibly_inlined_p): Simplify.
10735         * toplev.c (flag_really_no_inline): Remove.
10736         * c-cppbuiltin.c (c_cpp_builtins): Use flag_no_inline.
10737         * ipa-inline.c (cgraph_decide_inlining): Do not check flag_no_inline.
10738         (cgraph_decide_inlining_incrementally): Likewise.
10739         (compute_inline_parameters): Likewise.
10740         * opts.c (decode_options): Simplify.
10741         * c-opts.c (c_common_post_options): Do not set flag_no_inline.
10742         * common.opt (finline): Initialize to 1.
10743         * tree-inline.c (inlinable_function_p): Check flag_no_inline.
10744
10745 2008-07-29  Jan Hubicka  <jh@suse.cz>
10746
10747         * predict.c (always_optimize_for_size_p): New function.
10748         (optimize_bb_for_size_p, optimize_bb_for_speed_p,
10749         optimize_edge_for_size_p, optimize_edge_for_speed_p,
10750         optimize_insn_for_size_p, optimize_insn_for_speed_p): New global
10751         functions.
10752         (rtl_profile_for_bb, rtl_profile_for_edge, rtl_default_profile): New.
10753         * function.c (prepare_function_start): Set default profile.
10754         * function.h (rtl_data): Add maybe_hot_insn_p.
10755         * cfgexpand.c (expand_gimple_basic_block): Set RTL profile.
10756         (construct_exit_block): Likewise.
10757         (tree_expand_cfg): Likewise.
10758         * basic-block.h
10759         (optimize_bb_for_size_p, optimize_bb_for_speed_p,
10760         optimize_edge_for_size_p, optimize_edge_for_speed_p,
10761         optimize_insn_for_size_p, optimize_insn_for_speed_p): Declare.
10762         (rtl_profile_for_bb, rtl_profile_for_edge, default_rtl_profile):
10763         Declare.
10764
10765 2008-07-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10766
10767         PR 34985
10768         * c-decl.c (merge_decls): Merge USED flags.
10769
10770 2008-07-29  Kaz Kojima  <kkojima@gcc.gnu.org>
10771
10772         * config/sh/sh.c (sh_gimplify_va_arg_expr): Unshare the addr,
10773         valist, next_fp, next_fp_tmp, next_fp_limit, next_o, next_o_limit,
10774         next_stack, lab_false and lab_over trees.
10775
10776 2008-07-28  Richard Guenther  <rguenther@suse.de>
10777
10778         PR tree-optimization/36957
10779         * tree-flow.h (tree_ssa_useless_type_conversion): Remove.
10780         (useless_type_conversion_p): Remove.
10781         (types_compatible_p): Remove.
10782         * gimple.h (tree_ssa_useless_type_conversion): Declare.
10783         (useless_type_conversion_p): Declare.
10784         (types_compatible_p): Declare.
10785         (gimple_expr_type): Return the base type only if it is
10786         trivially convertible to the subtype.
10787
10788 2008-07-28  Andreas Tobler  <a.tobler@schweiz.org>
10789
10790         * configure.ac: Use the m4_do macro to concatenate the warnings into
10791         one string in ACX_PROG_CC_WARNING_OPTS,
10792         ACX_PROG_CC_WARNING_ALMOST_PEDANTIC and
10793         ACX_PROG_CC_WARNINGS_ARE_ERRORS.
10794         * configure: Regenerate.
10795
10796 2008-07-28  Richard Guenther  <rguenther@suse.de>
10797
10798         * tree-ssa-pre.c (insert_into_preds_of_block): Remove dead code.
10799         (insert_fake_stores): Remove.
10800         (realify_fake_stores): Likewise.
10801         (execute_pre): Remove dead code.
10802         * tree-ssa-structalias.c (get_constraint_for_1): Remove tcc_unary case.
10803         (find_func_aliases): Deal with it here instead.
10804         Re-enable gcc_unreachable call.
10805
10806 2008-07-28  Richard Guenther  <rguenther@suse.de>
10807
10808         Merge from gimple-tuples-branch.
10809
10810         * ChangeLog.tuples: ChangeLog from gimple-tuples-branch.
10811         * gimple.def: New file.
10812         * gsstruct.def: Likewise.
10813         * gimple-iterator.c: Likewise.
10814         * gimple-pretty-print.c: Likewise.
10815         * tree-gimple.c: Removed.  Merged into ...
10816         * gimple.c: ... here.  New file.
10817         * tree-gimple.h: Removed.  Merged into ...
10818         * gimple.h: ... here.  New file.
10819
10820         * Makefile.in: Add dependencies on GIMPLE_H and tree-iterator.h.
10821         * configure.ac: Added support for ENABLE_GIMPLE_CHECKING and the
10822         --enable-checking=gimple flag.
10823         * config.in: Likewise.
10824         * configure: Regenerated.
10825
10826         * tree-ssa-operands.h: Tuplified.
10827         * tree-vrp.c: Likewise.
10828         * tree-loop-linear.c: Likewise.
10829         * tree-into-ssa.c: Likewise.
10830         * tree-ssa-loop-im.c: Likewise.
10831         * tree-dump.c: Likewise.
10832         * tree-complex.c: Likewise.
10833         * cgraphbuild.c: Likewise.
10834         * tree-ssa-threadupdate.c: Likewise.
10835         * tree-ssa-loop-niter.c: Likewise.
10836         * tree-pretty-print.c: Likewise.
10837         * tracer.c: Likewise.
10838         * gengtype.c: Likewise.
10839         * tree-loop-distribution.c: Likewise.
10840         * tree-ssa-loop-unswitch.c: Likewise.
10841         * cgraph.c: Likewise.
10842         * cgraph.h: Likewise.
10843         * tree-ssa-loop-manip.c: Likewise.
10844         * value-prof.c: Likewise.
10845         * tree-ssa-loop-ch.c: Likewise.
10846         * tree-tailcall.c: Likewise.
10847         * value-prof.h: Likewise.
10848         * tree.c: Likewise.
10849         * tree.h: Likewise.
10850         * tree-pass.h: Likewise.
10851         * ipa-cp.c: Likewise.
10852         * tree-scalar-evolution.c: Likewise.
10853         * tree-scalar-evolution.h: Likewise.
10854         * target.h: Likewise.
10855         * lambda-mat.c: Likewise.
10856         * tree-phinodes.c: Likewise.
10857         * diagnostic.h: Likewise.
10858         * builtins.c: Likewise.
10859         * tree-ssa-alias-warnings.c: Likewise.
10860         * cfghooks.c: Likewise.
10861         * fold-const.c: Likewise.
10862         * cfghooks.h: Likewise.
10863         * omp-low.c: Likewise.
10864         * tree-ssa-dse.c: Likewise.
10865         * ipa-reference.c: Likewise.
10866         * tree-ssa-uncprop.c: Likewise.
10867         * toplev.c: Likewise.
10868         * tree-gimple.c: Likewise.
10869         * tree-gimple.h: Likewise.
10870         * tree-chrec.c: Likewise.
10871         * tree-chrec.h: Likewise.
10872         * tree-ssa-sccvn.c: Likewise.
10873         * tree-ssa-sccvn.h: Likewise.
10874         * cgraphunit.c: Likewise.
10875         * tree-ssa-copyrename.c: Likewise.
10876         * tree-ssa-ccp.c: Likewise.
10877         * tree-ssa-loop-ivopts.c: Likewise.
10878         * tree-nomudflap.c: Likewise.
10879         * tree-call-cdce.c: Likewise.
10880         * ipa-pure-const.c: Likewise.
10881         * c-format.c: Likewise.
10882         * tree-stdarg.c: Likewise.
10883         * tree-ssa-math-opts.c: Likewise.
10884         * tree-ssa-dom.c: Likewise.
10885         * tree-nrv.c: Likewise.
10886         * tree-ssa-propagate.c: Likewise.
10887         * ipa-utils.c: Likewise.
10888         * tree-ssa-propagate.h: Likewise.
10889         * tree-ssa-alias.c: Likewise.
10890         * gimple-low.c: Likewise.
10891         * tree-ssa-sink.c: Likewise.
10892         * ipa-inline.c: Likewise.
10893         * c-semantics.c: Likewise.
10894         * dwarf2out.c: Likewise.
10895         * expr.c: Likewise.
10896         * tree-ssa-loop-ivcanon.c: Likewise.
10897         * predict.c: Likewise.
10898         * tree-ssa-loop.c: Likewise.
10899         * tree-parloops.c: Likewise.
10900         * tree-ssa-address.c: Likewise.
10901         * tree-ssa-ifcombine.c: Likewise.
10902         * matrix-reorg.c: Likewise.
10903         * c-decl.c: Likewise.
10904         * tree-eh.c: Likewise.
10905         * c-pretty-print.c: Likewise.
10906         * lambda-trans.c: Likewise.
10907         * function.c: Likewise.
10908         * langhooks.c: Likewise.
10909         * ebitmap.h: Likewise.
10910         * tree-vectorizer.c: Likewise.
10911         * function.h: Likewise.
10912         * langhooks.h: Likewise.
10913         * tree-vectorizer.h: Likewise.
10914         * ipa-type-escape.c: Likewise.
10915         * ipa-type-escape.h: Likewise.
10916         * domwalk.c: Likewise.
10917         * tree-if-conv.c: Likewise.
10918         * profile.c: Likewise.
10919         * domwalk.h: Likewise.
10920         * tree-data-ref.c: Likewise.
10921         * tree-data-ref.h: Likewise.
10922         * tree-flow-inline.h: Likewise.
10923         * tree-affine.c: Likewise.
10924         * tree-vect-analyze.c: Likewise.
10925         * c-typeck.c: Likewise.
10926         * gimplify.c: Likewise.
10927         * coretypes.h: Likewise.
10928         * tree-ssa-phiopt.c: Likewise.
10929         * calls.c: Likewise.
10930         * tree-ssa-coalesce.c: Likewise.
10931         * tree.def: Likewise.
10932         * tree-dfa.c: Likewise.
10933         * except.c: Likewise.
10934         * except.h: Likewise.
10935         * cfgexpand.c: Likewise.
10936         * tree-cfgcleanup.c: Likewise.
10937         * tree-ssa-pre.c: Likewise.
10938         * tree-ssa-live.c: Likewise.
10939         * tree-sra.c: Likewise.
10940         * tree-ssa-live.h: Likewise.
10941         * tree-predcom.c: Likewise.
10942         * lambda.h: Likewise.
10943         * tree-mudflap.c: Likewise.
10944         * ipa-prop.c: Likewise.
10945         * print-tree.c: Likewise.
10946         * tree-ssa-copy.c: Likewise.
10947         * ipa-prop.h: Likewise.
10948         * tree-ssa-forwprop.c: Likewise.
10949         * ggc-page.c: Likewise.
10950         * c-omp.c: Likewise.
10951         * tree-ssa-dce.c: Likewise.
10952         * tree-vect-patterns.c: Likewise.
10953         * tree-ssa-ter.c: Likewise.
10954         * tree-nested.c: Likewise.
10955         * tree-ssa.c: Likewise.
10956         * lambda-code.c: Likewise.
10957         * tree-ssa-loop-prefetch.c: Likewise.
10958         * tree-inline.c: Likewise.
10959         * tree-inline.h: Likewise.
10960         * tree-iterator.c: Likewise.
10961         * tree-optimize.c: Likewise.
10962         * tree-ssa-phiprop.c: Likewise.
10963         * tree-vect-transform.c: Likewise.
10964         * tree-object-size.c: Likewise.
10965         * tree-outof-ssa.c: Likewise.
10966         * cfgloop.c: Likewise.
10967         * system.h: Likewise.
10968         * tree-profile.c: Likewise.
10969         * cfgloop.h: Likewise.
10970         * c-gimplify.c: Likewise.
10971         * c-common.c: Likewise.
10972         * tree-vect-generic.c: Likewise.
10973         * tree-flow.h: Likewise.
10974         * c-common.h: Likewise.
10975         * basic-block.h: Likewise.
10976         * tree-ssa-structalias.c: Likewise.
10977         * tree-switch-conversion.c: Likewise.
10978         * tree-ssa-structalias.h: Likewise.
10979         * tree-cfg.c: Likewise.
10980         * passes.c: Likewise.
10981         * ipa-struct-reorg.c: Likewise.
10982         * ipa-struct-reorg.h: Likewise.
10983         * tree-ssa-reassoc.c: Likewise.
10984         * cfgrtl.c: Likewise.
10985         * varpool.c: Likewise.
10986         * stmt.c: Likewise.
10987         * tree-ssanames.c: Likewise.
10988         * tree-ssa-threadedge.c: Likewise.
10989         * langhooks-def.h: Likewise.
10990         * tree-ssa-operands.c: Likewise.
10991         * config/alpha/alpha.c: Likewise.
10992         * config/frv/frv.c: Likewise.
10993         * config/s390/s390.c: Likewise.
10994         * config/m32c/m32c.c: Likewise.
10995         * config/m32c/m32c-protos.h: Likewise.
10996         * config/spu/spu.c: Likewise.
10997         * config/sparc/sparc.c: Likewise.
10998         * config/i386/i386.c: Likewise.
10999         * config/sh/sh.c: Likewise.
11000         * config/xtensa/xtensa.c: Likewise.
11001         * config/stormy16/stormy16.c: Likewise.
11002         * config/ia64/ia64.c: Likewise.
11003         * config/rs6000/rs6000.c: Likewise.
11004         * config/pa/pa.c: Likewise.
11005         * config/mips/mips.c: Likewise.
11006
11007 2008-07-28  Simon Baldwin  <simonb@google.com>
11008
11009         * c-pragma.c (handle_pragma_message): New function.
11010         (init_pragma): Register handle_pragma_message.
11011         * doc/extend.texi (Diagnostic Pragmas): Added #pragma message
11012         documentation.
11013
11014 2008-07-27  Victor Kaplansky  <victork@il.ibm.com>
11015
11016         PR tree-optimization/35252
11017         * tree-vect-analyze.c (vect_build_slp_tree): Make IMAGPART_EXPR and
11018         REALPART_EXPR to be considered as same load operation.
11019
11020 2008-07-27  Eric Botcazou  <ebotcazou@adacore.com>
11021
11022         PR tree-optimization/36830
11023         * tree-ssa-sccvn.c (vn_reference_op_compute_hash): Hash operand #2.
11024         (expressions_equal_p): Return false if only one operand is null.
11025
11026 2008-07-26  Gerald Pfeifer  <gerald@pfeifer.com>
11027
11028         * doc/install.texi (powerpc-*-netbsd*): Remove redundant texinfo
11029         version requirements.
11030
11031 2008-07-26  Olivier Hainque  <hainque@adacore.com>
11032
11033         * collect2.c (symkind): New enum.  Symbol kinds we care about.
11034         (is_ctor_dtor): Return symkind instead of int.  Adjust prototype,
11035         code and head comment accordingly.
11036         (scan_prog_file): Use symkind names instead of bare integers.
11037
11038 2008-07-25  Jan Hubicka  <jh@suse.cz>
11039
11040         * cgraph.c (cgraph_function_possibly_inlined_p): Do not rely on
11041         DECL_INLINE.
11042         * cgraphunit.c (record_cdtor_fn): Do not initialize DECL_INLINE
11043         (cgraph_preserve_function_body_p): Do not rely on DECL_INLINE.
11044         * dojump.c (clear_pending_stack_adjust): Likewise.
11045         * print-tree.c (print_node): Ignore DECL_INLINE.
11046         * tree-inline.c (inlinable_function_p): Likewise.
11047
11048 2008-07-25  Michael Meissner  <gnu@the-meissners.org>
11049
11050         * doc/extend.texi (hot attribute): Document that the hot attribute
11051         turns on -O3 for some ports.
11052         (cold attribute): Document that the cold attribute turns on -Os
11053         for some ports
11054
11055         * doc/tm.texi (OPTIMIZATION_OPTIONS): Update documentation to
11056         reflect function specific option support.
11057
11058         * target.h (struct target_option_hooks): Add fields to say whether
11059         the cold attribute implies -Os and the hot attribute implies -O3.
11060
11061         * target-def.h (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION):
11062         By default, do not turn on -Os for cold functions.
11063         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): By default, do
11064         not turn on -O3 for hot functions.
11065
11066         * c-common.c (handle_hot_attribute): Use target hook to determine
11067         if hot functions should enable -O3.
11068         (handle_cold_attribute): Use target hook to determine if cold
11069         functions should enable -Os.
11070
11071         * config/i386/i386.c (ix86_target_string): Add -m3dnowa support.
11072         (override_options): Move disable scheduling to
11073         optimization_options.
11074         (optimization_options): Disable scheduling here, not
11075         override_options.
11076         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Define.
11077         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Define.
11078
11079         * config/ia64/ia64.c (ia64_override_options): Move setting
11080         scheduling flags to ia64_optimization_options.
11081         (ia64_optimization_options): Disable scheduling options here, and
11082         not in ia64_override_options.
11083         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Define.
11084         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Define.
11085
11086 2008-07-25  H.J. Lu  <hongjiu.lu@intel.com>
11087
11088         PR target/36936
11089         * config/i386/i386.c (override_options): Don't clear TARGET_CMOVE.
11090
11091 2008-07-25  Martin Jambor  <mjambor@suse.cz>
11092
11093         PR tree-optimization/36926
11094         * ipa-prop.c (ipa_analyze_call_uses): Call
11095         ipa_is_ssa_with_stmt_def instead of SSA_NAME_IS_DEFAULT_DEF.
11096
11097 2008-07-25  Joseph Myers  <joseph@codesourcery.com>
11098
11099         * config/arm/iwmmxt.md (movv8qi_internal, movv4hi_internal,
11100         movv2si_internal): Add mem = reg alternative.
11101
11102 2008-07-25  Andreas Tobler  <a.tobler@schweiz.org>
11103
11104         PR bootstrap/36918
11105         * config/sparc/sparc.h (DEFAULT_PCC_STRUCT_RETURN): Define
11106         DEFAULT_PCC_STRUCT_RETURN to 127.
11107
11108 2008-07-24  Jan Hubicka  <jh@suse.cz>
11109
11110         * cgraphbuild.c (record_reference): Drop non-unit-at-a-time code.
11111         (build_cgraph_edges): Likewise.
11112         * cgraph.c (cgraph_node): Do not update assembler hash.
11113         (cgraph_remove_node): Drop non-unit-at-a-time code.
11114         * tree-pass.h (pass_O0_always_inline): Remove.
11115         * ipa-reference.c (gate_reference): Remove unit-at-a-time check.
11116         * toplev.c (process_options): Flag unit-at-a-time does not imply
11117         no section anchors.
11118         * cgraphunit.c: Update comments.
11119         (decide_is_function_needed): Drop non-unit-at-a-time mode.
11120         (cgraph_assemble_pending_functions): Remove.
11121         (cgraph_reset_node): Drop non-unit-at-a-time code.
11122         (cgraph_finalize_function): Likewise.
11123         (cgraph_analyze_function): Likewise.
11124         (cgraph_finalize_compilation_unit): Likewise.
11125         (cgraph_expand_function): Likewise.
11126         (cgraph_optimize): Likesise.
11127         (save_inline_function_body): Likewise.
11128         * ipa-pure-const.c (gate_pure_const): Drop flag_unit_at_a_time check.
11129         * tree-ssa-alias.c (maybe_be_aliased): Likewise.
11130         * ipa-inline.c: Update comments.
11131         (enum inlining_mode): remove INLINE_SPEED.
11132         (cgraph_clone_inlined_nodes): Drop unit-at-a-time check.
11133         (cgraph_mark_inline_edge): Likewise.
11134         (try_inline): Likewise.
11135         (cgraph_decide_inlining_incrementally): Likewise.
11136         (cgraph_gate_inlining): Remove.
11137         (cgraph_early_inlining): Remove flag_unit_at_a_time checks.
11138         (cgraph_gate_early_inlining): Likewise.
11139         (gate_inline_passes): Remove.
11140         (pass_inline_parameters, pass_ipa_inline): Remove gates.
11141         (cgraph_gate_O0_always_inline, cgraph_O0_always_inline,
11142         pass_O0_always_inline): Remove.
11143         * c-pch.c (c_pch_matching): Remove -funit-at-a-time.
11144         * dwarf2out.c (reference_to_unused): Remove flag_unit_at_a_time check.
11145         * opts.c (no_unit_at_a_time_default): Remove.
11146         (decode_options): Remove flag_unit_at_a_time reset and warning.
11147         * opts.h (no_unit_at_a_time_default): Remove.
11148         * c-decl.c (diagnose_mismatched_decls): Do not require inline keyword
11149         early in GNU dialect.
11150         (merge_decls): Update comment; drop unit-at-a-time check.
11151         (finish_decl): Likewise.
11152         (grok_declaration): Remove flag_inline_trees code.
11153         (finish_functions): Return on function returning non-void on all
11154         statics.
11155         * ipa-tye-escape.c (gate_type_escape_vars): Remove.
11156         * cfgexpand.c (expand_one_static_var): Remove.
11157         (expand_one_var): Remove expand_one_static_var call.
11158         (expand_used_vars_for_block): Remove flag_unit_a_time check.
11159         * c-opts.c (c_common_post_options): Remove flag_inline_trees code
11160         and flag_unit_at_a-time compatibility checks.
11161         * varasm.c (assemble_alias): Remove flag_unit_at_a_time check.
11162         * tree-inline.c (flag_inline_trees): Remove.
11163         (inlinable_function_p): Don't check it.
11164         (expand_call_inline): Remove non-unit-at-a-time code.
11165         * tree-inline.h (flag_inline_trees): Remove.
11166         * tree-optimize.c (execute_early_local_optimizations): Remove
11167         unit-at-a-time checks.
11168         (tree_rest_of_compilation): Likewise.
11169         * combine.c (setup_incoming_promotions): Likewise.
11170         * tree-profile.c (tree_gen_ic_func_profiler): Likewise.
11171         * tree-ssa-structalias.c (delete_points_to_sets): Likewise.
11172         * passes.c (pass_inline_parameters): Update comments; remove
11173         O0_alwaysinline pass.
11174         (execute_one_ipa_transform_pass): Do not reset in_gimple_form.
11175         (execute_one_pass): Likewise.
11176         * i386.c (ix86_function_regparm): Remove unit-at-a-time check.
11177         (ix86_function_sseregparm): Likewise.
11178         * arm.c (arm_function_in_section_p): Likewise.
11179         * bfin.c (bfin_load_pic_reg, bfin_function_ok_for_sibcall): Likewise.
11180         * varpool.c: Update comments.
11181         (decide_is_variable_needed): Remove unit-at-a-time checks.
11182         (varpool_finalize_decl): Likewise.
11183
11184 2008-07-24  Kaz Kojima  <kkojima@gcc.gnu.org>
11185
11186         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Set flag_omit_frame_pointer
11187         to 2 instead of -1.
11188         (OVERRIDE_OPTIONS): Check if flag_omit_frame_pointer is equal to 2.
11189
11190 2008-07-24  Kai Tietz  <kai.tietz@onevision.com>
11191
11192         * config/i386/i386.c (get_dllimport_decl): Treat user_label_prefix for
11193         imp symbol extension.
11194
11195         2008-07-23  Ian Lance Taylor  <iant@google.com>
11196
11197         * tree-vrp.c (infer_value_range): Ignore asm statements when
11198         looking for memory accesses for -fdelete-null-pointer-checks.
11199
11200 2008-07-24  Ben Elliston  <bje@au.ibm.com>
11201
11202         * config/spu/spu-c.c (__vector_keyword): New variable.
11203         (vector_keyword): Likewise.
11204         (spu_categorize_keyword): New function.
11205         (spu_macro_to_expand): Likewise.
11206         (spu_cpu_cpp_builtins): Enable context-sensitive macros if not
11207         compiling an ISO C dialect.
11208
11209 2008-07-24  Ben Elliston  <bje@au.ibm.com>
11210
11211         * config/rs6000/rs6000-c.c: Move GTY(()) markers to match
11212         conventional usage.
11213
11214 2008-07-23  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
11215
11216         * configure: Regenerate.
11217         * configure.ac: Require texinfo 4.7.
11218         * doc/install.texi: Document texinfo 4.7 requirement.
11219
11220 2008-07-23  Martin Jambor  <mjambor@suse.cz>
11221
11222         * ipa-cp.c (ipcp_print_edge_profiles): Test for node->analyzed
11223         rather than for DECL_SAVED_TREE.
11224         * ipa-prop.c: Include diagnostic.h.
11225         (ipa_check_stmt_modifications): Check LHS of GIMPLE_MODIFY_EXPRs
11226         thoroughly.
11227         (ipa_detect_param_modifications): Function rewritten from scratch.
11228         (ipa_compute_jump_functions): Changed accesses to modification flags.
11229         (ipa_free_node_params_substructures): Update flags destruction.
11230         (ipa_node_duplication_hook): Update flags duplication.
11231         (ipa_print_all_params_modified): Updated flag access.
11232         * ipa-prop.h (struct ipa_param_flags): New structure.
11233         (struct ipa_node_params): New field modification_analysis_done,
11234         modified_flags changed into param_flags.
11235         (ipa_is_ith_param_modified): Changed to use new flags.
11236         * Makefile.in (ipa-prop.o): Add $(DIAGNOSTIC_H) to dependencies.
11237
11238         * ipa-prop.c (ipa_print_all_jump_functions): Moved here from
11239         ipa-cp.c and split into two functions.
11240         (ipa_print_node_jump_functions): New function.
11241         (compute_scalar_jump_functions): New function.
11242         (type_like_member_ptr_p): New function.
11243         (compute_pass_through_member_ptrs): New function.
11244         (fill_member_ptr_cst_jump_function): New function.
11245         (determine_cst_member_ptr): New function.
11246         (compute_cst_member_ptr_arguments): New function.
11247         (ipa_compute_jump_functions): Complete rewrite.
11248         * ipa-prop.h (enum jump_func_type): Make explicit that we depend
11249         on IPA_UNKNOWN being zero. Added value IPA_CONST_MEMBER_PTR.
11250         (struct ipa_member_ptr_cst): New structure.
11251         (union jump_func_value): New field member_cst.
11252         * ipa-cp.c (ipcp_lat_is_insertable): New function.
11253         (ipcp_lattice_from_jfunc): Produces bottom lattices for unhandled
11254         jump function types.
11255         (ipcp_print_all_lattices): Slight fprintf rearrangement.
11256         (ipcp_print_all_structures): Call ipa_print_all_jump_functions
11257         instead of ipcp_print_all_jump_functions.
11258         (ipcp_insert_stage): Use ipcp_lat_is_insertable, create replace maps
11259         only for replacable scalars.
11260
11261         * doc/invoke.texi (Optimize options): Add description of
11262         -findirect-inlining.
11263         * common.opt (flag_indirect_inlining): New flag.
11264         * opts.c (decode_options): Set flag_indirect_inlining when
11265         optimize >= 3.
11266
11267         * ipa-inline.c: Include ipa-prop.h.
11268         (inline_indirect_intraprocedural_analysis): New function.
11269         (inline_generate_summary): Allocate parameter and argument info
11270         structures, call inline_indirect_intraprocedural_analysis on each
11271         node when doing indirect inlining and deallocate indirect inlining
11272         data structures in the end.
11273         * ipa-prop.c (ipa_create_param_decls_array): Return if already done.
11274         (free_all_ipa_structures_after_iinln): New function.
11275         (free_all_ipa_structures_after_ipa_cp): Checks whether iinln will be
11276         done.
11277         * Makefile.in (ipa-inline.o): Added $(IPA_PROP_H) to dependencies.
11278
11279         * cgraphbuild.c (compute_call_stmt_bb_frequency): New function.
11280         (build_cgraph_edges): Call compute_call_stmt_bb_frequency instead
11281         of computing the frequency separately.
11282         (rebuild_cgraph_edges): Call compute_call_stmt_bb_frequency instead
11283         of computing the frequency separately.
11284         * ipa-cp.c (ipcp_print_all_structures): Replace a call to
11285         ipa_print_all_param_modified with a call to ipa_print_all_param_flags.
11286         * ipa-prop.c (ipa_get_member_ptr_load_param): New function.
11287         (ipa_get_stmt_member_ptr_load_param): New function.
11288         (ipa_is_ssa_with_stmt_def): New function.
11289         (ipa_note_param_call): New function.
11290         (ipa_analyze_call_uses): New function.
11291         (ipa_analyze_stmt_uses): New function.
11292         (ipa_analyze_params_uses): New function.
11293         (ipa_free_node_params_substructures): Also free the param_calls linked
11294         list.
11295         (ipa_node_duplication_hook): Also duplicate the param_calls
11296         linked list.
11297         (ipa_print_node_param_flags): New function.
11298         (ipa_print_all_params_modified): Renamed to ipa_print_all_param_flags.
11299         (ipa_print_all_param_flags): Calls ipa_print_node_param_flags.
11300         * ipa-prop.h (struct ipa_param_flags): New field called.
11301         (struct ipa_param_call_note): New structure.
11302         (struct ipa_node_params): New fields param_calls and
11303         uses_analysis_done.
11304         (ipa_is_ith_param_called): New function.
11305         * ipa-inline.c (inline_indirect_intraprocedural_analysis): Call
11306         ipa_analyze_params_uses and dump parameter flags.
11307
11308         * ipa-inline.c (cgraph_decide_recursive_inlining): Call
11309         ipa_propagate_indirect_call_infos if performing indirect inlining,
11310         pass a new parameter new_edges to it.
11311         (add_new_edges_to_heap): New fucntion.
11312         (cgraph_decide_inlining_of_small_functions): New vector
11313         new_indirect_edges for newly found indirect edges , call
11314         ipa_propagate_indirect_call_infos after inlining.
11315         (cgraph_decide_inlining): Call ipa_propagate_indirect_call_infos after
11316         inlining if performing indirect inlining.  Call
11317         free_all_ipa_structures_after_iinln when doing so too.
11318         (inline_generate_summary): Do not call
11319         free_all_ipa_structures_after_iinln here.
11320         * ipa-prop.c (update_jump_functions_after_inlining): New function.
11321         (print_edge_addition_message): New function.
11322         (update_call_notes_after_inlining): New function.
11323         (propagate_info_to_inlined_callees): New function.
11324         (ipa_propagate_indirect_call_infos): New function.
11325         * ipa-prop.h: Include cgraph.h
11326         (struct ipa_param_call_note): Fields reordered, new field processed.
11327         * cgraph.h (cgraph_edge): Shrink loop_nest field to 31 bits, add a new
11328         flag indirect_call.
11329         * cgraphunit.c (verify_cgraph_node): Allow indirect edges not to have
11330         rediscovered call statements.
11331         * cgraph.c (cgraph_create_edge): Initialize indirect_call to zero.
11332         (dump_cgraph_node): Dump also the indirect_call flag.
11333         (cgraph_clone_edge): Copy also the indirect_call flag.
11334         * tree-inline.c (copy_bb): Do not check for fndecls from call
11335         expressions, check for edge availability when moving clones.
11336         (get_indirect_callee_fndecl): New function.
11337         (expand_call_inline): If callee declaration is not apprent from
11338         the statement, try calling get_indirect_callee_fndecl.  Do not
11339         issue warnings or call sorry when not inlinings an indirect edge.
11340         * Makefile.in (IPA_PROP_H): Added $(CGRAPH_H) to dependencies.
11341
11342         * ipa-prop.c (ipa_print_node_param_flags): Make the dump format a
11343         bit more frandly to matching.
11344         * testsuite/g++.dg/ipa/iinline-1.C: New testcase.
11345         * testsuite/gcc.dg/ipa/iinline-1.c: New testcase.
11346         * testsuite/gcc.dg/ipa/modif-1.c: New testcase.
11347
11348 2008-07-23  Michael Meissner  <gnu@the-meissners.org>
11349
11350         PR 36907
11351         * opth-gen.awk: Suppress function specific features when building
11352         target libraries.
11353         * optc-gen.awk: Ditto.
11354
11355 2008-07-23  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11356
11357         PR 35058
11358         * diagnostic.c (pedwarn): Add opt parameter.
11359         (pedwarn0): New.
11360         * c-tree.h (pedwarn_init): Add opt parameter.
11361         (pedwarn_c90): Likewise.
11362         (pedwarn_c99): Likewise.
11363         * c-errors.c (pedwarn_c99): Likewise.
11364         (pedwarn_c90): Likewise.
11365         * toplev.h (pedwarn): Update declaration.
11366         (pedwarn0): Declare.
11367         * c-lex.c: All calls to pedwarn changed.
11368         * builtins.c: All calls to pedwarn changed.
11369         * toplev.c: All calls to pedwarn changed.
11370         * c-decl.c: All calls to pedwarn changed.
11371         * c-typeck.c: All calls to pedwarn changed.
11372         * c-common.c: All calls to pedwarn changed.
11373         * c-parser.c: All calls to pedwarn changed.
11374
11375 2008-07-23  Michael Meissner  <gnu@the-meissners.org>
11376             Karthik Kumar  <karthikkumar@gmail.com>
11377
11378         * attribs.c (file scope): Include c-common.h.
11379         (decl_attributes): Add support for #pragma GCC optimize and
11380         #pragma GCC option.
11381
11382         * targhooks.c (default_can_inline_p): New function that is the
11383         default for the TARGET_CAN_INLINE_P target hook.
11384
11385         * targhooks.h (default_can_inline_p): Add declaration.
11386
11387         * tree.c (cl_optimization_node): New static tree for building
11388         OPTIMIZATION_NODE tree.
11389         (cl_target_option_node): New static tree for building
11390         TARGET_OPTION_NODE tree.
11391         (cl_option_hash_table): New hash table for hashing
11392         OPTIMIZATION_NODE and TARGET_OPTION_NODE trees.
11393         (cl_option_hash_hash): New function to provide the hash value for
11394         OPTIMIZATION_NODE and TARGET_OPTION_NODE trees.
11395         (cl_option_hash_eq): New function to provide an equality test for
11396         OPTIMIZATION_NODE and TARGET_OPTION_NODE trees.
11397         (tree_code_size): Add support for OPTIMIZATION_NODE and
11398         TARGET_OPTION_NODE trees.
11399         (tree_code_structure): Add support for OPTIMIZATION_NODE and
11400         TARGET_OPTION_NODE trees.
11401         (build_optimization_node): Build a tree that has all of the
11402         current optimization options.
11403         (build_target_option_node): Build a tree that has the target
11404         options that might be changed on a per function basis.
11405
11406         * tree.h (file scope): Include options.h.
11407         (DECL_FUNCTION_SPECIFIC_TARGET): New accessor macro.
11408         (DECL_FUNCTION_SPECIFIC_OPTIMIZATION): Ditto.
11409         (TREE_OPTIMIZATION): Ditto.
11410         (TREE_TARGET_SPECIFIC): Ditto.
11411         (struct tree_function_decl): Add fields for remembering the
11412         current optimization options and target specific options.
11413         (struct tree_optimization_option): New tree variant that remembers
11414         the optimization options.
11415         (struct tree_target_option): New tree variant that remembers the
11416         target specific flags that might change for compiling a particular
11417         function.
11418         (union tree_node): Include tree_optimization_option and
11419         tree_target_option fields.
11420         (enum tree_index): Add TI_OPTIMIZATION_DEFAULT,
11421         TI_OPTIMIZATION_CURRENT, TI_OPTIMIZATION_COLD,
11422         TI_OPTIMIZATION_HOT, TI_TARGET_OPTION_DEFAULT,
11423         TI_TARGET_OPTION_CURRENT, TI_CURRENT_OPTION_PRAGMA,
11424         TI_CURRENT_OPTIMIZE_PRAGMA entries for saving function specific
11425         optimization and target options.
11426         (optimization_default_node): New macro to refer to global_trees
11427         field.
11428         (optimization_current_node): Ditto.
11429         (optimization_cold_node): Ditto.
11430         (optimization_hot_node): Ditto.
11431         (target_option_default_node): Ditto.
11432         (target_option_current_node): Ditto.
11433         (current_option_pragma): Ditto.
11434         (current_optimize_pragma): Ditto.
11435
11436         * target.h (struct gcc_target): Add valid_option_attribute_p,
11437         target_option_save, target_option_restore, target_option_print,
11438         target_option_pragma_parse, and can_inline_p hooks.
11439
11440         * toplev.h (parse_optimize_options): Add declaration.
11441         (fast_math_flags_struct_set_p): Ditto.
11442
11443         * c-cppbuiltin.c (c_cpp_builtins_optimize_pragma): New function to
11444         adjust the current __OPTIMIZE__, etc. macros when #pragma GCC
11445         optimize is used.
11446
11447         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Call
11448         tree_can_inline_p hook to see if one function can inline another.
11449         (cgraph_decide_inlining): Ditto.
11450         (cgraph_decide_inlining_incrementally): Ditto.
11451
11452         * opts.c (decode_options): Add support for running multiple times
11453         to allow functions with different target or optimization options
11454         than was specified on the command line.
11455         (fast_math_flags_struct_set_p): New function that is similar to
11456         fast_math_flags_set_p, except it uses the values in the
11457         cl_optimization structure instead of global variables.
11458
11459         * optc-gen.awk: Add support for TargetSave to allow a back end to
11460         declare new fields that need to be saved when using function
11461         specific options.  Include flags.h and target.h in the options.c
11462         source.  Add support for Save to indicate which options can be set
11463         for individual functions.  Generate cl_optimize_save,
11464         cl_optimize_restore, cl_optimize_print, cl_target_option_save,
11465         cl_target_option_restore, cl_target_option_print functions to
11466         allow functions to use different optimization or target options.
11467
11468         * opt-functions.awk (var_type_struct): Return the type used for
11469         storing the field in a structure.
11470
11471         * opth-gen.awk: Add support for TargetSave to allow a back end to
11472         declare new fields that need to be saved when using function
11473         specific options.  Add support for Save to indicate which options
11474         can be set for individual functions.  Only generate one extern for
11475         Mask fields.  Generate cl_optimization and cl_target_option
11476         structures to remember optimization and target options.
11477
11478         * treestruct.def (TS_OPTIMIZATION): Add support for garbage
11479         collecting new tree nodes.
11480         (TS_TARGET_OPTION): Ditto.
11481
11482         * c-decl.c (merge_decls): Merge function specific target and
11483         optimization options.
11484
11485         * function.c (invoke_set_current_function_hook): If the function
11486         uses different optimization options, change the global variables
11487         to reflect this.
11488
11489         * coretypes.h (struct cl_optimization): Add forward reference.
11490         (struct cl_target_option): Ditto.
11491
11492         * c-pragma.c (option_stack): New static vector to remember the
11493         current #pragma GCC option stack.
11494         (handle_pragma_option): New function to support #pragma GCC option
11495         to change target options.
11496         (optimize_stack): New static vector to remember the current
11497         #pragma GCC optimize stack.
11498         (handle_pragma_optimize): New function to support #pragma GCC
11499         optimize to change optimization options.
11500         (init_pragma): Add support for #pragma GCC optimize and #pragma
11501         GCC option.
11502
11503         * tree.def (OPTIMIZATION_NODE): New tree code for remembering
11504         optimization options.
11505         (TARGET_OPTION_NODE): New tree code for remembering certain target
11506         options.
11507
11508         * print-tree.c (print_node): Add support for OPTIMIZATION_NODE and
11509         TARGET_OPTION_NODE trees.
11510
11511         * common.opt (-O): Add Optimization flag.
11512         (-Os): Ditto.
11513         (-fmath-errno): Ditto.
11514         (-falign-functions): Add UInteger flag to make sure flag gets full
11515         int in cl_optimization structure.
11516         (-falign-jumps): Ditto.
11517         (-falign-labels): Ditto.
11518         (-falign-loops): Ditto.
11519         (-fsched-stalled-insns): Ditto.
11520         (-fsched-stalled-insns-dep): Ditto.
11521
11522         * target-def.h (TARGET_VALID_OPTION_ATTRIBUTE_P): Add default
11523         definition.
11524         (TARGET_OPTION_SAVE): Ditto.
11525         (TARGET_OPTION_RESTORE): Ditto.
11526         (TARGET_OPTION_PRINT): Ditto.
11527         (TARGET_OPTION_PRAGMA_PARSE): Ditto.
11528         (TARGET_CAN_INLINE_P): Ditto.
11529         (TARGET_INITIALIZER): Add new hooks.
11530
11531         * tree-inline.c (tree_can_inline_p): New function to determine
11532         whether one function can inline another.  Check if the functions
11533         use compatible optimization options, and also call the backend
11534         can_inline_p hook.
11535
11536         * tree-inline.h (tree_can_inline_p): Add declaration.
11537
11538         * c-common.c (c_common_attribute): Add support for option and
11539         optimize attributes.
11540         (handle_option_attribute): Add support for the option attribute to
11541         allow the user to specify different target options for compiling a
11542         specific function.
11543         (handle_optimize_attribute): Add support for the optimize
11544         attribute to allow the user to specify different optimization
11545         options for compiling a specific function.
11546         (handle_hot_attribute): Turn on -O3 optimization for this one
11547         function if it isn't the default optimization level.
11548         (handle_cold_attribute): Turn on -Os optimization for this one
11549         function if it insn't the default optimization.
11550         (const_char_p): New const char * typedef.
11551         (optimize_args): New static vector to remember the optimization
11552         arguments.
11553         (parse_optimize_options): New function to set up the optimization
11554         arguments from either the optimize attribute or #pragma GCC optimize.
11555
11556         * c-common.h (c_cpp_builtins_optimize_pragma): Add declaration.
11557         (builtin_define_std): Ditto.
11558
11559         * config.gcc (i[3467]86-*-*): Add i386-c.o to C/C++ languages.
11560         Add t-i386 Makefile fragment to add i386-c.o and i386.o dependencies.
11561         (x86_64-*-*): Ditto.
11562
11563         * Makefile.in (TREE_H): Add options.h.
11564         (options.o): Add $(TARGET_H) $(FLAGS_H) dependencies.
11565
11566         * doc/extend.texi (option attribute): Document new attribute.
11567         (optimize attribute): Ditto.
11568         (hot attribute): Document hot attribute sets -O3.
11569         (cold attribute): Document cold attribute sets -Os.
11570         (#pragma GCC option): Document new pragma.
11571         (#pragma GCC optimize): Ditto.
11572
11573         * doc/options.texi (TargetSave): Document TargetSave syntax.
11574         (UInteger): Document UInteger must be used for certain flags.
11575         (Save): Document Save option to create target specific options
11576         that can be saved/restored on a function specific context.
11577
11578         * doc/c-tree.texi (DECL_FUNCTION_SPECIFIC_TARGET): Document new macro.
11579         (DECL_FUNCTION_SPECIFIC_OPTIMIZATION): Ditto.
11580
11581         * doc/tm.texi (TARGET_VALID_OPTION_ATTRIBUTE_P): Document new hook.
11582         (TARGET_OPTION_SAVE): Ditto.
11583         (TARGET_OPTION_RESTORE): Ditto.
11584         (TARGET_OPTION_PRINT): Ditto.
11585         (TARGET_OPTION_PRAGMA_PARSE): Ditto.
11586         (TARGET_CAN_INLINE_P): Ditto.
11587
11588         * doc/invoke.texi (-mfpmath=sse+387): Document as an alias for
11589         -mfpmath=sse,387.
11590         (-mfpmath=both): Ditto.
11591
11592 2008-07-23  Michael Meissner  <gnu@the-meissners.org>
11593             Karthik Kumar  <karthikkumar@gmail.com>
11594
11595         * config/i386/i386.h (TARGET_ABM): Move switch into ix86_isa_flags.
11596         (TARGET_POPCNT): Ditto.
11597         (TARGET_SAHF): Ditto.
11598         (TARGET_AES): Ditto.
11599         (TARGET_PCLMUL): Ditto.
11600         (TARGET_CMPXCHG16B): Ditto.
11601         (TARGET_RECIP): Move switch into target_flags.
11602         (TARGET_FUSED_MADD): Ditto.
11603         (ix86_arch_features): Make an unsigned char type.
11604         (ix86_tune_features): Ditto.
11605         (OVERRIDE_OPTIONS): Add bool argument to override_options call.
11606         (TARGET_CPU_CPP_BUILTINS): Move into ix86_target_macros.
11607         (REGISTER_TARGET_PRAGMAS): Define, call ix86_register_pragmas.
11608
11609         * config/i386/i386.opt (arch): New TargetSave field to define
11610         fields that need to be saved for function specific option support.
11611         (tune): Ditto.
11612         (fpmath): Ditto.
11613         (branch_cost): Ditto.
11614         (ix86_isa_flags_explicit): Ditto.
11615         (tune_defaulted): Ditto.
11616         (arch_specified): Ditto.
11617         (-m128-long-double): Add Save flag to save option for target
11618         specific option support.
11619         (-m80387): Ditto.
11620         (-maccumulate-outgoing-args): Ditto.
11621         (-malign-double): Ditto.
11622         (-malign-stringops): Ditto.
11623         (-mfancy-math-387): Ditto.
11624         (-mhard-float): Ditto.
11625         (-mieee-fp): Ditto.
11626         (-minline-all-stringops): Ditto.
11627         (-minline-stringops-dynamically): Ditto.
11628         (-mms-bitfields): Ditto.
11629         (-mno-align-stringops): Ditto.
11630         (-mno-fancy-math-387): Ditto.
11631         (-mno-push-args): Ditto.
11632         (-mno-red-zone): Ditto.
11633         (-mpush-args): Ditto.
11634         (-mred-zone): Ditto.
11635         (-mrtd): Ditto.
11636         (-msseregparm): Ditto.
11637         (-mstack-arg-probe): Ditto.
11638         (-m32): Ditto.
11639         (-m64): Ditto.
11640         (-mmmx): Ditto.
11641         (-m3dnow): Ditto.
11642         (-m3dnowa): Ditto.
11643         (-msse): Ditto.
11644         (-msse2): Ditto.
11645         (-msse3): Ditto.
11646         (-msse4.1): Ditto.
11647         (-msse4.2): Ditto.
11648         (-msse4): Ditto.
11649         (-mno-sse4): Ditto.
11650         (-msse4a): Ditto.
11651         (-msse5): Ditto.
11652         (-mrecip): Move flag into target_flags.
11653         (-mcld): Ditto.
11654         (-mno-fused-madd): Ditto.
11655         (-mfused-madd): Ditto.
11656         (-mabm): Move flag into ix86_isa_flags.
11657         (-mcx16): Ditto.
11658         (-mpopcnt): Ditto.
11659         (-msahf): Ditto.
11660         (-maes): Ditto.
11661         (-mpclmul): Ditto.
11662
11663         * config/i386/i386-c.c: New file for #pragma support.
11664         (ix86_target_macros_internal): New function to #define or #undef
11665         target macros based when the user uses the #pragma GCC option to
11666         change target options.
11667         (ix86_pragma_option_parse): New function to add #pragma GCC option
11668         support.
11669         (ix86_target_macros): Move defining the target macros here from
11670         TARGET_CPU_CPP_BUILTINS in i386.h.
11671         (ix86_register_pragmas): Register the #pragma GCC option hook.  If
11672         defined, initialize any subtarget #pragmas.
11673
11674         * config/i386/darwin.h (REGISTER_SUBTARGET_PRAGMAS): Rename from
11675         REGISTER_TARGET_PRAGMAS.
11676
11677         * config/i386/t-i386: New file for x86 dependencies.
11678         (i386.o): Make dependencies mirror the include files used.
11679         (i386-c.o): New file, add dependencies.
11680
11681         * config/i386/i386-protos.h (override_options): Add bool argument.
11682         (ix86_valid_option_attribute_tree): Add declaration.
11683         (ix86_target_macros): Ditto.
11684         (ix86_register_macros): Ditto.
11685
11686         * config/i386/i386.c (ix86_tune_features): Move initialization of
11687         the target masks to initial_ix86_tune_features to allow functions
11688         to have different target options.  Make type unsigned char,
11689         instead of unsigned int.
11690         (initial_ix86_tune_features): New static vector to hold processor
11691         masks for the tune variables.
11692         (ix86_arch_features): Move initialization of the target masks to
11693         initial_ix86_arch_features to allow functions to have different
11694         target options.  Make type unsigned char, instead of unsigned int.
11695         (initial_ix86_arch_features): New static vector to hold processor
11696         masks for the arch variables.
11697         (enum ix86_function_specific_strings): New enum to describe the
11698         string options used for attribute((option(...))).
11699         (ix86_target_string): New function to return a string that
11700         describes the target options.
11701         (ix86_debug_options): New function to print the current options in
11702         the debugger.
11703         (ix86_function_specific_save): New function hook to save the
11704         function specific global variables in the cl_target_option structure.
11705         (ix86_function_specific_restore): New function hook to restore the
11706         function specific variables from the cl_target_option structure to
11707         the global variables.
11708         (ix86_function_specific_print): New function hook to print the
11709         target specific options in the cl_target_option structure.
11710         (ix86_valid_option_attribute_p): New function hook to validate
11711         attribute((option(...))) arguments.
11712         (ix86_valid_option_attribute_tree): New function that is common
11713         code between attribute((option(...))) and #pragma GCC option
11714         support that parses the options and returns a tree holding the options.
11715         (ix86_valid_option_attribute_inner_p): New helper function for
11716         ix86_valid_option_attribute_tree.
11717         (ix86_can_inline_p): New function hook to decide if one function
11718         can inline another on a target specific basis.
11719         (ix86_set_current_function); New function hook to switch target
11720         options if the user used attribute((option(...))) or #pragma GCC
11721         option.
11722         (ix86_tune_defaulted): Move to static file scope from
11723         override_options.
11724         (ix86_arch_specified): Ditto.
11725         (OPTION_MASK_ISA_AES_SET): New macro for moving switches into
11726         ix86_isa_flags.
11727         (OPTION_MASK_ISA_PCLMUL_SET): Ditto.
11728         (OPTION_MASK_ISA_ABM_SET): Ditto.
11729         (OPTION_MASK_ISA_POPCNT_SET): Ditto.
11730         (OPTION_MASK_ISA_CX16_SET): Ditto.
11731         (OPTION_MASK_ISA_SAHF_SET): Ditto.
11732         (OPTION_MASK_ISA_AES_UNSET): Ditto.
11733         (OPTION_MASK_ISA_PCLMUL_UNSET): Ditto.
11734         (OPTION_MASK_ISA_ABM_UNSET): Ditto.
11735         (OPTION_MASK_ISA_POPCNT_UNSET): Ditto.
11736         (OPTION_MASK_ISA_CX16_UNSET): Ditto.
11737         (OPTION_MASK_ISA_SAHF_UNSET): Ditto.
11738         (struct ptt): Move to static file scope from override_options.
11739         (processor_target_table): Ditto.
11740         (cpu_names): Ditto.
11741         (ix86_handle_option): Add support for options that are now isa options.
11742         (override_options): Add support for declaring functions that
11743         support different target options than were specified on the
11744         command line.  Move struct ptt, processor_target_table, cpu_names,
11745         ix86_tune_defaulted, ix86_arch_specified to static file scope.
11746         Add bool argument.  Fix up error messages so the appropriate error
11747         is given for either command line or attribute.
11748         (ix86_previous_fndecl): New static to remember previous function
11749         declaration to see if we need to change target options.
11750         (ix86_builtins_isa): New array to record the ISA of each builtin
11751         function.
11752         (def_builtin): Always create the builtin function, even if the
11753         current ISA doesn't support it.
11754         (ix86_init_mmx_sse_builtins): Remove TARGET_AES and TARGET_PCLMUL
11755         tests for those builtins.
11756         (ix86_init_builtins): Remove TARGET_MMX test for calling
11757         ix86_init_mmx_sse_builtins.
11758         (ix86_expand_builtin): If the current ISA doesn't support a given
11759         builtin, signal an error.
11760         (TARGET_VALID_OPTION_ATTRIBUTE_P): Set target hook.
11761         (TARGET_SET_CURRENT_FUNCTION): Ditto.
11762         (TARGET_OPTION_SAVE): Ditto.
11763         (TARGET_OPTION_RESTORE): Ditto.
11764         (TARGET_OPTION_PRINT): Ditto.
11765         (TARGET_CAN_INLINE_P): Ditto.
11766
11767 2008-07-22  Rafael Ávila de Espíndola  <espindola@google.com>
11768
11769         * c-typeck.c (build_external_ref): Don't call assemble_external.
11770         * final.c (output_operand): Call assemble_external.
11771
11772 2008-07-21  DJ Delorie  <dj@redhat.com>
11773
11774         * config/h8300/h8300.c (h8300_hard_regno_scratch_ok): New.
11775         (TARGET_HARD_REGNO_SCRATCH_OK): Define.
11776
11777 2008-07-21  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
11778
11779         * config/spu/spu.md ("div<mode>3"): Convert into expander, move
11780         original insn and splitter contents into ...
11781         ("*div<mode>3_fast"): ... this new pattern.  Enable only if
11782         flag_unsafe_math_optimizations.  Add dummy scratch register.
11783         ("*div<mode>3_adjusted"): New insn and splitter.  Enable only if
11784         !flag_unsafe_math_optimizations.  Returns number with next
11785         highest magnitude if this is still less or equal to the true
11786         quotient in magnitude.
11787
11788 2008-07-21  Rafael Ávila de Espíndola  <espindola@google.com>
11789
11790         * Makefile.in: Replace toplev.h with TOPLEV_H.
11791         * c-decl.c (merge_decls): Don't set DECL_IN_SYSTEM_HEADER.
11792         * c-lex.c (fe_file_change): Don't set in_system_header.
11793         * c-parser.c (c_token): Remove in_system_header.
11794         (c_lex_one_token): Don't set in_system_header.
11795         (c_parser_set_source_position_from_token): Don't set in_system_header.
11796         * diagnostic.c (diagnostic_report_diagnostic): Use location from
11797         diagnostic_info.
11798         (warning_at): New.
11799         * diagnostic.h (diagnostic_report_warnings_p): Add LOC argument.
11800         * flags.h (in_system_header): Remove.
11801         * function.c (saved_in_system_header): Remove.
11802         (push_cfun): Don't set in_system_header.
11803         (pop_cfun): Don't set in_system_header.
11804         (push_struct_function): Don't set in_system_header.
11805         * input.h (expanded_location): Add sysp.
11806         (in_system_header_at): New.
11807         (in_system_header): New.
11808         * toplev.c (in_system_header): Remove.
11809         * toplev.h: Include input.h
11810         (warning_at): New.
11811         * tree-cfg.c (execute_warn_function_return): Call warning_at.
11812         * tree-ssa.c (warn_uninit): Call warning_at.
11813         (warn_uninitialized_var): Update calls to warn_uninit.
11814         (warn_uninitialized_phi): Update calls to warn_uninit.
11815         * tree.c (make_node_stat): Don't set DECL_IN_SYSTEM_HEADER.
11816         (expand_location): Initialize xloc.sysp.
11817         * tree.h (DECL_IN_SYSTEM_HEADER): Use in_system_header_at.
11818         (tree_decl_with_vis): Remove in_system_header_flag.
11819
11820 2008-07-21  Andreas Krebbel  <krebbel1@de.ibm.com>
11821
11822         PR target/36822
11823         * recog.c (asm_operand_ok): Change the order of the extra
11824         memory constraint checks.
11825
11826 2008-07-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11827
11828         PR tree-opt/36879
11829         * tree-switch-conversion.c (build_one_array): Call
11830         varpool_mark_needed_node and varpool_finalize_decl
11831         instead of assemble_variable.
11832
11833 2008-07-19  Jan Hubicka  <jh@suse.cz>
11834
11835         * cgraph.c (cgraph_add_new_function): Do early local passes.
11836         * tree-nrv.c (gate_pass_return_slot): New gate.
11837         (pass_nrv): Add the gate.
11838         * tree-ssa-coalese.c (hash_ssa_name_by_var, eq_ssa_name_by_var): New
11839         functions.
11840         (coalesce_ssa_name): Coalesce SSA names.
11841         * tree-ssa-live.c (remove_unused_locals): Be more conservative when
11842         not optimizing so unused user vars remains visible.
11843         * common.opt (flag_tree_ter): Always enable by default.
11844         * tree-ssa-ter.c: Include flags.h
11845         (is_replaceable_p): Check that locations match; when aliasing
11846         is missing be conservative about loads.
11847         * tree-optimize.c (gate_init_datastructures): Remove.
11848         (pass_init_datastructures): New.
11849         * passes.c: Reorder passes so we always go into SSA.
11850
11851 2008-07-19  Jan Hubicka  <jh@suse.cz>
11852
11853         * doc/extend.texi (flatten attribute): Remove note about
11854         unit-at-a-time.
11855         * doc/invoke.texi (--combine): Likewise.
11856         (-finline-functions-called-once): Update levels when enabled.
11857         (-funit-at-a-time): Document new behaviour.
11858         (-ftoplevel-reorder): Document that it is enabled -O0 and imply
11859         -fno-section-anchors when disabled explicitly.
11860         (inline params): They are not ignored now.
11861         (precompiled headers): Remove unit-at-a-time as being incompatible.
11862         * opts.c (decode_options): Handle unit-at-a-time as alias;
11863         imply -fno-section-anchors when toplevel reorder is disabled
11864         explicitly.
11865         * common.opt (ftoplevel-reorder): Set default value to 2.
11866         (funit-at-a-time): Set default value to 1.
11867         * config/rs6000/rs6000.c (optimization_options): Set section anchors
11868         to 2.
11869
11870 2008-07-19  Jan Hubicka  <jh@suse.cz>
11871
11872         * builtins.c (expand_builtin_int_roundingfn,
11873         expand_builtin_int_roundingfn_2): Do not take subtarget argument;
11874         it is not useful.
11875
11876 2008-07-19  Richard Guenther  <rguenther@suse.de>
11877
11878         PR bootstrap/36864
11879         * tree-ssa-sccvn.h (get_constant_value_id): Declare.
11880         * tree-ssa-sccvn.c (get_constant_value_id): New function.
11881         * tree-ssa-pre.c (get_expr_value_id): For newly created
11882         constant value-ids make sure to add the expression to its
11883         expression-set.
11884
11885 2008-07-19  Jakub Jelinek  <jakub@redhat.com>
11886
11887         PR middle-end/36877
11888         * omp-low.c (expand_omp_atomic_fetch_op): Make sure the
11889         return value of the builtin is ignored.
11890
11891 2008-07-19  Olivier Hainque  <hainque@adacore.com>
11892
11893         * doc/tm.texi (MALLOC_ABI_ALIGNMENT): New macro. Alignment, in
11894         bits, a C conformant malloc implementation has to provide.
11895         * defaults.h (MALLOC_ABI_ALIGNMENT): Default to BITS_PER_WORD.
11896
11897 2008-07-19  Joseph Myers  <joseph@codesourcery.com>
11898
11899         PR target/36780
11900         PR target/36827
11901         * reload.c (find_reloads_subreg_address): Only reload address if
11902         reloaded == 0, not for reloaded != 1.
11903
11904         Revert:
11905         2008-07-16  Joseph Myers  <joseph@codesourcery.com>
11906         * config/m32c/m32c.c (BIG_FB_ADJ): Move definition earlier.
11907         (m32c_legitimate_address_p): Handle "++rii" addresses created by
11908         m32c_legitimize_reload_address.
11909
11910         2008-07-15  Kaz Kojima  <kkojima@gcc.gnu.org>
11911         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Allow
11912         (plus (plus (reg) (const_int)) (const_int)) when reload_in_progress.
11913
11914 2008-07-19  Olivier Hainque  <hainque@adacore.com>
11915
11916         * dwarf2out.c (add_subscript_info): New explicit COLLAPSE_P
11917         argument, saying whether nested array are to be collapsed
11918         into a single array type DIE with multiple subscripts.
11919         (gen_array_type_die): Factorize comments about the MIPS_DEBUG_INFO
11920         issues, centralize the nested array types collapsing control and
11921         disable the transformation for Ada.
11922
11923 2008-07-18  Uros Bizjak  <ubizjak@gmail.com>
11924
11925         PR target/36786
11926         * config/i386/i386.md (x86_64_shift_adj_1): Rename from
11927         x86_64_shift_adj.
11928         (x86_64_shift_adj_2): New expander.
11929         (x86_64_shift_adj_3): Ditto.
11930         * config/i386/i386.c (ix86_split_ashr): Use gen_x86_64_shift_adj_3
11931         to split TImode operands.
11932         (ix86_split_ashl): Use gen_x86_64_shift_adj_2 to split TImode operands.
11933         (ix86_split_lshr): Ditto.
11934
11935 2008-07-18  Kris Van Hees  <kris.van.hees@oracle.com>
11936
11937         * c-common.c (c_stddef_cpp_builtins): Define __CHAR16_TYPE__
11938         and __CHAR32_TYPE__.
11939         * c-typeck.c (digest_init): Support char16_t and char32_t.
11940         (set_nonincremental_init_from_string): Idem.
11941
11942 2008-07-18  H.J. Lu  <hongjiu.lu@intel.com>
11943
11944         PR middle-end/36859
11945         * builtins.c (std_gimplify_va_arg_expr): Limit alignment to
11946         PREFERRED_STACK_BOUNDARY.
11947         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
11948
11949 2008-07-18  H.J. Lu  <hongjiu.lu@intel.com>
11950
11951         PR middle-end/36858
11952         * function.c (locate_and_pad_parm): Cap boundary earlier.
11953
11954 2008-07-17  Julian Brown  <julian@codesourcery.com>
11955
11956         * config/arm/arm.c (arm_cxx_determine_class_data_visibility): Make
11957         no-op for targets which don't use DLLs.
11958
11959 2008-07-17  Martin Jambor  <mjambor@suse.cz>
11960
11961         * ipa-cp.c (ipcp_print_all_lattices): New variable info, check
11962         that nodes are relevant by examining the node->analyzed flag.
11963         (ipcp_init_stage): Check which nodes are relevant, assert that the
11964         relevant ones are also required.
11965         (ipcp_propagate_stage): Check on the side arrays are properly
11966         allocated.
11967         (ipcp_print_all_jump_functions): Make sure not to touch any node
11968         that is not analyzed or an edge that does not have a corresponding
11969         entry in the on-the-side vectors.
11970         (ipcp_function_scale_print): Likewise.
11971         (ipcp_update_callgraph): Check that the node is relevant.
11972         (ipcp_insert_stage): Check that the node is relevant.  Check there is
11973         an info for every node and edge.
11974         * ipa-prop.c (ipa_init_func_list): Check the nodes are relevant.
11975         (ipa_print_all_tree_maps): Likewise and a new variable info.
11976         (ipa_print_all_params_modified): Likewise.
11977         * ipa-prop.h (ipa_edge_args_info_available_for_edge_p): New function.
11978
11979 2008-07-17  Roman Zippel <zippel@linux-m68k.org>
11980
11981         PR target/25343
11982         * config/host-linux.c (TRY_EMPTY_VM_SPACE): Define for __mc68000__.
11983
11984 2008-07-17  Paolo Bonzini  <bonzini@gnu.org>
11985
11986         PR rtl-optimization/36753
11987         * fwprop.c (use_killed_between): Don't shortcut
11988         single-definition global registers.
11989
11990 2008-07-16  Jan Hubicka  <jh@suse.cz>
11991
11992         * cgraph.h (varpool_empty_needed_queue): Declare.
11993         * cgraphunit.c (output_in_order): Mark all variables as needed;
11994         empty the queue.
11995         * varpool.c (varpool_assemble_node): Update debug queue.
11996         (varpool_assemble_pending_decls): Don't do it here.
11997         (varpool_empty_needed_queue):  New function.
11998
11999 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12000
12001         * recog.c (peephole2_optimize): Fix formatting.
12002
12003 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12004
12005         * c-pch.c (get_ident): Avoid C++ keywords.
12006         * combine-stack-adj.c (single_set_for_csa): Likewise.
12007         * final.c (asm_insn_count, final_scan_insn, alter_subreg,
12008         output_asm_insn): Likewise.
12009         * reload.c (push_secondary_reload, find_reusable_reload,
12010         push_reload, combine_reloads, find_reloads,
12011         debug_reload_to_stream): Likewise.
12012         * reload.h (struct reload): Likewise.
12013         * reload1.c (reload_reg_class_lower, find_reg, find_reload_regs,
12014         allocate_reload_reg, choose_reload_regs, emit_input_reload_insns,
12015         emit_output_reload_insns): Likewise.
12016         * targhooks.c (default_secondary_reload): Likewise.
12017         * varasm.c (section_entry_eq, object_block_entry_eq): Likewise.
12018
12019 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12020
12021         * recog.c (validate_change_1, validate_change,
12022         validate_unshare_change, validate_replace_rtx_1, struct
12023         funny_match, constrain_operands, peephole2_optimize): Avoid C++
12024         keywords.
12025         * reload.c (push_secondary_reload, secondary_reload_class,
12026         scratch_reload_class, find_valid_class, find_reusable_reload,
12027         push_reload, find_dummy_reload, find_reloads_address_1,
12028         find_reloads_address_part, find_equiv_reg): Likewise.
12029         * reload1.c (spill_failure, eliminate_regs_1, allocate_reload_reg,
12030         choose_reload_regs): Likewise.
12031         * rtlanal.c (replace_rtx, nonzero_bits1, num_sign_bit_copies1):
12032         Likewise.
12033         * rtlhooks.c (gen_lowpart_if_possible): Likewise.
12034         * sched-ebb.c (add_deps_for_risky_insns): Likewise.
12035         * sched-rgn.c (concat_INSN_LIST): Likewise.
12036         * stor-layout.c (mode_for_size, mode_for_size_tree,
12037         smallest_mode_for_size): Likewise.
12038
12039 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12040
12041         * cfg.c (dump_reg_info): Avoid C++ keywords.
12042         * dwarf2asm.c (dw2_force_const_mem,
12043         dw2_asm_output_encoded_addr_rtx): Likewise.
12044         * except.c (gen_eh_region, add_action_record, output_ttype): Likewise.
12045         * expmed.c (expand_shift): Likewise.
12046         * global.c (find_reg): Likewise.
12047         * graph.c (draw_edge): Likewise.
12048         * local-alloc.c (reg_meets_class_p, find_free_reg): Likewise.
12049         * optabs.c (expand_binop, expand_twoval_unop, expand_twoval_binop,
12050         widen_clz, widen_bswap, expand_parity, expand_unop,
12051         emit_cmp_and_jump_insn_1): Likewise.
12052         * postreload.c (reload_cse_simplify_operands): Likewise.
12053         * ra.h (add_neighbor): Likewise.
12054         * reg-stack.c (remove_regno_note, change_stack): Likewise.
12055         * regclass.c (memory_move_secondary_cost, dump_regclass, regclass,
12056         record_reg_classes, copy_cost, record_address_regs,
12057         invalid_mode_change_p): Likewise.
12058         * regrename.c (regrename_optimize, scan_rtx_reg,
12059         dump_def_use_chain, find_oldest_value_reg,
12060         replace_oldest_value_reg, copyprop_hardreg_forward_1): Likewise.
12061
12062 2008-07-16  David Edelsohn  <edelsohn@gnu.org>
12063
12064         * config/rs6000/rs6000.c (processor_target_table): Remove duplicate
12065         MASK_POWERPC64 for power4 in previous commit.
12066
12067 2008-07-16  Olivier Hainque  <hainque@adacore.com>
12068
12069         * collect2.c (scan_prog_file, COFF version): Use CONST_CAST
12070         instead of bare conversion to cast const-ness away.
12071
12072 2008-07-16  Anatoly Sokolov  <aesok@post.ru>
12073
12074         * config/xtensa/xtensa.h (FUNCTION_OUTGOING_VALUE,
12075         XTENSA_FUNCTION_VALUE, XTENSA_FUNCTION_VALUE): Remove.
12076         * config/xtensa/xtensa.c (xtensa_function_value): New function.
12077         (TARGET_FUNCTION_VALUE): Define.
12078
12079 2008-07-16  David Edelsohn  <edelsohn@gnu.org>
12080
12081         * config/rs6000/rs6000.c (processor_target_table): Add
12082         MASK_PPC_GPOPT for power4, power5, power5+, power6, and power6x.
12083
12084 2008-07-16  Joseph Myers  <joseph@codesourcery.com>
12085
12086         PR target/36827
12087         * config/m32c/m32c.c (BIG_FB_ADJ): Move definition earlier.
12088         (m32c_legitimate_address_p): Handle "++rii" addresses created by
12089         m32c_legitimize_reload_address.
12090
12091 2007-07-16  Rafael Ávila de Espíndola  <espindola@google.com>
12092
12093         * c-decl.c (merge_decls): Keep DECL_SOURCE_LOCATION and
12094         DECL_IN_SYSTEM_HEADER in sync.
12095
12096 2008-07-15  Daniel Berlin  <dberlin@dberlin.org>
12097
12098         * tree-ssa-sccvn.c (expressions_equal_p): Check type equality.
12099         * tree-ssa-pre.c (pre_expr_eq): Ditto
12100         (get_constant_for_value_id): Take a type as an argument.
12101         (fully_constant_expression): Pass in type.
12102         (find_or_generate_expression): Short circuit constant case.
12103         (create_expression_by_pieces): Remove special casing of
12104         pointer_plus.
12105         (do_regular_insertion): Short circuit constant case.
12106         (do_partial_partial_insertion): Ditto.
12107
12108 2008-07-15  Kaz Kojima  <kkojima@gcc.gnu.org>
12109
12110         PR target/36782
12111         * config/sh/sh.md (symGOT_load): Don't add REG_EQUAL note.
12112
12113 2008-07-15  Bob Wilson  <bob.wilson@acm.org>
12114
12115         * config/xtensa/libgcc-xtensa.ver: New file.
12116         * config/xtensa/t-linux (SHLIB_MAPFILES): Append libgcc-xtensa.ver.
12117
12118 2008-07-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12119
12120         * df-problems.c (df_set_note): Avoid C++ keywords.
12121         * df-scan.c (df_ref_change_reg_with_loc_1): Likewise.
12122         * dse.c (record_store, remove_useless_values): Likewise.
12123         * emit-rtl.c (gen_reg_rtx, update_reg_offset, gen_rtx_REG_offset,
12124         gen_reg_rtx_offset, operand_subword, change_address_1,
12125         change_address, adjust_address_1, offset_address,
12126         widen_memory_access, emit_copy_of_insn_after): Likewise.
12127         * explow.c (round_push, allocate_dynamic_stack_space): Likewise.
12128         * fwprop.c (should_replace_address, propagate_rtx_1,
12129         propagate_rtx, try_fwprop_subst, forward_propagate_and_simplify):
12130         Likewise.
12131         * gcse.c (cprop_jump, find_implicit_sets, bypass_block,
12132         gcse_emit_move_after, update_ld_motion_stores): Likewise.
12133         * lcm.c (compute_insert_delete, pre_edge_lcm,
12134         compute_rev_insert_delete, pre_edge_rev_lcm): Likewise.
12135         * lower-subreg.c (resolve_reg_notes): Likewise.
12136         * mode-switching.c (optimize_mode_switching): Likewise.
12137
12138 2008-07-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12139
12140         * bt-load.c (add_btr_def, migrate_btr_def,
12141         branch_target_load_optimize): Avoid C++ keywords.
12142         * caller-save.c (insert_restore, insert_save, insert_one_insn):
12143         Likewise.
12144         * combine.c (subst, simplify_set, make_extraction,
12145         make_compound_operation, known_cond, simplify_shift_const_1): Likewise.
12146         * cse.c (make_regs_eqv, merge_equiv_classes, validate_canon_reg,
12147         fold_rtx, equiv_constant, cse_insn, cse_process_notes_1): Likewise.
12148
12149 2008-07-15  Richard Guenther  <rguenther@suse.de>
12150
12151         PR middle-end/36369
12152         * c-common.c (strict_aliasing_warning): Do not warn for
12153         TYPE_REF_CAN_ALIAS_ALL pointers.
12154         (c_common_get_alias_set): may_alias types are not special.
12155         * tree.c (build_pointer_type_for_mode): Look up the may_alias
12156         attribute and set can_ref_all accordingly.
12157         (build_reference_type_for_mode): Likewise.
12158         * doc/extend.texi (may_alias): Clarify.
12159
12160 2008-07-15  Kaz Kojima  <kkojima@gcc.gnu.org>
12161
12162         PR target/36780
12163         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Allow
12164         (plus (plus (reg) (const_int)) (const_int)) when reload_in_progress.
12165
12166 2008-07-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
12167
12168         PR target/31568
12169         * config/rs6000/rs6000.c (print_operand <case 'y'>): Don't use
12170         gcc_assert, instead call output_operand_lossage.
12171
12172 2008-07-15  Kai Tietz  <kai.tietz@onevision.com>
12173
12174         * builtins.c (std_canonical_va_list): Treat structure based
12175         va_list types.
12176
12177 2008-07-15  Ben Elliston  <bje@au.ibm.com>
12178
12179         * emit-rtl.c (set_mem_attributes_minus_bitpos): Improve comment.
12180
12181 2007-07-14  Rafael Ávila de Espíndola  <espindola@google.com>
12182
12183         * c-decl.c (diagnose_mismatched_decls): Don't warn if TREE_NO_WARNING
12184         is set.
12185
12186 2008-07-14  Jan Hubicka  <jh@suse.cz>
12187
12188         * i386.md (sse5 cmov pattern): Update call of ix86_sse5_valid_op_p
12189         * sse.md (sse5 patterns): Update call of ix86_sse5_valid_op_p;
12190         fix predicates and constraints.
12191         * i386.c (ix86_sse5_valid_op_p): Add commutative parameter.
12192         * i386-protos.h (ix86_sse5_valid_op_p): Update declaration.
12193
12194 2008-07-14  Doug Kwan  <dougkwan@google.com>
12195
12196         * config.gcc (arm*-*-eabi*): Include arm/eabi.h and use
12197         additional option file arm/eabi.opt.
12198         * config/arm/eabi.h (File): New configuration file for EABI targets.
12199         * config/arm/elf.h (SUBTARGET_EXTRA_SPECS): Add
12200         SUBSUBTARGET_EXTRA_SPECS.
12201         (SUBSUBTARGET_EXTRA_SPECS): Provide empty default.
12202         * config/arm/unknown-elf.h (UNKNOWN_ELF_STARTFILE_SPEC): Renamed
12203         from STARTFILE_SPEC so that it can be referenced in an override.
12204         (STARTFILE_SPEC): Use UNKNOWN_ELF_STARTFILE_SPEC.
12205         (UNKNOWN_ELF_ENDFILE_SPEC): Renamed from ENDFILE_SPEC so that it
12206         can be referenced in an override.
12207         (ENDFILE_SPEC): Use UNKNOWN_ELF_ENDFILE_SPEC.
12208         * config/arm/bpabi.h (BPABI_LINK_SPEC): Renamed from LINK_SPEC
12209         so that it can be referenced in an override.
12210         (LINK_SPEC): Use BPABI_LINK_SPEC.
12211         * config/arm/eabi.opt (File): New.
12212
12213 2008-07-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
12214
12215         * Makefile.in (TARGET_DEF_H): Add targhooks.h.
12216         (FIXED_VALUE_H): New variable.
12217         (RTL_BASE_H): Use $(INPUT_H) and $(FIXED_VALUE_H) instead of
12218         input.h, fixed-value.h.
12219         (TREE_H): Use $(INPUT_H), add $(SYMTAB_H).
12220         (BASIC_BLOCK_H): Use $(BITMAP_H).
12221         (FUNCTION_H): Add varray.h.
12222         (IPA_REFERENCE_H): Use $(BITMAP_H).
12223         (CGRAPH_H): Add $(BASIC_BLOCK_H).
12224         (DF_H): Use $(BITMAP_H).
12225         (GGC_H): Add statistics.h.
12226         (INSN_ADDR_H): New.
12227         (INSN_ATTR_H): Use it.
12228         (SYSTEM_H): Add safe-ctype.h, filenames.h.
12229         (INPUT_H): New.
12230         (SYMTAB_H): Add $(OBSTACK_H).
12231         (CPP_INTERNAL_H): New.
12232         (TREE_DUMP_H): Add tree-pass.h.
12233         (TREE_FLOW_H): Use $(BITMAP_H)
12234         (PRETTY_PRINT_H): Use $(INPUT_H).
12235         (EBITMAP_H): Rename from typo-ed EBIMAP_H.
12236         (GSTAB_H): New.
12237         (BITMAP_H): New.
12238         (many object files): Fix lots of header dependencies throughout.
12239
12240 2008-07-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
12241
12242         * Makefile.in (write_entries_to_file, write_entries_to_file_split):
12243         New macros.
12244         (s-gtyp-input): Use them to write tmp-gi.list.
12245         (echo_to_gi.list): Remove.
12246
12247 2008-07-14  Richard Guenther  <rguenther@suse.de>
12248
12249         * tree-ssa-sccvn.c (pre_info): Remove.
12250         (switch_to_PRE_table): Likewise.
12251         (free_scc_vn): Do not clear SSA_NAME_VALUE.  Do not free pre_info.
12252         (set_hashtable_value_ids): Do not create value-ids for the
12253         optimistic tables.
12254         (run_scc_vn): Remove double test.  Remove bogus special-case
12255         in value-number printing.
12256         * tree-ssa-sccvn.h (switch_to_PRE_table): Remove.
12257         * tree-ssa-ccp.c (get_symbol_constant_value): Do not look at
12258         SSA_NAME_VALUE.
12259         * tree-flow-inline.h (get_value_handle): Remove.
12260         * tree-flow.h (get_value_handle): Remove.
12261
12262 2008-07-14  Martin Jambor  <mjambor@suse.cz>
12263
12264         * tree-switch-conversion.c (gen_inbound_check): Make sure the type
12265         in which we generate arithmetics is not a subrange.
12266
12267 2008-07-14  Martin Jambor  <mjambor@suse.cz>
12268
12269         * Makefile.in (IPA_PROP_H): Added ipa-prop.h to IPA_PROP_H variable.
12270
12271 2008-07-14  Richard Guenther  <rguenther@suse.de>
12272
12273         * tree-ssa-pre.c (insert_into_preds_of_block): Do not call convert.
12274
12275 2008-07-14  Andreas Krebbel  <krebbel1@de.ibm.com>
12276
12277         PR target/36745
12278         * config/s390/s390.c: (s390_secondary_reload): Add a secondary
12279         reload for symbol refs moved to r0 with -fPIC.
12280         (legitimize_pic_address): Use the target register as temporary
12281         reg if possible.
12282         (emit_symbolic_move): Adjust comment.
12283         * config/s390/s390.md (reloadsi_PIC_addr, reloaddi_PIC_addr):
12284         New expanders.
12285
12286 2008-07-14  Ben Elliston  <bje@au.ibm.com>
12287
12288         * c-common.h (C_CPP_HASHNODE): New macro.
12289         * coretypes.h (struct cpp_token): Forward declare.
12290         * doc/extend.texi (PowerPC AltiVec Built-in Functions): Document
12291         the context-sensitive keyword method.
12292         * config/rs6000/rs6000-c.c (__vector_keyword, vector_keyword,
12293         __pixel_keyword, pixel_keyword, __bool_keyword, bool_keyword,
12294         expand_bool_pixel): New.
12295         (altivec_categorize_keyword): New function.
12296         (init_vector_keywords): New function.
12297         (rs6000_macro_to_expand): Likewise.
12298         (rs6000_cpu_cpp_builtins): Enable context-sensitive macros if not
12299         compiling an ISO C dialect.
12300
12301 2008-07-13  Daniel Berlin  <dberlin@dberlin.org>
12302
12303         * tree-ssa-pre.c (fully_constant_expression): Add fold_convert calls.
12304         (create_expression_by_pieces): Fix typo.
12305         (do_regular_insertion): Use debug counter here too.
12306
12307 2008-07-14  Hans-Peter Nilsson  <hp@axis.com>
12308
12309         PR target/35492.
12310         * config/cris/cris.h (CRIS_CONST_OK_FOR_LETTER_P): Renamed from
12311         CONST_OK_FOR_LETTER_P.  All port-local users changed.
12312         (CONST_OK_FOR_CONSTRAINT_P): Define; implement Kc as old K,
12313         implement Kp matching power-of-two.
12314         (CONSTRAINT_LEN): Define to match.
12315         * config/cris/cris.md: Replace all use of constraint K with Kc.
12316         ("*btst*): Use Kp for operand 0 of last alternative.
12317
12318 2008-07-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
12319
12320         PR testsuite/36440
12321         * tree-call-cdce.c (check_target_format): Accept MIPS single, double
12322         and quad formats.
12323
12324 2008-07-13  Jan Hubicka  <jh@suse.cz>
12325
12326         * tree.c (decl_assembler_name_equal): Expect assembler name of decl
12327         to be mangled too.
12328
12329 2008-07-13  Richard Guenther  <rguenther@suse.de>
12330
12331         PR middle-end/36811
12332         * langhooks.c (lhd_print_error_function): Deal with recursive
12333         BLOCK trees.
12334
12335 2008-07-12  Jan Hubicka  <jh@suse.cz>
12336
12337         * cgraph.c (assembler_name_hash): New static var.
12338         (hash_node_by_assembler_name, eq_assembler_name): New.
12339         (cgraph_node_for_asm): Use hashtable.
12340         (cgraph_remove_node): Maintain hashtable.
12341         (change_decl_assembler_name): Sanity check that names are not changing
12342         after aliasing was processed.
12343         * cgraph.h (varpoon_node): Add next GGC marker.
12344         * tree.c (decl_assembler_name_equal): Constify.
12345         (decl_assembler_name_hash): New.
12346         * tree.h (decl_assembler_name_equal): Constify.
12347         (decl_assembler_name_hash): Update.
12348
12349 2008-07-12  David Daney  <ddaney@avtrex.com>
12350
12351         * config/mips/driver-native.c (host_detect_local_cpu): Handle
12352         sb1 and r5000 cpus.
12353
12354 2008-07-12  Richard Sandiford  <rdsandiford@googlemail.com>
12355
12356         * doc/md.texi: Document the MIPS "v" constraint.
12357         * config/mips/mips.h (reg_class): Revert last change.
12358         (REG_CLASS_NAMES): Likewise.
12359         (REG_CLASS_CONTENTS): Likewise.
12360         * config/mips/mips.c (mips_regno_to_class): Likewise.
12361         * config/mips/constraints.md (v): Likewise, but add documentation.
12362         Add a comment to say that this constraint should not be used in
12363         gcc code.
12364
12365 2008-07-11  DJ Delorie  <dj@redhat.com>
12366
12367         * config/h8300/h8300.md (length): Fix branch offset limit.
12368
12369 2008-07-11  Anatoly Sokolov  <aesok@post.ru>
12370
12371         * config/avr/avr-protos.h (avr_peep2_scratch_safe): Remove prototype.
12372         * config/avr/avr.c (avr_peep2_scratch_safe): Remove.
12373         (avr_hard_regno_scratch_ok): New function.
12374         (TARGET_HARD_REGNO_SCRATCH_OK): Define.
12375         * config/avr/avr.md (all peepholes that request a scratch register):
12376         Remove avr_peep2_scratch_safe use.
12377
12378 2008-07-11  Tom Tromey  <tromey@redhat.com>
12379             Ian Lance Taylor  <iant@google.com>
12380
12381         * c-common.h (enum rid): Add RID_CXX_COMPAT_WARN.
12382         (struct c_common_resword): Define.
12383         (D_CONLY, D_CXXONLY, D_C99, D_CXX0X, D_EXT, D_EXT89): Define.
12384         (D_ASM, D_OBJC, D_CXX_OBJC, D_CXXWARN): Define.
12385         (c_common_reswords, num_c_common_reswords): Declare.
12386         * c-common.c (c_common_reswords): New global const array.
12387         (num_c_common_reswords): New const int.
12388         * c-parser.c (struct resword, reswords): Don't define.
12389         (D_C89, D_EXT, D_EXT89, D_OBJC): Don't define.
12390         (c_parse_init): Clarify mask code.  Use c_common_reswords rather
12391         than reswords.  If warning about C++ keywords, give them a special
12392         RID code.
12393         (c_lex_one_token): Warn about C++ keywords.  Call
12394         objc_is_reserved_word rather than OBJC_IS_AT_KEYWORD.
12395         (c_parser_external_declaration): Look for RID_xxx rather than
12396         RID_AT_xxx, for ObjC++ keywords which are also C++ keywords.
12397         (c_parser_statement_after_labels): Likewise.
12398         (c_parser_objc_class_instance_variables): Likewise.
12399         (c_parser_objc_class_declaration): Likewise.
12400         (c_parser_objc_try_catch_statement): Likewise.
12401         * c-decl.c (c_print_identifier): Ignore RID_CXX_COMPAT_WARN.
12402         (declspecs_add_type): Likewise.
12403
12404 2008-07-11  Angelo Graziosi  <angelo.graziosi@alice.it>
12405
12406         * ggc-page.c (alloc_page):
12407         Substituting xmalloc, xcalloc with
12408         XNEWVEC and XCNEWVAR macros which add the
12409         needed casts.
12410
12411 2008-07-11  Richard Guenther  <rguenther@suse.de>
12412
12413         PR tree-optimization/36765
12414         * tree-ssa-alias.c (compute_flow_insensitive_aliasing): Add
12415         aliases from HEAP vars to SMTs.
12416
12417 2008-07-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12418
12419         * Makefile.in (LOOSE_WARN, STRICT_WARN): Update comments.
12420         * configure.ac (loose_warn): Move -Wc++-compat from here...
12421         (strict_warn): ...to here.
12422         * configure: Regenerate.
12423
12424 2008-07-10  Joseph Myers  <joseph@codesourcery.com>
12425
12426         * config.gcc (arm-*-coff*, armel-*-coff*, h8300-*-*,
12427         i[34567]86-*-aout*, i[34567]86-*-coff*, m68k-*-aout*,
12428         m68k-*-coff*, sh-*-*, mips-sgi-irix[56]*, pdp11-*-bsd,
12429         rs6000-ibm-aix4.[12]*, powerpc-ibm-aix4.[12]*): Deprecate targets,
12430         excluding more specific h8300-*-* and sh-*-* targets.
12431
12432 2008-07-10  Daniel Berlin  <dberlin@dberlin.org>
12433
12434         * tree-ssa-pre.c (create_expression_by_pieces): Add fold_convert calls.
12435         (eliminate): Ditto.
12436         (execute_pre): Call loop_optimizer_finalize in early exit.
12437
12438 2008-07-10  Jakub Jelinek  <jakub@redhat.com>
12439
12440         PR middle-end/36790
12441         * omp-low.c (lower_omp_2): If task_shared_vars, test all DECL_P
12442         uids in the bitmap, not just VAR_DECL uids.
12443
12444         PR rtl-optimization/36419
12445         * combine-stack-adj.c (adjust_frame_related_expr): New function.
12446         (combine_stack_adjustments_for_block): Call it if needed.  Delete
12447         correct insn.
12448         * dwarf2out.c (dwarf2out_frame_debug_expr): Adjust
12449         DW_CFA_GNU_args_size if CSA pass merged some adjustments into
12450         prologue sp adjustment.
12451
12452 2008-07-10  Peter Maydell  <pmaydell@chiark.greenend.org.uk>
12453
12454         PR other/28322
12455         * opts.c (print_ignored_options): Report postponed diagnostics for
12456         unknown -Wno-* options as warnings, not errors.
12457         (postpone_unknown_option_error): Renamed to...
12458         (postpone_unknown_option_warning): ... this.
12459
12460 2008-07-09  Doug Kwan  <dougkwan@google.com>
12461
12462         Revert:
12463         2008-07-08  Doug Kwan  <dougkwan@google.com>
12464
12465         * config/arm/arm.opt (mandroid): New option.
12466         * config/arm/bpabi.h (ANDROID_LINK_SPEC): New macro.
12467         (LINK_SPEC): Enable Android specific behaviour when -mandroid is used.
12468         (CC1_SPEC): Same.
12469         (CC1PLUS_SPEC): Same.
12470         (LIB_SPEC): Same.
12471         (STARTFILE_SPEC): Same.
12472         (ENDFILE_SPEC): Same.
12473         (TARGET_BPABI_CPP_BUILTINS): Define __ANDROID__ when -mandroid is
12474         used.
12475
12476 2008-07-09  Richard Sandiford  <rdsandiford@googlemail.com>
12477
12478         PR target/35802
12479         * config/mips/mips.h (reg_class): Remove V1_REG.
12480         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Update accordingly.
12481         * config/mips/mips.c (mips_regno_to_class): Map $3 to M16_NA_REGS
12482         instead of V1_REGS.
12483         (mips_get_tp): New function.
12484         (mips_legitimize_tls_address): Use it.
12485         * config/mips/constraints.md (v): Delete.
12486         * config/mips/mips.md (TLS_GET_TP_REGNUM): New constant.
12487         (tls_get_tp_<mode>): Allow any GPR destination and clobber $3.
12488         After reload, split into a move and ...
12489         (*tls_get_tp_<mode>_split): ...this new instruction.
12490
12491 2008-07-09  David Daney  <ddaney@avtrex.com>
12492
12493         * config/mips/driver-native.c: Include coretypes.h and tm.h.
12494
12495 2008-07-09  Jakub Jelinek  <jakub@redhat.com>
12496
12497         * gimplify.c (struct gimplify_ctx): Move to tree-gimple.h.
12498         (push_gimplify_context): Don't allocate temp_htab nor c itself here.
12499         Add c argument.
12500         (pop_gimplify_context): Check c->temp_htab instead of optimize whether
12501         htab_delete should be called.  Don't free c.
12502         (lookup_tmp_var): Create temp_htab lazily.
12503         (gimplify_scan_omp_clauses, gimplify_omp_parallel, gimplify_omp_task,
12504         gimplify_body, force_gimple_operand): Adjust push_gimplify_context
12505         callers.
12506         * omp-low.c (lower_omp_sections, lower_omp_single, lower_omp_master,
12507         lower_omp_ordered, lower_omp_critical, lower_omp_for,
12508         create_task_copyfn, lower_omp_taskreg, execute_lower_omp):
12509         * tree-ssa-ccp.c (convert_to_gimple_builtin): Likewise.
12510         * tree-sra.c (generate_element_init): Likewise.
12511         * tree-mudflap.c (execute_mudflap_function_ops,
12512         execute_mudflap_function_decls): Likewise.
12513         * tree-inline.c (setup_one_parameter, optimize_inline_calls): Likewise.
12514         * tree-gimple.h (struct gimplify_ctx): New type.
12515         (push_gimplify_context): Adjust prototype.
12516
12517 2008-07-09  Daniel Berlin  <dberlin@dberlin.org>
12518
12519         * tree-ssa-pre.c (phi_translate_1): Update placement of
12520         add_to_value calls.
12521
12522 2008-07-09  Anatoly Sokolov  <aesok@post.ru>
12523
12524         * target.h (struct gcc_target): Add hard_regno_scratch_ok field.
12525         * target-def.h (TARGET_HARD_REGNO_SCRATCH_OK): New.
12526         (TARGET_INITIALIZER): Use TARGET_HARD_REGNO_SCRATCH_OK.
12527         * targhooks.c (default_hard_regno_scratch_ok): New function.
12528         * targhooks.h (default_hard_regno_scratch_ok): Declare function.
12529         * doc/tm.texi: Document TARGET_HARD_REGNO_SCRATCH_OK hook.
12530         * recog.c:  Include "target.h".
12531         (peep2_find_free_register): Add check for global regs. Add target
12532         specific check.
12533         * Makefile.in (recog.o): Depend on target.h.
12534
12535 2008-07-09  Kaz Kojima  <kkojima@gcc.gnu.org>
12536
12537         * config/sh/sh.c (sh_canonical_va_list_type): New.
12538         (TARGET_CANONICAL_VA_LIST_TYPE): Define.
12539
12540 2008-07-09  Raksit Ashok <raksit@google.com>
12541
12542         * doc/invoke.texi (Option Summary): Mention new option
12543         -Wdisallowed-function-list=...
12544         (Warning Options): Document -Wdisallowed-function-list=...
12545         * common.opt (Wdisallowed-function-list=): New flag.
12546         * flags.h (warn_disallowed_functions): External definition of new
12547         boolean warning flag.
12548         (warn_if_disallowed_function_p): Declare new function.
12549         * opts.c (warning_disallowed_functions): New static variable.
12550         (warn_disallowed_functions): New boolean warning flag.
12551         (warn_if_disallowed_function_p): New function.
12552         (add_comma_separated_to_vector): Rename
12553         add_instrument_functions_exclude_list to this.
12554         (common_handle_option): Handle new option. Rename calls to
12555         add_instrument_functions_exclude_list into calls to
12556         add_comma_separated_to_vector.
12557         * c-parser.c (c_parser_postfix_expression_after_primary): New warning
12558         based on flag warn_disallowed_functions.
12559
12560 2008-07-09  Christian Bruel  <christian.bruel@st.com>
12561
12562         * final.c (get_attr_length_1): Call get_attr_length_1 with fallback_fn
12563          instead of get_attr_length.
12564
12565 2008-07-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12566
12567         * genattrtab.c (insert_right_side, evaluate_eq_attr): Avoid C++
12568         keywords.
12569         * genemit.c (gen_insn): Likewise.
12570         * gengtype.c (note_def_vec): Likewise.
12571         * gengtype.h (note_def_vec): Likewise.
12572         * genoutput.c (struct data, output_insn_data, process_template,
12573         gen_expand, gen_split, note_constraint): Likewise.
12574         * genrecog.c (new_decision, add_to_sequence, factor_tests,
12575         make_insn_sequence): Likewise.
12576         * gensupport.c (record_insn_name): Likewise.
12577
12578 2008-07-08  Doug Kwan  <dougkwan@google.com>
12579
12580         * config/arm/arm.opt (mandroid): New option.
12581         * config/arm/bpabi.h (ANDROID_LINK_SPEC): New macro.
12582         (LINK_SPEC): Enable Android specific behaviour when -mandroid is used.
12583         (CC1_SPEC): Same.
12584         (CC1PLUS_SPEC): Same.
12585         (LIB_SPEC): Same.
12586         (STARTFILE_SPEC): Same.
12587         (ENDFILE_SPEC): Same.
12588         (TARGET_BPABI_CPP_BUILTINS): Define __ANDROID__ when -mandroid is
12589         used.
12590
12591 2008-07-08  Raksit Ashok  <raksit@google.com>
12592
12593         * expr.c (emit_block_move_via_movmem): Fix expected_align parameter.
12594         (set_storage_via_setmem): Fix expected_align parameter.
12595         * doc/invoke.texi (i386 and x86-64 Options): Add a couple of options
12596         missing from the list.
12597         * doc/md.texi (movmem): Explicitly state that expected alignment is
12598         to be expressed in bytes.
12599         (setmem): Explicitly state that expected alignment is to be expressed
12600         in bytes.
12601
12602 2008-07-08  Joseph Myers  <joseph@codesourcery.com>
12603
12604         * reload.c (find_reloads_subreg_address): Do not require validity
12605         of address in original mode before reloading address.
12606
12607 2008-07-07  Tianwei Sheng  <tianweis@google.com>
12608
12609         * df-core.c (df_remove_problem): Adjust the access to avoid out of
12610         bounds array access.
12611
12612 2008-07-08  Jakub Jelinek  <jakub@redhat.com>
12613
12614         * tree-sra.c (sra_build_assignment): Handle CONVERT_EXPR_P dst.
12615
12616 2008-07-05  Daniel Berlin  <dberlin@dberlin.org>
12617
12618         Fix PR tree-optimization/23455
12619         Fix PR tree-optimization/35286
12620         Fix PR tree-optimization/35287
12621         * Makefile.in (OBJS-common): Remove tree-vn.o.
12622         (tree-vn.o): Remove.
12623         * dbgcnt.def: Add treepre_insert debug counter.
12624         * gcc/tree-flow.h (add_to_value): Updated for other changes.
12625         (debug_value_expressions): Ditto.
12626         (print_value_expressions): Ditto.
12627         * tree-pretty-print.c (dump_generic_node): Updated for
12628         VALUE_HANDLE removal.
12629         * tree-ssa-dom.c (record_equality): Ditto.
12630         (cprop_operand): Ditto.
12631         (lookup_avail_expr): Ditto.
12632         * tree-ssa-threadedge.c
12633         (record_temporary_equivalences_from_stmts_at_dest): Ditto.
12634         (simplify_control_stmt_condition): Ditto.
12635         * tree.c (tree_code_size): Ditto.
12636         (tree_node_structure): Ditto.
12637         (iterative_hash_expr): Ditto.
12638         * tree.def: Ditto.
12639         * tree.h (VALUE_HANDLE_ID): Ditto.
12640         (VALUE_HANDLE_EXPR_SET): Ditto.
12641         (struct tree_value_handle): Ditto.
12642         (union tree_node): Ditto.
12643         * treestruct.def: Ditto.
12644         * tree-vn.c: Removed.
12645         * tree-ssa-pre.c: Rewritten entirely.
12646         * tree-ssa-sccvn.c (constant_to_value_id): New hashtable.
12647         (constant_value_ids): Ditto.
12648         (vn_nary_op_t): Moved to header.
12649         (vn_phi_t): Ditto.
12650         (vn_reference_op_t): Ditto
12651         (vn_reference_t): Ditto.
12652         (next_value_id): New variable.
12653         (VN_INFO): Add an assert.
12654         (vn_constant_eq): New function.
12655         (vn_constant_hash): Ditto.
12656         (get_or_alloc_constant_value_id): Ditto.
12657         (value_id_constant_p): Ditto.
12658         (vn_reference_compute_hash): De-staticify.
12659         (copy_reference_ops_from_ref): Don't use get_callee_fndecl.
12660         Disable some code with a FIXME.  Remove VALUE_HANDLE use.
12661         (valueize_refs): Update opcode if it changes from ssa name to constant.
12662         (vn_reference_lookup_1): Add new argument.
12663         (vn_reference_lookup):  Ditto.
12664         (vn_reference_lookup_pieces): New function.
12665         (vn_reference_insert): Add return type. Modify to deal with value ids.
12666         (vn_reference_insert_pieces):  New function.
12667         (vn_nary_op_compute_hash): De-staticify.
12668         (vn_nary_op_eq): Ditto.
12669         (vn_nary_op_lookup_pieces): New function.
12670         (vn_nary_op_lookup): Add new argument.
12671         (vn_nary_op_insert_pieces): New function.
12672         (vn_nary_op_insert): Add return type. Modify to deal with value ids.
12673         (vn_phi_insert): Ditto.
12674         (visit_unary_op): Update for callee changes.
12675         (visit_binary_op): Ditto.
12676         (visit_reference_op_load): Ditto.
12677         (visit_reference_op_store): Ditto.
12678         (init_scc_vn): Init next_value_id, constant_to_value_id and
12679         constant_value_ids.
12680         (free_scc_vn): Free them.
12681         (set_hashtable_value_ids): New function.
12682         (run_scc_vn): Use it.
12683         (get_max_value_id): New function.
12684         (get_next_value_id): Ditto.
12685         (expressions_equal_p): Moved from tree-vn.c
12686         (sort_vuses): Ditto.
12687         (sort_vuses_heap): Ditto.
12688         * tree-ssa-sccvn.h: Structures moved from tree-ssa-sccvn.c (noted
12689         above).
12690         * tree.c (iterative_hash_hashval_t): Made non-static
12691         * tree.h (iterative_hash_hashval_t): Declare it.
12692
12693 2008-07-08  Martin Jambor  <mjambor@suse.cz>
12694
12695         * ipa-cp.c (ipcp_init_cloned_node): Call ipa_check_create_node_params
12696         instead of ipa_create_node_params.
12697         (ipcp_driver): Allocate infos with ipa_check_create_node_params and
12698         ipa_check_create_edge_args, free them with
12699         free_all_ipa_structures_after_ipa_cp, call ipa_register_cgraph_hooks.
12700
12701         * ipa-prop.c: Include flags.h and tree-inline.h.
12702         (ipa_node_params_vector): New variable.
12703         (ipa_edge_args_vector): New variable.
12704         (edge_removal_hook_holder): New variable.
12705         (node_removal_hook_holder): New variable.
12706         (edge_duplication_hook_holder): New variable.
12707         (node_duplication_hook_holder): New variable.
12708         (ipa_detect_param_modifications): Check for presence of modified flags.
12709         (ipa_compute_jump_functions): Check for presence of jump functions.
12710         (ipa_free_edge_args_substructures): New function.
12711         (ipa_create_node_params): Removed.
12712         (ipa_free_all_edge_args): Changed to deallocate the on-the-side vector.
12713         (ipa_free_node_params_substructures): New function.
12714         (ipa_free_all_node_params): Changed to deallocate the on-the-side
12715         vector.
12716         (ipa_edge_removal_hook): New function.
12717         (ipa_node_removal_hook): New function.
12718         (duplicate_array): New function.
12719         (ipa_edge_duplication_hook): New function.
12720         (ipa_node_duplication_hook): New function.
12721         (ipa_register_cgraph_hooks): New function.
12722         (ipa_unregister_cgraph_hooks): New function.
12723         (free_all_ipa_structures_after_ipa_cp): New function.
12724
12725         * ipa-prop.h: Include vec.h.
12726         (ipa_node_params_t): New typedef with vector types for it.
12727         (ipa_edge_args_t):  New typedef with vector types for it.
12728         (IPA_NODE_REF): Changed to access an on-the-side vector.
12729         (IPA_EDGE_REF): Changed to access an on-the-side vector.
12730         (ipa_check_create_node_params): New function.
12731         (ipa_check_create_edge_args): New function.
12732
12733         * Makefile.in (IPA_PROP_H): New variable for ipa-prop.h.  Converted
12734         all users.
12735
12736 2008-07-07  Tom Tromey  <tromey@redhat.com>
12737
12738         * configure, config.in: Rebuilt.
12739         * configure.ac: Don't check for scandir or alphasort.
12740
12741 2008-07-07  Joseph Myers  <joseph@codesourcery.com>
12742
12743         * config/arm/arm.c (arm_init_neon_builtins): Register built-in
12744         types immediately after creating them.
12745
12746 2008-07-07  Joseph Myers  <joseph@codesourcery.com>
12747
12748         * config/arm/aout.h (DOLLARS_IN_IDENTIFIERS): Remove.
12749
12750 2008-07-07  Fernando Pereira <fernando@cs.ucla.edu>
12751
12752         * tree-ssa-structalias.c (compute_points_to_sets): Add call to
12753         dump_constraint_graph.
12754         (dump_constraint_edge): New function.
12755         (dump_constraint_graph): New function.
12756         (debug_constraint_graph): New function.
12757         (dump_constraint): Removed useless comparison.
12758         * tree-ssa-structalias.h (dump_constraint_edge): Declare.
12759         (dump_constraint_graph): Declare.
12760         (debug_constraint_graph): Declare.
12761         * tree-dump.c (struct dump_option_value_info): Declare TDF_GRAPH.
12762
12763 2008-07-07  Kai Tietz  <kai.tietz@onevision.com>
12764
12765         * config/i386/i386.c (is_va_list_char_pointer): New.
12766         (ix86_va_start): Replace compare with ms_va_list_type_node
12767         by is_va_list_char_pointer.
12768         (ix86_gimplify_va_arg): Likewise.
12769
12770 2008-07-07  Martin Jambor  <mjambor@suse.cz>
12771
12772         * cgraph.c (cgraph_edge_max_uid): New variable.
12773         (struct cgraph_edge_hook_list): New type.
12774         (struct cgraph_node_hook_list): New type.
12775         (struct cgraph_2edge_hook_list): New type.
12776         (struct cgraph_2node_hook_list): New type.
12777         (first_cgraph_edge_removal_hook): New variable.
12778         (first_cgraph_node_removal_hook): New variable.
12779         (first_cgraph_edge_duplicated_hook): New variable.
12780         (first_cgraph_node_duplicated_hook): New variable.
12781         (cgraph_add_edge_removal_hook): New function.
12782         (cgraph_remove_edge_removal_hook): New function.
12783         (cgraph_call_edge_removal_hooks):  New function.
12784         (cgraph_add_node_removal_hook):  New function.
12785         (cgraph_remove_node_removal_hook):  New function.
12786         (cgraph_call_node_removal_hooks):  New function.
12787         (cgraph_add_edge_duplication_hook):  New function.
12788         (cgraph_remove_edge_duplication_hook):  New function.
12789         (cgraph_call_edge_duplication_hooks):  New function.
12790         (cgraph_add_node_duplication_hook):  New function.
12791         (cgraph_remove_node_duplication_hook):  New function.
12792         (cgraph_call_node_duplication_hooks):  New function.
12793         (cgraph_create_edge): Assign to edge uid.
12794         (cgraph_remove_edge): Call edge removal hooks.
12795         (cgraph_node_remove_callees): Call edge removal hooks.
12796         (cgraph_node_remove_callers): Call edge removal hooks.
12797         (cgraph_remove_node): Call node removal hooks.
12798         (cgraph_clone_edge): Call edge duplication hooks.
12799         (cgraph_clone_node): Call node duplication hooks.
12800
12801         * cgraph.h (cgraph_edge): New field uid.
12802         (cgraph_edge_hook): New type.
12803         (cgraph_node_hook): New type.
12804         (cgraph_2edge_hook): New type.
12805         (cgraph_2node_hook): New type.
12806
12807 2008-07-07  Andreas Tobler  <a.tobler@schweiz.org>
12808
12809         * config.in: Regenerate.
12810
12811 2008-07-07  Vladimir Prus  <vladimir@codesourcery.com>
12812
12813         * gcc.c (print_sysroot): New.
12814         (option_map, display_help, process_command): Handle the
12815         -print-sysroot option.
12816         (main): Print the sysroot if requested.
12817         * doc/invoke.texi (Debugging Options): Document -print-sysroot.
12818
12819 2008-07-07  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
12820
12821         PR target/34780
12822         * unwind-pe.h (size_of_encoded_value): add attribute unused.
12823
12824 2008-07-07  Daniel Jacobowitz  <dan@codesourcery.com>
12825
12826         * function.c (assign_parm_remove_parallels): Check mode of entry_parm.
12827         (assign_parm_setup_block_p): Also check mode of entry_parm.
12828
12829 2008-07-07  Richard Guenther  <rguenther@suse.de>
12830
12831         * tree-ssa-structalias.h (set_used_smts): Remove.
12832         * tree-ssa-structalias.c (used_smts): Likewise.
12833         (set_used_smts): Likewise.
12834         * tree-ssa-alias.c (compute_flow_sensitive_aliasing): Remove
12835         call to set_used_smts.
12836
12837 2008-07-07  Richard Guenther  <rguenther@suse.de>
12838
12839         * tree-ssa-structalias.c (struct variable_info): Add is_full_var flag.
12840         (new_var_info): Set it to false.
12841         (solution_set_add): Correctly handle pointers outside a var and
12842         inside a field.
12843         (type_safe): Treat variables with is_full_var properly.
12844         (do_sd_constraint): Likewise.
12845         (do_ds_constraint): Likewise.
12846         (process_constraint): Remove zeroing offset for !use_field_sensitive.
12847         (get_constraint_for_ptr_offset): New function.
12848         (get_constraint_for_component_ref): For addresses at least include
12849         the last field of the variable.  Handle is_full_vars properly.
12850         (get_constraint_for_1): Factor common code, handle POINTER_PLUS_EXPR.
12851         (handle_ptr_arith): Remove.
12852         (find_func_aliases): Simplify assignment handling.
12853         (create_function_info_for): For parameter and result varinfos set
12854         is_full_var flag.
12855         (create_variable_info_for): Set is_full_var flag whenever we
12856         just created a single varinfo for a decl.
12857         (init_alias_vars): Initialize use_field_sensitive from
12858         max-fields-for-field-sensitive parameter.
12859
12860 2008-07-07  Richard Guenther  <rguenther@suse.de>
12861
12862         PR tree-optimization/36713
12863         * tree-flow-inline.h (is_call_used): New function.
12864         * tree-nrv.c (dest_safe_for_nrv_p): Use it.
12865         * tree-tailcall.c (suitable_for_tail_opt_p): Likewise.
12866         * tree-outof-ssa.c (create_temp): Set call-used flag if required.
12867
12868 2008-07-07  Maxim Kuvyrkov  <maxim@codesourcery.com>
12869
12870         * config/m68k/m68k.c (m68k_return_in_memory): Fix arguments types.
12871
12872 2008-07-07  Mark Shinwell  <shinwell@codesourcery.com>
12873
12874         * config/m68k/lb1sf68.asm: Add PIC macros for Linux targets.
12875
12876 2008-07-07  Maxim Kuvyrkov  <maxim@codesourcery.com>
12877             Nathan Sidwell  <nathan@codesourcery.com>
12878
12879         * config.gcc (m68k-*-linux*): Add with_arch.  Add sysroot-suffix.h
12880         to tm_file.  Add m68k/t-floatlib, m68k/t-linux & m68k/t-mlibs to
12881         tmake_file.
12882         * config/m68k/t-linux: New.
12883         * doc/install.texi: Document m68k-*-linux is now multilibbed by
12884         default.
12885
12886 2008-07-07  Nathan Sidwell  <nathan@codesourcery.com>
12887
12888         * config/m68k/t-cf (MULTILIB_EXTRA_OPTS): Add no-mac.
12889         * config/m68k/m68k-devices.def: Remove multilibs that only differ
12890         by MAC/EMAC.
12891
12892 2008-07-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12893
12894         * gcc.c (execute): Fix -Wc++-compat warning.
12895
12896 2008-07-06  H.J. Lu  <hongjiu.lu@intel.com>
12897
12898         PR target/36720
12899         * config/ia64/ia64.c (ia64_split_tmode): Fix typo in TImode
12900         constant for little endian.
12901
12902 2008-07-06  Richard Sandiford  <rdsandiford@googlemail.com>
12903
12904         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Check
12905         mips_base_mips16 instead of TARGET_MIPS16.
12906         (mips_base_mips16): Declare.
12907         * config/mips/mips.c (mips_base_mips16): Make global.
12908         (was_mips16_p): Remove GTY marker.
12909         (was_mips16_pch_p): New variable.
12910         (mips_set_mips16_mode): Check both was_mips16_p and was_mips16_pch_p.
12911         (mips_override_options): Force to non-MIPS16 mode initially.
12912         Do not complain about MIPS16 PIC incompatibilities here.
12913         Only allow -mgpopt if -mexplicit-relocs is in force for
12914         non-MIPS16 code.
12915
12916 2008-07-06  Andreas Tobler  <a.tobler@schweiz.org>
12917
12918         * configure.ac: Check for caddr_t, define to char * if not defined.
12919         * configure: Regenerate.
12920         * ggc-common.c (mmap_gt_pch_get_address): Fix -Wc++-compat warnings.
12921         (mmap_gt_pch_use_address): Likewise.
12922         * config/host-solaris.c (sol_gt_pch_use_address): Likewise.
12923
12924 2008-07-06  Richard Guenther  <rguenther@suse.de>
12925
12926         * tree-ssa-structalias.c (struct variable_info): Remove has_union.
12927         (new_var_info): Deal with it.
12928         (solution_set_add): Likewise.
12929         (bitpos_of_field): Make signed, fix.
12930         (struct fieldoff): Remove type and decl fields.  Make size field
12931         unsigned HOST_WIDE_INT.  Add has_unknown_size and may_have_pointers
12932         flags.
12933         (fieldoff_compare): Deal with it.
12934         (push_fields_onto_fieldstack): Remove has_union argument, glob
12935         adjacent non-pointer fields together.
12936         (create_function_info_for): Do not set has_union.
12937         (create_variable_info_for): Simplify.
12938
12939 2008-07-06  Kai Tietz  <kai.tietz@onevision.com>
12940
12941         * config.gcc (extra_headers): Add cross-stdarg.h for target
12942         x86_64-*-* and i?86-*-*.
12943         * config/i386/cross-stdarg.h: New.
12944         * builtins.c (std_fn_abi_va_list): New.
12945         (std_canonical_va_list_type): New.
12946         (stabilize_va_list): Replace va_list_type_node use by
12947         mtarget.canonical_va_list_type.
12948         (gimplify_va_arg_expr): Likewise.
12949         (expand_builtin_va_copy): Replace va_list_type_node use by
12950         mtarget.fn_abi_va_list.
12951         * tree-sra.c (is_va_list_type): New helper.
12952         (decl_can_be_decomposed_p): Replace
12953         va_list_type_node use by is_va_list_type.
12954         * tree-ssa-ccp.c (optimize_stdarg_builtin): Likewise.
12955         * tree-stdarg.c (execute_optimize_stdarg): Likewise.
12956         * c-common.c (c_common_nodes_and_builtins): Use TARGET_ENUM_VA_LIST.
12957         * config/i386/i386-protos.h (ix86_get_valist_type): New.
12958         (ix86_enum_va_list): New.
12959         * config/i386/i386.c (sysv_va_list_type_node): New.
12960         (ms_va_list_type_node): New.
12961         (ix86_function_type_abi): Remove sorry.
12962         (ix86_build_builtin_va_list_abi): New.
12963         (ix86_build_builtin_va_list): Call ix86_build_builtin_va_list_abi
12964         for 64-bit targets.
12965         (ix86_va_start): Replace va_list_type_node by sysv_va_list_type_node.
12966         (ix86_init_builtins_va_builtins_abi): New.
12967         (ix86_init_builtins): Use ix86_init_builtins_va_builtins_abi
12968         for 64-bit targets.
12969         (ix86_handle_abi_attribute): New.
12970         (attribute_spec): Add sysv_abi and ms_abi.
12971         (ix86_fn_abi_va_list): New.
12972         (ix86_canonical_va_list_type): New.
12973         (ix86_enum_va_list): New.
12974         (TARGET_FN_ABI_VA_LIST): New.
12975         (TARGET_CANONICAL_VA_LIST_TYPE): New.
12976         * config/i386/i386.h (TARGET_ENUM_VA_LIST): New.
12977         * doc/tm.texi (TARGET_FN_ABI_VA_LIST): New.
12978         (TARGET_CANONICAL_VA_LIST_TYPE): New.
12979         (TARGET_ENUM_VA_LIST): New.
12980         * expr.h (std_fn_abi_va_list): New.
12981         (std_canonical_va_list_type): New.
12982         * target-def.h (TARGET_FN_ABI_VA_LIST): New.
12983         (TARGET_CANONICAL_VA_LIST_TYPE): New.
12984         (TARGET_INITIALIZER): Add TARGET_FN_ABI_VA_LIST and
12985         TARGET_CANONICAL_VA_LIST_TYPE.
12986         * target.h (struct gcc_target): Add fn_abi_va_list hook
12987         and canonical_va_list_type hook.
12988
12989 2008-07-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
12990
12991         * fold-const.c (fold_convert_const): Treat OFFSET_TYPE the same as
12992         integral and pointer types.
12993
12994 2008-07-04  Roger Sayle  <roger@eyesopen.com>
12995
12996         * config/rs6000/host-darwin.c (darwin_rs6000_extra_signals): Cast
12997         the "void*" result of xmalloc to "char*" to fix bootstrap breakage.
12998
12999 2008-07-04  Kaz Kojima  <kkojima@gcc.gnu.org>
13000
13001         PR target/36684
13002         * config/sh/sh.h (OVERRIDE_OPTIONS): Disable -fschedule-insns for PIC.
13003
13004 2008-07-04  Jakub Jelinek  <jakub@redhat.com>
13005
13006         * tree-switch-conversion.c (build_one_array, gen_def_assigns): Use
13007         build_gimple_modify_stmt.
13008         (build_arrays, gen_inbound_check): Likewise.  Force RHS to be
13009         gimple operand.  Use fold_build* instead of build*.
13010
13011 2008-07-04  Richard Guenther  <rguenther@suse.de>
13012
13013         * tree-ssa-structalias.c (lookup_vi_for_tree): Declare.
13014         (do_sd_constraint): Handle a dereference of ESCAPED and CALLUSED
13015         properly to compute the reachability set if we do field-sensitive PTA.
13016         * invoke.texi (max-fields-for-field-sensitive): Document default.
13017         * opts.c (decode_options): Set max-fields-for-field-sensitive to
13018         100 for optimize >= 2.
13019
13020 2008-07-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13021
13022         * ggc-zone.c (lookup_page_table_if_allocated,
13023         set_page_table_entry, zone_find_object_size, alloc_small_page,
13024         alloc_large_page, ggc_free, gt_ggc_m_S, ggc_marked_p, init_ggc,
13025         new_ggc_zone, init_ggc_pch, ggc_pch_this_base, ggc_pch_read): Fix
13026         -Wc++-compat and/or -Wcast-qual warnings.
13027
13028 2008-07-04  Alan Modra  <amodra@bigpond.net.au>
13029
13030         PR target/36634
13031         * config/rs6000/rs6000.md (call, call_value): Don't arrange for
13032         pic_offset_table_rtx to be marked as used here.
13033         (call_nonlocal_sysv, call_value_nonlocal_sysv): Add split for
13034         TARGET_SECURE_PLT to "use" pic_offset_table_rtx.
13035         (call_nonlocal_sysv_secure, call_value_nonlocal_sysv_secure): New insn.
13036         (sibcall_nonlocal_sysv, sibcall_value_nonlocal_sysv): Assert
13037         !TARGET_SECURE_PLT.
13038
13039 2008-07-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13040
13041         * alloc-pool.c (hash_descriptor, eq_descriptor,
13042         alloc_pool_descriptor): Fix -Wc++-compat warnings.
13043         * bitmap.c (hash_descriptor, eq_descriptor, bitmap_descriptor):
13044         Likewise.
13045         * ggc-common.c (hash_descriptor, eq_descriptor, hash_ptr, eq_ptr,
13046         loc_descriptor, ggc_prune_ptr, ggc_free_overhead,
13047         final_cmp_statistic, cmp_statistic, dump_ggc_loc_statistics): Likewise.
13048         * varray.c (hash_descriptor, eq_descriptor, varray_descriptor):
13049         Likewise.
13050
13051 2008-07-03  Eric Botcazou  <ebotcazou@adacore.com>
13052
13053         * tree-flow.h (loop_only_exit_p): Declare.
13054         * tree-ssa-loop-niter.c (loop_only_exit_p): Make public.
13055         * tree-ssa-loop-ivopts.c (may_eliminate_iv): Reinstate direct check on
13056         the number of iterations if it is constant.  Otherwise, if this is the
13057         only possible exit of the loop, use the conservative estimate on the
13058         number of iterations of the entire loop if available.
13059
13060 2008-07-03  Richard Sandiford  <rdsandiford@googlemail.com>
13061
13062         * Makefile.in (libgcc.mvars): Add LIBGCC_SYNC and LIBGCC_SYNC_CFLAGS.
13063         * libgcc-std.ver (GCC_4.4.0): New version, inherited from GCC_4.3.0.
13064         Add synchronization functions.
13065         * config/sync.c: New file.
13066         * config/mips/t-libgcc-mips16 (LIBGCC_SYNC): Define.
13067         (LIBGCC_SYNC_CFLAGS): Likewise.
13068
13069 2008-07-03  Uros Bizjak  <ubizjak@gmail.com>
13070
13071         PR target/36710
13072         * config/i386/i386.md (mode): Add TF to "mode" attribute.
13073         (*pushtf_sse): New insn pattern.
13074         (pushtf splitters): New splitters.
13075
13076 2008-07-03  Michael Meissner  <gnu@the-meissners.org>
13077
13078         PR middle-end/35736
13079         * predict.c (build_predict_expr): Use void_type_node for the tree
13080         type, instead of NULL_TREE.
13081
13082 2008-07-03  H.J. Lu  <hongjiu.lu@intel.com>
13083
13084         * config/i386/i386.c (contains_aligned_value_p): Return true
13085         for TCmode.
13086         (ix86_data_alignment): Align TCmode to 128bits.
13087         (ix86_local_alignment): Likewise.
13088
13089 2008-07-03  Andrew Haley  <aph@redhat.com>
13090
13091         PR bootstrap/33304
13092         * vec.h (VEC_TA): New.
13093         (DEF_VEC_I, DEF_VEC_P, DEF_VEC_ALLOC_I, DEF_VEC_ALLOC_P,
13094         DEF_VEC_O, DEF_VEC_ALLOC_O: Use VEC_TA.
13095         * c-common.c (C_COMMON_FIXED_TYPES_SAT): New macro.
13096         (C_COMMON_FIXED_MODE_TYPES_SAT): New macro.
13097         (C_COMMON_FIXED_TYPES): Remove first arg.
13098         (C_COMMON_FIXED_MODE_TYPES): Likewise.
13099         * tree.c (MAKE_FIXED_TYPE_NODE): Break into two macros,
13100         MAKE_FIXED_TYPE_NODE and MAKE_FIXED_TYPE_NODE_WIDTH in order
13101         not to use empty macro arguments.
13102
13103 2008-07-02  Joseph Myers  <joseph@codesourcery.com>
13104
13105         * config/alpha/vms_tramp.asm, config/arm/crti.asm,
13106         config/arm/crtn.asm, config/bfin/crti.s, config/bfin/crtlibid.s,
13107         config/bfin/crtn.s, config/fr30/crti.asm, config/fr30/crtn.asm,
13108         config/frv/lib1funcs.asm, config/i386/sol2-c1.asm,
13109         config/i386/sol2-ci.asm, config/i386/sol2-cn.asm,
13110         config/i386/sol2-gc1.asm, config/ia64/crti.asm,
13111         config/ia64/crtn.asm, config/m68hc11/larith.asm,
13112         config/m68hc11/m68hc11-crt0.S, config/m68k/crti.s,
13113         config/m68k/crtn.s, config/mcore/crti.asm, config/mcore/crtn.asm,
13114         config/rs6000/crtresfpr.asm, config/rs6000/crtresgpr.asm,
13115         config/rs6000/crtresxfpr.asm, config/rs6000/crtresxgpr.asm,
13116         config/rs6000/crtsavfpr.asm, config/rs6000/crtsavgpr.asm,
13117         config/rs6000/crtsavres.asm, config/rs6000/e500crtres32gpr.asm,
13118         config/rs6000/e500crtres64gpr.asm,
13119         config/rs6000/e500crtres64gprctr.asm,
13120         config/rs6000/e500crtrest32gpr.asm,
13121         config/rs6000/e500crtrest64gpr.asm,
13122         config/rs6000/e500crtresx32gpr.asm,
13123         config/rs6000/e500crtresx64gpr.asm,
13124         config/rs6000/e500crtsav32gpr.asm,
13125         config/rs6000/e500crtsav64gpr.asm,
13126         config/rs6000/e500crtsav64gprctr.asm,
13127         config/rs6000/e500crtsavg32gpr.asm,
13128         config/rs6000/e500crtsavg64gpr.asm,
13129         config/rs6000/e500crtsavg64gprctr.asm, config/rs6000/eabi-ci.asm,
13130         config/rs6000/eabi-cn.asm, config/rs6000/eabi.asm,
13131         config/rs6000/sol-ci.asm, config/rs6000/sol-cn.asm,
13132         config/rs6000/tramp.asm, config/sparc/sol2-ci.asm,
13133         config/sparc/sol2-cn.asm: Remove .file directives.
13134
13135 2008-07-02  Richard Sandiford  <rdsandiford@googlemail.com>
13136
13137         * resource.c (mark_referenced_resources): Look inside
13138         UNSPEC_VOLATILEs and ASM_INPUTs.
13139
13140 2008-07-02  Ian Lance Taylor  <iant@google.com>
13141
13142         * rtlanal.c (add_reg_note): New function.
13143         * rtl.h (add_reg_note): Declare.
13144         * auto-inc-dec.c (attempt_change): Use add_reg_note.
13145         * bb-reorder.c (add_reg_crossing_jump_notes): Likewise.
13146         * builtins.c (expand_builtin_longjmp): Likewise.
13147         (expand_builtin_nonlocal_goto): Likewise.
13148         * calls.c (emit_call_1, expand_call): Likewise.
13149         * cfgexpand.c (add_reg_br_prob_note): Likewise.
13150         * cfglayout.c (fixup_reorder_chain): Likewise.
13151         * cfgrtl.c (force_nonfallthru_and_redirect): Likewise.
13152         (commit_one_edge_insertion): Likewise.
13153         * combine.c (move_deaths, distribute_notes): Likewise.
13154         * df-problems.c (df_set_note): Likewise.
13155         * emit-rtl.c (link_cc0_insns, try_split): Likewise.
13156         (set_unique_reg_note): Likewise.
13157         (emit_copy_of_insn_after): Likewise.
13158         * expr.c (expand_expr_real): Likewise.
13159         * gcse.c (add_label_notes): Likewise.
13160         * haifa-sched.c (create_check_block_twin): Likewise.
13161         * jump.c (mark_jump_label_1): Likewise.
13162         * loop-doloop.c (add_test, doloop_modify): Likewise.
13163         * loop-unswitch.c (compare_and_jump_seq): Likewise.
13164         * lower-subreg.c (move_eh_region_note): Likewise.
13165         * optabs.c (emit_libcall_block): Likewise.
13166         * predict.c (predict_insn): Likewise.
13167         (combine_predictions_for_insn): Likewise.
13168         * recog.c (peephole2_optimize): Likewise.
13169         * regmove.c (try_auto_increment): Likewise.
13170         * reg-stack.c (emit_pop_insn, move_for_stack_reg): Likewise.
13171         * reload.c (find_reloads): Likewise.
13172         * reload1.c (fixup_eh_region_note): Likewise.
13173         (reload_as_needed, add_auto_inc_notes, copy_eh_notes): Likewise.
13174         * reorg.c (delete_prior_computation): Likewise.
13175         (delete_computation, dbr_schedule): Likewise.
13176         * config/pa/pa.c (legitimize_pic_address): Likewise.
13177         * config/sh/sh.c (sh_reorg): Likewise.
13178
13179 2008-07-02  H.J. Lu  <hongjiu.lu@intel.com>
13180
13181         PR target/36669
13182         * config/libgcc-glibc.ver: Add %exclude.
13183         * config/m32r/libgcc-glibc.ver: Likwise.
13184         * config/s390/libgcc-glibc.ver: Likwise.
13185         * config/sh/libgcc-glibc.ver: Likwise.
13186         * config/sparc/libgcc-sparc-glibc.ver: Likwise.
13187
13188         * config/i386/libgcc-glibc.ver: New.
13189
13190         * config/i386/libgcc-x86_64-glibc.ver: Removed.
13191
13192 2008-07-02  H.J. Lu  <hongjiu.lu@intel.com>
13193
13194         * config.gcc: Remove i386/t-fprules-softfp64 soft-fp/t-softfp
13195         from tmake_file from i[34567]86-*-darwin*, x86_64-*-darwin*,
13196         i[34567]86-*-linux*, x86_64-*-linux*.  Add
13197         i386/t-fprules-softfp and soft-fp/t-softfp to tmake_file for
13198         i[34567]86-*-darwin*, x86_64-*-darwin*, i[34567]86-*-linux*,
13199         x86_64-*-linux*.  Add i386/t-linux to tmake_file for
13200         i[34567]86-*-linux*, x86_64-*-linux*.
13201
13202         * libgcc-std.ver: Add empty GCC_4.4.0.
13203
13204         * mkmap-symver.awk: Support multiple versions per symbol.
13205
13206         * config/i386/i386.c (ix86_init_builtins): Always define
13207         __builtin_fabsq and __builtin_copysignq with fallbacks.
13208         (ix86_expand_builtin): Emit normal call for __builtin_fabsq
13209         and __builtin_copysignq if SSE2 isn't available.
13210
13211         * config/i386/linux.h (LIBGCC2_HAS_TF_MODE): Defined.
13212         (LIBGCC2_TF_CEXT): Likwise.
13213         (TF_SIZE): Likwise.
13214
13215         * config/i386/linux64.h (LIBGCC2_HAS_TF_MODE): Defined as 1.
13216
13217         * config/i386/sfp-machine.h: Moved to libgcc.
13218
13219         * config/i386/sfp-machine.h: New.
13220         * config/i386/t-linux: Likwise.
13221
13222         * config/i386/t-darwin: Remove softfp_wrap_start and
13223         softfp_wrap_end.
13224         * config/i386/t-darwin64: Likewise.
13225
13226         * config/i386/t-fprules-softfp64: Renamed to ...
13227         * config/i386/t-fprules-softfp: This.
13228
13229         * config/i386/t-linux64: Remove SHLIB_MAPFILES, softfp_wrap_start
13230         and softfp_wrap_end.
13231
13232 2008-07-02  Jason Merrill  <jason@redhat.com>
13233
13234         * tree.c (ctor_to_list): Use FOR_EACH_CONSTRUCTOR_ELT.
13235
13236         * tree.c (ctor_to_list): New fn.
13237         * tree.h: Declare it.
13238         (CONSTRUCTOR_ELT): New macro.
13239         (CONSTRUCTOR_NELTS): New macro.
13240
13241 2008-07-02  Richard Guenther  <rguenther@suse.de>
13242
13243         * tree-ssa-structalias.c (struct variable_info): Reorder
13244         to fill padding on 64bit hosts.  Make collapsed_to an int.
13245         (get_varinfo_fc): Deal with that.
13246         (new_var_info): Likewise.
13247         (collapse_rest_of_var): Likewise.
13248
13249 2008-07-02  Joshua Sumali  <jsumali@redhat.com>
13250
13251         * doc/install.texi (--enable-java-home): Document.
13252         (--enable-aot-compile-rpm): Likewise.
13253         (--with-arch-directory): Likewise.
13254         (--with-os-directory): Likewise.
13255         (--with-origin-name): Likewise.
13256         (--with-arch-suffix): Likewise.
13257         (--with-jvm-root-dir): Likewise.
13258         (--with-jvm-jar-dir): Likewise.
13259         (--with-python-dir): Likewise.
13260
13261 2008-07-02  Richard Guenther  <rguenther@suse.de>
13262
13263         * tree-ssa-forwprop.c (can_propagate_from): Exclude loads
13264         from decls explicitly.  Merge operand checking from tuples.
13265
13266 2008-07-02  Martin Jambor  <mjambor@suse.cz>
13267
13268         * tree-switch-conversion.c: Included timevar.h which I forgot before.
13269
13270 2008-07-02  Martin Jambor  <mjambor@suse.cz>
13271
13272         * tree-switch-conversion.c: Included timevar.h
13273         (pass_convert_switch): Added a timevar id (TV_TREE_SWITCH_CONVERSION).
13274
13275         * timevar.def: Added TV_TREE_SWITCH_CONVERSION.
13276
13277 2008-07-02  Martin Jambor  <mjambor@suse.cz>
13278
13279         * tree-switch-conversion.c: Corrected various comments and
13280         whitespace issues
13281         (build_constructors): Fixed minor formatting mistakes.
13282
13283         * invoke.texi (Optimize Options): Corrected the
13284         switch-conversion-max-branch-ratio parameter.
13285
13286 2008-07-02  Mark Shinwell  <shinwell@codesourcery.com>
13287
13288         * final.c (asm_insn_count): Return zero for an empty asm body.
13289
13290 2008-07-02  Richard Guenther  <rguenther@suse.de>
13291
13292         * bitmap.h (bitmap_set_bit): Return bool.
13293         (bitmap_clear_bit): Likewise.
13294         * bitmap.c (bitmap_set_bit): Return if the bit changed.  Only
13295         write to the bitmap if it would.
13296         (bitmap_clear_bit): Likewise.
13297         * tree-ssa-structalias.c (add_implicit_graph_edge): Use
13298         bitmap_set_bit return value.
13299         (add_pred_graph_edge): Likewise.
13300         (add_graph_edge): Likewise.
13301         (do_sd_constraint): Likewise.
13302         (do_ds_constraint): Likewise.
13303
13304 2008-07-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13305
13306         * config/alpha/alpha.c (alpha_need_linkage, alpha_use_linkage):
13307         Fix -Wc++-compat and/or -Wcast-qual warnings.
13308         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration,
13309         gen_regparm_prefix): Likewise.
13310         * vmsdbgout.c (write_modbeg, lookup_filename,
13311         vmsdbgout_source_line, vmsdbgout_init): Likewise.
13312
13313 2008-07-02  Danny Smith  <dannysmith@users.sourceforge.net>
13314
13315         * config/i386/mingw32.h (TARGET_USE_JCR_SECTION): Undef to let
13316         defaults.h definition apply.
13317
13318 2008-07-01  Daniel Jacobowitz  <dan@codesourcery.com>
13319
13320         * function.c (assign_parm_remove_parallels): New.
13321         (assign_parm_setup_block_p): Do not return true for non-BLKmode
13322         PARALLELs.
13323         (assign_parm_setup_block): Do not handle them.
13324         (assign_parm_setup_reg, assign_parm_setup_stack): Call
13325         assign_parm_remove_parallels.
13326
13327 2008-07-01  Daniel Jacobowitz  <dan@codesourcery.com>
13328
13329         * c-typeck.c (convert_for_assignment): Use
13330         vector_targets_convertible_p.
13331         * c-common.c (vector_targets_convertible_p): New.
13332         * c-common.h (vector_targets_convertible_p): New prototype.
13333         * config/rs6000/rs6000.c (rs6000_is_opaque_type): Do not check
13334         opaque_p_V2SI_type_node.
13335
13336 2008-07-01  Steve Ellcey  <sje@cup.hp.com>
13337
13338         * config/ia64/ia64.c (ia64_cannot_force_const_mem): Do not allow
13339         RFmode constants.
13340
13341 2008-07-01  Uros Bizjak  <ubizjak@gmail.com>
13342
13343         * config/i386/i386.c (ix86_build_signbit_mask): Generate TImode and
13344         TFmode constants via two element DImode vector for hosts with
13345         HOST_BITS_PER_WIDE_INT < 64.
13346         (ix86_init_builtins): Define __builtin_fabsq and __builtin_copysignq
13347         also for HOST_BITS_PER_WIDE_INT < 64.
13348
13349 2008-07-01  Richard Guenther  <rguenther@suse.de>
13350
13351         PR tree-optimization/36666
13352         * tree-ssa-structalias.c (get_constraint_for_1): Declare.
13353         (get_constraint_exp_from_ssa_var): Split into ...
13354         (get_constraint_exp_for_temp): ... this ...
13355         (get_constraint_for_ssa_var): ... and that.
13356         Return constraint expressions for all touched sub-fields
13357         if the results address is not taken.
13358         (process_constraint): Remove assertion that aggregate
13359         assignments do not happen at this place.
13360         (get_constraint_for_component_ref): Add address_p argument.
13361         Return constraint expressions for all touched sub-fields
13362         if the results address is not taken.
13363         (do_deref): Use get_constraint_exp_for_temp.
13364         (get_constraint_for_1): Rename from ...
13365         (get_constraint_for): ... this.  Add the old function as wrapper.
13366         (do_structure_copy): Use get_constraint_for_1.
13367
13368 2008-07-01  Martin Jambor  <mjambor@suse.cz>
13369
13370         * Makefile.in (tree-switch-conversion.o): Add.
13371         (OBJS-common): Add tree-swtch-conversion.o.
13372         * passes.c (init_optimization_passes): Add pass_convert_switch.
13373         * tree-pass.h: (pass_convert_switch): Add.
13374         * tree-switch-conversion.c: New file.
13375         * gcc.dg/tree-ssa/cswtch.c: New testcase.
13376         * common.opt (ftree-cswtch): New option.
13377         * params.h (PARAM_SWITCH_CONVERSION_BRANCH_RATIO): New parameter.
13378         * params.def (PARAM_SWITCH_CONVERSION_BRANCH_RATIO): New parameter.
13379         * opts.c (decode_options): Set flag_tree_switch_conversion when
13380         optimization level is >= 2.
13381         * doc/invoke.texi (Optimize Options): Added description of
13382         -ftree-swtch-conversion and switch-conversion-max-branch-ratio.
13383
13384 2008-06-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13385
13386         * config/darwin-driver.c (darwin_default_min_version): Fix
13387         -Wc++-compat warnings.
13388
13389 2008-06-30  Uros Bizjak  <ubizjak@gmail.com>
13390
13391         * config/i386/i386.md (*movti_rex64): Add "!" to "r" constraint
13392         of operand 0.
13393
13394 2008-06-30  Kenneth Zadeck <zadeck@naturalbridge.com>
13395
13396         * ifcvt.c (cond_move_process_if_block): Free vectors on false return.
13397
13398 2008-06-30  Kenneth Zadeck <zadeck@naturalbridge.com>
13399
13400         PR rtl-optimization/34744
13401         * df-scan.c (df_scan_free_ref_vec, df_scan_free_mws_vec): New macros.
13402         (df_scan_free_internal): Free data structures not
13403         allocated in storage pools.
13404         (df_mw_hardreg_chain_delete_eq_uses): Use df_scan_free_mws_vec.
13405         (df_refs_add_to_chains): Use df_scan_free_ref_vec and
13406         df_scan_free_mws_vec.
13407         * dse.c (dse_step6): Free offset_map_p and offset_map_n
13408         unconditionally.
13409
13410 2008-06-30  H.J. Lu  <hongjiu.lu@intel.com>
13411
13412         * config/i386/i386.c (contains_aligned_value_p): Return true
13413         for __float128.
13414         (ix86_function_arg_boundary): Return its natural boundary
13415         for __float128.
13416         (return_in_memory_32): Don't check TDmode.
13417         (ix86_split_to_parts): Support splitting into 4 parts and
13418         support TFmode for 32bit target.
13419         (ix86_split_long_move): Support splitting into 4 parts.
13420         (bdesc_args): Enable IX86_BUILTIN_FABSQ and IX86_BUILTIN_COPYSIGNQ
13421         for SSE2.
13422         (ix86_init_mmx_sse_builtins): Move __float80 and __float128 to ...
13423         (ix86_init_builtins): Here.
13424         (ix86_scalar_mode_supported_p): Always return true for TFmode.
13425         (ix86_c_mode_for_suffix): Always return TFmode and XFmode for
13426         'q' and 'w', respectively.
13427
13428         * config/i386/i386.md (movtf): Check TARGET_SSE2 instead of
13429         TARGET_64BIT.
13430         (movtf_internal): Likewise.
13431         (<code>tf2): Likewise.
13432         (*absnegtf2_sse): Likewise.
13433         (copysign<mode>3): Likewise.
13434         (copysign<mode>3_const): Likewise.
13435         (copysign<mode>3_var): Likewise.
13436         (define_split UNSPEC_COPYSIGN): Likewise.
13437         * config/i386/sse.md (*nandtf3): Likewise.
13438         (<code>tf3): Likewise.
13439         (*<code>tf3): Likewise.
13440
13441 2008-06-30  Joey Ye  <joey.ye@intel.com>
13442             H.J. Lu  <hongjiu.lu@intel.com>
13443
13444         * global.c (compute_regsets): Set frame_pointer_needed here.
13445         * reload1.c (init_elim_table): Don't set frame_pointer_needed here.
13446
13447 2008-06-30  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
13448
13449         * doc/install.texi (specific): Expand Windows build notes.
13450
13451 2008-06-30  Ira Rosen  <irar@il.ibm.com>
13452
13453         PR tree-optimization/36648
13454         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Divide
13455         number of prolog iterations by step. Fix the comment.
13456
13457 2008-06-30  Richard Guenther  <rguenther@suse.de>
13458
13459         PR middle-end/36671
13460         * tree-ssa-structalias.c (handle_lhs_call): Add flags argument,
13461         handle calls from ECF_MALLOC functions.
13462         (handle_pure_call): ECF_MALLOC functions do not return
13463         call-used memory.
13464         (find_func_aliases): Handle all calls, adjust calls to handle_lhs_call.
13465
13466 2008-06-29  Andreas Schwab  <schwab@suse.de>
13467
13468         * config/m68k/m68k.c (print_operand): Always print a float
13469         constant in hex.
13470         * config/m68k/m68k.h (ASM_OUTPUT_FLOAT_OPERAND)
13471         (ASM_OUTPUT_DOUBLE_OPERAND, ASM_OUTPUT_LONG_DOUBLE_OPERAND):
13472         Remove macros.
13473
13474         * config/rs6000/x-linux64: Remove never used file.
13475
13476 2008-06-29  Richard Guenther  <rguenther@suse.de>
13477
13478         * tree-ssa-structalias.h (compute_points_to_sets): Adjust
13479         prototype.
13480         (struct alias_info): Move ...
13481         * tree-ssa-alias.c: ... here.
13482         (update_alias_info): Declare.
13483         (compute_may_aliases): Call it.
13484         (update_alias_info): New function.
13485         * tree-ssa-structalias.c (update_alias_info): Move ...
13486         * tree-ssa-alias.c (update_alias_info_1): ... here.
13487         * tree-ssa-structalias.c (process_constraint_1): Remove
13488         unused from_call argument.  Rename to ...
13489         (process_constraint): ... this.  Delete old wrapper.
13490         (make_constraint_to): Adjust callers.
13491         (handle_const_call): Likewise.
13492         (handle_pure_call): Likewise.
13493         (init_base_vars): Likewise.
13494         (handle_lhs_call): Likewise.  Remove unnecessary constraint.
13495         (find_func_aliases): We don't need structure copies for
13496         complex types.
13497         (make_constraint_from_anything): Remove.
13498         (create_variable_info_for): For globals make constraints
13499         from escaped, not from anything.
13500         (compute_points_to_sets): Do not call update_alias_info.
13501         (ipa_pta_execute): Use make_constraint_from.
13502
13503 2008-06-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13504
13505         * Makefile.in (CXX_COMPAT_WARN, cxx_compat_warn): Delete.
13506         (bitmap.o-warn, dominance.o-warn): New.
13507         * configure.ac (cxx_compat_warn): Delete.
13508         (loose_warn): Add -Wcast-qual and -Wc++-compat.
13509         * system.h: Remove #pragma diagnostic for -Wcast-qual and
13510         -Wc++-compat.
13511         * configure: Regenerate.
13512
13513         * optabs.c (libfunc_decl_hash, libfunc_decl_eq): Fix -Wcast-qual
13514         warnings.
13515
13516 2008-06-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13517
13518         * alloc-pool.c (create_alloc_pool): Fix -Wc++-compat warnings.
13519         * df-scan.c (df_notes_rescan): Likewise.
13520         * ggc-page.c (set_page_table_entry): Likewise.
13521         * intl.c (gcc_gettext_width): Likewise.
13522         * varasm.c (get_unnamed_section, get_noswitch_section,
13523         get_section): Likewise.
13524
13525 2008-06-28  Andrew Jenner  <andrew@codesourcery.com>
13526
13527         * regrename.c (build_def_use): Don't copy RTX.
13528
13529 2008-06-28  Sandra Loosemore  <sandra@codesourcery.com>
13530
13531         * doc/extend.texi (Variable Attributes): Use @ref instead of @xref.
13532         (Type Attributes): Fix nesting of @table and @subsection.  Adjust
13533         punctuation.  Use @ref instead of @xref.
13534         (Function Names): Remove stray @display/@end display.
13535         (C++ Attributes): Use @ref instead of @xref.
13536         (Deprecated Features): Fix punctuation around @xref.
13537         (Backwards Compatibility): Likewise.
13538         * doc/rtl.texi (Incdec): Remove stray @table/@end table.
13539
13540 2008-06-28  Joseph Myers  <joseph@codesourcery.com>
13541
13542         * config/rs6000/predicates.md (easy_fp_constant): Reject TFmode
13543         constants for E500 double.
13544
13545 2008-06-28  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
13546
13547         * doc/rtl.texi (const_vector): Document const_fixed as legitimate
13548         element type of const_vector.
13549
13550 2008-06-28  Uros Bizjak  <ubizjak@gmail.com>
13551
13552         * config/i386/i386.md (addti3, adddi3, addsi3, addhi3, addqi3):
13553         Remove FLAGS_REG clobber from expander pattern.
13554         (subti3, subdi3, subsi3, subhi3, subqi3): Ditto.
13555         (anddi3, andsi3, andhi3, andqi3): Ditto.
13556         (iordi3, iorsi3, iorhi3, iorqi3): Ditto.
13557         (xordi3, xorsi3, xorhi3, xorqi3): Ditto.
13558         (negti2, negdi2, negsi2, neghi2, negqi2): Ditto.
13559         (ashlsi3, ashlhi3, ashlqi3): Ditto.
13560         (ashrsi3, ashrhi3, ashrqi3): Ditto.
13561         (lshrsi3, lshrhi3, lshrqi3): Ditto.
13562         (rotldi3, rotlsi3, rotlhi3, rotlqi3): Ditto.
13563         (rotrdi3, rotrsi3, rotrhi3, rotrqi3): Ditto.
13564
13565 2008-06-28  Richard Guenther  <rguenther@suse.de>
13566
13567         * tree-ssa-structalias.c (callused_id, var_callused,
13568         callused_tree): Add.
13569         (handle_pure_call): New function.
13570         (find_func_aliases): Call it.
13571         (find_what_p_points_to): Handle the call-used set.
13572         (clobber_what_escaped): Likewise.
13573         (compute_call_used_vars): New function.
13574         (init_base_vars): Init the call-used variable.
13575         (do_sd_constraint): Do not propagate the solution from CALLUSED
13576         but use CALLUSED as a placeholder.
13577         (solve_graph): Likewise.
13578         * tree-flow-inline.h (gimple_call_used_vars): New function.
13579         * tree-flow.h (struct gimple_df): Add call_used_vars bitmap.
13580         (compute_call_used_vars): Declare.
13581         * tree-ssa-alias.c (set_initial_properties): Call
13582         compute_call_used_vars.
13583         (reset_alias_info): Clear call-used variables.
13584         (add_call_clobber_ops): Assert we are not called for const/pure
13585         functions.  Remove handling of them.
13586         (add_call_read_ops): Handle pure functions by adding the
13587         call-used set of variables as VUSEs.
13588         * tree-ssa.c (init_tree_ssa): Allocate call-used bitmap.
13589         (delete_tree_ssa): Free it.
13590         * tree-dfa.c (remove_referenced_var): Clear the var from the
13591         call-used bitmap.
13592
13593 2008-06-28  Kai Tietz  <kai.tietz@onevision.com>
13594
13595         * tree.c (build_varargs_function_type_list): New.
13596         (build_function_type_list_1): New.
13597         (build_function_type_list): Use build_function_type_list_1.
13598         * tree.h (build_varargs_function_type_list): New.
13599
13600 2008-06-28  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
13601
13602         PR target/34856
13603         * config/spu/spu.c (spu_builtin_splats): Do not generate
13604         invalid CONST_VECTOR expressions.
13605         (spu_expand_vector_init): Likewise.
13606
13607 2008-06-28  Richard Sandiford  <rdsandiford@googlemail.com>
13608
13609         * optabs.c (libfunc_decls): New variable.
13610         (libfunc_decl_hash, libfunc_decl_eq): New functions.
13611         (init_one_libfunc): Reuse decls and SYMBOL_REFs when asked
13612         for the same function twice.
13613
13614 2008-06-27  Uros Bizjak  <ubizjak@gmail.com>
13615
13616         * config/i386/i386.md (ashlti3, ashrti3, lshrti3): Expand using
13617         ix86_expand_binary_operator directly.
13618         (*ashlti3_1): Rename from ashlti3_1.  Use nonmemory_operand predicate
13619         for operand 2.
13620         (*ashrti3_1): Ditto.
13621         (*lshrti3_1): Ditto.
13622         (*ashlti3_2, *ashrti3_2, *lshrti3_2): Remove insn patterns.
13623         (ashlti, ashrti and lshrti splitters): Handle nonmemory operand 2
13624         using only one splitter.  Conditionaly execute splitter before or
13625         after peephole2 pass.
13626         (ashlti, ashrti and lshrti peephole2): Define peephole2 patterns.
13627         (x86_shld): Rename from x86_shld_1.  Compress operand 2 constraints.
13628         Use only one alternative in asm template.
13629         (x86_64_shld): Compress operand 2 constraints. Use only one alternative
13630         in asm template.
13631         (*ashldi3_cmp_rex64): Use const_1_to_63_operand operand predicate and
13632         "J" operand constraint for operand 2.
13633         (*ashldi3_cconly_rex64): Ditto.
13634         (*ashrdi3_cmp_rex64): Ditto.
13635         (*ashrdi3_cconly_rex64): Ditto.
13636         (*lshrdi3_cmp_rex64): Ditto.
13637         (*lshrdi3_cconly_rex64): Ditto.
13638         * config/i386/predicates.md (const_1_to_63_operand): New predicate.
13639         * config/i386/i386.md (print_operand) ['s']: Print ", " using fputs.
13640         (split_ashr, split_ashl, split_lshr): Use gen_x86_shrd instead of
13641         gen_x86_shrd_1.
13642
13643 2008-06-27  Jakub Jelinek  <jakub@redhat.com>
13644
13645         * gimplify.c (omp_is_private): Don't return true if decl is not
13646         already private on #pragma omp for or #pragma omp parallel for.
13647
13648         PR debug/36617
13649         * tree-cfg.c (struct move_stmt_d): Replace block field with
13650         orig_block and new_block fields.
13651         (move_stmt_r): Only set TREE_BLOCK to p->new_block if
13652         if it used to be NULL, p->orig_block or if p->orig_block is NULL.
13653         (move_block_to_fn): Replace vars_map and new_label_map arguments
13654         with struct move_stmt_d pointer.
13655         (replace_block_vars_by_duplicates): New function.
13656         (move_sese_region_to_fn): Add ORIG_BLOCK argument.  Adjust
13657         move_block_to_fn caller.  If ORIG_BLOCK is non-NULL, move over
13658         all subblocks of ORIG_BLOCK to the new function.  Call
13659         replace_block_vars_by_duplicates.
13660         * tree-flow.h (move_sese_region_to_fn): Adjust prototype.
13661         * omp-low.c (expand_omp_taskreg): Set TREE_USED on DECL_INITIAL
13662         BLOCK of the new function.  Adjust move_sese_region_to_fn caller.
13663         Prune vars with original DECL_CONTEXT from child_cfun->local_decls.
13664         (expand_omp): Temporarily set input_location to the location of
13665         region's controlling stmt.
13666         (lower_omp_sections, lower_omp_for): Add a BLOCK into outermost
13667         BIND_EXPR, push ctx->block_vars and gimplification vars into
13668         the BIND_EXPR and its block's BLOCK_VARS instead of directly
13669         into dest function.
13670         (lower_omp_single): Set TREE_USED on the BIND_EXPR's BLOCK if
13671         there are any BLOCK_VARS.
13672         (lower_omp_taskreg): Set BLOCK on a BIND_EXPR containing the
13673         OMP_PARALLEL or OMP_TASK stmt.
13674         (lower_omp): Save and restore input_location around the lower_omp_1
13675         call.
13676
13677 2008-06-27  Richard Guenther  <rguenther@suse.de>
13678
13679         PR tree-optimization/36400
13680         PR tree-optimization/36373
13681         PR tree-optimization/36344
13682         * tree-ssa-structalias.c (var_escaped, escaped_tree, escaped_id,
13683         var_nonlocal, nonlocal_tree, nonlocal_id): New globals
13684         (update_alias_info): Remove call clobbering code.
13685         (make_constraint_to): New helper function.
13686         (make_escape_constraint): Likewise.
13687         (handle_rhs_call): Use it on all pointer containing arguments.
13688         Also mark the static chain escaped.
13689         (handle_lhs_call): Make constraints from NONLOCAL and ESCAPED
13690         instead of ANYTHING.
13691         (make_constraint_from): New helper split out from ...
13692         (make_constraint_from_anything): ... here.
13693         (find_func_aliases): Add constraints for escape sites.
13694         (intra_create_variable_infos): Make constraints from NONLOCAL
13695         for parameters.
13696         (find_what_p_points_to): Interpret NONLOCAL and ESCAPED the same
13697         as ANYTHING.
13698         (clobber_what_p_points_to): Remove.
13699         (clobber_what_escaped): New function.
13700         (init_base_vars): Init NONLOCAL and ESCAPED.
13701         (do_sd_constraint): Do not propagate the solution from ESCAPED
13702         but use ESCAPED as a placeholder.
13703         (solve_graph): Likewise.
13704         * tree-flow.h (clobber_what_p_points_to): Remove.
13705         (clobber_what_escaped): Declare.
13706         * tree-ssa-alias.c (set_initial_properties): Call it.
13707         Remove code clobbering escaped pointers.
13708
13709 2008-06-27  Richard Sandiford  <rdsandiford@googlemail.com>
13710
13711         * function.c (allocate_struct_function): Only allocate a unique
13712         funcdef_no if the decl is nonzero.
13713
13714 2008-06-27  Richard Sandiford  <rdsandiford@googlemail.com>
13715
13716         * config/mips/mips-protos.h (mips_split_const_insns): Declare.
13717         * config/mips/mips.c (mips_split_const_insns): New function.
13718         * config/mips/mips.md (move_type): New attribute.
13719         (mode): Move attribute definition earlier in file.  Add "TI" and "TF".
13720         (dword_mode): New attribute.
13721         (type): Avoid long line.  Map "move_type"s to "type"s,
13722         choosing "multi" for doubleword moves if appropriate.
13723         Swap MTC/MFC comments to match their declaration order.
13724         (extended_mips16): Default to "yes" if "move_type" is "sll0",
13725         "type" is "branch" or "jal" is "direct".
13726         (length): Handle "extended_mips16" first.  Make the default
13727         "0" for "ghost" instructions.  Set the length from "move_type".
13728         (truncdisi2, truncdihi2, truncdiqi2): Use "move_type" instead
13729         of "type", with "sll0" for the register alternative.  Remove the
13730         "extended_mips16" attribute.
13731         (zero_extendsidi2, *clear_upper32): Use "move_type" instead
13732         of "type", with "shift_shift" for the register alternative.
13733         Remove the "length" attribute.
13734         (*extend<SHORT:mode><GPR:mode>2, *extendqihi2): Likewise.
13735         (*zero_extend<SHORT:mode><GPR:mode>2): Use "move_type" instead
13736         of "type", with "andi" for the register alternative.
13737         (*zero_extendqihi2): Likewise.
13738         (*zero_extend<SHORT:mode><GPR:mode>2_mips16e): Use a "move_type"
13739         of "andi" instead of a "type" of "arith".
13740         (*zero_extend<SHORT:mode><GPR:mode>2_mips16): Use "move_type"
13741         instead of "type".
13742         (*zero_extendqihi2_mips16, mov_<load>l, mov_<load>r, mov_<store>l)
13743         (mov_<store>r, *mov<mode>_ra): Likewise.
13744         (extendsidi2): Use "move_type" instead of "type", with "move"
13745         for the register alternative.
13746         (*extend<SHORT:mode><GPR:mode>2_mips16e): Use "move_type" instead
13747         of "type", with "signext" for the register alternative.
13748         (*extend<SHORT:mode><GPR:mode>2_se<SHORT:size>): Likewise.
13749         (*extendqihi2_mips16e, *extendqihi2_seb): Likewise.
13750         (fix_truncdfsi2_insn, fix_truncsfsi2_insn, fix_truncdfdi2)
13751         (fix_truncsfdi2, floatsidf2, floatdidf2, floatsisf2, floatdisf2)
13752         (floatdisf2, *branch_equality<mode>_mips16): Likewise.
13753         (unnamed branch insn): Likewise.
13754         (*movdi_gp32_fp64): Fold into...
13755         (*movdi_32bit): ...here.
13756         (*movdf_hardfloat_64bit, *movdf_hardfloat_32bit): Combine into...
13757         (*movdf_hardfloat): ...this new pattern.
13758         (*movdf_softfloat): Remove redundant FPR alternatives.
13759         (*movti, *movti_mips16, *movtf, *movtf_mips16): Add "mode" attributes.
13760         (*movv2sf_hardfloat_64bit, *movv2sf_hardfloat_32bit): Combine into...
13761         (*movv2sf): ...this new pattern.  Use "DF" rather than "SF" for
13762         the "move" attribute.
13763         (*movdi_32bit): Use "move_type" instead of "type" and remove the
13764         "length" attribute.  Use "fpload" and "fpstore" instead of "load"
13765         and "store" for COP loads and stores.
13766         (*movdi_32bit_mips16, *movdi_64bit, *movsi_internal, movcc)
13767         (*movhi_internal, *movhi_mips16, *movqi_internal, *movqi_mips16)
13768         (*movsf_hardfloat, *movsf_softfloat, *movsi_mips16, *movdf_hardfloat)
13769         (*movdf_softfloat, *movdf_mips16, *movti, *movti_mips16, *movtf)
13770         (*movtf_mips16, *movv2sf): Likewise.
13771         (mfhi<GPR:mode>_<HILO:mode>, mflo<GPR:mode>_<HILO:mode>)
13772         (load_low<mode>, load_high<mode>, store_word<mode>, mthc1<mode>)
13773         (mfhc1<mode>): Use "move_type" instead of "move".
13774         (*low<mode>_mips16): Use "extended_mips16" instead of "length".
13775         (loadgp_blockage): Remove the "length" attribute.
13776         (blockage, set_got_version, update_got_version): Likewise.
13777         (call_internal): Remove the "extended_mips16" attribute.
13778         (call_value_internal, call_value_multiple_internal): Likewise.
13779         * config/mips/loongson.md (mov<mode>_internal): Use "move_type"
13780         instead of "move".
13781         * config/mips/mips-dsp.md (mips_lbux, mips_lhx, mips_lwx): Remove
13782         the "length" attribute.
13783
13784 2008-06-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13785
13786         * c-format.c (handle_format_attribute): Fix -Wc++-compat and/or
13787         -Wcast-qual warnings.
13788         * c-pragma.c (dpm_eq, handle_pragma_push_macro,
13789         handle_pragma_pop_macro): Likewise.
13790         * collect2.c (resolve_lib_name): Likewise.
13791         * config/arc/arc.c (arc_init): Likewise.
13792         * config/arm/arm.c (neon_builtin_compare,
13793         locate_neon_builtin_icode): Likewise.
13794         * config/arm/pe.c (arm_mark_dllexport, arm_pe_unique_section): Likewise.
13795         * config/bfin/bfin.c (bfin_init_machine_status,
13796         bfin_optimize_loop): Likewise.
13797         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Likewise.
13798         * config/cris/cris.c (cris_init_expanders): Likewise.
13799         * config/darwin-c.c (frameworks_in_use, add_framework): Likewise.
13800         * config/darwin.c (machopic_indirection_eq,
13801         machopic_indirection_name, machopic_output_indirection): Likewise.
13802         * config/frv/frv.c (frv_init_machine_status, frv_compare_insns,
13803         frv_io_check_address, frv_io_handle_set, frv_io_handle_use_1,
13804         frv_optimize_membar): Likewise.
13805         * config/i386/cygwin.h (mingw_scan,
13806         GCC_DRIVER_HOST_INITIALIZATION): Likewise.
13807         * config/i386/cygwin1.c (mingw_scan): Likewise.
13808         * config/i386/i386.c (machopic_output_stub): Likewise.
13809         * config/i386/winnt.c (gen_stdcall_or_fastcall_suffix,
13810         i386_pe_unique_section): Likewise.
13811         * config/ia64/ia64.c (ia64_init_machine_status,
13812         ia64_h_i_d_extended, get_free_bundle_state, bundling, ia64_reorg):
13813         Likewise.
13814         * config/iq2000/iq2000.c, iq2000_init_machine_status): Likewise.
13815         * config/m68hc11/m68hc11.c (m68hc11_encode_label): Likewise.
13816         * config/m68k/m68k.c (m68k_handle_option,
13817         m68k_sched_md_init_global): Likewise.
13818         * config/mcore/mcore.c (mcore_mark_dllexport, mcore_mark_dllimport,
13819         mcore_unique_section): Likewise.
13820         * config/mips/mips.c (mips_block_move_straight,
13821         mips16_rewrite_pool_refs, mips_sim_wait_regs_2, mips_sim_record_set):
13822         Likewise.
13823         * config/mmix/mmix.c (mmix_init_machine_status,
13824         mmix_encode_section_info): Likewise.
13825         * config/pa/pa.c (pa_init_machine_status, hppa_encode_label): Likewise.
13826         * config/rs6000/rs6000.c (rs6000_init_machine_status,
13827         print_operand_address, output_toc, redefine_groups,
13828         rs6000_elf_encode_section_info, machopic_output_stub): Likewise.
13829         * config/s390/s390.c (s390_init_machine_status): Likewise.
13830         * config/score/score.c (score_block_move_straight,
13831         score_block_move_loop_body): Likewise.
13832         * config/sparc/sparc.c (sparc_init_machine_status): Likewise.
13833         * config/xtensa/xtensa.c (xtensa_init_machine_status): Likewise.
13834         * emit-rtl.c (find_auto_inc): Likewise.
13835         * gcc.c (translate_options, process_command): Likewise.
13836         * reorg.c (dbr_schedule): Likewise.
13837         * sdbout.c (sdbout_start_source_file, sdbout_init): Likewise.
13838         * xcoffout.c (xcoffout_declare_function): Likewise.
13839
13840 2008-06-27  Daniel Berlin  <dberlin@dberlin.org>
13841
13842         * tree-ssa-structalias.c (find_func_aliases): Trivial fix to get
13843         ipa-pta working again.
13844
13845 2008-06-27  David Edelsohn  <edelsohn@gnu.org>
13846
13847         * config/rs6000/t-aix52: Append large data option to LDFLAGS for
13848         genautomata.
13849
13850 2008-06-27  Edmar Wienskoski  <edmar@freescale.com>
13851
13852         * config.gcc (powerpc*-*-*): Add new core e500mc.
13853         * config/rs6000/e500mc.md: New file.
13854         * config/rs6000/rs6000.c (processor_costs): Add new costs for
13855         e500mc.
13856         (rs6000_override_options): Add e500mc case to
13857         processor_target_table. Altivec and Spe options not allowed
13858         with e500mc. Add isel instruction to e500mc by
13859         default. Initialize rs6000_cost for e500mc.
13860         (rs6000_issue_rate): Set issue rate for e500mc.
13861         * config/rs6000/rs6000.h (processor_type): Add
13862         PROCESSOR_PPCE500MC.
13863         (ASM_CPU_SPEC): Add e500mc.
13864         Set TARGET_ISEL to rs6000_isel.
13865         * config/rs6000/e500.h: Remove redefinition of TARGET_ISEL.
13866         (CHECK_E500_OPTIONS): Remove TARGET_ISEL.
13867         * config/rs6000/rs6000.md (define_attr "cpu"): Add ppce500mc.
13868         Include e500mc.md.
13869         * doc/invoke.texi: Add e500mc to list of cpus.
13870
13871 2008-06-27  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
13872
13873         PR c/34867
13874         * c-lex.c (lex_charconst): Initialize unsignedp.
13875
13876 2008-06-27  Olivier Hainque  <hainque@adacore.com>
13877
13878         * gimplify.c (gimplify_modify_expr_to_memset): Assert our
13879         documented assumptions.
13880
13881 2008-06-26  H.J. Lu  <hongjiu.lu@intel.com>
13882
13883         * dwarf2out.c: Remove trailing white spaces.  Break long line
13884         in comments.
13885
13886 2008-06-26  Richard Sandiford  <rdsandiford@googlemail.com>
13887
13888         * libfuncs.h (LTI_synchronize): New libfunc_index.
13889         (synchronize_libfunc): Declare.
13890         * builtins.c (expand_builtin_synchronize): Consider using
13891         synchronize_libfunc before falling back on an asm blockage.
13892         * config/mips/mips.c: Include libfuncs.h
13893         (mips_init_libfuncs): Initialize synchronize_libfunc for TARGET_MIPS16.
13894
13895 2008-06-26  Nathan Froyd  <froydnj@codesourcery.com>
13896
13897         * config/rs6000/rs6000.c (emit_allocate_stack): Add copy_r11
13898         parameter.  Copy stack_reg to r11 where appropriate.
13899         (no_global_regs_above): Add gpr parameter.
13900         (rs6000_stack_info): Only add padding for SPE save area if we
13901         are saving SPE GPRs and CR.
13902         (saveres_routine_syms): New variable.
13903         (FIRST_SAVRES_REGISTER, LAST_SAVRES_REGISTER, N_SAVRES_REGISTERS):
13904         Define.
13905         (rs6000_savres_routine_sym): New function.
13906         (rs6000_emit_stack_reset, rs6000_restore_saved_cr): New functions,
13907         split out of...
13908         (rs6000_emit_epilogue): ...here.  Use rs6000_use_multiple_p and
13909         rs6000_savres_strategy.  Restore GPRs out-of-line if appropriate.
13910         Tweak FPR out-of-line saving.
13911         (rs6000_make_savres_rtx): New function.
13912         (rs6000_use_multiple_p): New function.
13913         (rs6000_savres_strategy): New function.
13914         (rs6000_emit_prologue): Use rs6000_savres_strategy.  Save GPRs
13915         out-of-line if appropriate.
13916         * config/rs6000/sysv4.h (FP_SAVE_INLINE): Save FPRs out-of-line
13917         if we are optimizing for size.
13918         (GP_SAVE_INLINE): Define.
13919         (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX): Only use _l on 64-bit targets.
13920         * config/rs6000/darwin.h (GP_SAVE_INLINE): Define.
13921         * config/rs6000/aix.h (GP_SAVE_INLINE): Define.
13922         * config/rs6000/rs6000.md (*save_gpregs_<mode>): New insn.
13923         (*save_fpregs_<mode>): Add use of r11.
13924         (*restore_gpregs_<mode>): New insn.
13925         (*return_and_restore_gpregs_<mode>): New insn.
13926         (*return_and_restore_fpregs_<mode>): Adjust to clobber LR and
13927         use r11.
13928         * config/rs6000/spe.md (*save_gpregs_spe): New insn.
13929         (*restore_gpregs_spe): New insn.
13930         (*return_and_restore_gpregs_spe): New insn.
13931         * config/rs6000/predicates.md (save_world_operation): Fix check.
13932
13933 2008-06-26  Steven Bosscher  <steven@gcc.gnu.org>
13934
13935         * tree-into-ssa (insert_phi_nodes_for): 'var' must be a DECL at
13936         this point, so assert that.
13937
13938 2008-06-26  Steven Bosscher  <steven@gcc.gnu.org>
13939
13940         * cfganal.c: Include vec.h and vecprim.h.
13941         (compute_idf): Import from...
13942         * tree-into-ssa (compute_idf): ...here.
13943         * basic-block.h (compute_idf): Export.
13944
13945 2008-06-26  Joseph Myers  <joseph@codesourcery.com>
13946
13947         * c-decl.c (merge_decls): Use !current_function_decl to check for
13948         extern declaration of C99 inline function being at file scope.
13949
13950 2008-06-25  John David Anglin  <dave.anglin@gcc-cnrc.gc.ca>
13951
13952         * config.gcc (hppa[12]*-*-hpux10*): Don't use fixproto.
13953
13954 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13955
13956         * alias.c (record_alias_subset, init_alias_analysis): Fix
13957         -Wc++-compat and/or -Wcast-qual warnings.
13958         * attribs.c (lookup_attribute_spec): Likewise.
13959         * bb-reorder.c (find_traces, rotate_loop, find_traces_1_round,
13960         copy_bb, connect_traces,
13961         find_rarely_executed_basic_blocks_and_cr): Likewise.
13962         * bt-load.c (find_btr_def_group, add_btr_def, new_btr_user,
13963         note_btr_set, migrate_btr_defs): Likewise.
13964         * builtins.c (result_vector, expand_builtin_memcpy,
13965         expand_builtin_mempcpy_args, expand_builtin_strncpy,
13966         builtin_memset_read_str, expand_builtin_printf,
13967         fold_builtin_memchr, rewrite_call_expr, fold_builtin_printf):
13968         Likewise.
13969         * caller-save.c (mark_set_regs): Likewise.
13970         * calls.c (expand_call, emit_library_call_value_1): Likewise.
13971         * cgraph.c (cgraph_edge): Likewise.
13972         * combine.c (likely_spilled_retval_1): Likewise.
13973         * coverage.c (htab_counts_entry_hash, htab_counts_entry_eq,
13974         htab_counts_entry_del, get_coverage_counts): Likewise.
13975         * cselib.c (new_elt_list, new_elt_loc_list, entry_and_rtx_equal_p,
13976         new_cselib_val): Likewise.
13977         * dbgcnt.c (dbg_cnt_process_opt): Likewise.
13978         * dbxout.c (dbxout_init, dbxout_type, output_used_types_helper):
13979         Likewise.
13980         * df-core.c (df_compact_blocks): Likewise.
13981         * df-problems.c (df_grow_bb_info, df_chain_create): Likewise.
13982         * df-scan.c (df_grow_reg_info, df_ref_create,
13983         df_insn_create_insn_record, df_insn_rescan, df_notes_rescan,
13984         df_ref_compare, df_ref_create_structure, df_bb_refs_record,
13985         df_record_entry_block_defs, df_record_exit_block_uses,
13986         df_bb_verify): Likewise.
13987         * df.h (DF_REF_EXTRACT_WIDTH_CONST, DF_REF_EXTRACT_OFFSET_CONST,
13988         DF_REF_EXTRACT_MODE_CONST): New.
13989         * dominance.c (get_immediate_dominator, get_dominated_by,
13990         nearest_common_dominator, root_of_dom_tree,
13991         iterate_fix_dominators, first_dom_son, next_dom_son): Fix
13992         -Wc++-compat and/or -Wcast-qual warnings.
13993         * dse.c (clear_alias_set_lookup, get_group_info, gen_rtx_MEM,
13994         record_store, replace_read, check_mem_read_rtx, scan_insn,
13995         dse_step1, dse_record_singleton_alias_set): Likewise.
13996         * dwarf2asm.c (dw2_force_const_mem): Likewise.
13997
13998 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13999
14000         * dwarf2out.c (new_cfi, queue_reg_save, dwarf2out_begin_prologue,
14001         dwarf2out_frame_init, new_loc_descr, new_die, lookup_decl_die,
14002         lookup_decl_loc, add_var_loc_to_decl, compute_section_prefix,
14003         assign_symbol_names, htab_cu_hash, htab_cu_eq, htab_cu_del,
14004         build_abbrev_table, new_loc_list, output_comp_unit, add_arange,
14005         add_ranges_num, add_ranges_by_labels, file_info_cmp,
14006         file_name_acquire, output_file_names, add_const_value_attribute,
14007         premark_used_types_helper, file_table_eq, file_table_hash,
14008         lookup_filename, dwarf2out_var_location, dwarf2out_source_line,
14009         dwarf2out_init, file_table_relative_p): Fix -Wc++-compat and/or
14010         -Wcast-qual warnings.
14011         * ebitmap.c (ebitmap_array_grow, ebitmap_array_init,
14012         ebitmap_alloc, ebitmap_ior, ebitmap_and_compl): Likewise.
14013         * emit-rtl.c (get_mem_attrs, get_reg_attrs, gen_rtvec,
14014         gen_reg_rtx, start_sequence, init_emit): Likewise.
14015         * et-forest.c (et_new_occ, et_new_tree): Likewise.
14016         * except.c (init_eh_for_function, gen_eh_region,
14017         remove_unreachable_regions, add_ehl_entry, duplicate_eh_regions_1,
14018         arh_to_landing_pad, arh_to_label, add_action_record,
14019         add_call_site, switch_to_exception_section): Likewise.
14020         * expmed.c (synth_mult): Likewise.
14021         * expr.c (gen_group_rtx, emit_group_load, emit_group_store,
14022         store_expr): Likewise.
14023         * final.c (shorten_branches, final_scan_insn, debug_queue_symbol):
14024         Likewise.
14025         * function.c (assign_stack_temp_for_type,
14026         allocate_struct_function, match_asm_constraints_1): Likewise.
14027         * gcov-io.c (gcov_allocate): Likewise.
14028         * gcse.c (GNEW, GCNEW, GNEWVEC, GCNEWVEC, GRESIZEVEC, GNEWVAR,
14029         GCNEWVAR, GRESIZEVAR, GOBNEW, GOBNEWVAR): New.
14030         (gcse_main, alloc_gcse_mem, alloc_gcse_mem, alloc_reg_set_mem,
14031         record_one_set, insert_expr_in_table, insert_set_in_table,
14032         dump_hash_table, compute_hash_table_work, alloc_hash_table,
14033         pre_ldst_expr_hash, pre_ldst_expr_eq, find_rtx_in_ldst,
14034         reg_set_info, reg_clear_last_set): Fix -Wc++-compat and/or
14035         -Wcast-qual warnings.
14036
14037 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14038
14039         * cse.c (approx_reg_cost_1, cse_insn): Fix -Wc++-compat and/or
14040         -Wcast-qual warnings.
14041         * gcc.c (process_command): Likewise.
14042         * genattrtab.c (oballoc): Use XOBNEW.
14043         (oballocvec): Define.
14044         (attr_hash_add_rtx, attr_hash_add_string, attr_string,
14045         get_attr_value, fill_attr, make_length_attrs, gen_attr, gen_insn,
14046         gen_delay, find_attr, gen_insn_reserv, gen_bypass_1): Fix
14047         -Wc++-compat and/or -Wcast-qual warnings.
14048         * genautomata.c (XCREATENODE, XCREATENODEVEC, XCREATENODEVAR,
14049         XCOPYNODE, XCOPYNODEVEC, XCOPYNODEVAR): New.
14050         (gen_cpu_unit, gen_query_cpu_unit, gen_bypass, gen_excl_set,
14051         gen_presence_absence_set, gen_automaton, gen_regexp_el,
14052         gen_regexp_repeat, gen_regexp_allof, gen_regexp_oneof,
14053         gen_regexp_sequence, gen_reserv, gen_insn_reserv, process_excls,
14054         add_excls, process_presence_absence_names,
14055         process_presence_absence_patterns, add_presence_absence,
14056         process_regexp, add_advance_cycle_insn_decl, get_free_alt_state,
14057         get_free_state, add_arc, get_free_automata_list_el,
14058         form_reserv_sets_list, copy_insn_regexp, transform_1, transform_2,
14059         transform_3, cache_presence, create_ainsns, create_automata,
14060         create_state_ainsn_table, dfa_insn_code_enlarge,
14061         output_trans_func, output_min_issue_delay_func,
14062         output_dead_lock_func, output_reset_func,
14063         output_get_cpu_unit_code_func, output_dfa_start_func,
14064         expand_automata): Likewise.
14065         * genextract.c (gen_insn): Likewise.
14066         * gengtype-lex.l: Likewise.
14067         * gengtype.c (read_input_list, adjust_field_type,
14068         process_gc_options): Likewise.
14069         * genoutput.c (note_constraint): Likewise.
14070         * genpreds.c (mangle, add_constraint): Likewise.
14071         * genrecog.c (process_define_predicate, new_decision,
14072         add_to_sequence): Likewise.
14073         * gensupport.c (record_insn_name): Likewise.
14074
14075 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14076
14077         * config/i386/driver-i386.c (detect_caches_amd,
14078         detect_caches_intel, host_detect_local_cpu): Fix -Wc++-compat
14079         and/or -Wcast-qual warnings.
14080         *ggc-common.c (ggc_mark_roots, gt_pch_note_object,
14081         gt_pch_note_reorder, relocate_ptrs, write_pch_globals,
14082         gt_pch_save): Likewise.
14083         * ggc-page.c (push_depth, push_by_depth, alloc_anon, alloc_page,
14084         gt_ggc_m_S, clear_marks, ggc_pch_read): Likewise.
14085         * global.c (compute_regsets): Likewise.
14086         * graph.c (print_rtl_graph_with_bb, clean_graph_dump_file,
14087         finish_graph_dump_file): Likewise.
14088         * haifa-sched.c (schedule_block, extend_h_i_d, extend_ready,
14089         unlink_bb_notes): Likewise.
14090         * integrate.c (get_hard_reg_initial_val): Likewise.
14091         * ipa-prop.c (ipa_push_func_to_list): Likewise.
14092         * ipa-struct-reorg.c (gen_var_name, gen_cluster_name): Likewise.
14093         * local-alloc.c (update_equiv_regs): Likewise.
14094         * loop-invariant.c (check_invariant_table_size,
14095         hash_invariant_expr, eq_invariant_expr, find_or_insert_inv):
14096         Likewise.
14097         * loop-iv.c (check_iv_ref_table_size, analyzed_for_bivness_p,
14098         altered_reg_used, mark_altered): Likewise.
14099         * loop-unroll.c (si_info_eq, ve_info_eq, allocate_basic_variable,
14100         insert_var_expansion_initialization,
14101         combine_var_copies_in_loop_exit, apply_opt_in_copies,
14102         release_var_copies): Likewise.
14103         * matrix-reorg.c (mat_acc_phi_hash, mat_acc_phi_eq, mtt_info_eq,
14104         analyze_matrix_decl, add_allocation_site, analyze_transpose,
14105         analyze_accesses_for_phi_node, check_var_notmodified_p,
14106         check_allocation_function, find_sites_in_func,
14107         record_all_accesses_in_func, transform_access_sites,
14108         transform_allocation_sites): Likewise.
14109         * omp-low.c (new_omp_region, create_omp_child_function_name,
14110         check_omp_nesting_restrictions, check_combined_parallel,
14111         lower_omp_2, diagnose_sb_1, diagnose_sb_2): Likewise.
14112         * optabs.c (no_conflict_move_test, gen_libfunc, gen_fp_libfunc,
14113         gen_intv_fp_libfunc, gen_interclass_conv_libfunc,
14114         gen_intraclass_conv_libfunc, set_optab_libfunc, set_conv_libfunc):
14115         Likewise.
14116         * opts-common.c (prune_options): Likewise.
14117         * opts.c (add_input_filename, print_filtered_help,
14118         get_option_state): Likewise.
14119         * params.c (add_params): Likewise.
14120         * passes.c (set_pass_for_id, next_pass_1,
14121         do_per_function_toporder, pass_fini_dump_file): Likewise.
14122         * postreload.c (reload_cse_simplify_operands): Likewise.
14123         * predict.c (tree_predicted_by_p, tree_predict_edge,
14124         clear_bb_predictions, combine_predictions_for_bb): Likewise.
14125
14126 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14127
14128         * ra.h (add_neighbor): Fix -Wc++-compat and/or -Wcast-qual
14129         warnings.
14130         * recog.c (check_asm_operands, validate_change_1): Likewise.
14131         * reg-stack.c (check_asm_stack_operands, subst_asm_stack_regs,
14132         subst_asm_stack_regs): Likewise.
14133         * regclass.c (regclass, som_hash, som_eq, record_subregs_of_mode,
14134         cannot_change_mode_set_regs, invalid_mode_change_p): Likewise.
14135         * regmove.c (reg_is_remote_constant_p): Likewise.
14136         * regrename.c (regrename_optimize, scan_rtx_reg,
14137         kill_clobbered_value, kill_set_value, kill_autoinc_value):
14138         Likewise.
14139         * regstat.c (regstat_init_n_sets_and_refs, regstat_compute_ri,
14140         regstat_compute_calls_crossed): Likewise.
14141         * reload1.c (init_reload, new_insn_chain,
14142         has_nonexceptional_receiver, reload, copy_reloads,
14143         calculate_needs_all_insns, init_elim_table): Likewise.
14144         * rtl-factoring.c (compute_rtx_cost, fill_hash_bucket): Likewise.
14145         * rtl.c (shallow_copy_rtx_stat): Likewise.
14146         * rtlanal.c (parms_set): Likewise.
14147         * sbitmap.c (sbitmap_alloc, sbitmap_alloc_with_popcount,
14148         sbitmap_resize, sbitmap_vector_alloc): Likewise.
14149         * sched-ebb.c (earliest_block_with_similiar_load,
14150         add_deps_for_risky_insns): Likewise.
14151         * sched-rgn.c (find_rgns, gather_region_statistics, extend_rgns,
14152         schedule_region): Likewise.
14153         * see.c (eq_descriptor_pre_extension,
14154         hash_descriptor_pre_extension, hash_del_pre_extension,
14155         eq_descriptor_properties, hash_descriptor_properties,
14156         hash_del_properties, see_seek_pre_extension_expr,
14157         see_initialize_data_structures, see_print_register_properties,
14158         see_print_pre_extension_expr, see_delete_merged_def_extension,
14159         see_delete_unmerged_def_extension, see_emit_use_extension,
14160         see_pre_delete_extension, see_map_extension, see_commit_changes,
14161         see_analyze_merged_def_local_prop,
14162         see_analyze_merged_def_local_prop,
14163         see_analyze_unmerged_def_local_prop, see_analyze_use_local_prop,
14164         see_set_prop_merged_def, see_set_prop_unmerged_def,
14165         see_set_prop_unmerged_use, see_print_one_extension,
14166         see_merge_one_use_extension, see_merge_one_def_extension,
14167         see_store_reference_and_extension, see_update_uses_relevancy,
14168         see_update_defs_relevancy): Likewise.
14169         * statistics.c (hash_statistics_hash, hash_statistics_eq,
14170         hash_statistics_free, curr_statistics_hash): Likewise.
14171         * stmt.c (parse_output_constraint, decl_overlaps_hard_reg_set_p,
14172         expand_asm_operands, expand_return, case_bit_test_cmp,
14173         expand_case): Likewise.
14174         * stor-layout.c (start_record_layout): Likewise.
14175         * stringpool.c (ggc_alloc_string, gt_pch_n_S,
14176         gt_pch_save_stringpool): Likewise.
14177         * tree-data-ref.c (hash_stmt_vertex_info,
14178         have_similar_memory_accesses_1, ref_base_address_1): Likewise.
14179         * tree-ssa-phiopt.c (name_to_bb_hash): Likewise.
14180
14181 2008-06-25  Uros Bizjak  <ubizjak@gmail.com>
14182
14183         PR target/36627
14184         * config/i386/i386.md : Change constraints of HImode and QImode
14185         immediate operands from "i" to "n".  Change SImode "ni" constraint to
14186         "i" and SImode "rmi" constraint to "g".  Remove all constraints
14187         from const0_operand and const1_operand predicated operands.
14188         (i): Change QImode and HImode attribute from "i" to "n".
14189         (*subqi_2): Change HImode operands to QImode.
14190         (*subqi_3): Ditto.
14191
14192 2008-06-25  Olivier Hainque  <hainque@adacore.com>
14193
14194         * Makefile.in (GTFILES_H): Use | instead of ; as separator in
14195         sed substitutions.
14196
14197 2008-06-25  Richard Guenther  <rguenther@suse.de>
14198
14199         * tree-ssa-structalias.c (fieldoff_compare): Make sure to
14200         not overflow the result type.
14201
14202 2008-06-25  Richard Guenther  <rguenther@suse.de>
14203
14204         * tree-vn.c (vn_add): Handle TRUTH_*_EXPR.
14205         (vn_lookup): Likewise.
14206
14207 2008-06-25  Richard Guenther  <rguenther@suse.de>
14208
14209         PR tree-optimization/35518
14210         * fold-const.c (fold_ternary): Strip trivial BIT_FIELD_REFs.
14211         * tree-sra.c (instantiate_element): Use fold_build3 to build
14212         BIT_FIELD_REFs.
14213         (try_instantiate_multiple_fields): Likewise.
14214
14215 2008-06-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14216
14217         * config/rs6000/rs6000.md: Change all string instruction's clobber to
14218         be early clobbers.
14219
14220 2008-06-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14221
14222         * config/rs6000/rs6000.c (rs6000_emit_epilogue): Set
14223         use_backchain_to_restore_sp to true
14224         if the offset of the link register save area would go over the 32k - 1
14225         offset limit of the load
14226         instructions.
14227
14228 2008-06-25  Hans-Peter Nilsson  <hp@axis.com>
14229
14230         * doc/invoke.texi (Optimize Options) <fstrict-aliasing>: Add
14231         anchor for the type-punning blurb.  Cross-reference "Structures
14232         unions enumerations and bit-fields implementation".  Provide a
14233         cast-through-pointer example.  Make final sentence self-contained.
14234         * doc/implement-c.texi (Structures unions enumerations and
14235         bit-fields implementation): Cross-reference the type-punning blurb
14236         in the -fstrict-aliasing documentation.
14237
14238 2008-06-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14239
14240         PR middle-end/36594
14241         * builtins.c (expand_builtin_nonlocal_goto): Stabilize the address of
14242         the memory instead of the memory itself for the save area.
14243
14244 2008-06-24  Olivier Hainque  <hainque@adacore.com>
14245             Nicolas Roche  <roche@adacore.com>
14246
14247         * gengtype.c (srcdir_len): size_t instead of int.
14248         (get_file_realbasename): New function.  For F a filename, the real
14249         basename of F, with all the path components stripped.
14250         (get_file_srcdir_relative_path): New function.  For F a filename, the
14251         relative path to F from $(srcdir).
14252         (get_file_basename): Rewrite using get_file_srcdir_relative_path and
14253         get_file_realbasename.  Adjust the head comment.
14254         (get_prefix_langdir_index): New function. For F a filename, return the
14255         lang_dir_names[] relative index of the language directory that is
14256         a prefix in F.
14257         (get_file_langdir): For F a filename, return the name of the language
14258         directory where F is located.
14259         (get_file_gtfilename): New function. The gt- output file name for an
14260         input filename F.
14261         (get_output_file_with_visibility): Replace in-line computations with
14262         uses of get_file_gtfilename and get_prefix_langdir_index.
14263         * Makefile.in (GTFILES_H): Adjust to match what gengtype generates.
14264
14265 2008-06-24  Jakub Jelinek  <jakub@redhat.com>
14266
14267         PR tree-optimization/36504
14268         * tree-ssa-loop-prefetch.c (gather_memory_references_ref): Skip
14269         references without base address.
14270
14271 2008-06-23  Uros Bizjak  <ubizjak@gmail.com>
14272
14273         PR middle-end/36584
14274         * calls.c (expand_call): Increase alignment for recursive functions.
14275
14276 2008-06-23  Anatoly Sokolov  <aesok@post.ru>
14277
14278         * config/avr/avr.c (avr_function_value): Add new 'outgoing' argument.
14279         (TARGET_FUNCTION_VALUE): New define.
14280         * config/avr/avr-protos.h (avr_function_value): Remove declaration.
14281         * config/avr/avr.h (FUNCTION_VALUE): Remove.
14282
14283 2008-06-23  Uros Bizjak  <ubizjak@gmail.com>
14284
14285         * config/i386/i386.md (fmodxf3): Change sequence of move instructions.
14286         (fmod<mode>3): Ditto.
14287         (remainderxf3): Ditto.
14288         (remainder<mode>3): Ditto.
14289
14290 2008-06-23  Jakub Jelinek  <jakub@redhat.com>
14291
14292         PR target/36533
14293         * emit-rtl.c (set_reg_attrs_from_value): Do nothing if
14294         REG is a hard register.
14295
14296         PR tree-optimization/36508
14297         * tree-ssa-pre.c (compute_antic): Allow num_iterations up to
14298         499, don't check it at all in release compilers.
14299
14300 2008-06-23  Uros Bizjak  <ubizjak@gmail.com>
14301
14302         * config/i386/i386.md (*fop_<mode>_1_i387): Use SSE_FLOAT_MODE_P
14303         together with SSE_TARGET_MATH to disable insn pattern.
14304         (*fop_<MODEF:mode>_2_i387): Ditto.
14305         (*fop_<MODEF:mode>_3_i387): Ditto.
14306
14307 2008-06-22  Andy Hutchinson  <hutchinsonandy@aim.com>
14308
14309         * config/avr/avr.h (SUPPORTS_INIT_PRIORITY): Define.
14310
14311 2008-06-22  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
14312
14313         PR middle-end/34906
14314         * gimplify.c (gimplify_asm_expr): Check the return code of
14315         parse_output_constraint call, set function return and is_inout
14316         value if it failed.
14317
14318 2008-06-22  Ian Lance Taylor  <iant@google.com>
14319
14320         * c-lex.c (narrowest_unsigned_type): Change itk to int.
14321         (narrowest_signed_type): Likewise.
14322         * c-typeck.c (c_common_type): Change local variable mclass to enum
14323         mode_class, twice.
14324         (parser_build_binary_op): Compare the TREE_CODE_CLASS with
14325         tcc_comparison, not the tree code itself.
14326         * c-common.c (def_fn_type): Pass int, not an enum, to va_arg.
14327         (c_expand_expr): Cast modifier to enum expand_modifier.
14328         * c-common.h (C_RID_CODE): Add casts.
14329         (C_SET_RID_CODE): Define.
14330         * c-parser.c (c_parse_init): Use C_SET_RID_CODE.
14331         (c_lex_one_token): Add cast to avoid warning.
14332         (c_parser_objc_type_name): Rename local typename to type_name.
14333         (check_no_duplicate_clause): Change code parameter to enum
14334         omp_clause_code.
14335         (c_parser_omp_var_list_parens): Change kind parameter to enum
14336         omp_clause_code.
14337         (c_parser_omp_flush): Pass OMP_CLAUSE_ERROR, not 0, to
14338         c_parser_omp_list_var_parens.
14339         (c_parser_omp_threadprivate): Likewise.
14340         * cp/lex.c (init_reswords): Use C_SET_RID_CODE.
14341         * cp/parser.c (cp_lexer_get_preprocessor_token): Likewise.
14342         * c-format.c (NO_FMT): Define.
14343         (printf_length_specs): Use NO_FMT.
14344         (asm_fprintf_length_specs): Likewise.
14345         (gcc_diag_length_specs): Likewise.
14346         (scanf_length_specs): Likewise.
14347         (strfmon_length_specs): Likewise.
14348         (gcc_gfc_length_specs): Likewise.
14349         (printf_flag_specs): Change 0 to STD_C89.
14350         (asm_fprintf_flag_specs): Likewise.
14351         (gcc_diag_flag_specs): Likewise.
14352         (gcc_cxxdiag_flag_specs): Likewise.
14353         (scanf_flag_specs): Likewise.
14354         (strftime_flag_specs): Likewise.
14355         (strfmon_flag_specs): Likewise.
14356         (print_char_table): Likewise.
14357         (asm_fprintf_char_table): Likewise.
14358         (gcc_diag_char_table): Likewise.
14359         (gcc_tdiag_char_table): Likewise.
14360         (gcc_cdiag_char_table): Likewise.
14361         (gcc_cxxdiag_char_table): Likewise.
14362         (gcc_gfc_char_table): Likewise.
14363         (scan_char_table): Likewise.
14364         (time_char_table): Likewis.
14365         (monetary_char_table): Likewise.
14366         * c-format.h (BADLEN): Likewise.
14367
14368 2008-06-21  Ian Lance Taylor  <iant@google.com>
14369
14370         * tree.h (enum tree_code): Include all-tree.def, not tree.def.
14371         Define END_OF_BASE_TREE_CODES around inclusion.
14372         * tree.c (tree_code_type): New global array.
14373         (tree_code_length, tree_code_name): Likewise.
14374         * Makefile.in (TREE_H): Add all-tree.def, c-common.def, and
14375         $(lang_tree_files).
14376         (all-tree.def, s-alltree): New targets.
14377         (gencheck.h, s-gencheck): Remove.
14378         (tree.o): Depend upon all-tree.def.
14379         (build/gencheck.o): Remove gencheck.h dependency.
14380         (mostlyclean): Don't remove gencheck.h.
14381         * c-common.h (enum c_tree_code): Remove.
14382         * c-lang.c (tree_code_type): Remove.
14383         (tree_code_length, tree_code_name): Remove.
14384         * gencheck.c (tree_codes): Include all-tree.def, rather than
14385         tree.def, c-common.def, and gencheck.h.  Undefined DEFTREECODE
14386         after it is used.
14387         * tree-browser.c (tb_tree_codes): Include all-tree.def, rather
14388         than tree.def.
14389         * cp/cp-tree.h (enum cplus_tree_code): Remove.
14390         (operator_name_info): Size to MAX_TREE_CODES.
14391         (assignment_operator_name_info): Likewise.
14392         * cp/cp-lang.c (tree_code_type): Remove.
14393         (tree_code_length, tree_code_name): Remove.
14394         * cp/lex.c (operator_name_info): Size to MAX_TREE_CODES.
14395         (assignment_operator_name_info): Likewise.
14396         * cp/decl.c (grok_op_properties): Change LAST_CPLUS_TREE_CODE to
14397         MAX_TREE_CODES.
14398         * cp/mangle.c (write_expression): Likewise.
14399         * cp/Make-lang.in (CXX_TREE_H): Remove cp/cp-tree.def.
14400         * fortran/f95-lang.c (tree_code_type): Remove.
14401         (tree_code_length, tree_code_name): Remove.
14402         * java/java-tree.h (enum java_tree_code): Remove.
14403         * java/lang.c (tree_code_type): Remove.
14404         (tree_code_length, tree_code_name): Remove.
14405         * java/Make-lang.in (JAVA_TREE_H): Remove java/java-tree.def.
14406         * objc/objc-act.h (enum objc_tree_code): Remove.
14407         * objc/objc-lang.c (tree_code_type): Remove.
14408         (tree_code_length, tree_code_name): Remove.
14409         * objcp/objcp-lang.c (tree_code_type): Remove.
14410         (tree_code_length, tree_code_name): Remove.
14411         * ada/ada-tree.h (enum gnat_tree_code): Remove.
14412         * ada/Make-lang.in (ADA_TREE_H): Remove ada/ada-tre.def.
14413         * ada/misc.c (tree_code_type): Remove.
14414         (tree_code_length, tree_code_name): Remove.
14415
14416 2008-06-21  Bernhard Fischer  <aldot@gcc.gnu.org>
14417
14418         * tree-ssa-pre.c (fini_antic): Bitmap_sets have to be freed before
14419         the grand_bitmap_obstack.
14420
14421 2008-06-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14422
14423         * ggc.h (GGC_RESIZEVAR): New, reorder macros.
14424         * tracer.c (tail_duplicate): Fix for -Wc++-compat.
14425         * tree-affine.c (aff_combination_expand, free_name_expansion): Likewise.
14426         * tree-cfg.c (replace_by_duplicate_decl, replace_ssa_name,
14427         move_stmt_r, new_label_mapper): Likewise.
14428         * tree-complex.c (cvc_lookup): Likewise.
14429         * tree-dfa.c (create_function_ann): Likewise.
14430         * tree-dump.c (dump_register): Likewise.
14431         * tree-if-conv.c (tree_if_conversion, add_to_predicate_list,
14432         find_phi_replacement_condition): Likewise.
14433         * tree-inline.c (copy_phis_for_bb, estimate_num_insns_1,
14434         tree_function_versioning): Likewise.
14435         * tree-into-ssa.c (cmp_dfsnum): Likewise.
14436         * tree-iterator.c (tsi_link_before, tsi_link_after): Likewise.
14437         * tree-nested.c (lookup_field_for_decl, lookup_tramp_for_decl,
14438         get_nonlocal_debug_decl, convert_nonlocal_reference,
14439         convert_nonlocal_omp_clauses, get_local_debug_decl,
14440         convert_local_reference, convert_local_omp_clauses,
14441         convert_nl_goto_reference, convert_nl_goto_receiver,
14442         convert_tramp_reference, convert_call_expr): Likewise.
14443         * tree-outof-ssa.c (contains_tree_r): Likewise.
14444         * tree-parloops.c (reduction_phi, initialize_reductions,
14445         eliminate_local_variables_1, add_field_for_reduction,
14446         add_field_for_name, create_phi_for_local_result,
14447         create_call_for_reduction_1, create_loads_for_reductions,
14448         create_stores_for_reduction, create_loads_and_stores_for_name):
14449         Likewise.
14450         * tree-phinodes.c (allocate_phi_node): Likewise.
14451         * tree-predcom.c (order_drefs, execute_pred_commoning_cbck): Likewise.
14452         * tree-sra.c (sra_elt_hash, sra_elt_eq, lookup_element): Likewise.
14453         * tree-ssa-alias.c (get_mem_sym_stats_for): Likewise.
14454         * tree-ssa-coalesce.c (compare_pairs): Likewise.
14455         * tree-ssa-loop-im.c (mem_ref_in_stmt, memref_hash, memref_eq,
14456         memref_free, gather_mem_refs_stmt, vtoe_hash, vtoe_eq, vtoe_free,
14457         record_vop_access, get_vop_accesses, get_vop_stores): Likewise.
14458         * tree-ssa-loop-prefetch.c (determine_loop_nest_reuse): Likewise.
14459         * tree-ssa-sccvn.c (VN_INFO_GET, free_phi, free_reference,
14460         vn_nary_op_insert): Likewise.
14461         * tree-ssa.c (redirect_edge_var_map_add,
14462         redirect_edge_var_map_clear, redirect_edge_var_map_dup): Likewise.
14463         * tree-vectorizer.c (vectorize_loops): Likewise.
14464         * tree.c (make_node_stat, copy_node_stat, build_int_cst_wide,
14465         build_fixed, build_real, make_tree_binfo_stat, make_tree_vec_stat,
14466         tree_cons_stat, build1_stat, build_variant_type_copy,
14467         decl_init_priority_lookup, decl_fini_priority_lookup,
14468         decl_priority_info, decl_restrict_base_lookup,
14469         decl_restrict_base_insert, decl_debug_expr_lookup,
14470         decl_debug_expr_insert, decl_value_expr_lookup,
14471         decl_value_expr_insert, type_hash_eq, type_hash_lookup,
14472         type_hash_add, get_file_function_name, tree_check_failed,
14473         tree_not_check_failed, tree_range_check_failed,
14474         omp_clause_range_check_failed, build_omp_clause,
14475         build_vl_exp_stat): Likewise.
14476         * value-prof.c (gimple_histogram_value,
14477         gimple_duplicate_stmt_histograms): Likewise.
14478         * var-tracking.c (attrs_list_insert, attrs_list_copy,
14479         unshare_variable, variable_union_info_cmp_pos, variable_union,
14480         dataflow_set_different_1, dataflow_set_different_2,
14481         vt_find_locations, variable_was_changed, set_variable_part,
14482         emit_notes_for_differences_1, emit_notes_for_differences_2): Likewise.
14483         * varasm.c (prefix_name, emutls_decl, section_entry_eq,
14484         section_entry_hash, object_block_entry_eq,
14485         object_block_entry_hash, create_block_symbol,
14486         initialize_cold_section_name, default_function_rodata_section,
14487         strip_reg_name, set_user_assembler_name, const_desc_eq,
14488         build_constant_desc, output_constant_def, lookup_constant_def,
14489         const_desc_rtx_hash, const_desc_rtx_eq, const_rtx_hash_1,
14490         create_constant_pool, force_const_mem, compute_reloc_for_rtx_1,
14491         default_internal_label): Likewise.
14492         * varray.c (varray_init, varray_grow): Likewise.
14493         * vec.c (vec_gc_o_reserve_1, vec_heap_o_reserve_1): Likewise.
14494
14495 2008-06-20  Uros Bizjak  <ubizjak@gmail.com>
14496
14497         * config/i386/i386.md (*jcc_fused_1): Handle all valid compare
14498         operators for "test" insn.  Macroize insn using SWI mode macro.
14499         (*jcc_fused_2): Ditto.
14500         (*jcc_fused_3): Macroize insn using SWI mode macro.
14501         (*jcc_fused_4): Ditto.
14502
14503 2008-06-20  Bernhard Fischer  <aldot@gcc.gnu.org>
14504
14505         * tree-ssa-pre.c: Fix typo in comment.
14506         (init_antic, fini_antic): Add explicit funtions for
14507         initializing and deinitializing ANTIC and AVAIL sets.
14508         (create_expression_by_pieces): Fix typo in comment.
14509         Remove redundant set of new_stuff and use NULL_TREE instead of NULL.
14510         (execute_pre): Eventually dump details about ANTIC_IN.
14511
14512 2008-06-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14513
14514         * collect2.c (main, add_to_list): Fix for -Wc++-compat.
14515         * gcc.c (translate_options, init_spec, store_arg, read_specs,
14516         add_to_obstack, file_at_path, find_a_file, execute,
14517         add_preprocessor_option, add_assembler_option, add_linker_option,
14518         process_command, insert_wrapper, do_option_spec, do_self_spec,
14519         spec_path, do_spec_1, is_directory, main, used_arg,
14520         getenv_spec_function): Likewise.
14521         * tlink.c (symbol_hash_lookup, file_hash_lookup,
14522         demangled_hash_lookup, symbol_push, file_push, frob_extension):
14523         Likewise.
14524
14525 2008-06-19  Kenneth Zadeck <zadeck@naturalbridge.com>
14526
14527         * doc/rtl.texi: Updated subreg section.
14528
14529 2008-06-19  Jakub Jelinek  <jakub@redhat.com>
14530
14531         PR c++/36523
14532         * cgraphunit.c (cgraph_process_new_functions): Don't clear
14533         node->needed and node->reachable.
14534         * cgraphbuild.c (record_reference): Handle OMP_PARALLEL and OMP_TASK.
14535         * omp-low.c (delete_omp_context): Call finalize_task_copyfn.
14536         (expand_task_call): Don't call expand_task_copyfn.
14537         (expand_task_copyfn): Renamed to...
14538         (finalize_task_copyfn): ... this.
14539
14540 2008-06-19  Jan Hubicka  <jh@suse.cz>
14541
14542         * builtins.c (expand_builtin_nonlocal_goto): Stabilize r_sp before
14543         clobbering framepointer.
14544
14545 2008-06-19  Jan Hubicka  <jh@suse.cz>
14546
14547         * tree-optimize.c (execute_early_local_optimizations): Set
14548         cgraph_state only at first invocation.
14549
14550 2008-06-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14551
14552         * system.h (-Wc++-compat): Activate as a warning, no an error.
14553
14554 2008-06-19  Uros Bizjak  <ubizjak@gmail.com>
14555
14556         * config/i386/i386.md (*jcc_fused_1): Use ASM_COMMENT_START
14557         instead of "#" in insn asm template.
14558         (*jcc_fused_2): Ditto.
14559
14560 2008-06-19  Uros Bizjak  <ubizjak@gmail.com>
14561
14562         * config/i386/i386.h (ix86_tune_indices)
14563         [X86_TUNE_FUSE_CMP_AND_BRANCH]: New.
14564         (TARGET_FUSE_CMP_AND_BRANCH): New define.
14565         * config/i386/i386.md (*jcc_fused_1): New insn pattern
14566         (*jcc_fused_2): Ditto.
14567         * config/i386/i386.c (ix86_tune_features): Add m_CORE2 to
14568         X86_TUNE_FUSE_CMP_AND_BRANCH targets.
14569         (print operand): Handle 'E' and 'e' code.
14570
14571 2008-06-19  Anatoly Sokolov  <aesok@post.ru>
14572
14573         * config/avr/avr.c (avr_mcu_t): Add attiny13a.
14574         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
14575         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
14576
14577 2008-06-19  Bernhard Fischer  <aldot@gcc.gnu.org>
14578
14579         * cgraphunit.c (cgraph_finalize_function): Remove redundant setting of
14580         node->decl.
14581         (cgraph_expand_function): Use local copy of decl.
14582         (cgraph_expand_all_functions): Remove redundant initialization of
14583         order_pos.
14584         (cgraph_optimize): Reword internal_error message.
14585
14586 2008-06-19  Chung-Lin Tang  <ctang@marvell.com>
14587
14588         * arm-protos.h (arm_return_in_memory): Remove public
14589         arm_return_in_memory() prototype.
14590         * arm.c (arm_return_in_memory): Add static prototype, add target
14591         hook macro, change definition and comments.
14592         * arm.h (TARGET_RETURN_IN_MEMORY): Remove.
14593
14594 2008-06-19  Ben Elliston  <bje@au.ibm.com>
14595
14596         * dfp.h, dfp.c, config/dfp-bit.h, config/dfp-bit.c, real.h,
14597         real.c: Remove references to IEEE 754R.
14598         * doc/install.texi (Configuration): IEEE 754R -> IEEE 754-2008.
14599         * doc/libgcc.texi (Decimal float library routines): Likewise.
14600
14601 2008-06-18  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
14602
14603         * targhooks.h (struct gcc_target): New member unwind_word_mode.
14604         (default_unwind_word_mode): Add prototype.
14605         * targhooks.c (default_unwind_word_mode): New function.
14606         (default_eh_return_filter_mode): Return targetm.unwind_word_mode ()
14607         instead of word_mode.
14608         * target-def.h (TARGET_UNWIND_WORD_MODE): New macro.
14609         (TARGET_INITIALIZER): Use it.
14610
14611         * c-common.c (handle_mode_attribute): Support "unwind_word"
14612         mode attribute.
14613         * unwind-generic.h (_Unwind_Word, _Unwind_Sword): Use it.
14614
14615         * except.c (init_eh): Use targetm.unwind_word_mode () instead of
14616         word_mode to access SjLj_Function_Context member "data".
14617         (sjlj_emit_dispatch_table): Likewise.  Also, perform type
14618         conversion from targetm.eh_return_filter_mode () to
14619         targetm.unwind_word_mode () if they differ.
14620
14621         * builtin-types.def (BT_UNWINDWORD): New primitive type.
14622         (BT_FN_UNWINDWORD_PTR): New function type.
14623         (BT_FN_WORD_PTR): Remove.
14624         * builtins.def (BUILT_IN_EXTEND_POINTER): Use BT_FN_UNWINDWORD_PTR.
14625         * except.c (expand_builtin_extend_pointer): Convert pointer to
14626         targetm.unwind_word_mode () instead of word_mode.
14627
14628         * config/spu/spu-protos.h (spu_eh_return_filter_mode): Remove.
14629         * config/spu/spu.c (spu_eh_return_filter_mode): Remove.
14630         (spu_unwind_word_mode): New function.
14631         (TARGET_EH_RETURN_FILTER_MODE): Do not define.
14632         (TARGET_UNWIND_WORD_MODE): Define.
14633         * config/spu/t-spu-elf (TARGET_LIBGCC2_CFLAGS): Remove -D__word__=SI.
14634
14635 2008-06-18  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
14636
14637         * config/spu/spu.c (reg_align): Remove.
14638         (regno_aligned_for_load): Also accept ARG_POINTER_REGNUM.
14639         (spu_split_load): Use regno_aligned_for_load instead of reg_align.
14640         (spu_split_store): Likewise.
14641
14642 2008-06-18  Bernhard Fischer  <aldot@gcc.gnu.org>
14643
14644         * gcc/tree-vn.c: Fix typo in comment.
14645
14646 2008-06-18  Jan Hubicka  <jh@suse.cz>
14647
14648         * cgraphunit.c (cgraph_optimize): Output debug info when doing
14649         toplevel reorder too.
14650
14651 2008-06-18  Jan Hubicka  <jh@suse.cz>
14652
14653         * c-opts.c (c_common_post_options): PCH is not compatible with
14654         no-unit-at-a-time.
14655         * opts.c (handle_options): Enable unit-at-a-time at O0 along with
14656         -fno-toplevel-reorder by default now.
14657
14658 2008-06-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
14659
14660         PR documentation/30739
14661         * doc/install.texi (Prerequisites): Document dependency on awk.
14662
14663 2008-06-18  Uros Bizjak  <ubizjak@gmail.com>
14664             Ian Lance Taylor  <iant@google.com>
14665
14666         PR rtl-optimization/35604
14667         * jump.c (redirect_exp_1): Skip the condition of an IF_THEN_ELSE. We
14668         only want to change jump destinations, not eventual label comparisons.
14669
14670 2008-06-16  Jan Hubicka  <jh@suse.cz>
14671
14672         * cgraphunit.c (cgraph_expand_pending_functions): Give up at
14673         syntax errors.
14674         (cgraph_analyze_function): Likewise.
14675
14676 2008-06-16  Jan Hubicka  <jh@suse.cz>
14677
14678         * cgraph.h (cgraph_mark_if_needed): New function.
14679         * cgraphunit.c (cgraph_mark_if_needed): New function.
14680         * c-decl.c (duplicate_decl): Use it.
14681
14682 2008-06-16  Jan Hubicka  <jh@suse.cz>
14683
14684         * cgraph.c (cgraph_add_new_function): When in expansion state, do
14685         lowering.
14686
14687 2008-06-16  Jan Hubicka  <jh@suse.cz>
14688
14689         * tree-outof-ssa.c (pass_out_of_ssa): Do not depend on PROP_alias.
14690
14691 2008-06-16  Daniel Jacobowitz  <dan@codesourcery.com>
14692             Kazu Hirata  <kazu@codesourcery.com>
14693             Maxim Kuvyrkov  <maxim@codesourcery.com
14694
14695         * config.gcc (mips64el-st-linux-gnu): Use mips/st.h and mips/t-st.
14696         * config.host: Use driver-native.o and mips/x-native for mips*-linux*.
14697         * config/mips/linux.h (host_detect_local_cpu): Declare, add to
14698         EXTRA_SPEC_FUNCTIONS.
14699         (MARCH_MTUNE_NATIVE_SPECS, BASE_DRIVER_SELF_SPECS): New macros.
14700         (DRIVER_SELF_SPECS): Adjust.
14701         * config/mips/linux64.h (DRIVER_SELF_SPECS): Update.
14702         * config/mips/st.h, config/mips/t-st: New.
14703         * config/mips/driver-native.c, config/mips/x-native: New.
14704         * doc/invoke.texi (MIPS): Document 'native' value for -march and
14705         -mtune options.
14706
14707 2008-06-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
14708
14709         * config/mips/mips.h (ISA_HAS_CONDMOVE): Slice ISA_HAS_FP_CONDMOVE
14710         from it.
14711         (ISA_HAS_FP_CONDMOVE): New macro.
14712         (ISA_HAS_FP_MADD4_MSUB4, ISA_HAS_FP_MADD3_MSUB3): New macros.
14713         (ISA_HAS_NMADD_NMSUB): Rename to ISA_HAS_NMADD4_NMSUB4.
14714         (ISA_HAS_NMADD3_NMSUB3): New macro.
14715         * config/mips/mips.c (mips_rtx_costs): Update.
14716         * config/mips/mips.md (MOVECC): Don't use FP conditional moves when
14717         compiling for ST Loongson 2E/2F.
14718         (madd<mode>): Rename to madd4<mode>.  Update.
14719         (madd3<mode>): New pattern.
14720         (msub<mode>): Rename to msub4<mode>.  Update.
14721         (msub3<mode>): New pattern.
14722         (nmadd<mode>): Rename to nmadd4<mode>.  Update.
14723         (nmadd3<mode>): New pattern.
14724         (nmadd<mode>_fastmath): Rename to nmadd4<mode>_fastmath.  Update.
14725         (nmadd3<mode>_fastmath): New pattern.
14726         (nmsub<mode>): Rename to nmsub4<mode>.  Update.
14727         (nmsub3<mode>): New pattern.
14728         (nmsub<mode>_fastmath): Rename to nmsub4<mode>_fastmath.  Update.
14729         (nmsub3<mode>_fastmath): New pattern.
14730         (mov<SCALARF:mode>_on_<MOVECC:mode>, mov<mode>cc): Update.
14731
14732 2008-06-18  Steven Bosscher  <steven@gcc.gnu.org>
14733
14734         * df.h (struct df_ref): Replace 'insn' field with 'insn_info' field.
14735         (DF_REF_INSN_INFO): New.
14736         (DF_REF_INSN, DF_REF_INSN_UID): Rewrite macros using DF_REF_INSN_INFO.
14737         (DF_REF_IS_ARTIFICIAL): Artificial refs are now identified as refs
14738         with a NULL DF_REF_INSN_INFO.
14739         (DF_INSN_INFO_GET, DF_INSN_INFO_SET): Renamed from DF_INSN_GET and
14740         DF_INSN_SET.
14741         (DF_INSN_INFO_LUID, DF_INSN_INFO_DEFS, DF_INSN_INFO_USES,
14742         DF_INSN_INFO_EQ_USES): New.
14743         (DF_INSN_LUID, DF_INSN_DEFS, DF_INSN_USES, DF_INSN_EQ_USES,
14744         DF_INSN_UID_LUID, DF_INSN_UID_DEFS, DF_INSN_UID_USES,
14745         DF_INSN_UID_EQ_USES): Rewrite using DF_INSN_INFO_* macros.
14746         * df-core.c: Update comment for above changes.
14747         (df_insn_debug_regno): Use DF_INSN_INFO_GET instead of INSN_UID and
14748         DF_INSN_UID_* macros.
14749         (df_ref_debug): Check for NULL DF_REF_INSN_INFO.
14750         * df-scan.c (df_ref_record): Take a df_insn_info instead of an
14751         insn rtx.  Update all callers.
14752         (df_def_record_1, df_defs_record, df_uses_record, df_get_call_refs,
14753         df_ref_create_structure, df_insn_refs_collect): Likewise.
14754         (df_ref_equal_p): Compare DF_REF_INSN_INFO pointers for the refs.
14755         * df-problems.c (df_chain_dump): Test for non-NULL DF_REF_INSN_INFO.
14756         (df_live_bb_local_compute): Retrieve DF_INSN_INFO, use DF_INSN_INFO_*
14757         macros to access the insn refs.
14758         (df_chain_top_dump, df_chain_bottom_dump, df_byte_lr_alloc): Likewise.
14759         * fwprop.c (use_killed_between): Use DF_REF_INSN accessor macro.
14760         (all_uses_available): Retrieve DF_INSN_INFO for def_insn, and use it
14761         for accessing the refs.
14762         (try_fwprop_subst): Likewise.
14763         * ddg.c (add_cross_iteration_register_deps): Use DF_REF_INSN macro.
14764         * web.c (union_defs): Retrieve DF_INSN_INFO for def_insn, and use it
14765         for accessing the refs.
14766         * loop-invariant.c (invariant_for_use): Use DF_REF_BB macro.
14767         (check_dependencies): Use DF_INSN_INFO_GET, use DF_INSN_INFO_* macros
14768         to look at the insn refs.
14769         (record_uses): Likewise.
14770         * dce.c (deletable_insn_p): Don't tolerate artificial DEFs in this
14771         function anymore.
14772         (mark_artificial_uses): Don't mark_insn for artificial refs.
14773         (mark_reg_rependencies): Likewise.
14774
14775         * doc/rtl.texi: Remove documentation of ADDRESSOF.
14776
14777 2008-06-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
14778
14779         * configure: Regenerate.
14780
14781 2008-06-17  Eric B. Weddington  <eric.weddington@atmel.com>
14782
14783         * config/avr/avr.c (avr_mcu_t): Remove atmega32hvb.
14784         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
14785         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
14786
14787 2008-06-17  Eric B. Weddington  <eric.weddington@atmel.com>
14788
14789         * config/avr/avr.c (avr_mcu_t): Add attiny167.
14790         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
14791         * gcc/config/avr/t-avr (MULTILIB_MATCHES): Likewise.
14792
14793 2008-06-17  Eric B. Weddington  <eric.weddington@atmel.com>
14794
14795         * config/avr/avr.c (avr_mcu_t): Add atmega32u4.
14796         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
14797         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
14798
14799 2008-06-17  Bernhard Fischer  <aldot@gcc.gnu.org>
14800
14801         * tree-ssa-sccvn.c: Fix format of comments.
14802
14803 2008-06-17  Bernhard Fischer  <aldot@gcc.gnu.org>
14804
14805         * cgraph.c: Remove unneeded forward declarations of eq_node()
14806         and hash_node().
14807
14808 2008-06-17  Steven Bosscher  <steven@gcc.gnu.org>
14809
14810         * see.c (see_analyse_one_def): Do not look for REG_LIBCALL and
14811         REG_RETVAL notes.
14812         (see_update_relevancy): Likewise.
14813         * fwprop.c (try_fwprop_subst): Likewise.
14814         * rtlanal.c (noop_move_p): Likewise.
14815         * builtins.c (expand_buitlin_mathfn): Don't try to add REG_EQUAL
14816         notes to non-existing libcall blocks.
14817         * cse.c (cse_insn): Change prototype.  Don't update libcall notes.
14818         Remove orig_set.
14819         (cse_extended_basic_block): Don't track libcall and no-conflict notes.
14820         (dead_libcall_p): Remove.
14821         (delete_trivially_dead_insns): Don't use it.
14822         * web.c (union_defs): Remove comment about keeping nops.
14823         * gcse.c (hash_scan_insn): Don't take libcall pointers.
14824         (compute_hash_table_work): Don't track libcall notes.
14825         (do_local_cprop): Don't take libcall pointers.  Don't update
14826         libcall notes.
14827         (adjust_libcall_notes): Deleted.
14828         (local_cprop_pass): Remove stack for nested libcalls (which shouldn't
14829         ever have existed in the first place).
14830         (replace_store_insn): Don't try to remove libcall notes.
14831         * lower-subreg.c (move_libcall_note, move_retval_note): Deleted.
14832         (resolve_reg_notes): Don't call them.
14833         (resolve_simple_move): Likewise.
14834         (decompose_multiword_subregs): Remove block handling REG_RETVAL notes.
14835         Don't remove REG_RETVAL notes.
14836         * emit-rtl.c (try_split): Don't update libcall notes.
14837         (emit_copy_of_insn_after): Dito.
14838         * cselib.c (cselib_current_insn_in_libcall): Remove.
14839         (cselib_process_insn): Don't set/clear it.
14840         (new_elt_loc_list): Don't record it.
14841         (cselib_init): Don't initialize it.
14842         * cselib.c (struct elt_loc_list): Remove in_libcall field.
14843         * loop-invariant.c (find_invariant_insn): Don't look for libcall
14844         notes.
14845         * sched-deps.c (sched_analyze_insn): Don't group libcall blocks.
14846         (sched_analyze): Don't set up deps->libcall_block_tail_insn.
14847         (init_deps): Don't initialize it.
14848         * sched-int.h (struct deps): Rremove libcall_block_tail_insn field.
14849         * combine.c (delete_noop_moves): Don't update libcall notes.
14850         (can_combine_p): Remove now pointless #if 0 block.
14851         (try_combine): Remove another obsolete #if 0 block.
14852         (distribute_notes): Don't distribute libcall notes.
14853         * reg-notes.def (REG_LIBCALL, REG_RETVAL): Remove.
14854         * dce.c (libcall_dead_p): Remove.
14855         (delete_unmarked_insns): Don't handle libcall blocks.
14856         (preserve_libcall_for_dce): Remove.
14857         (prescan_insns_for_dce): Don't special-case libcall block insns.
14858         * reload1 (reload): Don't handle libcall notes.
14859         * doc/rtl.texi (REG_LIBCALL, REG_RETVAL, REG_LIBCALL_ID): Remove
14860         documentation.
14861
14862 2008-06-16  Eric B. Weddington  <eric.weddington@atmel.com>
14863
14864         * config/avr/avr.c (avr_mcu_t): Add atmega32c1.
14865         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
14866         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
14867
14868 2008-06-16  Eric B. Weddington  <eric.weddington@atmel.com>
14869
14870         * config/avr/avr.c (avr_mcu_t): Add atmega32m1.
14871         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
14872         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
14873
14874 2008-06-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
14875
14876         * Makefile.in (FLAGS_TO_PASS): Add $(datarootdir).
14877
14878 2008-06-16  Ira Rosen  <irar@il.ibm.com>
14879
14880         PR tree-optimization/36493
14881         * tree-vect-transform.c (vect_create_data_ref_ptr): Remove TYPE from
14882         the arguments list. Use VECTYPE to create vector pointer.
14883         (vectorizable_store): Fail if accesses through a pointer to vectype
14884         do not alias the original memory reference operands.
14885         Call vect_create_data_ref_ptr without the removed argument.
14886         (vectorizable_load): Likewise.
14887         (vect_setup_realignment): Call vect_create_data_ref_ptr without the
14888         removed argument.
14889
14890 2008-06-015  Andy Hutchinson  <hutchinsonandy@aim.com>
14891
14892         PR target/36336
14893         * config/avr/avr.h (LEGITIMIZE_RELOAD_ADDRESS): Add check for
14894         reg_equiv_constant.
14895
14896 2008-06-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
14897
14898         * config/mips/loongson2ef.md: New file.
14899         * config/mips/mips.md (UNSPEC_LOONGSON_ALU1_TURN_ENABLED_INSN)
14900         (UNSPEC_LOONGSON_ALU2_TURN_ENABLED_INSN)
14901         (UNSPEC_LOONGSON_FALU1_TURN_ENABLED_INSN)
14902         (UNSPEC_LOONGSON_FALU2_TURN_ENABLED_INSN): New constants.
14903         (define_attr "cpu"): Rename loongson2e and loongson2f to loongson_2e
14904         and loongson_2f.
14905         (loongson2ef.md): New include.
14906         * config/mips/loongson.md (vec_pack_ssat_<mode>, vec_pack_usat_<mode>)
14907         (add<mode>3, paddd, ssadd<mode>3, usadd<mode>3)
14908         (loongson_and_not_<mode>, loongson_average_<mode>, loongson_eq_<mode>)
14909         (loongson_gt_<mode>, loongson_extract_halfword)
14910         (loongson_insert_halfword_0, loongson_insert_halfword_2)
14911         (loongson_insert_halfword_3, loongson_mult_add, smax<mode>3)
14912         (umax<mode>3, smin<mode>3, umin<mode>3, loongson_move_byte_mask)
14913         (umul<mode>3_highpart, smul<mode>3_highpart, loongson_smul_lowpart)
14914         (loongson_umul_word, loongson_pasubub, reduc_uplus_<mode>)
14915         (loongson_psadbh, loongson_pshufh, loongson_psll<mode>)
14916         (loongson_psra<mode>, loongson_psrl<mode>, sub<mode>3, psubd)
14917         (sssub<mode>3, ussub<mode>3, vec_interleave_high<mode>)
14918         (vec_interleave_low<mode>): Define type attribute.
14919         * config/mips/mips.c (mips_ls2): New static variable.
14920         (mips_issue_rate): Update to handle tuning for Loongson 2E/2F.
14921         (mips_ls2_init_dfa_post_cycle_insn, mips_init_dfa_post_cycle_insn)
14922         (sched_ls2_dfa_post_advance_cycle, mips_dfa_post_advance_cycle):
14923         Implement target scheduling hooks.
14924         (mips_multipass_dfa_lookahead): Update to handle tuning for
14925         Loongson 2E/2F.
14926         (mips_sched_init): Initialize data for Loongson scheduling.
14927         (mips_ls2_variable_issue): New static function.
14928         (mips_variable_issue): Update to handle tuning for Loongson 2E/2F.
14929         Add sanity check.
14930         (TARGET_SCHED_INIT_DFA_POST_CYCLE_INSN)
14931         (TARGET_SCHED_DFA_POST_ADVANCE_CYCLE): Override target hooks.
14932         * config/mips/mips.h (TUNE_LOONGSON_2EF): New macros.
14933         (ISA_HAS_XFER_DELAY, ISA_HAS_FCMP_DELAY, ISA_HAS_HILO_INTERLOCKS):
14934         Handle ST Loongson 2E/2F cores.
14935         (CPU_UNITS_QUERY): Define macro to enable querying of DFA units.
14936
14937 2008-06-15  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
14938
14939         * omp-low.c (extract_omp_for_data): Fix comment typo.
14940         * c.opt: Fix typo.
14941
14942 2008-06-15  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
14943
14944         * doc/sourcebuild.texi (Config Fragments): Remove obsolete
14945         FIXME note about gcc/config.guess.
14946         * doc/options.texi (Option file format): Remove non-ASCII bytes.
14947         * doc/cpp.texi: Expand TABs, drop indentation outside examples.
14948         * doc/cppopts.texi: Likewise.
14949         * doc/extend.texi: Likewise.
14950         * doc/gcc.texi: Likewise.
14951         * doc/gccint.texi: Likewise.
14952         * doc/gcov.texi: Likewise.
14953         * doc/gty.texi: Likewise.
14954         * doc/hostconfig.texi: Likewise.
14955         * doc/install.texi: Likewise.
14956         * doc/invoke.texi: Likewise.
14957         * doc/loop.texi: Likewise.
14958         * doc/makefile.texi: Likewise.
14959         * doc/md.texi: Likewise.
14960         * doc/passes.texi: Likewise.
14961         * doc/tm.texi: Likewise.
14962         * doc/tree-ssa.texi: Likewise.
14963         * doc/trouble.texi: Likewise.
14964
14965 2008-06-15  Mark Shinwell  <shinwell@codesourcery.com>
14966             Nathan Sidwell  <nathan@codesourcery.com>
14967             Maxim Kuvyrkov  <maxim@codesourcery.com>
14968             Richard Sandiford  <rdsandiford@googlemail.com>
14969
14970         * config/mips/mips-modes.def: Add V8QI, V4HI and V2SI modes.
14971         * config/mips/mips-protos.h (mips_expand_vector_init): New.
14972         * config/mips/mips-ftypes.def: Add function types for Loongson-2E/2F
14973         builtins.
14974         * config/mips/mips.c (mips_split_doubleword_move): Handle new modes.
14975         (mips_hard_regno_mode_ok_p): Allow 64-bit vector modes for Loongson.
14976         (mips_vector_mode_supported_p): Add V2SImode, V4HImode and
14977         V8QImode cases.
14978         (LOONGSON_BUILTIN, LOONGSON_BUILTIN_ALIAS): New.
14979         (CODE_FOR_loongson_packsswh, CODE_FOR_loongson_packsshb,
14980         (CODE_FOR_loongson_packushb, CODE_FOR_loongson_paddw,
14981         (CODE_FOR_loongson_paddh, CODE_FOR_loongson_paddb,
14982         (CODE_FOR_loongson_paddsh, CODE_FOR_loongson_paddsb)
14983         (CODE_FOR_loongson_paddush, CODE_FOR_loongson_paddusb)
14984         (CODE_FOR_loongson_pmaxsh, CODE_FOR_loongson_pmaxub)
14985         (CODE_FOR_loongson_pminsh, CODE_FOR_loongson_pminub)
14986         (CODE_FOR_loongson_pmulhuh, CODE_FOR_loongson_pmulhh)
14987         (CODE_FOR_loongson_biadd, CODE_FOR_loongson_psubw)
14988         (CODE_FOR_loongson_psubh, CODE_FOR_loongson_psubb)
14989         (CODE_FOR_loongson_psubsh, CODE_FOR_loongson_psubsb)
14990         (CODE_FOR_loongson_psubush, CODE_FOR_loongson_psubusb)
14991         (CODE_FOR_loongson_punpckhbh, CODE_FOR_loongson_punpckhhw)
14992         (CODE_FOR_loongson_punpckhwd, CODE_FOR_loongson_punpcklbh)
14993         (CODE_FOR_loongson_punpcklhw, CODE_FOR_loongson_punpcklwd): New.
14994         (mips_builtins): Add Loongson builtins.
14995         (mips_loongson_2ef_bdesc): New.
14996         (mips_bdesc_arrays): Add mips_loongson_2ef_bdesc.
14997         (mips_builtin_vector_type): Handle unsigned versions of vector modes.
14998         (MIPS_ATYPE_UQI, MIPS_ATYPE_UDI, MIPS_ATYPE_V2SI, MIPS_ATYPE_UV2SI)
14999         (MIPS_ATYPE_V4HI, MIPS_ATYPE_UV4HI, MIPS_ATYPE_V8QI, MIPS_ATYPE_UV8QI):
15000         New.
15001         (mips_expand_vector_init): New.
15002         * config/mips/mips.h (HAVE_LOONGSON_VECTOR_MODES): New.
15003         (TARGET_CPU_CPP_BUILTINS): Define __mips_loongson_vector_rev
15004         if appropriate.
15005         * config/mips/mips.md: Add unspec numbers for Loongson
15006         builtins.  Include loongson.md.
15007         (MOVE64): Include Loongson vector modes.
15008         (SPLITF): Include Loongson vector modes.
15009         (HALFMODE): Handle Loongson vector modes.
15010         * config/mips/loongson.md: New.
15011         * config/mips/loongson.h: New.
15012         * config.gcc: Add loongson.h header for mips*-*-* targets.
15013         * doc/extend.texi (MIPS Loongson Built-in Functions): New.
15014
15015 2008-06-14  Joseph Myers  <joseph@codesourcery.com>
15016
15017         * config.gcc (arc-*-elf*, avr-*-*, fr30-*-elf, frv-*-elf,
15018         h8300-*-elf*, h8300-*-*, i[34567]86-*-elf*, x86_64-*-elf*,
15019         i[34567]86-*-aout*, i[34567]86-*-coff*, ia64*-*-elf*,
15020         iq2000*-*-elf*, m32r-*-elf*, m32rle-*-elf*, m32r-*-linux*,
15021         m32rle-*-linux*, m68hc11-*-*|m6811-*-*, m68hc12-*-*|m6812-*-*,
15022         m68k-*-coff*, mcore-*-elf, mcore-*-pe*, mipsisa64sr71k-*-elf*,
15023         mipsisa64sb1-*-elf* | mipsisa64sb1el-*-elf*, mips-*-elf* |
15024         mipsel-*-elf*, mips64-*-elf* | mips64el-*-elf*, mips64vr-*-elf* |
15025         mips64vrel-*-elf*, mips64orion-*-elf* | mips64orionel-*-elf*,
15026         mipstx39-*-elf* | mipstx39el-*-elf*, mn10300-*-*, pdp11-*-,
15027         powerpc-*-elf*, powerpcle-*-elf*, sh-*-elf* | sh[12346l]*-*-elf* |
15028         sh-*-symbianelf* | sh[12346l]*-*-symbianelf* | sh-*-linux* |
15029         sh[2346lbe]*-*-linux* | sh-*-netbsdelf* | shl*-*-netbsdelf* |
15030         sh5-*-netbsd* | sh5l*-*-netbsd* | sh64-*-netbsd* |
15031         sh64l*-*-netbsd*, sh-*-*, sparc-*-elf*, sparc64-*-elf*,
15032         v850e1-*-*, v850e-*-*, v850-*-*, xstormy16-*-elf, m32c-*-elf*):
15033         Remove use_fixproto=yes.
15034         (ia64*-*-hpux*): Remove comment about using fixproto.
15035         (m68k-*-uclinuxoldabi*, m68k-*-uclinux*): Remove use_fixproto=no.
15036
15037 2008-06-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
15038
15039         * configure.ac: Update gthr-default.h lazily, to avoid unneeded
15040         library rebuilds.
15041         * configure: Regenerate.
15042
15043 2008-06-13  Eric Botcazou  <ebotcazou@adacore.com>
15044
15045         PR middle-end/36520
15046         * builtins.c (get_memory_rtx): Test for the presence of DECL_SIZE_UNIT
15047         before evaluating it.
15048
15049 2008-06-13  Jakub Jelinek  <jakub@redhat.com>
15050
15051         PR c/36507
15052         * c-decl.c (merge_decls): Don't clear DECL_EXTERNAL for
15053         nested inline functions.
15054         (start_decl, start_function): Don't invert DECL_EXTERNAL
15055         for nested inline functions.
15056
15057 2008-06-13  Richard Sandiford  <rdsandiford@googlemail.com>
15058
15059         * config/mips/mips.md: Remove TARGET_DEBUG_D_MODE conditions from
15060         splits that must be made for correctness.
15061
15062 2008-06-13  Richard Sandiford  <rdsandiford@googlemail.com>
15063
15064         * config/mips/mips.c (BUILTIN_AVAIL_NON_MIPS16): New macro.
15065         (AVAIL_NON_MIPS16): Likewise.
15066         (mips_builtin_description): Replace target_flags with a predicate.
15067         (paired_single, sb1_paired_single, mips3d, dsp, dspr2, dsp_32)
15068         (dspr2_32): New availability predicates.
15069         (MIPS_BUILTIN): New macro.
15070         (DIRECT_BUILTIN, CMP_SCALAR_BUILTINS, CMP_PS_BUILTINS)
15071         (CMP_4S_BUILTINS, MOVTF_BUILTINS, CMP_BUILTINS)
15072         (DIRECT_NO_TARGET_BUILTIN, BPOSGE_BUILTIN): Use it.
15073         Replace the TARGET_FLAGS parameters with AVAIL parameters.
15074         (mips_ps_bdesc, mips_sb1_bdesc, mips_dsp_bdesc)
15075         (mips_dsp_32only_bdesc): Merge into...
15076         (mips_builtins): ...this new array.
15077         (mips_bdesc_map, mips_bdesc_arrays): Delete.
15078         (mips_init_builtins): Update after above changes.
15079         (mips_expand_builtin_1): Merge into...
15080         (mips_expand_builtin): ...here and update after above changes.
15081
15082 2008-06-12  Paul Brook  <paul@codesourcery.com>
15083
15084         * longlong.h (__arm__): Define count_leading_zeros.
15085         * config/arm/lib1funcs.asm (xxh, xxl, yyh, yyl): Define.
15086         (clzsi2, clzdi2): New functions.
15087         * config/arm/bpabi-v6m.S (xxh, xxl, yyh, yyl): Remove.
15088         * config/arm/bpabi.S (xxh, xxl, yyh, yyl): Remove.
15089         * config/arm/t-strongarm-elf (LIB1ASMFUNCS): Ditto.
15090         * config/arm/t-vxworks (LIB1ASMFUNCS): Ditto.
15091         * config/arm/t-pe (LIB1ASMFUNCS): Ditto.
15092         * config/arm/t-arm-elf (LIB1ASMFUNCS): Ditto.
15093         * config/arm/t-arm-coff (LIB1ASMFUNCS): Ditto.
15094         * config/arm/t-linux (LIB1ASMFUNCS): Ditto.
15095         * config/arm/t-symbian (LIB1ASMFUNCS): Ditto.
15096         * config/arm/t-wince-pe (LIB1ASMFUNCS): Ditto.
15097
15098 2008-06-12  Kazu Hirata  <kazu@codesourcery.com>
15099
15100         * config/m68k/m68k.c (m68k_tune_flags): New.
15101         (override_options): Compute m68k_tune_flags.
15102         (MULL_COST, MULW_COST): Update for various variants of CFV2.
15103         * config/m68k/m68k.h (TUNE_MAC, TUNE_EMAC): New.
15104
15105 2008-06-12  Jakub Jelinek  <jakub@redhat.com>
15106
15107         PR middle-end/36506
15108         * omp-low.c (expand_omp_sections): Initialize l2 to avoid bogus warning.
15109
15110 2008-06-12  Eric Botcazou  <ebotcazou@adacore.com>
15111
15112         * tree-inline.c (copy_body_r): Copy TREE_SIDE_EFFECTS along with
15113         TREE_THIS_VOLATILE on INDIRECT_REF nodes.
15114
15115 2008-06-12  Eric Botcazou  <ebotcazou@adacore.com>
15116
15117         * expr.c (store_field): Do a block copy from BLKmode to BLKmode-like.
15118         (get_inner_reference): Use BLKmode for byte-aligned BLKmode bitfields.
15119
15120 2008-06-12  Jakub Jelinek  <jakub@redhat.com>
15121
15122         PR middle-end/36506
15123         * omp-low.c (expand_omp_sections): Handle #pragma omp sections with
15124         reductions.
15125
15126 2008-06-12  Richard Guenther  <rguenther@suse.de>
15127
15128         PR tree-optimization/36345
15129         * tree-flow.h (struct ptr_info_def): Align escape_mask,
15130         add memory_tag_needed flag.
15131         (may_alias_p): Declare.
15132         * tree-ssa-alias.c (may_alias_p): Export.
15133         (set_initial_properties): Use memory_tag_needed flag.
15134         (update_reference_counts): Likewise.
15135         (reset_alias_info): Reset memory_tag_needed flag.
15136         (create_name_tags): Check memory_tag_needed flag.
15137         (dump_points_to_info_for): Dump it.
15138         * tree-ssa-structalias.c (struct variable_info): Remove
15139         directly_dereferenced flag.
15140         (new_var_info): Do not initialize it.
15141         (process_constraint_1): Do not set it.
15142         (update_alias_info): Set is_dereferenced flag.
15143         (set_uids_in_ptset): Use may_alias_p.
15144         (set_used_smts): Check memory_tag_needed flag.
15145         (find_what_p_points_to): Likewise.  Pass is_dereferenced flag.
15146         * tree-ssa-alias.c (verify_flow_sensitive_alias_info): Check
15147         memory_tag_needed flag.
15148         * tree-ssa-alias-warnings.c (dsa_named_for): Try to recover
15149         from broken design.
15150
15151 2008-06-12  Kai Tietz  <kai.tietz@onevision.com>
15152
15153         * config/i386/i386.c (ix86_compute_frame_layout): Disable
15154         red zone for w64 abi.
15155         (ix86_expand_prologue): Likewise.
15156         (ix86_force_to_memory): Likewise.
15157         (ix86_free_from_memory): Likewise.
15158
15159 2008-06-11  Edmar Wienskoski  <edmar@freescale.com>
15160
15161         PR target/36425
15162         * config/rs6000/rs6000.c (rs6000_override_options): Set
15163         rs6000_isel conditionally to the absence of comand line override.
15164         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
15165         Remove duplicate rs6000_isel setting.
15166         * config/rs6000/eabispe.h: Ditto.
15167
15168 2008-06-11  Richard Guenther  <rguenther@suse.de>
15169
15170         * alias.c (get_alias_set): Use the element alias-set for arrays.
15171         (record_component_aliases): For arrays and vectors do nothing.
15172         * c-common.c (strict_aliasing_warning): Handle the cases
15173         of alias set zero explicitly.
15174         * Makefile.in (dfp.o-warn): Add -Wno-error.
15175
15176 2008-06-11  Joseph Myers  <joseph@codesourcery.com>
15177
15178         * config.gcc (all_defaults): Add arch_32 arch_64 cpu_32 cpu_64
15179         tune_32 tune_64.
15180         (i[34567]86-*-* | x86_64-*-*): Add arch_32 arch_64 cpu_32 cpu_64
15181         tune_32 tune_64 to supported_defaults.  Allow values not
15182         supporting 64-bit mode for arch_32, cpu_32 and tune_32 for
15183         x86_64.  Do not override cpu_32 or cpu_64 values from target name.
15184         (i[34567]86-*-linux*, i[34567]86-*-solaris2.1[0-9]*): Only default
15185         with_cpu_64 to generic for 64-bit-supporting configurations, not
15186         with_cpu.  Remove FIXMEs.
15187         * doc/install.texi (--with-cpu-32, --with-cpu-64, --with-arch-32,
15188         --with-arch-64, --with-tune-32, --with-tune-64): Document.
15189         * config/i386/i386.h (OPT_ARCH32, OPT_ARCH64): Define.
15190         (OPTION_DEFAULT_SPECS): Add tune_32, tune_64, cpu_32, cpu_64,
15191         arch_32 and arch_64.
15192
15193 2008-06-11  Eric Botcazou  <ebotcazou@adacore.com>
15194             Olivier Hainque  <hainque@adacore.com>
15195
15196         * builtins.c (get_memory_rtx): Accept byte-addressable bitfields.
15197         Use DECL_SIZE_UNIT to retrieve the size of the field.
15198
15199 2008-06-11  Joseph Myers  <joseph@codesourcery.com>
15200
15201         * config/arm/arm.c (arm_init_neon_builtins): Move initialization
15202         with function calls after declarations.  Lay out
15203         neon_float_type_node before further use.
15204
15205 2008-06-11  Richard Guenther  <rguenther@suse.de>
15206
15207         * tree-flow.h (may_point_to_global_var): Declare.
15208         * tree-ssa-alias.c (may_point_to_global_var): New function.
15209         * tree-ssa-sink.c (is_hidden_global_store): Use it.
15210
15211 2008-06-10  Kazu Hirata  <kazu@codesourcery.com>
15212
15213         * configure.ac: Teach that fido supports .debug_line.
15214         * configure: Regenerate.
15215
15216 2008-06-10  Tom Tromey  <tromey@redhat.com>
15217
15218         * c-lex.c (fe_file_change): Pass SOURCE_LINE to start_source_file
15219         debug hook.
15220
15221 2008-06-10  Joseph Myers  <joseph@codesourcery.com>
15222
15223         * dfp.c (WORDS_BIGENDIAN): Define to 0 if not defined.
15224         (encode_decimal64, decode_decimal64, encode_decimal128,
15225         decode_decimal128): Reverse order of 32-bit parts of value if host
15226         and target endianness differ.
15227
15228 2008-06-10  Vinodha Ramasamy  <vinodha@google.com>
15229
15230         * value_prob.c (tree_divmod_fixed_value_transform): Use gcov_type.
15231         Avoid division by 0.
15232         (tree_mod_pow2_value_transform): Likewise.
15233         (tree_ic_transform): Likewise.
15234         (tree_stringops_transform): Likewise.
15235         (tree_mod_subtract_transform): Likewise.
15236         * tree-inline-c (copy_bb): Corrected int type to gcov_type.
15237         (copy_edges_for_bb): Likewise.
15238         (initialize_cfun): Likewise.
15239
15240 2008-06-10  Uros Bizjak  <ubizjak@gmail.com>
15241
15242         * config/i386/i386.md (*btdi_rex64): Change operand 1 predicate to
15243         nonmemory_operand. Add "N" operand constraint.
15244         (*btsi): Ditto.
15245         (*jcc_btdi_mask_rex64): New instruction and split pattern.
15246         (*jcc_btsi_mask): Ditto.
15247         (*jcc_btsi_mask_1): Ditto.
15248
15249 2008-06-10  Joseph Myers  <joseph@codesourcery.com>
15250
15251         * config/rs6000/rs6000.c (build_opaque_vector_type): Set
15252         TYPE_CANONICAL for copied element type.
15253
15254 2008-06-10  Uros Bizjak  <ubizjak@gmail.com>
15255
15256         PR target/36473
15257         * config/i386/i386.c (ix86_tune_features) [TUNE_USE_BT]:
15258         Add m_CORE2 and m_GENERIC.
15259         * config/i386/predicates.md (bt_comparison_operator): New predicate.
15260         * config/i386/i386.md (*btdi_rex64): New instruction pattern.
15261         (*btsi): Ditto.
15262         (*jcc_btdi_rex64): New instruction and split pattern.
15263         (*jcc_btsi): Ditto.
15264         (*jcc_btsi_1): Ditto.
15265         (*btsq): Fix Intel asm dialect operand order.
15266         (*btrq): Ditto.
15267         (*btcq): Ditto.
15268
15269 2008-06-09  Andy Hutchinson  <hutchinsonandy@aim.com>
15270
15271         PR middle-end/36447
15272         * simplify-rtx.c (simplify_subreg): Add check for shift count
15273         greater than size.
15274
15275 2008-06-09  Richard Sandiford  <rdsandiford@googlemail.com>
15276
15277         * doc/md.texi: Synchronize with later constraints.md change.
15278         * longlong.h (umul_ppmm): Replace the MIPS asm implementation
15279         with a C implementation.
15280         * config/mips/mips.c (mips_legitimize_move): Remove MFHI and
15281         MFLO handling.
15282         (mips_subword): Assume TImode for CONST_INTs if TARGET_64BIT.
15283         (mips_split_doubleword_move): Use special MTHI and MFHI instructions
15284         when moving to and from MD_REGNUM.
15285         (mips_output_move): Don't handle moves from GPRs to HI_REGNUM.
15286         Handle moves from LO_REGNUM to GPRs using MFLO, MACC or DMACC.
15287         Handle byte and halfword moves.
15288         (mips_hard_regno_mode_ok_p): Handle MD_REGS and DSP_ACC_REGS
15289         separately.
15290         * config/mips/constraints.md (h): Turn into NO_REGS.
15291         (l, x): Update documentation.
15292         * config/mips/mips.md (UNSPEC_MFHILO): Delete.
15293         (UNSPEC_MFHI, UNSPEC_MTHI, UNSPEC_SET_HILO): New.
15294         (UNSPEC_TLS_LDM, UNSPEC_TLS_GET_TP): Renumber.
15295         (HILO): New mode iterator.
15296         (MOVE128): Add TI.
15297         (any_div): New code iterator.
15298         (u): Extend code attribute to div and udiv.
15299         (*add<mode>3_mips16, *movdi_64bit_mips16, *movsi_mips16): Use
15300         d_operand in the splitters.  Remove redundant CONST_INT checks.
15301         (mulsi3_mult3, mul<mode>3_internal, mul<mode>3_r4000, *mul_acc_si)
15302         (*macc, *msac, *msac_using_macc, *macc2, *msac2, *mul_sub_si)
15303         (*muls): Remove "=h" clobbers.  Adjust peephole2s and define_splits
15304         accordingly, using normal moves instead of unspecs to move LO into
15305         a GPR.  Use d_operand and lo_operand instead of *_REG_P checks.
15306         (<u>mulsidi3): Handle expansion in C code.
15307         (<u>mulsidi3_32bit_internal): Rename to...
15308         (<u>mulsidi3_32bit): ...this.
15309         (<u>mulsidi3_32bit_r4000): Fix insn separator.
15310         (*<u>mulsidi3_64bit): Rename to...
15311         (<u>mulsidi3_64bit): ...this.  Combine DImode "=h" and "=l" clobbers
15312         into a TImode "=x" clobber.  In the split, use an UNSPEC_SET_HILO
15313         to set LO and HI to the multiplication result.  Use a normal move
15314         for MFLO and an unspec for MFHI.
15315         (*<u>mulsidi3_64bit_parts): Replace with...
15316         (<u>mulsidi3_64bit_hilo): ...this new instruction.
15317         (<su>mulsi3_highpart): Extend to TARGET_FIX_R4000.
15318         (<su>mulsi3_highpart_internal): Turn into a define_insn_and_split
15319         and extend it to TARGET_FIX_R4000.  Store the destination in a GPR
15320         instead of HI.  Split the instruction into a separate multiplication
15321         and MFHI if !TARGET_FIX_R4000.
15322         (<su>muldi3_highpart): Likewise.
15323         (<su>mulsi3_highpart_mulhi_internal): Remove the first alternative
15324         and the "=h" clobber.
15325         (*<su>mulsi3_highpart_neg_mulhi_internal): Likewise.
15326         (<u>mulditi3): New expander.
15327         (<u>mulditi3_internal, <u>mulditi3_r4000): New patterns.
15328         (madsi): Remove "=h" clobber.
15329         (divmod<mode>4, udivmod<mode>4): Turn into define_insn_and_splits.
15330         Force the modulus result to be a GPR and split the instruction into
15331         a division followed by an MFHI after reload.
15332         (<u>divmod<GPR:mode>4_hilo_<HILO:mode>): New instruction.
15333         (*lea_high64): Use d_operand in the define_peephole2.  Likewise
15334         the MIPS16 HIGH define_split.
15335         (*movdi_32bit, *movdi_gp32_fp64, *movdi_32bit_mips16): Change type
15336         of acc<->gpr moves to "multi".
15337         (*movdi_64bit): Replace the single "x" alternative with
15338         alternatives for moving into and out of "a".
15339         (*movhi_internal, *movqi_internal): Likewise.  Use mips_output_move.
15340         (*movsi_internal): Extend the "d<-A" alternative to "d<-a".
15341         (*movdi_64bit_mips16, *movsi_mips16): Add d<-a alternatives.
15342         Use d_operand in the splitters.  Remove redundant CONST_INT checks.
15343         (*movhi_mips16, *movqi_mips16): Likewise.  Use mips_output_move.
15344         (movti): New expander.
15345         (*movti, *movti_mips16): New insns.
15346         (mfhilo_<mode>, *mfhilo_<mode>, *mfhilo_<mode>_macc): Delete.
15347         (mfhi<GPR:mode>_<HILO:mode>): New pattern.
15348         (mthi<GPR:mode>_<HILO:mode>): Likewise.
15349         * config/mips/predicates.md (fpr_operand): Delete.
15350         (d_operand): New predicate.
15351
15352 2008-06-09  Michael Meissner  <michael.meissner@amd.com>
15353
15354         * config.gcc (i[34567]86-*-*): Put test in quotes to prevent
15355         failure on some Bourne shells.
15356         (x86_64-*-*): Ditto.
15357
15358 2008-06-09  Kai Tietz  <kai.tietz@onevision.com>
15359
15360         * config/i386/cygming.h (TARGET_SUBTARGET64_DEFAULT): New.
15361
15362 2008-06-09  Eric Botcazou  <ebotcazou@libertysurf.fr>
15363
15364         * doc/install.texi (*-*-solaris2*): Remove obsolete contents.
15365         (sparc-sun-solaris2*): Likewise.
15366
15367 2008-06-09  Arnaud Charlet  <charlet@adacore.com
15368
15369         * doc/install.texi: Update requirements to build the Ada compiler.
15370
15371 2008-06-08  Steven Bosscher  <stevenb.gcc@gmail.com>
15372
15373         * df-scan.c (struct df_scan_problem_data): Remove the
15374         mw_link_pool alloc pool.
15375         (df_scan_free_internal): Don't free it.
15376         (df_scan_alloc): Don't allocate it.
15377         * df.h (struct df_link): Update comment.
15378
15379 2008-06-08  Nathan Sidwell  <nathan@codesourcery.com>
15380
15381         * except.h: Correct checks for when SJLJ exceptions must be used.
15382
15383 2008-06-08  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
15384
15385         * doc/invoke.texi (Wenum-compare): Mention that it is enabled by
15386         default.
15387
15388 2008-06-08  Joseph Myers  <joseph@codesourcery.com>
15389
15390         PR tree-optimization/36218
15391         * configure.ac: Use LDFLAGS="${LDFLAGS_FOR_BUILD}" when running
15392         configure for the build system.
15393         (BUILD_LDFLAGS): Define.
15394         * configure: Regenerate.
15395         * Makefile.in (BUILD_LDFLAGS): Define to @BUILD_LDFLAGS@.
15396
15397 2008-07-08  Anatoly Sokolov  <aesok@post.ru>
15398
15399         PR target/36424
15400         * config/avr/avr.h (HARD_REGNO_RENAME_OK): Define.
15401         * config/avr/avr.c (avr_hard_regno_rename_ok): New function.
15402         * config/avr/avr-protos.h (avr_hard_regno_rename_ok): New prototype.
15403
15404 2008-06-07  Danny Smith  <dannysmith@users.sourceforge.net>
15405
15406         * config/i386/cygming.h (MAYBE_UWIN_CPP_BUILTINS): Remove.
15407
15408 2008-06-07  Joseph Myers  <joseph@codesourcery.com>
15409
15410         * config.gcc (Obsolete configurations): Remove list of
15411         configurations.
15412         (Unsupported targets list): Add *-*-linux*aout*, *-*-linux*libc1*,
15413         *-*-solaris2.[0-6], *-*-solaris2.[0-6].*, *-*-sysv*.  Remove other
15414         targets matched by those patterns.
15415         (strongarm*-*-*, ep9312*-*-*, xscale-*-*, parisc*-*-*,
15416         m680[012]0-*-*, *-*-linux*libc1*, *-*-linux*aout*,
15417         alpha*-*-unicosmk*, strongarm*-*-freebsd*, ep9312-*-elf,
15418         arm*-*-kaos*, cris-*-aout, parisc*64*-*-linux*, parisc*-*-linux*,
15419         hppa1.1-*-pro*, hppa1.1-*-osf*, hppa1.1-*-bsd*,
15420         i[34567]86-sequent-ptx4*, i[34567]86-sequent-sysv4*,
15421         i[34567]86-*-beoself*, i[34567]86-*-beos*, i[34567]86-*-sco3.2v5*,
15422         i[34567]86-*-sysv5*, i[34567]86-*-sysv4*, i[34567]86-*-uwin*,
15423         i[34567]86-*-kaos*, m68020-*-elf*, m68010-*-netbsdelf*,
15424         mips-wrs-windiss, mt-*-elf, powerpc-*-beos*, powerpc-*-chorusos*,
15425         powerpc-wrs-windiss*, powerpcle-*-sysv*, powerpc-*-kaos*,
15426         powerpcle-*-kaos*, sh*-*-kaos*, sparc-*-sysv4*, strongarm-*-elf*,
15427         strongarm-*-pe, strongarm-*-kaos*, vax-*-bsd*, vax-*-sysv*,
15428         vax-*-ultrix*, xscale-*-elf, xscale-*-coff,
15429         i[34567]86-*-linux*aout*, i[34567]86-*-linux*libc1): Remove.
15430         Make code for Solaris 7 and greater unconditional for Solaris.
15431         (ep9312-*-*, parisc1*, m680[012]0-*-*, parisc*-*-*, mt-*-*):
15432         Remove --with-* handling.
15433         * config/rs6000/sysv4.h (-mwindiss): Remove from all specs.
15434         (LIB_WINDISS_SPEC, CPP_OS_WINDISS_SPEC, STARTFILE_WINDISS_SPEC,
15435         ENDFILE_WINDISS_SPEC, LINK_START_WINDISS_SPEC,
15436         LINK_OS_WINDISS_SPEC): Remove.
15437         * config/rs6000/sysv4.opt (mwindiss): Remove.
15438         * configure.ac (strongarm*-*-*, xscale*-*-*): Remove.
15439         * configure: Regenerate.
15440         * doc/cpp.texi: Don't mention BeOS.
15441         * doc/extend.texi (interrupt): Don't mention MS1.
15442         * doc/install.texi: (i386-@var{any}-sysv, m68k-bull-sysv,
15443         m68k-hp-hpux, m68000-hp-hpux, m68000-att-sysv,
15444         alphaev5-cray-unicosmk*, xscale-*-*, i?86-*-linux*aout,
15445         i?86-*-sco3.2v5*, i?86-*-udk, m68k-hp-hpux, powerpc-*-sysv4,
15446         powerpc-*-sysv4, powerpcle-*-sysv4, *-*-sysv*, vax-dec-ultrix):
15447         Remove.
15448         * doc/invoke.texi (MT Options): Remove.
15449         (-mwindiss): Remove.
15450         (CRIS Options): Remove cris-axis-aout references.
15451         (HPPA Options): Don't mention hppa1.1-*-pro.
15452         * doc/md.texi: (MorphoTech family): Remove.
15453         * libgcc2.c: Don't handle UWIN.
15454         * config/alpha/t-unicosmk: Remove.
15455         * config/alpha/unicosmk.h: Remove.
15456         * config/arm/kaos-arm.h: Remove.
15457         * config/arm/kaos-strongarm.h: Remove.
15458         * config/arm/strongarm-coff.h: Remove.
15459         * config/arm/strongarm-elf.h: Remove.
15460         * config/arm/strongarm-pe.h: Remove.
15461         * config/arm/t-strongarm-pe: Remove.
15462         * config/arm/t-xscale-coff: Remove.
15463         * config/arm/t-xscale-elf: Remove.
15464         * config/arm/xscale-coff.h: Remove.
15465         * config/arm/xscale-elf.h: Remove.
15466         * config/chorus.h: Remove.
15467         * config/cris/aout.h: Remove.
15468         * config/cris/aout.opt: Remove.
15469         * config/cris/t-aout: Remove.
15470         * config/i386/beos-elf.h: Remove.
15471         * config/i386/kaos-i386.h: Remove.
15472         * config/i386/ptx4-i.h: Remove.
15473         * config/i386/sco5.h: Remove.
15474         * config/i386/sco5.opt: Remove.
15475         * config/i386/sysv4-cpp.h: Remove.
15476         * config/i386/sysv5.h: Remove.
15477         * config/i386/t-beos: Remove.
15478         * config/i386/t-sco5: Remove.
15479         * config/i386/t-uwin: Remove.
15480         * config/i386/uwin.asm: Remove.
15481         * config/i386/uwin.h: Remove.
15482         * config/kaos.h: Remove.
15483         * config/mips/windiss.h: Remove.
15484         * config/mt: Remove directory.
15485         * config/pa/pa-osf.h: Remove.
15486         * config/pa/pa-pro-end.h: Remove.
15487         * config/pa/t-pro: Remove.
15488         * config/ptx4.h: Remove.
15489         * config/rs6000/beos.h: Remove.
15490         * config/rs6000/kaos-ppc.h: Remove.
15491         * config/rs6000/t-beos: Remove.
15492         * config/rs6000/windiss.h: Remove.
15493         * config/sh/kaos-sh.h: Remove.
15494         * config/sol2-6.h: Remove.
15495         * config/sparc/sol26-sld.h: Remove.
15496         * config/sparc/sysv4-only.h: Remove.
15497         * config/vax/bsd.h: Remove.
15498         * config/vax/t-memfuncs: Remove.
15499         * config/vax/ultrix.h: Remove.
15500         * config/vax/vaxv.h: Remove.
15501         * config/windiss.h: Remove.
15502
15503 2008-06-06  Uros Bizjak <ubizjak@gmail.com>
15504
15505         PR rtl-optimization/36438
15506         * cse.c (fold_rtx) [ASHIFT, LSHIFTRT, ASHIFTRT]: Break out early
15507         for vector shifts with constant scalar shift operands.
15508
15509 2008-06-06  Sandip Matte  <sandip@rmicorp.com>
15510
15511         * doc/invoke.texi: Document -march=xlr.
15512         * config/mips/xlr.md: New file.
15513         * config/mips/mips.md: Include it.
15514         (cpu): Add "xlr".
15515         * config/mips/mips.h (PROCESSOR_XLR): New processor_type.
15516         * config/mips/mips.c (mips_cpu_info_table): Add an XLR entry.
15517         (mips_rtx_cost_data): Likewise.
15518
15519 2008-06-06  Nathan Froyd  <froydnj@codesourcery.com>
15520
15521         * config/rs6000/rs6000.c (rs6000_mode_dependent_address): Remove
15522         PRE_INC and PRE_DEC cases.
15523
15524 2008-06-06  Jakub Jelinek  <jakub@redhat.com>
15525
15526         PR rtl-optimization/36419
15527         * except.c (expand_resx_expr): Call do_pending_stack_adjust () before
15528         the emitting jump insn.
15529
15530         PR target/36362
15531         * gimplify.c (gimplify_expr) <case TRUTH_NOT_EXPR>: If *expr_p type
15532         is not bool, boolify the whole *expr_p and convert to the desired type.
15533
15534 2008-06-06  Jakub Jelinek  <jakub@redhat.com>
15535
15536         * c-cppbuiltin.c (c_cpp_builtins): Change _OPENMP value to 200805.
15537         * langhooks.h (struct lang_hooks_for_decls): Add omp_finish_clause.
15538         Add omp_private_outer_ref hook, add another argument to
15539         omp_clause_default_ctor hook.
15540         * langhooks-def.h (LANG_HOOKS_OMP_FINISH_CLAUSE): Define.
15541         (LANG_HOOKS_OMP_PRIVATE_OUTER_REF): Define.
15542         (LANG_HOOKS_OMP_CLAUSE_DEFAULT_CTOR): Change to
15543         hook_tree_tree_tree_tree_null.
15544         (LANG_HOOKS_DECLS): Add LANG_HOOKS_OMP_FINISH_CLAUSE and
15545         LANG_HOOKS_OMP_PRIVATE_OUTER_REF.
15546         * hooks.c (hook_tree_tree_tree_tree_null): New function.
15547         * hooks.h (hook_tree_tree_tree_tree_null): New prototype.
15548         * tree.def (OMP_TASK): New tree code.
15549         * tree.h (OMP_TASK_COPYFN, OMP_TASK_ARG_SIZE, OMP_TASK_ARG_ALIGN,
15550         OMP_CLAUSE_PRIVATE_OUTER_REF, OMP_CLAUSE_LASTPRIVATE_STMT,
15551         OMP_CLAUSE_COLLAPSE_ITERVAR, OMP_CLAUSE_COLLAPSE_COUNT,
15552         OMP_TASKREG_CHECK, OMP_TASKREG_BODY, OMP_TASKREG_CLAUSES,
15553         OMP_TASKREG_FN, OMP_TASKREG_DATA_ARG, OMP_TASK_BODY,
15554         OMP_TASK_CLAUSES, OMP_TASK_FN, OMP_TASK_DATA_ARG,
15555         OMP_CLAUSE_COLLAPSE_EXPR): Define.
15556         (enum omp_clause_default_kind): Add OMP_CLAUSE_DEFAULT_FIRSTPRIVATE.
15557         (OMP_DIRECTIVE_P): Add OMP_TASK.
15558         (OMP_CLAUSE_COLLAPSE, OMP_CLAUSE_UNTIED): New clause codes.
15559         (OMP_CLAUSE_SCHEDULE_AUTO): New schedule kind.
15560         * tree.c (omp_clause_code_name): Add OMP_CLAUSE_COLLAPSE
15561         and OMP_CLAUSE_UNTIED entries.
15562         (omp_clause_num_ops): Likewise.  Increase OMP_CLAUSE_LASTPRIVATE
15563         num_ops to 2.
15564         (walk_tree_1): Handle OMP_CLAUSE_COLLAPSE and OMP_CLAUSE_UNTIED.
15565         Walk OMP_CLAUSE_LASTPRIVATE_STMT.
15566         * tree-pretty-print.c (dump_omp_clause): Handle
15567         OMP_CLAUSE_SCHEDULE_AUTO, OMP_CLAUSE_UNTIED, OMP_CLAUSE_COLLAPSE,
15568         OMP_CLAUSE_DEFAULT_FIRSTPRIVATE.
15569         (dump_generic_node): Handle OMP_TASK and collapsed OMP_FOR loops.
15570         * c-omp.c (c_finish_omp_for): Allow pointer iterators.  Remove
15571         warning about unsigned iterators.  Change decl/init/cond/incr
15572         arguments to TREE_VECs, check arguments for all collapsed loops.
15573         (c_finish_omp_taskwait): New function.
15574         (c_split_parallel_clauses): Put OMP_CLAUSE_COLLAPSE clause to
15575         ws_clauses.
15576         * c-parser.c (c_parser_omp_for_loop): Parse collapsed loops.  Call
15577         default_function_array_conversion on init.  Add par_clauses argument.
15578         If decl is present in parallel's lastprivate clause, change it to
15579         shared and add lastprivate clause for decl to OMP_FOR_CLAUSES.
15580         Add clauses argument, on success set OMP_FOR_CLAUSES to it.  Look up
15581         collapse count in clauses.
15582         (c_parser_omp_for, c_parser_omp_parallel): Adjust
15583         c_parser_omp_for_loop callers.
15584         (OMP_FOR_CLAUSE_MASK): Add 1 << PRAGMA_OMP_CLAUSE_COLLAPSE.
15585         (c_parser_pragma): Handle PRAGMA_OMP_TASKWAIT.
15586         (c_parser_omp_clause_name): Handle collapse and untied clauses.
15587         (c_parser_omp_clause_collapse, c_parser_omp_clause_untied): New
15588         functions.
15589         (c_parser_omp_clause_schedule): Handle schedule(auto).
15590         Include correct location in the error message.
15591         (c_parser_omp_all_clauses): Handle PRAGMA_OMP_CLAUSE_COLLAPSE
15592         and PRAGMA_OMP_CLAUSE_UNTIED.
15593         (OMP_TASK_CLAUSE_MASK): Define.
15594         (c_parser_omp_task, c_parser_omp_taskwait): New functions.
15595         (c_parser_omp_construct): Handle PRAGMA_OMP_TASK.
15596         * tree-nested.c (convert_nonlocal_omp_clauses,
15597         convert_local_omp_clauses): Handle OMP_CLAUSE_LASTPRIVATE_STMT,
15598         OMP_CLAUSE_REDUCTION_INIT, OMP_CLAUSE_REDUCTION_MERGE,
15599         OMP_CLAUSE_COLLAPSE and OMP_CLAUSE_UNTIED.
15600         Don't handle TREE_STATIC or DECL_EXTERNAL VAR_DECLs in
15601         OMP_CLAUSE_DECL.
15602         (conver_nonlocal_reference, convert_local_reference,
15603         convert_call_expr): Handle OMP_TASK the same as OMP_PARALLEL.  Use
15604         OMP_TASKREG_* macros rather than OMP_PARALLEL_*.
15605         (walk_omp_for): Adjust for OMP_FOR_{INIT,COND,INCR} changes.
15606         * tree-gimple.c (is_gimple_stmt): Handle OMP_TASK.
15607         * c-tree.h (c_begin_omp_task, c_finish_omp_task): New prototypes.
15608         * c-pragma.h (PRAGMA_OMP_TASK, PRAGMA_OMP_TASKWAIT): New.
15609         (PRAGMA_OMP_CLAUSE_COLLAPSE, PRAGMA_OMP_CLAUSE_UNTIED): New.
15610         * c-typeck.c (c_begin_omp_task, c_finish_omp_task): New functions.
15611         (c_finish_omp_clauses): Handle OMP_CLAUSE_COLLAPSE and
15612         OMP_CLAUSE_UNTIED.
15613         * c-pragma.c (init_pragma): Init omp task and omp taskwait pragmas.
15614         * c-common.h (c_finish_omp_taskwait): New prototype.
15615         * gimple-low.c (lower_stmt): Handle OMP_TASK.
15616         * tree-parloops.c (create_parallel_loop): Create 1 entry
15617         vectors for OMP_FOR_{INIT,COND,INCR}.
15618         * tree-cfg.c (remove_useless_stmts_1): Handle OMP_* containers.
15619         (make_edges): Handle OMP_TASK.
15620         * tree-ssa-operands.c (get_expr_operands): Handle collapsed OMP_FOR
15621         loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.
15622         * tree-inline.c (estimate_num_insns_1): Handle OMP_TASK.
15623         * builtin-types.def (BT_PTR_ULONGLONG, BT_PTR_FN_VOID_PTR_PTR,
15624         BT_FN_BOOL_ULONGLONGPTR_ULONGLONGPTR,
15625         BT_FN_BOOL_BOOL_ULL_ULL_ULL_ULLPTR_ULLPTR,
15626         BT_FN_BOOL_BOOL_ULL_ULL_ULL_ULL_ULLPTR_ULLPTR,
15627         BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT): New.
15628         * omp-builtins.def (BUILT_IN_GOMP_TASK, BUILT_IN_GOMP_TASKWAIT,
15629         BUILT_IN_GOMP_LOOP_ULL_STATIC_START,
15630         BUILT_IN_GOMP_LOOP_ULL_DYNAMIC_START,
15631         BUILT_IN_GOMP_LOOP_ULL_GUIDED_START,
15632         BUILT_IN_GOMP_LOOP_ULL_RUNTIME_START,
15633         BUILT_IN_GOMP_LOOP_ULL_ORDERED_STATIC_START,
15634         BUILT_IN_GOMP_LOOP_ULL_ORDERED_DYNAMIC_START,
15635         BUILT_IN_GOMP_LOOP_ULL_ORDERED_GUIDED_START,
15636         BUILT_IN_GOMP_LOOP_ULL_ORDERED_RUNTIME_START,
15637         BUILT_IN_GOMP_LOOP_ULL_STATIC_NEXT,
15638         BUILT_IN_GOMP_LOOP_ULL_DYNAMIC_NEXT,
15639         BUILT_IN_GOMP_LOOP_ULL_GUIDED_NEXT,
15640         BUILT_IN_GOMP_LOOP_ULL_RUNTIME_NEXT,
15641         BUILT_IN_GOMP_LOOP_ULL_ORDERED_STATIC_NEXT,
15642         BUILT_IN_GOMP_LOOP_ULL_ORDERED_DYNAMIC_NEXT,
15643         BUILT_IN_GOMP_LOOP_ULL_ORDERED_GUIDED_NEXT,
15644         BUILT_IN_GOMP_LOOP_ULL_ORDERED_RUNTIME_NEXT): New builtins.
15645         * gimplify.c (gimplify_omp_for): Allow pointer type for decl,
15646         handle POINTER_PLUS_EXPR.  If loop counter has been replaced and
15647         original iterator is present in lastprivate clause or if
15648         collapse > 1, set OMP_CLAUSE_LASTPRIVATE_STMT.  Handle collapsed
15649         OMP_FOR loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.
15650         (gimplify_expr): Handle OMP_SECTIONS_SWITCH and OMP_TASK.
15651         (enum gimplify_omp_var_data): Add GOVD_PRIVATE_OUTER_REF.
15652         (omp_notice_variable): Set GOVD_PRIVATE_OUTER_REF if needed,
15653         if it is set, lookup var in outer contexts too.  Handle
15654         OMP_CLAUSE_DEFAULT_FIRSTPRIVATE.  Handle vars that are supposed
15655         to be implicitly determined firstprivate for task regions.
15656         (gimplify_scan_omp_clauses): Set GOVD_PRIVATE_OUTER_REF if needed,
15657         if it is set, lookup var in outer contexts too.  Set
15658         OMP_CLAUSE_PRIVATE_OUTER_REF if GOVD_PRIVATE_OUTER_REF is set.
15659         Handle OMP_CLAUSE_LASTPRIVATE_STMT, OMP_CLAUSE_COLLAPSE and
15660         OMP_CLAUSE_UNTIED.  Take region_type as last argument
15661         instead of in_parallel and in_combined_parallel.
15662         (gimplify_omp_parallel, gimplify_omp_for, gimplify_omp_workshare):
15663         Adjust callers.
15664         (gimplify_adjust_omp_clauses_1): Set OMP_CLAUSE_PRIVATE_OUTER_REF if
15665         GOVD_PRIVATE_OUTER_REF is set.  Call omp_finish_clause langhook.
15666         (new_omp_context): Set default_kind to
15667         OMP_CLAUSE_DEFAULT_UNSPECIFIED for OMP_TASK regions.
15668         (omp_region_type): New enum.
15669         (struct gimplify_omp_ctx): Remove is_parallel and is_combined_parallel
15670         fields, add region_type.
15671         (new_omp_context): Take region_type as argument instead of is_parallel
15672         and is_combined_parallel.
15673         (gimple_add_tmp_var, omp_firstprivatize_variable, omp_notice_variable,
15674         omp_is_private, omp_check_private): Adjust ctx->is_parallel and
15675         ctx->is_combined_parallel checks.
15676         (gimplify_omp_task): New function.
15677         (gimplify_adjust_omp_clauses): Handle OMP_CLAUSE_COLLAPSE and
15678         OMP_CLAUSE_UNTIED.
15679         * omp-low.c (extract_omp_for_data): Use schedule(static)
15680         for schedule(auto).  Handle pointer and unsigned iterators.
15681         Compute fd->iter_type.  Handle POINTER_PLUS_EXPR increments.
15682         Add loops argument.  Extract data for collapsed OMP_FOR loops.
15683         (expand_parallel_call): Assert sched_kind isn't auto,
15684         map runtime schedule to index 3.
15685         (struct omp_for_data_loop): New type.
15686         (struct omp_for_data): Remove v, n1, n2, step, cond_code fields.
15687         Add loop, loops, collapse and iter_type fields.
15688         (workshare_safe_to_combine_p): Disallow combined for if
15689         iter_type is unsigned long long.  Don't combine collapse > 1 loops
15690         unless all bounds and steps are constant.  Adjust extract_omp_for_data
15691         caller.
15692         (expand_omp_for_generic): Handle pointer, unsigned and long long
15693         iterators.  Handle collapsed OMP_FOR loops.  Adjust
15694         for struct omp_for_data changes.  If libgomp function doesn't return
15695         boolean_type_node, add comparison of the return value with 0.
15696         (expand_omp_for_static_nochunk, expand_omp_for_static_chunk): Handle
15697         pointer, unsigned and long long iterators.  Adjust for struct
15698         omp_for_data changes.
15699         (expand_omp_for): Assert sched_kind isn't auto, map runtime schedule
15700         to index 3.  Use GOMP_loop_ull*{start,next} if iter_type is
15701         unsigned long long.  Allocate loops array, pass it to
15702         extract_omp_for_data.  For collapse > 1 loops use always
15703         expand_omp_for_generic.
15704         (omp_context): Add sfield_map and srecord_type fields.
15705         (is_task_ctx, lookup_sfield): New functions.
15706         (use_pointer_for_field): Use is_task_ctx helper.  Change first
15707         argument's type from const_tree to tree.  Clarify comment.
15708         In OMP_TASK disallow copy-in/out sharing.
15709         (build_sender_ref): Call lookup_sfield instead of lookup_field.
15710         (install_var_field): Add mask argument.  Populate both record_type
15711         and srecord_type if needed.
15712         (delete_omp_context): Destroy sfield_map, clear DECL_ABSTRACT_ORIGIN
15713         in srecord_type.
15714         (fixup_child_record_type): Also remap FIELD_DECL's DECL_SIZE{,_UNIT}
15715         and DECL_FIELD_OFFSET.
15716         (scan_sharing_clauses): Adjust install_var_field callers.  For
15717         firstprivate clauses on explicit tasks allocate the var by value in
15718         record_type unconditionally, rather than by reference.
15719         Handle OMP_CLAUSE_PRIVATE_OUTER_REF.  Scan OMP_CLAUSE_LASTPRIVATE_STMT.
15720         Use is_taskreg_ctx instead of is_parallel_ctx.
15721         Handle OMP_CLAUSE_COLLAPSE and OMP_CLAUSE_UNTIED.
15722         (create_omp_child_function_name): Add task_copy argument, use
15723         *_omp_cpyfn* names if it is true.
15724         (create_omp_child_function): Add task_copy argument, if true create
15725         *_omp_cpyfn* helper function.
15726         (scan_omp_parallel): Adjust create_omp_child_function callers.
15727         Rename parallel_nesting_level to taskreg_nesting_level.
15728         (scan_omp_task): New function.
15729         (lower_rec_input_clauses): Don't run constructors for firstprivate
15730         explicit task vars which are initialized by *_omp_cpyfn*.
15731         Pass outer var ref to omp_clause_default_ctor hook if
15732         OMP_CLAUSE_PRIVATE_OUTER_REF or OMP_CLAUSE_LASTPRIVATE.
15733         Replace OMP_CLAUSE_REDUCTION_PLACEHOLDER decls in
15734         OMP_CLAUSE_REDUCTION_INIT.
15735         (lower_send_clauses): Clear DECL_ABSTRACT_ORIGIN if in task to
15736         avoid duplicate setting of fields.  Handle
15737         OMP_CLAUSE_PRIVATE_OUTER_REF.
15738         (lower_send_shared_vars): Use srecord_type if non-NULL.  Don't
15739         copy-out if TREE_READONLY, only copy-in.
15740         (expand_task_copyfn): New function.
15741         (expand_task_call): New function.
15742         (struct omp_taskcopy_context): New type.
15743         (task_copyfn_copy_decl, task_copyfn_remap_type, create_task_copyfn):
15744         New functions.
15745         (lower_omp_parallel): Rename to...
15746         (lower_omp_taskreg): ... this.  Use OMP_TASKREG_* macros where needed.
15747         Call create_task_copyfn if srecord_type is needed.  Adjust
15748         sender_decl type.
15749         (task_shared_vars): New variable.
15750         (check_omp_nesting_restrictions): Warn if work-sharing,
15751         barrier, master or ordered region is closely nested inside OMP_TASK.
15752         Add warnings for barrier if closely nested inside of work-sharing,
15753         ordered, or master region.
15754         (scan_omp_1): Call check_omp_nesting_restrictions even for
15755         GOMP_barrier calls.  Rename parallel_nesting_level to
15756         taskreg_nesting_level.  Handle OMP_TASK.
15757         (lower_lastprivate_clauses): Even if some lastprivate is found on a
15758         work-sharing construct, continue looking for them on parent parallel
15759         construct.
15760         (lower_omp_for_lastprivate): Add lastprivate clauses
15761         to the beginning of dlist rather than end.  Adjust for struct
15762         omp_for_data changes.
15763         (lower_omp_for): Add rec input clauses before OMP_FOR_PRE_BODY,
15764         not after it.  Handle collapsed OMP_FOR loops, adjust for
15765         OMP_FOR_{INIT,COND,INCR} changes, adjust extract_omp_for_data caller.
15766         (get_ws_args_for): Adjust extract_omp_for_data caller.
15767         (scan_omp_for): Handle collapsed OMP_FOR
15768         loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.
15769         (lower_omp_single_simple): If libgomp function doesn't return
15770         boolean_type_node, add comparison of the return value with 0.
15771         (diagnose_sb_1, diagnose_sb_2): Handle collapsed OMP_FOR
15772         loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.  Handle OMP_TASK.
15773         (parallel_nesting_level): Rename to...
15774         (taskreg_nesting_level): ... this.
15775         (is_taskreg_ctx): New function.
15776         (build_outer_var_ref, omp_copy_decl): Use is_taskreg_ctx instead
15777         of is_parallel_ctx.
15778         (execute_lower_omp): Rename parallel_nesting_level to
15779         taskreg_nesting_level.
15780         (expand_omp_parallel): Rename to...
15781         (expand_omp_taskreg): ... this.  Use OMP_TASKREG_* macros where needed.
15782         Call omp_task_call for OMP_TASK regions.
15783         (expand_omp): Adjust caller, handle OMP_TASK.
15784         (lower_omp_1): Adjust lower_omp_taskreg caller, handle OMP_TASK.
15785
15786         * bitmap.c (bitmap_default_obstack_depth): New variable.
15787         (bitmap_obstack_initialize, bitmap_obstack_release): Do nothing
15788         if argument is NULL and bitmap_default_obstack is already initialized.
15789         * ipa-struct-reorg.c (do_reorg_1): Call bitmap_obstack_release
15790         at the end.
15791         * matrix-reorg.c (matrix_reorg): Likewise.
15792
15793 2008-06-06  Uros Bizjak  <ubizjak@gmail.com>
15794
15795         * config/i386/i386.md (*indirect_jump): Macroize using P
15796         mode iterator.  Remove !TARGET_64BIT from insn constraints.
15797         (*tablejump_1): Ditto.
15798         (*indirect_jump_rex64): Remove insn pattern.
15799         (*tablejump_1_rex64): Ditto.
15800         (eh_return_<mode>): Macroize using P mode iterator from eh_return_di
15801         and eh_return_si insn patterns.
15802
15803 2008-06-06  Richard Guenther  <rguenther@suse.de>
15804
15805         * tree-ssa-structalias.c (merge_smts_into): Remove.
15806         (find_what_p_points_to): Do not bother to compute the
15807         points-to set for pt_anything pointers.
15808         * tree-ssa-operands.c (get_addr_dereference_operands): No NMT
15809         for pt_anything pointers is ok.
15810
15811 2008-06-06  Jan Hubicka  <jh@suse.cz>
15812
15813         * passes.c (execute_ipa_pass_list): Do not regenerate summaries.
15814
15815 2008-06-06  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
15816
15817         * cgraph.c: Fix typos in comments.
15818         (cgraph_availability_names): Fix string typo.
15819         * fold-const.c: Fix typos in comments.
15820         (fold_binary): Fix typo in warning.
15821         * genautomata.c: Fix typos in comments.
15822         (check_presence_pattern_sets): Fix typo in local variable.
15823         (output_description): Fix typo in output.
15824         * ggc-zone.c (ggc_pch_finish): Fix typo in error message.
15825         * hwint.h: Likewise.
15826         * matrix-reorg.c (check_allocation_function): Likewise.
15827         * omega.c (smooth_weird_equations): Likewise.
15828         * auto-inc-dec.c: Fix typos in comments.
15829         * bb-reorder.c: Likewise.
15830         * builtins.c: Likewise.
15831         * c-common.c: Likewise.
15832         * c-cppbuiltin.c: Likewise.
15833         * c-parser.c: Likewise.
15834         * c-pretty-print.c: Likewise.
15835         * cfgcleanup.c: Likewise.
15836         * cfgexpand.c: Likewise.
15837         * cfghooks.c: Likewise.
15838         * cfglayout.c: Likewise.
15839         * cfgloopmanip.c: Likewise.
15840         * cgraphunit.c: Likewise.
15841         * coverage.c: Likewise.
15842         * dbxout.c: Likewise.
15843         * df-byte-scan.c: Likewise.
15844         * df-core.c: Likewise.
15845         * df-problems.c: Likewise.
15846         * df-scan.c: Likewise.
15847         * dfp.c: Likewise.
15848         * dominance.c: Likewise.
15849         * domwalk.c: Likewise.
15850         * dse.c: Likewise.
15851         * dwarf2out.c: Likewise.
15852         * emit-rtl.c: Likewise.
15853         * et-forest.c: Likewise.
15854         * function.c: Likewise.
15855         * function.h: Likewise.
15856         * gcc.c: Likewise.
15857         * gcov-io.c: Likewise.
15858         * gcov.c: Likewise.
15859         * gcse.c: Likewise.
15860         * genattrtab.c: Likewise.
15861         * ggc-page.c: Likewise.
15862         * gimplify.c: Likewise.
15863         * gthr-lynx.h: Likewise.
15864         * haifa-sched.c: Likewise.
15865         * ipa-cp.c: Likewise.
15866         * ipa-inline.c: Likewise.
15867         * ipa-prop.h: Likewise.
15868         * ipa-pure-const.c: Likewise.
15869         * ipa-struct-reorg.c: Likewise.
15870         * ipa-struct-reorg.h: Likewise.
15871         * ipa-type-escape.c: Likewise.
15872         * ipa.c: Likewise.
15873         * loop-doloop.c: Likewise.
15874         * mips-tfile.c: Likewise.
15875         * mkmap-flat.awk: Likewise.
15876         * mkmap-symver.awk: Likewise.
15877         * modulo-sched.c: Likewise.
15878         * omp-low.c: Likewise.
15879         * optabs.c: Likewise.
15880         * optabs.h: Likewise.
15881         * opts.c: Likewise.
15882         * passes.c: Likewise.
15883         * postreload-gcse.c: Likewise.
15884         * postreload.c: Likewise.
15885         * predict.c: Likewise.
15886         * pretty-print.h: Likewise.
15887         * profile.c: Likewise.
15888         * protoize.c: Likewise.
15889         * ra-conflict.c: Likewise.
15890         * real.c: Likewise.
15891         * recog.c: Likewise.
15892         * regclass.c: Likewise.
15893         * regs.h: Likewise.
15894         * reload.c: Likewise.
15895         * rtl-error.c: Likewise.
15896         * rtlanal.c: Likewise.
15897         * scan.h: Likewise.
15898         * sched-rgn.c: Likewise.
15899         * see.c: Likewise.
15900         * stmt.c: Likewise.
15901         * target.h: Likewise.
15902         * tree-dfa.c: Likewise.
15903         * tree-eh.c: Likewise.
15904         * tree-flow-inline.h: Likewise.
15905         * tree-inline.c: Likewise.
15906         * tree-into-ssa.c: Likewise.
15907         * tree-loop-distribution.c: Likewise.
15908         * tree-nested.c: Likewise.
15909         * tree-parloops.c: Likewise.
15910         * tree-pass.h: Likewise.
15911         * tree-pretty-print.c: Likewise.
15912         * tree-profile.c: Likewise.
15913         * tree-scalar-evolution.c: Likewise.
15914         * tree-sra.c: Likewise.
15915         * tree-ssa-alias-warnings.c: Likewise.
15916         * tree-ssa-ccp.c: Likewise.
15917         * tree-ssa-coalesce.c: Likewise.
15918         * tree-ssa-dom.c: Likewise.
15919         * tree-ssa-dse.c: Likewise.
15920         * tree-ssa-forwprop.c: Likewise.
15921         * tree-ssa-live.c: Likewise.
15922         * tree-ssa-live.h: Likewise.
15923         * tree-ssa-loop-im.c: Likewise.
15924         * tree-ssa-loop-ivopts.c: Likewise.
15925         * tree-ssa-loop-niter.c: Likewise.
15926         * tree-ssa-loop-prefetch.c: Likewise.
15927         * tree-ssa-phiopt.c: Likewise.
15928         * tree-ssa-phiprop.c: Likewise.
15929         * tree-ssa-sccvn.c: Likewise.
15930         * tree-ssa-ter.c: Likewise.
15931         * tree-ssa-threadupdate.c: Likewise.
15932         * tree-ssa.c: Likewise.
15933         * tree-vect-analyze.c: Likewise.
15934         * tree-vect-transform.c: Likewise.
15935         * tree-vectorizer.c: Likewise.
15936         * tree-vn.c: Likewise.
15937         * tree-vrp.c: Likewise.
15938         * tree.c: Likewise.
15939         * tree.def: Likewise.
15940         * tree.h: Likewise.
15941         * unwind-dw2-fde.c: Likewise.
15942         * unwind.inc: Likewise.
15943         * value-prof.c: Likewise.
15944         * vmsdbgout.c: Likewise.
15945
15946 2008-06-05  David Edelsohn  <edelsohn@gnu.org>
15947
15948         * config/rs6000/xcoff.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Do not
15949         always place FP constants in the TOC for TARGET_POWERPC64.
15950         * config/rs6000/linux64.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Same.
15951
15952 2008-06-05  Joseph Myers  <joseph@codesourcery.com>
15953
15954         * config.gcc (powerpc-*-linux*spe*): Use t-dfprules.
15955         * config/rs6000/dfp.md (negdd2, absdd2, negtd2, abstd2): Do not
15956         enable for TARGET_E500_DOUBLE.
15957         (*movdd_softfloat32): Also enable for !TARGET_FPRS.
15958         * config/rs6000/rs6000.c (invalid_e500_subreg): Treat decimal
15959         floating-point modes like integer modes for E500 double.
15960         (rs6000_legitimate_offset_address_p): Likewise.
15961         (rs6000_legitimize_address): Likewise.  Do not allow REG+REG
15962         addressing for DDmode for E500 double.
15963         (rs6000_hard_regno_nregs): Do not treat decimal floating-point
15964         modes as using 64-bits of registers for E500 double.
15965         (spe_build_register_parallel): Do not handle DDmode or TDmode.
15966         (rs6000_spe_function_arg): Do not handle DDmode or TDmode
15967         specially for E500 double.
15968         (function_arg): Do not call rs6000_spe_function_arg for DDmode or
15969         TDmode for E500 double.
15970         (rs6000_gimplify_va_arg): Only handle SDmode in registers
15971         specially if TARGET_HARD_FLOAT && TARGET_FPRS.
15972         (rs6000_split_multireg_move): Do not handle TDmode specially for
15973         E500 double.
15974         (spe_func_has_64bit_regs_p): Do not treat DDmode or TDmode as
15975         using 64-bit registers for E500 double.
15976         (emit_frame_save): Do not handle DDmode specially for E500 double.
15977         (gen_frame_mem_offset): Likewise.
15978         (rs6000_function_value): Do not call spe_build_register_parallel
15979         for DDmode or TDmode.
15980         (rs6000_libcall_value): Likewise.
15981         * config/rs6000/rs6000.h (LOCAL_ALIGNMENT, MEMBER_TYPE_FORCES_BLK,
15982         DATA_ALIGNMENT, CLASS_MAX_NREGS): Do not handle DDmode specially
15983         for E500 double.
15984
15985 2008-06-04  H.J. Lu  <hongjiu.lu@intel.com>
15986
15987         * config/i386/i386.c (setup_incoming_varargs_64): Fix a typo
15988         in comments.
15989
15990 2008-06-04  Junjie Gu <jgu@tensilica.com>
15991
15992         * config/xtensa/lib2funcs.S (__xtensa_nonlocal_goto): Use unsigned
15993         comparison for frame pointers.
15994
15995 2008-06-04  Andy Hutchinson  <hutchinsonandy@aim.com>
15996
15997         PR target/27386
15998         * config/avr/avr.h (PUSH_ROUNDING): Remove.
15999
16000 2008-06-04  Andy Hutchinson  <hutchinsonandy@aim.com>
16001
16002         PR target/30243
16003         * builtins.c (expand_builtin_signbit): Don't take lowpart when
16004         register is already smaller or equal to required mode.
16005
16006 2008-06-04  Xinliang David Li  <davidxl@google.com>
16007
16008         * tree-call-cdce.c: New file.
16009         (cond_dead_built_in_calls): New static variable.
16010         (input_domain): New struct.
16011         (check_pow): New function.
16012         (check_builtin_call): Ditto.
16013         (check_target_format): Ditto.
16014         (is_call_dce_candidate): Ditto.
16015         (gen_one_condition): Ditto.
16016         (gen_conditions_for_domain): Ditto.
16017         (get_domain): Ditto.
16018         (gen_conditions_for_pow_cst_base): Ditto.
16019         (gen_conditions_for_pow_int_base): Ditto.
16020         (gen_conditions_for_pow): Ditto.
16021         (get_no_error_domain): Ditto.
16022         (gen_shrink_wrap_conditions): Ditto.
16023         (shrink_wrap_one_built_in_call): Ditto.
16024         (shink_wrap_conditional_dead_built_in_calls): Ditto.
16025         (tree_call_cdce): Ditto.
16026         (gate_call_cdce): Ditto.
16027         (pass_call_cdce): New gimple pass.
16028         * passes.c: (init_optimization_passes): New pass.
16029         * tree-pass.h: New pass declaration.
16030         * opts.c (decode_options): New flag setting.
16031         * common.opt: Add -ftree-builtin-call-dce flag.
16032         * Makefile.in: Add new source file.
16033         * tempvar.def: New tv_id.
16034         * doc/invoke.texi (-ftree-builtin-call-dce): New flag.
16035
16036 2008-06-04  Richard Guenther  <rguenther@suse.de>
16037
16038         * tree-flow-inline.h (is_global_var): Do not check TREE_STATIC on MTAGs.
16039         (is_call_clobbered): Always check var_ann->call_clobbered.
16040         (mark_call_clobbered): Always set var_ann->call_clobbered.
16041         (clear_call_clobbered): Always clear var_ann->call_clobbered.
16042         * tree-ssa-alias.c (mark_non_addressable): Use clear_call_clobbered.
16043         (reset_alias_info): Clear call clobbering info on MTAGs and
16044         globals as well.
16045         (set_pt_anything): Set pt_global_mem.
16046         (create_tag_raw): Adjust comment.
16047         (may_be_aliased): Do not check TREE_PUBLIC on MTAGs.
16048
16049 2008-06-04  Joseph Myers  <joseph@codesourcery.com>
16050             Maxim Kuvyrkov  <maxim@codesourcery.com>
16051
16052         * config/m68k/m68k.opt (mxgot): New option.
16053         * config/m68k/m68k.c (legitimize_pic_address): Handle -mxgot.
16054         (m68k_output_addr_const_extra): New.
16055         * config/m68k/m68k.h (OUTPUT_ADDR_CONST_EXTRA): New.
16056         * config/m68k/m68k-protos.h (m68k_output_addr_const_extra): Declare.
16057         * config/m68k/m68k.md (UNSPEC_GOTOFF): Define.
16058         * doc/invoke.texi (M680x0 Options): Document -mxgot.
16059
16060 2008-06-04  Richard Guenther  <rguenther@suse.de>
16061
16062         * tree-ssa-structalias.c (handle_ptr_arith): Correctly handle
16063         negative or non-representable offsets.
16064
16065 2008-06-03  H.J. Lu  <hongjiu.lu@intel.com>
16066
16067         * config/i386/i386.c (ix86_gen_leave): New.
16068         (ix86_gen_pop1): Likewise.
16069         (ix86_gen_add3): Likewise.
16070         (ix86_gen_sub3): Likewise.
16071         (ix86_gen_sub3_carry): Likewise.
16072         (ix86_gen_one_cmpl2): Likewise.
16073         (ix86_gen_monitor): Likewise.
16074         (override_options): Initialize ix86_gen_leave, ix86_gen_pop1,
16075         ix86_gen_add3, ix86_gen_sub3, ix86_gen_sub3_carry,
16076         ix86_gen_one_cmpl2 and ix86_gen_monitor.
16077         (ix86_file_end): Use mov%z0 instead of mov{q}/mov{l}.
16078         (output_set_got): Use mov%z0, pop%z0 and add%z0 instead of
16079         mov{q}/mov{l}, pop{q}/pop{l} and add{q}/add{l}.
16080         (ix86_expand_epilogue): Updated.
16081         (print_operand): Handle integer register operand for 'z'.
16082         (ix86_expand_strlensi_unroll_1): Likewise.
16083         (ix86_expand_strlen): Likewise.
16084         (ix86_expand_builtin): Likewise.
16085         (x86_output_mi_thunk): Use mov%z1 and add%z1 instead of
16086         mov{q}/mov{l} and add{q}/add{l}.
16087
16088 2008-06-03  Kai Tietz  <kai.tietz@onevision.com>
16089
16090         * config/i386/i386.md (P): New mode iterator.
16091         (SFmode push_operand splitter): Macroize DImode and SImode pushes
16092         using P mode iterator.
16093         (DFmode push_operand splitter): Ditto.
16094         (XFmode push_operand splitter): Ditto.
16095         (DFmode float_extend SFmode push_operand splitter): Ditto.
16096         (XFmode float_extend SFmode push_operand splitter): Do not generate
16097         SImode pushes for 64bit target.  Macroize Dimode and SImode
16098         pushes using P mode iterator.
16099         (XFmode float_extend DFmode push_operand splitter): Ditto.
16100
16101 2008-06-03  Kai Tietz  <kai.tietz@onevision.com>
16102
16103         * config/i386/i386-protos.h (ix86_reg_parm_stack_space): New.
16104         * config/i386/i386.h (ix86_reg_parm_stack_space): Removed prototype.
16105         * config/i386/i386.c (ix86_reg_parm_stack_space): Changed
16106         return type to int.
16107         (ix86_call_abi_override): Remove check for call_used_regs.
16108
16109 2008-06-03  Richard Guenther  <rguenther@suse.de>
16110
16111         * tree-ssa-structalias.c (find_func_aliases): Add constraints
16112         for the lhs of calls if the return type contains pointers.
16113
16114 2008-06-03  Kai Tietz  <kai.tietz@onevision.com>
16115
16116         * doc/tm.texi (OVERRIDE_ABI_FORMAT): New.
16117         * doc/extend.texi (ms_abi,sysv_abi): New attribute description.
16118         * function.c (allocate_struct_function): Use of OVERRIDE_ABI_FORMAT.
16119         * config/i386/cygming.h (TARGET_64BIT_MS_ABI): Make use
16120         of cfun and DEFAULT_ABI to deceide abi mode.
16121         (DEFAULT_ABI): New.
16122         (REG_PARM_STACK_SPACE): Removed.
16123         (OUTGOING_REG_PARM_STACK_SPACE): Removed.
16124         (STACK_BOUNDARY): Use default target to deceide stack boundary.
16125         * config/i386/i386-protos.h (ix86_cfun_abi): New.
16126         (ix86_function_abi): Likewise.
16127         (ix86_function_type_abi): Likewise.
16128         (ix86_call_abi_override): Likewise.
16129         * confid/i386/i386.md (SSE_REGPARM_MAX): Replaced by abi
16130         specific define X86_64_SSE_REGPARM_MAX/X64_SSE_REGPARM_MAX.
16131         * config/i386/i386.c (override_options): Replace TARGET_64BIT_MS_ABI.
16132         (X86_64_VARARGS_SIZE): Replace REGPARM_MAX and SSE_REGPARM_MAX by abi
16133         specific defines.
16134         (X86_64_REGPARM_MAX): New.
16135         (X86_64_SSE_REGPARM_MAX): New.
16136         (X64_REGPARM_MAX): New.
16137         (X64_SSE_REGPARM_MAX): New.
16138         (X86_32_REGPARM_MAX): New.
16139         (X86_32_SSE_REGPARM_MAX): New.
16140         (ix86_handle_cconv_attribute): Replace TARGET_64BIT_MS_ABI.
16141         (ix86_function_regparm): Handle user calling abi.
16142         (ix86_function_arg_regno_p): Replace TARGET_64BIT_MS_ABI
16143         by DEFAULT_ABI versus SYSV_ABI check.
16144         (ix86_reg_parm_stack_space): New.
16145         (ix86_function_type_abi): New.
16146         (ix86_call_abi_override): New.
16147         (ix86_function_abi): New.
16148         (ix86_cfun_abi): New.
16149         (init_cumulative_args): Call abi specific initialization.
16150         (function_arg_advance): Remove TARGET_64BIT_MS_ABI.
16151         (function_arg_64): Extend SSE_REGPARM_MAX check.
16152         (function_arg (): Remove TARGET_64BIT_MS_ABI.
16153         (ix86_pass_by_reference): Likewise.
16154         (ix86_function_value_regno_p): Likewise.
16155         (function_value_64): Replace REGPARM_MAX, and SSE_REGPARM_MAX.
16156         (ix86_function_value_1): Replace TARGET_64BIT_MS_ABI.
16157         (return_in_memory_ms_64): Replace TARGET_64BIT_MS_ABI.
16158         (ix86_build_builtin_va_list): Replace TARGET_64BIT_MS_ABI.
16159         (setup_incoming_varargs_64): Adjust regparm for call abi.
16160         (ix86_setup_incoming_varargs): Replace TARGET_64BIT_MS_ABI.
16161         (ix86_va_start): Likewise.
16162         (ix86_gimplify_va_arg): Likewise.
16163         (ix86_expand_prologue): Likewise.
16164         (output_pic_addr_const): Likewise.
16165         (ix86_init_machine_status): Initialize call_abi by DEFAULT_ABI.
16166         (x86_this_parameter): Replace TARGET_64BIT_MS_ABI.
16167         (x86_output_mi_thunk): Likewise.
16168         (x86_function_profiler): Likewise.
16169         * config/i386/i386.h (TARGET_64BIT_MS_ABI): Use ix64_cfun_abi.
16170         (SYSV_ABI, MS_ABI): New constants.
16171         (DEFAULT_ABI): New.
16172         (init_regs): Add prototype of function in regclass.c file.
16173         (OVERRIDE_ABI_FORMAT): New.
16174         (CONDITIONAL_REGISTER_USAGE): Remove TARGET_64BIT_MS_ABI part.
16175         (REG_PARM_STACK_SPACE): Use ix86_reg_parm_stack_space.
16176         (OUTGOING_REG_PARM_STACK_SPACE): New.
16177         (ix86_reg_parm_stack_space): New prototype.
16178         (CUMULATIVE_ARGS): Add call_abi member.
16179         (machine_function): Add call_abi member.
16180         * config/i386/mingw32.h (EXTRA_OS_CPP_BUILTINS): Replace
16181         TARGET_64BIT_MS_ABI by DEFAULT_ABI compare to MS_ABI.
16182
16183 2008-06-02  Andy Hutchinson  <hutchinsonandy@aim.com>
16184
16185         PR target/34879
16186         * config/avr/avr.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Redefine.
16187         (avr_builtin_setjmp_frame_value): New function.
16188         * config/avr/avr.md (nonlocal_goto_receiver): Define.
16189         (nonlocal_goto): Define.
16190
16191 2008-06-02  Richard Sandiford  <rdsandiford@googlemail.com>
16192
16193         * config/mips/mips.c (mips_emit_loadgp): Return early if
16194         there is nothing do to, otherwise emit a blockage if
16195         !TARGET_EXPLICIT_RELOCS || crtl->profile.
16196         * config/mips/mips.md (loadgp_blockage): Use SI rather than DI.
16197
16198 2008-06-02  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
16199
16200         * configure.ac: Drop unneeded backslash ending up in config.in.
16201         * acinclude.m4: Likewise.
16202         * config.in: Regenerate.
16203
16204 2008-05-26  Jan Hubicka  <jh@suse.cz>
16205
16206         * predict.c (maybe_hot_frequency_p): Break out of...
16207         (maybe_hot_bb_p): ... here.
16208         (maybe_hot_edge_p): New.
16209         * tree-ssa-coalesce.c (coalesce_cost_edge): Compute cost based on edge.
16210         * basic-block.h (maybe_hot_edge_p): Declare.
16211
16212 2008-05-31  Uros Bizjak  <ubizjak@gmail.com>
16213
16214         * config/i386/i386.md (*cmpfp_<mode>): Enable for optimize_size.
16215         (*cmpfp_<mode>_cc): Ditto.
16216         (*fp_jcc_8<mode>_387): Ditto.
16217         (*fop_<MODEF:mode>_2_i387): Ditto.
16218         (*fop_<MODEF:mode>_3_i387): Ditto.
16219         (*fop_xf_2_i387): Ditto.
16220         (*fop_xf_3_i387): Ditto.
16221
16222 2008-06-02  Tomas Bily  <tbily@suse.cz>
16223
16224         * tree-ssa-ifcombine.c (get_name_for_bit_test): Use CONVERT_EXPR_P.
16225
16226 2008-06-01  Richard Sandiford  <rdsandiford@googlemail.com>
16227
16228         * config/mips/mips.c (mips_valid_offset_p): New function.
16229         (mips_valid_lo_sum_p): Likewise.
16230         (mips_classify_address): Use them.
16231         (mips_force_address): New function.
16232         (mips_legitimize_address): Use it.
16233         * config/mips/mips.md (MOVE128): New mode iterator.
16234         (movtf): Require TARGET_64BIT.  Remove empty strings.
16235         (*movtf_internal): Rename to...
16236         (*movtf): ...this and require !TARGET_MIPS16.  Use "m" instead
16237         of "R" and use {,fp}{load,store} attributes instead of "multi".
16238         Use a separate define_split.
16239         (*movtf_mips16): New pattern.
16240
16241 2008-06-01  Richard Sandiford  <rdsandiford@googlemail.com>
16242
16243         * config/mips/mips-protos.h (mips_expand_before_return): Declare.
16244         * config/mips/mips.c (mips_expand_before_return): New function.
16245         (mips_expand_epilogue): Call it.
16246         * config/mips/mips.md (return): Turn into a define_expand.
16247         (*return): New insn.
16248
16249 2008-06-01  Richard Sandiford  <rdsandiford@googlemail.com>
16250
16251         * rtl.h (emit_clobber, gen_clobber, emit_use, gen_use): Declare.
16252         * emit-rtl.c (emit_clobber, gen_clobber, emit_use, gen_use): New
16253         functions.  Do not emit uses and clobbers of CONCATs; individually
16254         use and clobber their operands.
16255         * builtins.c (expand_builtin_setjmp_receiver): Use emit_clobber,
16256         gen_clobber, emit_use and gen_use.
16257         (expand_builtin_longjmp, expand_builtin_nonlocal_goto): Likewise.
16258         (expand_builtin_return): Likewise.
16259         * cfgbuild.c (count_basic_blocks): Likewise.
16260         * cfgrtl.c (rtl_flow_call_edges_add): Likewise.
16261         * explow.c (emit_stack_restore): Likewise.
16262         * expmed.c (extract_bit_field_1): Likewise.
16263         * expr.c (convert_move, emit_move_complex_parts): Likewise.
16264         (emit_move_multi_word, store_constructor): Likewise.
16265         * function.c (do_clobber_return_reg, do_use_return_reg): Likewise.
16266         (thread_prologue_and_epilogue_insns): Likewise.
16267         * lower-subreg.c (resolve_simple_move): Likewise.
16268         * optabs.c (widen_operand, expand_binop): Likewise.
16269         (expand_doubleword_bswap, emit_no_conflict_block): Likewise.
16270         * reload.c (find_reloads): Likewise.
16271         * reload1.c (eliminate_regs_in_insn): Likewise.
16272         * stmt.c (expand_nl_goto_receiver): Likewise.
16273         * config/alpha/alpha.md (builtin_longjmp): Likewise.
16274         * config/arc/arc.md (*movdi_insn, *movdf_insn): Likewise.
16275         * config/arm/arm.c (arm_load_pic_register): Likewise.
16276         (thumb1_expand_epilogue, thumb_set_return_address): Likewise.
16277         * config/arm/arm.md (untyped_return): Likewise.
16278         * config/arm/linux-elf.h (PROFILE_HOOK): Likewise.
16279         * config/avr/avr.c (expand_prologue): Likewise.
16280         * config/bfin/bfin.c (do_unlink): Likewise.
16281         * config/bfin/bfin.md (<optab>di3, adddi3, subdi3): Likewise.
16282         * config/cris/cris.c (cris_expand_prologue): Likewise.
16283         * config/darwin.c (machopic_indirect_data_reference): Likewise.
16284         (machopic_legitimize_pic_address): Likewise.
16285         * config/frv/frv.c (frv_frame_access, frv_expand_epilogue): Likewise.
16286         (frv_ifcvt_modify_insn, frv_expand_mdpackh_builtin): Likewise.
16287         * config/i386/i386.c (ix86_expand_vector_move_misalign): Likewise.
16288         (ix86_expand_convert_uns_didf_sse): Likewise.
16289         (ix86_expand_vector_init_general): Likewise.
16290         * config/ia64/ia64.md (eh_epilogue): Likewise.
16291         * config/iq2000/iq2000.c (iq2000_expand_epilogue): Likewise.
16292         * config/m32c/m32c.c (m32c_emit_eh_epilogue): Likewise.
16293         * config/m32r/m32r.c (m32r_reload_lr): Likewise.
16294         (config/iq2000/iq2000.c): Likewise.
16295         * config/mips/mips.md (fixuns_truncdfsi2): Likewise.
16296         (fixuns_truncdfdi2, fixuns_truncsfsi2, fixuns_truncsfdi2): Likewise.
16297         (builtin_longjmp): Likewise.
16298         * config/mn10300/mn10300.md (call, call_value): Likewise.
16299         * config/pa/pa.md (nonlocal_goto, nonlocal_longjmp): Likewise.
16300         * config/pdp11/pdp11.md (abshi2): Likewise.
16301         * config/rs6000/rs6000.c (rs6000_emit_move): Likewise.
16302         * config/s390/s390.c (s390_emit_prologue): Likewise.
16303         * config/s390/s390.md (movmem_long, setmem_long): Likewise.
16304         (cmpmem_long, extendsidi2, zero_extendsidi2, udivmoddi4): Likewise.
16305         (builtin_setjmp_receiver, restore_stack_nonlocal): Likewise.
16306         * config/sh/sh.c (prepare_move_operands): Likewise.
16307         (output_stack_adjust, sh_expand_epilogue): Likewise.
16308         (sh_set_return_address, sh_expand_t_scc): Likewise.
16309         * config/sparc/sparc.c (load_pic_register): Likewise.
16310         * config/sparc/sparc.md (untyped_return, nonlocal_goto): Likewise.
16311         * config/spu/spu.c (spu_expand_epilogue): Likewise.
16312         * config/v850/v850.c (expand_epilogue): Likewise.
16313
16314 2008-05-31  Anatoly Sokolov  <aesok@post.ru>
16315
16316         * config/avr/avr.md (UNSPECV_WRITE_SP_IRQ_ON): New constants.
16317         (UNSPECV_WRITE_SP_IRQ_OFF): (Ditto.).
16318         (movhi_sp_r_irq_off, movhi_sp_r_irq_on): New insn.
16319         * config/avr/avr.c (expand_prologue, expand_epilogue): Use
16320         movhi_sp_r_irq_off and movhi_sp_r_irq_on insns for writing to the
16321         stack pointer register.
16322         (output_movhi): Remove code for interrupt specific writing to the
16323         stack pointer register.
16324
16325 2008-05-31  Richard Guenther  <rguenther@suse.de>
16326
16327         PR tree-optimization/34244
16328         * fold-const.c (tree_expr_nonnegative_warnv_p): Do not ask VRP.
16329         (tree_expr_nonzero_warnv_p): Likewise.
16330         * tree-vrp.c (vrp_expr_computes_nonnegative): Call
16331         ssa_name_nonnegative_p.
16332         (vrp_expr_computes_nonzero): Call ssa_name_nonzero_p.
16333         (extract_range_from_unary_expr): Use vrp_expr_computes_nonzero,
16334         not tree_expr_nonzero_warnv_p.
16335
16336         PR tree-optimization/36262
16337         Revert
16338         2007-11-29  Zdenek Dvorak  <ook@ucw.cz>
16339
16340         PR tree-optimization/34244
16341         * tree-vrp.c (adjust_range_with_scev): Clear scev cache.
16342         (record_numbers_of_iterations): New function.
16343         (execute_vrp): Cache the numbers of iterations of loops.
16344         * tree-scalar-evolution.c (scev_reset_except_niters):
16345         New function.
16346         (scev_reset): Use scev_reset_except_niters.
16347         * tree-scalar-evolution.h (scev_reset_except_niters): Declare.
16348
16349 2008-05-31  Bernd Schmidt  <bernd.schmidt@analog.com>
16350
16351         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
16352         __WORKAROUND_RETS when appropriate.
16353
16354 2008-05-31  Uros Bizjak  <ubizjak@gmail.com>
16355
16356         * config/i386/i386.md (*fop_<mode>_comm_mixed): Macroize from
16357         *fop_sf_comm_mixed and *fop_df_comm_mixed insn patterns using MODEF
16358         mode iterator.
16359         (*fop_<mode>_comm_sse): Macroize from *fop_sf_comm_sse and
16360         *fop_df_comm_sse insn patterns using MODEF mode iterator.
16361         (*fop_<mode>_comm_i387): Macroize from *fop_sf_comm_i387 and
16362         *fop_df_comm_i387 insn patterns using MODEF mode iterator.
16363         (*fop_<mode>_1_mixed): Macroize from *fop_sf_1_mixed and
16364         *fop_df_1_mixed insn patterns using MODEF mode iterator.
16365         (*fop_<mode>_1_sse): Macroize from *fop_sf_1_sse and
16366         *fop_df_1_sse insn patterns using MODEF mode iterator.
16367         (*fop_<mode>_1_i387): Macroize from *fop_sf_1_i387 and
16368         *fop_df_1_i387 insn patterns using MODEF mode iterator.
16369         (*fop_<MODEF:mode>_2_i387): Macroize from *fop_sf_2<mode>_i387 and
16370         *fop_df_2<mode>_i387 insn patterns using MODEF mode iterator.
16371         (*fop_<MODEF:mode>_3_i387): Macroize from *fop_sf_3<mode>_i387 and
16372         *fop_df_3<mode>_i387 insn patterns using MODEF mode iterator.
16373         (*fop_xf_2_i387): Rename from *fop_xf_2<mode>_i387.
16374         (*fop_xf_3_i387): Rename from *fop_xf_3<mode>_i387.
16375         (*fop_xf_4_i387): Use <MODE> for mode attribute.
16376         (*fop_xf_5_i387): Ditto.
16377         (*fop_xf_6_i387): Ditto.
16378
16379 2008-05-30  Richard Guenther  <rguenther@suse.de>
16380
16381         * builtins.c (build_string_literal): Avoid generating
16382         a non-gimple_val result.
16383
16384 2008-05-30  DJ Delorie  <dj@redhat.com>
16385
16386         * exec-tool.in: Use an environment variable (private) instead of a
16387         file (shared) as a semaphore, so as to not break parallel builds.
16388
16389 2008-05-30  Steven Bosscher  <stevenb.gcc@gmail.com>
16390
16391         * optabs.c (maybe_encapsulate_block): Remove.
16392         (emit_libcall_block): Adjust accordingly.
16393         * optabs.h (maybe_encapsulate_block): Remove prototype.
16394
16395         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address):
16396         Don't use maybe_encapsulate_block.
16397
16398 2008-05-30  Steven Bosscher  <stevenb.gcc@gmail.com>
16399
16400         * config/rs6000/rs6000.c (rs6000_legitimize_address,
16401         rs6000_legitimize_reload_address, rs6000_emit_move): Make sure an
16402         rtx is a SYMBOL_REF before calling get_pool_constant.
16403
16404 2008-05-30  Eric Botcazou  <ebotcazou@adacore.com>
16405
16406         * fold-const.c (fold_unary) <CASE_CONVERT>: Add ??? comment.
16407
16408 2008-05-30  Danny Smith  <dannysmith@users.sourceforge.net>
16409
16410         * incpath.c: Use HOST_LACKS_INODE_NUMBERS conditional
16411         rather than OS names to choose INO_T_EQ definition.
16412         (DIRS_EQ) [!INO_T_EQ]: Don't worry about case in comparison.
16413         (add_path) [!INO_T_EQ]: Use lrealpath to fill canonical_name field.
16414
16415 2008-05-29  Daniel Franke  <franke.daniel@gmail.com>
16416
16417         PR target/36348
16418         * config/darwin-f.c: New.
16419         * config/t-darwin: Added rule to build darwin-f.o.
16420         * config.gcc: Defined new variable, fortran_target_objs.
16421         (*-*-darwin*): Set fortran_target_objs.
16422         * Makefile.in: Defined new variable FORTRAN_TARGET_OBJS.
16423         * configure.ac: Substitute fortran_target_objs, set FORTRAN_TARGET_OBJS.
16424         * configure: Regenerated.
16425
16426 2008-05-29  H.J. Lu  <hongjiu.lu@intel.com>
16427
16428         PR target/35771
16429         * config/i386/i386.c (ix86_function_arg_boundary): Convert to
16430         canonical type if needed.
16431
16432 2008-05-29  Eric Botcazou  <ebotcazou@adacore.com>
16433
16434         * tree-nested.c (check_for_nested_with_variably_modified): Fix typo.
16435
16436 2008-05-29  Richard Guenther  <rguenther@suse.de>
16437
16438         PR tree-optimization/36343
16439         PR tree-optimization/36346
16440         PR tree-optimization/36347
16441         * tree-flow.h (clobber_what_p_points_to): Declare.
16442         * tree-ssa-structalias.c (set_uids_in_ptset): Whether the
16443         pointed-to variable is dereferenced is irrelevant to whether
16444         the pointer can access the pointed-to variable.
16445         (clobber_what_p_points_to): New function.
16446         * tree-ssa-alias.c (set_initial_properties): Use it.
16447         * tree-ssa.c (verify_flow_sensitive_alias_info): Adjust
16448         call clobber check for NMTs.
16449
16450 2008-05-28  Seongbae Park  <seongbae.park@gmail.com>
16451
16452         * value-prof.c (tree_ic_transform): Use HOST_WIDEST_INT_PRINT_DEC
16453         for printing gcov_type.
16454
16455 2008-05-28  Seongbae Park  <seongbae.park@gmail.com>
16456
16457         * tree-ssa-propagate.c (set_rhs): Preserve the histogram
16458         and the eh region information.
16459         * value-prof.c (gimple_move_stmt_histograms): New function.
16460         * value-prof.h (gimple_move_stmt_histograms): New function declaration.
16461
16462 2008-05-28  Andreas Tobler  <a.tobler@schweiz.org>
16463
16464         * config/pa/pa.md: Remove extern frame_pointer_needed declaration.
16465
16466 2008-05-28  Seongbae Park <seongbae.park@gmail.com>
16467
16468         * value-prof.c (tree_ic_transform): Print counts.
16469         * tree-profile.c (tree_gen_ic_func_profiler):
16470         Clear __gcov_indreict_call_callee variable to avoid misattribution
16471         of the profile.
16472
16473 2008-05-28  Rafael Espíndola  <espindola@google.com>
16474
16475         * see.c (see_def_extension_not_merged): Use copy_rtx_if_shared to avoid
16476         invalid sharing.
16477
16478 2008-05-28  Richard Guenther  <rguenther@suse.de>
16479
16480         PR tree-optimization/36339
16481         * tree-ssa-alias.c (set_initial_properties): Move pt_anything
16482         and clobbering code out of the loop.
16483
16484 2008-05-28  Andreas Krebbel  <krebbel1@de.ibm.com>
16485
16486         * config/s390/constraints.md ('b', 'C', 'D', 'e'): New constraint
16487         letters defined.
16488
16489         * config/s390/s390.c (s390_compare_and_branch_condition_mask,
16490         s390_contiguous_bitmask_p, s390_symref_operand_p,
16491         s390_check_symref_alignment, s390_reload_larl_operand,
16492         s390_reload_symref_address): New functions.
16493         (s390_branch_condition_mnemonic): Support compare and branch
16494         instructions.
16495         (s390_mem_constraint): Avoid symrefs to accepted by the 'T'
16496         and 'W' constraints.
16497         (s390_secondary_reload): Add secondary reloads for unaligned
16498         symbol refs or symbol refs to floating point or QI/TI mode
16499         integer values.
16500         (legitimate_address_p): Accept symbol references as addresses.
16501         (s390_expand_insv): Use rotate and insert selected bits
16502         instruction for insv when building for z10.
16503         (print_operand_address): Handle symbol ref addresses.
16504         (print_operand): Output modifier 'c' added for signed byte values.
16505         (s390_encode_section_info): Mark symbol refs with
16506         SYMBOL_FLAG_NOT_NATURALLY_ALIGNED if appropriate.
16507
16508         * config/s390/s390.md (SIL,RRS,RIS): New instruction formats added.
16509         (length attribute): RRF, RRR have 4 byte length.
16510         (FPALL, INTALL): New mode iterators added.
16511         (*tstdi_sign, *cmpdi_ccs_sign, *cmpsi_ccs_sign,
16512         *cmp<mode>_ccs, *cmpdi_ccu_zero, *cmpdi_ccu, *cmpsi_ccu, *cmphi_ccu,
16513         *movdi_64, *movsi_zarch, *movhi, movmem<mode>, *movmem_short,
16514         *extendsidi2, *extendhidi2_extimm, *extendhisi2_extimm,
16515         *zero_extendsidi2, adddi3, *adddi3_31z, *adddi3_31, addsi3,
16516         *add<mode>3, *add<mode>3_carry1_cc, *add<mode>3_carry2_cc,
16517         *add<mode>3_cc, *add<mode>3_imm_cc, *muldi3_sign, muldi3,
16518         *mulsi3_sign, mulsi3, mulsidi3): Patterns enhanced with z10
16519         instructions.
16520         (*cmphi_ccs_z10, *cmpdi_ccs_signhi_rl, *cmpsi_ccu_zerohi_rlsi,
16521         *cmp<GPR:mode>_ccu_zerohi_rldi, *cmp_and_br_signed_<mode>,
16522         *cmp_and_br_unsigned_<mode>, reload<INTALL:mode><P:mode>_tomem_z10,
16523         reload<INTALL:mode><P:mode>_toreg_z10,
16524         reload<FPALL:mode><P:mode>_tomem_z10,
16525         reload<FPALL:mode><P:mode>_toreg_z10,
16526         reload<P:mode>_larl_odd_addend_z10, *execute_rl, *insv<mode>_z10,
16527         *insv<mode>_z10_noshift, *insv<mode>_or_z10_noshift,
16528         *zero_extendhi<mode>2_z10, *cmp_and_trap_signed_int<mode>,
16529         *cmp_and_trap_unsigned_int<mode>, prefetch): New pattern or expander
16530         definition.
16531         (movmem, clrmem, cmpmem): New splitters added.
16532
16533         * config/s390/predicates.md (larl_operand): Use
16534         SYMBOL_REF_FLAGS (op) & SYMBOL_FLAG_ALIGN1 replaced with
16535         SYMBOL_REF_ALIGN1_P.
16536         (s390_signed_integer_comparison,
16537         s390_unsigned_integer_comparison): New predicates.
16538
16539         * config/s390/s390-protos.h (s390_check_symref_alignment,
16540         s390_contiguous_bitmask_p, s390_reload_larl_operand,
16541         s390_reload_symref_address,
16542         s390_compare_and_branch_condition_mask): Prototypes added.
16543
16544         * config/s390/s390.h (TARGET_MEM_CONSTRAINT,
16545         SYMBOL_REF_ALIGN1_P, SYMBOL_FLAG_NOT_NATURALLY_ALIGNED,
16546         SYMBOL_REF_NOT_NATURALLY_ALIGNED_P): Macro definition added.
16547
16548 2008-05-28  Andreas Krebbel  <krebbel1@de.ibm.com>
16549
16550         * config/s390/s390.c (z10_cost): New cost function for z10.
16551         (s390_handle_arch_option, override_options): Support -march=z10 switch.
16552         (s390_issue_rate): Adjust issue rate for z10.
16553         * config/s390/s390.h (processor_type): Add PROCESSOR_2097_Z10.
16554         (processor_flags): Add PF_Z10.
16555         (TARGET_CPU_Z10, TARGET_Z10): New macro definitions.
16556         * config/s390/s390.md (cpu, cpu_facility attributes): Add z10.
16557         * gcc/config.gcc: Add z10.
16558
16559 2008-05-28  Richard Guenther  <rguenther@suse.de>
16560
16561         PR tree-optimization/36291
16562         * tree-flow. h (struct gimple_df): Remove var_anns member.
16563         * tree-flow-inline.h (gimple_var_anns): Remove.
16564         (var_ann): Simplify.
16565         * tree-dfa.c (create_var_ann): Simplify.
16566         (remove_referenced_var): Clear alias info from var_anns of globals.
16567         * tree-ssa.c (init_tree_ssa): Do not allocate var_anns.
16568         (delete_tree_ssa): Clear alias info from var_anns of globals.
16569         Do not free var_anns.
16570         (var_ann_eq): Remove.
16571         (var_ann_hash): Likewise.
16572
16573 2008-05-28  Mark Shinwell  <shinwell@codesourcery.com>
16574
16575         * config/mips/mips.c (mips_cpu_info_table): Add loongson2e
16576         and loongson2f entries.
16577         (mips_rtx_cost_data): Add entries for Loongson-2E/2F.
16578         * config/mips/mips.h (processor_type): Add Loongson-2E
16579         and Loongson-2F entries.
16580         (TARGET_LOONGSON_2E, TARGET_LOONGSON_2F, TARGET_LOONGSON_2EF): New.
16581         (MIPS_ISA_LEVEL_SPEC): Handle Loongson-2E/2F.
16582         * config/mips/mips.md (define_attr cpu): Add loongson2e and loongson2f.
16583         * doc/invoke.texi (MIPS Options): Document loongson2e
16584         and loongson2f processor names.
16585
16586 2008-05-27  H.J. Lu  <hongjiu.lu@intel.com>
16587
16588         PR target/35767
16589         PR target/35771
16590         * config/i386/i386.c (ix86_function_arg_boundary): Use
16591         alignment of canonical type.
16592         (ix86_expand_vector_move): Check unaligned memory access for
16593         all SSE modes.
16594
16595 2008-05-27  H.J. Lu  <hongjiu.lu@intel.com>
16596
16597         * dwarf2out.c (current_fde): Change return type to dw_fde_ref.
16598         Moved to the front of file.
16599
16600 2008-05-27  Xuepeng Guo  <xuepeng.guo@intel.com>
16601             H.J. Lu  <hongjiu.lu@intel.com>
16602
16603         * dwarf2out.c (current_fde): New.
16604         (add_cfi): Use it.
16605         (lookup_cfa:): Likewise.
16606         (dwarf2out_end_epilogue): Likewise.
16607         (dwarf2out_note_section_used): Likewise.
16608
16609 2008-05-27  Michael Matz  <matz@suse.de>
16610
16611         PR c++/27975
16612         * c.opt (Wenum-compare): New warning option.
16613         * doc/invoke.texi  (Warning Options): Document -Wenum-compare.
16614
16615 2008-05-27  Michael Matz  <matz@suse.de>
16616
16617         PR middle-end/36326
16618         * tree-gimple.c (is_gimple_mem_rhs): Remove work-around for
16619         non-BLKmode types.
16620         * tree-tailcall.c (find_tail_calls): Don't mark calls storing
16621         into memory as tail calls.
16622
16623 2008-05-27  Richard Guenther  <rguenther@suse.de>
16624
16625         PR tree-optimization/36339
16626         * tree-ssa-alias.c (set_initial_properties): Escaped pt_anything
16627         pointers cause all addressable variables to be call clobbered.
16628
16629 2008-05-27  Richard Guenther  <rguenther@suse.de>
16630
16631         PR tree-optimization/36245
16632         * tree-ssa-address.c (add_to_parts): Deal with non-pointer bases.
16633
16634 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
16635
16636         * config/s390/s390.md: Replace all occurences of the 'm'
16637         constraint with 'RT'.
16638
16639 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
16640
16641         * config/s390/s390.md ("cpu_facility", "enabled"): Attribute
16642         definitions added.
16643         ("*movdi_64dfp", "*movdi_64extimm", "*movdi_64"): Merged into
16644         "*movdi_64".
16645         ("*anddi3_extimm", "*anddi3"): Merged into "*anddi3".
16646         ("*iordi3_extimm", "*iordi3"): Merged into "*iordi3".
16647         ("*xordi3_extimm", "*xordi3"): Merged into "*xordi3".
16648
16649 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
16650
16651         * reload.c: (find_reloads): Skip alternatives according to the
16652         "enabled" attribute. Constify the constraint variable.
16653         * recog.c (get_attr_enabled): Add default implementation.
16654         (extract_insn): Set the alternative_enabled_p array
16655         in the recog_data struct.
16656         (preprocess_constraints, constrain_operands): Skip
16657         alternatives according to the "enabled" attribute
16658         * recog.h (struct recog_data): New field alternative_enabled_p.
16659         (skip_alternative): New inline function.
16660         * regclass.c: (record_operand_costs): Check the "enabled" attribute.
16661         (record_reg_classes): Skip alternative according to the
16662         "enabled" attribute.
16663
16664         * doc/md.texi: Add documention for the "enabled" attribute.
16665
16666 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
16667
16668         * defaults.h (TARGET_MEM_CONSTRAINT): New target macro added.
16669         * postreload.c (reload_cse_simplify_operands): Replace 'm'
16670         constraint with TARGET_MEM_CONSTRAINT.
16671         * recog.c (asm_operand_ok, preprocess_constraints,
16672         constrain_operands): Likewise.
16673         * regclass.c (record_reg_classes): Likewise.
16674         * reload.c (find_reloads, alternative_allows_const_pool_ref): Likewise.
16675         * reload1.c (maybe_fix_stack_asms): Likewise.
16676         * stmt.c (parse_output_constraint, parse_input_constraint): Likewise.
16677         * recog.h: Adjust comment.
16678         * genpreds.c (generic_constraint_letters): Remove 'm' constraint.
16679         * genoutput.c (note_constraint): Don't emit error for 'm' constraint.
16680         * doc/md.texi: Add a note to description of 'm' constraint.
16681         * doc/tm.texi: Document the new TARGET_MEM_CONSTRAINT macro.
16682
16683 2008-05-27  Eric Botcazou  <ebotcazou@adacore.com>
16684
16685         * tree-sra.c (sra_type_can_be_decomposed_p) <RECORD_TYPE>: Make sure
16686         that the bitfield is of integral type before testing its precision.
16687
16688 2008-05-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
16689             Sa Liu  <saliu@de.ibm.com>
16690
16691         * config/spu/spu.c (spu_init_libfuncs): Add __multi3, __divti3,
16692         __modti3, __udivti3, __umodti3 and __udivmodti4.
16693         * config/spu/t-spu-elf (LIB2FUNCS_STATIC_EXTRA): Add files
16694         that implement TImode mul and div functions.
16695         * config/spu/multi3.c: New. Implement __multi3.
16696         * config/spu/divmodti4.c: New. Implement _udivmodti4 and others.
16697         * testsuite/gcc.target/spu/muldivti3.c: New. Test TImode mul and div
16698         functions on SPU.
16699
16700 2008-05-26  Steven Bosscher  <stevenb.gcc@gmail.com>
16701
16702         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Generate
16703         new tls_gd_* and tls_ld_* insns instead of an insn sequence.
16704         * config/rs6000/rs6000.md (TLSmode, tls_abi_suffix, tls_insn_suffix,
16705         tls_sysv_suffix): New mode and mode attribute iterators.
16706         (tls_gd_32, tls_gd_64, tls_ld_32, tls_ld_64): Remove.
16707         (lts_gd_aix*, tls_gd_sysv*, tls_ld_aix*, tls_ld_sysv*): New patterns.
16708         (tls_dtprel_*, tls_dtprel_ha_*, tls_dtprel_lo_*, tls_got_dtprel_*,
16709         tls_tprel_*, tls_tprel_ha_*, tls_tprel_lo_*, tls_got_tprel_*,
16710         tls_tls_*): Merge 32 bit and 64 bit variants using aforementioned
16711         iterators.
16712
16713 2008-05-26  Eric Botcazou  <ebotcazou@adacore.com>
16714
16715         PR tree-optimization/36329
16716         * tree.h (CALL_CANNOT_INLINE_P): Add access check.
16717         * tree-gimple.h (CALL_STMT_CANNOT_INLINE_P): New macro.
16718         * cgraphbuild.c (initialize_inline_failed): Use the latter
16719         macro in lieu of the former.
16720         * ipa-inline.c (cgraph_mark_inline): Likewise.
16721         (cgraph_decide_inlining_of_small_function): Likewise.
16722         (cgraph_decide_inlining): Likewise.
16723         (cgraph_decide_inlining_incrementally): Likewise.
16724
16725 2008-05-26  Tristan Gingold  <gingold@adacore.com>
16726             Anatoly Sokolov  <aesok@post.ru>
16727
16728         * config/avr/avr.md ("call_prologue_saves"): Use hi8(gs())/lo8(gs())
16729         instead of pm_lo8/pm_hi8 to makes this call working on avr6.
16730         * config/avr/avr.c (expand_prologue): Tune "call_prologue"
16731         optimization for 'avr6' architecture.
16732
16733 2008-05-26  Andy Hutchinson  <hutchinsonandy@aim.com>
16734
16735         PR target/34932
16736         * config/avr/avr.md (*addhi3_zero_extend2): Remove.
16737
16738 2008-05-26  Richard Guenther  <rguenther@suse.de>
16739
16740         * tree-ssa-sccvn.c (expr_has_constants): Declare.
16741         (visit_reference_op_load): Initialize VN_INFO->has_constants properly.
16742
16743 2008-05-26  H.J. Lu  <hongjiu.lu@intel.com>
16744
16745         PR middle-end/36253
16746         * caller-save.c (insert_restore): Verify alignment of spill space.
16747         (insert_save): Likewise.
16748         * cfgexpand.c (LOCAL_ALIGNMENT): Removed.
16749         * defaults.h (LOCAL_ALIGNMENT): New. Provide default.
16750         (STACK_SLOT_ALIGNMENT): Likewise.
16751         * function.c (LOCAL_ALIGNMENT): Removed.
16752         (get_stack_local_alignment): New.
16753         (assign_stack_local): Use it.  Set alignment on stack slot.
16754         (assign_stack_temp_for_type): Use get_stack_local_alignment.
16755         * config/i386/i386.h (LOCAL_ALIGNMENT): Updated.
16756         (STACK_SLOT_ALIGNMENT): New.
16757         * config/i386/i386.c (ix86_local_alignment): Handle caller-save
16758         stack slot in XFmode.
16759
16760         * doc/tm.texi (STACK_SLOT_ALIGNMENT): New.
16761
16762 2008-05-26  Kai Tietz  <kai.tietz@onevision.com>
16763
16764         PR/36321
16765         * config/i386/i386.md (allocate_stack_worker_64): Make sure
16766         argument operand in rax isn't removed.
16767
16768 2008-05-26  Richard Guenther  <rguenther@suse.de>
16769
16770         PR middle-end/36300
16771         * fold-const.c (extract_muldiv_1): Use TYPE_OVERFLOW_WRAPS,
16772         not TYPE_UNSIGNED.  Use TYPE_PRECISION instead of GET_MODE_SIZE.
16773
16774 2008-05-26  Daniel Franke  <franke.daniel@gmail.com>
16775
16776         PR bootstrap/36331
16777         * c-cppbuiltin.c (define__GNUC__): Re-add definition of __GNUG__.
16778
16779 2008-05-26  Dominique Dhumieres  <dominiq@lps.ens.fr>
16780
16781         * config/darwin-c.c: Include "incpath.h" instead of "c-incpath.h".
16782         * config/t-darwin: Use "incpath.h" instead of "c-incpath.h".
16783
16784 2008-05-25  Eric Botcazou  <ebotcazou@adacore.com>
16785
16786         * tree-nested.c (convert_tramp_reference) <ADDR_EXPR>: Do not
16787         build a trampoline if we don't want one.
16788         * varasm.c (initializer_constant_valid_p) <ADDR_EXPR>: Do not
16789         return zero for nested functions if we don't want a trampoline.
16790
16791 2008-05-26  Daniel Franke  <franke.daniel@gmail.com>
16792
16793         * doc/invoke.texi: Added f77, f77-cpp-input to list of file types.
16794
16795 2008-05-26  Daniel Franke  <franke.daniel@gmail.com>
16796
16797         PR fortran/18428
16798         * c.opt: Removed undocumented option '-lang-fortran'.
16799         * c-common.h: Removed global variable 'lang_fortran'.
16800         * c-opts.c (c_common_handle_option): Removed code to handle
16801         option '-lang-fortran'. Updated includes.
16802         * c-cppbuiltin.c (c_cpp_builtins): Removed conditional
16803         definition of '__GFORTRAN__'.
16804         (define__GNUC__): Reimplemented to use BASEVER and
16805         cpp_define_formatted.
16806         (builtin_define_with_value_n): Removed.
16807         * c-incpath.h: Renamed to ...
16808         * incpath.h: ... this.
16809         * c-incpath.c: Renamed to ...
16810         * incpath.c: ... this. Updated includes.
16811         * fix-header.c: Updated includes.
16812         * Makefile.in: Replaced c-incpath.[ch] by incpath.[ch].
16813         (c-cppbuiltin.o): Added dependency on and definition of BASEVER.
16814         (OBJ-archive): Added cppdefault.o, incpath.o and prefix.o.
16815
16816 2008-05-25  Eric Botcazou  <ebotcazou@adacore.com>
16817
16818         * tree.h: Update the table of flags used on tree nodes.
16819         (TREE_NO_TRAMPOLINE): New accessor for static_flag.
16820         (SAVE_EXPR_RESOLVED_P): Use automatically-built access check.
16821         (FORCED_LABEL): Add access check.
16822         (CALL_EXPR_RETURN_SLOT_OPT): Likewise.
16823         (ASM_INPUT_P): Likewise.
16824         (ASM_VOLATILE_P): Likewise.
16825         (EH_FILTER_MUST_NOT_THROW): Access static_flag directly.
16826         (OMP_SECTION_LAST): Access private_flag directly.
16827         (OMP_RETURN_NOWAIT): Likewise.
16828         (OMP_PARALLEL_COMBINED): Likewise.
16829         (OMP_CLAUSE_PRIVATE_DEBUG): Access public_flag directly.
16830         (OMP_CLAUSE_LASTPRIVATE_FIRSTPRIVATE): Likewise.
16831         * tree-ssa-propagate.c (STMT_IN_SSA_EDGE_WORKLIST): Access
16832         deprecated_flag directly.
16833
16834 2008-05-25  H.J. Lu  <hongjiu.lu@intel.com>
16835
16836         * final.c (frame_pointer_needed): Removed.
16837         * flags.h (frame_pointer_needed): Likewise.
16838
16839         * function.h (rtl_data): Add frame_pointer_needed.
16840         (frame_pointer_needed): New.
16841
16842 2008-05-25  Arthur Loiret  <arthur.loiret@u-psud.fr>
16843
16844         * config.gcc (sh2[lbe]*-*-linux*): Allow target.
16845
16846 2008-05-25  Steven Bosscher  <stevenb.gcc@gmail.com>
16847
16848         * gcse.c (hash_scan_set): Do not pick up a REG_EQUAL value if
16849         SRC is a REG.
16850
16851 2008-05-25  Alan Modra  <amodra@bigpond.net.au>
16852
16853         * c-common.c (strip_array_types): Move function to..
16854         * tree.c: ..here.
16855         (get_inner_array_type): Delete.
16856         * c-common.h (strip_array_types): Move declaration to..
16857         * tree.h: ..here.
16858         (get_inner_array_type): Delete.
16859         * config/i386/i386.c (x86_field_alignment): Use strip_array_types.
16860         * config/rs6000/aix.h (ADJUST_FIELD_ALIGN): Likewise.
16861         * config/rs6000/linux64.h (ADJUST_FIELD_ALIGN): Likewise.
16862         * config/pa/pa.c (emit_move_sequence): Likewise.
16863
16864 2008-05-24  H.J. Lu  <hongjiu.lu@intel.com>
16865
16866         * config/i386/i386.md (*sse_prologue_save_insn): Set length
16867         attribute to 34.
16868
16869 2008-05-24  Andy Hutchinson  <hutchinsonandy@aim.com>
16870
16871         * function.c: Include target hook for nonlocal_goto frame value.
16872
16873 2008-05-24  Richard Guenther  <rguenther@suse.de>
16874
16875         * tree-dfa.c (refs_may_alias_p): Re-instantiate case that a scalar
16876         variable can be only accessed through a pointer or a union.
16877
16878 2008-05-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16879
16880         * builtins.c (fold_builtin_fpclassify): Fix spelling of FP_INFINITE.
16881         * doc/extend.texi: Likewise.
16882
16883 2008-05-23  DJ Delorie  <dj@redhat.com>
16884
16885         * config/m32c/jump.md (untyped_call): Add.
16886
16887         * config/m32c/m32c.c (m32c_return_addr_rtx): Change pointer type
16888         for A24 to PSImode.
16889         (m32c_address_cost): Detail costs for indirect offsets.
16890
16891 2008-05-23  Rafael Espíndola  <espindola@google.com>
16892
16893         * see.c (see_get_extension_data): Don't use SUBREG_REG to test
16894         if a node is a SUBREG.
16895         (see_analyze_one_def): Don't use SUBREG_REG to test if a node
16896         is a SUBREG.
16897
16898 2008-05-23  Paul Brook  <paul@codesourcery.com>
16899             Carlos O'Donell  <carlos@codesourcery.com>
16900
16901         * doc/extend.texi: Clarify use of __attribute__((naked)).
16902         * doc/tm.texi: Document TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS.
16903         * target.h (gcc_target): Add allocate_stack_slots_for_args.
16904         * function.c (use_register_for_decl): Use
16905         targetm.calls.allocate_stack_slots_for_args.
16906         * target-def.h (TARGET_CALLS): Add TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS.
16907         * config/arm/arm.c (arm_allocate_stack_slots_for_args): New function.
16908         (TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS): Define.
16909
16910 2008-05-23  Eric Botcazou  <ebotcazou@adacore.com>
16911
16912         * expr.c (highest_pow2_factor) <BIT_AND_EXPR>: New case.
16913
16914 2008-05-23  Steven Munroe  <sjmunroe@us.ibm.com>
16915
16916         * config/rs6000/darwin-ldouble.c (fmsub): Eliminate the full
16917         PACK/UNPACK between FP_SUB_Q and FD_TRUNC so that the result
16918         is only rounded once.
16919
16920 2008-05-23  Richard Guenther  <rguenther@suse.de>
16921
16922         * tree-ssa-operands.c (mark_difference_for_renaming): Use bitmap_xor.
16923
16924 2008-05-23  Uros Bizjak  <ubizjak@gmail.com>
16925             Jakub Jelinek  <jakub@redhat.com>
16926
16927         PR target/36079
16928         * configure.ac: Handle --enable-cld.
16929         * configure: Regenerated.
16930         * config.gcc: Add USE_IX86_CLD to tm_defines for x86 targets.
16931         * config/i386/i386.h (struct machine_function): Add needs_cld field.
16932         (ix86_current_function_needs_cld): New define.
16933         * config/i386/i386.md (UNSPEC_CLD): New unspec volatile constant.
16934         (cld): New isns pattern.
16935         (strmov_singleop, rep_mov, strset_singleop, rep_stos, cmpstrnqi_nz_1,
16936         cmpstrnqi_1, strlenqi_1): Set ix86_current_function_needs_cld flag.
16937         * config/i386/i386.opt (mcld): New option.
16938         * config/i386/i386.c (ix86_expand_prologue): Emit cld insn if
16939         TARGET_CLD and ix86_current_function_needs_cld.
16940         (override_options): Use -mcld by default for 32-bit code if
16941         USE_IX86_CLD.
16942
16943         * doc/install.texi (Options specification): Document --enable-cld.
16944         * doc/invoke.texi (Machine Dependent Options)
16945         [i386 and x86-64 Options]: Add -mcld option.
16946         (Intel 386 and AMD x86-64 Options): Document -mcld option.
16947
16948 2008-05-23  Kai Tietz  <kai.tietz@onevison.com>
16949         * config/i386/i386.c (return_in_memory_32): Add ATTRIBUTE_UNUSED.
16950         (return_in_memory_64): Likewise.
16951         (return_in_memory_ms_64): Likewise.
16952
16953 2008-05-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16954
16955         * builtin-types.def (BT_FN_INT_INT_INT_INT_INT_INT_VAR): New.
16956         * builtins.c (fold_builtin_fpclassify): New.
16957         (fold_builtin_varargs): Handle BUILT_IN_FPCLASSIFY.
16958         * builtins.def (BUILT_IN_FPCLASSIFY): New.
16959         * c-common.c (handle_type_generic_attribute): Adjust to accept
16960         fixed arguments before an elipsis.
16961         (check_builtin_function_arguments): Handle BUILT_IN_FPCLASSIFY.
16962         * doc/extend.texi: Document __builtin_fpclassify.
16963
16964 2008-05-22  Aldy Hernandez  <aldyh@redhat.com>
16965
16966         * omp-low.c (gate_expand_omp_ssa): Remove.
16967         (pass_expand_omp_ssa): Remove.
16968         (gate_expand_omp): Do not check for flag_openmp_ssa.
16969         * common.opt (-fopenmp-ssa): Remove.
16970         * passes.c (init_optimization_passes): Remove pass_expand_omp_ssa.
16971
16972 2008-05-22  Kaz Kojima  <kkojima@gcc.gnu.org>
16973
16974         * config/sh/sh.opt (mfixed-range): New option.
16975         * config/sh/sh-protos.h (sh_fix_range): Declare.
16976         * config/sh/sh.c (sh_fix_range): New function.
16977         * config/sh/sh.h (sh_fixed_range_str): Declare.
16978         (OVERRIDE_OPTIONS): Call sh_fix_range if sh_fixed_range_str
16979         is not empty.
16980         * doc/invoke.texi (SH Options): Document -mfixed-range.
16981
16982 2008-05-22  Kai Tietz  <kai.tietz@onevision.com>
16983
16984         * config/i386/sol2-10.h (SUBTARGET_RETURN_IN_MEMORY): Undefine
16985         it before the redeclaration.
16986
16987 2008-05-22  Anatoly Sokolov <aesok@post.ru>
16988
16989         * config/avr/avr.c (get_sequence_length): Add new function.
16990         (expand_prologue, expand_epilogue): Remove duplicate code.
16991
16992 2008-05-22  Rafael Espíndola  <espindola@google.com>
16993
16994         * see.c (see_pre_insert_extensions): Use copy_rtx to avoid invalid rtx
16995         sharing.
16996
16997 2008-05-22  H.J. Lu  <hongjiu.lu@intel.com>
16998
16999         * defaults.h (UNITS_PER_SIMD_WORD): Add scalar mode as argument.
17000         * doc/tm.texi (UNITS_PER_SIMD_WORD): Likewise.
17001
17002         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Replace
17003         UNITS_PER_SIMD_WORD with GET_MODE_SIZE (TYPE_MODE (vectype)).
17004         (vect_update_misalignment_for_peel): Likewise.
17005         (vector_alignment_reachable_p): Likewise.
17006         * tree-vect-transform.c (vectorizable_load): Likewise.
17007         * tree-vectorizer.c (vect_supportable_dr_alignment): Likewise.
17008         (get_vectype_for_scalar_type): Pass mode of scalar_type
17009         to UNITS_PER_SIMD_WORD.
17010
17011         * config/arm/arm.h (UNITS_PER_SIMD_WORD): Updated.
17012         * config/i386/i386.h (UNITS_PER_SIMD_WORD): Likewise.
17013         * config/mips/mips.h (UNITS_PER_SIMD_WORD): Likewise.
17014         * config/rs6000/rs6000.h (UNITS_PER_SIMD_WORD): Likewise.
17015         * config/sparc/sparc.h (UNITS_PER_SIMD_WORD): Likewise.
17016
17017 2008-05-22  Ira Rosen  <irar@il.ibm.com>
17018
17019         PR tree-optimization/36293
17020         * tree-vect-transform.c (vect_transform_strided_load): Don't check
17021         if the first load must be skipped because of a gap.
17022
17023 2008-05-22  Richard Guenther  <rguenther@suse.de>
17024
17025         * tree-dfa.c (refs_may_alias_p): Exit early if possible.  Handle
17026         more cases of offset disambiguation that is possible if
17027         strict-aliasing rules apply.
17028         * tree-ssa-loop-im.c (mem_refs_may_alias_p): Use refs_may_alias_p
17029         for basic offset and type-based disambiguation.
17030
17031 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
17032
17033         * config/i386/i386.c (ix86_expand_vector_init_one_var): Use
17034         ix86_expand_vector_set on V16QImode for SSE4.1.
17035
17036 2008-05-21  Tom Tromey  <tromey@redhat.com>
17037
17038         * c.opt (Wimport): Mark as undocumented.
17039         * doc/invoke.texi (Option Summary): Don't mention -Wimport or
17040         -Wno-import.
17041         (Warning Options): Likewise.
17042         * doc/cppopts.texi: Don't mention -Wimport.
17043
17044 2008-05-21  Sebastian Pop  <sebastian.pop@amd.com>
17045
17046         PR tree-optimization/36287
17047         PR tree-optimization/36286
17048         * lambda-code.c (build_access_matrix): Do not use the loop->num
17049         for computing the number of induction variables: use the loop depth
17050         instead.
17051
17052 2008-05-21  Kai Tietz  <kai.tietz@onevision.com>
17053
17054         PR/36280
17055         * config/i386/cygming.h (ASM_OUTPUT_LABELREF): Honor
17056         option -f(no-)leading-underscore.
17057
17058 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
17059
17060         * config/i386/i386.c (ix86_expand_vector_init_general): Use
17061         GET_MODE_NUNITS (mode).
17062
17063 2008-05-21  Peter Bergner  <bergner@vnet.ibm.com>
17064
17065         * doc/invoke.texi: Add cpu_type's 464 and 464fp.
17066         (-mmulhw): Add 464 to description.
17067         (-mdlmzb): Likewise.
17068         * config.gcc: Handle --with-cpu=464 and --with-cpu=464fp.
17069         * config/rs6000/rs6000.c (processor_target_table): Add 464 and
17070         464fp entries.
17071         * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add 464 and 464fp support.
17072         * config/rs6000/t-fprules (MULTILIB_MATCHES_FLOAT): Include -mcpu=464.
17073         * config/rs6000/rs6000.md: Update comments for 464.
17074
17075 2008-05-21  Janis Johnson  <janis187@us.ibm.com>
17076
17077         * doc/sourcebuild.texi (Test Directives): Add dg-xfail-run-if.
17078
17079 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
17080
17081         * config/i386/sse.md (vec_extractv4sf): Removed.
17082         (vec_extractv2df): Likewise.
17083         (vec_extractv2di): Likewise.
17084         (vec_extractv4si): Likewise.
17085         (vec_extractv8hi): Likewise.
17086         (vec_extractv16qi): Likewise.
17087         (vec_extract<mode>): New.
17088
17089 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
17090
17091         * config/i386/sse.md (vec_setv4sf): Removed.
17092         (vec_setv2df): Likewise.
17093         (vec_setv2di): Likewise.
17094         (vec_setv4si): Likewise.
17095         (vec_setv8hi): Likewise.
17096         (vec_setv16qi): Likewise.
17097         (vec_set<mode>): New.
17098
17099 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
17100
17101         * config/i386/i386.c (ix86_expand_vector_init_general): Remove
17102         goto for vec_concat and vec_interleave.
17103
17104 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
17105
17106         * config/i386/sse.md (vec_initv4sf): Removed.
17107         (vec_initv2df): Likewise.
17108         (vec_initv2di): Likewise.
17109         (vec_initv4si): Likewise.
17110         (vec_initv8hi): Likewise.
17111         (vec_initv16qi): Likewise.
17112         (vec_init<mode>): New.
17113
17114 2008-05-21  Joseph Myers  <joseph@codesourcery.com>
17115
17116         * collect2.c (find_a_file): Use IS_ABSOLUTE_PATH.
17117
17118 2008-05-21  Tom Tromey  <tromey@redhat.com>
17119
17120         * ggc-zone.c (lookup_page_table_if_allocated): New function.
17121         (zone_find_object_offset): Likewise.
17122         (gt_ggc_m_S): Likewise.
17123         (highest_bit): Likewise.
17124         * ggc-page.c (gt_ggc_m_S): New function.
17125         * stringpool.c (string_stack): Remove.
17126         (init_stringpool): Update.
17127         (ggc_alloc_string): Use ggc_alloc.
17128         (maybe_delete_ident): New function.
17129         (ggc_purge_stringpool): Likewise.
17130         (gt_ggc_m_S): Remove.
17131         * ggc-common.c (ggc_protect_identifiers): New global.
17132         (ggc_mark_roots): Call ggc_purge_stringpool.  Use
17133         ggc_protect_identifiers.
17134         * ggc.h (ggc_protect_identifiers): Declare.
17135         (gt_ggc_m_S): Update.
17136         (ggc_purge_stringpool): Declare.
17137         * toplev.c (compile_file): Set and reset ggc_protect_identifiers.
17138         * gengtype.c (write_types_process_field) <TYPE_STRING>: Remove
17139         special case.
17140         (write_root): Cast gt_ggc_m_S to gt_pointer_walker.
17141
17142 2008-05-21  David S. Miller  <davem@davemloft.net>
17143
17144         * config.gcc (sparc-*-linux*): Always include sparc/t-linux in
17145         tmake_file.
17146
17147 2008-05-21  Eric Botcazou  <ebotcazou@adacore.com>
17148
17149         * cfgexpand.c (tree_expand_cfg): Zap the EH throw statement table
17150         once finished.
17151
17152 2008-05-20  David Daney  <ddaney@avtrex.com>
17153
17154         * config/mips/mips.md (UNSPEC_SYNC_NEW_OP_12,
17155         UNSPEC_SYNC_OLD_OP_12, UNSPEC_SYNC_EXCHANGE_12): New define_constants.
17156         (UNSPEC_SYNC_EXCHANGE, UNSPEC_MEMORY_BARRIER, UNSPEC_SET_GOT_VERSION,
17157         UNSPEC_UPDATE_GOT_VERSION): Renumber.
17158         (optab, insn): Add 'plus' and 'minus' to define_code_attr.
17159         (atomic_hiqi_op): New define_code_iterator.
17160         (sync_compare_and_swap<mode>): Call mips_expand_atomic_qihi instead of
17161         mips_expand_compare_and_swap_12.
17162         (compare_and_swap_12): Use MIPS_COMPARE_AND_SWAP_12 instead of
17163         MIPS_COMPARE_AND_SWAP_12_0.  Pass argument to MIPS_COMPARE_AND_SWAP_12.
17164         (sync_<optab><mode>, sync_old_<optab><mode>,
17165         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
17166         sync_new_nand<mode>): New define_expands for HI and QI mode operands.
17167         (sync_<optab>_12, sync_old_<optab>_12, sync_new_<optab>_12,
17168         sync_nand_12, sync_old_nand_12, sync_new_nand_12): New insns.
17169         (sync_lock_test_and_set<mode>): New define_expand for HI and QI modes.
17170         (test_and_set_12): New insn.
17171         (sync_old_add<mode>, sync_new_add<mode>, sync_old_<optab><mode>,
17172         sync_new_<optab><mode>, sync_old_nand<mode>,
17173         sync_new_nand<mode>, sync_lock_test_and_set<mode>):  Add early
17174         clobber to operand 0 for SI and DI mode insns.
17175         * config/mips/mips-protos.h (mips_gen_fn_6, mips_gen_fn_5,
17176         mips_gen_fn_4): New typedefs.
17177         (mips_gen_fn_ptrs): Define new union type.
17178         (mips_expand_compare_and_swap_12): Remove declaration.
17179         (mips_expand_atomic_qihi): Declare function.
17180         * config/mips/mips.c (mips_expand_compare_and_swap_12): Rename to...
17181         (mips_expand_atomic_qihi): ... this.  Use new generator function
17182         parameter.
17183         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP_12): Add OPS parameter.
17184         (MIPS_COMPARE_AND_SWAP_12_0): Delete macro.
17185         (MIPS_COMPARE_AND_SWAP_12_ZERO_OP, MIPS_COMPARE_AND_SWAP_12_NONZERO_OP,
17186         MIPS_SYNC_OP_12, MIPS_SYNC_OP_12_NOT_NOP,
17187         MIPS_SYNC_OP_12_NOT_NOT, MIPS_SYNC_OLD_OP_12,
17188         MIPS_SYNC_OLD_OP_12_NOT_NOP, MIPS_SYNC_OLD_OP_12_NOT_NOP_REG,
17189         MIPS_SYNC_OLD_OP_12_NOT_NOT, MIPS_SYNC_OLD_OP_12_NOT_NOT_REG,
17190         MIPS_SYNC_NEW_OP_12, MIPS_SYNC_NEW_OP_12_NOT_NOP,
17191         MIPS_SYNC_NEW_OP_12_NOT_NOT, MIPS_SYNC_EXCHANGE_12,
17192         MIPS_SYNC_EXCHANGE_12_ZERO_OP, MIPS_SYNC_EXCHANGE_12_NONZERO_OP):
17193         New macros.
17194
17195 2008-05-20  H.J. Lu  <hongjiu.lu@intel.com>
17196
17197         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Add
17198         the missing break.
17199
17200 2008-05-20  Anatoly Sokolov <aesok@post.ru>
17201
17202         * config/avr/avr.h (machine_function): Add 'is_OS_main' field.
17203         * config/avr/avr.c (avr_OS_main_function_p): Add new function.
17204         (avr_attribute_table): Add 'OS_main' function attribute.
17205         (avr_regs_to_save, expand_prologue, expand_epilogue): Handle
17206         functions with 'OS_main' attribute.
17207
17208 2008-05-20  Richard Guenther  <rguenther@suse.de>
17209
17210         PR tree-optimization/35204
17211         * tree-ssa-sccvn.c (extract_and_process_scc_for_name): New
17212         helper, split out from ...
17213         (DFS): ... here.  Make the DFS walk non-recursive.
17214
17215 2008-05-20  Sebastian Pop  <sebastian.pop@amd.com>
17216             Jan Sjodin  <jan.sjodin@amd.com>
17217
17218         PR tree-optimization/36181
17219         * tree-parloops.c (loop_has_vector_phi_nodes): New.
17220         (parallelize_loops): Don't parallelize when the loop has vector
17221         phi nodes.
17222
17223 2008-05-20  Jan Sjodin  <jan.sjodin@amd.com>
17224             Sebastian Pop  <sebastian.pop@amd.com>
17225
17226         * tree-loop-linear.c (gather_interchange_stats): Look in the access
17227         matrix, and never look at the tree representation of the memory
17228         accesses.
17229         (linear_transform_loops): Computes parameters and access matrices.
17230         * tree-data-ref.c (compute_data_dependences_for_loop): Returns false
17231         when fails.
17232         (access_matrix_get_index_for_parameter): New.
17233         * tree-data-ref.h (struct access_matrix): New.
17234         (AM_LOOP_NEST_NUM, AM_NB_INDUCTION_VARS, AM_PARAMETERS, AM_MATRIX,
17235         AM_NB_PARAMETERS, AM_CONST_COLUMN_INDEX, AM_NB_COLUMNS,
17236         AM_GET_SUBSCRIPT_ACCESS_VECTOR, AM_GET_ACCESS_MATRIX_ELEMENT,
17237         am_vector_index_for_loop): New.
17238         (struct data_reference): Add field access_matrix.
17239         (DR_ACCESS_MATRIX): New.
17240         (compute_data_dependences_for_loop): Update declaration.
17241         (lambda_collect_parameters, lambda_compute_access_matrices): Declared.
17242         * lambda.h (lambda_vector_vec_p): Declared.
17243         * lambda-code.c: Depend on pointer-set.h.
17244         (lambda_collect_parameters_from_af, lambda_collect_parameters,
17245         av_for_af_base, av_for_af, build_access_matrix,
17246         lambda_compute_access_matrices): New.
17247         * Makefile.in (lambda-code.o): Depend on pointer-set.h.
17248
17249 2008-05-20  Joseph Myers  <joseph@codesourcery.com>
17250
17251         * doc/install.texi2html: Generate gcc-vers.texi in $DESTDIR not
17252         $SOURCEDIR/include.
17253
17254 2008-05-20  Jan Sjodin  <jan.sjodin@amd.com>
17255             Sebastian Pop  <sebastian.pop@amd.com>
17256
17257         PR tree-optimization/36206
17258         * tree-scalar-evolution.c: Remove enum INSERT_SUPERLOOP_CHRECS,
17259         FOLD_CONVERSIONS.
17260         (instantiate_scev_1): Rename flags to fold_conversions.
17261         Do not check for INSERT_SUPERLOOP_CHRECS, keep SSA_NAMEs defined
17262         outeside instantiation_loop.
17263         * tree-chrec.h (evolution_function_is_affine_in_loop): New.
17264         (evolution_function_is_affine_or_constant_p): Removed.
17265         * tree-data-ref.c (dr_analyze_indices): Replace resolve_mixers with
17266         instantiate_scev.
17267         (analyze_siv_subscript): Pass in the loop nest number.
17268         Call evolution_function_is_affine_in_loop instead of
17269         evolution_function_is_affine_p.
17270         (analyze_overlapping_iterations): Pass in the loop nest number.
17271
17272 2008-05-20  Jan Sjodin  <jan.sjodin@amd.com>
17273             Sebastian Pop  <sebastian.pop@amd.com>
17274
17275         PR tree-optimization/36206
17276         * tree-chrec.h (chrec_fold_op): New.
17277         * tree-data-ref.c (initialize_matrix_A): Traverse NOP_EXPR, PLUS_EXPR,
17278         and other trees.
17279
17280 2008-05-20  Nathan Sidwell  <nathan@codesourcery.com>
17281
17282         * c-incpath.c (INO_T_EQ): Do not define on non-inode systems.
17283         (DIRS_EQ): New.
17284         (remove_duplicates): Do not set inode on non-inode systems.
17285         Use DIRS_EQ.
17286
17287 2008-05-20  Sandra Loosemore  <sandra@codesourcery.com>
17288
17289         * config.gcc (tm_file): Update comments about relative pathnames.
17290
17291 2008-05-20  Richard Guenther  <rguenther@suse.de>
17292
17293         * tree-ssa-reassoc.c (fini_reassoc): Use the statistics infrastructure.
17294         * tree-ssa-sccvn.c (process_scc): Likewise.
17295         * tree-ssa-sink.c (execute_sink_code): Likewise.
17296         * tree-ssa-threadupdate.c (thread_through_all_blocks): Likewise.
17297         * tree-vrp.c (process_assert_insertions): Likewise.
17298         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Likewise.
17299         (perform_tree_ssa_dce): Likewise.
17300         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Likewise.
17301         (dump_dominator_optimization_stats): Likewise.
17302         * tree-vectorizer.c (vectorize_loops): Likewise.
17303
17304 2008-05-20  Richard Guenther  <rguenther@suse.de>
17305
17306         * tree-vn.c (vn_lookup_with_vuses): Do not use the alias oracle.
17307
17308 2008-05-20  Kai Tietz  <kai.tietz@onevision.com>
17309
17310         * config/i386/i386-protos.h (ix86_return_in_memory): Removed.
17311         (ix86_i386elf_return_in_memory): Likewise.
17312         (ix86_i386interix_return_in_memory): Likewise.
17313         * config/i386/i386-interix.h (TARGET_RETURN_IN_MEMORY): Removed.
17314         (SUBTARGET_RETURN_IN_MEMORY): New.
17315         * config/i386/i386elf.h: Likewise.
17316         * config/i386/ptx4-i.h: Likewise.
17317         * config/i386/sol2-10.h: Likewise.
17318         * config/i386/sysv4.h: Likewise.
17319         * config/i386/vx-common.h: Likewise.
17320         * config/i386/i386.h (TARGET_RETURN_IN_MEMORY): Removed.
17321         * config/i386/i386.c (ix86_return_in_memory): Made static and
17322         make use of optional SUBTARGET_RETURN_IN_MEMORY macro.
17323         (ix86_i386elf_return_in_memory): Removed.
17324         (ix86_i386interix_return_in_memory): Removed.
17325         (TARGET_RETURN_IN_MEMORY): Declared within i386.c only.
17326         * target-def.h (TARGET_RETURN_IN_MEMORY): Remove protection #ifdef.
17327
17328 2008-05-20  Alexandre Oliva  <aoliva@redhat.com>
17329
17330         * cselib.c (cselib_record_sets): Use correct mode for IF_THEN_ELSE.
17331
17332 2008-05-19  Xinliang David Li  <davidxl@google.com>
17333
17334         * tree-ssa-dce.c: Revert patches of 2008-05-17 and 2008-05-18.
17335         * opts.c: Ditto.
17336         * common.opt: Ditto.
17337         * doc/invoke.texi: Ditto.
17338
17339 2008-05-19  Eric Botcazou  <ebotcazou@adacore.com>
17340
17341         * tree.c (substitute_in_expr) <tcc_vl_exp>: Fix thinko.
17342         (substitute_placeholder_in_expr) <tcc_vl_exp>: Minor tweak.
17343
17344 2008-05-19  H.J. Lu  <hongjiu.lu@intel.com>
17345
17346         * config/i386/i386.c (ix86_expand_vector_init_concat): Change
17347         sizes of operand array from 8/4 to 4/2.
17348         (ix86_expand_vector_init_general): Change size of operand array
17349         from 32 to 16.  Remove op0, op1 and half_mode.
17350
17351 2008-05-19  H.J. Lu  <hongjiu.lu@intel.com>
17352
17353         * config/i386/i386.c (ix86_expand_vector_init_concat): New.
17354         (ix86_expand_vector_init_interleave): Likewise.
17355         (ix86_expand_vector_init_general): Use them.  Assert
17356         word_mode == SImode when n_words == 4.
17357
17358 2008-05-19  Uros Bizjak  <ubizjak@gmail.com>
17359
17360         * config/i386/i386.c (ix86_secondary_reload): New static function.
17361         (TARGET_SECONDARY_RELOAD): New define.
17362         * config/i386/i386.h (SECONDARY_OUTPUT_RELOAD_CLASS): Remove.
17363         * config/i386/i386.md (reload_outqi): Remove.
17364
17365 2008-05-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
17366
17367         PR middle-end/35509
17368         * builtins.c (mathfn_built_in_1): Renamed from mathfn_built_in.
17369         Add `implicit' parameter.  Handle BUILT_IN_SIGNBIT.
17370         (mathfn_built_in): Rewrite in terms of mathfn_built_in_1.
17371         (fold_builtin_classify): Handle BUILT_IN_ISINF_SIGN.
17372         (fold_builtin_1): Likewise.
17373         * builtins.def (BUILT_IN_ISINF_SIGN): New.
17374         c-common.c (check_builtin_function_arguments): Handle
17375         BUILT_IN_ISINF_SIGN.
17376         * doc/extend.texi: Document __builtin_isinf_sign.
17377         * fold-const.c (operand_equal_p): Handle COND_EXPR.
17378
17379 2008-05-18  Eric Botcazou  <ebotcazou@adacore.com>
17380
17381         * tree-ssa-dom.c (tree_ssa_dominator_optimize): If some blocks need
17382         EH cleanup at the end of the pass, search for those that have been
17383         turned into forwarder blocks and do the cleanup on their successor.
17384
17385 2008-05-18  Richard Guenther  <rguenther@suse.de>
17386
17387         * tree-cfg.c (verify_gimple_expr): Allow conversions from
17388         pointers to sizetype and vice versa.
17389
17390 2008-05-18 Xinliang David Li   <davidxl@google.com>
17391
17392         * gcc/tree-ssa-dce.c: Coding style fix.
17393         (check_pow): Documentation comment.
17394         (check_log): Documenation comment. Coding style fix.
17395         (is_unnecessary_except_errno_call): Ditto.
17396         (gen_conditions_for_pow): Ditto.
17397         (gen_conditions_for_log): Ditto.
17398         (gen_shrink_wrap_conditions): Ditto.
17399         (shrink_wrap_one_built_in_calls): Ditto.
17400         * gcc/doc/invoke.texi: Better documentation string.
17401         * ChangeLog: Fix wrong change log entries from
17402         May 17 checkin on function call DCE.
17403
17404 2008-05-17  Kaz Kojima  <kkojima@gcc.gnu.org>
17405
17406         * config/sh/sh.c (sh_output_mi_thunk): Update the use of init_flow.
17407
17408 2008-05-17  Kenneth Zadeck <zadeck@naturalbridge.com>
17409
17410         * doc/rtl.texi (RTL_CONST_CALL_P, RTL_PURE_CALL_P): Fixed typos.
17411         * df-problems.c (simulation routines): Fixed block comment to
17412         properly say how to add forwards scanning functions.
17413
17414 2008-05-17  Eric Botcazou  <ebotcazou@adacore.com>
17415
17416         * tree-inline.c (setup_one_parameter): Remove dead code.
17417
17418 2008-05-17  Eric Botcazou  <ebotcazou@adacore.com>
17419
17420         * fold-const.c (fold_unary) <CASE_CONVERT>: Fold the cast into
17421         a BIT_AND_EXPR only for an INTEGER_TYPE.
17422
17423 2008-05-17 Xinliang David Li   <davidxl@google.com>
17424
17425         * gcc/tree-ssa-dce.c (cond_dead_built_in_calls): New static variable.
17426         (check_pow, check_log, is_unnecessary_except_errno_call): New
17427         functions to check for eliminating math functions that are pure
17428         except for setting errno.
17429         (gen_conditions_for_pow, gen_conditionas_for_log): New functions to
17430         general condition expressions for shrink-wrapping pow/log calls.
17431         (gen_shrink_wrap_conditions): Ditto.
17432         (shrink_wrap_one_built_in_call): Ditto.
17433         (shrink_wrap_conditional_dead_built_in_calls): Ditto.
17434         (mark_operand_necessary): If debugging, output if OP is necessary.
17435         (eliminate_unnecessary_stmts): Eliminate pow, log calls that are
17436         unnecessary.
17437         * gcc/opts.c (decode_options): set flag_tree_builtin_dce to 1 when
17438         opt level >= 2.
17439         * gcc/common.opt: New user flag -ftree-builtin-dce.
17440         * gcc/doc/invoke.texi (-ftree-builtin-dce): New option.
17441
17442 2008-05-16  David S. Miller  <davem@davemloft.net>
17443
17444         * config/sparc/linux.h (NO_PROFILE_COUNTERS): Undef before overriding.
17445         * config/sparc/linux64.h (NO_PROFILE_COUNTERS): Likewise.
17446
17447 2008-05-16  Uros Bizjak  <ubizjak@gmail.com>
17448
17449         PR target/36246
17450         * config/i386/i386.h (SECONDARY_MEMORY_NEEDED_MODE): New define.
17451
17452 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
17453
17454         * ifcvt.c (dead_or_predicable): Rename
17455         df_simulate_one_insn_backwards to df_simulate_one_insn.
17456         * recog.c (peephole2_optimize): Ditto.
17457         * rtl-factoring.c (collect_pattern_seqs, clear_regs_live_in_seq):
17458         Ditto.
17459         * df.h: Rename df_simulate_one_insn_backwards to
17460         df_simulate_one_insn.  and delete df_simulate_one_insn_forwards.
17461         * df-problems.c (df_simulate_artificial_refs_at_top) Reversed
17462         scanning of defs and uses.
17463         (df_simulate_one_insn_backwards): Renamed to df_simulate_one_insn.
17464         (df_simulate_one_insn_forwards): Removed.
17465
17466 2008-05-16  Doug Kwan  <dougkwan@google.com>
17467
17468         * real.c (real_to_decimal, real_to_hexadecimal): Distinguish
17469         QNaN & SNaN.
17470         (real_from_string): Handle NaNs and Inf as approriate.
17471
17472 2008-05-16  Nathan Froyd  <froydnj@codesourcery.com>
17473
17474         * doc/gty.texi (Source Files Containing Type Information): Note
17475         that headers should appear first in the gtfiles list.
17476
17477 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
17478
17479         * tree.def (COND_EXEC): Properly documented this code.
17480
17481 2008-05-16  Diego Novillo  <dnovillo@google.com>
17482
17483         * dwarf2asm.c (dw2_assemble_integer): Clarify comment.
17484         * tree-nested.c (get_trampoline_type): Set DECL_CONTEXT for
17485         the new field.
17486
17487 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
17488
17489         * tree-ssa-dse (max_stmt_uid): Removed.
17490         (get_stmt_uid, dse_possible_dead_store_p, dse_optimize_stmt,
17491         tree_ssa_dse): Encapsulate all uses of stmt_ann->uid.
17492         * tree-ssa-sccvn.c (compare_ops, init_scc_vn): Ditto.
17493         * function.h (cfun.last_stmt_uid): New field.
17494         * tree-flow-inline.h (set_gimple_stmt_uid, gimple_stmt_uid,
17495         gimple_stmt_max_uid, set_gimple_stmt_max_uid, inc_gimple_stmt_max_uid):
17496         New functions.
17497         * tree-dfa.c (renumber_gimple_stmt_uids): New function.
17498         (create_stmt_ann): Initialize the ann->uid field.
17499         * tree-ssa-pre.c (compute_avail): Encapsulate the stmt_ann->uid
17500         with new calls.
17501         * tree-flow.h (renumber_gimple_stmt_uids): New function.
17502
17503 2008-05-16  Nathan Froyd  <froydnj@codesourcery.com>
17504
17505         * tree-flow.h (init_empty_tree_cfg_for_function): Declare.
17506         * tree-cfg.c (init_empty_tree_cfg_for_function): Define.
17507         (init_empty_tree_cfg): Call it.
17508
17509 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
17510
17511         * cfg.c (init_flow): Add argument THE_FUN.  Use it instead of cfun.
17512         Update all users.
17513
17514 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
17515
17516         * doc/invoke.text (-fdump-tree-*-verbose): New option.
17517         * tree-dump.c (dump_options): New verbose option.
17518         * tree-pretty-print.c (dump_phi_nodes, dump_generic_bb_buff):
17519         Add verbose dump.
17520         * tree-pass.h (TDF_VERBOSE): New dump flag.
17521         * print-tree.c (print_node): Added code to be able to print PHI_NODES.
17522         (tree-flow.h): Added include.
17523         * Makefile.in (print-tree.o):  Added TREE_FLOW_H.
17524
17525 2008-05-16  Bernd Schmidt  <bernd.schmidt@analog.com>
17526
17527         * config/bfin/bfin.c (bfin_discover_loops): Delete empty loops.
17528
17529         From Jie Zhang  <jie.zhang@analog.com>
17530         * config/bfin/t-bfin-elf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
17531         MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Remove mcpu=bf532-0.3,
17532         mcpu=bf561-none and mcpu=bf561-0.2.
17533         * config/bfin/t-bfin-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
17534         MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Likewise.
17535         * config/bfin/t-bfin-linux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
17536         MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Likewise.
17537         * config/bfin/bfin-protos.h (enum bfin_cpu_type): Add BFIN_CPU_UNKNOWN.
17538         * config/bfin/elf.h (STARTFILE_SPEC): Use specific CRT for BF561.
17539         (LIB_SPEC): Use proper linker script for bf561.  Error if no mcpu
17540         option.
17541         * config/bfin/bfin.c (bfin_cpu_type): Set to BFIN_CPU_UNKNOWN.
17542         (cputype_selected): Remove.
17543         (bfin_handle_option): Don't use cputype_selected.
17544         (override_options): When no mcpu option, enable all workarounds.
17545         Don't use bfin_workarounds.
17546         * config/bfin/bfin.h (DRIVER_SELF_SPECS): Don't set default
17547         processor type.
17548         (DEFAULT_CPU_TYPE): Don't define.
17549
17550 2008-05-16  Richard Guenther  <rguenther@suse.de>
17551
17552         * tree-ssa-propagate.c (substitute_and_fold): Fix stmt walking
17553         on deletion of the last stmt.
17554
17555 2008-05-15  H.J. Lu  <hongjiu.lu@intel.com>
17556
17557         * config/i386/i386.c (ix86_expand_vector_init_general): Optimize
17558         V8HImode for SSE2 and V16QImode for SSE4.1.
17559
17560 2008-05-15  Kenneth Zadeck <zadeck@naturalbridge.com>
17561
17562         * cgraph.h (compute_inline_parameters): Made public.
17563         * tree-pass.h (ipa_opt_pass): Removed function_generate_summary,
17564         variable_generate_summary, function_write_summary,
17565         variable_write_summary, variable_read_summary.  Added generate_summary,
17566         write_summary, read_summary.
17567         * cgraphunit.c (cgraph_process_new_functions): Changed call from
17568         pass_ipa_inline.function_generate_summary, to
17569         compute_inline_parameters.
17570         * ipa-inline.c (compute_inline_parameters): Made public and added
17571         node parameter.
17572         (compute_inline_parameters_for_current): New function.
17573         (pass_inline_param): Now calls compute_inline_parameters_for_current.
17574         (inline_generate_summary): Removed parameter and made to loop over
17575         all cgraph nodes.
17576         (pass_ipa_inline): Updated for new IPA_PASS structure.
17577         * passes.c (execute_ipa_summary_passes): Now is called once per
17578         pass rather than once per node*pass.
17579
17580 2008-05-15  Anatoly Sokolov <aesok@post.ru>
17581
17582         * config/avr/avr.c (avr_base_arch_macro, avr_have_movw_lpmx_p,
17583         avr_have_mul_p, avr_asm_only_p): Remove variables.
17584         (avr_override_options): Remove initialization of removed variables.
17585         (avr_file_start):  Convert removed variables to fields of
17586         'struct base_arch_s *avr_current_arch'.
17587         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): (Ditto.).
17588         (AVR_HAVE_MUL): (Ditto.).
17589         (AVR_HAVE_MOVW): (Ditto.).
17590         (AVR_HAVE_LPMX): (Ditto.).
17591         (avr_base_arch_macro, avr_have_movw_lpmx_p, avr_have_mul_p,
17592         avr_asm_only_p): Remove declaration.
17593
17594 2008-05-15  Diego Novillo  <dnovillo@google.com>
17595
17596         * config/arm/arm.c (arm_return_in_memory): Fix return type.
17597         * config/arm/arm-protos.h (arm_return_in_memory): Likewise.
17598
17599 2008-05-15  Adam Nemet  <anemet@caviumnetworks.com>
17600
17601         PR middle-end/36194
17602         * combine.c (check_conversion): Rename back to check_promoted_subreg.
17603         Don't call record_truncated_value from here.
17604         (record_truncated_value): Turn it into a for_each_rtx callback.
17605         (record_truncated_values): New function.
17606         (combine_instructions): Call note_uses with record_truncated_values.
17607         Change name of check_conversion to check_promoted_subreg.
17608
17609 2008-05-15  Janis Johnson  <janis187@us.ibm.com>
17610
17611         * doc/sourcebuild.texi: Document support for torture tests.
17612
17613 2008-05-15  Uros Bizjak  <ubizjak@gmail.com>
17614
17615         * config/i386/sse.md (*vec_concatv2sf_sse4_1): Add "m" constraint
17616         to alternative 4 of operand 2.
17617
17618 2008-05-15  Richard Guenther  <rguenther@suse.de>
17619
17620         * tree-pass.h (current_pass): Declare.
17621         (get_pass_for_id): Likewise.
17622         * passes.c (passes_by_id, passes_by_id_size): New globals.
17623         (set_pass_for_id): New function.
17624         (get_pass_for_id): Likewise.
17625         (register_one_dump_file): Use set_pass_for_id to populate passes_by_id.
17626         (execute_function_todo): Flush per function statistics.
17627         * toplev.c (compile_file): Init statistics.
17628         (general_init): Do early statistics initialization.
17629         (finalize): Finish statistics.
17630         * statistics.h (statistics_early_init): Declare.
17631         (statistics_init): Likewise.
17632         (statistics_fini): Likewise.
17633         (statistics_fini_pass): Likewise.
17634         (statistics_counter_event): Likewise.
17635         (statistics_histogram_event): Likewise.
17636         * statistics.c: New file.
17637         * Makefile.in (OBJS-common): Add statistics.o.
17638         (statistics.o): Add dependencies.
17639         * doc/invoke.texi (-fdump-statistics): Document.
17640
17641         * tree-ssa-pre.c (compute_antic): Use statistics_histogram_event.
17642         (insert): Likewise.
17643         (execute_pre): Use statistics_counter_event.
17644         * tree-ssa-propagate.c (struct prop_stats_d): Add num_dce field.
17645         (substitute_and_fold): Increment it.  Use statistics_counter_event.
17646
17647 2008-05-15  Diego Novillo  <dnovillo@google.com>
17648
17649         http://gcc.gnu.org/ml/gcc-patches/2008-05/msg00893.html
17650
17651         * treestruct.def (TS_STRUCT_FIELD_TAG): Remove.
17652         * tree-ssa-alias.c (new_type_alias): Remove references to
17653         sub-variables from comment.
17654         * tree-ssa-operands.c (swap_tree_operands): Likewise.
17655
17656 2008-05-15  H.J. Lu  <hongjiu.lu@intel.com>
17657
17658         * config/i386/sse.md (*vec_concatv2sf_sse4_1): Set prefix_extra
17659         attribute to 1 only for insertps alternative.
17660
17661 2008-05-15  Bernd Schmidt  <bernd.schmidt@analog.com>
17662
17663         * config/bfin/bfin.md (loadbytes): New pattern.
17664         * config/bfin/bfin.c (enum bfin_builtins): Add BFIN_BUILTIN_LOADBYTES.
17665         (bfin_init_builtins): Initialize it.
17666         (bdesc_1arg): Add it.
17667
17668 2008-05-15  Sa Liu  <saliu@de.ibm.com>
17669
17670         * testsuite/gfortran.dg/c_kind_int128_test1.f03: New.
17671         * testsuite/gfortran.dg/c_kind_int128_test2.f03: New.
17672         * testsuite/lib/target-supports.exp: Add
17673         check_effective_target_fortran_integer_16.
17674
17675 2008-05-15  Bernd Schmidt  <bernd.schmidt@analog.com>
17676
17677         * config/bfin/bfin.h (TARGET_RETURN_IN_MEMORY): Don't define here.
17678         * config/bfin/bfin-protos.h (bfin_return_in_memory): Don't declare.
17679         * config/bfin/bfin.c (bfin_return_in_memory): Now static.  Return bool.
17680         (TARGET_RETURN_IN_MEMORY): Define.
17681
17682 2008-05-15  Richard Guenther  <rguenther@suse.de>
17683
17684         PR middle-end/36244
17685         * tree-ssa-alias.c (new_type_alias): Do not set TREE_READONLY.
17686         * tree-flow-inline.h (unmodifiable_var_p): Memory tags never
17687         represent unmodifiable vars.
17688
17689 2008-05-15  Richard Guenther  <rguenther@suse.de>
17690
17691         * tree-dfa.c (refs_may_alias_p): Allow all kinds of
17692         INDIRECT_REF and TARGET_MEM_REF.
17693         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle
17694         TARGET_MEM_REF.
17695
17696 2008-05-15  Uros Bizjak  <ubizjak@gmail.com>
17697             H.J. Lu  <hongjiu.lu@intel.com>
17698
17699         * config/i386/sse.md (*vec_concatv2sf_sse4_1): New insn pattern.
17700         (*vec_concatv2si_sse4_1): Use vector_move_operand predicate
17701         for operand 2.  Remove pinsr{q,d} with 0x0 immediate operand from
17702         insn alternatives.  Add missing alternatives.
17703         (*vec_concatv2di_rex64_sse4_1): Likewise.
17704         (*vec_concatv2si_sse2): Use "x" register constraint instead of "Y2".
17705         (*vec_concatv2di_rex64_sse): Rename from *vec_concatv2di_rex64.
17706         Require TARGET_SSE.
17707
17708 2008-05-15  Richard Guenther  <rguenther@suse.de>
17709
17710         PR tree-optimization/36009
17711         PR tree-optimization/36204
17712         * tree-ssa-loop-im.c (tree-ssa-propagate.h): Include.
17713         (determine_invariantness_stmt): Record the loop a store is
17714         always executed in.
17715         * Makefile.in (tree-ssa-loop-im.o): Add tree-ssa-propagate.h
17716         dependency.
17717
17718 2008-05-15  Richard Guenther  <rguenther@suse.de>
17719
17720         PR tree-optimization/34330
17721         * tree-ssa-alias.c (get_smt_for): Only assert that accesses
17722         through the pointer will alias the SMT.
17723
17724 2008-05-14  Andreas Tobler  <a.tobler@schweiz.org>
17725
17726         * config/sparc/sparc.h (NO_PROFILE_COUNTERS): Define as 0.
17727
17728 2008-05-14  H.J. Lu  <hongjiu.lu@intel.com>
17729
17730         * config/i386/sse.md (*sse4_1_pinsrq): Make it 64bit only.
17731
17732 2008-05-14  Michael Meissner  <michael.meissner@amd.com>
17733             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
17734
17735         * optabs.h (optab_index): Add OTI_vashl, OTI_vlshr, OTI_vashr,
17736         OTI_vrotl, OTI_vrotr to support vector/vector shifts.
17737         (vashl_optab): New optab for vector/vector shifts.
17738         (vashr_optab): Ditto.
17739         (vlshr_optab): Ditto.
17740         (vrotl_optab): Ditto.
17741         (vrotr_optab): Ditto.
17742         (optab_subtype): New enum for optab_for_tree_code call.
17743         (optab_for_tree_code): Add enum optab_subtype argument.
17744
17745         * optabs.c (optab_for_tree_code): Take an additional argument to
17746         distinguish between a vector shift by a scalar and vector shift by
17747         a vector.  Make lshr/ashr/ashl/rotl/rotr optabs just vector
17748         shifted by a scalar.  Use vlshr/vashr/vashl/vrotl/vrotr for the
17749         vector shift by a vector.
17750         (expand_widen_pattern_expr): Pass additional argument to
17751         optab_for_tree_code.
17752
17753         * genopinit.c (optabs): Add vashr_optab, vashl_optab, vlshr_optab,
17754         vrotl_optab, vrotr_optab.
17755
17756         * expr.c (expand_expr_real_1): Update calls to
17757         optab_for_tree_code to distinguish between vector shifted by a
17758         scalar and vector shifted by a vector.
17759         * tree-vectorizer.c (supportable_widening_operation): Ditto.
17760         (supportable_narrowing_operation): Ditto.
17761         * tree-vect-analyze.c (vect_build_slp_tree): Ditto.
17762         * tree-vect-patterns.c (vect_pattern_recog_1): Ditto.
17763         * tree-vect-transform.c (vect_model_reduction_cost): Ditto.
17764         (vect_create_epilog_for_reduction): Ditto.
17765         (vectorizable_reduction): Ditto.
17766         (vectorizable_operation): Ditto.
17767         (vect_strided_store_supported): Ditto.
17768         (vect_strided_load_supported): Ditto.
17769         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
17770         * expmed.c (expand_shift): Ditto.
17771
17772         * doc/md.texi (ashl@var{m}3): Document that operand 2 is always a
17773         scalar type.
17774         (ashr@var{m}3): Ditto.
17775         (vashl@var{m}3): Document new vector/vector shift standard name.
17776         (vashr@var{m}3): Ditto.
17777         (vlshr@var{m}3): Ditto.
17778         (vrotl@var{m}3): Ditto.
17779         (vrotr@var{m}3): Ditto.
17780
17781         * config/i386/i386.md (PPERM_SRC): Move PPERM masks here from i386.c.
17782         (PPERM_INVERT): Ditto.
17783         (PPERM_REVERSE): Ditto.
17784         (PPERM_REV_INV): Ditto.
17785         (PPERM_ZERO): Ditto.
17786         (PPERM_ONES): Ditto.
17787         (PPERM_SIGN): Ditto.
17788         (PPERM_INV_SIGN): Ditto.
17789         (PPERM_SRC1): Ditto.
17790         (PPERM_SRC2): Ditto.
17791
17792         * config/i386/sse.md (mulv2di3): Add SSE5 support.
17793         (sse5_pmacsdql_mem): New SSE5 define_and_split that temporarily
17794         allows a memory operand to be the value being added, and split it
17795         to improve vectorization.
17796         (sse5_pmacsdqh_mem): Ditto.
17797         (sse5_mulv2div2di3_low): SSE5 32-bit multiply and extend function.
17798         (sse5_mulv2div2di3_high): Ditto.
17799         (vec_pack_trunc_v8hi): Add SSE5 pperm support.
17800         (vec_pack_trunc_v4si): Ditto.
17801         (vec_pack_trunc_v2di): Ditto.
17802         (sse5_pcmov_<mode>): Remove code that tried to use use
17803         andps/andnps instead of pcmov.
17804         (vec_widen_smult_hi_v4si): If we have SSE5, use the pmacsdql and
17805         pmacsdqh instructions.
17806         (vec_widen_smult_lo_v4si): Ditto.
17807
17808         * config/i386/i386.c (PPERM_SRC): Move PPERM masks to i386.md.
17809         (PPERM_INVERT): Ditto.
17810         (PPERM_REVERSE): Ditto.
17811         (PPERM_REV_INV): Ditto.
17812         (PPERM_ZERO): Ditto.
17813         (PPERM_ONES): Ditto.
17814         (PPERM_SIGN): Ditto.
17815         (PPERM_INV_SIGN): Ditto.
17816         (PPERM_SRC1): Ditto.
17817         (PPERM_SRC2): Ditto.
17818         (ix86_expand_sse_movcc): Move the SSE5 test after the if
17819         true/false tests.
17820         (ix86_expand_int_vcond): If SSE5 generate all possible integer
17821         comparisons.
17822         (ix86_sse5_valid_op_p): Allow num_memory to be negative, which
17823         says ignore whether the last reference is a memory operand.
17824
17825 2008-05-14  Michael Meissner  <michael.meissner@amd.com>
17826             Paolo Bonzini <bonzini at gnu dot org>
17827
17828         * config/rs6000/rs6000.c (bdesc_2arg): Change the names of vector
17829         shift patterns.
17830
17831         * config/rs6000/altivec.md (vashl<mode>3): Rename from ashl<mode>3.
17832         (vlshr<mode>3): Rename from vlshr<mode>3.
17833         (vashr<mode>3): Rename from vashr<mode>3.
17834         (mulv4sf3): Change the names of vector shift patterns.
17835         (mulv4si3): Ditto.
17836         (negv4sf2): Ditt.
17837
17838         * config/spu/spu.c (spu_initialize_trampoline): Rename vector
17839         shift insns.
17840
17841         * config/spu/spu-builtins.def (SI_SHLH): Rename vector shift insns.
17842         (SI_SHLHI): Ditto.
17843         (SI_SHL): Ditto.
17844         (SI_SHLI): Ditto.
17845         (SI_ROTH): Ditto.
17846         (SI_ROTHI): Ditto.
17847         (SI_ROT): Ditto.
17848         (SI_ROTI): Ditto.
17849         (SPU_RL_0): Ditto.
17850         (SPU_RL_1): Ditto.
17851         (SPU_RL_2): Ditto.
17852         (SPU_RL_3): Ditto.
17853         (SPU_RL_4): Ditto.
17854         (SPU_RL_5): Ditto.
17855         (SPU_RL_6): Ditto.
17856         (SPU_RL_7): Ditto.
17857         (SPU_SL_0): Ditto.
17858         (SPU_SL_1): Ditto.
17859         (SPU_SL_2): Ditto.
17860         (SPU_SL_3): Ditto.
17861         (SPU_SL_4): Ditto.
17862         (SPU_SL_5): Ditto.
17863         (SPU_SL_6): Ditto.
17864         (SPU_SL_7): Ditto.
17865
17866         * config/spu/spu.md (v): New iterator macro to add v for vector types.
17867         (floatunssidf2_internal): Change vector/vector shift names.
17868         (floatunsdidf2_internal): Ditto.
17869         (mulv8hi3): Ditto.
17870         (ashrdi3): Ditto.
17871         (ashrti3): Ditto.
17872         (cgt_df): Ditto.
17873         (cgt_v2df): Ditto.
17874         (dftsv): Ditto.
17875         (vashl<mode>3): Rename from ashl<mode>3.
17876         (vashr<mode>3): Rename from ashr<mode>3.
17877         (vlshr<mode>3): Rename from lshr<mode>3.
17878         (vrotl<mode>3): Rename from rotl<mode>3.
17879
17880 2008-05-14  Michael Meissner  <michael.meissner@amd.com>
17881
17882         PR target/36224
17883         * config/i386/sse.md (vec_widen_smult_hi_v4si): Delete, using unsigned
17884         multiply gives the wrong value when doing widening multiplies.
17885         (vec_widen_smult_lo_v4si): Ditto.
17886
17887 2008-05-14  Kenneth Zadeck <zadeck@naturalbridge.com>
17888
17889         * optabs.c (prepare_cmp_insn): Changed LCT_PURE_MAKE_BLOCK to
17890         LCT_PURE and LCT_CONST_MAKE_BLOCK to LCT_CONST in calls to
17891         emit_library_call_value.
17892         * builtins.c (expand_builtin_powi, expand_builtin_memcmp): Ditto.
17893         * tree.h (ECF_LIBCALL_BLOCK): Removed.
17894         * calls.c (initialize_argument_information, precompute_arguments,
17895         expand_call, emit_library_call_value_1): Remove ECF_LIBCALL_BLOCK.
17896         (precompute_arguments): Removed flags parameter.
17897         * rtl.h (LCT_CONST_MAKE_BLOCK, LCT_PURE_MAKE_BLOCK): Removed.
17898
17899 2008-05-14  Richard Guenther  <rguenther@suse.de>
17900
17901         * tree-ssa-dse.c (dse_possible_dead_store_p): Remove dead code.
17902         Make sure to register the store if the use is a PHI_NODE.
17903
17904 2008-05-14  Olivier Hainque  <hainque@adacore.com>
17905
17906         * expr.c (expand_expr_real_1) <normal_inner_ref>: Force op0 to
17907         memory if the component is to be referenced in BLKmode according
17908         to get_inner_reference.
17909
17910 2008-05-14  Adam Nemet  <anemet@caviumnetworks.com>
17911
17912         * calls.c (emit_library_call_value_1): Restore code clearing
17913         ECF_LIBCALL_BLOCK to ensure that we only call end_sequence once.
17914
17915 2008-05-14  Olivier Hainque  <hainque@adacore.com>
17916             Nicolas Roche  <roche@adacore.com>
17917
17918         * configure.ac: Add support for a "gcc_subdir" variable in
17919         config-lang.in, to denote a subdirectory where the language/GCC
17920         integration files are to be found.
17921         * configure: Regenerate.
17922
17923 2008-05-14  Ira Rosen  <irar@il.ibm.com>
17924
17925         PR tree-optimization/36098
17926         * tree-vect-analyze.c (vect_analyze_group_access): Set the gap
17927         value for the first load in the group in case of a gap.
17928         (vect_build_slp_tree): Check that there are no gaps in loads.
17929
17930 2008-05-14  Kenneth Zadeck <zadeck@naturalbridge.com>
17931
17932         * doc/rtl.texi: Removed reference to REG_NO_CONFLICT notes.
17933         * optabs.c (expand_binop, expand_absneg_bit, expand_unop,
17934         expand_copysign_bit, ): Change call to emit_no_conflict_block to
17935         emit_insn and remove unneeded code to construct extra args.
17936         (emit_no_conflict_block): Removed.
17937         * optabls.h: (emit_no_conflict_block): Removed.
17938         * cse.c (cse_extended_basic_block): Remove search for
17939         REG_NO_CONFLICT note.
17940         * global.c: Removed incorrect comment added in revision 117.
17941         * expr.c (convert_move): Change call to emit_no_conflict_block to
17942         emit_insn.
17943         * recog.c: Change comments so that they do not mention
17944         REG_NO_CONFLICT.
17945         * local_alloc.c (combine_regs): Removed last parameter.
17946         (no_conflict_p): Removed.
17947         (block_alloc): Removed note, no_conflict_combined_regno and set
17948         local vars. Removed all code to process REG_NO_CONFLICT blocks.
17949         (combine_regs): Removed already_dead and code to look for
17950         REG_NO_CONFLICT notes.
17951         * lower_subreg (remove_retval_note): Removed code to look for
17952         REG_NO_CONFLICT block.
17953         (resolve_reg_notes): Removed REG_NO_CONFLICT case.
17954         (resolve_clobber): Remove code to process libcalls that have
17955         REG_NO_CONFLICT notes.
17956         * loop_invariant.c (find_invariant_insn): Removed REG_NO_CONFLICT
17957         case.
17958         * combine.c (can_combine_p, distribute_notes):  Removed
17959         REG_NO_CONFLICT case.
17960         * config/cris/cris.md (movdi pattern): Changed emit_no_conflict_block
17961         to emit_insns.
17962         * config/mn10300/mn10300.md (absdf2, negdf2 patterns): Ditto.
17963         * config/m68k/m68k.md (negdf2, negxf2, absdf2, absxf2 patterns):
17964         Ditto.
17965         * reg-notes.def (NO_CONFLICT): Removed.
17966
17967 2008-05-14  David S. Miller  <davem@davemloft.net>
17968
17969         * config/sparc/sparc.c (sparc_profile_hook): If
17970         NO_PROFILE_COUNTERS, don't generate and pass a label into mcount.
17971         * config/sparc/linux.h (NO_PROFILE_COUNTERS): Define as 1.
17972         * config/sparc/linux64.h (NO_PROFILE_COUNTERS): Likewise.
17973
17974 2008-05-14  Andreas Krebbel  <krebbel1@de.ibm.com>
17975
17976         * cse.c (cse_cc_succs): Invoke delete_insn_and_edges.
17977
17978 2008-05-13  Uros Bizjak  <ubizjak@gmail.com>
17979
17980         PR target/36222
17981         * config/i386/i386.c (ix86_expand_vector_init_general): Rearrange op0
17982         and op1 expansion before vector concat to have less live pseudos.
17983
17984 2008-05-13  H.J. Lu  <hongjiu.lu@intel.com>
17985
17986         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Use
17987         ix86_expand_vector_set if supported.
17988
17989 2008-05-13  Diego Novillo  <dnovillo@google.com>
17990             Kenneth Zadeck  <zadeck@naturalbridge.com>
17991
17992         http://gcc.gnu.org/ml/gcc-patches/2008-05/msg00748.html
17993
17994         * tree.h (init_phinodes, fini_phinodes, release_phi_node,
17995         phinodes_print_statistics, init_ssanames, fini_ssanames,
17996         make_ssa_name, duplicate_ssa_name, duplicate_ssa_name_ptr_info,
17997         release_ssa_name, release_defs, replace_ssa_name_symbol,
17998         ssanames_print_statistics): Move ...
17999         * tree-flow.h: ... here.
18000         * tree-ssanames.c (init_ssanames): Add arguments FN and SIZE.
18001         Use FN instead of cfun.
18002         (make_ssa_name_fn): Rename from make_ssa_name.
18003         (pass_release_ssa_names): Add TODO_dump_func to finish flags.
18004         * tree-flow-inline.h (make_ssa_name): Move from
18005         tree-ssanames.c.  Convert to static inline.  Call make_ssa_name_fn.
18006         * omp-low.c (expand_omp_parallel):
18007         * tree-flow-inline.h (redirect_edge_var_map_result):
18008         * tree-ssa.c (init_tree_ssa): Add argument FN.
18009         Use it instead of cfun.  Update all users.
18010
18011 2008-05-13  Tom Tromey  <tromey@redhat.com>
18012
18013         PR preprocessor/22168:
18014         * doc/cpp.texi (Top): Update menu.
18015         (Alternatives to Wrapper #ifndef): New node.
18016         (Other Directives): Document deprecation.
18017         (Obsolete Features): Remove menu.
18018         (Assertions): Merge node into Obsolete Features.
18019         (Obsolete once-only headers): Move earlier; rename to Alternatives
18020         to Wrapper #ifndef.
18021         * doc/cppopts.texi: Update.
18022         * c.opt (Wdeprecated): Enable for C and ObjC.
18023         * doc/invoke.texi (Option Summary): Move -Wno-deprecated.
18024         (C++ Dialect Options): Move -Wno-deprecated from here to...
18025         (Warning Options): ... here.
18026
18027 2008-05-13  Richard Guenther  <rguenther@suse.de>
18028
18029         PR middle-end/36227
18030         * fold-const.c (fold_sign_changed_comparison): Do not allow
18031         changes in pointer-ness.
18032
18033 2008-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
18034
18035         PR target/24713
18036         * config/sh/sh.c (sh_expand_prologue): Don't clear
18037         RTX_FRAME_RELATED_P for push insns.
18038
18039 2008-05-12  Andy Hutchinson  <hutchinsonandy@aim.com>
18040
18041         * config/avr/avr.h (MAX_OFILE_ALIGNMENT): Define.
18042
18043 2008-05-12  Anatoly Sokolov <aesok@post.ru>
18044
18045         * config/avr/avr.h (machine_function): Add 'is_leaf' field.
18046         * config/avr/avr.c (avr_regs_to_save): Compute 'machine->is_leaf'.
18047         Use 'machine->is_leaf' instead of 'leaf_func_p'.
18048
18049 2008-05-12  H.J. Lu  <hongjiu.lu@intel.com>
18050
18051         * config/i386/sse.md (*sse_concatv4sf): Renamed to ...
18052         (*vec_concatv4sf_sse): This.
18053         (*sse2_concatv2si): Renamed to ...
18054         (*vec_concatv2si_sse2): This.
18055         (*sse1_concatv2si): Renamed to ...
18056         (*vec_concatv2si_sse): This.
18057         (*vec_concatv2di_rex): Renamed to ...
18058         (*vec_concatv2di_rex64): This.
18059         (*vec_concatv2si_sse4_1): New.
18060         (*vec_concatv2di_rex64_sse4_1): Likewise.
18061
18062 2008-05-12  Uros Bizjak  <ubizjak@gmail.com>
18063
18064         PR rtl-optimization/36111
18065         * recog.c (validate_replace_rtx_1): Unshare new RTL expression
18066         that was created for swappable operands.
18067
18068 2008-05-12  Samuel Tardieu  <sam@rfc1149.net>
18069
18070         PR ada/36001
18071         * Makefile.in: Substitute GNATMAKE and GNATBIND.
18072         * configure.ac: Add call to ACX_PROG_GNAT.
18073
18074 2008-05-11  Volker Reichelt  <v.reichelt@netcologne.de>
18075
18076         * optc-gen.awk: Fix comment typo.
18077
18078 2008-05-11  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
18079
18080         * pretty-print.c (pp_integer_with_precision): Use
18081         HOST_LONG_LONG_FORMAT.
18082
18083 2008-05-10  Kenneth Zadeck  <zadeck@naturalbridge.com>
18084
18085         * gcse.c (store_killed_in_insn): Negated call to RTL_CONST_CALL_P.
18086
18087 2008-05-10  H.J. Lu  <hongjiu.lu@intel.com>
18088
18089         * config/i386/i386.c (bdesc_ptest): Removed.
18090         (ix86_builtin_type): Add INT_FTYPE_V2DI_V2DI_PTEST.
18091         (bdesc_args): Add __builtin_ia32_ptestz128,
18092         __builtin_ia32_ptestc128 and __builtin_ia32_ptestnzc128.
18093         (ix86_init_mmx_sse_builtins): Updated.
18094         (ix86_expand_args_builtin): Handle INT_FTYPE_V2DI_V2DI_PTEST.
18095         (ix86_expand_builtin): Updated.
18096
18097 2008-05-10  Richard Sandiford  <rdsandiford@googlemail.com>
18098
18099         * tree-cfg.c (valid_fixed_convert_types_p): New function.
18100         (verify_gimple_expr): Handle FIXED_CONVERT_EXPR.
18101
18102 2008-05-10  Uros Bizjak  <ubizjak@gmail.com>
18103
18104         * value-prof.c (interesting_stringop_to_profile): Do not
18105         return early for BUILT_IN_MEMPCPY.
18106
18107 2008-05-09  H.J. Lu  <hongjiu.lu@intel.com>
18108
18109         * calls.c (expand_call): Don't use callgraph to increase
18110         preferred_stack_boundary.
18111
18112         * cgraph.h (cgraph_rtl_info): Use unsigned on
18113         preferred_incoming_stack_boundary.
18114
18115         * final.c (rest_of_clean_state): Use unsigned on
18116         preferred_stack_boundary.
18117
18118 2008-05-09  Tom Tromey  <tromey@redhat.com>
18119
18120         PR preprocessor/22231:
18121         * c-opts.c (sanitize_cpp_opts): Disallow -MG if compilation is
18122         proceeding.
18123
18124 2008-05-09  Uros Bizjak  <ubizjak@gmail.com>
18125
18126         PR tree-optimization/36129
18127         * tree-ssa-ccp.c: Include value-prof.h.
18128         (execute_fold_all_builtins): Call gimple_remove_stmt_histograms if
18129         built-in function was folded to a constant.
18130         * Makefile.in (tree-ssa-ccp.c): Depend on value-prof.h
18131
18132 2008-05-09  Jan Sjodin  <jan.sjodin@amd.com>
18133             Sebastian Pop  <sebastian.pop@amd.com>
18134
18135         * tree-scalar-evolution.c: Document instantiate_scev.
18136         (instantiate_parameters_1): Renamed instantiate_scev_1.
18137         Don't use the same loop for instantiation_loop and evolution_loop.
18138         (instantiate_scev): New.
18139         (instantiate_parameters): Moved...
18140         (resolve_mixers): Update call to instantiate_scev_1 to pass the
18141         same loop twice.  Maintains the semantics for this function.
18142         * tree-scalar-evolution.h (instantiate_scev): Declare.
18143         (instantiate_parameters): ...here.  Now static inline.
18144         * tree-data-ref.c (dr_analyze_indices): Call instantiate_scev
18145         instead of resolve_mixers.
18146
18147 2008-05-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
18148
18149         * rtl-factoring.c (collect_pattern_seqs): Fix typo.
18150
18151 2008-05-09  Tomas Bily  <tbily@suse.cz>
18152
18153         * config/pa/pa.c (reloc_needed): Use CASE_CONVERT.
18154         * tree-cfg.c (verify_expr, verify_gimple_expr): Likewise.
18155         * tree-ssa-structalias.c (get_constraint_for): Likewise.
18156         * c-common.c (c_common_truthvalue_conversion): Likewise.
18157         * tree-object-size.c (compute_object_offset): Likewise.
18158         * tree-inline.c (estimate_num_insns_1): Likewise.
18159         * varasm.c (const_hash_1, compare_constant, copy_constant)
18160         (compute_reloc_for_constant, output_addressed_constants)
18161         (initializer_constant_valid_p): Likewise.
18162         * c-omp.c (check_omp_for_incr_expr): Likewise.
18163         * gimplify.c (gimplify_expr): Likewise.
18164         * c-typeck.c (c_finish_return): Likewise.
18165         * tree-vectorizer.c (supportable_widening_operation)
18166         (supportable_narrowing_operation): Likewise.
18167         * c-pretty-print.c (pp_c_cast_expression, pp_c_expression): Likewise.
18168         * matrix-reorg.c (can_calculate_expr_before_stmt): Likewise.
18169         * expr.c (highest_pow2_factor, expand_expr_real_1): Likewise.
18170         * dwarf2out.c (loc_descriptor_from_tree_1, add_bound_info)
18171         (descr_info_loc): Likewise.
18172         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Likewise.
18173         * fold-const.c (operand_equal_p, make_range, extract_muldiv_1)
18174         (fold_unary): Likewise.
18175         * builtins.c (get_pointer_alignment): Likewise.
18176         * tree-scalar-evolution.c (interpret_rhs_modify_stmt)
18177         (instantiate_parameters_1): Likewise.
18178         * tree.c (expr_align, stabilize_reference): Likewise.
18179         * tree-pretty-print.c (dump_generic_node, op_prio): Likewise.
18180         * tree-ssa-loop-niter.c (derive_constant_upper_bound): Likewise.
18181         * convert.c (strip_float_extensions): Use CONVERT_EXPR_P.
18182         * tree-ssa-threadedge.c (simplify_control_stmt_condition): Likewise.
18183         * config/alpha/alpha.c (va_list_skip_additions): Likewise.
18184         * c-common.c (c_alignof_expr, check_function_arguments_recurse):
18185         Likewise.
18186         * tree-ssa.c (tree_ssa_useless_type_conversion): Likewise.
18187         * varasm.c (initializer_constant_valid_p, output_constant): Likewise.
18188         * tree-ssa-forwprop.c (get_prop_source_stmt, can_propagate_from)
18189         (forward_propagate_addr_expr_1, forward_propagate_addr_expr)
18190         (forward_propagate_comparison)
18191         (tree_ssa_forward_propagate_single_use_vars): Likewise.
18192         * cfgexpand.c (discover_nonconstant_array_refs_r): Likewise.
18193         * emit-rtl.c (component_ref_for_mem_expr)
18194         (set_mem_attributes_minus_bitpos): Likewise.
18195         * tree-ssa-phiopt.c (conditional_replacement): Likewise.
18196         * gimplify.c (gimplify_conversion, goa_lhs_expr_p, gimplify_expr):
18197         Likewise.
18198         * c-typeck.c (default_function_array_conversion, build_indirect_ref)
18199         (build_function_call, pointer_diff, build_compound_expr)
18200         (c_finish_return): Likewise.
18201         * tree-vect-analyze.c (vect_determine_vectorization_factor): Likewise.
18202         * matrix-reorg.c (get_inner_of_cast_expr, may_flatten_matrices_1):
18203         Likewise.
18204         * tree-ssa-ifcombine.c (recognize_single_bit_test): Likewise.
18205         * expr.c (is_aligning_offset): Likewise.
18206         * tree-ssa-alias.c (is_escape_site): Likewise.
18207         * tree-stdarg.c (va_list_counter_bump, check_va_list_escapes)
18208         (check_all_va_list_escapes): Likewise.
18209         * tree-ssa-loop-ivopts.c (determine_base_object)
18210         (determine_common_wider_type): Likewise.
18211         * dojump.c (do_jump): Likewise.
18212         * tree-ssa-sccvn.c (simplify_unary_expression): Likewise.
18213         * tree-gimple.c (is_gimple_cast): Likewise.
18214         * fold-const.c (decode_field_reference, )
18215         (fold_sign_changed_comparison, fold_unary, fold_comparison)
18216         (fold_binary): Likewise.
18217         * tree-ssa-alias-warnings.c (find_alias_site_helper)
18218         (already_warned_in_frontend_p): Likewise.
18219         * builtins.c (get_memory_rtx, fold_builtin_next_arg): Likewise.
18220         * tree.c (really_constant_p, get_unwidened): Likewise.
18221         * tree-ssa-loop-niter.c (expand_simple_operations): Likewise.
18222         * tree-ssa-loop-im.c (rewrite_bittest): Likewise.
18223         * tree-vrp.c (register_edge_assert_for_2, register_edge_assert_for_1):
18224         Likewise.
18225         * tree.h (STRIP_NOPS, STRIP_SIGN_NOPS, STRIP_TYPE_NOPS): Use
18226         CONVERT_EXPR_P.
18227         (CONVERT_EXPR_P): Define.
18228         (CASE_CONVERT): Define.
18229
18230 2008-05-08  Kenneth Zadeck  <zadeck@naturalbridge.com>
18231
18232         PR middle-end/36117
18233         * dce.c (deletable_insn_p): Do not delete calls if df_in_progress.
18234         (delete_unmarked_insns): When deleting a call, call
18235         delete_unreachable_blocks.
18236         * rtl.texi (RTL_CONST_CALL_P, RTL_PURE_CALL_P,
18237         RTL_CONST_OR_PURE_CALL_P, RTL_LOOPING_CONST_OR_PURE_CALL_P): Fixed doc.
18238
18239 2008-05-08  Richard Guenther  <rguenther@suse.de>
18240
18241         * doc/invoke.texi (-fdump-tree-salias): Remove documentation.
18242         (-ftree-salias): Likewise.
18243         (salias-max-implicit-fields): Remove param documentation.
18244         (salias-max-array-elements): Likewise.
18245         * tree-pass.h (pass_create_structure_vars): Remove.
18246         * params.h (SALIAS_MAX_IMPLICIT_FIELDS): Remove.
18247         (SALIAS_MAX_ARRAY_ELEMENTS): Likewise.
18248         * tree-ssa-alias.c (create_structure_vars): Remove.
18249         (gate_structure_vars): Likewise.
18250         (pass_create_structure_vars): Likewise.
18251         (gate_build_alias): Likewise.
18252         (pass_build_alias): Adjust to run always and dump the function.
18253         * common.opt (ftree-salias): Hide.
18254         * passes.c (init_optimization_passes): Remove
18255         pass_create_structure_vars, adjust comment.
18256         * params.def (PARAM_SALIAS_MAX_IMPLICIT_FIELDS): Remove.
18257         (PARAM_SALIAS_MAX_ARRAY_ELEMENTS): Likewise.
18258         * opts.c (decode_options): Do not set flag_tree_salias.
18259         (common_handle_option): Add OPT_ftree_salias to the backward
18260         compatibility section.
18261
18262 2008-05-08  Richard Guenther  <rguenther@suse.de>
18263
18264         * tree-flow-inline.h (var_can_have_subvars): Move ...
18265         * tree-ssa-structalias.c (var_can_have_subvars): ... here.
18266         * tree-flow.h (var_can_have_subvars): Remove.
18267         (push_fields_onto_fieldstack): Remove.
18268         (sort_fieldstack): Likewise.
18269         (struct fieldoff): Move ...
18270         * tree-ssa-structalias.c (struct fieldoff): ... here.  Remove
18271         alias_set and base_for_components fields.
18272         (sort_fieldstack): Make static.
18273         (push_fields_onto_fieldstack): Likewise.  Remove code that
18274         handles anything but RECORD_TYPEs.  Remove alias_set and
18275         base_for_components handling.
18276         (create_variable_info_for): Adjust.
18277
18278 2008-05-08  Seongbae Park  <seongbae.park@gmail.com>
18279
18280         * common.opt (Wframe-larger-than=): Shorten the help message
18281         to one line.
18282         * doc/invoke.texi (Wframe-larger-than=): Add more description.
18283
18284 2008-05-08  Rafael Espíndola  <espindola@google.com>
18285
18286         * tree-complex.c (expand_complex_div_wide): Don't create CONDs that
18287         trap.
18288         * tree-gimple.c (is_gimple_condexpr): Check that the expression doesn't
18289         trap and that both operands are gimple values.
18290         (canonicalize_cond_expr_cond): Use is_gimple_condexpr.
18291         * gcc/tree-eh.c (tree_could_trap_p): Correctly detect if a comparison
18292         is a fp operation.
18293
18294 2008-05-08  Richard Sandiford  <rsandifo@nildram.co.uk>
18295
18296         * read-rtl.c (join_c_conditions): Return the first string if the
18297         two strings are equal.
18298
18299 2008-05-08  Richard Sandiford  <rsandifo@nildram.co.uk>
18300
18301         * gensupport.h (pred_data): Add a "num_codes" field.
18302         (add_predicate_code): Declare.
18303         * gensupport.c (add_predicate_code): New function.
18304         (std_pred_table): Add an "allows_const_p" field.
18305         (std_preds): Set this field for predicates that allow RTX_CONST_OBJs.
18306         Remove the (incomplete) list of such codes from the codes field.
18307         (init_predicate_table): Use add_predicate_code.  Add all
18308         RTX_CONST_OBJs if allows_const_p is true.
18309         * genrecog.c (process_define_predicate): Use add_predicate_code.
18310
18311 2008-05-08  David Daney  <ddaney@avtrex.com>
18312             Richard Sandiford  <rsandifo@nildram.co.uk>
18313
18314         * config/mips/mips.md (mips_expand_compare_and_swap_12): Handle
18315         special case of constant zero operands.
18316         * config/mips/mips.c (mips_expand_compare_and_swap_12): Zero extend
18317         old and new values.  Special case constant zero values.
18318         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP): Skip 'sync' if compare
18319         fails.
18320         (MIPS_COMPARE_AND_SWAP_12): Handle constant zero operands.
18321         (MIPS_COMPARE_AND_SWAP_12_0): New macro.
18322
18323 2008-05-08  Paolo Bonzini  <bonzini@gnu.org>
18324
18325         PR target/36090
18326         * simplify-rtx.c (simplify_plus_minus): Create CONST of
18327         similar RTX_CONST_OBJ before CONST_INT.
18328
18329 2008-05-08  Steve Ellcey  <sje@cup.hp.com>
18330
18331         * stmt.c (expand_stack_restore): Change sa mode if needed.
18332
18333 2008-05-08  Richard Guenther  <rguenther@suse.de>
18334
18335         * config/i386/i386-protos.h (ix86_return_in_memory): Adjust
18336         return type to bool.
18337         (ix86_sol10_return_in_memory): Likewise.
18338         (ix86_i386elf_return_in_memory): Likewise.
18339         (ix86_i386interix_return_in_memory): Likewise.
18340         * config/i386/i386.c (ix86_return_in_memory): Likewise.
18341         (ix86_sol10_return_in_memory): Likewise.
18342         (ix86_i386elf_return_in_memory): Likewise.
18343         (ix86_i386interix_return_in_memory): Likewise.
18344
18345 2008-05-08  Kai Tietz  <kai.tietz@onevision.com>
18346
18347         PR bootstrap/36180
18348         * calls.c (compute_argument_block_size ): Add ATTRIBUTE_UNUSED to
18349         fndecl argument.
18350         (emit_library_call_value_1): Add ATTRIBUTE_UNUSED to variable fndecl.
18351         * target-def.h: Check that TARGET_RETURN_IN_MEMORY isn't
18352         declared in front.
18353
18354 2008-05-08  Richard Guenther  <rguenther@suse.de>
18355
18356         * tree-data-ref.c (dr_analyze_alias): Do not set DR_SUBVARS.
18357         * tree-data-ref.h (struct dr_alias): Remove subvars field.
18358         (DR_SUBVARS): Remove.
18359         * tree-dfa.c (dump_subvars_for): Remove.
18360         (debug_subvars_for): Likewise.
18361         (dump_variable): Do not dump subvars.
18362         (remove_referenced_var): Do not remove subvars.
18363         * tree-flow-inline.h (clear_call_clobbered): SFTs no longer exist.
18364         (lookup_subvars_for_var): Remove.
18365         (get_subvars_for_var): Likewise.
18366         (get_subvars_at): Likewise.
18367         (get_first_overlapping_subvar): Likewise.
18368         (overlap_subvar): Likewise.
18369         * tree-flow.h (subvar_t): Remove.
18370         (struct var_ann_d): Remove subvars field.
18371         * tree-ssa-alias.c (mark_aliases_call_clobbered): Remove queued
18372         argument.  Remove special handling of SFTs.
18373         (compute_tag_properties): Likewise.
18374         (set_initial_properties): Likewise.
18375         (compute_call_clobbered): Likewise.
18376         (count_mem_refs): Likewise.
18377         (compute_memory_partitions): Likewise.
18378         (compute_flow_insensitive_aliasing): Likewise.
18379         (setup_pointers_and_addressables): Likewise.
18380         (new_type_alias): Likewise.
18381         (struct used_part): Remove.
18382         (used_portions): Likewise.
18383         (struct used_part_map): Likewise.
18384         (used_part_map_eq): Likewise.
18385         (used_part_map_hash): Likewise.
18386         (free_used_part_map): Likewise.
18387         (up_lookup): Likewise.
18388         (up_insert): Likewise.
18389         (get_or_create_used_part_for): Likewise.
18390         (create_sft): Likewise.
18391         (create_overlap_variables_for): Likewise.
18392         (find_used_portions): Likewise.
18393         (create_structure_vars): Likewise.
18394         * tree.def (STRUCT_FIELD_TAG): Remove.
18395         * tree.h (MTAG_P): Adjust.
18396         (struct tree_memory_tag): Remove base_for_components and
18397         unpartitionable flags.
18398         (struct tree_struct_field_tag): Remove.
18399         (SFT_PARENT_VAR): Likewise.
18400         (SFT_OFFSET): Likewise.
18401         (SFT_SIZE): Likewise.
18402         (SFT_NONADDRESSABLE_P): Likewise.
18403         (SFT_ALIAS_SET): Likewise.
18404         (SFT_UNPARTITIONABLE_P): Likewise.
18405         (SFT_BASE_FOR_COMPONENTS_P): Likewise.
18406         (union tree_node): Remove sft field.
18407         * alias.c (get_alias_set): Remove special handling of SFTs.
18408         * print-tree.c (print_node): Remove handling of SFTs.
18409         * tree-dump.c (dequeue_and_dump): Likewise.
18410         * tree-into-ssa.c (mark_sym_for_renaming): Likewise.
18411         * tree-nrv.c (dest_safe_for_nrv_p): Remove special handling of SFTs.
18412         * tree-predcom.c (set_alias_info): Do not set subvars.
18413         * tree-pretty-print.c (dump_generic_node): Do not handle SFTs.
18414         * tree-ssa-loop-ivopts.c (get_ref_tag): Likewise.
18415         * tree-ssa-operands.c (access_can_touch_variable): Likewise.
18416         (add_vars_for_offset): Remove.
18417         (add_virtual_operand): Remove special handling of SFTs.
18418         (add_call_clobber_ops): Likewise.
18419         (add_call_read_ops): Likewise.
18420         (get_asm_expr_operands): Likewise.
18421         (get_modify_stmt_operands): Likewise.
18422         (get_expr_operands): Likewise.
18423         (add_to_addressable_set): Likewise.
18424         * tree-ssa.c (verify_ssa_name): Do not handle SFTs.
18425         * tree-tailcall.c (suitable_for_tail_opt_p): Likewise.
18426         * tree-vect-transform.c (vect_create_data_ref_ptr): Do not set subvars.
18427         * tree.c (init_ttree): Remove STRUCT_FIELD_TAG initialization.
18428         (tree_code_size): Remove STRUCT_FIELD_TAG handling.
18429         (tree_node_structure): Likewise.
18430         * tree-ssa-structalias.c (set_uids_in_ptset): Remove special
18431         handling of SFTs.
18432         (find_what_p_points_to): Likewise.
18433
18434 2008-05-08  Sa Liu  <saliu@de.ibm.com>
18435
18436         * config/spu/spu.md: Fixed subti3 pattern.
18437
18438 2008-05-08  Richard Guenther  <rguenther@suse.de>
18439
18440         PR middle-end/36154
18441         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Make
18442         sure to create a representative for trailing arrays for PTA.
18443
18444 2008-05-08  Richard Guenther  <rguenther@suse.de>
18445
18446         PR middle-end/36172
18447         * fold-const.c (operand_equal_p): Two objects which types
18448         differ in pointerness are not equal.
18449
18450 2008-05-08  Kai Tietz  <kai.tietz@onevision.com>
18451
18452         * calls.c (compute_argument_block_size): Add argument tree fndecl.
18453         (OUTGOING_REG_PARM_STACK_SPACE): Add function type argument.
18454         (emit_library_call_value_1): Add new variable fndecl initialized by
18455         NULL_TREE. It should be the decl type of orgfun, but this information
18456         seems not to be available here, so it uses the default calling abi.
18457         * config/arm/arm.c (arm_return_in_memory): Add fntype argumen.
18458         * config/arm/arm.h (RETURN_IN_MEMORY): Replace RETURN_IN_MEMORY
18459         by TARGET_RETURN_IN_MEMORY.
18460         * config/i386/i386-interix.h: Likewise.
18461         * config/i386/i386.h: Likewise.
18462         * config/i386/i386elf.h: Likewise.
18463         * config/i386/ptx4-i.h: Likewise.
18464         * config/i386/sol2-10.h: Likewise.
18465         * config/i386/sysv4.h: Likewise.
18466         * config/i386/vx-common.h: Likewise.
18467         * config/cris/cris.h: Removed #if 0 clause.
18468         * config/arm/arm-protos.h (arm_return_in_memory): Add fntype argument.
18469         * config/i386/i386-protos.h (ix86_return_in_memory): Add fntype
18470         argument.
18471         (ix86_sol10_return_in_memory): Likewise.
18472         (ix86_i386elf_return_in_memory): New.
18473         (ix86_i386interix_return_in_memory): New.
18474         * config/mt/mt-protos.h (mt_return_in_memory): New.
18475         * config/mt/mt.c: Likewise.
18476         * config/mt/mt.h (OUTGOING_REG_PARM_STACK_SPACE): Add FNTYPE argument.
18477         (RETURN_IN_MEMORY):  Replace by TARGET_RETURN_IN_MEMORY.
18478         * config/bfin/bfin.h: Likewise.
18479         * config/bfin/bfin-protos.h (bfin_return_in_memory): Add fntype
18480         argument.
18481         * config/bfin/bfin.c: Likewise.
18482         * config/pa/pa.h (OUTGOING_REG_PARM_STACK_SPACE): Add FNTYPE argument.
18483         * config/alpha/unicosmk.h: Likewise.
18484         * config/i386/cygming.h: Likewise.
18485         * config/iq2000/iq2000.h: Likewise.
18486         * config/mips/mips.h: Likewise.
18487         * config/mn10300/mn10300.h: Likewise.
18488         * config/rs6000/rs6000.h: Likewise.
18489         * config/score/score.h: Likewise.
18490         * config/spu/spu.h: Likewise.
18491         * config/v850/v850.h: Likewise.
18492         * defaults.h: Likewise.
18493         * doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Adjust documentation.
18494         * expr.c (emit_block_move): Adjust use of
18495         OUTGOING_REG_PARM_STACK_SPACE.
18496         * function.c (STACK_DYNAMIC_OFFSET): Adjust use of
18497         OUTGOING_REG_PARM_STACK_SPACE.
18498         * targhooks.c (default_return_in_memory): Remove RETURN_IN_MEMORY.
18499
18500 2008-05-08  Jakub Jelinek  <jakub@redhat.com>
18501
18502         * tree-parloops.c (create_parallel_loop): Set OMP_RETURN_NOWAIT
18503         on OMP_RETURN for OMP_FOR.
18504
18505         PR debug/35896
18506         * dwarf2out.c (dw_expand_expr, common_check): Removed.
18507         (fortran_common): New function.
18508         (gen_variable_die): Call fortran_common instead of common_check,
18509         adjust for it returning tree instead of rtx.  Formatting.
18510
18511 2008-05-07  Kenneth Zadeck  <zadeck@naturalbridge.com>
18512
18513         PR rtl/7335
18514         PR rtl/33826
18515         * see.c (see_copy_insn): Copy new pure const attributes for new call.
18516         * c-decl.c (merge_decls): Ditto.
18517         * postreload.c (record_opr_changes): Change CONST_OR_PURE_CALL_P
18518         to RTL_CONST_OR_PURE_CALL_P.
18519         * tree.c (define_local_buitin): Rename DECL_IS_PURE to DECL_PURE_P.
18520         Initialized DECL_LOOPING_CONST_PURE.
18521         (process_call_operands): Set tree_side_effects properly.
18522         * tree.h (TREE_READONLY_DECL_P): Removed.
18523         (DECL_IS_PURE): Renamed to DECL_PURE_P.
18524         (DECL_LOOPING_OR_CONST_P): New macro.
18525         (struct tree_function_decl): Added looping_const_or_pure_p.
18526         (ECF_*) Renumbered.
18527         (ECF_LOOPING_OR_CONST_P): New macro.
18528         * rtlanal.c (pure_const_p): Removed.
18529         * builtins.c (expand_builtin): Rename DECL_IS_PURE to DECL_PURE_P.
18530         * reorg.c (delete_prior_computation) Changed CONST_OR_PURE_CALL_P
18531         to RTL_CONST_CALL_P.
18532         * ipa-pure-const.c (pure_const_state_e): Added looping field.
18533         (check_decl, check_tree, check_call, scan_function): Initialize
18534         looping.
18535         (analyze_function): Rename DECL_IS_PURE to DECL_PURE_P.
18536         (static_execute): Set looping true for recursive functions.
18537         Undo setting state to IPA_NEITHER for recursive functions.
18538         * cse.c (cse_insn):
18539         * ifcvt.c (noce_can_store_speculate_p): Changed
18540         CONST_OR_PURE_CALL_P and pure_call_p to RTL_CONST_CALL_P or
18541         RTL_CONST_OR_PURE_CALL_P.
18542         * dse.c (scan_insn): Ditto.
18543         * local-alloc.c (validate_equiv_mem, memref_used_between_p): Ditto.
18544         * gcse.c (oprs_not_seen_p) Changed CONST_OR_PURE_CALL_P to
18545         RTL_CONST_OR_PURE_CALL_P.
18546         (store_killed_in_insn): Changed CONST_OR_PURE_CALL_P and
18547         pure_call_p to RTL_CONST_CALL_P.
18548         * gimplify.c (gimplify_call_expr): Clear side effects for
18549         non-looping pure and constant calls.
18550         * calls.c (emit_call_1): Set rtl flags from ecf flags.
18551         (flags_from_decl_or_type): Set ecf flags from decl flags.
18552         (initialize_argument_information): Turn off
18553         ECF_LOOPING_CONST_OR_PURE when turning off ECF_CONST.
18554         Change const to pure if callee_copies is true rather than just
18555         turning off const.
18556         (expand_call): Turn off ECF_LOOPING_PURE_CONST_CALL and remove old
18557         way of marking pure calls.
18558         (emit_library_call_value_1): Turn off ECF_LOOPING_PURE_CONST_CALL.
18559         Remove hack that was supposed to fix pr7335 and remove old
18560         way of marking pure calls.
18561         * emit-rtl.c (emit_copy_of_insn_after): Copy RTL_CONST_CALL_P,
18562         RTL_PURE_CALL_P, RTL_LOOPING_CONST_OR_PURE_CALL_P.
18563         * cselib.c (cselib_process_insn): Changed CONST_OR_PURE_CALL_P to
18564         RTL_CONST_OR_PURE_CALL_P.
18565         * tree-ssa-pre.c (can_value_number_call): Fixed spacing.
18566         * loop-invariant.c (find_exits, find_invariant_bb): Changed
18567         CONST_OR_PURE_CALL_P to RTL_CONST_OR_PURE_CALL_P.
18568         * sched-deps.c (schedule_analyze): Ditto.
18569         * rtl.h (struct rtx_def): Use call field, unchanging field, and
18570         return_val field of calls to represent pure and const function info.
18571         (CONST_OR_PURE_CALL_P): Deleted macro.
18572         (RTL_CONST_CALL_P, RTL_PURE_CALL_P,
18573         RTL_LOOPING_CONST_OR_PURE_CALL_P, RTL_CONST_OR_PURE_P): New macros.
18574         * tree-inline.c (copy_body_r): Changed TREE_READONLY_DECL_P to
18575         TREE_READONLY.
18576         * tree-optimize.c (execute_fixup_cfg): Added test for
18577         ECF_LOOPING_CONST_OR_PURE.
18578         * c-common.c (handle_pure_attribute): Changed DECL_IS_PURE to
18579         DECL_PURE_P.
18580         * tree-cfg.c (update_call_expr_flags): Do not clear tree side
18581         effects for looping pure or const calls.
18582         (verify_gimple_expr): Added verification code.
18583         * config/alpha/alpha.c (alpha_legitimize_address,
18584         alpha_emit_xfloating_libcall): Changed CONST_OR_PURE_CALL_P to
18585         RTL_CONST_CALL_P.
18586         * config/s390/s390.c (s390_emit_tls_call_insn): Ditto.
18587         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Ditto.
18588         * config/mips/mips.c (mips_call_tls_get_addr): Ditto.
18589         * cfgrtl.c (need_fake_edge_p): Changed CONST_OR_PURE_CALL_P to
18590         RTL_CONST_OR_PURE_CALL_P.
18591         * dce.c (deletable_insn_p): Allow non looping, non sibling, pure
18592         and const calls to be deleted.
18593
18594 2008-05-07  Uros Bizjak  <ubizjak@gmail.com>
18595
18596         PR target/35714
18597         * config/i386/mmx.md (mmx_subv2sf3): New expander.
18598         (*mmx_subv2sf3): Rename from mmx_subv2sf3 insn pattern.
18599         (*mmx_eqv2sf3): Rename from mmx_eqv2sf3 insn pattern.
18600         (mmx_eqv2sf3): New expander.  Use ix86_fixup_binary_operands_no_copy
18601         to handle nonimmediate operands.
18602         (*mmx_paddwd): Rename from mmx_paddwd insn pattern.
18603         (mmx_paddwd): New expander.  Use ix86_fixup_binary_operands_no_copy
18604         to handle nonimmediate operands.
18605         (*mmx_pmulhrwv4hi3): Rename from mmx_pmulhrwv4hi3 insn pattern.
18606         (mmx_pmulhrwv4hi3): New expander.  Use
18607         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18608         (*sse2_umulv1siv1di3): Rename from sse2_umulv1siv1di3 insn pattern.
18609         (sse2_umulv1siv1di3): New expander.  Use
18610         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18611         (*mmx_eq<mode>3): Rename from mmx_eq<mode>3 insn pattern.
18612         (mmx_eq<mode>3): New expander.  Use
18613         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18614         (*mmx_uavgv8qi3): Rename from mmx_uavgv8qi3 insn pattern.
18615         (mmx_uavgv8qi3): New expander.  Use
18616         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18617         (*mmx_uavgv4hi3): Rename from mmx_uavgv4hi3 insn pattern.
18618         (mmx_uavgv4hi3): New expander.  Use
18619         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18620
18621         * config/i386/sse.md
18622         (sse_movhlps_exp): New expander.  Use ix86_fixup_binary_operands
18623         to handle nonimmediate operands.
18624         (sse_movlhps_exp): New expander.  Use ix86_fixup_binary_operands
18625         to handle nonimmediate operands.
18626         (sse_loadhps_exp): New expander.  Use ix86_fixup_binary_operands
18627         to handle nonimmediate operands.
18628         (sse_loadlps_exp): New expander.  Use ix86_fixup_binary_operands
18629         to handle nonimmediate operands.
18630         (sse2_unpckhpd_exp): New expander.  Use
18631         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18632         (sse2_unpcklpd_exp): New expander.  Use
18633         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18634         (sse_loadhpd_exp): New expander.  Use ix86_fixup_binary_operands
18635         to handle nonimmediate operands.
18636         (sse_loadlpd): New expander.  Use ix86_fixup_binary_operands
18637         to handle nonimmediate operands.
18638         (*sse2_<plusminus_insn><mode>3): Rename from
18639         sse2_<plusminus_insn><mode>3 insn pattern.
18640         (sse2_<plusminus_insn><mode>3): New expander.  Use
18641         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18642         (*sse2_umulv2siv2di3): Rename from sse2_umulv2siv2di3 insn pattern.
18643         (sse2_umulv2siv2di3): New expander.  Use
18644         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18645         (*sse4_1_mulv2siv2di3): Rename from sse4_1_mulv2siv2di3 insn pattern.
18646         (sse4_1_mulv2siv2di3): New expander.  Use
18647         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18648         (*sse2_pmaddwd): Rename from sse2_pmaddwd insn pattern.
18649         (sse2_pmaddwd): New expander.  Use
18650         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18651         (*sse2_eq<mode>3): Rename from sse2_eq<mode>3 insn pattern.
18652         (sse2_eq<mode>3): New expander.  Use
18653         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18654         (*sse4_1_eqv2di3): Rename from sse4_1_eqv2di3 insn pattern.
18655         (sse4_1_eqv2di3): New expander.  Use
18656         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18657         (*sse2_uavgv16qi3): Rename from sse2_uavgv16qi3 insn pattern.
18658         (sse2_uavgv16qi3): New expander.  Use
18659         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18660         (*sse2_uavgv16qi3): Rename from sse2_uavgv16qi3 insn pattern.
18661         (sse2_uavgv16qi3): New expander.  Use
18662         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18663         (*sse2_uavgv8hi3): Rename from sse2_uavgv8hi3 insn pattern.
18664         (sse2_uavgv8hi3): New expander.  Use
18665         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18666         (*ssse3_pmulhrswv8hi3): Rename from ssse3_pmulhrswv8hi3 insn pattern.
18667         (ssse3_pmulhrswv8hi3): New expander.  Use
18668         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18669         (*ssse3_pmulhrswv4hi3): Rename from ssse3_pmulhrswv4hi3 insn pattern.
18670         (ssse3_pmulhrswv4hi3): New expander.  Use
18671         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18672
18673         (<sse>_vm<plusminus_insn><mode>3): Do not use ix86_binary_operator_ok.
18674         (<sse>_vmmul<mode>3): Ditto.
18675         (divv4sf3): Do not use ix86_fixup_binary_operands_no_copy.
18676         (divv2df3): Ditto.
18677         (ssse3_pmaddubsw128): Use register_operand for operand 1.
18678         (ssse3_pmaddubsw): Ditto.
18679
18680         * config/i386/i386.c (struct_builtin_description)
18681         [IX86_BUILTIN_LOADHPS]: Use CODE_FOR_sse_loadhps_exp.
18682         [IX86_BUILTIN_STOREHPS]: Use CODE_FOR_sse_loadlps_exp.
18683         [IX86_BUILTIN_LOADHPD]: Use CODE_FOR_sse2_loadhpd_exp.
18684         [IX86_BUILTIN_LOADLPD]: Use CODE_FOR_sse2_loadlpd_exp.
18685         [IX86_BUILTIN_MOVHLPS]: Use CODE_FOR_sse_movhlps_exp.
18686         [IX86_BUILTIN_MOVLHPS]: Use CODE_FOR_sse_movlhps_exp.
18687         [IX86_BUILTIN_UNPCKHPD]: Use FOR_sse2_unpckhpd_exp.
18688         [IX86_BUILTIN_UNPCKLPD]: Use FOR_sse2_unpcklpd_exp.
18689         (ix86_fixup_binary_operands): Assert that src1
18690         and src2 must have the same mode when swapped.
18691         (ix86_expand_binop_builtin): Do not use ix86_fixup_binary_operands
18692         and ix86_binary_operator_ok.  Do not force operands in registers
18693         when optimizing.
18694
18695 2008-05-07  Jan Hubicka  <jh@suse.cz>
18696
18697         * cgraph.c (dump_cgraph_node): Update.
18698         * cgraph.h (cgraph_local_info): Break out inline summary.
18699         * cgraphunit.c (cgraph_process_new_functions): Use inliner analysis
18700         hook.
18701         * ipa-inline (inline_summary): New accestor function.
18702         (cgraph_clone_inlined_nodes, cgraph_check_inline_limits,
18703         cgraph_decide_inlining, compute_inline_parameters): Update.
18704         * ipa.c (cgraph_remove_unreachable_nodes): Remove statistics.
18705
18706 2008-05-07  Maxim Kuvyrkov  <maxim@codesourcery.com>
18707
18708         Cleanup ColdFire scheduling support and add V4 pipeline model.
18709
18710         * config/m68k/m68k.md (UNSPEC_TIE): New constant.
18711         (define_attr cpu): Add cfv4 value.
18712         (define_attr type, define_attr type1): Merge into a single 'type'
18713         attribute.  Update all uses.
18714         (define_attr opx_type, define_attr opy_type, define_attr opx_access):
18715         Rearrange and update.  Rename value 'reg' to 'Rn', add value 'FPn'.
18716         Update all uses.
18717         (define_attr opx_mem, define_attr opy_mem): Remove.
18718         (define_attr op_mem): Clean up, update comment.
18719         (define_attr size): Use specific values instead of general int.
18720         (define_attr guess, define_attr split): Remove.  Update all uses.
18721         (movdf_internal, tstsi_internal, tsthi_internal, tstqi_internal,
18722         tst<mode>_68881, pushexthisi_const, movsi_const0_68000_10,
18723         movsi_const0_68040_60, movsi_const0, movsi_cf, movstrictqi_cf,
18724         zero_extendhisi2_cf, zero_extendqisi2_cfv4, cfv4_extendhisi2,
18725         68k_extendhisi2, extendqihi2, cfv4_extendqisi2, 68k_extendqisi2,
18726         floatsi<mode>2_68881, ftrunc<mode>2_68881, ftrunc<mode>2_cf,
18727         fix<mode>qi2_68881, fix<mode>hi2_68881, fix<mode>si2_68881,
18728         adddi_dishl32, addsi3_5200, add<mode>3_floatsi_68881,
18729         add<mode>3_floathi_68881, add<mode>3_floatqi_68881,
18730         add<mode>3_68881, add<mode>3_cf, subdi_dishl32, subsi3,
18731         sub<mode>3_floatsi_68881, sub<mode>3_floathi_68881,
18732         sub<mode>3_floatqi_68881, sub<mode>3_68881, sub<mode>3_cf,
18733         mulhi3, mulhisi3, mulhisisi3_s, mulsi3_68020, mulsi3_cf,
18734         umulhisi3, mulhisisi3_z, mul<mode>3_floatsi_68881,
18735         mul<mode>3_floathi_68881, mul<mode>3_floatqi_68881, fmul<mode>3_cf,
18736         div<mode>3_cf, sqrt<mode>2_cf, abs<mode>2_cf, clzsi2,
18737         one_cmplsi2_5200, subreghi1ashrdi_const32, ashrsi3, lshrsi3,
18738         bsetmemqi, bsetmemqi_ext, bclrmemqi, bclrmemqi_ext,
18739         beq, bne, bgt, blt, bordered, bunordered, buneq, bunge, bungt, bunle,
18740         bunlt, bltgt, tablejump_internal, call, non_symbolic_call_value,
18741         symbolic_call_value_jsr, symbolic_call_value_bsr, link):
18742         Update or set attributes.
18743         (stack_tie): New fake instruction.
18744
18745         * config/m68k/m68k.h (TUNE_CFV4): New macro.
18746         (m68k_sched_attr_size): Update declaration.
18747         (m68k_sched_attr_type2): Remove.
18748         (m68k_sched_address_bypass_p, m68k_sched_indexed_address_bypass_p):
18749         Declare new bypass predicates.
18750
18751         * config/m68k/m68k.c (m68k_sched_issue_rate,
18752         m68k_sched_first_cycle_multipass_dfa_lookahead): Declare hook
18753         implementations.
18754         (TARGET_SCHED_ISSUE_RATE,
18755         TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD): Override hooks.
18756         (override_options): Handle scheduling for ColdFire V4 core.
18757         (m68k_expand_prologue): Emit stack_tie.
18758         (enum attr_op_type): Split value 'OP_TYPE_REG' to 'OP_TYPE_RN' and
18759         'OP_TYPE_FPN'.  Update all uses.
18760         (sched_guess_p): Remove.
18761         (sched_address_type): Handle symbolic addresses.
18762         (sched_get_operand): New static function.
18763         (sched_operand_type): Merge into sched_attr_op_type.
18764         (sched_attr_op_type): Handle FP registers, handle quick constants,
18765         update.
18766         (m68k_sched_attr_opx_type, m68k_sched_attr_opy_type): Update.
18767         (m68k_sched_attr_size): Update.  Move logic to ...
18768         (sched_get_attr_size_int): New static function.
18769         (sched_get_opxy_mem_type): New static function.
18770         (m68k_sched_attr_op_mem): Update.
18771         (m68k_sched_attr_type2): Remove.
18772         (sched_cfv4_bypass_data): New static variable.
18773         (m68k_sched_adjust_cost): Handle ColdFire V4 bypass.
18774         (m68k_sched_issue_rate): Implement scheduler hook.
18775         (struct _sched_ib: enabled_p): New field.
18776         (m68k_sched_variable_issue): Update.  Handle V4.
18777         (SCHED_DUMP_TODO, SCHED_DUMP_DONE, SCHED_DUMP_NOTHING,
18778         sched_dump_class_func_t, sched_dump_split_class,
18779         sched_dump_dfa_guess_unit_code, sched_dump_dfa_state,
18780         sched_dump_dfa_class, m68k_sched_dump): Remove.
18781         (m68k_sched_first_cycle_multipass_dfa_lookahead): Implement scheduler
18782         hook.
18783         (m68k_sched_init_global): Remove statisctics dumping, introduce
18784         sanity check that all instructions have pipeline reservations.  Handle
18785         ColdFire V4 core.
18786         (m68k_sched_dfa_pre_advance_cycle, m68k_sched_dfa_post_advance_cycle):
18787         Handle ColdFire V4 core.
18788         (sched_mem_operand_p, sched_get_reg_operand, sched_get_mem_operand):
18789         New static functions.
18790         (m68k_sched_address_bypass_p): New bypass predicate.
18791         (sched_get_indexed_address_scale): New static function.
18792         (m68k_sched_indexed_address_bypass_p): New bypass predicate.
18793
18794         * cf.md: Update comments.
18795         (define_attr type2): Remove.  Use 'type' attribute instead.
18796         Update all uses.
18797         (cf_ib): Rename to cfv123_ib.  Update all uses.
18798         (cf_oep): Rename to cfv123_oep.  Update all uses.
18799         (cf_chr): Rename to cfv123_chr.  Update all uses.
18800         (cf_mem): Rename to cfv123_mem.  Update all uses.
18801         (cf_mac): Move to more appropriate place.
18802         (cfv123_guess): New automaton and cpu_unit.
18803         (cfv123_*, cfv12_*, cfv1_*, cfv2_*, cfv3_*): Use type attribute.
18804         Update uses of 'size' attribute.  Handle before reload scheduling.
18805         (cfv123_guess): New dummy reservation for unhandled instructions.
18806         (cfv4_*): Pipeline description of ColdFire V4 core.
18807         (ignore): New reservation to handle 'ignore' type.
18808
18809 2008-05-07  Ian Lance Taylor  <iant@google.com>
18810
18811         PR middle-end/36013
18812         * gimplify.c (find_single_pointer_decl_1): Don't look through
18813         indirections.
18814         (find_single_pointer_decl): Adjust comments.
18815
18816 2008-05-07  Jakub Jelinek  <jakub@redhat.com>
18817
18818         PR middle-end/36137
18819         * fold-const.c (fold_binary): Use STRIP_SIGN_NOPS instead of
18820         STRIP_NOPS on arguments even for MIN_EXPR and MAX_EXPR.
18821
18822         PR middle-end/36106
18823         * omp-low.c (expand_omp_atomic_pipeline): Load value using the
18824         integral type rather than floating point, then VIEW_CONVERT_EXPR
18825         to the floating point type.
18826
18827 2008-05-07  Uros Bizjak  <ubizjak@gmail.com>
18828
18829         * config/i386/i386.c (ix86_expand_copysign): Force non-zero constant
18830         TFmode op0 to register.
18831
18832 2008-05-07  Alan Modra  <amodra@bigpond.net.au>
18833
18834         * c-decl.c (grokdeclarator): Comment typo.
18835
18836 2008-05-06  Aldy Hernandez  <aldyh@redhat.com>
18837
18838         * tree-flow.h: Remove prototype for computed_goto_p.
18839         * tree-cfg.c (computed_goto_p): Make static.
18840
18841 2008-05-06  H.J. Lu  <hongjiu.lu@intel.com>
18842
18843         PR target/35657
18844         * config/i386/i386.c (contains_128bit_aligned_vector_p): Renamed to ...
18845         (contains_aligned_value_p): This.  Handle _Decimal128.
18846         (ix86_function_arg_boundary): Only align _Decimal128 to its
18847         natural boundary and handle it properly.
18848
18849 2008-05-06  Martin Jambor  <mjambor@suse.cz>
18850
18851         * ipa-cp.c (ipcp_method_orig_node): Renamed to ipcp_get_orig_node.
18852         (ipcp_method_is_cloned): Renamed to ipcp_node_is_clone
18853         (ipcp_method_set_orig_node): Removed.
18854         (ipcp_cval_get_cvalue_type): Removed.
18855         (ipcp_method_get_scale): Renamed to ipcp_get_node_scale.
18856         (ipcp_method_set_scale): Renamed to ipcp_set_node_scale.
18857         (ipcp_cval_set_cvalue_type): Removed.
18858         (ipcp_cval_get_cvalue): Removed.
18859         (ipcp_cval_set_cvalue): Removed.
18860         (ipcp_type_is_const): Renamed to ipcp_lat_is_const.
18861         (ipcp_cval_equal_cvalues): Renamed to ipcp_lats_are_equal
18862         (ipcp_lats_are_equal): Changed parameters to two ipcp_lattice's
18863         (ipcp_cval_meet): Renamed to ipa_lattice_meet
18864         (ipcp_cval_changed): Changed to use ipcp_lat_is_const
18865         (ipcp_method_cval): Renamed to ipcp_get_ith_lattice
18866         (ipcp_get_ith_lattice): Changed parameters.
18867         (ipcp_cval_compute): Renamed to ipcp_lattice_from_jfunc
18868         (ipcp_lattice_from_jfunc): Changed parameters.
18869         (ipcp_redirect): Local lattice pointer instead of lattice type variable.
18870         (ipcp_method_cval_print): Added temporary variable info.
18871         (ipcp_redirect): Removed already unused local variable caller.
18872         (ipcp_redirect): New temporary variable orig_callee_info
18873         (ipcp_redirect): Removed newly unused local variable callee.
18874         (ipcp_redirect): Removed (a bit confusing) local variable type.
18875         (ipcp_insert_stage): Added local variable info.
18876         (ipcp_cval_changed): Renamed to ipcp_lattice_changed, parameters
18877         renamed too
18878         (ipcp_formal_create): Removed.
18879         (ipcp_method_cval_set): Removed.
18880         (ipcp_propagate_stage): Renamed lattice variables.
18881         (ipcp_method_cval_set_cvalue_type): Removed.
18882         (ipcp_method_cval_print): Renamed to ipcp_print_all_lattices
18883         (ipcp_print_all_lattices): Changed printed strings to refer to
18884         lattices rather than cvals.
18885         (ipcp_method_cval_init): Renamed to ipcp_initialize_node_lattices
18886         (ipcp_propagate_const): Changed formal parameters.
18887         (build_const_val): Changed formal parameters.
18888         (ipcp_insert_stage): Removed useless variable cvalue
18889         (build_const_val): Changed formal parameters.
18890         (ipcp_method_compute_scale): Renamed to ipcp_compute_node_scale
18891         (ipcp_after_propagate): Renamed to ipcp_change_tops_to_bottom
18892         (ipcp_callsite_param_print): Renamed to ipcp_print_all_jump_functions
18893         (ipcp_profile_mt_count_print): Renamed to ipcp_print_func_profile_counts
18894         (ipcp_print_func_profile_counts): Changed string from "method" to
18895         "function"
18896         (ipcp_profile_cs_count_print): Renamed to ipcp_print_call_profile_counts
18897         (ipcp_profile_edge_print): Renamed to ipcp_print_edge_profiles
18898         (ipcp_profile_bb_print): Renamed to ipcp_print_bb_profiles
18899         (ipcp_structures_print): Renamed to ipcp_print_all_structures
18900         (ipcp_profile_print): Renamed to ipcp_print_profile_data
18901         (ipcp_lat_is_const): Changed parameters and made inline.
18902         (ipcp_replace_map_create): Renamed to ipcp_create_replace_map
18903         (ipcp_redirect): Renamed to ipcp_need_redirect_p
18904         (ipcp_need_redirect_p): Calls ipcp_lat_is_const instead of using
18905         the predicate condition directly
18906         (ipcp_propagate_stage): Added local variable args. Removed local
18907         variable callee.  (Both are mere code simplifications.)
18908         (ipcp_method_dont_insert_const): Renamed to
18909         ipcp_node_not_modifiable_p.
18910         (ipcp_node_not_modifiable_p): Made inline.
18911         (ipcp_cloned_create): Renamed to ipcp_init_cloned_node
18912         (ipcp_propagate_const): Renamed to ipcp_propagate_one_const
18913         (ipcp_print_all_lattices): Removed variable cvalue
18914         (ipcp_method_scale_print): Renamed to ipcp_function_scale_print
18915         Updated comments.
18916
18917 2008-05-06  Olivier Hainque  <hainque@adacore.com>
18918
18919         * tree-sra.c (try_instantiate_multiple_fields): Early return
18920         if field has POINTER_TYPE.
18921
18922 2008-05-06  Kai Tietz  <kai.tietz@onevision.com>
18923
18924         * config/i386/i386.c (output_set_got): Fix for x86_64 output_emit_asm
18925         by using 'q' specifier for instruction.
18926         (ix86_file_end): Replaced case TARGET_64BIT_MS_ABI by TARGET_64BIT.
18927
18928 2008-05-06  Anatoly Sokolov <aesok@post.ru>
18929
18930         * config/avr/avr.md (*sbrx_branch, *sbix_branch, *sbix_branch_tmp):
18931         Change mode of zero_extract from QImode to HImode.
18932         (sign bit tests peepholes): (Ditto.).
18933
18934 2008-05-06  Uros Bizjak  <ubizjak@gmail.com>
18935
18936         * config/i386/mmx.md: Remove double backslashes from asm templates.
18937         (*mmx_addv2sf3): Rename from mmx_addv2sf3 insn pattern.
18938         (mmx_addv2sf3): New expander.  Use ix86_fixup_binary_operands_no_copy
18939         to handle nonimmediate operands.
18940         (*mmx_mulv2sf3): Rename from mmx_mulv2sf3 insn pattern.
18941         (mmx_mulv2sf3): New expander.  Use ix86_fixup_binary_operands_no_copy
18942         to handle nonimmediate operands.
18943         (*mmx_<code>v2sf3_finite): New insn pattern.
18944         (*mmx_<code>v2sf3): Rename from mmx_<code>v2sf3 insn pattern.
18945         (mmx_<code>v2sf3): New expander.  Use
18946         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18947         (mmx_<plusminus_insn><mode>3): New expander.  Use
18948         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18949         (*mmx_<plusminus_insn><mode>3): New insn pattern.
18950         (mmx_add<mode>3): Removed.
18951         (mmx_ssadd<mode>3): Ditto.
18952         (mmx_usadd<mode>3): Ditto.
18953         (mmx_sub<mode>3): Ditto.
18954         (mmx_sssub<mode>3): Ditto.
18955         (mmx_ussub<mode>3): Ditto.
18956         (*mmx_mulv4hi3): Rename from mmx_mulv4hi3 insn pattern.
18957         (mmx_mulv4hi3): New expander.  Use ix86_fixup_binary_operands_no_copy
18958         to handle nonimmediate operands.
18959         (*mmx_smulv4hi3_highpart): Rename from mmx_smulv4hi3_highpart
18960         insn pattern.
18961         (mmx_smulv4hi3_highpart): New expander.  Use
18962         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18963         (*mmx_umulv4hi3_highpart): Rename from mmx_umulv4hi3_highpart
18964         insn pattern.
18965         (mmx_umulv4hi3_highpart): New expander.  Use
18966         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18967         (*mmx_<code>v4hi3): Rename from mmx_<code>v4hi3 insn pattern.
18968         (mmx_<code>v4hi3): New expander.  Use
18969         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18970         (*mmx_<code>v8qi3): Rename from mmx_<code>v8qi3 insn pattern.
18971         (mmx_<code>v8qi3): New expander.  Use
18972         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18973         (*mmx_<code><mode>3): Rename from mmx_<code><mode>3 insn pattern.
18974         (mmx_<code><mode>3): New expander.  Use
18975         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18976
18977 2008-05-05  Jan Hubicka  <jh@suse.cz>
18978
18979         PR tree-optimization/36118
18980         * passes.c (pass_init_dump_file): Fix dump header.
18981
18982 2008-05-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18983
18984         PR middle-end/36141
18985         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Don't create
18986         VCE for function decls.
18987
18988 2008-05-05  H.J. Lu  <hongjiu.lu@intel.com>
18989
18990         * config/i386/sse.md (sse2_<plusminus_insn><mode>3): Fix a typo.
18991
18992 2008-05-05  H.J. Lu  <hongjiu.lu@intel.com>
18993
18994         * config/i386/i386.md (sat_plusminus): New.
18995         (plusminus_insn): Likewise.
18996         (plusminus_mnemonic): Likewise.
18997         (addsub): Removed.
18998         (comm): Add ss_plus, us_plus, ss_minus and us_minus.
18999         (*<addsub><mode>3_cc_overflow): Renamed to ...
19000         (*<plusminus_insn><mode>3_cc_overflow): This.
19001         (*<addsub>si3_zext_cc_overflow): Renamed to ...
19002         (*<plusminus_insn>si3_zext_cc_overflow): This.
19003
19004         * config/i386/sse.md (<addsub><mode>3): Renamed to ...
19005         (<plusminus_insn><mode>3): This.
19006         (*<addsub><mode>3): Renamed to ...
19007         (*<plusminus_insn><mode>3): This.
19008         (<sse>_vm<addsub><mode>3): Renamed to ...
19009         (<sse>_vm<plusminus_insn><mode>3): This.
19010         (sse3_h<addsub>v4sf3): Renamed to ...
19011         (sse3_h<plusminus_insn>v4sf3): This.
19012         (sse3_h<addsub>v2df3): Renamed to ...
19013         (sse3_h<plusminus_insn>v2df3): This.
19014         (<plusminus_insn><mode>3): New.
19015         (*<plusminus_insn><mode>3): Likewise.
19016         (sse2_<plusminus_insn><mode>3): Likewise.
19017         (add<mode>): Removed.
19018         (*add<mode>3): Likewise.
19019         (sse2_ssadd<mode>3): Likewise.
19020         (sse2_usadd<mode>3): Likewise.
19021         (sub<mode>3): Likewise.
19022         (*sub<mode>3): Likewise.
19023         (sse2_sssub<mode>3): Likewise.
19024         (sse2_ussub<mode>3): Likewise.
19025
19026 2008-05-05  Benjamin Kosnik  <bkoz@redhat.com>
19027
19028         * gthr-single.h: Add in required interface elements as per gthr.h.
19029         Add stub types for __gthread_key_t, __gthread_once_t. Add defines
19030         for __GTHREAD_ONCE_INIT, __GTHREAD_RECURSIVE_MUTEX_INIT.
19031         Generalize UNUSED macro.
19032         (__gthread_once): Add.
19033         (__gthread_key_create): Add.
19034         (__gthread_key_delete): Add.
19035         (__gthread_getspecific): Add.
19036         (__gthread_setspecific): Add.
19037
19038 2008-05-05  Andrew Pinski  <Andrew.Pinski@playstation.sony.com>
19039
19040         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): If we have
19041         the same size types for the indirect reference on the rhs, then
19042         create a VCE.
19043
19044 2008-05-05  Uros Bizjak  <ubizjak@gmail.com>
19045
19046         * config/i386/i386.md
19047         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit): Use only
19048         one insn template instead of template series.
19049         (*xordi_1_rex64): Ditto.
19050         (*xordi_2_rex64): Ditto.
19051
19052 2008-05-05  Ira Rosen  <irar@il.ibm.com>
19053
19054         PR tree-optimization/36119
19055         * tree-vect-transform.c (vectorizable_assignment): Set NCOPIES to 1
19056         in case of SLP.
19057
19058 2008-06-04  Jan Hubicka  <jh@suse.cz>
19059
19060         tree-optimization/36100
19061         * tree-pass.h (pass_O0_always_inline): Declare.
19062         * ipa-inline.c (inline_transform): Remove dead code.
19063         (cgraph_gate_O0_always_inline, cgraph_O0_always_inline,
19064         pass_O0_always_inline): New.
19065         * passes.c (init_optimization_passes): Add pass_O0_always_inline.
19066
19067 2008-05-04  Kai Tietz  <kai.tietz@onevision.com>
19068
19069         * config/i386/i386.c (x86_output_mi_thunk): Use movq alternative
19070         mnemonic in this_param move for TARGET_64BIT.
19071
19072 2008-05-04  Uros Bizjak  <ubizjak@gmail.com>
19073
19074         * config/i386/i386.md (*strmovsi_1): Simplify asm alternatives.
19075         (*strmovsi_rex_1): Ditto.
19076         (*strsetsi_1): Ditto.
19077         (*strsetsi_rex_1): Ditto.
19078
19079         (add<mode>cc): Macroize expander from addqicc, addhicc, addsicc and
19080         adddicc expanders using SWI mode iterator.
19081
19082 2008-05-04  H.J. Lu  <hongjiu.lu@intel.com>
19083
19084         PR target/36121
19085         * config/i386/i386.c (ix86_expand_special_args_builtin): Remove three
19086         argument handling.
19087
19088 2008-05-04  David S. Miller  <davem@davemloft.net>
19089
19090         * config.gcc (sparc*-*-*): Always set need_64bit_hwint to yes.
19091         (sparc*-*-linux*): Use linux.h in tm_file.
19092         (sparc-*-linux*): If 'enabled_targets' is 'all', build a bi-arch
19093         compiler defaulting to 32-bit.
19094         (sparc*-*-*): Remove explicit target settings of need_64bit_hwint,
19095         no longer needed.
19096         * config/sparc/linux.h: Remove definitions now obtained
19097         properly from linux.h
19098         * config/sparc/linux64.h: Likewise.
19099         (ASM_CPU_DEFAULT_SPEC): Change this to ASM_CPU64_DEFAULT_SPEC, we
19100         don't want this setting for 32-bit builds in a biarch compiler.
19101         * doc/install.texi: Add sparc-linux to list of targets
19102         supporting --enable-targets=all.
19103
19104 2008-05-03  Andrew Pinski  <pinskia@gmail.com>
19105
19106         * Makefile.in (tree-ssa-phiprop.o): Fix dependencies.
19107
19108 2008-05-03  H.J. Lu  <hongjiu.lu@intel.com>
19109
19110         * config/i386/i386.c (ix86_builtin_type): Move V4SI_FTYPE_V4SF
19111         after V4SI_FTYPE_V8HI.
19112         (ix86_init_mmx_sse_builtins): Move case V4HI_FTYPE_V4HI after
19113         case V4SI_FTYPE_V2DF.
19114
19115 2008-05-03  Kenneth Zadeck  <zadeck@naturalbridge.com>
19116
19117         * doc/invoke.texi (max-flow-memory-locations): Removed.
19118         * params.def (PARAM_MAX_FLOW_MEMORY_LOCATIONS): Removed.
19119
19120 2008-05-03  Richard Guenther  <rguenther@suse.de>
19121
19122         PR middle-end/34973
19123         * opts.c (set_Wstrict_aliasing): Handle the turn-off case.
19124
19125 2008-05-02  David S. Miller  <davem@davemloft.net>
19126
19127         * config.gcc (need_64bit_hwint): Document libcpp dependency.
19128
19129 2008-05-02  Simon Baldwin <simonb@google.com>
19130
19131         PR bootstrap/36108
19132         * c-common.h (warn_array_subscript_range): Removed.
19133         * c-common.c (warn_array_subscript_range): Ditto.
19134         * tree-vrp.c (check_array_ref): Revert to ignoring arrays with size 2.
19135         * c-typeck.c (build_array_ref): Remove warn_array_subscript_range.
19136
19137 2008-05-02  H.J. Lu  <hongjiu.lu@intel.com>
19138
19139         * config/i386/i386.c (ix86_special_builtin_type): New.
19140         (bdesc_special_args): Likewise.
19141         (ix86_expand_special_args_builtin): Likewise.
19142         (ix86_init_mmx_sse_builtins): Updated.
19143         (ix86_expand_builtin): Updated.
19144         (ix86_expand_store_builtin): Removed.
19145         (ix86_expand_unop_builtin): Likewise.
19146
19147         * config/i386/mm3dnow.h (__v2sf): Moved to ...
19148         * config/i386/mmintrin.h (__v2sf): Here.
19149
19150         * config/i386/xmmintrin.h (_mm_loadh_pi): Replace __v2si with
19151         const __v2sf.
19152         (_mm_loadl_pi): Likewise.
19153         (_mm_storeh_pi): Replace __v2si with __v2sf.
19154         (_mm_storel_pi): Likewise.
19155
19156         * doc/extend.texi: Correct __builtin_ia32_loadhps,
19157         __builtin_ia32_loadlps, __builtin_ia32_storehps,
19158         __builtin_ia32_storelps, __builtin_ia32_loadhpd and
19159         __builtin_ia32_loadlpd.
19160
19161 2008-05-02  H.J. Lu  <hongjiu.lu@intel.com>
19162
19163         * config/i386/i386.c (ix86_builtin_type): Add FLOAT_FTYPE_FLOAT,
19164         V4SF_FTYPE_V4SF_VEC_MERGE and V2DF_FTYPE_V2DF_VEC_MERGE.
19165         (bdesc_args): Updated.  Add scalar SSE builtins with vec_merge.
19166         (ix86_init_mmx_sse_builtins): Updated.
19167         (ix86_expand_args_builtin): Likewise.
19168         (ix86_expand_builtin): Likewise.
19169         (ix86_expand_unop1_builtin): Renamed to ...
19170         (ix86_expand_unop_vec_merge_builtin): This.
19171
19172 2008-05-01  Jan Hubicka  <jh@suse.cz>
19173
19174         PR bootstrap/36100
19175         * ipa-inline.c (inline_generate_summary): Make static.
19176         (inline_transform): Do not call inlining at -O0; make static.
19177         * passes.c (execute_todo): Add sanity check.
19178         (execute_one_ipa_transform_pass): Execute proper flags.
19179
19180 2008-05-01  Eric Botcazou  <ebotcazou@adacore.com>
19181
19182         * tree.h (TYPE_NONALIASED_COMPONENT): Expand comment.
19183         (DECL_NONADDRESSABLE_P): Likewise.
19184         * alias.c (record_component_aliases): Fix comment.
19185
19186 2008-05-01  Simon Baldwin <simonb@google.com>
19187
19188         * c-common.h (warn_array_subscript_range): New function.
19189         * c-common.c (warn_array_subscript_range): Ditto.
19190         * tree-vrp.c (check_array_ref): Corrected code to agree with
19191         comment, ignoring only arrays of size 0 or size 1.
19192         * c-typeck.c (build_array_ref): Call warn_array_subscript_range.
19193
19194 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
19195
19196         * config/i386/i386.c (ix86_builtin_type): Replace
19197         DI_FTYPE_DI_DI_INT with V1DI2DI_FTYPE_V1DI_V1DI_INT.
19198         (bdesc_args): Updated.
19199         (ix86_init_mmx_sse_builtins): Likewise.
19200         (ix86_expand_args_builtin): Likewise.
19201
19202         * config/i386/tmmintrin.h (_mm_alignr_pi8): Replace long long
19203         with __v1di.
19204
19205         * doc/extend.texi: Correct __builtin_ia32_palignr.
19206
19207 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
19208
19209         PR target/36095
19210         * config/i386/i386.c (bdesc_crc32): Removed.
19211         (ix86_expand_crc32): Likewise.
19212         (ix86_builtin_type): Replace V2DI2TI_FTYPE_V2DI2TI_INT with
19213         V2DI2TI_FTYPE_V2DI_INT, V2DI2TI_FTYPE_V2DI2TI_V2DI2TI_INT with
19214         V2DI2TI_FTYPE_V2DI_V2DI_INT.  Add UINT64_FTYPE_UINT64_UINT64,
19215         UINT_FTYPE_UINT_UINT, UINT_FTYPE_UINT_USHORT and
19216         UINT_FTYPE_UINT_UCHAR.
19217         (bdesc_args): Updated. Add crc32 builtins.
19218         (ix86_init_mmx_sse_builtins): Updated.
19219         (ix86_expand_args_builtin): Updated to support subreg.
19220
19221         * doc/extend.texi: Correct __builtin_ia32_crc32di.
19222
19223 2008-05-01  Jan Hubicka  <jh@suse.cz>
19224
19225         * tree-pass.h (opt_pass): Add IPA_PASS.
19226         (varpool_node, cgraph_node): Forward declare.
19227         (ipa_opt_pass): Define.
19228         (pass_ipa_inline): Turn into ipa_opt_pass.
19229         (pass_apply_inline): Remove.
19230         * ipa-inline.c (pass_ipa_inline): Turn into ipa_opt_pass.
19231         (apply_inline): Turn into ....
19232         (inline_transform): ... this one.
19233         (inline_generate_summary): New function.
19234         (pass_apply_inline): Remove.
19235         * function.h (ipa_opt_pass): Forward declare structure; typedef;
19236         vector.
19237         (struct function): Add ipa_transforms_to_apply.
19238         * passes.c (register_one_dump_file): Work on IPA_PASS.
19239         (init_optimization_passes): Remove pass_inline_parameters and
19240         pass_apply_inline.
19241         (pass_init_dump_file, pass_fini_dump_file): Break out from ....
19242         (execute_one_pass) ... here; apply transforms when possible.
19243         (add_ipa_transform_pass, execute_ipa_summary_asses,
19244         execute_one_ipa_transform_pass): New.
19245         (execute_ipa_pass_list): Update for IPA_PASS type.
19246
19247 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
19248
19249         * config/i386/i386.c (ix86_builtin_type): Add
19250         V2DI_FTYPE_V2DI_V16QI, V2DI_FTYPE_V2DI_UINT_UINT and
19251         V2DI_FTYPE_V2DI_V2DI_UINT_UINT.
19252         (bdesc_args): Add SSE4a builtins.
19253         (ix86_init_mmx_sse_builtins): Updated.
19254         (ix86_expand_args_builtin): Likewise.
19255         (ix86_expand_builtin): Likewise.
19256
19257 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
19258
19259         * config/i386/i386.c (ix86_builtin_type): Add
19260         V8HI_FTYPE_V8HI_V8HI_COUNT, V8HI_FTYPE_V8HI_SI_COUNT,
19261         V4SI_FTYPE_V4SI_V4SI_COUNT, V4SI_FTYPE_V4SI_SI_COUNT,
19262         V4HI_FTYPE_V4HI_V4HI_COUNT, V4HI_FTYPE_V4HI_SI_COUNT,
19263         V2DI_FTYPE_V2DI_V2DI_COUNT, V2DI_FTYPE_V2DI_SI_COUNT,
19264         V2SI_FTYPE_V2SI_V2SI_COUNT, V2SI_FTYPE_V2SI_SI_COUNT,
19265         V1DI_FTYPE_V1DI_V1DI_COUNT, V1DI_FTYPE_V1DI_SI_COUNT,
19266         V8HI_FTYPE_V8HI_INT, V4SI_FTYPE_V4SI_INT, V4HI_FTYPE_V4HI_INT,
19267         V2DI2TI_FTYPE_V2DI2TI_INT, V2DI2TI_FTYPE_V2DI2TI_V2DI2TI_INT
19268         and DI_FTYPE_DI_DI_INT.
19269         (bdesc_args): Add MMX/SSE shift, shuffle and palignr builtins.
19270         (ix86_init_mmx_sse_builtins): Updated.
19271         (ix86_expand_args_builtin): Likewise.
19272         (ix86_expand_builtin): Likewise.
19273         (ix86_expand_binop_imm_builtin): Removed.
19274
19275         * doc/extend.texi: Correct __builtin_ia32_palignr128.
19276
19277 2008-04-30  Richard Guenther  <rguenther@suse.de>
19278
19279         PR tree-optimization/32921
19280         * tree-ssa-loop-im.c (mem_refs_may_alias_p): Disambiguate with TBAA.
19281
19282 2008-04-30  Richard Sandiford  <rsandifo@nildram.co.uk>
19283
19284         * config/arm/arm.c (arm_unwind_emit): Use
19285         crtl->all_throwers_are_sibcalls instead of
19286         cfun->all_throwers_are_sibcalls.
19287         (arm_output_fn_unwind): Likewise.
19288         * config/frv/frv.c (frv_stack_info): Use crtl->uses_pic_offset_table
19289         instead of cfun->uses_pic_offset_table.
19290         (frv_expand_prologue): Likewise.
19291         (frv_frame_pointer_required): Likewise.
19292         (frv_expand_fdpic_call): Likewise.
19293         (frv_emit_movsi): Likewise.
19294         * config/iq2000/iq2000.c (iq2000_expand_prologue): Use
19295         cfun->returns_pcc_struct instead of
19296         current_function_returns_pcc_struct.
19297         * config/m32c/m32c.c (need_to_save): Use crtl->calls_eh_return
19298         instead of cfun->calls_eh_return.
19299         (m32c_pushm_popm): Likewise.
19300         * config/xtensa/xtensa.h (cfun->calls_alloca): Remove bogus
19301         "extern" declaration.
19302
19303 2008-04-30  Richard Guenther  <rguenther@suse.de>
19304
19305         PR tree-optimization/21636
19306         * tree-ssa-ccp.c (ccp_fold): Handle &p->x with p being a
19307         constant address.
19308         (evaluate_stmt): Print the likely value.
19309         (ccp_visit_stmt): Avoid excessive vertical spacing.
19310
19311 2008-04-30  Rafael Espíndola  <espindola@google.com>
19312
19313         * builtins.c (fold_call_expr): Return realret.
19314         * tree-ssa-threadedge.c
19315         (record_temporary_equivalences_from_stmts_at_dest): Ignore calls to
19316         __builtin_object_size.
19317
19318 2008-04-30  Seongbae Park  <seongbae.park@gmail.com>
19319
19320         * gcc.c (wrapper_string): New variable.
19321         (insert_wrapper): New function.
19322         (execute): New option -wrapper.
19323         * doc/invoke.texi (Overall Options): New driver option -wrapper.
19324
19325 2008-04-30  Nathan Froyd  <froydnj@codesourcery.com>
19326
19327         * config/rs6000/crtresgpr.asm, config/rs6000/crtresxgpr.asm,
19328         config/rs6000/crtsavgpr.asm, config/rs6000/crtresfpr.asm,
19329         config/rs6000/crtresxfpr.asm, config/rs6000/crtsavfpr.asm: Break out
19330         from...
19331         * config/rs6000/crtsavres.asm: ...here.  Remove unneeded file.
19332         * config/rs6000/e500crtres32gpr.asm, config/rs6000/e500crtres64gpr.asm,
19333         config/rs6000/e500crtres64gprctr.asm,
19334         config/rs6000/e500crtrest32gpr.asm, config/rs6000/e500crtrest64gpr.asm,
19335         config/rs6000/e500crtresx32gpr.asm, config/rs6000/e500crtresx64gpr.asm,
19336         config/rs6000/e500crtsav32gpr.asm, config/rs6000/e500crtsav64gpr.asm,
19337         config/rs6000/e500crtsav64gprctr.asm,
19338         config/rs6000/e500crtsavg32gpr.asm, config/rs6000/e500crtsavg64gpr.asm,
19339         config/rs6000/e500crtsavg64gprctr.asm: New files.
19340         * config/rs6000/t-ppccomm: Add build rules for new files.
19341         (LIB2FUNCS_STATIC_EXTRA): Add new files.
19342         * config/rs6000/t-netbsd: Add build rules for new files.
19343         (LIB2FUNCS_STATIC_EXTRA): New variable.
19344         * config/rs6000/sysv4.h (ENDFILE_SPEC): Don't include crtsavres.o
19345         (CRTSAVRES_DEFAULT_SPEC): Likewise.
19346         * config/rs6000/netbsd.h (ENDFILE_SPEC): Likewise.
19347
19348 2008-04-30  H.J. Lu  <hongjiu.lu@intel.com>
19349
19350         * config/i386/i386.c (ix86_builtin_type): Add
19351         FLOAT128_FTYPE_FLOAT128_FLOAT128, V16QI_FTYPE_V16QI_V16QI,
19352         V16QI_FTYPE_V8HI_V8HI, V8QI_FTYPE_V8QI_V8QI,
19353         V8QI_FTYPE_V4HI_V4HI, V8HI_FTYPE_V8HI_V8HI,
19354         V8HI_FTYPE_V16QI_V16QI, V8HI_FTYPE_V4SI_V4SI,
19355         V4SI_FTYPE_V4SI_V4SI, V4SI_FTYPE_V8HI_V8HI,
19356         V4SI_FTYPE_V4SF_V4SF, V4SI_FTYPE_V2DF_V2DF,
19357         V4HI_FTYPE_V4HI_V4HI, V4HI_FTYPE_V8QI_V8QI,
19358         V4HI_FTYPE_V2SI_V2SI, V4SF_FTYPE_V4SF_V4SF,
19359         V4SF_FTYPE_V4SF_V4SF_SWAP, V4SF_FTYPE_V4SF_V2SI,
19360         V4SF_FTYPE_V4SF_V2DF, V4SF_FTYPE_V4SF_DI,
19361         V4SF_FTYPE_V4SF_SI, V2DI_FTYPE_V2DI_V2DI,
19362         V2DI_FTYPE_V16QI_V16QI, V2DI_FTYPE_V4SI_V4SI,
19363         V2DI_FTYPE_V2DF_V2DF, V2SI_FTYPE_V2SI_V2SI,
19364         V2SI_FTYPE_V4HI_V4HI, V2SI_FTYPE_V2SF_V2SF,
19365         V2DF_FTYPE_V2DF_V2DF, V2DF_FTYPE_V2DF_V2DF_SWAP,
19366         V2DF_FTYPE_V2DF_V4SF, V2DF_FTYPE_V2DF_DI,
19367         V2DF_FTYPE_V2DF_SI, V2SF_FTYPE_V2SF_V2SF,
19368         V1DI_FTYPE_V1DI_V1DI, V1DI_FTYPE_V8QI_V8QI and
19369         V1DI_FTYPE_V2SI_V2SI.
19370         (bdesc_2arg): Moved to ...
19371         (bdesc_args): Here.
19372         (ix86_init_mmx_sse_builtins): Updated.
19373         (ix86_expand_args_builtin): Updated.  Take a pointer
19374         to const struct builtin_description.  Handle comparison
19375         builtin functions.
19376         (ix86_expand_sse_compare): Take a new argument for swapping operands.
19377         (ix86_expand_builtin): Updated.
19378
19379         * config/i386/sse.md (ssse3_pmaddubswv8hi3): Renamed to ...
19380         (ssse3_pmaddubsw128): This.
19381         (ssse3_pmaddubswv4hi3): Renamed to ...
19382         (ssse3_pmaddubsw): This.
19383
19384         * doc/extend.texi (__builtin_ia32_packsswb128): Correct prototype.
19385         (__builtin_ia32_packssdw128): Likewise.
19386         (__builtin_ia32_packuswb128): Likewise.
19387         (__builtin_ia32_pmaddubsw): Likewise.
19388         (__builtin_ia32_pmaddubsw128): Likewise.
19389
19390 2008-04-30  Richard Guenther  <rguenther@suse.de>
19391
19392         PR tree-optimization/14847
19393         * tree-ssa-ifcombine.c (get_name_for_bit_test): New helper function.
19394         (recognize_bits_test): Use it.
19395         (recognize_single_bit_test): Likewise.
19396
19397 2008-04-30  Martin Jambor  <mjambor@suse.cz>
19398
19399         * ipa-cp.c (ipcp_init_stage): Calls ipa_set_called_with_variable_arg
19400         instead of setting number of formal parameters to zero.
19401         (ipcp_init_stage): Do not set the number of actual parameters to zero
19402         either.
19403         (ipcp_propagate_stage): Explicitly skipping all calls to nodes
19404         which are called with variable number of arguments.
19405         (ipcp_insert_stage): Explicitely skipping all nodes which are
19406         called with variable number of arguments.
19407         (ipcp_callsite_param_print): Skipps callsites to nodes with varaible
19408         number of parameters.
19409
19410         * ipa-prop.h (struct ipa_node_params): Added flag
19411         called_with_var_arguments
19412         (ipa_set_param_count): Added.  Changed sole setter to use it.
19413         (ipa_get_param_count): Added.  All readers of param_count
19414         converted to use it instead.
19415         (ipa_set_called_with_variable_arg): Added.
19416         (ipa_is_called_with_var_arguments): Added.
19417         (ipa_get_ith_param): Added.  All readers of param_decls converted
19418         to use it instead.
19419         (ipa_set_cs_argument_count): Added, sole writer to argument_count
19420         changed to use it.
19421         (ipa_get_cs_argument_count): Added, all readers of argument_count
19422         changed to cal it.
19423         (ipa_get_ith_jump_func): Added. Accessors of jump values changed
19424         to use it.
19425
19426         * ipa-prop.h (struct ipcp_formal): Renamed to ipcp_lattice
19427         (struct ipcp_lattice): Renamed cval_type to type
19428         (struct ipa_node_params): ipcp_cval renamed to ipcp_lattices
19429
19430         * ipa-cp.c (ipcp_cval_get_cvalue): Changed return value to tree
19431         (ipcp_cval_set_cvalue): Changed type of parameter value to tree
19432         (ipcp_insert_stage): Changed the type of variable cvalue to tree
19433         (ipcp_replace_map_create): Changed the type of parameter cvalue to tree
19434         (build_const_val): Changed the type of parameter cvalue to tree
19435         (ipcp_propagate_const): Changed the type of parameter cvalue to tree
19436         (ipcp_method_cval_set_cvalue_type): Renamed parameter cval_type1 to type
19437
19438         * ipa-prop.h (struct ipcp_formal): Replaced cvalue with tree called
19439         constant
19440
19441         * ipa-prop.c (ipa_methodlist_init): Renamed to ipa_init_func_list
19442         (ipa_methodlist_not_empty): Removed, the sole user now checks directly
19443         (ipa_add_method): Renamed to ipa_push_func_to_list
19444         (ipa_remove_method): Renamed to ipa_pop_func_from_list
19445         (ipa_callsite_param_count): Removed.
19446         (ipa_callsite_param_count_set): Removed.
19447         (ipa_callsite_param): Removed.
19448         (ipa_callsite_callee): Removed.
19449         (ipa_callsite_compute_param): Renamed to ipa_compute_jump_functions
19450         (ipa_callsite_compute_count): Renamed to ipa_count_arguments
19451         (ipa_method_formal_count): Removed.
19452         (ipa_method_formal_count_set): Removed.
19453         (ipa_method_get_tree): Removed.
19454         (ipa_method_tree_map_create): Removed.
19455         (ipa_method_compute_tree_map): Renamed to ipa_create_param_decls_array
19456         (ipa_create_param_decls_array): Creates the array itself
19457         (ipa_create_param_decls_array): Temporary variable info instead of
19458         a few dereferences.
19459         (ipa_method_formal_compute_count): Renamed to ipa_count_formal_params
19460         (ipa_method_compute_modify): Renamed to ipa_detect_param_modifications
19461         (get_type): Removed.
19462         (ipa_jf_get_info_type): Removed.
19463         (ipa_node_create): Renamed to ipa_create_node_params
19464         (ipa_free): Renamed to ipa_free_all_node_params
19465         (ipa_nodes_create): Renamed to ipa_create_all_node_params
19466         (ipa_edges_create): Renamed to ipa_create_all_edge_args
19467         (ipa_edges_free): Renamed to ipa_free_all_edge_args
19468         (ipa_nodes_free): Integrated into ipa_free_all_node_params and removed
19469         (ipa_free_all_node_params): Deallocation to jump_functions moved to
19470         ipa_free_all_edge_args
19471         (ipa_method_tree_print): Renamed to ipa_print_all_tree_maps
19472         (ipa_method_modify_print): Renamed to ipa_print_all_params_modified
19473         (ipa_create_methodlist_node): Removed.
19474         (ipa_methodlist_method): Removed.
19475         (ipa_methodlist_method_set): Removed.
19476         (ipa_methodlist_next_method): Removed.
19477         (ipa_methodlist_next_method_set): Removed.
19478         (ipa_method_is_modified): Removed.
19479         (ipa_method_modify_create): Removed.
19480         (ipa_method_modify_init): Temporary variable info instead of a few
19481         dereferences.
19482         (ipa_detect_param_modifications): Temporary variable info instead of
19483         a few dereferences.
19484         (ipa_compute_jump_functions): Temporary variable info instead of
19485         a few dereferences.
19486         (ipa_method_modify_set): Removed.
19487         (ipa_method_tree_map): Renamed to ipa_get_param_decl_index
19488         (ipa_get_param_decl_index): Now accepts struct ipa_node_params rather
19489         than craph_node as the first parameter.
19490         (ipa_method_modify_stmt): Renamed to ipa_check_stmt_modifications
19491         (ipa_method_modify_init): Removed.
19492         (ipa_compute_jump_functions): Added a temp variable instead of
19493         repeatadly dereferencing the cgraph_edge.aux pointer
19494         (ipa_callsite_param_set_type): Removed.
19495         (ipa_compute_jump_functions): i renamed to index and moved to
19496         an inner block
19497         (ipa_callsite_param_set_info_type_formal): Removed.
19498         (ipa_callsite_param_set_info_type): Removed.
19499         (ipa_callsite_param_map_create): Removed.
19500         (ipa_callsite_tree): Removed.
19501         (ipa_callsite_caller): Removed.
19502         (ipa_pop_func_from_list): return_method removed to return_func
19503
19504         * ipa-prop.h (enum cvalue_type): Renamed to ipa_lattice_type,
19505         prefixed all values with IPA_. Changed all users.
19506         (enum jump_func_type): Rnamed UNKNOWN_IPATYPE to IPA_UNKNOWN,
19507         CONST_IPATYPE to IPA_CONST, CONST_IPATYPE_REF to IPA_CONST_REF
19508         and FORMAL_IPATYPE IPA_PASS_THROUGH.
19509         (union parameter_info): Renamed to jump_func_value.
19510         (union jump_func_value): Renamed value to constant
19511         (struct ipa_jump_func): Renamed info_type to value
19512         (struct ipa_node): Renamed to ipa_node_params
19513         (struct ipa_node_params): Renamed ipa_arg_num to param_count
19514         (struct ipa_node_params): Renamed ipa_param_tree to param_decls
19515         (struct ipa_node_params): Renamed ipa_mod to modified_flags
19516         (struct ipa_edge): Renamed to ipa_edge_args
19517         (struct ipa_edge_args): Renamed ipa_param_num to argument_count
19518         (struct ipa_edge_args): Renamed ipa_param_map to jump_functions
19519         (struct ipa_methodlist): Renamed to ipa_func_list
19520         (struct ipa_func_list): method_p renamed to node, next_method
19521         renamed to next
19522         (ipa_methodlist_p): Removed, switched all users to struct pointer
19523         (IS_VALID_TREE_MAP_INDEX): Renamed to IS_VALID_JUMP_FUNC_INDEX
19524
19525 2008-04-30  Alan Modra  <amodra@bigpond.net.au>
19526
19527         * config/rs6000/rs6000.c (ALWAYS_RESTORE_ALTIVEC_BEFORE_POP): Define.
19528         (rs6000_emit_epilogue): Use backchain to restore only when we
19529         have a large frame.  Make use of frame pointer to restore if we
19530         have one.  Handle ALWAYS_RESTORE_ALTIVEC_BEFORE_POP.
19531
19532 2008-04-29  Paolo Bonzini  <bonzini@gnu.org>
19533
19534         * config/avr/avr.md (*sbrx_branch, *sbix_branch, *sbix_branch_tmp):
19535         Add mode to zero_extract.
19536         (sign bit tests peepholes): (Ditto.).
19537
19538 2008-04-29  H.J. Lu  <hongjiu.lu@intel.com>
19539
19540         * config/i386/i386.c (ix86_builtins): Replace Prescott New
19541         Instructions in comments with SSE3.
19542         (ix86_builtin_type): This.  Add FLOAT128_FTYPE_FLOAT128,
19543         INT64_FTYPE_V4SF, INT64_FTYPE_V2DF, INT_FTYPE_V16QI,
19544         INT_FTYPE_V8QI, INT_FTYPE_V4SF, INT_FTYPE_V2DF,
19545         V16QI_FTYPE_V16QI, V8HI_FTYPE_V8HI, V8HI_FTYPE_V16QI,
19546         V8QI_FTYPE_V8QI, V4SI_FTYPE_V4SI, V4SI_FTYPE_V16QI,
19547         V4SI_FTYPE_V4SF, V4SI_FTYPE_V8HI, V4SI_FTYPE_V2DF,
19548         V4HI_FTYPE_V4HI, V4SF_FTYPE_V4SF, V4SF_FTYPE_V4SI,
19549         V4SF_FTYPE_V2DF, V2DI_FTYPE_V2DI, V2DI_FTYPE_V16QI,
19550         V2DI_FTYPE_V8HI, V2DI_FTYPE_V4SI, V2DF_FTYPE_V2DF,
19551         V2DF_FTYPE_V4SI, V2DF_FTYPE_V4SF, V2DF_FTYPE_V2SI,
19552         V2SI_FTYPE_V2SI, V2SI_FTYPE_V4SF, V2SI_FTYPE_V2SF,
19553         V2SI_FTYPE_V2DF, V2SF_FTYPE_V2SF and V2SF_FTYPE_V2SI.
19554         (bdesc_sse_args): Renamed to ...
19555         (bdesc_args): This.  Add IX86_BUILTIN_PF2ID, IX86_BUILTIN_PFRCP,
19556         IX86_BUILTIN_PFRSQRT, IX86_BUILTIN_PI2FD, IX86_BUILTIN_PF2IW,
19557         IX86_BUILTIN_PSWAPDSI, IX86_BUILTIN_PSWAPDSF and
19558         IX86_BUILTIN_FABSQ.
19559         (bdesc_1arg): Moved to ...
19560         (bdesc_args): Here.
19561         (ix86_init_mmx_sse_builtins): Updated.  Replace Prescott New
19562         Instructions in comments with SSE3.
19563         (ix86_expand_sse_operands_builtin): Renamed to ...
19564         (ix86_expand_args_builtin): This.  Updated.
19565         (ix86_expand_unop1_builtin): Update comments.
19566         (ix86_expand_builtin): Updated.
19567
19568 2008-04-29  Richard Guenther  <rguenther@suse.de>
19569
19570         PR tree-optimization/36078
19571         * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely):
19572         Update virtual SSA form after cleaning up the CFG.
19573
19574 2008-04-29  Richard Guenther  <rguenther@suse.de>
19575
19576         PR middle-end/15255
19577         * fold-const.c (fold_binary): Fold (A + A) * C to A * 2*C.
19578
19579 2008-04-29  Richard Guenther  <rguenther@suse.de>
19580
19581         * tree-ssa-alias.c (finalize_ref_all_pointers): Remove.
19582         (compute_may_aliases): Do not call finalize_ref_all_pointers.
19583         (compute_flow_insensitive_aliasing): Do not treat
19584         PTR_IS_REF_ALL pointers special.
19585         (get_smt_for): Likewise.
19586         (may_alias_p): Re-structure.
19587         (is_escape_site): A ref-all pointer conversion is not an escape site.
19588         * tree-ssa-structalias.c (find_what_p_points_to): Do not treat
19589         PTR_IS_REF_ALL pointers special.
19590         * tree-ssa-structalias.h (struct alias_info): Remove
19591         ref_all_symbol_mem_tag field.
19592         (PTR_IS_REF_ALL): Remove.
19593
19594 2008-04-29  Richard Guenther  <rguenther@suse.de>
19595
19596         PR middle-end/36077
19597         * fold-const.c (extract_muldiv_1): In combining division constants
19598         make sure to never overflow.
19599
19600 2008-04-29  Nick Clifton  <nickc@redhat.com>
19601
19602         * doc/tm.texi (RETURN_ADDR_RTX): Fix typo.
19603
19604 2008-04-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
19605
19606         PR bootstrap/35169
19607         * optc-gen.awk: Work around HP-UX/IA awk bug.
19608
19609 2008-04-28  Danny Smith  <dannysmith@users.sourceforge.net>
19610
19611         * config/i386/cygming-crtend.c (register_frame_ctor): Revert my
19612         2008-04-25 commit.
19613
19614 2008-04-28  Uros Bizjak  <ubizjak@gmail.com>
19615
19616         PR target/36073
19617         * config/i386/i386.md
19618         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit):
19619         Change operand 1 predicate to nonimmediate_operand.
19620
19621 2008-04-28  Jakub Jelinek  <jakub@redhat.com>
19622
19623         PR debug/36060
19624         * dwarf2out.c (struct die_struct): Mark as chain_circular through
19625         die_sub field.
19626         * gengtype.c (walk_type, write_func_for_structure): Handle
19627         chain_circular.
19628         * doc/gty.texi: Document chain_circular.
19629
19630 2008-04-28  Richard Guenther  <rguenther@suse.de>
19631
19632         PR tree-optimization/36066
19633         * tree-vrp.c (execute_vrp): Cleanup the CFG only after finalizing
19634         SCEV and loop.
19635
19636 2008-04-28  Uros Bizjak  <ubizjak@gmail.com>
19637
19638         PR target/36064
19639         * config/i386/i386.md
19640         (floatdi<X87MODEF:mode>2_i387_with_xmm splitters):
19641         Use match_scratch instead of match_operand for operands 3 and 4.
19642
19643 2008-04-27  Richard Guenther  <rguenther@suse.de>
19644
19645         PR tree-optimization/18754
19646         PR tree-optimization/34223
19647         * tree-pass.h (pass_complete_unrolli): Declare.
19648         * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Print
19649         loop size before and after unconditionally of UL_NO_GROWTH in effect.
19650         Rewrite loop into loop closed SSA form if it is not already.
19651         (tree_unroll_loops_completely): Re-structure to iterate over
19652         innermost loops with intermediate CFG cleanups.
19653         Unroll outermost loops only if requested or the code does not grow
19654         doing so.
19655         * tree-ssa-loop.c (gate_tree_vectorize): Don't shortcut if no
19656         loops are available.
19657         (tree_vectorize): Instead do so here.
19658         (tree_complete_unroll): Also unroll outermost loops.
19659         (tree_complete_unroll_inner): New function.
19660         (gate_tree_complete_unroll_inner): Likewise.
19661         (pass_complete_unrolli): New pass.
19662         * tree-ssa-loop-manip.c (find_uses_to_rename_use): Only record
19663         uses outside of the loop.
19664         (tree_duplicate_loop_to_header_edge): Only verify loop-closed SSA
19665         form if it is available.
19666         * tree-flow.h (tree_unroll_loops_completely): Add extra parameter.
19667         * passes.c (init_optimization_passes): Schedule complete inner
19668         loop unrolling pass before the first CCP pass after final inlining.
19669
19670 2008-04-27  Nathan Sidwell  <nathan@codesourcery.com>
19671
19672         * targhooks.h (default_emutls_var_fields,
19673         default_emutls_var_init): Declare.
19674         * tree.h (DECL_THREAD_LOCAL): Compare against TLS_MODEL_REAL.
19675         * target.h (struct gcc_target): Add struct emutls member.
19676         * target-def.h (TARGET_EMUTLS_GET_ADDRESS,
19677         TARGET_EMUTLS_REGISTER_COMMON, TARGET_EMUTLS_VAR_SECTION,
19678         TARGET_EMUTLS_TMPL_SECTION, TARGET_EMUTLS_VAR_PREFIX,
19679         TARGET_EMUTLS_TMPL_PREFIX, TARGET_EMUTLS_VAR_FIELDS,
19680         TARGET_EMUTLS_VAR_INIT, TARGET_EMUTLS_DEBUG_FORM_TLS_ADDRESS,
19681         TARGET_EMUTLS_VAR_ALIGN_FIXED, TARGET_EMUTLS): New.
19682         (TARGET_INITIALIZER): Add TARGET_EMUTLS.
19683         * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS,
19684         BUILT_IN_EMUTLS_REGISTER_COMMON): Get name from targetm structure.
19685         * dwarf2out.c (loc_descriptor_from_tree_1): Check if emutls can
19686         emit debug information.
19687         * coretypes.h (tls_model): Add TLS_MODEL_EMULATED, TLS_MODEL_REAL.
19688         * varasm.c: Include targhooks.h.
19689         (emutls_object_section, emutls_tmpl_section): New.
19690         (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): Remove.
19691         (EMUTLS_SEPARATOR): New.
19692         (prefix_name): New.
19693         (get_emutls_object_name): New.
19694         (default_emutls_var_fields): New, broken out of ...
19695         (get_emutls_object_type): ... here.  Adjust to use target hooks.
19696         (get_emutls_init_templ_addr): Adjust to use target hooks.
19697         (emutls_decl): Adjust to use target hooks.
19698         (emutls_finish): Likewise.
19699         (default_emutls_var_init): New, broken out of ...
19700         (assemble_variable): ... here.  Adjust to use target hooks.
19701         * output.h (enum section_category): Add SECCAT_EMUTLS_VAR,
19702         SECCAT_EMUTLS_TMPL.
19703         * c-common.c (handle_section_attribute): Prevent overriding
19704         sections for emulated tls with special sections.
19705         * config/i386/i386.c (x86_64_elf_select_section): Add
19706         SECCAT_EMUTLS_VAR and SECCAT_EMUTLS_TMPL.
19707         (x86_64_elf_unique_section): Likewise.
19708         * config/vxworks.c: Include tree.h.
19709         (vxworks_emutls_var_fields, vxworks_emutls_var_init): New.
19710         (vxworks_override_options): Set TLS scheme.
19711         * doc/tm.texi (Emulated TLS): New node.
19712
19713 2008-04-26  Simon Baldwin <simonb@google.com>
19714
19715         PR c/35652
19716         * builtins.c (c_strlen): Suppressed multiple warnings that can occur
19717         with propagated string constants.
19718
19719 2008-04-26  Uros Bizjak  <ubizjak@gmail.com>
19720
19721         * config/i386/i386.md (fix_trunc<mode>_i387_fisttp_with_temp): Use 'X'
19722         constraint for operand 2 when operand 0 is memory operand.
19723         (fix_truncdi_i387_with_temp): : Use 'X' constraint for operand 4 when
19724         operand 0 is memory operand.
19725         (fix_trunc<mode>_i387_with_temp): Ditto.
19726         (*floatsi<mode>2_vector_mixed_with_temp): Use 'X' constraint for
19727         operand 2 when operand 1 is memory operand.
19728         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_with_temp): Ditto.
19729         (*floatsi<mode>2_vector_sse_with_temp): Ditto.
19730         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_with_temp): Ditto.
19731         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp): Ditto.
19732         (floatdi<X87MODEF:mode>2_i387_with_xmm): Use 'X' constraint for
19733         operands 2,3 and 4 when operand 1 is memory operand.
19734         (fistdi2_with_temp): Use 'X' constraint for operand 2 when operand 0
19735         is memory operand.
19736         (fistdi2_floor_with_temp): Ditto.
19737         (fist<mode>2_floor_with_temp): Ditto.
19738         (fistdi2_ceil_with_temp): Ditto.
19739         (fist<mode>2_ceil_with_temp): Ditto.
19740         (*truncdfsf_fast_mixed): Merge alternatives 0 and 1.
19741
19742 2008-04-26  David Daney  <ddaney@avtrex.com>
19743
19744         * config/mips/mips.md (UNSPEC_COMPARE_AND_SWAP_12): New
19745         unspec_volitile.
19746         (UNSPEC_SYNC_OLD_OP, UNSPEC_SYNC_NEW_OP, UNSPEC_SYNC_EXCHANGE,
19747         UNSPEC_MEMORY_BARRIER, UNSPEC_SET_GOT_VERSION,
19748         UNSPEC_UPDATE_GOT_VERSION): Renumber.
19749         (sync_compare_and_swap<mode>): New expand for QI and HI modes.
19750         (compare_and_swap_12): New insn.
19751         * config/mips/mips-protos.h (mips_expand_compare_and_swap_12): Declare.
19752         * config/mips/mips.c (mips_force_binary): New function.
19753         (mips_emit_int_order_test, mips_expand_synci_loop): Use it.
19754         (mips_expand_compare_and_swap_12): New function.
19755         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP_12): New macro.
19756
19757 2008-04-25  Jan Hubicka  <jh@suse.cz>
19758
19759         PR testsuite/35843
19760         * cfgexpand.c (pass_expand): Turn into RTL pass.
19761         * passes.c (execute_one_pass): Do pass typechecking after execution.
19762         * tree-pass.h (pass_expand): Turn into RTL pass.
19763
19764         * function.h (struct rtl_data): Move here fields
19765         accesses_prior_frames, calls_eh_return, saves_all_registers,
19766         has_nonlocal_goto, has_asm_statement, is_thunk,
19767         all_throwers_are_sibcalls, limit_stack, profile, uses_const_pool,
19768         uses_pic_offset_table, uses_eh_lsda, tail_call_emit,
19769         arg_pointer_save_area_init from struct function; turn into bool.
19770         (struct function): Move
19771         calls_eh_return, saves_all_registers, has_nonlocal_goto,
19772         has_asm_statement, is_thunk, all_throwers_are_sibcalls, limit_stack,
19773         profile, uses_const_pool, uses_pic_offset_table, uses_eh_lsda,
19774         tail_call_emit, arg_pointer_save_area_init
19775         into struct rtl_data.  Remove recursive_call_emit and gimplified flags.
19776         (current_function_returns_struct, current_function_returns_pcc_struct,
19777         current_function_calls_setjmp, current_function_calls_alloca,
19778         current_function_accesses_prior_frames,
19779         current_function_calls_eh_return, current_function_is_thunk,
19780         current_function_stdarg, current_function_profile,
19781         current_function_limit_stack, current_function_uses_pic_offset_table,
19782         current_function_uses_const_pool, current_function_has_nonlocal_label,
19783         current_function_saves_all_registers,
19784         current_function_has_nonlocal_goto,
19785         current_function_has_asm_statement): Remove accesor macros.
19786         * ra-conflict.c (global_conflicts): Update.
19787         * tree-tailcall.c (suitable_for_tail_opt_p): Update.
19788         (suitable_for_tail_call_opt_p): Update.
19789         * builtins.c (expand_builtin_return_addr): Update.
19790         (expand_builtin_setjmp_setup): Update.
19791         (expand_builtin_nonlocal_goto): Update.
19792         * final.c (final_start_function): Update.
19793         (profile_function): Update.
19794         (leaf_function_p): Update.
19795         (only_leaf_regs_used): Update.
19796         * df-scan.c (df_get_exit_block_use_set): Update.
19797         * dojump.c (clear_pending_stack_adjust): Update.
19798         * tree-stdarg.c (gate_optimize_stdarg): Update.
19799         * gimple-low.c (lower_function_body): Update.
19800         * global.c (compute_regsets): Update.
19801         (global_alloc): Update.
19802         * dwarf2out.c (dwarf2out_begin_prologue): Update.
19803         * expr.c (expand_assignment): Update.
19804         * dse.c (dse_step0): Update.
19805         (dse_step1): Update.
19806         * c-decl.c (store_parm_decls): Update.
19807         * local-alloc.c (combine_regs): Update.
19808         (find_free_reg): Update.
19809         * function.c (assign_parms_augmented_arg_list): Update.
19810         (assign_parm_find_data_types): Update.
19811         (assign_parms): Update.
19812         (allocate_struct_function): Update.
19813         (expand_function_start): Update.
19814         (expand_function_end): Update.
19815         (get_arg_pointer_save_area): Update.
19816         (thread_prologue_and_epilogue_insns): Update.
19817         (rest_of_match_asm_constraints): Update.
19818         * stor-layout.c (variable_size): Update.
19819         * gcse.c (gcse_main): Update.
19820         (bypass_jumps): Update.
19821         * gimplify.c (gimplify_function_tree): Update.
19822         * calls.c (emit_call_1): Update.
19823         (expand_call): Update.
19824         * bt-load.c (compute_defs_uses_and_gen): Update.
19825         * except.c (sjlj_assign_call_site_values): Update.
19826         (sjlj_emit_function_enter): Update.
19827         (can_throw_external): Update.
19828         (set_nothrow_function_flags): Update.
19829         (expand_builtin_unwind_init): Update.
19830         (expand_eh_return): Update.
19831         (convert_to_eh_region_ranges): Update.
19832         (output_function_exception_table): Update.
19833         * emit-rtl.c (gen_tmp_stack_mem): Update.
19834         * cfgexpand.c (expand_used_vars): Update.
19835         (tree_expand_cfg): Update.
19836         * cfgcleanup.c (rest_of_handle_jump): Update.
19837         * explow.c (allocate_dynamic_stack_space): Update.
19838         * varasm.c (assemble_start_function): Update.
19839         (force_const_mem): Update.
19840         (mark_constant_pool): Update.
19841         * tree-optimize.c (tree_rest_of_compilation): Update.
19842         * stack-ptr-mod.c (notice_stack_pointer_modification): Update.
19843         * tree-cfg.c (notice_special_calls): Update.
19844         (is_ctrl_altering_stmt): Update.
19845         (tree_can_make_abnormal_goto): Update.
19846         (tree_purge_dead_abnormal_call_edges): Update.
19847         * config/alpha/predicates.md: Update.
19848         * config/alpha/alpha.c (alpha_sa_mask): Update.
19849         (alpha_sa_size): Update.
19850         (alpha_does_function_need_gp): Update.
19851         (alpha_expand_prologue): Update.
19852         (alpha_start_function): Update.
19853         (alpha_output_function_end_prologue): Update.
19854         (alpha_expand_epilogue): Update.
19855         * config/frv/frv.c (frv_stack_info): Update.
19856         (frv_expand_epilogue): Update.
19857         * config/s390/s390.c (s390_regs_ever_clobbered): Update.
19858         (s390_register_info): Update.
19859         (s390_frame_info): Update.
19860         (s390_init_frame_layout): Update.
19861         (s390_can_eliminate): Update.
19862         (save_gprs): Update.
19863         * config/spu/spu.c (spu_split_immediate): Update.
19864         (need_to_save_reg): Update.
19865         (spu_expand_prologue): Update.
19866         (spu_expand_epilogue): Update.
19867         * config/sparc/sparc.md: Update.
19868         * config/sparc/sparc.c (eligible_for_return_delay): Update.
19869         (sparc_tls_got): Update.
19870         (legitimize_pic_address): Update.
19871         (sparc_emit_call_insn): Update.
19872         (sparc_expand_prologue): Update.
19873         (output_return): Update.
19874         (print_operand): Update.
19875         (sparc_function_ok_for_sibcall): Update.
19876         * config/sparc/sparc.h (EXIT_IGNORE_STACK): Update.
19877         * config/m32r/m32r.md: Update.
19878         * config/m32r/m32r.c (MUST_SAVE_RETURN_ADDR): Update.
19879         (m32r_compute_frame_size): Update.
19880         (m32r_expand_prologue): Update.
19881         (m32r_expand_epilogue): Update.
19882         (m32r_legitimize_pic_address): Update.
19883         * config/m32r/m32r.h (FRAME_POINTER_REQUIRED): Update.
19884         * config/i386/linux.h (SUBTARGET_FRAME_POINTER_REQUIRED): Update.
19885         * config/i386/i386.c (ix86_frame_pointer_required): Update.
19886         (gen_push): Update.
19887         (ix86_save_reg): Update.
19888         (ix86_compute_frame_layout): Update.
19889         (ix86_expand_prologue): Update.
19890         (ix86_expand_epilogue): Update.
19891         * config/sh/sh.c (output_stack_adjust): Update.
19892         (calc_live_regs): Update.
19893         (sh5_schedule_saves): Update.
19894         (sh_expand_prologue): Update.
19895         (sh_expand_epilogue): Update.
19896         (sh_setup_incoming_varargs): Update.
19897         (sh_allocate_initial_value): Update.
19898         (sh_get_pr_initial_val): Update.
19899         * config/sh/sh.h (SHMEDIA_REGS_STACK_ADJUST): Update.
19900         * config/sh/sh.md (label:): Update.
19901         * config/avr/avr.c (out_movhi_mr_r): Update.
19902         * config/crx/crx.h (enum): Update.
19903         * config/xtensa/xtensa.h (along): Update.
19904         * config/stormy16/stormy16.c Update.
19905         (xstormy16_compute_stack_layout): Update.
19906         * config/fr30/fr30.c (MUST_SAVE_RETURN_POINTER): Update.
19907         (fr30_expand_prologue): Update.
19908         * config/cris/cris.c (cris_conditional_register_usage): Update.
19909         (cris_reg_saved_in_regsave_area): Update.
19910         (cris_initial_frame_pointer_offset): Update.
19911         (cris_simple_epilogue): Update.
19912         (cris_expand_prologue): Update.
19913         (cris_expand_epilogue): Update.
19914         (cris_expand_pic_call_address): Update.
19915         (cris_asm_output_symbol_ref): Update.
19916         (cris_asm_output_label_ref): Update.
19917         * config/cris/cris.md Update.
19918         * config/iq2000/iq2000.c (compute_frame_size): Update.
19919         (iq2000_expand_epilogue): Update.
19920         * config/mt/mt.h (save_direction): Update.
19921         * config/mn10300/mn10300.c (mn10300_function_value): Update.
19922         * config/ia64/ia64.c (ia64_compute_frame_size): Update.
19923         (ia64_secondary_reload_class): Update.
19924         * config/m68k/m68k.c (m68k_save_reg): Update.
19925         (m68k_expand_prologue): Update.
19926         (m68k_expand_epilogue): Update.
19927         (legitimize_pic_address): Update.
19928         * config/rs6000/rs6000.c (rs6000_got_register): Update.
19929         (first_reg_to_save): Update.
19930         (first_altivec_reg_to_save): Update.
19931         (compute_vrsave_mask): Update.
19932         (compute_save_world_info): Update.
19933         (rs6000_stack_info): Update.
19934         (spe_func_has_64bit_regs_p): Update.
19935         (rs6000_ra_ever_killed): Update.
19936         (rs6000_emit_eh_reg_restore): Update.
19937         (rs6000_emit_allocate_stack): Update.
19938         (rs6000_emit_prologue): Update.
19939         (rs6000_emit_epilogue): Update.
19940         (rs6000_output_function_epilogue): Update.
19941         (output_profile_hook): Update.
19942         (rs6000_elf_declare_function_name): Update.
19943         * config/rs6000/rs6000.h (rs6000_args): Update.
19944         * config/rs6000/rs6000.md: Update.
19945         * config/mcore/mcore.c (mcore_expand_prolog): Update.
19946         * config/arc/arc.c (arc_output_function_epilogue): Update.
19947         * config/arc/arc.h (FRAME_POINTER_REQUIRED): Update.
19948         * config/darwin.c (machopic_function_base_name): Update.
19949         * config/score/score3.c (score3_compute_frame_size): Update.
19950         (rpush): Update.
19951         (rpop): Update.
19952         (score3_epilogue): Update.
19953         * config/score/score7.c (score7_compute_frame_size): Update.
19954         (score7_prologue): Update.
19955         (score7_epilogue): Update.
19956         * config/score/score.h (FRAME_POINTER_REQUIRED): Update.
19957         * config/arm/linux-elf.h (SUBTARGET_FRAME_POINTER_REQUIRED): Update.
19958         * config/arm/arm.c (use_return_insn): Update.
19959         (require_pic_register): Update.
19960         (arm_load_pic_register): Update.
19961         (arm_compute_save_reg0_reg12_mask): Update.
19962         (arm_compute_save_reg_mask): Update.
19963         (thumb1_compute_save_reg_mask): Update.
19964         (output_return_instruction): Update.
19965         (arm_output_function_prologue): Update.
19966         (arm_output_epilogue): Update.
19967         (arm_get_frame_offsets): Update.
19968         (arm_expand_prologue): Update.
19969         (thumb_pushpop): Update.
19970         (thumb_exit): Update.
19971         (thumb1_expand_prologue): Update.
19972         (thumb1_expand_epilogue): Update.
19973         (arm_unwind_emit): Update.
19974         (arm_output_fn_unwind): Update.
19975         * config/arm/arm.h (FRAME_POINTER_REQUIRED): Update.
19976         * config/arm/arm.md: Update.
19977         * config/pa/pa.md: Update.
19978         * config/pa/pa.c (legitimize_pic_address): Update.
19979         (compute_frame_size): Update.
19980         (hppa_expand_prologue): Update.
19981         (hppa_expand_epilogue): Update.
19982         (borx_reg_operand): Update.
19983         * config/pa/pa.h (FRAME_POINTER_REQUIRED): Update.
19984         (HARD_REGNO_RENAME_OK): Update.
19985         * config/mips/mips.c (mips_global_pointer): Update.
19986         (mips_save_reg_p): Update.
19987         (mips_compute_frame_info): Update.
19988         (mips_frame_pointer_required): Update.
19989         (mips_expand_prologue): Update.
19990         (mips_expand_epilogue): Update.
19991         (mips_can_use_return_insn): Update.
19992         (mips_reorg_process_insns): Update.
19993         * config/v850/v850.c (compute_register_save_size): Update.
19994         * config/mmix/mmix.h (FRAME_POINTER_REQUIRED): Update.
19995         * config/mmix/mmix.c (along): Update.
19996         (mmix_expand_epilogue): Update.
19997         * config/bfin/bfin.c (legitimize_pic_address): Update.
19998         (must_save_p): Update.
19999         (stack_frame_needed_p): Update.
20000         (add_to_reg): Update.
20001         (bfin_expand_prologue): Update.
20002         * stmt.c (expand_asm_operands): Update.
20003         * reload1.c (reload): Update.
20004         (init_elim_table): Update.
20005
20006 2008-04-25  Bob Wilson  <bob.wilson@acm.org>
20007
20008         * optabs.c (expand_float): Fix REG_EQUAL for UNSIGNED_FLOAT libcall.
20009
20010 2008-04-25  H.J. Lu  <hongjiu.lu@intel.com>
20011
20012         * config/i386/sse.md (mov<mode>): Replace SSEMODEI with SSEMODE.
20013         (*mov<mode>_internal): Likewise.  Support V4SF and V2DF.
20014         (mov<mode>): Removed.
20015         (*movv4sf_internal): Likewise.
20016         (*movv2df_internal): Likewise.
20017
20018 2008-04-25  Pompapathi V Gadad <Pompapathi.V.Gadad@nsc.com>
20019
20020         * config.gcc (crx-*-elf): Remove deprecation.
20021
20022 2008-04-25  Danny Smith  <dannysmith@users.sourceforge.net>
20023
20024         * config/i386/cygming-crtend.c (register_frame_ctor): Register
20025         __gcc_deregister_frame with atexit.
20026         (deregister_frame_dtor): Remove.
20027
20028 2008-04-24  Nathan Froyd  <froydnj@codesourcery.com>
20029             Nathan Sidwell  <nathan@codesourcery.com>
20030
20031         * config/rs6000/rs6000.opt (mspe): Remove Var property.
20032         (misel): Likewise.
20033         * config/rs6000/rs6000.h (rs6000_spe): Declare.
20034         (rs6000_isel): Likewise.
20035         * config/rs6000/rs6000.c (rs6000_spe): New variable.
20036         (rs6000_isel): New variable.
20037         (rs6000_handle_option): Handle OPT_mspe and OPT_misel.
20038
20039 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
20040
20041         PR c++/35758
20042         * c-common.c (handle_vector_size_attribute): Call
20043         lang_hooks.types.reconstruct_complex_type instead of
20044         reconstruct_complex_type.
20045         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Likewise.
20046         * config/spu/spu.c (spu_handle_vector_attribute): Likewise.
20047         * langhooks.h (struct lang_hooks_for_types): Add
20048         reconstruct_complex_type hook.
20049         * langhooks-def.h (LANG_HOOKS_RECONSTRUCT_COMPLEX_TYPE): Define.
20050         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add it.
20051
20052 2008-04-24  Richard Guenther  <rguenther@suse.de>
20053
20054         * c-common.h (check_builtin_function_arguments): Declare.
20055         * c-common.c (validate_nargs): New function.
20056         (check_builtin_function_arguments): Likewise.
20057         * c-typeck.c (build_function_call): Call
20058         check_builtin_function_arguments.
20059         * builtins.c (fold_builtin_classify): Remove error reporting code.
20060         (fold_builtin_unordered_cmp): Likewise.
20061         (fold_builtin_1): Likewise.
20062         (fold_builtin_n): Likewise.
20063
20064 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
20065
20066         PR tree-optimization/36008
20067         * fold-const.c (try_move_mult_to_index): If s == NULL, divide
20068         the original op1, rather than delta by step.
20069
20070 2008-04-22  Antoniu Pop  <antoniu.pop@gmail.com>
20071             Sebastian Pop  <sebastian.pop@amd.com>
20072
20073         * tree-parloops.c (take_address_of, eliminate_local_variables_1,
20074         eliminate_local_variables_stmt, eliminate_local_variables,
20075         separate_decls_in_loop_name, separate_decls_in_loop_stmt,
20076         separate_decls_in_loop, gen_parallel_loop): Make them work on a region
20077         of code delimited by two edges in the CFG.
20078         (separate_decls_in_loop_name): Renamed separate_decls_in_region_name.
20079         (separate_decls_in_loop_stmt): Renamed separate_decls_in_region_stmt.
20080         (separate_decls_in_loop): Renamed separate_decls_in_region.  Isolate
20081         the case of parallelisation of reductions.
20082         (expr_invariant_in_region_p): New.
20083
20084         * tree-flow.h (gather_blocks_in_sese_region): Declared.
20085         * tree-cfg.c (gather_blocks_in_sese_region): Extern.
20086
20087 2008-04-24  Ira Rosen  <irar@il.ibm.com>
20088             Richard Guenther  <rguenther@suse.de>
20089
20090         PR tree-optimization/36034
20091         * tree-vect-analyze.c (vect_analyze_group_access): SLP is
20092         incapable of dealing with loads with gaps.
20093
20094 2008-04-24  Rafael Espíndola  <espindola@google.com>
20095
20096         * tree-flow.h (vrp_evaluate_conditional): Change signature.
20097         * tree-ssa-propagate.c (fold_predicate_in): Update call to
20098         vrp_evaluate_conditional.
20099         * tree-vrp.c (vrp_evaluate_conditional_warnv): Remove.
20100         (vrp_evaluate_conditional): Split the cond argument.
20101         (vrp_visit_cond_stmt): Use vrp_evaluate_conditional_warnv_with_ops.
20102         (simplify_stmt_for_jump_threading): Update call to
20103         vrp_evaluate_conditional.
20104
20105 2008-04-24  Ira Rosen  <irar@il.ibm.com>
20106
20107         PR tree-optimization/35982
20108         * tree-vect-analyze.c (vect_check_interleaving): Check that the
20109         interleaved data-refs are of the same type.
20110
20111 2008-04-24  Danny Smith  <dannysmith@users.net>
20112
20113         * c-format.c (check_format_info_main): Use strncmp rather than a
20114         magic prefix to handle multichar length specs.
20115         * config/i386/msformat-c.c (format_length_info ms_printf_length_specs):
20116         Don't prefix "I64" and "I32" with '\0'.
20117
20118 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
20119
20120         PR target/36015
20121         * config/i386/i386.c (init_cumulative_args): Don't pass anything
20122         in registers for -m32 only if stdarg_p (fntype).
20123
20124 2008-04-24  Uros Bizjak  <ubizjak@gmail.com>
20125
20126         PR rtl-optimization/36006
20127         * expmed.c (store_fixed_bit_field): Copy op0 rtx before moving
20128         temp to op0 in order to avoid invalid rtx sharing.
20129
20130 2008-04-23  Paolo Bonzini  <bonzini@gnu.org>
20131
20132         * tree-cfg.c (verify_expr): Check with is_gimple_address.  Don't
20133         check TREE_INVARIANT.
20134         * tree-gimple.c (is_gimple_address): New.
20135         (is_gimple_invariant_address): Simplify using decl_address_invariant_p.
20136         * tree-gimple.h (is_gimple_address): New.
20137         * tree.h (decl_address_invariant_p): New.
20138         * tree.c (make_node_stat): Don't set TREE_INVARIANT.
20139         (build_string): Likewise.
20140         (decl_address_invariant_p): New, from is_gimple_invariant_address.
20141         (tree_invariant_p_1): Likewise.
20142         (save_expr): Use it.
20143         (tree_invariant_p): New.
20144         (skip_simple_arithmetic): Use it.
20145         (stabilize_reference_1): Use it.
20146         (recompute_tree_invariant_for_addr_expr): Don't update TREE_INVARIANT,
20147         simplify.
20148         (build1_stat): Drop code to compute TREE_INVARIANT.
20149         (build2_stat): Drop code to compute TREE_INVARIANT.
20150         (build3_stat): Drop code to compute TREE_INVARIANT.
20151         (build4_stat): Drop code to compute TREE_INVARIANT.
20152         (build5_stat): Drop code to compute TREE_INVARIANT.
20153         (build7_stat): Drop code to compute TREE_INVARIANT.
20154         (merge_dllimport_decl_attributes): Don't mention TREE_INVARIANT.
20155         * tree.h (struct tree_base): Remove invariant_flag.
20156         (TREE_INVARIANT): Remove.
20157         * builtins.c (build_string_literal): Don't set TREE_INVARIANT.
20158         (fold_builtin_expect): Check TREE_CONSTANT.
20159         * tree-ssa-ccp.c (fold_stmt_r): Adjust comment.
20160         * c-tree.h (c_expr_to_decl): Drop third parameter.
20161         * c-typeck.c (build_external_ref): Don't set TREE_INVARIANT.
20162         (build_c_cast): Don't set TREE_INVARIANT.
20163         (pop_init_level): Don't set TREE_INVARIANT.
20164         (c_objc_common_truthvalue_conversion): Don't set TREE_INVARIANT.
20165         * gimplify.c (gimplify_init_ctor_preeval): Add assertion, test
20166         TREE_CONSTANT.
20167         (gimplify_init_constructor): Don't set TREE_INVARIANT.
20168         (gimplify_addr_expr): Adjust comment.
20169         * tree-mudflap.c (mf_build_string):
20170         * print-tree.c (print_node): Don't print TREE_INVARIANT.
20171         * tree-nested.c (convert_nonlocal_reference): Adjust comment.
20172         * c-common.c (fix_string_type): Don't set TREE_INVARIANT.
20173         * langhooks-def.h (lhd_expr_to_decl): Drop third parameter.
20174         * langhooks.c (lhd_expr_to_decl): Drop third parameter.
20175         * langhooks.h (struct lang_hooks): Drop third parameter from
20176         expr_to_decl.
20177
20178 2008-04-23  Richard Guenther  <rguenther@suse.de>
20179
20180         PR tree-optimization/27799
20181         PR tree-optimization/32921
20182         PR tree-optimization/32624
20183         * tree-ssa-structalias.c (merge_smts_into): Only merge the
20184         SMTs aliases and the tag itself into the solution.
20185         * tree-ssa-alias.c (compute_flow_sensitive_aliasing): Do not
20186         merge the points-to solution back into the SMT aliases.
20187         (may_alias_p): Use alias_set_subset_of instead of
20188         aliases_conflict_p.  A pointer which points to
20189         memory with alias set zero may access any variable.
20190
20191 2008-04-23  Richard Guenther  <rguenther@suse.de>
20192
20193         * alias.c (alias_set_subset_of): Correctly handle asking
20194         if zero is a subset of an alias set with zero child.
20195         * tree-ssa-alias.c (have_common_aliases_p): Simplify logic.
20196         (compute_flow_insensitive_aliasing): Correctly walk all
20197         pointers.  Do not unnecessarily union sets.
20198
20199 2008-04-23  Richard Guenther  <rguenther@suse.de>
20200
20201         PR middle-end/36021
20202         * c-common.c (handle_alloc_size_attribute): Use type_num_arguments.
20203
20204 2008-04-22  Tomas Bily  <tbily@suse.cz>
20205
20206         * tree-cfg.c (verify_expr): Check for NON_LVALUE_EXPR as
20207         unreachable case.
20208         * tree-vrp.c (extract_range_from_unary_expr): Removed unused
20209         NON_LVALUE_EXPR.
20210         * tree-ssa-threadedge.c (simplify_control_stmt_condition): Likewise.
20211         * tree-ssa-structalias.c (get_constraint_for): Likewise.
20212         * tree-inline.c (estimate_num_insns_1): Likewise.
20213         * varasm.c (const_hash_1, compare_constant, copy_constant)
20214         (compute_reloc_for_constant, output_addressed_constants): Likewise.
20215         * emit-rtl.c (component_ref_for_mem_expr)
20216         (set_mem_attributes_minus_bitpos): Likewise.
20217         * expr.c (highest_pow2_factor, expand_expr_real_1, )
20218         (is_aligning_offset): Likewise.
20219         * dwarf2out.c (loc_descriptor_from_tree_1, add_bound_info): Likewise.
20220         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Likewise.
20221         * dojump.c (do_jump): Likewise.
20222         * builtins.c (get_pointer_alignment, get_memory_rtx)
20223         (integer_valued_real_p, fold_builtin_next_arg): Likewise.
20224         * tree-scalar-evolution.c (instantiate_parameters_1): Likewise.
20225
20226 2008-04-23  Jakub Jelinek  <jakub@redhat.com>
20227
20228         PR rtl-optimization/36017
20229         * builtins.c (expand_errno_check): Clear CALL_EXPR_TAILCALL before
20230         expanding the library call.
20231
20232 2008-04-22  Ian Lance Taylor  <iant@google.com>
20233
20234         * fold-const.c (pointer_may_wrap_p): Call int_size_in_bytes rather
20235         than size_in_bytes.
20236
20237 2008-04-22  Pat Haugen  <pthaugen@us.ibm.com>
20238
20239         * config/rs6000/rs6000.c (rs6000_register_move_cost): Increase cost
20240         of LR/CTR moves for Power6.
20241
20242 2008-04-22  Kenneth Zadeck  <zadeck@naturalbridge.com>
20243
20244         PR middle-end/36003
20245         * passes.c (init_optimization_passes): Remove
20246         pass_fast_rtl_byte_dce.
20247
20248 2008-04-22  Uros Bizjak  <ubizjak@gmail.com>
20249
20250         PR target/29096
20251         * config/i386/xmmintrin.h (_mm_cvtpi16_ps): Rearrange calls to
20252         builtin functions to generate faster code.
20253         (_mm_cvtpu16_ps): Ditto.
20254         (_mm_cvtpi32x2_ps): Ditto.
20255
20256 2008-04-22  Nick Clifton  <nickc@redhat.com>
20257
20258         * common.opt (ftree-loop-distribution): Add Optimization
20259         attribute.
20260
20261         * config/frv/frv.c (frv_stack_info): Use crtl instead of cfun.
20262         (frv_expand_builtin_va_start): Likewise.
20263
20264         * config/arm/arm.c (thumb_find_work_register): Fix location of
20265         argument register count.
20266
20267 2008-04-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
20268
20269         Support scheduling for ColdFire V1 and V3 microarchitecture.
20270         Improve scheduling of multiplication instructions.
20271
20272         * config/m68k/m68k.md (cpu): Add cfv1 and cfv3.  Rename cf_v2 to cfv1.
20273         (mac): New instruction attribute.
20274         * config/m68k/m68k.c (override_options): Handle cfv1, cfv3 and mac.
20275         (m68k_sched_mac): New variable.
20276         (m68k_sched_attr_type2, m68k_sched_md_init_global): Update.
20277         Handle cfv1 and cfv3.
20278         (max_insn_size): New static variable.
20279         (struct _sched_ib): New type.
20280         (sched_ib): New static variable.
20281         (sched_ib_size, sched_ib_filled, sched_ib_insn): Convert variables
20282         to fields of 'struct _sched_ib sched_ib'.  Update all uses.
20283         (m68k_sched_variable_issue): Add modeling of cfv3 instruction buffer.
20284         Update.
20285         (m68k_sched_md_init_global, m68k_sched_md_finish_global,
20286         m68k_sched_md_init, m68k_sched_md_finish): Handle cfv1 and cfv3.  Init
20287         new variables.  Update.
20288         (m68k_sched_dfa_pre_advance_cycle, m68k_sched_dfa_post_advance_cycle):
20289         Add modeling of cfv3 instruction buffer.  Update.
20290         * config/m68k/m68k-protos.h (m68k_sched_mac): Declare.
20291         * config/m68k/m68k.h (TUNE_CFV3): New macro.
20292         * config/m68k/cf.md: Change substrings 'cf_v2' to 'cfv12' or 'cfv123'.
20293         (cf_* reservations): Rename to cfv12 or cfv123 to indicate cores
20294         a particular reservation applies to.
20295         (type2): Reorganize attribute values.  Rename alu to alu_reg,
20296         alu_l to alu, move_l to omove.  Join move to alu.  Split mul
20297         to mul_l and mul_w.
20298         (cf_ib_*): Simplify description of instruction buffer.
20299         (cf_ib_w0, cf_ib_w4, cf_ib_w5, cf_ib_w6): Remove.
20300         (cf_mem): Split into cf_mem1 and cf_mem2.
20301         (cf_v2_move_??): Rename to cfv12_alu_??.
20302         (cf_v2_move_l_??): Rename to cfv12_omove_??.
20303         (cf_v2_mul_??): Remove reservations.
20304         (cfv12_mul_l_??, cfv12_mul_w_??, cfv12_mac_w_??, cfv12_mac_l_??,
20305         cfv12_emac_??, cfv12_emac_w_i0): New reservations.
20306         (cfv12_rts, cfv12_call, cfv12_bcc, cfv12_bra, cfv12_jmp): Move to
20307         appropriate place.
20308         (cfv3_alu_10, cfv3_omove_10, cfv3_alu_i0, cfv3_omove_i0, cfv3_alu_01,
20309         cfv3_alu_0i, cfv3_alu_11, cfv3_omove_11, cfv3_alu_i1, cfv3_omove_i1,
20310         cfv3_alu_1i, cfv3_omove_1i, cfv3_pea_11, cfv3_pea_i1, cfv3_mul_w_10,
20311         cfv3_mul_l_10, cfv3_mul_w_i0, cfv3_mac_w_10, cfv3_mac_l_10,
20312         cfv3_mac_w_i0, cfv3_emac_10, cfv3_emac_w_i0, cfv3_rts, cfv3_call,
20313         cfv3_bcc, cfv3_bra, cfv3_jmp): New reservations.
20314         (cfv3_*_1, cfv3_*_2, cfv3_*_3): New instruction reservations that are
20315         expansions of the above reservations for instructions of sizes
20316         1, 2 and 3 words.
20317
20318 2008-04-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
20319
20320         * rtl-factoring.c (collect_patterns_seqs): Handle CC0 targets.
20321
20322 2008-04-21  Adam Nemet  <anemet@caviumnetworks.com>
20323
20324         * coverage.c: Include tree-pass.h.
20325         (coverage_counter_alloc): Print da_file_name to the dump file.
20326
20327 2008-04-21  Kenneth Zadeck  <zadeck@naturalbridge.com>
20328
20329         * sbitmap.c (sbitmap_range_empty_p): New function.
20330         * sbitmap.h (sbitmap_range_empty_p): New function.
20331         * bitmap.h: Now includes obstack.h.
20332
20333 2008-04-21  Richard Sandiford  <rsandifo@nildram.co.uk>
20334             Kenneth Zadeck  <zadeck@naturalbridge.com>
20335
20336         * dbgcnt.def (ra_byte_scan): Added.
20337         * dbgcnt.c (dbg_cnt): Added code to print message to dump_file
20338         when the last hit happens for a counter.
20339         * timevar.def (TV_DF_BYTE_LR): New variable.
20340         * tree-pass.h (pass_fast_rtl_byte_dce): New pass.
20341         * passes.c (pass_fast_rtl_byte_dce): New pass.
20342         * fwprop.c (update_df): Added mode to call df_ref_create.
20343         Renamed DF_REF_WIDTH and DF_REF_OFFSET to DF_REF_EXTRACT_WIDTH and
20344         DF_REF_EXTRACT_OFFSET.
20345         * df.h (DF_BYTE_LR, DF_BYTE_LR_BB_INFO, DF_BYTE_LR_IN,
20346         DF_BYTE_LR_OUT, df_byte_lr): New macro.
20347         (df_mm): New enum.
20348         (df_ref_extract): Added mode field.
20349         (DF_REF_WIDTH, DF_REF_OFFSET) Renamed to DF_REF_EXTRACT_WIDTH and
20350         DF_REF_EXTRACT_OFFSET.
20351         (DF_REF_EXTRACT_MODE): New macro.
20352         (df_byte_lr_bb_info): New structure.
20353         (df_print_byte_regset, df_compute_accessed_bytes,
20354         df_byte_lr_add_problem, df_byte_lr_get_regno_start,
20355         df_byte_lr_get_regno_len, df_byte_lr_simulate_defs,
20356         df_byte_lr_simulate_uses,
20357         df_byte_lr_simulate_artificial_refs_at_top,
20358         df_byte_lr_simulate_artificial_refs_at_end,
20359         df_compute_accessed_bytes): New function.
20360         (df_ref_create): Add parameter.
20361         (df_byte_lr_get_bb_info): New inline function.
20362         * df-scan.c (df_ref_record, df_uses_record,
20363         df_ref_create_structure): Added mode parameter.
20364         (df_ref_create, df_notes_rescan, df_ref_record, df_def_record_1,
20365         df_defs_record, df_uses_record, df_get_conditional_uses,
20366         df_get_call_refs, df_insn_refs_collect, df_bb_refs_collect,
20367         df_entry_block_defs_collect, df_exit_block_uses_collect):
20368         Added mode parameter to calls to df_ref_record, df_uses_record,
20369         df_ref_create_structure.
20370         (df_ref_equal_p, df_ref_compare): Added test for modes.
20371         (df_ref_create_structure): Added code to set mode.  Renamed
20372         DF_REF_WIDTH and DF_REF_OFFSET to DF_REF_EXTRACT_WIDTH and
20373         DF_REF_EXTRACT_OFFSET.
20374         * df-core.c (df_print_byte_regset): New function.
20375         * df-byte-scan.c: New file.
20376         * df-problems.c (df_rd_transfer_function): Removed unnecessary
20377         calls to BITMAP_FREE.
20378         (df_byte_lr_problem_data, df_problem problem_BYTE_LR): New structure.
20379         (df_byte_lr_get_regno_start, df_byte_lr_get_regno_len,
20380         df_byte_lr_set_bb_info, df_byte_lr_free_bb_info,
20381         df_byte_lr_check_regs, df_byte_lr_expand_bitmap,
20382         df_byte_lr_alloc, df_byte_lr_reset, df_byte_lr_bb_local_compute,
20383         df_byte_lr_local_compute, df_byte_lr_init,
20384         df_byte_lr_confluence_0, df_byte_lr_confluence_n,
20385         df_byte_lr_transfer_function, df_byte_lr_free,
20386         df_byte_lr_top_dump, df_byte_lr_bottom_dump,
20387         df_byte_lr_add_problem, df_byte_lr_simulate_defs,
20388         df_byte_lr_simulate_uses,
20389         df_byte_lr_simulate_artificial_refs_at_top,
20390         df_byte_lr_simulate_artificial_refs_at_end): New function.
20391         * dce.c (byte_dce_process_block): New function.
20392         (dce_process_block): au is now passed in rather than computed
20393         locally.  Changed loops that look at artificial defs to not look
20394         for conditional or partial ones, because there never are any.
20395         (fast_dce): Now is able to drive byte_dce_process_block or
20396         dce_process_block depending on the kind of dce being done.
20397         (rest_of_handle_fast_dce): Add parameter to fast_dce.
20398         (rest_of_handle_fast_byte_dce): New function.
20399         (rtl_opt_pass pass_fast_rtl_byte_dce): New pass.
20400         * Makefile.in (df-byte-scan.o, debugcnt.o): Added dependencies.
20401
20402 2008-04-21  Daniel Franke  <franke.daniel@gmail.com>
20403
20404         PR fortran/35019
20405         * gcc.h: Added fortran options that take arguments to
20406         DEFAULT_SWITCH_TAKES_ARG and DEFAULT_WORD_SWITCH_TAKES_ARG
20407         macros.
20408
20409 2008-04-20  Eric Botcazou  <ebotcazou@adacore.com>
20410
20411         * tree-sra.c (sra_walk_expr) <VIEW_CONVERT_EXPR>: Disable
20412         scalarization if on the LHS and not a full access.
20413
20414 2008-04-20  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
20415
20416         * Makefile.in (s-gtyp-input): Remove tmp-gi.list before writing it.
20417
20418 2008-04-18  Rafael Espíndola  <espindola@google.com>
20419
20420         * tree-vrp.c (find_case_label_index): Fix the binary search.
20421         (find_case_label_range): New.
20422         (vrp_visit_switch_stmt): Use find_case_label_range.
20423         (simplify_switch_using_ranges): Use find_case_label_range.
20424
20425 2008-04-18  Eric Botcazou  <ebotcazou@adacore.com>
20426
20427         * gimplify.c (gimplify_modify_expr_rhs) <COND_EXPR>: Gimplify the LHS
20428         using the is_gimple_lvalue predicate instead of is_gimple_min_lval.
20429
20430 2008-04-18  Tom Tromey  <tromey@redhat.com>
20431
20432         PR libcpp/15500:
20433         * doc/cpp.texi (Implementation-defined behavior): Mention
20434         -finput-charset.
20435
20436 2008-04-18  Ian Lance Taylor  <iant@google.com>
20437
20438         * fold-const.c (pointer_may_wrap_p): New static function.
20439         (fold_comparison): Add another test for pointer overflow.  Use
20440         pointer_may_wrap_p to disable some false positives.
20441
20442 2008-04-18  Kris Van Hees <kris.van.hees@oracle.com>
20443
20444         * c-common.c (CHAR16_TYPE, CHAR32_TYPE): New macros.
20445         (fname_as_string): Match updated cpp_interpret_string prototype.
20446         (fix_string_type): Support char16_t* and char32_t*.
20447         (c_common_nodes_and_builtins): Add char16_t and char32_t (and
20448         derivative) nodes.  Register as builtin if C++0x.
20449         (c_parse_error): Support CPP_CHAR{16,32}.
20450         * c-common.h (RID_CHAR16, RID_CHAR32): New elements.
20451         (enum c_tree_index) <CTI_CHAR16_TYPE, CTI_SIGNED_CHAR16_TYPE,
20452         CTI_UNSIGNED_CHAR16_TYPE, CTI_CHAR32_TYPE, CTI_SIGNED_CHAR32_TYPE,
20453         CTI_UNSIGNED_CHAR32_TYPE, CTI_CHAR16_ARRAY_TYPE,
20454         CTI_CHAR32_ARRAY_TYPE>: New elements.
20455         (char16_type_node, signed_char16_type_node, unsigned_char16_type_node,
20456         char32_type_node, signed_char32_type_node, char16_array_type_node,
20457         char32_array_type_node): New defines.
20458         * c-lex.c (cb_ident): Match updated cpp_interpret_string prototype.
20459         (c_lex_with_flags): Support CPP_CHAR{16,32} and CPP_STRING{16,32}.
20460         (lex_string): Support CPP_STRING{16,32}, match updated
20461         cpp_interpret_string and cpp_interpret_string_notranslate prototypes.
20462         (lex_charconst): Support CPP_CHAR{16,32}.
20463         * c-parser.c (c_parser_postfix_expression): Support CPP_CHAR{16,32}
20464         and CPP_STRING{16,32}.
20465
20466 2008-04-18  Paolo Bonzini  <bonzini@gnu.org>
20467
20468         PR bootstrap/35457
20469         * aclocal.m4: Regenerate.
20470         * configure: Regenerate.
20471
20472 2008-04-18  Jan Hubicka  <jh@suse.cz>
20473
20474         * except.c (dw2_size_of_call_site_table,
20475         sjlj_size_of_call_site_table): Use vector API for call_site_record.
20476
20477         * cgraphbuild.c (build_cgraph_edges): Update.
20478         * tree-pass.h: Update comment.
20479         * final.c (leaf_function_p): Update.
20480         (leaf_renumber_regs): Update.
20481         (rest_of_clean_state): Update.
20482         * omp-low.c (expand_omp_parallel): Update.
20483         * ipa-reference.c (analyze_function): Update.
20484         * reorg.c (find_end_label): Update.
20485         (optimize_skip): Update.
20486         (fill_simple_delay_slots): Update.
20487         (fill_simple_delay_slots): Update.
20488         (make_return_insns): Update.
20489         (dbr_schedule): Update.
20490         * gimple-low.c (record_vars_into): Update.
20491         * cfgbuild.c (make_edges): Update.
20492         * function.c (assign_stack_local): Update.
20493         (assign_parm_adjust_stack_rtl): Update.
20494         (locate_and_pad_parm): Update.
20495         (allocate_struct_function): Do not initialize stack_alignment_needed
20496         and preferred_stack_boundary here.
20497         (stack_protect_prologue): Update.
20498         (stack_protect_epilogue): Update.
20499         (expand_function_start): Initialize stack_alignment_needed,
20500         preferred_stack_boundary and max_jumptable_ents.
20501         (expand_function_end): Update.
20502         (free_after_compilation): Do not NULLify epilogue_delay_list.
20503         * function.h (struct rtl_data): Add stack_protect_guard,
20504         stack_alignment_needed,
20505         preferred_stack_boundary, epilogue_delay_list.
20506         (struct function): Remove value_histograms, stack_alignment_needed,
20507         preferred_stack_boundary, epilogue_delay_list, max_jumptable_ents,
20508         last_label_uid,
20509         unexpanded_var_list, stack_protect_guard.
20510         (current_function_epilogue_delay_list): Remove.
20511         * ipa-type-escape.c (analyze_function): Update.
20512         * gimplify.c (pop_gimplify_context): Update comment.
20513         * calls.c (expand_call): Update.
20514         (emit_library_call_value_1): Update.
20515         * except.c (set_nothrow_function_flags): Update.
20516         * cfgexpand.c (get_decl_align_unit): Update.
20517         (create_stack_guard): Update.
20518         (estimated_stack_frame_size): Update.
20519         (expand_used_vars): Update.
20520         (tree_expand_cfg): Free histogram earliers, init expansion variables.
20521         * explow.c (allocate_dynamic_stack_space): Update.
20522         * tree-ssa-live.c (remove_unused_locals): Update.
20523         * varasm.c (mark_constant_pool): Update.
20524         * tree-inline.c (remap_decls): Update.
20525         (initialize_cfun): Update.
20526         (declare_return_variable): Update.
20527         (inline_forbidden_p): Update.
20528         (expand_call_inline): Update.
20529         (declare_inline_vars): Update.
20530         (tree_function_versioning): Update.
20531         * tree-flow.h (value_histograms): New.
20532         (VALUE_HISTOGRAMS): New macro.
20533         * basic-block.h (control_flow_graph): Add max_jumptable_ents,
20534         last_label_uid.
20535         * tree-cfg.c (set_bb_for_stmt): Update.
20536         (replace_by_duplicate_decl): Update.
20537         (move_block_to_fn): Update.
20538         (new_label_mapper): Update.
20539         (dump_function_to_file): Update.
20540         * ipa-struct-reorg.c (build_data_structure): Update.
20541         * cfgrtl.c (print_rtl_with_bb): Update.
20542         * reload1.c (reload): Update.
20543         (reload): Update.
20544         * config/i386/i386.c (setup_incoming_varargs_64,
20545         ix86_compute_frame_layout): Update.
20546         * config/arc/arc.c (arc_output_function_epilogue): Update.
20547
20548 2008-04-18  Marius Strobl <marius@FreeBSD.org>
20549
20550         * gthr-posix.h (__gthread_active_p): Use the Solaris implementation
20551         for FreeBSD as well.
20552         * gthr-posix95.h: Likewise.
20553
20554 2008-04-17  Richard Sandiford  <rsandifo@nildram.co.uk>
20555
20556         PR rtl-optimization/35838
20557         * dse.c (find_shift_sequence): Use subreg_lowpart_offset to work
20558         out the byte offset of the first subreg.
20559
20560 2008-04-17  Uros Bizjak  <ubizjak@gmail.com>
20561
20562         * config/i386/i386.md (addti3 splitter): Pass arrays of 3 operands
20563         to split_ti instead of three separate calls with single member arrays.
20564         (subti3 splitter): Ditto.
20565         (adddi3 splitter): Ditto with split_di.
20566         (subdi3 splitter): Ditto.
20567         (negti2 splitter): Pass arrays of 2 operands to split_ti instead of
20568         two separate calls with single member arrays.  Swap match_dup
20569         operands 1 and 2 to better fit into the array.
20570         (negdi2 splitter): Ditto with split_di.
20571         (movdfcc splitter):  Pass arrays of 2 operands to split_di instead of
20572         two separate calls with single member arrays.  Swap match_dup operands
20573         6 and 7 to better fit into the array.
20574
20575 2008-04-17  H.J. Lu  <hongjiu.lu@intel.com>
20576
20577         * config/i386/i386.c (sse_builtin_type): New.
20578         (bdesc_sse_args): Likewise.
20579         (bdesc_sse_3arg): Removed.
20580         (bdesc_2arg): Remove IX86_BUILTIN_AESKEYGENASSIST128.
20581         (bdesc_1arg): Remove IX86_BUILTIN_ROUNDPD and
20582         IX86_BUILTIN_ROUNDPS.
20583         (ix86_init_mmx_sse_builtins): Handle bdesc_sse_args.  Remove
20584         bdesc_sse_3arg.  Remove IX86_BUILTIN_ROUNDPD and
20585         IX86_BUILTIN_ROUNDPS.
20586         (ix86_expand_sse_4_operands_builtin): Removed.
20587         (ix86_expand_sse_operands_builtin): New.
20588         (ix86_expand_unop_builtin): Remove CODE_FOR_sse4_1_roundpd
20589         and CODE_FOR_sse4_1_roundps.
20590         (ix86_expand_builtin): Remove IX86_BUILTIN_AESKEYGENASSIST128.
20591         Handle bdesc_sse_args.  Remove bdesc_sse_3arg.
20592
20593 2008-04-17  Alan Modra  <amodra@bigpond.net.au>
20594
20595         PR target/35907
20596         * config/rs6000/rs6000.c (rs6000_emit_epilogue): Restore vr and vrsave
20597         regs before frame pop when needed.  If use_backchain_to_restore_sp
20598         then load backchain into a temp reg to restore vr and vrsave.  Add
20599         code to restore vr after frame pop if possible.
20600
20601 2008-04-17  Richard Guenther  <rguenther@suse.de>
20602
20603         * tree-vn.c (expressions_equal_p): Do not check type
20604         equality or compatibility before calling operand_equal_p.
20605         * fold-const.c (operand_equal_p): Check equivalence of
20606         integer constants before bailing out due to signedness or
20607         precision differences.
20608         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Ignore
20609         spurious differences in type qualification.  Ignore types
20610         for COMPONENT_REFs at all.
20611
20612 2008-04-17  Christian Bruel  <christian.bruel@st.com>
20613
20614         * config/sh/sh.c (expand_cbranchdi4): Use original operands for
20615         msw_skip comparison.
20616
20617 2008-04-16  Jakub Jelinek  <jakub@redhat.com>
20618
20619         PR c/35739
20620         * tree-nrv.c (tree_nrv): Don't optimize if result_type is GIMPLE
20621         reg type.
20622
20623         PR tree-optimization/35899
20624         * tree-inline.c (expand_call_inline): Use GIMPLE_STMT_OPERAND
20625         rather than TREE_OPERAND.
20626
20627 2008-04-16  Uros Bizjak  <ubizjak@gmail.com>
20628
20629         PR target/35944
20630         * config/i386/i386.md (fmodxf3): Copy operand 1 and operand 2 into
20631         temporary registers.  Change operand predicate to general_operand.
20632         (remainderxf3): Ditto.
20633
20634 2008-04-16  Richard Guenther  <rguenther@suse.de>
20635
20636         * Makefile.in (tree-affine.o): Add $(FLAGS_H) dependency.
20637         * tree-affine.c (aff_combination_expand): Look through some
20638         conversions.
20639
20640 2008-04-15  Doug Kwan  <dougkwan@google.com>
20641
20642         * dwarf2asm.c (dw2_assemble_integer): Cast to unsigned HOST_WIDE_INT
20643         for hex printing.
20644         * tree-pretty-print.c (dump_generic_node): Ditto.
20645         * final.c (output_addr_const): Ditto.
20646         * dwarf2out.c (output_cfi): Ditto.
20647         * c-pretty-print.c (pp_c_integer_constant): Ditto.
20648         * print-rtl.c (print_rtx): Ditto.
20649         * print-tree.c (print_node_brief, print_node): Ditto.
20650         * c-common.c (match_case_to_enum_1): Ditto.
20651         * sched-vis.c (print_value): Ditto.
20652         * config/i386/i386.c (print_operand): Cast to long unsigned int
20653         for hex printing.
20654
20655 2008-04-15  Danny Smith  <dannysmith@users.sourceforge.net>
20656         * libgcc2.c [L_trampoline]: Remove  unnecessary prototype for
20657         MS Windows VirtualProtect function.
20658
20659 2008-04-15  Jan Hubicka  <jh@suse.cz>
20660
20661         * gengtype.c (write_root): Param_is argument is OK.
20662         * expr.c (expand_expr_real_1): Update call of get_exception_*.
20663         * function.h: Include varray.h
20664         (rtl_eh): New stucture based on except.c one.
20665         (call_site_record): New forward declaration and vector type.
20666         * calls.c (emit_call_1): Do not call
20667         note_current_region_may_contain_throw.
20668         * except.c (eh_status): Remove cur_region, try_region since they are
20669         unused.
20670         Move filter, exc_ptr, ttype_data, ehspec_data, action_record_data and
20671         exception_handler_label_map, ehr_stackadj, ehr_handler, ehr_label,
20672         sjlj_fc, sjlj_exit_after to rth_eh in function.h.
20673         Remove call_site_data_used, call_site_data_size.
20674         Turn call_site_record into vector in function.h.
20675         (note_current_region_may_contain_throw): Remove.
20676         (get_exception_pointer, get_exception_filter): Do not take struct
20677         function argument; update.
20678         (add_ehl_entry, find_exception_handler_labels, ehspec_filter_hash,
20679         add_ttypes_entry, add_ehspec_entry, assign_filter_values,
20680         build_post_landing_pads, dw2_build_landing_pads,
20681         sjlj_assign_call_site_values, sjlj_mark_call_sites,
20682         sjlj_emit_function_enter, sjlj_emit_function_enter,
20683         sjlj_emit_function_exit, sjlj_emit_dispatch_table,
20684         sjlj_build_landing_pads, finish_eh_generation,
20685         remove_exception_handler_label, remove_eh_handler,
20686         maybe_remove_eh_handler, add_reachable_handler,
20687         reachable_handlers, expand_builtin_eh_return, expand_eh_return,
20688         add_action_record, collect_one_action_chain, add_call_site,
20689         convert_to_eh_region_ranges, sjlj_size_of_call_site_table,
20690         sjlj_output_call_site_table, output_function_exception_table,
20691         * except.h (note_current_region_may_contain_throw): Remove
20692         (get_exception_pointer, get_exception_filter): Do not take struct
20693         function argument.
20694         * Makefile.in (GTFILES): Put varargs before struct function.
20695
20696 2008-04-15  Eric Botcazou  <ebotcazou@adacore.com>
20697
20698         * tree-ssa-structalias.c (get_constraint_for_component_ref): Do not
20699         punt for STRING_CST.
20700         (get_constraint_for): Deal with STRING_CST here instead.
20701
20702 2008-04-15  Richard Guenther  <rguenther@suse.de>
20703
20704         * tree-ssa-propagate.c (substitute_and_fold): Substitute
20705         statements in a basic-block with a backward walk.  Do not
20706         substitute into dead statements but instead remove those.
20707
20708 2008-04-15  Richard Guenther  <rguenther@suse.de>
20709
20710         * params.def (PARAM_MAX_FIELDS_FOR_FIELD_SENSITIVE): Set default
20711         to zero, thus disable creation of SFTs.
20712
20713 2008-04-15  Eric Botcazou  <ebotcazou@adacore.com>
20714
20715         * tree-predcom.c (suitable_reference_p): Return false if the
20716         reference can throw.
20717
20718 2008-04-15  Jakub Jelinek  <jakub@redhat.com>
20719
20720         PR c/35751
20721         * c-decl.c (finish_decl): If extern or static var has variable
20722         size, set TREE_TYPE (decl) to error_mark_node.
20723
20724 2008-04-15  Rafael Espíndola  <espindola@google.com>
20725
20726         * fold-const.c (tree_call_nonnegative_warnv_p): Remove local
20727         variable arg1.
20728
20729 2008-04-15  Richard Guenther  <rguenther@suse.de>
20730
20731         * tree-ssa-sccvn.h (vn_reference_lookup): Adjust prototype.
20732         * tree-ssa-sccvn.c (vn_reference_lookup): New parameter maywalk.
20733         (visit_reference_op_load): Do walk vuse-vdef chains on
20734         vn_reference_lookup.
20735         (visit_reference_op_store): But do not here.
20736         * tree-vn.c (vn_lookup): Do not walk vuse-vdef chains on
20737         vn_reference_lookup.
20738         (vn_lookup_with_vuses): But do so here.
20739
20740 2008-04-14  Ian Lance Taylor  <iant@google.com>
20741
20742         * fold-const.c (fold_overflow_warning): Remove assertion.
20743
20744 2008-04-15  Ben Elliston  <bje@au.ibm.com>
20745
20746         * config/alpha/alpha.c (alpha_initialize_trampoline): Remove temp,
20747         temp1 local variables.
20748
20749 2008-04-15  Zuxy Meng  <zuxy.meng@gmail.com>
20750
20751         PR target/35661
20752         * config/i386/winnt.c (i386_pe_section_type_flags): Mark
20753         ".text.unlikely" section as executable.
20754
20755 2008-04-14  James E. Wilson  <wilson@tuliptree.org>
20756
20757         * config/ia64/ia64.c (rtx_needs_barrier): Handle
20758         UNSPEC_FR_SQRT_RECIP_APPROX_RES.
20759         * config/ia64/ia64.c (UNSPEC_FR_SQRT_RECIP_APPROX_RES): Define.
20760         (divsi3_internal, divdi3_internal_lat, divdi3_internal_thr,
20761         divsf3_internal_lat, sqrt_approx, sqrtsf2_internal_thr,
20762         divdf3_internal_lat, sqrtdf2_internal_thr, divxf3_internal_lat,
20763         divxf3_internal_thr, sqrtxf2_internal_thr, recip_approx): Use it.
20764
20765 2008-04-14  Ian Lance Taylor  <iant@google.com>
20766
20767         * flags.h (POINTER_TYPE_OVERFLOW_UNDEFINED): Define.
20768         * fold-const.c (fold_comparison): If appropriate, test
20769         POINTER_TYPE_OVERFLOW_UNDEFINED, and issue an overflow warning.
20770         (fold_binary): Test POINTER_TYPE_OVERFLOW_UNDEFINED when
20771         reassociating a pointer type.
20772         * doc/invoke.texi (Optimize Options): Document that
20773         -fstrict-overflow applies to pointer wraparound.
20774
20775 2008-04-13  Jan Hubicka  <jh@suse.cz>
20776
20777         * m32.c (m32c_pushm_popm): Use crtl->retrun_rtx.
20778
20779 2008-04-12  Andrew Pinski  <pinskia@gmail.com>
20780
20781         * config/rs6000/rs6000.c (compute_save_world_info): Set lr_save_p if
20782         we are going to "save the world".
20783
20784 2008-04-13  Hans-Peter Nilsson  <hp@axis.com>
20785
20786         * config/cris/cris.md ("*andhi_lowpart_non_v32", "*andhi_lowpart_v32")
20787         ("*andqi_lowpart_non_v32", "*andqi_lowpart_v32"): Use "+" for the
20788         operand 0 constraint, not "=".
20789
20790 2008-04-11  James E. Wilson  <wilson@tuliptree.org>
20791
20792         * system.h: Change ASSERT_CHECKING to ENABLE_ASSERT_CHECKING.
20793
20794 2008-04-11  H.J. Lu  <hongjiu.lu@intel.com>
20795
20796         * dse.c (record_store): Use HOST_BITS_PER_WIDE_INT instead
20797         of size of positions_needed * CHAR_BIT.
20798
20799 2008-04-11  H.J. Lu  <hongjiu.lu@intel.com>
20800
20801         PR middle-end/35897
20802         * dse.c (store_info): Change positions_needed to unsigned
20803         HOST_WIDE_INT.
20804         (lowpart_bitmask): New.
20805         (record_store): Cast to unsigned HOST_WIDE_INT for
20806         positions_needed.  Assert width <= size of positions_needed *
20807         CHAR_BIT.  Call lowpart_bitmask to initialize positions_needed.
20808         (check_mem_read_rtx): Use unsigned HOST_WIDE_INT on mask.  Call
20809         lowpart_bitmask to set mask.
20810
20811 2008-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
20812
20813         * config/bfin/constraints.md: New file.
20814         * config/bfin/bfin.md: Include it.
20815         (adddi3): Use satisfies_constraint functions instead of the old macros.
20816         * config/bfin/bfin.h (REG_CLASS_FROM_LETTER, CONSTRAINT_LEN,
20817         CONST_18UBIT_IMM_P, CONST_16BIT_IMM_P, CONST_16UBIT_IMM_P,
20818         CONST_7BIT_IMM_P, CONST_7NBIT_IMM_P, CONST_5UBIT_IMM_P,
20819         CONST_4BIT_IMM_P, CONST_4UBIT_IMM_P, CONST_3BIT_IMM_P,
20820         CONST_3UBIT_IMM_P, CONST_OK_FOR_K, CONST_OK_FOR_P, CONST_OK_FOR_M,
20821         CONST_OK_FOR_CONSTRAINT_P, CONST_DOUBLE_OK_FOR_LETTER,
20822         EXTRA_CONSTRAINT): Delete.
20823         * config/bfin/predicates.md (highbits_operand, reg_or_7bit_operand,
20824         reg_or_neg7bit_operand): Use satisfies_constraint functions instead
20825         of the old macros.
20826         * config/bfin/bfin.c: Include "tm-constrs.h".
20827         (bfin_secondary_reload, split_load_immediate, bfin_rtx_costs):
20828         Use satisfies_constraint functions instead of the old macros.
20829         * doc/md.texi (Blackfin Constraints): Update file name reference.
20830
20831 2008-04-11  Richard Guenther  <rguenther@suse.de>
20832
20833         PR tree-optimization/35869
20834         * tree-vrp.c (execute_vrp): Move switch statement update after
20835         jump threading.  Schedule another cfg cleanup run.
20836
20837 2008-04-11  Volker Reichelt  <v.reichelt@netcologne.de>
20838
20839         PR c/35744
20840         * attribs.c (decl_attributes): Return early on errorneous node.
20841
20842 2008-04-10  Oleg Ryjkov  <olegr@google.com>
20843
20844         * tree.h (struct tree_base): Added a new flag default_def_flag.
20845         (SSA_NAME_IS_DEFAULT_DEF): Changed to use the new flag.
20846
20847 2008-04-11  Kaz Kojima  <kkojima@gcc.gnu.org>
20848
20849         * config.gcc (need_64bit_hwint): Need 64bit hwint for sh-*-*.
20850
20851 2008-04-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
20852
20853         PR target/35768
20854         * pa.md: Define mode iterator P.  Define mode attribute dwc.
20855         (dcacheflush): Update pattern to use iterator P and attribute dwc.
20856         (icacheflush): Likewise.
20857         * pa.h (INITIALIZE_TRAMPOLINE): Use dcacheflushsi/icacheflushsi if
20858         !TARGET_64BIT, and dcacheflushdi/icacheflushdi if TARGET_64BIT.
20859
20860 2008-04-11  Ben Elliston  <bje@au.ibm.com>
20861
20862         * config/spu/spu.c (spu_init_builtins): Mark builtins as nothrow.
20863
20864 2008-04-10  Rafael Espíndola  <espindola@google.com>
20865
20866         * tree-vrp.c (extract_range_from_binary_expr): Don't handle
20867         TRUTH_ANDIF_EXPR or TRUTH_ORIF_EXPR.
20868         (extract_range_from_expr): The same.
20869
20870 2008-04-10  Adam Nemet  <anemet@caviumnetworks.com>
20871
20872         * config/mips/mips.md (GPR2): New mode iterator.
20873         (seq): Add comment.
20874         (*seq_<mode>, *seq_<mode>_mips16, *sne_<mode>, *sgt<u>_<mode>,
20875         *sgt<u>_<mode>_mips16, *sge<u>_<mode>, *slt<u>_<mode>,
20876         *slt<u>_<mode>_mips16 *sle<u>_<mode>, *sle<u>_<mode>_mips16):
20877         Rewrite these to take two modes, the mode of comparison and the
20878         mode of the destination.
20879         * config/mips/mips.c (mips_expand_scc): Instead of having
20880         paradoxical subreg as destination, expand "narrowing" scc if mode
20881         of comparison is SI and target is requested in DI mode.
20882         (mips_emit_int_order_test): Update comment.  Make mode of
20883         comparison match CMP0 rather than TARGET.  When creating inverse
20884         target use mode of TARGET.
20885
20886 2008-04-10  Adam Nemet  <anemet@caviumnetworks.com>
20887
20888         * gcov-dump.c (tag_summary): Only print summaries for the first
20889         GCOV_COUNTERS_SUMMABLE counters.
20890
20891 2008-04-10  Uros Bizjak  <ubizjak@gmail.com>
20892
20893         * config/i386/i386.md (absneg): New code iterator.
20894         (absnegprefix): New code attribute.
20895         (<code><mode>2): Macroize expander from abs<mode>2 and neg<mode>2
20896         patterns using absneg code iterator.
20897         (<code>tf2): Macroize expander from abstf2 and negtf2 patterns
20898         using absneg code iterator.
20899         (*<code><mode>2_1): Macroize insn pattern from *abs<mode>2_1 and
20900         *neg<mode>2 patterns using absneg code iterator.
20901         (*<code>extendsfdf2): Macroize insn pattern from *absextendsfdf2 and
20902         *negextendsfdf2 patterns using absneg code iterator.
20903         (*<code>extendsfxf2): Macroize insn pattern from *absextendsfxf2 and
20904         *negextendsfxf2 patterns using absneg code iterator.
20905         (*<code>extendsfdf2): Macroize insn pattern from *absextendsfdf2 and
20906         *negextendsfdf2 patterns using absneg code iterator.
20907         * config/i386/sse.md (<code><mode>2): Macroize expander from
20908         abs<mode>2 and neg<mode>2 patterns using absneg code iterator.
20909
20910 2008-04-10  Andreas Krebbel  <krebbel1@de.ibm.com>
20911
20912         * config/s390/s390.h: Remove the remains of the recent search
20913         & replace action of current_function_outgoing_args_size.
20914
20915 2008-04-10  Ira Rosen  <irar@il.ibm.com>
20916
20917         PR tree-optimization/35821
20918         * tree-vect-transform.c (vect_create_data_ref_ptr): Add check that
20919         NEW_STMT_LIST is not NULL.
20920
20921 2008-04-09  David Edelsohn  <edelsohn@gnu.org>
20922
20923         PR libstdc++/35597
20924         * toplev.c (process_options): Remove -ffunction-sections debugging
20925         warning.
20926
20927 2008-04-09  Peter Bergner  <bergner@vnet.ibm.com>
20928
20929         PR middle-end/PR28690
20930         * explow.c (break_out_memory_refs): Use simplify_gen_binary rather
20931         than gen_rtx_fmt_ee to perform more canonicalizations.
20932
20933 2008-04-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
20934
20935         PR driver/35665
20936         * collect2.c (write_c_file): Don't wrap in "#ifdef __cplusplus".
20937
20938 2008-04-09  Richard Guenther  <rguenther@suse.de>
20939
20940         * tree-cfg.c (verify_stmt): Print complete bogus stmt.
20941         (dump_function_to_file): Dump function arguments with types.
20942
20943 2008-04-08  Richard Guenther  <rguenther@suse.de>
20944
20945         * fold-const.c (fold_widened_comparison): Do not allow
20946         sign-changes that change the result.
20947
20948 2008-04-08  Janis Johnson  <janis187@us.ibm.com>
20949
20950         PR target/35839
20951         * config/rs6000/rs6000.c (rs6000_check_sdmode): Handle additional
20952         kinds of indirect references.
20953
20954 2008-04-08  David Edelsohn  <edelsohn@gnu.org>
20955
20956         * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Update
20957         GNU Fortran language string.
20958
20959 2008-04-08  Rafael Espíndola  <espindola@google.com>
20960
20961         * fold-canst.c (tree_call_nonnegative_warnv_p): New.
20962         (tree_invalid_nonnegative_warnv_p): Use tree_call_nonnegative_warnv_p.
20963         * tree.h (tree_call_nonnegative_warnv_p): New.
20964
20965 2008-04-08  Jan Hubicka  <jh@suse.cz>
20966
20967         * function.c (free_after_compilation): Clear out regno_reg_rtx
20968         pointer.
20969
20970 2008-04-08  Peter Bergner  <bergner@vnet.ibm.com>
20971
20972         Revert
20973         2008-04-07  Peter Bergner  <bergner@vnet.ibm.com>
20974
20975         PR middle-end/PR28690
20976         * rtlanal.c: (commutative_operand_precedence): Give SYMBOL_REF's the
20977         same precedence as REG_POINTER and MEM_POINTER operands.
20978
20979 2008-04-08  Richard Guenther  <rguenther@suse.de>
20980
20981         PR middle-end/35834
20982         * tree-ssa-address.c (create_mem_ref): Use POINTER_PLUS_EXPR
20983         for adding index to base.
20984
20985 2008-04-08  Kai Tietz  <kai.tietz@onevision.com>
20986
20987         * config/i386/mingw32.h (ENABLE_EXECUTE_STACK): New.
20988         (MINGW_ENABLE_EXECUTE_STACK): New.
20989         (IN_LIBGCC2): For libgcc include windows.h file for
20990         function declarations.
20991
20992 2008-04-08  Hans-Peter Nilsson  <hp@axis.com>
20993
20994         * config/cris/cris.c (cris_address_cost): For a PLUS, swap tem1
20995         and tem2 if tem1 is not a REG or MULT.
20996
20997 2008-04-08  Jan Hubicka  <jh@suse.cz>
20998
20999         * function.h (incomming_args): Break out of struct function.
21000         (function_subsections): Break out of struct function.
21001         (rtl_data): Add args, subsections fields. Break out outgoing_args_size,
21002         return_rtx and hard_reg_initial_vals from struct function.
21003         Kill inl_max_label_num.
21004         (current_function_pops_args, current_function_args_info,
21005         current_function_args_size, current_function_args_size,
21006         current_function_pretend_args_size,
21007         current_function_outgoing_args_size,
21008         current_function_internal_arg_pointer, current_function_return_rtx):
21009         Kill compatibility accestor macros.
21010         * builtins.c (expand_builtin_apply_args_1): Update.
21011         (expand_builtin_next_arg): Update.
21012         * df-scan.c (df_get_call_refs): Update.
21013         * dbxout.c (dbxout_function_end): Update.
21014         * dwarf2out.c (dwarf2out_switch_text_section): Update.
21015         (output_line_info): Update.
21016         (secname_for_decl): Update.
21017         (dwarf2out_var_location): Update.
21018         * function.c (free_after_compilation): Update.
21019         (assign_parm_find_stack_rtl): Update.
21020         (assign_parms): Update.
21021         (expand_dummy_function_end): Update.
21022         (expand_function_end): Update.
21023         * calls.c (mem_overlaps_already_clobbered_arg_p): Update.
21024         (expand_call): Update.
21025         (emit_library_call_value_1): Update.
21026         (store_one_arg): Update.
21027         * varasm.c (initialize_cold_section_name): Update.
21028         (unlikely_text_section): Update.
21029         (unlikely_text_section_p): Update.
21030         (assemble_start_function): Update.
21031         (assemble_end_function): Update.
21032         (default_section_type_flags): Update.
21033         (switch_to_section): Update.
21034         * integrate.c (set_decl_abstract_flags): Update.
21035         (get_hard_reg_initial_val): Update.
21036         (has_hard_reg_initial_val): Update.
21037         (allocate_initial_values): Update.
21038         * resource.c (init_resource_info): Update.
21039         * config/alpha/alpha.c (NUM_ARGS): Update.
21040         (direct_return): Update.
21041         (alpha_va_start): Update.
21042         (alpha_sa_size): Update.
21043         (alpha_initial_elimination_offset): Update.
21044         (alpha_expand_prologue): Update.
21045         (alpha_start_function): Update.
21046         (alpha_expand_epilogue): Update.
21047         (unicosmk_initial_elimination_offset):
21048         * config/alpha/alpha.md (call expander): Update.
21049         * config/s390/s390.c (s390_register_info): Update.
21050         (s390_register_info): Update.
21051         (s390_frame_info): Update.
21052         (s390_initial_elimination_offset): Update.
21053         (s390_build_builtin_va_list): Update.
21054         (s390_va_start): Update.
21055         * config/spu/spu.c (direct_return): Update.
21056         (spu_expand_prologue): Update.
21057         (spu_initial_elimination_offset): Update.
21058         (spu_build_builtin_va_list): Update.
21059         (spu_va_start): Update.
21060         * config/sparc/sparc.c (sparc_init_modes): Update.
21061         (sparc_compute_frame_size): Update.
21062         (function_value): Update.
21063         * config/m32r/m32r.c (m32r_compute_frame_size): Update.
21064         * config/i386/i386.md (return expander): Update.
21065         * config/i386/i386.c (ix86_va_start): Update.
21066         (ix86_can_use_return_insn_p): Update.
21067         (ix86_compute_frame_layout): Update.
21068         (ix86_expand_epilogue): Update.
21069         * config/sh/sh.c (output_stack_adjust): Update.
21070         (calc_live_regs): Update.
21071         (sh_expand_prologue): Update.
21072         (sh_builtin_saveregs): Update.
21073         (sh_va_start): Update.
21074         (initial_elimination_offset): Update.
21075         (sh_allocate_initial_value): Update.
21076         (sh_function_ok_for_sibcall): Update.
21077         (sh_get_pr_initial_val): Update.
21078         * config/sh/sh.md (return expander): Update.
21079         * config/avr/avr.c (frame_pointer_required_p): UPdate.
21080         * config/crx/crx.c (crx_compute_frame): UPdate.
21081         (crx_initial_elimination_offset): UPdate.
21082         * config/xtensa/xtensa.c (compute_frame_size): Update
21083         (xtensa_builtin_saveregs): Update.
21084         (xtensa_va_start): Update.
21085         (order_regs_for_local_alloc): Update.
21086         * config/stormy16/stormy16.c (xstormy16_compute_stack_layout): Update.
21087         (xstormy16_expand_builtin_va_start): Update.
21088         * config/fr30/fr30.c (fr30_compute_frame_size): Update.
21089         * config/m68hc11/m68hc11.md (return expanders): Update.
21090         * config/m68hc11/m68hc11.c (expand_prologue): Update.
21091         (expand_epilogue): Update.
21092         * config/cris/cris.c (cris_initial_frame_pointer_offset): Update.
21093         (cris_simple_epilogue): Update.
21094         (cris_expand_prologue): Update.
21095         (cris_expand_epilogue): Update.
21096         * config/iq2000/iq2000.c (iq2000_va_start): Update.
21097         (compute_frame_size): Update.
21098         * config/mt/mt.c (mt_compute_frame_size): Update.
21099         * config/mn10300/mn10300.c (expand_prologue): Update.
21100         (expand_epilogue): Update.
21101         (initial_offset): Update.
21102         (mn10300_builtin_saveregs):
21103         * config/mn10300/mn10300.md (return expander): Update.
21104         * config/ia64/ia64.c (ia64_compute_frame_size): Update.
21105         (ia64_initial_elimination_offset): Update.
21106         (ia64_initial_elimination_offset): Update.
21107         (ia64_expand_prologue): Update.
21108         * config/m68k/m68k.md (return expander): Update.
21109         * config/rs6000/rs6000.c (rs6000_va_start): Update.
21110         (rs6000_stack_info): Update.
21111         * config/mcore/mcore.c (layout_mcore_frame): Update.
21112         (mcore_expand_prolog): Update.
21113         * config/arc/arc.c (arc_compute_frame_size): Update.
21114         * config/score/score3.c (score3_compute_frame_size): Update.
21115         * config/score/score7.c (score7_compute_frame_size): Update.
21116         * config/arm/arm.c (use_return_insn): Update.
21117         (thumb_find_work_register): Update.
21118         (arm_compute_save_reg_mask): Update.
21119         (arm_output_function_prologue): Update.
21120         (arm_output_epilogue): Update.
21121         (arm_size_return_regs): Update.
21122         (arm_get_frame_offsets): Update.
21123         (arm_expand_prologue): Update.
21124         (thumb_exit): Update.
21125         (thumb_unexpanded_epilogue): Update.
21126         (thumb1_output_function_prologue): Update.
21127         * config/pa/pa.md (return expander): Update.
21128         * config/pa/pa.c (compute_frame_size): Update.
21129         (hppa_builtin_saveregs): Update.
21130         * config/mips/mips.c (mips_va_start): Update.
21131         (mips16_build_function_stub): Update.
21132         (mips_compute_frame_info): Update.
21133         (mips_restore_gp): Update.
21134         (mips_output_function_prologue): Update.
21135         (mips_expand_prologue): Update.
21136         * config/v850/v850.c (compute_frame_size): Update.
21137         (expand_prologue): * config/mmix/mmix.c (along): update.
21138         (mmix_initial_elimination_offset): update.
21139         (mmix_reorg): update.
21140         (mmix_use_simple_return): update.
21141         (mmix_expand_prologue): update.
21142         (mmix_expand_epilogue): Update.
21143         * config/bfin/bfin.c (bfin_initial_elimination_offset): Update.
21144         (emit_link_insn): Update.
21145
21146 2008-04-08  Anatoly Sokolov <aesok@post.ru>
21147
21148         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Define
21149         __AVR_HAVE_EIJMP_EICALL__ macro if device have EIJMP and EICALL
21150         instructions.
21151         * config/avr/avr.c (avr_mcu_types): Set AVR31 architecture for
21152         atmega103 device.
21153
21154 2008-04-07  Jan Hubicka  <jh@suse.cz>
21155
21156         * function.h (rtl): Rename to x_rtl.
21157         (crtl): New define.
21158         (return_label, naked_return_label, stack_slot_list, parm_birth_insn,
21159         frame_offset, stack_check_probe_note, arg_pointer_save_area,
21160         used_temp_slots avail_temp_slots, temp_slot_level,
21161         nonlocal_goto_handler_labels): Update accesstors.
21162         (rtl): New global variable.
21163         (struct function): Move some fileds to rtl_data.
21164         (get_arg_pointer_save_area): Update prototype.
21165         * builtins.c (expand_builtin_setjmp_receiver): Update call of
21166         get_arg_pointer_save_area.
21167         * expr.c (init_expr): Update
21168         * function.c (get_frame_size): Update
21169         (assign_stack_local): Update
21170         (expand_function_end): Update.
21171         (get_art_pointer_save_area): Update
21172         * function.h
21173         * emit-rtl.c (rtl): Declare.
21174         (regno_reg_rtx): Declare.
21175         (first_insn, last_insn, cur_insn_uid, last_location, first_label_num):
21176         Update.
21177         (gen_reg_rtx): Update.
21178         * varasm.c (n_deferred_constatns): Update accestor.
21179         (init_varasm_status): Do not allocate varasm_status.
21180         (force_const_mem, get_pool_size, output_constant_pool): Update.
21181         * stmt.c (force_label_rtx): Do not use x_ prefixes.
21182         (expand_nl_goto_receiver): Update get_arg_pointer_save_area.
21183         * m32c/m32.c (m32c_leaf_function_p, m32c_function_needs_enter): Update.
21184         * sparc/sparc.h (INIT_EXPANDERS): Update.
21185         * ia64/ia64.h (INIT_EXPANDERS): Update.
21186
21187 2008-04-07  James E. Wilson  <wilson@tuliptree.org>
21188
21189         * reload.c (push_secondary_reload): Add missing break to for loop.
21190
21191 2008-04-07  Peter Bergner  <bergner@vnet.ibm.com>
21192
21193         PR middle-end/PR28690
21194         * rtlanal.c: Update copyright years.
21195         (commutative_operand_precedence): Give SYMBOL_REF's the same precedence
21196         as REG_POINTER and MEM_POINTER operands.
21197         * emit-rtl.c (gen_reg_rtx_and_attrs): New function.
21198         (set_reg_attrs_from_value): Call mark_reg_pointer as appropriate.
21199         * rtl.h (gen_reg_rtx_and_attrs): Add prototype for new function.
21200         * gcse.c: Update copyright years.
21201         (pre_delete): Call gen_reg_rtx_and_attrs.
21202         (hoist_code): Likewise.
21203         (build_store_vectors): Likewise.
21204         (delete_store): Likewise.
21205         * loop-invariant.c (move_invariant_reg): Likewise.
21206         Update copyright years.
21207
21208 2008-04-07  Uros Bizjak  <ubizjak@gmail.com>
21209
21210         * config/i386/i386.md ("*sse_prologue_save_insn"): Use braced output
21211         control string instead of quoted.
21212
21213 2008-04-07  Kenneth Zadeck  <zadeck@naturalbridge.com>
21214
21215         * doc/rtl.texi: Rewrite of subreg section.
21216
21217 2008-04-07  Kai Tietz  <kai.tietz@onevision.com>
21218
21219         PR/35842
21220         * config/i386/i386.c (legitimize_pic_address): Add treating
21221         of dllimport SYM_REF's.
21222         (legitimize_dllimport_symbol): Add prototype.
21223
21224 2008-04-07  Eric Botcazou  <ebotcazou@adacore.com>
21225
21226         * fold-const.c (fold) <ARRAY_REF>: New case.  Try to fold constant
21227         reference in constructor with non self-referential type.
21228
21229 2008-04-07  Eric Botcazou  <ebotcazou@adacore.com>
21230
21231         Removal of Return with Depressed Stack Pointer support
21232         * tree.h (TYPE_RETURNS_STACK_DEPRESSED): Delete.
21233         (ECF_SP_DEPRESSED): Likewise.
21234         (ECF_LIBCALL_BLOCK, ECF_NOVOPS): Adjust.
21235         * calls.c (emit_call_1): Do not test ECF_SP_DEPRESSED.
21236         (flags_from_decl_or_type): Do not test TYPE_RETURNS_STACK_DEPRESSED.
21237         (expand_call): Do not test ECF_SP_DEPRESSED.
21238         * dse.c (dse_step0): Do not test TYPE_RETURNS_STACK_DEPRESSED.
21239         * function.c (keep_stack_depressed): Delete.
21240         (handle_epilogue_set): Likewise.
21241         (update_epilogue_consts): Likewise.
21242         (emit_equiv_load): Likewise.
21243         (thread_prologue_and_epilogue_insns): Remove support for Return with
21244         Depressed Stack Pointer.
21245         * print-tree.c (print_node): Do not test TYPE_RETURNS_STACK_DEPRESSED.
21246
21247 2008-04-06  Richard Guenther  <rguenther@suse.de>
21248
21249         PR tree-optimization/35400
21250         * tree-vrp.c (vrp_evaluate_conditional): Only query value-range
21251         information from SSA_NAMEs.
21252
21253 2008-04-06  Anatoly Sokolov <aesok@post.ru>
21254
21255         * config/avr/avr.h (avr_mega_p): Remove declaration.
21256         (AVR_MEGA): Remove macro.
21257         * config/avr/avr.c (avr_mega_p): Remove variable.
21258         (avr_override_options): Remove inicializion of avr_mega_p.
21259         Use AVR_HAVE_JMP_CALL instead of AVR_MEGA.
21260         (print_operand): Use AVR_HAVE_JMP_CALL instead of AVR_MEGA.
21261         (avr_jump_mode): (Ditto.).
21262         (avr_output_progmem_section_asm_op): (Ditto.).
21263         (avr_asm_init_sections): (Ditto.).
21264         (avr_asm_init_sections): (Ditto.).
21265         (avr_rtx_costs): (Ditto.).
21266         * config/avr/avr.md: (Ditto.).
21267         * config/avr/avr.h: Use '__AVR_HAVE_JMP_CALL__' instead of
21268         '__AVR_MEGA__'.
21269
21270 2008-04-06  Richard Guenther  <rguenther@suse.de>
21271
21272         PR tree-optimization/35842
21273         * tree-ssa-address.c (fixed_address_object_p): Adjust to match
21274         is_gimple_invariant_address.
21275
21276 2008-04-06  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
21277
21278         * gcc.c (default_compilers): Sync Fortran extensions list with
21279         that in fortran/lang-specs.h.
21280         * doc/invoke.texi: Likewise.
21281         * dbxout.c (get_lang_number): Use "GNU Fortran" in "GNU F95".
21282         * dwarf2out.c (gen_compile_unit_die): Likewise.
21283
21284 2008-04-06  Tom G. Christensen  <tgc@jupiterrise.com>
21285
21286         * gthr-posix95.h (__gthread_cond_wait_recursive): Add missing &.
21287
21288 2008-04-05  Uros Bizjak  <ubizjak@gmail.com>
21289
21290         PR target/12329
21291         * config/i386/i386.c (ix86_function_regparm): Error if regparm(3)
21292         attribute is used for nested functions.
21293
21294 2008-04-05  Jan Hubicka  <jh@suse.cz>
21295
21296         * emit-rtl.c (init_emit): xcalloc regno_pointer_align.
21297
21298         * tree-dump.c (dump_enable_all): Remove prototype; do not accept
21299         letter argument.
21300         (dump_files): Update.
21301         (enable_rtl_dump_file): Do not accept letter argument.
21302         * tree-pass.h (dump_file_info): Remove letter argument.
21303         * toplev.c (decode_d_option): Update -da handling.
21304         * toplev.h (enable_rtl_dump_file): Update prototype.
21305         * passes.c (register_one_dump_file): Do not accept IPA argument; work
21306         it out based on pass type.
21307         (register_dump_files_1): Likewise.
21308         (init_optimization_passes): Update register_one_dump_file calls.
21309         (execute_one_pass): Sanity check that IPA passes are called at IPA
21310         level and RTL passes at RTL level.
21311         (execute_pass_list): IPA pass can not be after or subpass of
21312         GIMPLE/RTL pass.
21313         (execute_ipa_pass_list): Handle IPA subpasses of IPA subpasses and
21314         disallov RTL subpasses of IPA subpasses.
21315
21316 2008-04-05  Ben Elliston  <bje@au.ibm.com>
21317
21318         * tree-cfg.c (need_fake_edge_p): Return false for calls to
21319         builtins that return exactly once and do not throw. Cache call to
21320         call_expr_flags.
21321
21322 2008-04-04 Andy Hutchinson <hutchinsonandy@aim.com>
21323
21324         PR rtl-optimization/34916
21325         PR middle-end/35519
21326         * combine.c (create_log_links): Do not create duplicate LOG_LINKS
21327         between instruction pairs.
21328
21329 2008-04-04  Naveen.H.S  <naveen.hs@kpitcummins.com>
21330
21331         * doc/invoke.texi: Document -mbitops for SH.
21332         * config/sh/constraints.md (K03, K12, Sbv, Sbw): New constraints.
21333         * config/sh/predicates.md (bitwise_memory_operand): New predicate.
21334         * config/sh/sh.c (print_operand): Add %t operand code.
21335         * config/sh/sh.h (GO_IF_LEGITIMATE_INDEX): Add condition for SH2A.
21336         * config/sh/sh.md (*iorsi3_compact): Fix condition for SH2A.
21337         (extendqisi2_compact): Add the alternative for SH2A 4-byte mov.b.
21338         (extendqihi2): Likewise.
21339         (movqi_i): Likewise.
21340         (insv): Use bset, bclr and bst instructions for SH2A if possible.
21341         (extv): Use bld instruction for SH2A if possible.
21342         (extzv): Likewise.
21343         (bclr_m2a, bclrmem_m2a, bset_m2a, bsetmem_m2a, bst_m2a, bld_m2a,
21344         bldsign_m2a, bld_reg, *bld_regqi, band_m2a, bandreg_m2a,
21345         bor_m2a, borreg_m2a, bxor_m2a, bxorreg_m2a): New insns.
21346         (bset.b, bclr.b): Define peepholes.
21347         * config/sh/sh.opt (mbitops): New option.
21348
21349 2008-04-04  Janis Johnson  <janis187@us.ibm.com>
21350
21351         PR target/35620
21352         * config/rs6000/rs6000.c (rs6000_check_sdmode): Handle indirect ref
21353         and view convert expression.
21354
21355 2008-04-04  Jakub Jelinek  <jakub@redhat.com>
21356
21357         PR target/35364
21358         * tree-cfg.c (remove_useless_stmts_1): Handle OMP_* containers.
21359
21360 2008-04-04  H.J. Lu  <hongjiu.lu@intel.com>
21361
21362         * config.gcc (extra_headers): Add wmmintrin.h for x86 and x86-64.
21363
21364         * config/i386/cpuid.h (bit_AES): New.
21365         (bit_PCLMUL): Likewise.
21366
21367         * config/i386/i386.c (pta_flags): Add PTA_AES and PTA_PCLMUL.
21368         (override_options): Handle PTA_AES and PTA_PCLMUL.  Enable
21369         SSE2 if AES or PCLMUL is enabled.
21370         (ix86_builtins): Add IX86_BUILTIN_AESENC128,
21371         IX86_BUILTIN_AESENCLAST128, IX86_BUILTIN_AESDEC128,
21372         IX86_BUILTIN_AESDECLAST128, IX86_BUILTIN_AESIMC128,
21373         IX86_BUILTIN_AESKEYGENASSIST128 and IX86_BUILTIN_PCLMULQDQ128.
21374         (bdesc_sse_3arg): Add IX86_BUILTIN_PCLMULQDQ128.
21375         (bdesc_2arg): Add IX86_BUILTIN_AESENC128,
21376         IX86_BUILTIN_AESENCLAST128, IX86_BUILTIN_AESDEC128,
21377         IX86_BUILTIN_AESDECLAST128 and IX86_BUILTIN_AESKEYGENASSIST128.
21378         (bdesc_1arg): Add IX86_BUILTIN_AESIMC128.
21379         (ix86_init_mmx_sse_builtins): Define __builtin_ia32_aesenc128,
21380         __builtin_ia32_aesenclast128, __builtin_ia32_aesdec128,
21381         __builtin_ia32_aesdeclast128,__builtin_ia32_aesimc128,
21382         __builtin_ia32_aeskeygenassist128 and
21383         __builtin_ia32_pclmulqdq128.
21384         * config/i386/i386.c (ix86_expand_binop_imm_builtin): New.
21385         (ix86_expand_builtin): Use it for IX86_BUILTIN_PSLLDQI128 and
21386         IX86_BUILTIN_PSRLDQI128.  Handle IX86_BUILTIN_AESKEYGENASSIST128.
21387
21388         * config/i386/i386.h (TARGET_AES): New.
21389         (TARGET_PCLMUL): Likewise.
21390         (TARGET_CPU_CPP_BUILTINS): Handle TARGET_AES and TARGET_PCLMUL.
21391
21392         * config/i386/i386.md (UNSPEC_AESENC): New.
21393         (UNSPEC_AESENCLAST): Likewise.
21394         (UNSPEC_AESDEC): Likewise.
21395         (UNSPEC_AESDECLAST): Likewise.
21396         (UNSPEC_AESIMC): Likewise.
21397         (UNSPEC_AESKEYGENASSIST): Likewise.
21398         (UNSPEC_PCLMUL): Likewise.
21399
21400         * config/i386/i386.opt (maes): New.
21401         (mpclmul): Likewise.
21402
21403         * config/i386/sse.md (aesenc): New pattern.
21404         (aesenclast): Likewise.
21405         (aesdec): Likewise.
21406         (aesdeclast): Likewise.
21407         (aesimc): Likewise.
21408         (aeskeygenassist): Likewise.
21409         (pclmulqdq): Likewise.
21410
21411         * config/i386/wmmintrin.h: New.
21412
21413         * doc/extend.texi: Document AES and PCLMUL built-in function.
21414
21415         * doc/invoke.texi: Document -maes and -mpclmul.
21416
21417 2008-04-04  Paolo Bonzini  <bonzini@gnu.org>
21418
21419         * function.c (free_after_parsing): Replace with
21420         cxx_push_function_context from C++ front-end.
21421         (allocate_struct_function): Don't call langhook.
21422         * langhooks.h (struct lang_hooks_for_functions): Delete.
21423         (struct lang_hooks): Add back missing_noreturn_ok_p here, delete
21424         member "function".
21425         * langhooks-def.h (LANG_HOOKS_MISSING_NORETURN_OK_P): Add.
21426         (LANG_HOOKS_FUNCTION_INIT, LANG_HOOKS_FUNCTION_FINAL,
21427         LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P,
21428         LANG_HOOKS_FUNCTION_INITIALIZER): Delete.
21429         (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_MISSING_NORETURN_OK_P,
21430         remove LANG_HOOKS_FUNCTION_INITIALIZER.
21431         * tree-cfg.c: Adjust call to missing_noreturn_ok_p langhook.
21432
21433         * c-objc-common.h (LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P):
21434         Rename to LANG_HOOKS_MISSING_NORETURN_OK_P.
21435
21436 2008-04-04  Jakub Jelinek  <jakub@redhat.com>
21437
21438         PR c/35440
21439         * c-pretty-print.c (pp_c_initializer_list): Handle CONSTRUCTOR
21440         for all types.
21441
21442 2008-04-04  Richard Guenther  <rguenther@suse.de>
21443
21444         PR middle-end/35823
21445         * fold-const.c (optimize_minmax_comparison): Use the correct
21446         type for the constant in the simplified comparison.
21447
21448 2008-04-04  Zuxy Meng <zuxy.meng@gmail.com>
21449
21450         * config/i386/driver-i386.c (describe_cache): Add l2_sizekb argument.
21451         Pass L2 size as "--param l2-cache-size" to the compiler.
21452         (decode_l2_cache): New function to decode L2 cache parameters using
21453         0x8000006 extended cpuid function.
21454         (detect_caches_amd): Determine parameters of L2 cache using
21455         decode_l2_caches function.
21456         (decode_caches_intel): Decode L2 cache parameters.
21457         (detect_caches_intel): Determine L2 cache parameters using
21458         decode_caches_intel and decode_l2_caches functions.
21459
21460 2008-04-03  Bob Wilson  <bob.wilson@acm.org>
21461
21462         * config/xtensa/xtensa.c (xtensa_secondary_reload_class): Use a
21463         secondary input reload for subword loads from the constant pool.
21464
21465 2008-04-03  Janis Johnson  <janis187@us.ibm.com>
21466
21467         PR target/35713
21468         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Use integer
21469           constants of the appropriate size for runtime calculations.
21470
21471         PR c/35712
21472         * dfp.c (decimal_from_decnumber): Retain trailing zeroes for
21473           decimal-float literal constant zero.
21474
21475 2008-04-03  Jakub Jelinek  <jakub@redhat.com>
21476
21477         PR c/35738
21478         * c-parser.c (c_parser_omp_atomic): Call
21479         default_function_array_conversion on the RHS.
21480
21481         PR middle-end/35818
21482         * omp-low.c (scan_sharing_clauses) <case OMP_CLAUSE_SHARED>: Don't
21483         call is_variable_sized if decl has incomplete type.
21484
21485 2008-04-03  H.J. Lu  <hongjiu.lu@intel.com>
21486
21487         * config/i386/i386-protos.h (ix86_aligned_p): Removed.
21488
21489 2008-04-03  Adam Nemet  <anemet@caviumnetworks.com>
21490
21491         * config/mips/mips.md (any_gt, any_ge, any_lt, any_le): New code
21492         iterators.
21493         (u): Add attribute values for gt, gtu, ge, geu, lt, ltu, le and leu.
21494         (sgt<u>): Merge sgt and sgtu into new expander.
21495         (sgt, sgtu): Remove expanders.
21496         (*sgt<u>_<mode>): Merge *sgt_<mode> and *sgtu_<mode> into new pattern.
21497         (*sgt_<mode>, *sgtu_<mode>): Remove patterns.
21498         (*sgt<u>_<mode>_mips16): Merge *sgt_<mode>_mips16 and
21499         *sgtu_<mode>_mips16 into new pattern.
21500         (*sgt_<mode>_mips16, *sgtu_<mode>_mips16): Remove patterns.
21501         (sge<u>): Merge sge and sgeu into new expander.
21502         (sge, sgeu): Remove expanders.
21503         (*sge<u>_<mode>): Merge *sge_<mode> and second *sge_<mode> into
21504         new pattern.
21505         (*sge_<mode>, second *sge_<mode>): Remove patterns.
21506         (slt<u>): Merge slt and sltu into new expander.
21507         (slt, sltu): Remove expanders.
21508         (*slt<u>_<mode>): Merge *slt_<mode> and *sltu_<mode> into new pattern.
21509         (*slt_<mode>, *sltu_<mode>): Remove patterns.
21510         (*slt<u>_<mode>_mips16): Merge *slt_<mode>_mips16 and
21511         *sltu_<mode>_mips16 into new pattern.
21512         (*slt_<mode>_mips16, *sltu_<mode>_mips16): Remove patterns.
21513         (sle<u>): Merge sle and sleu into new expander.
21514         (sle, sleu): Remove expanders.
21515         (*sle<u>_<mode>): Merge *sle_<mode> and *sleu_<mode> into new pattern.
21516         (*sle_<mode>, *sleu_<mode>): Remove patterns.
21517         (*sle<u>_<mode>_mips16): Merge *sle_<mode>_mips16 and
21518         *sleu_<mode>_mips16 into new pattern.
21519         (*sle_<mode>_mips16, *sleu_<mode>_mips16): Remove patterns.
21520
21521 2008-04-03  Jan Hubicka  <jh@suse.cz>
21522
21523         PR tree-optimization/35795
21524         * alpha/alpha.c (alpha_output_mi_thunk_osf): Free after compilation.
21525         * sparc/sparc.c (sparc_output_mi_thunk): Likewise.
21526         * ia64/ia64.c (ia64_output_mi_thunk): Likewise.
21527         * m68k/m68k.c (m68k_output_mi_thunk): Likewise.
21528         * score/score3.c (score3_output_mi_thunk): Likewise.
21529         * score/score7.c (score7_output_mi_thunk): Likewise.
21530         * mips/mips.c (mips_output_mi_thunk): Likewise.
21531
21532 2008-04-03  Richard Guenther  <rguenther@suse.de>
21533
21534         * tree-vrp.c (extract_range_from_unary_expr): Handle all
21535         conversions.  Simplify code.
21536
21537 2008-04-03  Kaz Kojima  <kkojima@gcc.gnu.org>
21538
21539         * config/sh/sh.c (sh_output_mi_thunk): Free cfun.
21540
21541 2008-04-03  Tom Tromey  <tromey@redhat.com>
21542             Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
21543
21544         * config/m68k/t-uclinux (generated_files): Add sysroot-suffix.h.
21545         * config/bfin/t-bfin-linux (generated_files): Add
21546         linux-sysroot-suffix.h.
21547         * doc/install.texi (Prerequisites): Require make 3.80.
21548         * doc/sourcebuild.texi (Front End Directory): Document new
21549         variable.
21550         * Makefile.in (generated_files): New variable.
21551         (ALL_HOST_OBJS): New variable.
21552         ($(ALL_HOST_OBJS)): New target.
21553
21554 2008-04-03  Paolo Bonzini  <bonzini@gnu.org>
21555
21556         * tree-inline.c (copy_generic_body, copy_decl_no_change): Export.
21557         (remap_block): Call id->transform_lang_insert_block instead
21558         of langhook.
21559         (optimize_inline_calls, unsave_expr_now, tree_function_versioning):
21560         Set id.transform_lang_insert_block to NULL.
21561         (clone_body): Move to cp/optimize.c
21562         * tree-inline.h (struct copy_body_data): Change
21563         transform_lang_insert_block to function pointer.
21564         (copy_generic_body, copy_decl_no_change): Export.
21565         * langhooks.h (struct lang_hooks_for_decls): Kill insert_block.
21566         * langhooks-def.h (LANG_HOOKS_INSERT_BLOCK): Kill.
21567         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_INSERT_BLOCK.
21568
21569         * c-tree.h (insert_block): Kill.
21570         * c-decl.c (insert_block): Kill.
21571
21572 2008-04-03  Paolo Bonzini  <bonzini@gnu.org>
21573
21574         * c-objc-common.h (LANG_HOOKS_FUNCTION_ENTER_NESTED,
21575         LANG_HOOKS_FUNCTION_LEAVE_NESTED): Delete.
21576         * c-tree.h (c_push_function_context, c_pop_function_context): Remove
21577         argument.
21578         * c-decl.c (c_push_function_context, c_pop_function_context): Remove
21579         argument, call {push,pop}_function_context from here.
21580         * c-parser.c: Use c_{push,pop}_function_context.
21581
21582         * function.c (push_function_context_to): Move meat ...
21583         (push_function_context): ... here.  Simplify.
21584         * function.c (pop_function_context_from): Move meat ...
21585         (pop_function_context): ... here.  Simplify.
21586         * langhooks.h (struct lang_hooks_for_functions): Remove enter_nested,
21587         leave_nested).
21588         * langhooks-def.h (LANG_HOOKS_FUNCTION_ENTER_NESTED,
21589         LANG_HOOKS_FUNCTION_LEAVE_NESTED): Delete.
21590         (LANG_HOOKS_FUNCTION_INITIALIZER): Delete them from here.
21591         * tree.h (push_function_context_to, pop_function_context_from): Remove.
21592
21593 2008-04-03  Ben Elliston  <bje@au.ibm.com>
21594
21595         * expmed.c (extract_force_align_mem_bit_field): Remove.
21596
21597 2008-04-03  Richard Guenther  <rguenther@suse.de>
21598
21599         PR middle-end/35800
21600         * expr.h (try_casesi): Adjust prototype.
21601         * expr.c (try_casesi): Take fallback label as extra parameter.
21602         Use that for gen_casesi if default_label is NULL.
21603         * stmt.c (expand_case): Pass fallback label to try_casesi,
21604         make sure to fill gaps with a fallback label if default_label
21605         is not present.
21606
21607 2008-04-03  Dominique d'Humières <dominiq@lps.ens.fr>
21608
21609         PR target/35801
21610         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Free cfun.
21611
21612 2008-04-03  Ben Elliston  <bje@au.ibm.com>
21613
21614         * expmed.c (extract_split_bit_field): Remove if (0) code.
21615         * tree-ssa-structalias.c (do_sd_constraint): Likewise.
21616         (do_ds_constraint): Likewise.
21617
21618 2008-04-02  Joseph Myers  <joseph@codesourcery.com>
21619
21620         * doc/cppopts.texi (-dU): Document.
21621         * c-common.h (flag_dump_macros): Update comment.
21622         * c-opts.c (handle_OPT_d): Handle -dU.
21623         * c-ppoutput.c (macro_queue, define_queue, undef_queue,
21624         dump_queued_macros, cb_used_define, cb_used_undef): New.
21625         (init_pp_output): Handle -dU.
21626         (cb_line_change): Call dump_queued_macros.
21627         * toplev.c (decode_d_option): Accept -dU as preprocessor option.
21628
21629 2008-04-02  Anatoly Sokolov <aesok@post.ru>
21630
21631         * config/avr/predicates.md (io_address_operand): New predicate.
21632         * config/avr/avr-protos.h (avr_io_address_p): Remove declaration.
21633         * config/avr/avr.c (avr_io_address_p): Remove function.
21634         (out_movqi_r_mr): Use 'io_address_operand' predicate instead of
21635         'avr_io_address_p' function.
21636         (out_movhi_r_mr): (Ditto.).
21637         (out_movqi_mr_r): (Ditto.).
21638         (out_movhi_mr_r): (Ditto.).
21639         (avr_address_cost): (Ditto.).
21640
21641 2008-04-02  Uros Bizjak  <ubizjak@gmail.com>
21642
21643         * config/i386/i386.md (*float<SSEMODEI24:mode><X87MODEF:mode>2_1):
21644         Emit gen_floatdi<X87MODEF:mode>2_i387_with_xmm for DImode values
21645         in 32bit mode when XMM registers are available to avoid store
21646         forwarding stalls.
21647         (floatdi<X87MODEF:mode>2_i387_with_xmm): New insn pattern and
21648         corresponding post-reload splitters.
21649
21650 2008-04-02  H.J. Lu  <hongjiu.lu@intel.com>
21651
21652         * config/i386/i386.c (bdesc_sse_3arg): Add __builtin_ia32_shufps
21653         and __builtin_ia32_shufpd.  Provide __builtin_ia32_roundsd and
21654         __builtin_ia32_roundss.
21655         (ix86_init_mmx_sse_builtins): Remove __builtin_ia32_shufps,
21656         __builtin_ia32_shufpd, __builtin_ia32_roundsd and
21657         __builtin_ia32_roundss.
21658         (ix86_expand_builtin): Don't handle IX86_BUILTIN_SHUFPS and
21659         IX86_BUILTIN_SHUFPD here.
21660
21661 2008-04-02  H.J. Lu  <hongjiu.lu@intel.com>
21662
21663         * config/i386/i386.md (plogic): New.
21664         (plogicprefix): Likewise.
21665
21666         * config/i386/mmx.md (mmx_<code><mode>3): New.
21667         (mmx_and<mode>3): Removed.
21668         (mmx_ior<mode>3): Likewise.
21669         (mmx_xor<mode>3): Likewise.
21670
21671         * config/i386/sse.md (<code><mode>3): New.
21672         (*<code><mode>3): Likewise.
21673         (*<code><mode>3): Likewise.
21674         (<code><mode>3): Likewise.
21675         (*sse_<code><mode>3): Likewise.
21676         (*sse2_<code><mode>3): Likewise.
21677         (<code>tf3): Likewise.
21678         (*<code>tf3): Likewise.
21679         (and<mode>3): Likewise.
21680         (*and<mode>3): Likewise.
21681         (ior<mode>3): Removed.
21682         (*ior<mode>3): Likewise.
21683         (xor<mode>3): Likewise.
21684         (*xor<mode>3): Likewise.
21685         (*and<mode>3): Likewise.
21686         (*ior<mode>3): Likewise.
21687         (*xor<mode>3): Likewise.
21688         (and<mode>3): Likewise.
21689         (*sse_and<mode>3): Likewise.
21690         (*sse2_and<mode>3): Likewise.
21691         (andtf3): Likewise.
21692         (*andtf3): Likewise.
21693         (ior<mode>3): Likewise.
21694         (*sse_ior<mode>3): Likewise.
21695         (*sse2_ior<mode>3): Likewise.
21696         (iortf3): Likewise.
21697         (*iortf3): Likewise.
21698         (xor<mode>3): Likewise.
21699         (*sse_xor<mode>3): Likewise.
21700         (*sse2_xor<mode>3): Likewise.
21701         (xortf3): Likewise.
21702         (*xortf3): Likewise.
21703
21704 2008-04-02  Richard Guenther  <rguenther@suse.de>
21705
21706         PR tree-optimization/14495
21707         PR tree-optimization/34793
21708         * tree-vrp.c (struct switch_update): New structure.
21709         (to_remove_edges, to_update_switch_stmts): New VECs.
21710         (simplify_switch_using_ranges): New function.  Remove not taken
21711         case labels and edges.
21712         (simplify_stmt_using_ranges): Call it.
21713         (identify_jump_threads): Mark edges we have queued for removal
21714         so we don't thread them.
21715         (execute_vrp): Remove edges queued for removal, update SWITCH_STMT
21716         case label vector.
21717         * tree-cfg.c (group_case_labels): Deal with missing default label.
21718         (tree_verify_flow_info): Allow missing default label.
21719         * stmt.c (emit_case_bit_tests): Deal with NULL default_label.
21720         (emit_case_nodes): Likewise.
21721         (expand_case): Do not rely on the default label to be present.
21722         * expr.c (try_casesi): Deal with NULL default_label.
21723         (do_tablejump): Likewise.
21724
21725 2008-04-02  Richard Guenther  <rguenther@suse.de>
21726
21727         PR tree-optimization/14495
21728         * tree-vrp.c (vrp_visit_cond_stmt): Do not handle
21729         SWITCH_EXPR here ...
21730         (vrp_visit_switch_stmt): ... but here (new function).
21731         (find_case_label_index): New helper function.
21732         (vrp_visit_stmt): Dispatch to vrp_visit_switch_stmt.
21733
21734 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
21735
21736         * fwprop.c: Fix ISO-C99ism.
21737
21738 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
21739
21740         PR bootstrap/35752
21741         * Makefile.in (objdir): Set it here.
21742         * configure.ac: Not here.  Find dynamic linker characteristics.
21743         * exec-tool.in: Use them.
21744         * aclocal.m4: Regenerate.
21745         * configure: Regenerate.
21746
21747 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
21748
21749         * expr.c (expand_var): Delete it.
21750         * expr.h (expand_var): Delete prototype.
21751         * function.c (expand_function_start): Use expand_decl instead.
21752         * cfgexpand.c (expand_one_static_var, expand_one_var): Don't call
21753         langhook.
21754
21755 2008-04-02  Andy Hutchinson <hutchinsonamdy@aim.com>
21756
21757         PR rtl-optimization/35542
21758         * fwprop.c (forward_propagate_and_simplify): Replace
21759         loc_reg_mentioned_in_p with reg_mentioned_p.
21760
21761 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
21762
21763         PR rtl-optimization/35281
21764         * fwprop.c (PR_CAN_APPEAR, PR_HANDLE_MEM): New.
21765         (propagate_rtx_1): Handle PR_HANDLE_MEM.
21766         (propagate_rtx): Pass PR_HANDLE_MEM if appropriate.
21767         (varying_mem_p): Move above propagate_rtx.
21768         (all_uses_available_at): Do not check MEMs.
21769
21770 2008-04-02  Rafael Espíndola  <espindola@google.com>
21771
21772         * tree-vrp.c (extract_code_and_val_from_cond): Remove.
21773         (register_edge_assert_for_2): Split the cond argument.
21774         (register_edge_assert_for_1): Adjust for the change in
21775         register_edge_assert_for_2.
21776         (register_edge_assert_for): Split the cond argument.
21777         (find_switch_asserts): Adjust for the change in
21778         register_edge_assert_for.
21779
21780 2008-04-02  Kai Tietz  <kai.tietz@onevision.com>
21781
21782         * config.gcc: Add for x86_64-*-mingw* the t-crtfm to tbuild.
21783         * config/i386/cygming.h (ASM_OUTPUT_DWARF_OFFSET): Add 8 byte
21784         offsets for 64-bit mingw.
21785         * config/i386/i386.c (ix86_pass_by_reference): Correct calling
21786         abi for x86_64-pc-mingw.
21787
21788 2008-04-02  Richard Guenther  <rguenther@suse.de>
21789
21790         * tree-vrp.c (extract_range_from_assert): Make sure to not
21791         produce range min/max with TREE_OVERFOW set.
21792         If merging a anti-range and a range keep the anti-range if
21793         the range covers all values of the type.
21794         (register_edge_assert_for_2): Only allow sign-changing
21795         conversions in detecting canonical range checks.  Also
21796         register an assert for the unsigned name if useful.
21797
21798         PR tree-optimization/35787
21799         * tree-vrp.c (vrp_val_max): New function.
21800         (vrp_val_min): Likewise.
21801         (vrp_val_is_max): Move earlier, use vrp_val_{min,max}.
21802         (vrp_val_is_min): Likewise.
21803         (supports_overflow_infinity): Use vrp_val_{min,max}.
21804         (negative_overflow_infinity): Likewise.
21805         (positive_overflow_infinity): Likewise.
21806         (is_negative_overflow_infinity): Use vrp_val_is_{min,max}.
21807         (is_positive_overflow_infinity): Likewise.
21808         (is_overflow_infinity): Likewise.
21809         (avoid_overflow_infinity): Use vrp_val_{min,max} and
21810         vrp_val_is_{min,max}.
21811         (set_and_canonicalize_value_range): Canonicalize anti-ranges
21812         to ranges if possible.  Avoid empty ranges.
21813
21814 2008-04-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
21815
21816         PR middle-end/35705
21817         * fold-const.c (get_pointer_modulus_and_residue): Return modulus 1 if
21818         the expression is a function address.
21819
21820 2008-04-01  George Helffrich  <george@gcc.gnu.org>
21821
21822         PR fortran/35154, fortran/23057
21823         * dbxout.c: Emit .stabs debug info for Fortran COMMON block
21824         variables as base symbol name + offset using N_BCOMM/N_ECOMM.
21825         (is_fortran, dbxout_common_name, dbxout_common_check): New functions.
21826         (dbxout_symbol_location): Transform N_LCSYM to N_GSYM for storage
21827         in common.
21828         (dbxout_syms): Check for COMMON-based symbol and wrap in
21829         N_BCOMM/N_ECOMM stab bracket, including as many symbols as possible
21830         in bracket for efficiency.
21831
21832         * dwarf2out.c: Emit DWARF debug info for Fortran COMMON block
21833         using DW_TAG_common_block + member offset.
21834         (add_pubname_string): New function.
21835         (dw_expand_expr): New function to find block name and offset for
21836         COMMON var.
21837         (common_check): New function to check whether symbol in Fortran COMMON.
21838         (gen_variable_die): If COMMON, use DW_TAG_common_block.
21839
21840 2008-04-01  Volker Reichelt  <v.reichelt@netcologne.de>
21841
21842         PR c/35436
21843         * c-format.c (init_dynamic_gfc_info): Ignore invalid locus type.
21844
21845 2008-04-02  Ben Elliston  <bje@au.ibm.com>
21846
21847         * config/v850/v850.md (casesi): Remove if (0) code.
21848         * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Likewise.
21849         * config/alpha/alpha.c (alpha_initialize_trampoline): Likewise.
21850
21851 2008-04-01  Uros Bizjak  <ubizjak@gmail.com>
21852
21853         * config/i386/i386.md (rex64suffix): New mode attribute.
21854         (floathi<mode>2): Disable expander for SSE math.
21855         (*floathi<mode>2_1): New insn insn_and_split pattern.
21856         (*floathi<mode>2_i387_with_temp): New macroized instruction pattern and
21857         corresponding post-reload splitters.
21858         (*floathi<mode>2_i387): New macroized insn pattern.
21859         (float<SSEMODEI24:mode><X87MODEF:mode>2): New macroized expander.
21860         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1): New macroized
21861         insn_and_split pattern.
21862         (*floatsi<mode>2_vector_mixed_with_temp, *floatsi<mode>2_vector_mixed):
21863         New macroized instruction patterns and corresponding post-reload
21864         splitters.
21865         (*floatsi<mode>2_mixed_with_temp): New macroized instruction pattern
21866         and corresponding post-reload splitters.
21867         (*floatsi<mode>2_mixed_interunit, *floatsi<mode>2_mixed_nointerunit):
21868         New macroized instruction patterns.
21869         (*floatsi<mode>2_vector_sse_with_temp, *floatsi<mode>2_vector_sse): New
21870         macroized instruction patterns and corresponding post-reload splitters.
21871         (*floatsi<mode>2_sse_with_temp): New macroized instruction pattern and
21872         corresponding post-reload splitters.
21873         (*floatsi<mode>2_sse_interunit, *floatsi<mode>2_mixed_nointerunit):
21874         New macroized instruction patterns.
21875         (*floatsi<mode>2_i387_with_temp): New macroized instruction pattern and
21876         corresponding post-reload splitters.
21877         (*floatsi<mode>2_i387): New macroized instruction patterns.
21878
21879 2008-04-01  H.J. Lu  <hongjiu.lu@intel.com>
21880
21881         * config/i386/i386.md (smaxmin): New.
21882         (umaxmin): Likewise.
21883         (maxminiprefix): Likewise.
21884         (maxminfprefix): Likewise.
21885         (<code><mode>3): Likewise.
21886         (smin<mode>3): Removed.
21887         (smax<mode>3): Likewise.
21888
21889         * config/i386/mmx.md (mmx_<code>v2sf3): New.
21890         (mmx_<code>v4hi3): Likewise.
21891         (mmx_<code>v8qi3): Likewise.
21892         (mmx_smaxv2sf3): Removed.
21893         (mmx_sminv2sf3): Likewise.
21894         (mmx_umaxv8qi3): Likewise.
21895         (mmx_smaxv4hi3): Likewise.
21896         (mmx_uminv8qi3): Likewise.
21897         (mmx_sminv4hi3): Likewise.
21898
21899         * config/i386/sse.md (<addsub><mode>3): New.
21900         (*<addsub><mode>3): Likewise.
21901         (<sse>_vm<addsub><mode>3): Likewise.
21902         (<maxmin><mode>3): Likewise.
21903         (*<maxmin><mode>3_finite): Likewise.
21904         (*<maxmin><mode>3): Likewise.
21905         (<sse>_vm<maxmin><mode>3): Likewise.
21906         (sse3_h<addsub>v4sf3): Likewise.
21907         (sse3_h<addsub>v2df3): Likewise.
21908         (<maxmin>v16qi3): Likewise.
21909         (*<maxmin>v16qi3): Likewise.
21910         (<maxmin>v8hi3): Likewise.
21911         (*<maxmin>v8hi3): Likewise.
21912         (*sse4_1_<maxmin><mode>3): Likewise.
21913         (*sse4_1_<maxmin><mode>3): Likewise.
21914         (add<mode>3): Removed.
21915         (*add<mode>3): Likewise.
21916         (<sse>_vmadd<mode>3): Likewise.
21917         (sub<mode>3): Likewise.
21918         (*sub<mode>3): Likewise.
21919         (<sse>_vmsub<mode>3): Likewise.
21920         (smin<mode>3): Likewise.
21921         (*smin<mode>3_finite): Likewise.
21922         (*smin<mode>3): Likewise.
21923         (<sse>_vmsmin<mode>3): Likewise.
21924         (smax<mode>3): Likewise.
21925         (*smax<mode>3_finite): Likewise.
21926         (*smax<mode>3): Likewise.
21927         (<sse>_vmsmax<mode>3): Likewise.
21928         (sse3_haddv4sf3): Likewise.
21929         (sse3_haddv2df3): Likewise.
21930         (sse3_hsubv4sf3): Likewise.
21931         (sse3_hsubv2df3): Likewise.
21932         (umaxv16qi3): Likewise.
21933         (*umaxv16qi3): Likewise.
21934         (smaxv8hi3): Likewise.
21935         (*smaxv8hi3): Likewise.
21936         (*sse4_1_smax<mode>3): Likewise.
21937         (*sse4_1_umax<mode>3): Likewise.
21938         (uminv16qi3): Likewise.
21939         (*uminv16qi3): Likewise.
21940         (sminv8hi3): Likewise.
21941         (*sminv8hi3): Likewise.
21942         (*sse4_1_smin<mode>3): Likewise.
21943         (*sse4_1_umin<mode>3): Likewise.
21944
21945 2008-04-01  Rafael Espíndola  <espindola@google.com>
21946
21947         * tree-cfg.c (verify_expr): remove in_phi.
21948         (verify_stmt): Don't call walk_tree with verify_expr. Use
21949         is_gimple_min_invariant instead of is_gimple_val.
21950
21951 2008-04-01  Joseph Myers  <joseph@codesourcery.com>
21952
21953         * doc/include/gpl_v3.texi: Update for manpage generation.
21954         * doc/gcc.texi, doc/gccint.texi: Include gpl_v3.texi instead of
21955         gpl.texi.
21956         * doc/sourcebuild.texi: Document gpl_v3.texi as well as gpl.texi.
21957         * Makefile.in (TEXI_GCC_FILES, TEXI_GCCINT_FILES): Include
21958         gpl_v3.texi instead of gpl.texi.
21959         (gpl.pod): New.
21960
21961 2008-04-01  Jakub Jelinek  <jakub@redhat.com>
21962
21963         PR pch/13675
21964         * c-pch.c (c_common_read_pch): On error close (fd) resp. fclose (f).
21965
21966 2008-04-01  Rafael Espíndola  <espindola@google.com>
21967
21968         * tree-vrp.c (extract_code_and_val_from_cond_with_ops): New.
21969         (extract_code_and_val_from_cond): Use
21970         extract_code_and_val_from_cond_with_ops.
21971
21972 2008-04-01  Jan Hubicka  <jh@suse.cz>
21973
21974         * function.c (free_after_compilation): Free epilogue_delay_list.
21975         (prepare_function_start): Assert that previous compilation was freed.
21976
21977 2008-04-01  Jan Hubicka  <jh@suse.cz>
21978             Jim Wilson  <wilson@tuliptree.org>
21979             Andreas Tobler <andreast@gcc.gnu.org>
21980
21981         PR middle-end/35781
21982         * m32c/m32.c (m32c_leaf_function_p, m32c_function_needs_enter): Use
21983         rtl.emit instead cfun->emit.
21984         * sparc/sparc.h (INIT_EXPANDERS): Likewise.
21985         * ia64/ia64.h (INIT_EXPANDERS): Likewise.
21986
21987 2008-04-01  Ben Elliston  <bje@au.ibm.com>
21988
21989         * doc/c-tree.texi (Function Basics): Fix grammatical error.
21990
21991 2008-03-31  Seongbae Park <seongbae.park@gmail.com>
21992
21993         * common.opt (fprofile-dir=, fprofile-use=, fprofile-generate=):
21994         New options
21995         (fprofile-use): Add var flag_profile_use
21996         * coverage.c (coverage_begin_output): Do not open a gcno file for
21997         output only if -ftest-coverage is set.
21998         Do not add getpwd() to gcda file path.
21999         (build_gcov_info): Check the new flag
22000         flag_profile_datafile_relative_path.
22001         (coverage_init): Use profile_data_prefix.
22002         Read profile counter only if flag_profile_use is set.
22003         * opts.c (common_handle_option): New option fprofile-use=,
22004         fprofile-dir=, fprofile-generate=.
22005         * toplev.c (profile_data_prefix): New variable definition.
22006         * toplev.h (profile_data_prefix): New declaration.
22007         * doc/invoke.tex (Option Summary, Optimization Options):
22008         Add new options.
22009
22010 2008-03-31  James E. Wilson  <wilson@tuliptree.org>
22011
22012         * varasm.c (output_constant_pool_1): In LABEL_REF check,
22013         use tmp consistently.
22014
22015         PR target/35695
22016         * config/ia64/div.md (recip_approx_rf): Use UNSPEC not DIV.
22017         * config/ia64/ia64.c (rtx_needs_barrier): Handle
22018         UNSPEC_FR_RECIP_APPROX_RES.
22019         * config/ia64/ia64.md (UNSPEC_FR_RECIP_APPROX_RES): Define.
22020
22021 2008-03-31  Volker Reichelt  <v.reichelt@netcologne.de>
22022
22023         PR c/35750
22024         * c-decl.c (store_parm_decls_oldstyle): Skip invalid parameters.
22025
22026 2008-03-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
22027
22028         PR middle-end/30186
22029         * fold-const.c (fold_indirect_ref_1): Support accessing non first
22030         element of the vector via a pointer.
22031
22032 2008-03-31  Ian Lance Taylor  <iant@google.com>
22033
22034         * tlink.c (scan_linker_output): Look for symbol name in single quotes.
22035
22036 2008-03-31  Jan Hubicka  <jh@suse.cz>
22037
22038         * builtins.c (expand_builtin_setjmp_receiver): Update call of
22039         get_arg_pointer_save_area.
22040         * expr.c (init_expr): Just clear out rtl.expr.
22041         * function.c (free_after_compilation): Clear out whole RTL structure.
22042         (get_func_frame_size): Merge into ...
22043         (get_frame_size): ... this one.
22044         (assign_stack_local_1): Merge into ...
22045         (assign_stack_local): ... this one.
22046         (expand_function_end): Update call of get_arg_pointer_save_area.
22047         (get_art_pointer_save_area): Remove cfun argument.
22048         * function.h (emit_status): regno_pointer_align does not need length
22049         attribute. Move x_regno_reg_rtx to ...
22050         (regno_reg_rtx): ... new global array.
22051         (reg_rtx_no, seq_stack, REGNO_POINTER_ALIGN): Update accestors.
22052         (pending_stack_adjust, inhibit_defer_pop, saveregs_value,
22053         apply_args_value, forced_labels, stack_pointer_delta):
22054         Update accestors.
22055         (struct varasm_status): Move here from varasm.c
22056         (struct rtl_data): New. Move here some fields from struct function.
22057         (return_label, naked_return_label, stack_slot_list, parm_birth_insn,
22058         frame_offset, stack_check_probe_note, arg_pointer_save_area,
22059         used_temp_slots avail_temp_slots, temp_slot_level,
22060         nonlocal_goto_handler_labels): Update accesstors.
22061         (rtl): New global variable.
22062         (struct function): Move some fileds to rtl_data.
22063         (get_arg_pointer_save_area): Update prototype.
22064         * emit-rtl.c (rtl): Declare.
22065         (regno_reg_rtx): Declare.
22066         (first_insn, last_insn, cur_insn_uid, last_location, first_label_num):
22067         Update.
22068         (gen_reg_rtx): Update.
22069         (init_virtual_regs): Do not tate emit_status argument.
22070         (init_emit): Do not allocate emit.
22071         * varasm.c (varasm_statuc): Move to function.h.
22072         (n_deferred_constatns): Update accestor.
22073         (init_varasm_status): Do not allocate varasm_status.
22074         (force_const_mem, get_pool_size, output_constant_pool): Update.
22075         * stmt.c (force_label_rtx): Do not use x_ prefixes.
22076         (expand_nl_goto_receiver): Update get_arg_pointer_save_area.
22077
22078 2008-03-31  Zdenek Dvorak  <ook@ucw.cz>
22079
22080         PR rtl-optimization/35729
22081         * loop-invariant.c (check_maybe_invariant): Disallow volatile memory
22082         references.
22083
22084 2008-03-31  H.J. Lu  <hongjiu.lu@intel.com>
22085
22086         PR target/32000
22087         * config/i386/i386.md (*movti_internal): Emit unaligned SSE
22088         load/store if memory is unaligned.
22089         (*movti_rex64): Likewise.
22090
22091         * config/i386/predicates.md (misaligned_operand): New.
22092
22093 2008-03-31  Andrew Pinski  <pinskia@gmail.com>
22094
22095         PR tree-opt/35431
22096         * tree-ssa-phiopt.c (conditional_replacement): Return early for
22097         complex types.
22098
22099 2008-03-31  Jan Beulich  <jbeulich@novell.com>
22100
22101         * config/ia64/constraints.md: Add 'j' constraint.
22102         * config/ia64/ia64.md (movsi_internal): Add addp4 case.
22103         (movdi_internal): Likewise.
22104
22105 2008-03-30  Volker Reichelt  <v.reichelt@netcologne.de>
22106
22107         PR c/35748
22108         * c-typeck.c (build_c_cast): Skip invalid fields in unions.
22109
22110 2008-03-30  H.J. Lu  <hongjiu.lu@intel.com>
22111
22112         PR target/35757
22113         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Issue
22114         proper error message for the third argument on blendpd and
22115         blendps.
22116
22117         * config/i386/sse.md (blendbits): New.
22118         (sse4_1_blendp<ssemodesuffixf2c>): Use it.
22119
22120 2008-03-30  Eric Botcazou  <ebotcazou@adacore.com>
22121
22122         * fold-const.c (fold_binary) <BIT_IOR_EXPR>: Add missing conversions.
22123
22124 2008-03-30  Richard Guenther  <rguenther@suse.de>
22125
22126         PR middle-end/31023
22127         * fold-const.c (fold_sign_changed_comparison): Do leave
22128         conversions to base-types alone.
22129
22130 2008-03-29  Andrew Pinski  <andrew_pinski@playstation.sony.com>
22131
22132         * config/rs6000/rs6000.c (rs6000_stack_info): Don't force saving of
22133         the link register if one altivec register is be saved.
22134
22135 2008-03-30  Ben Elliston  <bje@au.ibm.com>
22136
22137         * final.c (final_scan_insn): Remove if (0) code.
22138
22139 2008-03-28  Volker Reichelt  <v.reichelt@netcologne.de>
22140
22141         * c-parser.c (c_parser_next_token_is_keyword): Simplify.
22142
22143 2008-03-28  H.J. Lu  <hongjiu.lu@intel.com>
22144
22145         * config/i386/sse.md (*and<mode>3): Pass <MODE>mode instead
22146         of V4SFmode to ix86_binary_operator_ok.
22147
22148 2008-03-28  Uros Bizjak  <ubizjak@gmail.com>
22149
22150         * config/i386/i386.c (override_options): Initialize
22151         ix86_veclib_handler to ix86_veclibabi_svml when
22152         -mveclibabi=svml is used.
22153         (ix86_veclibabi_svml): New function for SVML ABI style
22154         vectorization support.
22155         * doc/invoke.texi (-mveclibabi) [svml]: Document new target option.
22156
22157 2008-03-28  Rafael Espíndola  <espindola@google.com>
22158
22159         * fold-const.c (tree_unary_nonnegative_warnv_p): Make it public.
22160         (tree_binary_nonnegative_warnv_p): Make it public.
22161         (tree_single_nonnegative_warnv_p): Make it public.
22162         (tree_invalid_nonnegative_warnv_p): Make it public.
22163         (tree_unary_nonzero_warnv_p): Make it public.
22164         (tree_binary_nonzero_warnv_p): Make it public
22165         (tree_single_nonzero_warnv_p): Make it public.
22166         * tree-vrp.c (vrp_evaluate_conditional_warnv_with_ops): New function.
22167         (extract_range_from_binary_expr): Split the expr argument.
22168         (extract_range_from_unary_expr): Split the expr argument.
22169         (extract_range_from_comparison): Split the expr argument.
22170         (extract_range_from_expr): Use the new aux functions.
22171         (vrp_evaluate_conditional_warnv): Use
22172         vrp_evaluate_conditional_warnv_with_ops.
22173         * tree.h (tree_unary_nonzero_warnv_p): Declare.
22174         (tree_binary_nonzero_warnv_p): Declare.
22175         (tree_single_nonzero_warnv_p): Declare.
22176         (tree_expr_nonzero_warnv_p): Declare.
22177         (tree_unary_nonnegative_warnv_p): Declare.
22178         (tree_binary_nonnegative_warnv_p): Declare.
22179         (tree_single_nonnegative_warnv_p): Declare.
22180         (tree_invalid_nonnegative_warnv_p): Declare.
22181
22182 2008-03-28  Richard Guenther  <rguenther@suse.de>
22183
22184         PR tree-optimization/30317
22185         PR tree-optimization/30911
22186         PR tree-optimization/34793
22187         * tree-vrp.c (set_and_canonicalize_value_range): New function.
22188         (struct assert_locus_d): New member EXPR.
22189         (register_new_assert_for): Add EXPR parameter to support
22190         ASSERT_EXPR <name, expr OP limit>.
22191         (register_edge_assert_for_1): Adjust callers.
22192         (find_assert_locations): Likewise.
22193         (process_assert_insertions_for): Build condition from expression.
22194         (extract_range_from_assert): Handle ASSERT_EXPRs
22195         of the form ASSERT_EXPR <name, expr OP limit>.
22196         (register_edge_assert_for_2): New helper registering
22197         asserts for comparisons.  Recognize range tests of the form
22198         (unsigned)i - CST1 OP CST2.
22199         (register_edge_assert_for_1): Use it.
22200         (register_edge_assert_for): Likewise.
22201         (needs_overflow_infinity): Integer sub-types
22202         do not need overflow infinities.
22203         (vrp_val_is_max): The extreme values of integer sub-types
22204         are those of the base type.
22205         (vrp_val_is_min): Likewise.
22206         * tree.def (ASSERT_EXPR): Document extra allowed conditional
22207         expressions.
22208
22209 2008-03-28  Nick Clifton  <nickc@redhat.com>
22210
22211         PR target/31110
22212         * config/mn10300/mn10300.c (mn10300_secondary_reload_class):
22213         Return GENERAL_REGS for stack adjustment reloads.
22214
22215 2008-03-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
22216
22217         PR target/31334
22218         * config/rs6000/rs6000.c (rs6000_expand_vector_init): Create a
22219         const_vector when all the vectors are constant.
22220
22221 2008-03-27  Bob Wilson  <bob.wilson@acm.org>
22222
22223         * config/xtensa/xtensa.c (gen_float_relational): Handle unordered
22224         comparisons.
22225         * config/xtensa/xtensa.md (any_cond): Add unordered comparisons.
22226         (any_scc_sf): Add uneq, unlt, unle and unordered operators.
22227         (scc_sf): New.
22228         (s<code>_sf): Use new scc_sf attribute for opcode names.
22229
22230 2008-03-27  Tom Tromey  <tromey@redhat.com>
22231
22232         * doc/sourcebuild.texi, doc/install.texi, configure, aclocal.m4,
22233         configure.ac, Makefile.in, config/t-darwin, config/m32c/t-m32c,
22234         config/spu/t-spu-elf, config/i386/t-interix,
22235         config/i386/t-cygming, config/i386/x-i386, config/i386/t-cygwin,
22236         config/i386/x-darwin, config/i386/x-mingw32,
22237         config/i386/t-netware, config/i386/x-cygwin, config/i386/t-nwld,
22238         config/sh/t-sh, config/sh/t-symbian, config/x-linux,
22239         config/t-sol2, config/x-hpux, config/x-darwin, config/ia64/t-ia64,
22240         config/x-solaris, config/t-vxworks, config/m68k/t-uclinux,
22241         config/rs6000/x-rs6000, config/rs6000/x-darwin64,
22242         config/rs6000/x-darwin, config/rs6000/t-rs6000,
22243         config/score/t-score-elf, config/arm/t-strongarm-pe,
22244         config/arm/t-pe, config/arm/t-arm, config/arm/t-wince-pe,
22245         config/v850/t-v850, config/v850/t-v850e, config/bfin/t-bfin-linux:
22246         Revert automatic dependency patch.
22247
22248 2008-03-27  H.J. Lu  <hongjiu.lu@intel.com>
22249
22250         PR target/35657
22251         * config/i386/i386.c (ix86_function_arg_boundary): Align
22252         decimal floating point to its natural boundary.
22253
22254 2008-03-27  Richard Guenther  <rguenther@suse.de>
22255
22256         PR middle-end/35716
22257         * fold-const.c (fold_comparison): Restrict distinct decl
22258         comparison folding to VAR_DECLs and PARM_DECLs.  Do not
22259         solely rely on operand_equal_p.
22260
22261 2008-03-27  Richard Guenther  <rguenther@suse.de>
22262
22263         PR c/32511
22264         * c-common.c (handle_weak_attribute): Reject combination of
22265         weak and inline.
22266
22267 2008-03-27  Richard Guenther  <rguenther@suse.de>
22268
22269         PR tree-optimization/32810
22270         * tree-ssa-ccp.c (get_symbol_constant_value): Strip useless
22271         conversions from DECL_INITIAL.
22272         (fold_const_aggregate_ref): Likewise from constructor elements.
22273
22274 2008-03-27  Zdenek Dvorak  <ook@ucw.cz>
22275
22276         * tree-affine.h (aff_combination_expand): Declare.
22277         (get_inner_reference_aff): Likewise.
22278         * tree-affine.c (aff_combination_expand): Split out from
22279         tree_to_aff_combination_expand.
22280         (get_inner_reference_aff): New function.
22281         * tree-parloops.c (loop_parallel_p): Free vectorizer info.
22282         * tree-ssa-loop-im.c: Include tree-affine.h and pointer-set.h.
22283         (struct lim_aux_data): sm_done field removed.
22284         (mem_ref_loc_p, mem_ref_locs_p): New types.
22285         (struct mem_ref): Added id, stored, accesses_in_loop,
22286         indep_loop, dep_loop, indep_ref, dep_ref fields.
22287         Removed is_stored, locs and next fields.
22288         (memory_accesses): New variable.
22289         (movement_possibility): Do not allow moving statements
22290         that store to memory.
22291         (outermost_indep_loop, simple_mem_ref_in_stmt, mem_ref_in_stmt):
22292         New functions.
22293         (determine_max_movement): For statements with memory references,
22294         find the outermost loop in that the reference is independent.
22295         (move_computations_stmt): Mark the virtual operands for renaming.
22296         (memref_free, mem_ref_alloc, mem_ref_locs_alloc, mark_ref_stored,
22297         gather_mem_refs_stmt, gather_mem_refs_in_loops, vtoe_hash, vtoe_eq,
22298         vtoe_free, record_vop_access, get_vop_accesses, get_vop_stores,
22299         add_vop_ref_mapping, create_vop_ref_mapping_loop,
22300         create_vop_ref_mapping, analyze_memory_references,
22301         cannot_overlap_p, mem_refs_may_alias_p, rewrite_mem_ref_loc,
22302         get_all_locs_in_loop, ref_always_accessed_p,
22303         refs_independent_p, record_indep_loop, ref_indep_loop_p_1,
22304         ref_indep_loop_p, can_sm_ref_p, find_refs_for_sm,
22305         store_motion_loop, store_motion): New functions.
22306         (struct vop_to_refs_elt): New type.
22307         (record_mem_ref_loc, free_mem_ref_locs, rewrite_mem_refs,
22308         memref_hash, memref_eq, hoist_memory_references): Rewritten.
22309         (schedule_sm): Replaced by...
22310         (execute_sm): ... this.
22311         (determine_lsm_ref, hoist_memory_references,
22312         loop_suitable_for_sm, gather_mem_refs_stmt, gather_mem_refs,
22313         find_more_ref_vops, free_mem_ref, free_mem_refs,
22314         determine_lsm_loop, determine_lsm): Removed.
22315         (tree_ssa_lim_finalize): Free data structures used by store motion.
22316         (tree_ssa_lim): Call analyze_memory_references.  Use
22317         store_motion instead of determine_lsm.
22318
22319 2008-03-27  Paolo Bonzini  <bonzini@gnu.org>
22320
22321         * config.cc (m68hc11, m6811, m68hc12, m6812): Add usegas.h,
22322         rename tmake_file to m68hc11/t-m68hc11.
22323         (mcore): Set inhibit_libc to true.
22324         * config.host (alpha*-dec-*vms*): Set extra_programs.
22325         (interix3*): Don't use host_xmake_file.
22326         * configure.ac: Let config.gcc override inhibit_libc.
22327         * configure: Regenerate.
22328
22329         * config/alpha/x-vms (EXTRA_PROGRAMS): Remove.
22330         * config/t-openbsd-thread: Remove commented out lines.
22331
22332         * config/x-interix: Remove.
22333
22334         * config/m68hc11/t-m68hc11-gas: Rename to...
22335         * config/m68hc11/t-m68hc11: ... this.  Remove T_CPPFLAGS.
22336
22337         * config/mcore/t-mcore: Remove T_CFLAGS.
22338         * config/mcore/t-mcore-pe: Likewise.
22339
22340 2008-03-27  Paolo Bonzini  <bonzini@gnu.org>
22341
22342         * configure.ac: Replace custom __GNU_SOURCE test with
22343         AC_USE_SYSTEM_EXTENSIONS.  Move it earlier.
22344         * aclocal.m4: Regenerate.
22345         * configure: Regenerate.
22346         * config.in: Regenerate.
22347
22348 2008-03-27  Richard Guenther  <rguenther@suse.de>
22349
22350         * fold-const.c (target.h): Include.
22351         (fold_comparison): Fold comparison of addresses of decls
22352         that bind locally or of constants.  Consolidate address folding code.
22353         * tree-vrp.c (operand_less_p): Deal with non-INTEGER_CST
22354         results from fold_binary_to_constant.
22355         (compare_values_warnv): Likewise.
22356
22357 2008-03-27  Andrew Pinski  <pinskia@gmail.com>
22358
22359         PR middle-end/35429
22360         * fold-const.c (fold_truthop): Check for integeral types when folding
22361         a == 0 && b == 0 and a != 0 || b != 0 .
22362
22363 2008-03-26  Eric Botcazou  <ebotcazou@adacore.com>
22364
22365         * tree.c (get_unwidened): Remove code fiddling with COMPONENT_REF.
22366
22367 2008-03-26  Andreas Schwab  <schwab@suse.de>
22368
22369         * doc/invoke.texi: Fix use of @item vs. @itemx.
22370
22371 2008-03-26  Tom Tromey  <tromey@redhat.com>
22372
22373         * Makefile.in (build/gensupport.o, build/print-rtl.o,
22374         build/read-rtl.o, build/rtl.o, build/gencondmd.o, build/genattr.o,
22375         build/genattrtab.o, build/genautomata.o, build/gencheck.o,
22376         build/gencodes.o, build/genconditions.o, build/genconfig.o,
22377         build/genconstants.o, build/genemit.o, build/genextract.o,
22378         build/genflags.o, build/genmddeps.o, build/genopinit.o,
22379         build/genoutput.o, build/genpeep.o, build/genrecog.o): Depend on
22380         options.h.
22381
22382 2008-03-26  Richard Guenther  <rguenther@suse.de>
22383
22384         Revert
22385         2008-03-26  Richard Guenther  <rguenther@suse.de>
22386
22387         * fold-const.c (target.h): Include.
22388         (fold_comparison): Fold comparison of addresses of two decls
22389         that bind locally.  Consolidate address folding code.
22390
22391 2008-03-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
22392
22393         * builtins.c (expand_builtin_pow, fold_builtin_cabs,
22394         fold_builtin_sqrt, fold_builtin_cbrt, fold_builtin_logarithm,
22395         fold_builtin_hypot, fold_builtin_pow): Remove uses of dconst3,
22396         dconstsqrt2, dconstthird, dconste and/or dconst10.
22397         * config/i386/i386.c (ix86_emit_swsqrtsf): Likewise.
22398         * emit-rtl.c (dconst3, dconst10, dconstm2, dconstthird,
22399         dconstsqrt2, dconste): Delete.
22400         (init_emit_once): Likewise.  Simplify initializing dconstm1.
22401         Constify variable.
22402         * real.c (get_real_const): New.
22403         * real.h (dconst3, dconst10, dconstm2, dconstthird,
22404         dconstsqrt2, dconste): Delete.
22405         (real_value_const, get_real_const): New.
22406
22407 2008-03-26  H.J. Lu  <hongjiu.lu@intel.com>
22408
22409         * config/i386/cygming.h (BIGGEST_ALIGNMENT): Removed.
22410
22411         * config/i386/i386.c (ix86_function_arg_boundary): Check
22412         BIGGEST_ALIGNMENT instead of 128.
22413         (setup_incoming_varargs_64): Likewise.
22414
22415 2008-03-26  Tom Tromey  <tromey@redhat.com>
22416
22417         * Makefile.in (DEPFILES): Add missing '/'.
22418
22419 2008-03-26  Richard Guenther  <rguenther@suse.de>
22420
22421         * fold-const.c (target.h): Include.
22422         (fold_comparison): Fold comparison of addresses of two decls
22423         that bind locally.  Consolidate address folding code.
22424
22425 2008-03-26  Nick Clifton  <nickc@redhat.com>
22426
22427         PR target/31232
22428         * config/stormy16/stormy16.c (xstormy16_legitimate_address_p): Do
22429         not allow INT+INT as a legitimate addressing mode.
22430
22431 2008-03-26  Richard Guenther  <rguenther@suse.de>
22432
22433         * tree-flow.h (widen_bitfield): Remove declaration.
22434         * tree-ssa-ccp.c (visit_assignment): Remove unneeded code.
22435         (widen_bitfield): Remove function.
22436         * tree-ssa-dom.c (record_equivalences_from_stmt): Remove unneeded
22437         code.
22438
22439 2008-03-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
22440
22441         PR target/31558
22442         * config/rs6000/rs6000-c.c (rs6000_builtin_type_compatible): Handle
22443         error_mark_node's.
22444
22445 2008-03-25  Richard Sandiford  <rsandifo@nildram.co.uk>
22446
22447         PR rtl-optimization/35232
22448         * reload1.c (reg_reloaded_call_part_clobbered): Clarify comment.
22449         (forget_old_reloads_1, forget_marked_reloads): Don't clear
22450         reg_reloaded_call_part_clobbered here.
22451         (reload_regs_reach_end_p): New function.
22452         (reload_reg_rtx_for_input): New variable.
22453         (reload_reg_rtx_for_output): Likewise.
22454         (emit_input_reload_insns): Use reloadreg rather than rl->reg_rtx
22455         when reassigning a pseudo register.  Load reloadreg from
22456         reload_reg_rtx_for_input, moving the mode and register
22457         calculation to...
22458         (do_input_reload): ...here.  Use the mode-adjusted reg_rtx
22459         instead of the original when deciding whether an input reload
22460         would be a no-op or whether an output reload can be deleted.
22461         (emit_output_reload_insns): Use the mode-adjusted reg_rtx
22462         when setting up new_spill_reg_store.  Load it from
22463         reload_reg_rtx_for_output, moving the mode and register
22464         calculation to...
22465         (do_output_reload): ...here.  Use the mode-adjusted reg_rtx
22466         instead of the original when deciding whether an output reload
22467         would be a no-op.  Do the same when modifying insn notes.
22468         Use rtx_equal_p instead of == to compare the registers.
22469         (inherit_piecemeal_p): Take a mode and two register numbers
22470         as argument.
22471         (emit_reload_insns): Clear new_spill_reg_store for every hard
22472         register in the reload register.  Remove spill registers
22473         from reg_reloaded_valid before considering whether to record
22474         inheritance information for them.  Use reload_reg_rtx_for_output
22475         instead of reg_rtx when recording output reloads.  Use
22476         reload_reg_rtx_for_input instead of reg_rtx when recording
22477         input reloads.  Set or clear reg_reloaded_call_part_clobbered
22478         at the same time as setting reg_reloaded_valid.
22479         (delete_output_reload): Add a new_reload_reg parameter and use it
22480         instead of rld[j].reg_rtx.
22481         (emit_input_reload_insns, do_input_reload, do_output_reload): Adjust
22482         calls accordingly.
22483
22484 2008-03-25  Tom Tromey  <tromey@redhat.com>
22485
22486         * Makefile.in (build/gensupport.o): Depend on insn-modes.h.
22487         (build/genattr.o): Likewise.
22488         (build/genattrtab.o): Likewise.
22489         (build/gencodes.o): Likewise.
22490         (build/genconfig.o): Likewise.
22491         (build/genconstants.o): Likewise.
22492         (build/genemit.o): Likewise.
22493         (build/genextract.o): Likewise.
22494         (build/genflags.o): Likewise.
22495
22496 2008-03-25  Bob Wilson  <bob.wilson@acm.org>
22497
22498         * config/xtensa/xtensa.c (xtensa_va_start): Use build_int_cst
22499         instead of size_int for integer types.
22500         (xtensa_gimplify_va_arg_expr): Likewise.  Convert index to sizetype
22501         to match type of MINUS_EXPR.
22502
22503 2008-03-25  Tom Tromey  <tromey@redhat.com>
22504
22505         * configure: Rebuilt.
22506         * configure.ac (BUILD_DEPMODE): Extract CCDEPMODE from temporary
22507         Makefile.
22508
22509 2008-03-25  Tom Tromey  <tromey@redhat.com>
22510
22511         * config/x-solaris (host-solaris.o): Update.
22512         * config/x-linux (host-linux.o): Update.
22513         * config/x-hpux (host-hpux.o): Update.
22514         * config/x-darwin (host-darwin.o): Update.
22515         * config/v850/t-v850e (v850-c.o): Update.
22516         * config/v850/t-v850 (v850-c.o): Update.
22517         * config/t-vxworks (vxworks.o): Update.
22518         * config/t-sol2 (sol2-c.o, sol2.o): Update.
22519         * config/t-darwin (darwin.o, darwin-c.o, darwin-driver.o): Update.
22520         * config/spu/t-spu-elf (spu-c.o): Update.
22521         (spu.o): Remove.
22522         * config/sh/t-symbian (sh-c.o): Update.
22523         (symbian.o): Update.
22524         * config/sh/t-sh (sh-c.o): Update.
22525         * config/score/t-score-elf (score7.o, score3.o): Update.
22526         * config/rs6000/x-rs6000 (driver-rs6000.o): Update.
22527         * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Update.
22528         * config/rs6000/x-darwin (host-ppc-darwin.o): Update.
22529         * config/rs6000/t-rs6000 (rs6000-c.o): Update.
22530         (rs6000.o): Remove.
22531         * config/m68k/t-uclinux (generated_files): Add sysroot-suffix.h.
22532         * config/m32c/t-m32c (m32c-pragma.o): Update.
22533         * config/ia64/t-ia64 (ia64-c.o): Update.
22534         * config/i386/x-mingw32 (host-mingw32.o): Update.
22535         * config/i386/x-i386 (driver-i386.o): Update.
22536         * config/i386/x-darwin (host-i386-darwin.o): Update.
22537         * config/i386/x-cygwin (host-cygwin.o): Update.
22538         * config/i386/t-nwld (nwld.o): Update.
22539         * config/i386/t-netware (netware.o): Update.
22540         * config/i386/t-interix (winnt.o): Update.
22541         * config/i386/t-cygwin (cygwin1.o, cygwin2.o): Update.
22542         * config/i386/t-cygming (winnt.o, winnt-cxx.o, winnt-stubs.o,
22543         msformat-c.o): Update.
22544         * config/bfin/t-bfin-linux (generated_files): Add
22545         linux-sysroot-suffix.h.
22546         * config/arm/t-wince-pe (pe.o): Update.
22547         * config/arm/t-strongarm-pe (pe.o): Update.
22548         * config/arm/t-pe (pe.o): Update.
22549         * config/arm/t-arm (arm-c.o): Update.
22550         * doc/install.texi (Prerequisites): Require make 3.80.
22551         * Makefile.in: Remove .o targets.
22552         (CCDEPMODE, DEPDIR, depcomp, BUILD_DEPMODE): New variables.
22553         (OBSTACK_H, FIBHEAP_H, PARTITION_H, MD5_H, BCONFIG_H): Remove.
22554         (simple_generated_h, simple_generated_c): Move earlier.
22555         (generated_files): New variable.
22556         (TARGET_H, MACHMODE_H, HOOKS_H, HOSTHOOKS_DEF_H, LANGHOOKS_DEF_H,
22557         TARGET_DEF_H, RTL_BASE_H, RTL_H, PARAMS_H, BUILTINS_DEF, TREE_H,
22558         BASIC_BLOCK_H, GCOV_IO_H, COVERAGE_H, DEMANGLE_H, RECOG_H,
22559         ALIAS_H, EMIT_RTL_H, FLAGS_H, FUNCTION_H, EXPR_H, OPTABS_H,
22560         REGS_H, RA_H, RESOURCE_H, SCHED_INT_H, INTEGRATE_H, CFGLAYOUT_H,
22561         CFGLOOP_H, IPA_UTILS_H, IPA_REFERENCE_H, IPA_TYPE_ESCAPE_H,
22562         CGRAPH_H, DF_H, RESOURCE_H, DDG_H, GCC_H, GGC_H, TIMEVAR_H,
22563         INSN_ATTR_H, C_COMMON_H, C_PRAGMA_H, C_TREE_H, SYSTEM_H,
22564         PREDICT_H, DECNUM_H, MKDEPS_H, SYMTAB_H, TREE_DUMP_H,
22565         TREE_GIMPLE_H, TREE_FLOW_H, TREE_SSA_LIVE_H, PRETTY_PRINT_H,
22566         DIAGNOSTIC_H, C_PRETTY_PRINT_H, SCEV_H, LAMBDA_H, TREE_DATA_REF_H,
22567         VARRAY_H, TREE_INLINE_H, REAL_H, DBGCNT_H, EBIMAP_H): Remove.
22568         (.c.o): Remove.
22569         (COMPILE.base, COMPILE): New variables.
22570         (%.o): New pattern rule.
22571         (ALL_HOST_OBJS): New variable.
22572         (xgcc$(exeext), cpp$(exeext)): Remove extra version.o.
22573         (dummy-checksum.o, cc1-checksum.o): Remove.
22574         (DRIVER_SHLIB): New variable.
22575         (DRIVER_DEFINES): Use it.
22576         (gencondmd.c): Move out of build/.
22577         (s-conditions): Update.
22578         (BUILDCOMPILE.base, BUILDCOMPILE): New variables.
22579         (ALL_BUILD_OBJS): Likewise.
22580         (build/%.o): Use BUILDCOMPILE.
22581         (build/ggc-none.o, build/ggc-none.o, build/min-insn-modes.o,
22582         build/print-rtl.o, build/read-rtl.o, build/rtl.o, build/vec.o,
22583         build/gencondmd.o, build/genattrtab.o, build/genautomata.o,
22584         build/gencheck.o, build/gencodes.o, build/genconditions.o,
22585         build/genconfig.o, build/genconstants.o, build/genemit.o,
22586         build/genextract.o, build/genflags.o, build/genmddeps.o,
22587         build/genopinit.o, build/genoutput.o, build/genpeep.o,
22588         build/genpreds.o, build/genrecog.o, build/gcov-iov.o,
22589         build/gen-protos.o, build/scan.o, build/fix-header.o,
22590         build/scan-decls.o): Simplify.
22591         (collect2.o, c-opts.o, gcc.o, gccspec.o, gcc-options.o,
22592         cppdefault.o, protoize.o, unprotoize.o, intl.o, version.o,
22593         prefix.o, toplev.o): Reduce to variable setting.
22594         (libbackend.o): Use COMPILE.  Remove most dependencies.  Move later.
22595         ($(out_object_file), gcc-options.o): New targets.
22596         ($(ALL_HOST_OBJS)): New target.  Include dependency files.
22597         * configure: Rebuilt.
22598         * configure.ac: Call ZW_CREATE_DEPDIR, ZW_PROG_COMPILER_DEPENDENCIES.
22599         * doc/sourcebuild.texi (Front End Directory): Document new variable.
22600
22601 2008-03-25  Douglas Gregor  <doug.gregor@gmail.com>
22602
22603         * c-common.c (c_sizeof_or_alignof_type): If we're not allowed to
22604         complain when we hit an error, return ERROR_MARK_NODE.
22605
22606 2008-03-25  Naveen.H.S  <naveen.hs@kpitcummins.com>
22607
22608         * config/sh/constraints.md (Pso, Psz): New constraints.
22609         * config/sh/sh.c (print_operand): Add %V and %W operand codes.
22610         * config/sh/sh.md (*andsi3_bclr, *iorsi3_bset): New insns.
22611
22612 2008-03-25  Naveen.H.S  <naveen.hs@kpitcummins.com>
22613
22614         * config/sh/sh.c (sh_expand_t_scc): Emit movrt for SH2A if possible.
22615         * config/sh/sh.md (xorsi3_movrt, movrt): New insns.
22616
22617 2008-03-25  Naveen.H.S  <naveen.hs@kpitcummins.com>
22618
22619         * config/sh/sh.md (prefetch): Add condition for SH2A target.
22620         (prefetch_sh2a): New.
22621
22622 2008-03-25  Jayant Sonar  <Jayant.sonar@kpitcummins.com>
22623             Naveen.H.S  <naveen.hs@kpitcummins.com>
22624
22625         * config/sh/constraints.md (I28): New constraint.
22626         * config/sh/sh.c (broken_move): Add support for movi20s.
22627         * config/sh/sh.md (movsi_ie): Add the alternative for movi20s.
22628
22629 2008-03-25  Anil Paranjape  <anil.paranjape@kpitcummins.com>
22630             Jayant Sonar  <Jayant.sonar@kpitcummins.com>
22631             Naveen.H.S  <naveen.hs@kpitcummins.com>
22632
22633         * config/sh/sh.c (SH_ATTRIBUTES): Define.
22634         (SYMBOL_FLAG_FUNCVEC_FUNCTION): Define.
22635         (print_operand): Handle resbank in %@ operand code.
22636         (sh_encode_section_info): New.
22637         (push_regs): Add conditions for resbank.
22638         (sh_expand_epilogue): Likewise.
22639         (sh_insert_attributes): Likewise.
22640         (sh_attribute_table): Likewise.
22641         (sh_handle_resbank_handler_attribute): New.
22642         (sh2a_handle_function_vector_handler_attribute): New.
22643         (sh2a_is_function_vector_call): New.
22644         (sh2a_get_function_vector_number): New.
22645         (sh2a_function_vector_p): New.
22646         (sh_cfun_resbank_handler_p): New.
22647         * config/sh/sh.md (calli): Emit jsr/n if possible.
22648         (calli_tbr_rel): New.
22649         (calli_pcrel): Emit jsr/n if possible.
22650         (return_i): Emit rts/n if possible.
22651         (call_valuei_tbr_rel): New.
22652         (call_valuei_pcrel): Add condition for SH2A target.
22653         (call_value): Likewise.
22654         * config/sh/sh-protos.h (sh_cfun_resbank_handler_p): Declare.
22655         (sh2a_get_function_vector_number): Likewise.
22656         (sh2a_is_function_vector_call): Likewise.
22657         * doc/extend.texi: Document TBR relative addressing of SH2A.
22658         (resbank): Add description for SH2A.
22659
22660 2008-03-24  Richard Guenther  <rguenther@suse.de>
22661
22662         PR c/22371
22663         * gimplify.c (gimplify_modify_expr): For frontend type-correct
22664         pointer assignments change conversions according to middle-end rules.
22665         (gimplify_modify_expr_rhs): Deal with NULL TARGET_EXPR_INITIAL.
22666         * configure.ac: Include type checking in yes.
22667         * configure: Regenerate.
22668
22669 2008-03-24  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
22670
22671         * diagnostic.c (diagnostic_count_diagnostic): Delete.
22672         (diagnostic_report_diagnostic): Update. Handle ICEs here.
22673
22674 2008-03-24  Nathan Sidwell  <nathan@codesourcery.com>
22675
22676         * gthr-vxworks.h (UNUSED): Define.
22677
22678 2008-03-23  H.J. Lu  <hongjiu.lu@intel.com>
22679
22680         * config/i386/i386.h (STATIC_CHAIN_REGNUM): Use R10_REG and CX_REG.
22681
22682 2008-03-23  Zuxy Meng <zuxy.meng@gmail.com>
22683
22684         * doc/extend.texi (Function Attributes): Add missing comma in the
22685         example of the "alloc_size" attribute.
22686
22687 2008-03-23  Uros Bizjak  <ubizjak@gmail.com>
22688
22689         Revert:
22690         2008-03-05  H.J. Lu  <hongjiu.lu@intel.com>
22691
22692         * config/i386/i386-modes.def: Use 4 byte alignment on DI for
22693         32bit host.
22694
22695         2008-03-19  Uros Bizjak  <ubizjak@gmail.com>
22696
22697         PR target/35496
22698         * stor-layout.c (update_alignment_for_field): Set minimum alignment
22699         of the underlying type of a MS bitfield layout to the natural
22700         alignment of the type.
22701
22702         2008-03-22  Uros Bizjak  <ubizjak@gmail.com>
22703
22704         * config/i386/i386.c (assign_386_stack_local): Align DImode slots
22705         to their natural alignment to avoid store forwarding stalls.
22706
22707 2008-03-22  Richard Guenther  <rguenther@suse.de>
22708
22709         * tree-cfg.c (verify_expr): Recurse again for invariant addresses.
22710         For PHI nodes verify the address is invariant.
22711         * tree-ssa-ccp.c (ccp_decl_initial_min_invariant): Remove.
22712         (get_symbol_constant_value): Use is_gimple_min_invariant.
22713         (maybe_fold_stmt_indirect): Likewise.
22714
22715 2008-03-22  Richard Sandiford  <rsandifo@nildram.co.uk>
22716
22717         PR rtl-optimization/33927
22718         * Makefile.in (dse.o): Depend on $(TM_P_H).
22719         * expr.h (extract_low_bits): Declare.
22720         * expmed.c (extract_low_bits): New function.
22721         * rtlhooks.c (gen_lowpart_general): Generalize SUBREG handling.
22722         * dse.c: Include tm_p.h.
22723         (find_shift_sequence): Remove the read_reg argument and return the
22724         read value.  Emit the instructions instead of returning them.
22725         Iterate on new_mode rather than calculating it each time.
22726         Check MODES_TIEABLE_P.  Use simplify_gen_subreg to convert the
22727         source to NEW_MODE and extract_low_bits to convert the shifted
22728         value to READ_MODE.
22729         (replace_read): Allow the load and store to have different mode
22730         classes.  Use extract_low_bits when SHIFT == 0.  Create the shift
22731         or extraction instructions before trying the replacement.  Update
22732         dump-file code accordingly, avoiding use of REGNO (store_info->rhs).
22733
22734 2008-03-22  Uros Bizjak  <ubizjak@gmail.com>
22735
22736         * config/i386/i386.c (assign_386_stack_local): Align DImode slots
22737         to their natural alignment to avoid store forwarding stalls.
22738
22739 2008-03-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
22740
22741         PR target/27946
22742         * config/rs6000/rs6000.md (floatdidf2): Discouraging fprs and
22743         encouraging but not allowing gprs for input;
22744         change the input constraint to !f#r.
22745         (fix_truncdfdi2): Discouraging fprs and encouraging but not allowing
22746         gprs for output;
22747         change the output constraint to !f#r.
22748
22749 2008-03-21  Uros Bizjak  <ubizjak@gmail.com>
22750
22751         PR target/13958
22752         * config/i386/i386.md ("*floatunssi<mode2>_1"): New pattern with
22753         corresponding post-reload splitters.
22754         ("floatunssi<mode>2"): Expand to unsigned_float x87 insn pattern
22755         when x87 FP math is selected.
22756         * config/i386/i386-protos.h (ix86_expand_convert_uns_sixf_sse):
22757         New function prototype.
22758         * config/i386/i386.c (ix86_expand_convert_uns_sixf_sse): New
22759         unreachable function to ease macroization of insn patterns.
22760
22761 2008-03-21  Martin Jambor  <mjambor@suse.cz>
22762
22763         * tree-data-ref.c (dump_data_dependence_relation): Avoid data
22764         reference dumps if ddr is NULL or dependence is unknown.
22765
22766 2008-03-20  Kaz Kojima  <kkojima@gcc.gnu.org>
22767
22768         * config/sh/linux-atomic.asm (ATOMIC_TEST_AND_SET): Take
22769         unsigned extension into account.
22770         (ATOMIC_COMPARE_AND_SWAP): Likewise.
22771         (ATOMIC_FETCH_AND_OP, ATOMIC_FETCH_AND_COMBOP): Likewise.
22772         Do computations on a scratch register.
22773
22774 2008-03-21  Richard Guenther  <rguenther@suse.de>
22775
22776         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
22777         Use is_gimple_min_invariant instead of TREE_INVARIANT.
22778         * tree-ssa-loop-ivopts.c (force_expr_to_var_cost): Likewise.
22779         * tree-ssa-dom.c (record_equality): Likewise.
22780         * tree-inline.c (copy_body_r): Likewise.
22781         * tree-ssa-pre.c (make_values_for_stmt): Remove test for
22782         TREE_INVARIANT.
22783
22784 2008-03-20  Kaz Kojima  <kkojima@gcc.gnu.org>
22785
22786         * config/sh/sh.c (split_branches): Pass zero to redirect_jump
22787         as 'delete_unused' argument.
22788
22789 2008-03-20  Richard Guenther  <rguenther@suse.de>
22790
22791         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove
22792         special casing of constant qualifiers.
22793         * tree-ssa.c (useless_type_conversion_p_1): Instead do not
22794         care about them in general.
22795         * tree-ssa-ccp.c (ccp_fold): Addresses are constant or not
22796         regardless of their type.
22797         (fold_stmt_r): Forcefully fold *& if we end up with that.
22798
22799 2008-03-20  Paul Brook  <paul@codesourcery.com>
22800
22801         * config.gcc (arm*-*-uclinux*): Remove duplicate arm/uclinux-elf.h.
22802         * config/arm/uclinux-eabi.h (SUBTARGET_EXTRA_LINK_SPEC): Add extra
22803         linker flags.
22804         * config/arm/bpabi.h (SUBTARGET_EXTRA_LINK_SPEC): Provide default
22805         definition.
22806         (LINK_SPEC): Use SUBTARGET_EXTRA_LINK_SPEC.
22807         * config/arm/unwind-arm.h (_Unwind_decode_target2): Add uClinux.
22808
22809 2008-03-20  Volker Reichelt  <v.reichelt@netcologne.de>
22810
22811         * common.opt (Wmudflap): New option.
22812         * tree-mudflap.c (mf_xform_derefs_1): Guard warning by OPT_Wmudflap.
22813         (mx_register_decls): Likewise.
22814         (mudflap_finish_file): Likewise.
22815         * doc/invoke.texi: Document -Wno-mudflap.
22816
22817 2008-03-20  Kai Tietz  <kai.tietz@onevision.com>
22818
22819         * c-format.c (replace_format_name_to_system_name): New.
22820         (cmp_attribs): New.
22821         (convert_format_name_to_system_name): New.
22822         (decode_format_attr): Add use of convert_format_name_to_system_name.
22823         (format_types_orig): Add gnu_ prefix to names.
22824         (check_format_info_main): Special treating of \0 escaped names for
22825         supporting multi-character format specifiers as I32, I64.
22826         (TARGET_OVERRIDES_FORMAT_ATTRIBUTES): Use of user defined attributes.
22827         (gnu_target_overrides_format_attributes): New.
22828         * c-format.h: Add structure target_ovr_attr to hold
22829         system specific formatter names.
22830         * config.gcc: Add for x86&x86_64 cygwin and mingw32 targets the
22831         msformat-c.o file to c_target_objs and cxx_target_objs.
22832         * config/i386/mingw32.h (TARGET_OVERRIDES_FORMAT_ATTRIBUTES): New.
22833         (TARGET_OVERRIDES_FORMAT_ATTRIBUTES_COUNT): New.
22834         (TARGET_N_FORMAT_TYPES): New.
22835         * config/i386/msformat-c.c: New.
22836         * config/i386/t-cygming: Add build rule for msformat-c.o.
22837         * doc/extend.texi: Add new format names gnu_* and ms_* and
22838         further details.
22839         * doc/tm.texi: (TARGET_OVERRIDES_FORMAT_ATTRIBUTES): New.
22840
22841 2008-03-20  Ira Rosen  <irar@il.ibm.com>
22842
22843         * doc/invoke.texi (-O3): Add -ftree-vectorize to the list of
22844         optimizations turned on under -O3.
22845         (ftree-vectorize): Add that the flag is turned on with -O3.
22846
22847 2008-03-20  Ben Elliston  <bje@au.ibm.com>
22848
22849         * regmove.c (try_auto_increment): Fix spelling error in comment.
22850         * final.c (final_scan_insn): Likewise.
22851
22852 2008-03-20  Uros Bizjak  <ubizjak@gmail.com>
22853
22854         PR target/14552
22855         * config/i386/mmx.md (*mov<mode>_internal_rex64"): Adjust register
22856         allocator preferences for "y" and "r" class registers.
22857         ("*mov<mode>_internal"): Ditto.
22858         ("*movv2sf_internal_rex64"): Ditto.
22859         ("*movv2sf_internal"): Ditto.
22860
22861 2008-03-19  Michael Matz  <matz@suse.de>
22862
22863         PR middle-end/35616
22864         * calls.c (expand_call): Check overlap of arguments with call
22865         address for sibcalls.
22866
22867 2008-03-19  Uros Bizjak  <ubizjak@gmail.com>
22868
22869         PR target/35496
22870         * stor-layout.c (update_alignment_for_field): Set minimum alignment
22871         of the underlying type of a MS bitfield layout to the natural
22872         alignment of the type.
22873
22874 2008-03-19  Jan Hubicka  <jh@suse.cz>
22875
22876         PR other/35094
22877         * toplev.c (decode_d_option): Handle all CPP flags.
22878         * tree-vrp.c: Update tree_pass descriptors.
22879         * regrename.c: Update tree_pass descriptors.
22880         * fwprop.c: Update tree_pass descriptors.
22881         * doc/invoke.texi: Remove documentation of dropped -d? flags.
22882         * tree-into-ssa.c: Update tree_pass descriptors.
22883         * tree-dump.c: Update tree_pass descriptors.
22884         * tree-complex.c: Update tree_pass descriptors.
22885         * tree-dump.h: Update tree_pass descriptors.
22886         * see.c: Update tree_pass descriptors.
22887         * cgraphbuild.c: Update tree_pass descriptors.
22888         * tracer.c: Update tree_pass descriptors.
22889         * tree-loop-distribution.c: Update tree_pass descriptors.
22890         * cgraph.c: Update tree_pass descriptors.
22891         * postreload-gcse.c: Update tree_pass descriptors.
22892         * postreload.c: Update tree_pass descriptors.
22893         * tree-ssa-loop-ch.c: Update tree_pass descriptors.
22894         * tree-tailcall.c: Update tree_pass descriptors.
22895         * tree-pass.h (tree_opt_pass): Rename to ...
22896         (opt_pass) ... this one; add "type" field and remove letter field.
22897         (gimple_opt_pass, rtl_opt_pass, simple_ipa_opt_pass): New.
22898         (execute_pass_list, execute_ipa_pass_list, all_passes, all_ipa_passes,
22899         all_lowering_passes): Update declaration.
22900         * ipa-cp.c: Update tree_pass descriptors.
22901         * final.c: Update tree_pass descriptors.
22902         * omp-low.c: Update tree_pass descriptors.
22903         * tree-ssa-dse.c: Update tree_pass descriptors.
22904         * ipa-reference.c: Update tree_pass descriptors.
22905         * tree-ssa-uncprop.c: Update tree_pass descriptors.
22906         * auto-inc-dec.c: Update tree_pass descriptors.
22907         * reorg.c: Update tree_pass descriptors.
22908         * cgraphunit.c: Update tree_pass descriptors.
22909         * tree-ssa-copyrename.c: Update tree_pass descriptors.
22910         * tree-ssa-ccp.c: Update tree_pass descriptors.
22911         * df-core.c: Update tree_pass descriptors.
22912         * mode-switching.c: Update tree_pass descriptors.
22913         * tree-nomudflap.c: Update tree_pass descriptors.
22914         * modulo-sched.c: Update tree_pass descriptors.
22915         * ipa-pure-const.c: Update tree_pass descriptors.
22916         * cse.c: Update tree_pass descriptors.
22917         * web.c: Update tree_pass descriptors.
22918         * tree-stdarg.c: Update tree_pass descriptors.
22919         * tree-ssa-math-opts.c: Update tree_pass descriptors.
22920         * tree-ssa-dom.c: Update tree_pass descriptors.
22921         * tree-nrv.c: Update tree_pass descriptors.
22922         * tree-ssa-alias.c: Update tree_pass descriptors.
22923         * loop-init.c: Update tree_pass descriptors.
22924         * gimple-low.c: Update tree_pass descriptors.
22925         * ipa-inline.c: Update tree_pass descriptors.
22926         * tree-ssa-sink.c: Update tree_pass descriptors.
22927         * global.c: Update tree_pass descriptors.
22928         * ifcvt.c: Update tree_pass descriptors.
22929         * jump.c: Update tree_pass descriptors.
22930         * predict.c: Update tree_pass descriptors.
22931         * tree-ssa-loop.c: Update tree_pass descriptors.
22932         * recog.c: Update tree_pass descriptors.
22933         * dse.c: Update tree_pass descriptors.
22934         * tree-ssa-ifcombine.c: Update tree_pass descriptors.
22935         * tree-eh.c: Update tree_pass descriptors.
22936         * regmove.c: Update tree_pass descriptors.
22937         * local-alloc.c
22938         * function.c: Update tree_pass descriptors.
22939         * tree-vectorizer.c: Update tree_pass descriptors.
22940         * gcse.c: Update tree_pass descriptors.
22941         * ipa-type-escape.c: Update tree_pass descriptors.
22942         * tree-if-conv.c: Update tree_pass descriptors.
22943         * init-regs.c: Update tree_pass descriptors.
22944         * ipa.c: Update tree_pass descriptors.
22945         * tree-ssa-phiopt.c: Update tree_pass descriptors.
22946         * rtl-factoring.c: Update tree_pass descriptors.
22947         * lower-subreg.c: Update tree_pass descriptors.
22948         * bt-load.c: Update tree_pass descriptors.
22949         * tree-dfa.c: Update tree_pass descriptors.
22950         * except.c: Update tree_pass descriptors.
22951         * emit-rtl.c: Update tree_pass descriptors.
22952         * cfgexpand.c: Update tree_pass descriptors.
22953         * tree-cfgcleanup.c: Update tree_pass descriptors.
22954         * cfgcleanup.c: Update tree_pass descriptors.
22955         * tree-ssa-pre.c: Update tree_pass descriptors.
22956         * tree-sra.c: Update tree_pass descriptors.
22957         * tree-mudflap.c: Update tree_pass descriptors.
22958         * tree-ssa-copy.c: Update tree_pass descriptors.
22959         * cfglayout.c: Update tree_pass descriptors.
22960         * tree-ssa-forwprop.c: Update tree_pass descriptors.
22961         * tree-ssa-dce.c: Update tree_pass descriptors.
22962         * tree-ssa.c: Update tree_pass descriptors.
22963         * regclass.c: Update tree_pass descriptors.
22964         * integrate.c: Update tree_pass descriptors.
22965         * tree-optimize.c: Update tree_pass descriptors.
22966         * tree-ssa-phiprop.c: Update tree_pass descriptors.
22967         * tree-object-size.c: Update tree_pass descriptors.
22968         * combine.c: Update tree_pass descriptors.
22969         * tree-outof-ssa.c: Update tree_pass descriptors.
22970         * bb-reorder.c: Update tree_pass descriptors.
22971         * stack-ptr-mod.c: Update tree_pass descriptors.
22972         * var-tracking.c: Update tree_pass descriptors.
22973         * tree-profile.c: Update tree_pass descriptors.
22974         * tree-vect-generic.c: Update tree_pass descriptors.
22975         * reg-stack.c: Update tree_pass descriptors.
22976         * sched-rgn.c: Update tree_pass descriptors.
22977         * tree-ssa-structalias.c: Update tree_pass descriptors.
22978         * tree-cfg.c: Update tree_pass descriptors.
22979         * passes.c (current_pass): Update declaration.
22980         (finish_optimization_passes): Update.
22981         (all_passes, all_ipa_passes, all_lowering_passes): Update declaration.
22982         (register_one_dump_file, register_dump_files_1, next_pass_1):
22983         Update arguments.
22984         (init_optimization_passes): Update handling of new types.
22985         (execute_one_pass, execute_pass_list, execute_ipa_pass_list): Update.
22986         * ipa-struct-reorg.c: Update tree_pass descriptors.
22987         * tree-ssa-reassoc.c: Update tree_pass descriptors.
22988         * combine-stack-adj.c: Update tree_pass descriptors.
22989         * cfgrtl.c: Update tree_pass descriptors.
22990         * dce.c: Update tree_pass descriptors.
22991         * tree-ssanames.c: Update tree_pass descriptors.
22992
22993 2008-03-19  Richard Guenther  <rguenther@suse.de>
22994
22995         PR middle-end/35609
22996         * tree-ssa.c (walk_data): New structure.
22997         (warn_uninitialized_var): If not always_executed warn with "maybe"
22998         instead of "is".
22999         (execute_early_warn_uninitialized): Compute post-dominators.
23000         Initialize always_executed before processing each basic block.
23001
23002 2008-03-18  Mikulas Patocka  <mikulas@artax.karlin.mff.cuni.cz>
23003
23004         PR target/35504
23005         * config/i386/i386.c (x86_this_parameter): Calculate correct location
23006         of "this" pointer when "regparm = N" or "fastcall" is in effect.
23007
23008 2008-03-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
23009
23010         * doc/include/texinfo.tex: Update to version 2008-03-17.10.
23011
23012 2008-03-18  Paolo Bonzini  <bonzini@gnu.org>
23013
23014         * expr.c (store_expr): Assume lang_hooks.reduce_bit_field_operations
23015         is true.
23016         (expand_expr_real_1) <REDUCE_BIT_FIELD>: Don't look at ignore.
23017         (expand_expr_real_1): Assume lang_hooks.reduce_bit_field_operations
23018         is true.  Add "&& !ignore" condition to reduce_bit_field.  Modify
23019         target after ignore has been set, and move there also the commputation
23020         of subtarget and original_target.
23021         * langhooks-def.h (LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS): Delete.
23022         (LANG_HOOKS_INITIALIZER): Remove it.
23023         * langhooks.h (struct lang_hooks): Remove reduce_bit_field_operations.
23024
23025 2008-03-18  Richard Guenther  <rguenther@suse.de>
23026
23027         * tree-ssa-sccvn.c (visit_reference_op_load): If the lookup
23028         found an expression with constants, note that in the VN for the lhs.
23029         * tree-ssa-pre.c (eliminate): Visit COND_EXPR statements and
23030         fold them to constants if possible.  Run cleanup_cfg if done so.
23031         (execute_pre): Return todo.
23032         (do_pre): Likewise.
23033         (execute_fre): Likewise.
23034         * tree-ssa-forwprop.c (can_propagate_from): Allow propagation
23035         of constants.
23036         (get_prop_source_stmt): Look through pointer conversions.
23037
23038 2008-03-18  Jan Hubicka  <jh@suse.cz>
23039
23040         * tree-pretty-print.c: Include predict.h.
23041         (dump_generic_node): Dump predictor.
23042         * tree.h (PREDICT_EXPR_OUTCOME, PREDICT_EXPR_PREDICTION): Update.
23043         * tree-gimple.c (is_gimple_stmt): Add PREDICT_EXPR.
23044         * gimple-low.c (lower_stmt): Likewise.
23045         * expr.c (expand_expr_real): Likewise.
23046         * predict.c (tree_bb_level_predictions): Use PREDICT_EXPRs and remove
23047         them.
23048         (build_predict_expr, build_predict_expr): New.
23049         * predict.h (predictor_name, build_predict_expr): Update.
23050         * c-typeck.c (c_finish_bc_stmt): Add prediction.
23051         * gimplify.c (gimplify_expr): Add PREDICT_EXPR.
23052         * predict.def (PRED_CONTINUE): Update hitrate.
23053         * tree.def (PREDICT_EXPR): Define.
23054         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Mark PREDICT_EXPR;
23055         do not handle BIND_EXPR.
23056         * tree-inline.c (estimate_num_insns_1): PREDICT_EXPR is free.
23057         * tree-cfg.c (verify_gimple_stmt): PREDICT_EXPR is valid.
23058         * tree-ssa-operands.c (get_expr_operands): PREDICT_EXPR takes no
23059         operands.
23060
23061 2008-03-18  Michael Matz  <matz@suse.de>
23062
23063         * gcov-io.h (__gcov_merge_ior, __gcov_fork): Mark hidden.
23064
23065 2008-03-18  Richard Guenther  <rguenther@suse.de>
23066
23067         * tree-gimple.h (is_gimple_invariant_address): Declare.
23068         (is_gimple_constant): Likewise.
23069         * tree-gimple.c (is_gimple_constant): New function.
23070         (is_gimple_invariant_address): Likewise.
23071         (is_gimple_min_invariant): Implement in terms of is_gimple_constant
23072         and is_gimple_invariant_address.
23073         * tree-ssa-loop-niter.c (expand_simple_operations): Revert
23074         previous change.
23075         * tree-data-ref.c (get_references_in_stmt): A SSA_NAME is not
23076         an addressable base.
23077
23078 2008-03-18  Jakub Jelinek  <jakub@redhat.com>
23079
23080         PR middle-end/35611
23081         * gimplify.c (gimplify_expr): Gimplify second operand of
23082         OMP_ATOMIC_LOAD.
23083
23084 2008-03-17  Richard Guenther  <rguenther@suse.de>
23085
23086         PR tree-optimization/19637
23087         * fold-const.c (fold_unary): Remove restrictions of removing
23088         intermediate pointer-conversions (P2)(P1)P0.
23089         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Recover from
23090         conversion to void pointer.
23091         (get_maxval_strlen): Handle addresses of the form &(*p)[0].
23092
23093 2008-03-16  James E. Wilson  <wilson@tuliptree.org>
23094
23095         PR debug/31510
23096         * dbxout.c (dbxout_expand_expr, case VAR_DECL): Return NULL for
23097         emulated thread local variables.
23098
23099 2008-03-16  Richard Guenther  <rguenther@suse.de>
23100
23101         PR middle-end/35607
23102         * tree-ssa-loop-niter.c (expand_simple_operations): Do not
23103         expand TREE_INVARIANT operations that are not gimple invariant.
23104
23105 2008-03-16  Hans-Peter Nilsson  <hp@axis.com>
23106
23107         * doc/extend.texi (Alignment): Say that the ABI controls
23108         the __alignof__ for non-strict-alignment targets rather
23109         than being a recommendation.
23110
23111 2008-03-15  Paul Brook  <paul@codesourcery.com>
23112
23113         * config/arm/arm.c (arm_unwind_emit): Suppress unused unwinding
23114         annotations.
23115         (arm_output_fn_unwind): Mark functions that can not be unwound.
23116
23117 2008-03-15  Paul Brook  <paul@codesourcery.com>
23118
23119         * config/arm/arm.c (arm_rtx_costs_1): Add costs for ARMv6 value
23120         extension instructions.
23121
23122 2008-03-15  Richard Guenther  <rguenther@suse.de>
23123
23124         * tree-ssa-ccp.c (ccp_fold): Also read from constant values
23125         and fold constant aggregate refs.
23126         (fold_const_aggregate_ref): Handle string constants
23127         and constructors in ARRAY_REFs.  Handle INDIRECT_REF.
23128         (evaluate_stmt): Simplify now that ccp_fold folds constant
23129         aggregate refs.
23130
23131 2008-03-15  Paul Brook  <paul@codesourcery.com>
23132
23133         * config/arm/arm.md (insv): Use gen_insv_t2 and gen_insv_zero.
23134         (extzv): Use gen_extzv_t2.
23135         (insv_t2, insv_zero, extv, extzv_t2): New patterns.
23136
23137 2008-03-15  Richard Guenther  <rguenther@suse.de>
23138
23139         * tree-ssa-ccp.c (get_symbol_constant_value): Export.
23140         (fold_const_aggregate_ref): Likewise.
23141         (get_value): Return NULL if we don't have any values.
23142         (ccp_finalize): Set const_val to NULL after freeing it.
23143         * tree-flow.h (get_symbol_constant_value): Declare.
23144         (fold_const_aggregate_ref): Likewise.
23145         * tree-ssa-sccvn.c (try_to_simplify): Use them.
23146
23147 2008-03-15  Richard Guenther  <rguenther@suse.de>
23148
23149         PR middle-end/35593
23150         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Make sure
23151         to not produce negative array indices if not allowed.  Add
23152         parameter to indicate that.
23153         (maybe_fold_offset_to_component_ref): Allow negative array
23154         indices only for the first member of a structure.
23155         (maybe_fold_offset_to_reference): Allow negative array indices.
23156         (maybe_fold_stmt_addition): Likewise.
23157
23158 2008-03-15  Bjoern Haase  <bjoern.m.haase@web.de>
23159             Anatoly Sokolov <aesok@post.ru>
23160
23161         * config/avr/avr.c (avr_arch_types): Add avr6 entry.
23162         (avr_arch): Add ARCH_AVR6.
23163         (avr_mcu_types): Add 'atmega2560' and 'atmega2561' entry.
23164         (initial_elimination_offset): Initialize and use 'avr_pc_size'
23165         instead of fixed value 2.
23166         (print_operand_address): Use gs() asm specifier instead of pm().
23167         (avr_assemble_integer): (Ditto.).
23168         (avr_output_addr_vec_elt): (Ditto.).
23169         (print_operand): Handle "!" code.
23170         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Add
23171         __AVR_3_BYTE_PC__, __AVR_2_BYTE_PC__ and __AVR_HAVE_JMP_CALL__.
23172         (AVR_HAVE_EIJMP_EICALL): Define.
23173         (AVR_3_BYTE_PC): Redefine.
23174         (AVR_2_BYTE_PC): (Ditto.).
23175         (PRINT_OPERAND_PUNCT_VALID_P): Add '!' code.
23176         (LINK_SPEC): Add atmega2560 and atmega2561.
23177         (CRT_BINUTILS_SPEC): Add atmega2560 (crtm2560.o) and atmega2561
23178         (crtm2561.o).
23179         * config/avr/avr.md (call_insn): Use eicall instead of icall
23180         for 3 byte PC devices.
23181         (call_value_insn): (Ditto.).
23182         (*tablejump_enh): Use eijmp instead of ijmp for 3 byte PC devices.
23183         (indirect_jump): Use only for for 2 byte PC devices.
23184         (*tablejump): (Ditto.).
23185         (*indirect_jump_avr6): Add insn.
23186         (*tablejump_rjmp): Don't use for 3 byte PC devices.
23187         * config/avr/libgcc.S (__prologue_saves__): Use eijmp
23188         instead of ijmp for 3 byte PC devices.
23189         (__tablejump2__): (Ditto.).
23190         * config/avr/t-avr (MULITLIB_OPTIONS): Add avr6 architecture.
23191         (MULITLIB_DIRNAMES): (Ditto.).
23192         (MULTILIB_MATCHES): Add atmega2560 and atmega2561 to list.
23193
23194 2008-03-15  Uros Bizjak  <ubizjak@gmail.com>
23195
23196         * config/i386/mmx.md ("sse2_umulv1siv2di3"): Rename from
23197         "sse2_umulsidi3".  Use V1DI mode for operand 0.
23198         ("mmx_psadbw"): Use V1DI mode for operand 0.
23199         * config/i386/i386-modes.def (V1SI): New vector mode.
23200         * config/i386/i386.c (struct builtin_description)
23201         [IX86_BUILTIN_PMULUDQ]: Use CODE_FOR_sse2_umulv1siv1di3.
23202         (v1di_ftype_v8qi_v8qi): Rename from di_ftype_v8qi_v8qi.
23203         (v1di_ftype_v2si_v2si): Rename from di_ftype_v2si_v2si.
23204         (ix86_init_mmx_sse_builtins) [__builtin_ia32_psadbw]: Use
23205         v1di_ftype_v8qi_v8qi type.
23206         [__builtin_ia32_pmuludq]: Use v1di_ftype_v2si_v2si type.
23207
23208         * doc/extend.texi (X86 Built-in Functions) [__builtin_ia32_psadbw,
23209         __builtin_ia32_pmuludq]: Fix the mode of return value.
23210
23211 2008-03-15  Richard Guenther  <rguenther@suse.de>
23212
23213         PR middle-end/35595
23214         * tree-ssa-pre.c (bitmap_find_leader): Handle expression
23215         being a PHI_NODE.
23216
23217 2008-03-14  Bob Wilson  <bob.wilson@acm.org>
23218
23219         * doc/invoke.texi (Option Summary, Xtensa Options): Document
23220         -mserialize-volatile and -mno-serialize-volatile Xtensa options.
23221         * config/xtensa/xtensa.c (print_operand): Do not emit MEMW instructions
23222         unless TARGET_SERIALIZE_VOLATILE is enabled.
23223         * config/xtensa/xtensa.md (*lsiu, *ssiu): Likewise.
23224         * config/xtensa/xtensa.h (TARGET_DEFAULT): Add MASK_SERIALIZE_VOLATILE.
23225         * config/xtensa/xtensa.opt (mserialize_volatile): New option.
23226
23227 2008-03-14  Richard Guenther  <rguenther@suse.de>
23228
23229         PR tree-optimization/34172
23230         * tree-flow.h (refs_may_alias_p): Declare.
23231         (get_single_def_stmt): Likewise.
23232         (get_single_def_stmt_from_phi): Likewise.
23233         (get_single_def_stmt_with_phi): Likewise.
23234         * tree-dfa.c (refs_may_alias_p): New function.
23235         (get_single_def_stmt): Likewise.
23236         (get_single_def_stmt_from_phi): Likewise.
23237         (get_single_def_stmt_with_phi): Likewise.
23238         * tree-ssa-sccvn.c (get_def_ref_stmt_vuses): New function.
23239         (vn_reference_lookup_1): New helper function.
23240         (vn_reference_lookup): Walk the virtual use-def chain to
23241         continue searching for a match if the def does not alias the
23242         reference we are looking for.
23243
23244 2008-03-14  David Edelsohn  <edelsohn@gnu.org>
23245
23246         * doc/install.texi (Binaries): Remove UCLA archive.  Add HVCC
23247         archive and Perzl.  Update The Written Word listing.
23248
23249 2008-03-14  Richard Guenther  <rguenther@suse.de>
23250
23251         PR tree-optimization/34043
23252         PR tree-optimization/33989
23253         * tree-ssa-pre.c (execute_pre): Allow SCCVN to do insertion
23254         when doing FRE.
23255         (bitmap_find_leader): Use extra argument to verify dominance
23256         relationship inside a basic-block.
23257         (can_PRE_operation): Add VIEW_CONVERT_EXPR.
23258         (find_leader_in_sets): Adjust.
23259         (create_component_ref_by_pieces): Take extra argument for
23260         dominance check, handle lookup failures.
23261         (find_or_generate_expression): Likewise.
23262         (create_expression_by_pieces): Likewise.
23263         (insert_into_preds_of_block): Adjust.
23264         (create_value_expr_from): If asked for, verify all operands
23265         are in the blocks AVAIL_OUT set.
23266         (make_values_for_stmt): Check for SSA_NAMEs that are life
23267         over an abnormal edge.
23268         (compute_avail): Remove such check.
23269         (do_SCCVN_insertion): New function.
23270         (eliminate): If we do not find a leader suitable for replacement
23271         insert a replacement expression from SCCVN if available.
23272         * tree-ssa-sccvn.h (run_scc_vn): Update prototype.
23273         (struct vn_ssa_aux): Add needs_insertion flag.
23274         * tree-ssa-sccvn.c (may_insert): New global flag.
23275         (copy_reference_ops_from_ref): Value-number union member access
23276         based on its size, not type and member if insertion is allowed.
23277         (visit_reference_op_load): For a weak match from union type
23278         punning lookup a view-converted value and insert a SSA_NAME
23279         for that value if that is not found.
23280         (visit_use): Make dumps shorter.  Do not disallow value numbering
23281         SSA_NAMEs that are life over an abnormal edge to constants.
23282         (free_scc_vn): Release inserted SSA_NAMEs.
23283         (run_scc_vn): New flag to specify whether insertion is allowed.
23284         Process SSA_NAMEs in forward order.
23285         * tree-ssa-loop-im.c (for_each_index): Handle invariant
23286         ADDR_EXPRs inside VIEW_CONVERT_EXPR.
23287         * fold-const.c (fold_unary): Fold VIEW_CONVERT_EXPRs from/to
23288         pointer type to/from integral types that do not change the
23289         precision to regular conversions.
23290
23291 2008-03-13  Uros Bizjak  <ubizjak@gmail.com>
23292
23293         * doc/extend.texi (X86 Built-in Functions) [__builtin_ia32_psll?,
23294         __builtin_ia32_psrl?, __builtin_ia32_psra?, __builtin_ia32_psll?i,
23295         __builtin_ia32_psrl?i, __builtin_ia32_psra?i, __builtin_ia32_psll?128,
23296         __builtin_ia32_psrl?128, __builtin_ia32_psra?128]: Fix the mode of
23297         input arguments and the mode of return value.  Built-in functions
23298         that operate on whole 64-bit MMX register now use V1DI mode.
23299
23300 2008-03-13  Alon Dayan  <alond@il.ibm.com>
23301             Olga Golovanevsky  <olga@il.ibm.com>
23302
23303         PR tree-optimization/35041
23304         * ipa-struct-reorg.c (find_pos_in_stmt_1): Add another option
23305         to locate the right position in a statement.
23306
23307 2008-03-13  Uros Bizjak  <ubizjak@gmail.com>
23308
23309         PR target/34000
23310         PR target/35553
23311         * config/i386/xmmintrin.h:  Change all static inline functions to
23312         extern inline and add __gnu_inline__ attribute.
23313         * config/i386/bmintrin.h: Ditto.
23314         * config/i386/smmintrin.h: Ditto.
23315         * config/i386/tmmintrin.h: Ditto.
23316         * config/i386/mmintrin-common.h: Ditto.
23317         * config/i386/ammintrin.h: Ditto.
23318         * config/i386/emmintrin.h: Ditto.
23319         * config/i386/pmmintrin.h: Ditto.
23320         * config/i386/mmintrin.h: Ditto.
23321         * config/i386/mm3dnow.h: Ditto.
23322
23323 2008-03-13  Jakub Jelinek  <jakub@redhat.com>
23324
23325         PR middle-end/35185
23326         * omp-low.c (lower_regimplify, init_tmp_var, save_tmp_var): Removed.
23327         (lower_omp_2): New function.
23328         (lower_omp_1, lower_omp): Rewritten.
23329
23330 2008-03-13  Danny Smith  <dannysmith@users.sourceforge.net>
23331
23332         PR 35054
23333         * doc/extend.texi (Structure-Packing Pragmas): Replace "Win32"
23334         with the phrase "Microsoft Windows compilers".
23335         (Push/Pop Macro Pragmas): New subsection. Document
23336         #pragma push_macro and pragma pop_macro.
23337
23338 2008-03-12  Paul Brook  <paul@codesourcery.com>
23339
23340         * config/arm/arm.c (output_move_double): Prefer LDRD to LDM.
23341
23342 2008-03-12  Paul Brook  <paul@codesourcery.com>
23343
23344         * config/arm/thumb2.md: Extend peephole to cover 3-arg subs.
23345         (thumb2_alusi3_short): Exclude PLUS and MINUS.
23346         (thumb2_addsi_shortim): Rename ...
23347         (thumb2_addsi_short): ... to this.  Allow register operands.
23348         (thumb2_subsi_short): New pattern.
23349         (thumb2_one_cmplsi2_short,
23350         thumb2_negsi2_short): New patterns and peepholes.
23351
23352 2008-03-12  Paul Brook  <paul@codesourcery.com>
23353
23354         * config/arm/arm.c (arm_size_rtx_costs): Use ARM costs for Thumb-2.
23355
23356 2008-03-12  Uros Bizjak  <ubizjak@gmail.com>
23357
23358         * config/i386/i386.md (int_cond): New code iterator.
23359         (fp_cond): Ditto.
23360         ("s<code>"): Macroize expander from seq, sne, sgt, sgtu, slt, sltu,
23361         sge, sgeu, sle and sleu expanders usign int_cond code iterator.
23362         ("s<code>"): Macroize expander from sunordered, sordered, suneq, sunge,
23363         sungt, sunle, sunlt and sltgt expanders usign fp_cond code iterator.
23364         ("b<code>"): Macroize expander from beq, bne, bgt, bgtu, blt, bltu,
23365         bge, bgeu, ble and bleu expanders usign int_cond code iterator.
23366         ("b<code>"): Macroize expander from bunordered, bordered, buneq, bunge,
23367         bungt, bunle, bunlt and bltgt expanders usign fp_cond code iterator.
23368
23369 2008-03-12  Paul Brook  <paul@codesourcery.com>
23370
23371         * config/arm/arm.c (use_return_insn): Use offsets->saved_regs_mask
23372         instead of {arm,thumb}_compute_save_reg_mask.
23373         (output_return_instruction): Ditto.
23374         (thumb_unexpanded_epilogue): Ditto.
23375         (thumb1_expand_prologue): Ditto.
23376         (thumb1_output_function_prologue): Ditto.
23377         (arm_set_return_address): Ditto.
23378         (thumb_set_return_address): Ditto.
23379         (arm_get_frame_offsets): Set offsets->saved_regs_mask.  Push extra
23380         regs to achieve stack alignment.
23381         (thumb1_compute_save_reg_mask): Fix compiler warning.
23382         (arm_output_epilogue): Use offsets->saved_regs_mask.
23383         Adjust stack pointer by poping call clobered registers.
23384         (arm_expand_prologue): Use offsets->saved_regs_mask.
23385         Adjust stack pointer by pushing extra registers.
23386         * config/arm.h (arm_stack_offsets): Add saved_regs_mask.
23387
23388 2008-03-12  Paolo Bonzini  <bonzini@gnu.org>
23389
23390         PR tree-opt/35422
23391         * fold-const.c (fold_unary) <NOP_EXPR>: Distribute a narrowing
23392         conversion to the operands of a multiplication.
23393
23394 2008-03-12  Richard Guenther  <rguenther@suse.de>
23395
23396         * Makefile.in (OBJS-common): Add tree-ssa-phiprop.o
23397         (tree-ssa-phiprop.o): Copy dependencies from tree-ssa-forwprop.o.
23398         * timevar.def (TV_TREE_PHIPROP): Add.
23399         * tree-ssa-phiprop.c: Split from tree-ssa-forwprop.c, added
23400         pass description.  Use TV_TREE_PHIPROP.
23401         * tree-ssa-forwprop.c: Remove phiprop code.
23402
23403 2008-03-12  Jakub Jelinek  <jakub@redhat.com>
23404
23405         PR middle-end/35549
23406         * omp-low.c (maybe_lookup_decl): Constify first argument.
23407         (use_pointer_for_field): Change last argument from bool to
23408         omp_context *.  Disallow shared copy-in/out in nested
23409         parallel if decl is shared in outer parallel too.
23410         (build_outer_var_ref, scan_sharing_clauses,
23411         lower_rec_input_clauses, lower_copyprivate_clauses,
23412         lower_send_clauses, lower_send_shared_vars): Adjust callers.
23413
23414 2008-03-12  Victor Kaplansky  <victork@il.ibm.com>
23415             Ira Rosen  <irar@il.ibm.com>
23416
23417         * tree-vectorizer.c (free_stmt_vec_info): New function.
23418         (destroy_loop_vec_info): Move code to free_stmt_vec_info().
23419         Call free_stmt_vec_info(). Free LOOP_VINFO_STRIDED_STORES..
23420         * tree-vectorizer.h (free_stmt_vec_info): Declare.
23421         * tree-vect-transform.c (vectorizable_conversion): Free
23422         vec_oprnds0 if it was allocated.
23423         (vect_permute_store_chain): Remove unused VECs.
23424         (vectorizable_store): Free VECs that are allocated in the..
23425         function.
23426         (vect_transform_strided_load, vectorizable_load): Likewise.
23427         (vect_remove_stores): Simplify the code.
23428         (vect_transform_loop): Move code to vect_remove_stores().
23429         Call vect_remove_stores() and free_stmt_vec_info().
23430
23431 2008-03-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
23432
23433         * pa.h (TARGET_LONG_PIC_SDIFF_CALL): Conditionalize define on
23434         TARGET_HPUX.  Revise comment.
23435         (TARGET_LONG_PIC_PCREL_CALL): Revise comment.
23436         * pa.c (output_call): Update for revised TARGET_LONG_PIC_SDIFF_CALL.
23437         Use sr4 variant of `be' instruction when not generating PIC code.
23438         (attr_length_call): Adjust for above change.
23439
23440 2008-03-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
23441
23442         * ipa-reference.c (static_execute): Remove module_statics_const and
23443         associated setting code.
23444
23445 2008-03-11  Uros Bizjak  <ubizjak@gmail.com>
23446
23447         PR target/35540
23448         * config/i386/i386.md (paritysi2, paritydi2): Use register_operand
23449         predicate for operand 1.
23450         (paritysi2_cmp): Use register_operand predicate for operand 2.
23451         Use earlyclobber modifier for operand 1.  Remove support for
23452         memory operands.
23453         (paritydi2_cmp): Use register_operand predicate for operand 3.
23454         Use earlyclobber modifier for operand 1.  Remove support for
23455         memory operands.
23456
23457 2008-03-11  Paul Brook  <paul@codesourcery.com>
23458             Vladimir Prus  <vladimir@codesourcery.com>
23459
23460         * config/arm/arm.c (use_return_insn): Check TARGET_APCS_FRAME.
23461         (arm_compute_save_reg0_reg12_mask): Always
23462         check if register 11 must be saved.  Always safe hard frame pointer
23463         when frame_pointer_needeed.
23464         (arm_compute_save_reg_mask): Save IP and PC
23465         only with apcs frames.
23466         (arm_output_epilogue): Adjust Thumb2 codepath to
23467         be also invoked and work for ARM non-apcs frames.
23468         (arm_expand_prologue): Don't bother saving IP
23469         for non-apcs frame, since it's not clobbered by
23470         prologue code.  Implement non-apcs frame
23471         layout.
23472
23473 2008-03-11  Paolo Bonzini  <bonzini@gnu.org>
23474
23475         PR rtl-optimization/35281
23476         * expr.c (convert_move): Use a new pseudo for the intermediate
23477         from_mode->word_mode result.
23478
23479 2008-03-11  Paolo Bonzini  <bonzini@gnu.org>
23480
23481         * langhooks-def.h (LANG_HOOKS_CLEAR_BINDING_STACK): Delete.
23482         * langhooks.h (struct lang_hooks): Delete clear_binding_stack member.
23483         * toplev.c (compile_file): Don't call it.
23484
23485 2008-03-11  Uros Bizjak  <ubizjak@gmail.com>
23486
23487         PR middle-end/35526
23488         * expr.c (store_expr): Call emit_block_move if the mode
23489         of "temp" RTX is BLKmode.
23490
23491 2008-03-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
23492             Richard Guenther  <rguenther@suse.de>
23493
23494         PR tree-optimization/31358
23495         * tree-ssa-loop-manip.c (create_iv): Call force_gimple_operand for
23496         the step with a NULL_TREE.
23497         * tree-ssa-loop-ivopts.c (find_bivs): Convert the step
23498         to sizetype if type is a pointer type.
23499         (add_candidate_1): Don't convert the base and step to
23500         the generic type if the orginal type is a pointer type.
23501         (add_iv_value_candidates): Use sizetype for the step
23502         if type is a pointer type.
23503         (cand_value_at): Likewise.
23504         * tree-ssa-address.c (add_to_parts): Use POINTER_PLUS_EXPR
23505         for pointer types.
23506         * tree-affine.c (tree_to_aff_combination <POINTER_PLUS_EXPR>):
23507         Don't convert the tem affine to the type.
23508         (add_elt_to_tree): Use sizetype for the step if a pointer.
23509         Use POINTER_PLUS_EXPR for pointers.
23510         (aff_combination_to_tree): Use sizetype for the step if a
23511         pointer.
23512
23513 2008-03-10  Vladimir Makarov  <vmakarov@redhat.com>
23514
23515         * config/i386/sse.md (ssse3_pmaddubswv8hi3, ssse3_pmaddubswv4hi3):
23516         Remove commutativity hint.
23517
23518 2008-03-10  Jakub Jelinek  <jakub@redhat.com>
23519
23520         PR c/35438
23521         PR c/35439
23522         * c-parser.c (c_parser_omp_threadprivate): Don't add vars with
23523         errorneous type.  Check that v is a VAR_DECL.
23524
23525         PR middle-end/35099
23526         * tree-cfg.c (new_label_mapper): Update cfun->last_label_uid.
23527
23528 2008-03-10  H.J. Lu  <hongjiu.lu@intel.com>
23529
23530         PR tree-optimization/35494
23531         * tree-ssa-ccp.c (get_symbol_constant_value): Check if value
23532         may be overriden at link and run time.
23533
23534 2008-03-10  Richard Guenther  <rguenther@suse.de>
23535
23536         PR tree-optimization/34677
23537         * tree-ssa-pre.c (modify_expr_node_pool): Remove.
23538         (poolify_tree): Likewise.
23539         (modify_expr_template): Likewise.
23540         (poolify_modify_stmt): Likewise.
23541         (insert_fake_stores): Handle all component-ref style stores
23542         in addition to INDIRECT_REF.  Also handle complex types.
23543         Do not poolify the inserted load.
23544         (realify_fake_stores): Do not rebuild the tree but only
23545         make it a SSA_NAME copy.
23546         (init_pre): Remove initialzation of modify_expr_template.
23547         Do not allocate modify_expr_node_pool.
23548         (fini_pre): Do not free modify_expr_node_pool.
23549
23550 2008-03-10  Paul Brook  <paul@codesourcery.com>
23551
23552         * config/arm/arm.md (UNSPEC_STACK_ALIGN, UNSPEC_PIC_OFFSET): Renumber
23553         to avoid conflicts.
23554
23555 2008-03-10  Paul Brook  <paul@codesourcery.com>
23556             Mark Shinwell  <shinwell@codesourcery.com>
23557
23558         * config/arm/cortex-r4.md: New.
23559         * config/arm/thumb2.md (divsi3, udivsi3): Annotate with
23560         insn attributes.
23561         * config/arm/arm.md: Include cortex-r4.md.
23562         (insn): Add smmls, sdiv and udiv values.
23563         (generic_sched): Don't use generic scheduling for Cortex-R4.
23564         (arm_issue_rate): New function.
23565         (TARGET_SCHED_ISSUE_RATE): Define.
23566
23567 2008-03-10  Sebastian Pop  <sebastian.pop@amd.com>
23568
23569         * doc/invoke.texi (-ftree-loop-distribution): Add an example.
23570
23571 2008-03-10  Richard Guenther  <rguenther@suse.de>
23572
23573         * tree-ssa-pre.c (get_sccvn_value): Simplify.
23574         (compute_avail): Do not add stmt uses to AVAIL_OUT.
23575
23576 2008-03-10  Paolo Bonzini  <bonzini@gnu.org>
23577
23578         * langhooks-def.h (LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS):
23579         Set default to true.
23580
23581 2008-03-09  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
23582
23583         * c.opt (Wsynth): Deprecate.
23584         * doc/invoke.texi (Option Summary, Warning Options): Document
23585         -Wno-format-contains-nul.
23586
23587 2008-03-09  Uros Bizjak  <ubizjak@gmail.com>
23588
23589         PR target/35496
23590         * config/i386/i386.c (ix86_constant_alignment): Compute alignment using
23591         ALIGN_MODE_128 for VECTOR_CST and INTEGER_CST in addition to REAL_CST.
23592
23593 2008-03-09  Ira Rosen  <irar@il.ibm.com>
23594
23595         * config/rs6000/rs6000.c (builtin_description): Rename vector
23596         left shift operations.
23597         * config/rs6000/altivec.md (UNSPEC_VSL): Remove.
23598         (altivec_vsl<VI_char>): Rename to ...
23599         (ashl<mode>3): ... new name.
23600         (mulv4sf3, mulv4si3, negv4sf2): Replace gen_altivec_vslw with
23601         gen_ashlv4si3.
23602         (absv4sf2): Convert to use ashift:V4SI instead of UNSPEC_VSL.
23603
23604 2008-03-08  Richard Guenther  <rguenther@suse.de>
23605
23606         * coverage.h (tree_coverage_counter_addr): Declare.
23607         * coverage.c (tree_coverage_counter_addr): New function.
23608         * tree-profile.c (tree_gen_edge_profiler): Unshare counter
23609         before using again.
23610         (tree_gen_pow2_profiler): Use tree_coverage_counter_addr.
23611         (tree_gen_one_value_profiler): Likewise.
23612         (tree_gen_ic_profiler): Likewise.
23613         (tree_gen_average_profiler): Likewise.
23614         (tree_gen_ior_profiler): Likewise.
23615
23616 2008-03-08  Richard Guenther  <rguenther@suse.de>
23617
23618         * tree-ssa-sccvn.h (vn_binary_op_lookup): Remove.
23619         (vn_binary_op_insert): Likewise.
23620         (vn_unary_op_lookup): Likewise.
23621         (vn_unary_op_insert): Likewise.
23622         (vn_nary_op_lookup): Declare.
23623         (vn_nary_op_insert): Likewise.
23624         * tree-ssa-sccvn.c (struct vn_tables_s): Merge unary
23625         and binary hashes, use a single obstack for unary_op_pool
23626         and binary_op_pool.
23627         (struct vn_binary_op_s, struct vn_unary_op_s): Replace with
23628         a single struct vn_nary_op_s.  Store tree code length and
23629         a variable number of operands.
23630         (struct vn_reference_op_struct): Remove unused op2.
23631         (vn_reference_op_eq): Do not compare op2.
23632         (vn_reference_op_compute_hash): Do not compute hash of op2.
23633         (vn_unary_op_hash, vn_binary_op_hash): Replace with vn_nary_op_hash.
23634         (vn_unary_op_compute_hash, vn_binary_op_compute_hash): Replace
23635         with vn_nary_op_compute_hash.
23636         (vn_unary_op_eq, vn_binary_op_eq): Replace with vn_nary_op_eq.
23637         (vn_unary_op_lookup, vn_binary_op_lookup): Replace with
23638         vn_nary_op_lookup.
23639         (vn_unary_op_insert, vn_binary_op_insert): Replace with
23640         vn_nary_op_insert.
23641         (visit_unary_op): Call nary functions.
23642         (visit_binary_op): Likewise.
23643         (process_scc): Adjust for struct vn_tables_s changes.
23644         (allocate_vn_table): Likewise.
23645         (free_vn_table): Likewise.
23646         * tree-vn.c (vn_add): Call nary functions.
23647         (vn_lookup): Likewise.
23648
23649 2008-03-08  Jakub Jelinek  <jakub@redhat.com>
23650
23651         PR target/35498
23652         * config/rs6000/rs6000.c (rs6000_expand_compare_and_swapqhi): Shift
23653         wdst back after sync_compare_and_swapqhi_internal.
23654
23655 2008-03-08  Uros Bizjak  <ubizjak@gmail.com>
23656
23657         PR target/22152
23658         * config/i386/i386-modes.def (V1DI): New vector mode.
23659         * config/i386/i386.h (VALID_MMX_REG_MODE): Add V1DImode.
23660         * config/i386/mmx.md (MMXMODEI8): New mode iterator.
23661         (MMXMODE248): Ditto.
23662         (MMXMODE): Add V1DI mode.
23663         (mmxvecsize): Change DI mode to V1DI mode.
23664         ("mov<mode>): Use MMXMODEI8 mode iterator.
23665         ("*mov<mode>_internal_rex64"): Ditto.
23666         ("*mov<mode>_internal"): Ditto.
23667         ("mmx_add<mode>3"): Ditto.  Handle V1DImode for TARGET_SSE2.
23668         ("mmx_sub<mode>3"): Ditto.
23669         ("mmx_adddi3"): Remove insn pattern.
23670         ("mmx_subdi3"): Ditto.
23671         ("mmx_ashr<mode>3"): Use SImode and "yN" constraint for operand 2.
23672         ("mmx_lshr<mode>3"): Ditto. Use MMXMODE248 mode iterator.
23673         ("mmx_ashl<mode>3"): Ditto.
23674         ("mmx_lshrdi3"): Remove insn pattern.
23675         ("mmx_ashldi3"): Ditto.
23676         * config/i386/i386.c (classify_argument): Handle V1DImode.
23677         (function_arg_advance_32): Ditto.
23678         (function_arg_32): Ditto.
23679         (struct builtin_description) [IX86_BUILTIN_PADDQ]: Use
23680         mmx_addv1di3 insn pattern.
23681         [IX86_BUILTIN_PSUBQ]: Use mmx_subv1di3 insn pattern.
23682         [IX86_BUILTIN_PSLL?, IX86_BUILTIN_PSRL?, IX86_BUILTIN_PSRA?,
23683         IX86_BUILTIN_PSLL?I, IX86_BUILTIN_PSRL?I, IX86_BUILTIN_PSRA?I,
23684         IX86_BUILTIN_PSLL?I128, IX86_BUILTIN_PSRL?I128, IX86_BUILTIN_PSRA?I128]:
23685         Remove definitions of built-in functions.
23686         (V1DI_type_node): New node.
23687         (v1di_ftype_v1di_int): Ditto.
23688         (v1di_ftype_v1di_v1di): Ditto.
23689         (v2si_ftype_v2si_si): Ditto.
23690         (v4hi_ftype_v4hi_di): Remove node.
23691         (v2si_ftype_v2si_di): Ditto.
23692         (ix86_init_mmx_sse_builtins): Handle V1DImode.
23693         (__builtin_ia32_psll?, __builtin_ia32_psrl?, __builtin_ia32_psra?):
23694         Redefine builtins using def_builtin_const with *_ftype_*_int node.
23695         (__builtin_ia32_psll?i, __builtin_ia32_psrl?i, __builtin_ia32_psra?i):
23696         Add new builtins using def_builtin_const.
23697         (ix86_expand_builtin) [IX86_BUILTIN_PSLL?, IX86_BUILTIN_PSRL?,
23698         IX86_BUILTIN_PSRA?, IX86_BUILTIN_PSLL?I, IX86_BUILTIN_PSRL?I,
23699         IX86_BUILTIN_PSRA?I]: Handle builtin definitions.
23700         * config/i386/mmintrin.h (__v1di): New typedef.
23701         (_mm_add_si64): Cast arguments to __v1di type.
23702         (_mm_sub_si64): Ditto.
23703         (_mm_sll_pi16): Cast __count to __v4hi type.
23704         (_mm_sll_pi32): Cast __count to __v2si type.
23705         (_mm_sll_si64): Cast arguments to __v1di type.
23706         (_mm_srl_pi16): Cast __count to __v4hi type.
23707         (_mm_srl_pi32): Cast __count to __v2si type.
23708         (_mm_srl_si64): Cast arguments to __v1di type.
23709         (_mm_sra_pi16): Cast __count to __v4hi type.
23710         (_mm_sra_pi32): Cast __count to __v2si type.
23711         (_mm_slli_pi16): Use __builtin_ia32_psllwi.
23712         (_mm_slli_pi32): Use __builtin_ia32_pslldi.
23713         (_mm_slli_si64): Use __builtin_ia32_psllqi. Cast __m to __v1di type.
23714         (_mm_srli_pi16): Use __builtin_ia32_psrlwi.
23715         (_mm_srli_pi32): Use __builtin_ia32_psrldi.
23716         (_mm_srli_si64): Use __builtin_ia32_psrlqi. Cast __m to __v1di type.
23717         (_mm_srai_pi16): Use __builtin_ia32_psrawi.
23718         (_mm_srai_pi32): Use __builtin_ia32_psradi.
23719         * config/i386/i386.md (UNSPEC_NOP): Remove unspec definition.
23720         * doc/extend.texi (X86 Built-in Functions) [__builtin_ia32_psll?,
23721         __builtin_ia32_psrl?, __builtin_ia32_psra?, __builtin_ia32_psll?i,
23722         __builtin_ia32_psrl?i, __builtin_ia32_psra?i]: Add new builtins.
23723
23724 2008-03-07  Joseph Myers  <joseph@codesourcery.com>
23725
23726         * doc/include/texinfo.tex: Update to version 2008-03-07.10.
23727
23728 2008-03-07  Peter Bergner  <bergner@vnet.ibm.com>
23729
23730         PR target/35373
23731         * config/rs6000/rs6000.c (rs6000_legitimize_address): Don't generate
23732         reg+const addressing for Altivec modes.  Don't generate reg+reg
23733         addressing for TFmode or TDmode quantities.
23734
23735 2008-03-07  Paolo Bonzini  <bonzini@gnu.org>
23736
23737         * c-common.c (vector_types_convertible_p): Call langhook
23738         instead of comptypes.
23739
23740 2008-03-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
23741
23742         PR tree-opt/35402
23743         * tree-ssa-ccp.c (get_symbol_constant_value): Handle
23744         integral and scalar float variables which have a
23745         NULL DECL_INITIAL.
23746
23747 2008-03-06  Nathan Froyd  <froydnj@codesourcery.com>
23748
23749         * dwarf2out.c (dwarf2out_frame_debug_expr): Consult the
23750         dwarf_register_span hook when emitting unwind information for
23751         register-to-memory saves.
23752         * config/rs6000/rs6000.c (spe_synthesize_frame): Delete.
23753         (rs6000_frame_related): Remove call to spe_synthesize_frame.
23754
23755 2008-03-06  Jakub Jelinek  <jakub@redhat.com>
23756
23757         * gimplify.c (goa_lhs_expr_p): Allow different ADDR_EXPR nodes
23758         for the same VAR_DECL.
23759
23760 2008-03-06  Tom Tromey  <tromey@redhat.com>
23761
23762         * treelang: Delete.
23763         * doc/standards.texi (Standards): Don't mention treelang.
23764         * doc/invoke.texi (Overall Options): Don't mention treelang.
23765         * doc/install.texi (Prerequisites): Don't mention bison or
23766         treelang.
23767         (Configuration): Don't mention treelang.
23768         (Building): Likewise.
23769         * doc/frontends.texi (G++ and GCC): Don't mention treelang.
23770
23771 2008-03-06  Paolo Bonzini  <bonzini@gnu.org>
23772
23773         * simplify-rtx.c (simplify_subreg): Remove useless shifts from
23774         word-extractions out of a multi-word object.
23775
23776 2008-03-06  Richard Guenther  <rguenther@suse.de>
23777
23778         * tree.def (BIT_FIELD_REF): Constrain result type and its precision.
23779         * tree-cfg.c (verify_expr): Verify BIT_FIELD_REF constraints on
23780         result type and precision.
23781         * expr.c (get_inner_reference): Set unsignedp based on the result
23782         type of BIT_FIELD_REF.
23783         * tree.h (BIT_FIELD_REF_UNSIGNED): Remove.
23784         * tree-sra.c (instantiate_element): Do not set BIT_FIELD_REF_UNSIGNED.
23785         (try_instantiate_multiple_fields): Likewise.  Use the correct type
23786         for BIT_FIELD_REF.
23787         (sra_build_assignment): Likewise.
23788         (sra_build_elt_assignment): Likewise.
23789         (sra_explode_bitfield_assignment): Likewise.
23790         * print-tree.c (print_node): Do not check BIT_FIELD_REF_UNSIGNED.
23791         * tree-vect-transform.c (vect_create_epilog_for_reduction): Do not
23792         set BIT_FIELD_REF_UNSIGNED.
23793         (vectorizable_load): Likewise.
23794
23795 2008-03-06  Andreas Krebbel  <krebbel1@de.ibm.com>
23796
23797         * cse.c (cse_extended_basic_block): Invalidate artificial defs
23798         at bb start.
23799
23800 2008-03-06  Richard Guenther  <rguenther@suse.de>
23801
23802         * alias.c (struct alias_set_entry): Move has_zero_child field
23803         to pack with alias_set.
23804
23805 2008-03-05  H.J. Lu  <hongjiu.lu@intel.com>
23806
23807         * config/i386/i386-modes.def: Use 4 byte alignment on DI for
23808         32bit host.
23809
23810 2008-03-05  Ian Lance Taylor  <iant@google.com>
23811
23812         * alias.h (alias_set_type): Change from HOST_WIDE_INT to int.
23813
23814 2008-03-05  Kenneth Zadeck  <zadeck@naturalbridge.com>
23815
23816         * fwprop.c (update_df): Support width and offset parameters of
23817         df_ref_create.
23818         * ra-conflict.c (mark_reg_store, clear_reg_in_live,
23819         global_conflicts): Change DF_REF_EXTRACT to either
23820         DF_REF_ZERO_EXTRACT or DF_REF_SIGN_EXTRACT.  Change
23821         DF_REF_STRICT_LOWER_PART to DF_REF_STRICT_LOW_PART.
23822         * df-scan.c (df_ref_record, df_defs_record,
23823         df_ref_create_structure, df_def_record_1, df_uses_record,
23824         df_get_conditional_uses, df_get_call_refs, df_insn_refs_collect,
23825         df_bb_refs_collect, df_entry_block_defs_collect,
23826         df_exit_block_uses_collect): Support new width and offset fields.
23827         (ref_extract_pool): New storage pool.
23828         (df_free_ref): New function.
23829         (df_reg_chain_unlink, df_free_collection_rec,
23830         df_sort_and_compress_refs): Call df_free_ref.
23831         (df_ref_equal_p, df_ref_compare): Compare offset and width fields
23832         of df_ref_extract.
23833         (df_ref_create_structure): Allocate df_ref_extract if offset and
23834         width fields are used.
23835         (df_def_record_1): Get offset and width from ZERO_EXTRACT.
23836         (df_uses_record): Get offset and width from ZERO_EXTRACT
23837         and SIGN_EXTRACT.
23838         * global.c (build_insn_chain): Change DF_REF_EXTRACT to either
23839         DF_REF_ZERO_EXTRACT or DF_REF_SIGN_EXTRACT.  Change
23840         DF_REF_STRICT_LOWER_PART to DF_REF_STRICT_LOW_PART.
23841         * df.h (df_ref_flags): Change DF_REF_EXTRACT to either
23842         DF_REF_ZERO_EXTRACT or DF_REF_SIGN_EXTRACT.  Change
23843         DF_REF_STRICT_LOWER_PART to DF_REF_STRICT_LOW_PART.
23844         (df_ref_extract): New structure.
23845         (DF_REF_WIDTH, DF_REF_OFFSET): New macros.
23846         (df_ref_create): Add width and offset parameters.
23847
23848 2008-03-05  Richard Guenther  <rguenther@suse.de>
23849
23850         * tree-ssa-structalias.c (get_constraint_for_component_ref):
23851         Use ranges_overlap_p.
23852         (offset_overlaps_with_access): Rename
23853         to ranges_overlap_p and move ...
23854         * tree-flow-inline.h (ranges_overlap_p): ... here.
23855
23856         * tree.h (get_inner_reference, handled_component_p): Update
23857         comments.
23858
23859         * tree.h (record_component_aliases, get_alias_set,
23860         alias_sets_conflict_p, alias_sets_must_conflict_p,
23861         objects_must_conflict_p): Move declarations ...
23862         * alias.h (record_component_aliases, get_alias_set,
23863         alias_sets_conflict_p, alias_sets_must_conflict_p,
23864         objects_must_conflict_p): ... here.
23865         Include coretypes.h.
23866         * Makefile.in (ALIAS_H): Add coretypes.h dependency.
23867
23868 2008-03-05  Aldy Hernandez  <aldyh@redhat.com>
23869
23870         * cfg.c: Include tree-flow.h.
23871         (remove_edge_raw): Call redirect_edge_var_map_clear.
23872         (redirect_edge_succ_nodup): Call redirect_edge_var_map_dup.
23873         * tree-flow-inline.h (redirect_edge_var_map_def): New.
23874         (redirect_edge_var_map_result): New.
23875         * tree-cfgcleanup.c (remove_forwarder_block_with_phi): Replace
23876         PENDING_STMT use with redirect_edge_var_map_*.
23877         * tree-ssa.c (edge_var_maps): New definition.
23878         (redirect_edge_var_map_add): New.
23879         (redirect_edge_var_map_clear): New.
23880         (redirect_edge_var_map_dup): New.
23881         (redirect_edge_var_map_vector): New.
23882         (redirect_edge_var_map_destroy): New.
23883         (ssa_redirect_edge): Replace PENDING_STMT use with
23884         redirect_edge_var_map_*.
23885         (flush_pending_stmts): Same.
23886         (delete_tree_ssa): Destroy edge var map.
23887         * tree-flow.h (struct _edge_var_map): New.
23888         Define edge_var_map vector type.
23889         Declare redirect_edge_var_map_* prototypes.
23890         * Makefile.in (cfg.o): Depend on TREE_FLOW_H.
23891         * tree-cfg.c (reinstall_phi_args): Replace
23892         PENDING_STMT use with redirect_edge_var_map_*.
23893
23894 2008-03-05  Richard Guenther  <rguenther@suse.de>
23895
23896         PR tree-optimization/35472
23897         * tree-ssa-dse.c (dse_optimize_stmt): Do not delete a store
23898         whose single use_stmt has a overlapping set of loaded and
23899         stored symbols as that use_stmt might be a noop assignment then.
23900
23901 2008-03-05  Joel Sherrill <joel.sherrill@oarcorp.com>
23902
23903         * gthr-rtems.h: Implement __gthread_mutex_destroy.
23904
23905 2008-03-05  Richard Guenther  <rguenther@suse.de>
23906
23907         PR c++/35336
23908         * tree.def (BIT_FIELD_REF): Document that operands 1 and 2
23909         should be constants.
23910         * tree-cfg.c (verify_expr): Verify it.
23911         * fold-const.c (fold_truthop): Remove code generating
23912         BIT_FIELD_REFs of structure bases.
23913         (fold_binary): Likewise.
23914         (fold_ternary): Position and size of BIT_FIELD_REFs are
23915         always host integers.
23916         (make_bit_field_ref): Remove.
23917         (optimize_bit_field_compare): Remove.
23918         (all_ones_mask_p): Remove.
23919
23920 2008-03-05  Gabor Loki  <loki@gcc.gnu.org>
23921
23922         PR gcc/33009
23923         * rtl-factoring.c (clear_regs_live_in_seq): Fix backward steps.
23924         (split_block_and_df_analyze): New. Split basic block and rebuild
23925         dataflow.
23926         (block_label_after): Use SPLIT_BLOCK_AND_DF_ANALYZE instead of
23927         SPLIT_BLOCK.
23928         (split_pattern_seq): Likewise.
23929         (erase_matching_seqs): Likewise.
23930         (split_pattern_seq): Skip return insn in case of REG_NORETURN note.
23931
23932 2008-03-04  Geoff Keating  <geoffk@apple.com>
23933
23934         * fold-const.c (tree_single_nonnegative_warnv_p): Fix mixed
23935         declaration and code.
23936         (tree_invalid_nonnegative_warnv_p): Likewise.
23937
23938 2008-03-05  Serge Belyshev  <belyshev@depni.sinp.msu.ru>
23939
23940         * doc/install.texi (Testing): Correct quoting for the RUNTESTFLAGS
23941         examples.  Truncate option-names then causing overfull hbox.
23942
23943 2008-03-04  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
23944
23945         PR target/35222
23946         * configure.ac (CONFIG_SJLJ_EXCEPTIONS): Force SJLJ exceptions
23947         on hpux10.
23948         * configure: Rebuilt.
23949
23950 2008-03-04  Rafael Espíndola  <espindola@google.com>
23951
23952         * fold-const.c (tree_simple_nonnegative_warnv_p): New.
23953         (tree_unary_nonnegative_warnv_p): New.
23954         (tree_binary_nonnegative_warnv_p): New.
23955         (tree_single_nonnegative_warnv_p): New.
23956         (tree_invalid_nonnegative_warnv_p): New.
23957         (tree_expr_nonnegative_warnv_p): Redefine in term of the new functions.
23958
23959 2008-03-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23960
23961         PR 28322
23962         * opts.c (handle_option): Postpone 'unknown option' errors only for
23963         warning options.
23964
23965 2008-03-04  H.J. Lu  <hongjiu.lu@intel.com>
23966
23967         PR target/35453
23968         * config/i386/smmintrin.h (SIDD_XXX): Renamed to ...
23969         (_SIDD_XXX): This.
23970
23971 2008-03-04  Rafael Espíndola  <espindola@google.com>
23972
23973         * fold-const.c (tree_unary_nonzero_warnv_p): New.
23974         (tree_binary_nonzero_warnv_p): New.
23975         (tree_single_nonzero_warnv_p): New.
23976         (tree_expr_nonzero_warnv_p): Redefine using the new functions.
23977
23978 2008-03-04  Uros Bizjak  <ubizjak@gmail.com>
23979
23980         PR middle-end/35456
23981         * fold-const.c (fold_cond_expr_with_comparison): Prevent
23982         transformations for modes that have signed zeros.
23983         * ifcvt.c (noce_try_abs): Ditto.
23984
23985 2008-03-04  Joseph Myers  <joseph@codesourcery.com>
23986
23987         * config/i386/i386.c (override_options): Force
23988         -maccumulate-outgoing-args on if TARGET_STACK_PROBE.
23989
23990 2008-03-04  Jan Hubicka  <jh@suse.cz>
23991
23992         PR c++/35262
23993         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Fix typo
23994         in last commit.
23995
23996 2008-03-04  Danny Smith  <dannysmith@users.sourceforge.net>
23997
23998         * config/i386/i386.md (allocate_stack_worker_32): Use  __chkstk
23999         label to probe the stack.
24000
24001 2008-03-04  Danny Smith  <dannysmith@users.sourceforge.net>
24002
24003         * gthr-win32.h [__GTHREAD_HIDE_WIN32API]
24004         (__gthr_win32_mutex_destroy): Declare.
24005         [__GTHREAD_HIDE_WIN32API] (__gthread_mutex_destroy): Use
24006         __gthr_win32_mutex_destroy.
24007         * config/i386/gthr-win32.c  (__gthr_win32_mutex_destroy): Define.
24008
24009 2008-03-03  Jan Hubicka  <jh@suse.cz>
24010
24011         PR c++/35262
24012         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Be more
24013         aggressive on inlining cold calls.
24014
24015 2008-03-03  Richard Guenther  <rguenther@suse.de>
24016
24017         * tree-ssa-sccvn.c (visit_reference_op_store): Do not insert
24018         struct copies into the expression table.
24019         (simplify_unary_expression): Handle VIEW_CONVERT_EXPR.
24020         (try_to_simplify): Likewise.
24021         * fold-const.c (fold_unary): Fold VIEW_CONVERT_EXPR of
24022         integral and pointer arguments which do not change the
24023         precision to NOP_EXPRs.
24024         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Adjust
24025         VIEW_CONVERT_EXPR case.
24026
24027 2008-03-02  Sebastian Pop  <sebastian.pop@amd.com>
24028
24029         * tree-scalar-evolution.c (instantiate_parameters_1): An SSA_NAME
24030         defined in a loop at depth 0 is invariant.
24031         * tree-chrec.c (evolution_function_is_invariant_rec_p): Ditto.
24032         * tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Should never
24033         be called at loop depth 0.
24034
24035 2008-03-02  Jakub Jelinek  <jakub@redhat.com>
24036
24037         PR driver/35420
24038         * gcc.c (process_command): Update copyright notice dates.
24039         * gcov.c (print_version): Likewise.
24040         * gcov-dump.c (print_version): Likewise.
24041         * mips-tfile.c (main): Likewise.
24042         * mips-tdump.c (main): Likewise.
24043
24044 2008-03-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24045
24046         PR 24924
24047         * c-common.c (flag_permissive): Delete.
24048         (constant_expression_warnings): Check flags first.
24049         (constant_expression_error): New.
24050         * c-common.h (flag_permissive): Delete.
24051         (constant_expression_error): Declare.
24052         * flags.h (flag_permissive): Declare. Update description.
24053         * diagnostic.c (pedwarn): Update.
24054         (permerror): New.
24055         * diagnostic.h: (pedantic_error_kind): Rename as pedantic_warning_kind.
24056         (permissive_error_kind): New.
24057         * toplev.c (flag_permissive): Define. Update description.
24058         * toplev.h (permissive_error_kind): Declare.
24059         * c-errors.c (pedwarn_c99): Use pedantic_warning_kind.
24060         (pedwarn_c90): Use pedantic_warning_kind.
24061         * c-opts.c (c_common_post_options): flag_permissive does not affect
24062         flag_pedantic_errors.
24063
24064 2008-03-02  Joseph Myers  <joseph@codesourcery.com>
24065
24066         * libgcc2.c (__addvSI3, __addvsi3, __addvDI3, __subvSI3,
24067         __subvsi3, __subvDI3, __negvSI2, __negvsi2, __negvDI2, __absvSI2,
24068         __absvsi2, __absvDI2): Use unsigned arithmetic.
24069
24070 2008-03-02  Andi Kleen  <ak@suse.de>
24071             Richard Guenther  <rguenther@suse.de>
24072
24073         * struct-equiv.c: Remove file.
24074         * cfg_cleanup.c (condjump_equiv_p): Remove.
24075         * Makefile.in (OBJS-common): Remove struct-equiv.o.
24076         (struct-equiv.o): Remove rule.
24077         * basic-block.h (struct_equiv_checkpoint, STRUCT_EQUIV_*,
24078         insns_match_p, struct_equiv_block_eq, struct_equiv_init,
24079         rtx_equiv_p, condjump_equiv_p): Remove prototypes.
24080
24081 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
24082
24083         * ifcvt.c (noce_process_if_block): Try to handle only the then
24084         block if the else block exists but isn't suitable.
24085
24086 2008-03-01  Janne Blomqvist  <jb@gcc.gnu.org>
24087
24088         PR gcc/35063
24089         * gthr-posix.h (__gthread_mutex_destroy): Remove extra declarations.
24090         * gthr-posix95.h (__gthread_mutex_destroy): Likewise. Note this fixes
24091         regression from previous patch.
24092
24093 2008-03-01  Janne Blomqvist  <jb@gcc.gnu.org>
24094
24095         PR gcc/35063
24096         * gthr.h: Add __gthread_mutex_destroy as a function that must be
24097         implemented.
24098         * gthr-vxworks.h (__gthread_mutex_destroy): Null implementation.
24099         * gthr-single.h (__gthread_mutex_destroy): Likewise.
24100         * gthr-rtems.h (__gthread_mutex_destroy): Likewise.
24101         * gthr-mipssde.h (__gthread_mutex_destroy): Likewise.
24102         * gthr-nks.h (__gthread_mutex_destroy): Likewise.
24103         * gthr-solaris.h (__gthread_mutex_destroy): Call mutex_destroy.
24104         * gthr-win32.h (__GTHREAD_MUTEX_DESTROY_FUNCTION): Remove.
24105         (__gthread_mutex_destroy_function): Rename to
24106         __gthread_mutex_destroy.
24107         * gthr-dce.h (__gthread_mutex_destroy): Call
24108         pthread_mutex_destroy.
24109         * gthr-tpf.h (__gthread_mutex_destroy): Likewise.
24110         * gthr-posix.h (__gthread_mutex_destroy): Likewise.
24111         * gthr-posix95.h (__gthread_mutex_destroy): Likewise.
24112
24113 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
24114
24115         * df-scan.c (df_ref_chain_change_bb): Simplify.
24116         (df_insn_change_bb): Add new_bb argument.  Simplify.  Call
24117         set_block_for_insn if there's any change.
24118         * df.h ((df_insn_change_bb): Fix prototype.
24119         * cfgrtl.c (update_bb_for_insn_chain): Pass bb to
24120         df_insn_change_bb, don't call set_block_for_insn.
24121         * emit-rtl.c (reorder_insns): Likewise.
24122         * haifa-sched.c (move_insn): Likewise.
24123
24124 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
24125
24126         * rtlanal.c (loc_mentioned_in_p): Test XVECEXPs correctly.
24127
24128 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
24129
24130         * tree-flow-inline.h (next_readonly_imm_use): Return
24131         NULL_USE_OPERAND_P after the end.
24132
24133 2008-03-01  Richard Guenther  <rguenther@suse.de>
24134
24135         PR tree-optimization/35411
24136         * tree-sra.c (sra_build_assignment): Split conversion to
24137         final type to a separate statement if we are not assigning
24138         to a register.
24139
24140 2008-02-29  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
24141
24142         * fold-const.c (fold_convertible_p): Correct the logic to follow
24143         that in fold_convert().
24144
24145 2008-02-29  Douglas Gregor  <doug.gregor@gmail.com>
24146
24147         PR c++/35315
24148         * tree-inline.c (build_duplicate_type): When we make a
24149         duplicate type, make it unique in the canonical types system.
24150
24151 2008-02-29  Tom Tromey  <tromey@redhat.com>
24152
24153         * toplev.c (input_file_stack, input_file_stack_tick, fs_p,
24154         input_file_stack_history, input_file_stack_restored): Remove.
24155         (push_srcloc, pop_srcloc, restore_input_file_stack): Likewise.
24156         * input.h (struct file_stack): Remove.
24157         (push_srcloc, pop_srcloc, restore_input_file_stack): Likewise.
24158         (input_file_stack, input_file_stack_tick, INPUT_FILE_STACK_BITS):
24159         Likewise.
24160         * diagnostic.h (struct diagnostic_context) <last_module>: Change
24161         type.
24162         (diagnostic_last_module_changed): Add 'map' argument.
24163         (diagnostic_set_last_function): Likewise.
24164         * diagnostic.c (undiagnostic_report_current_module): Iterate using
24165         line map, not input_file_stack.
24166         * c-lex.c (fe_file_change): Don't use push_srcloc or pop_srcloc.
24167
24168 2008-02-29  Paul Brook  <paul@codesourcery.com>
24169
24170         * config/arm/arm.md (arm_addsi3): Add r/k/n alternative.
24171
24172 2008-02-29  Paul Brook  <paul@codesourcery.com>
24173
24174         * config/arm/ieee754-df.S (muldf3): Use RET macros.
24175
24176 2008-02-29  Richard Guenther  <rguenther@suse.de>
24177
24178         * tree-ssa-pre.c (get_sccvn_value): Create missing VNs via
24179         vn_lookup_or_add.
24180         * tree-ssa-sccnv.c (visit_reference_op_store): Use the rhs
24181         value for comparing for a store match.
24182         (simplify_unary_expression): Do nothing for SSA_NAMEs.
24183         (try_to_simplify): Do not do a full-blown reference lookup.
24184
24185 2008-02-29  Kaz Kojima  <kkojima@gcc.gnu.org>
24186
24187         * config/sh/sh.c (sh_scalar_mode_supported_p): New function.
24188         (TARGET_SCALAR_MODE_SUPPORTED_P): Define.
24189
24190         * config/sh/sh.h (OVERRIDE_OPTIONS): Don't warn for profiling.
24191
24192 2008-02-29  Sebastian Pop  <sebastian.pop@amd.com>
24193
24194         * tree-loop-linear.c (try_interchange_loops): Compare memory access
24195         strides against cache sizes.
24196
24197 2008-02-29  Kaz Kojima  <kkojima@gcc.gnu.org>
24198
24199         * config/sh/sh.c (sh_secondary_reload): Handle loading a float
24200         constant to fpul.
24201
24202 2008-02-28  Richard Sandiford  <rsandifo@nildram.co.uk>
24203
24204         * simplify-rtx.c (simplify_unary_operation_1): Extend the handling
24205         of SUBREG_PROMOTED_VAR_P to cope with cases where the extended value
24206         is smaller than the original promoted value.
24207         (simplify_subreg): If OP is a SUBREG, try to preserve its
24208         SUBREG_PROMOTED_VAR_P information.
24209
24210 2008-02-28  Steven Bosscher  <stevenb.gcc@gmail.com>
24211
24212         * tree-ssa-sccvn (vn_ssa_aux_obstack): New obstack.
24213         (VN_INFO_GET): Allocate new objects on the obstack.
24214         (init_scc_vn): Initialize the obstack.  Use XDELETE instead of free
24215         for rpo_numbers_temp, for consistency.
24216         (free_scc_vn): Free the obstack.
24217
24218 2008-02-28  Sebastian Pop  <sebastian.pop@amd.com>
24219
24220         * doc/invoke.texi: Document -ftree-loop-distribution.
24221         * tree-loop-distribution.c: New.
24222         * tree-pass.h (pass_loop_distribution): New.
24223         * graphds.h (struct graph): Add htab_t indices.
24224         * timevar.def (TV_TREE_LOOP_DISTRIBUTION): New.
24225         * tree-vectorizer.c (rename_variables_in_loop): Extern.
24226         (slpeel_tree_duplicate_loop_to_edge_cfg): Init PENDING_STMT to NULL.
24227         * tree-vectorizer.h (tree_duplicate_loop_on_edge): Declared.
24228         * tree-data-ref.c (debug_data_dependence_relations): New.
24229         (dump_data_dependence_relation): Also print data references.
24230         (free_data_ref): Extern.
24231         (same_access_functions): Moved...
24232         (find_vertex_for_stmt): Renamed rdg_vertex_for_stmt.
24233         (dump_rdg_vertex, debug_rdg_vertex, dump_rdg_component,
24234         debug_rdg_component, dump_rdg, debug_rdg, dot_rdg_1, dot_rdg,
24235         struct rdg_vertex_info, rdg_vertex_for_stmt): New.
24236         (create_rdg_edge_for_ddr, create_rdg_vertices): Cleaned up.
24237         (stmts_from_loop): Skip LABEL_EXPR.
24238         (hash_stmt_vertex_info, eq_stmt_vertex_info, hash_stmt_vertex_del):
24239         New.
24240         (build_rdg): Initialize rdg->indices htab.
24241         (free_rdg, stores_from_loop, ref_base_address,
24242         rdg_defs_used_in_other_loops_p, have_similar_memory_accesses,
24243         have_similar_memory_accesses_1, ref_base_address_1,
24244         remove_similar_memory_refs): New.
24245         * tree-data-ref.h: Depend on tree-chrec.h.
24246         (debug_data_dependence_relations, free_data_ref): Declared.
24247         (same_access_functions): ... here.
24248         (ddr_is_anti_dependent, ddrs_have_anti_deps, ddr_dependence_level):
24249         New.
24250         (struct rdg_vertex): Add has_mem_write and has_mem_reads.
24251         (RDGV_HAS_MEM_WRITE, RDGV_HAS_MEM_READS, RDG_STMT,
24252         RDG_MEM_WRITE_STMT, RDG_MEM_READS_STMT): New.
24253         (dump_rdg_vertex, debug_rdg_vertex, dump_rdg_component,
24254         debug_rdg_component, dump_rdg, debug_rdg, dot_rdg,
24255         rdg_vertex_for_stmt): Declared.
24256         (struct rdg_edge): Add level.
24257         (RDGE_LEVEL): New.
24258         (free_rdg, stores_from_loop, remove_similar_memory_refs,
24259         rdg_defs_used_in_other_loops_p, have_similar_memory_accesses):
24260         Declared.
24261         (rdg_has_similar_memory_accesses): New.
24262         * tree-vect-analyze.c: Remove unused static decls.
24263         * lambda.h (dependence_level): New.
24264         * common.opt (ftree-loop-distribution): New.
24265         * tree-flow.h (mark_virtual_ops_in_bb,
24266         slpeel_tree_duplicate_loop_to_edge_cfg,
24267         rename_variables_in_loop): Declared.
24268         * Makefile.in (TREE_DATA_REF_H): Depend on tree-chrec.h.
24269         (OBJS-common): Add tree-loop-distribution.o.
24270         (tree-loop-distribution.o): New rule.
24271         * tree-cfg.c (mark_virtual_ops_in_bb): New.
24272         (mark_virtual_ops_in_region): Use mark_virtual_ops_in_bb.
24273         * passes.c (init_optimization_passes): Schedule pass_loop_distribution.
24274
24275 2008-02-28  Joseph Myers  <joseph@codesourcery.com>
24276
24277         PR target/33963
24278         * tree.c (handle_dll_attribute): Disallow TYPE_DECLs for types
24279         other than structures and unions.
24280
24281 2008-02-28  Richard Guenther  <rguenther@suse.de>
24282
24283         Revert:
24284         2008-02-26  Richard Guenther  <rguenther@suse.de>
24285
24286         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
24287         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
24288         (lookup_decl_from_uid): Declare.
24289         (remove_decl_from_map): Likewise.
24290         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
24291         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
24292         (decl_for_uid_map): New global hashtable mapping DECL_UID
24293         to the decl tree.
24294         (init_ttree): Allocate it.
24295         (insert_decl_to_uid_decl_map): New helper function.
24296         (make_node_stat): Insert new decls into the map.
24297         (copy_node_stat): Likewise.
24298         (lookup_decl_from_uid): New function.
24299         (remove_decl_from_map): Likewise.
24300         (print_decl_for_uid_map_statistics): New helper.
24301         (dump_tree_statistics): Call it.
24302
24303         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
24304         (referenced_var_iterator): Adjust.
24305         (FOR_EACH_REFERENCED_VAR): Adjust.
24306         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
24307         (num_referenced_vars): Adjust.
24308         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
24309         (first_referenced_var): Remove.
24310         (end_referenced_vars_p): Likewise.
24311         (next_referenced_var): Likewise.
24312         (referenced_var_iterator_set): New helper function.
24313         * tree-dfa.c (referenced_var_lookup): Adjust.
24314         (referenced_var_check_and_insert): Likewise.
24315         (remove_referenced_var): Likewise.
24316         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
24317         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
24318         (verify_call_clobbering): Likewise.
24319         (verify_memory_partitions): Likewise.
24320         (init_tree_ssa): Allocate bitmap instead of hashtable for
24321         referenced_vars.
24322         (delete_tree_ssa): Adjust.
24323         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
24324         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
24325         (compute_tag_properties): Likewise.
24326         (set_initial_properties): Likewise.
24327         (find_partition_for): Likewise.
24328         (update_reference_counts): Likewise.
24329         (dump_may_aliases_for): Likewise.
24330         * tree-ssa-operands.c (add_virtual_operand): Likewise.
24331         (add_call_clobber_ops): Likewise.
24332         (add_call_read_ops): Likewise.
24333         (get_asm_expr_operands): Likewise.
24334         * tree-into-ssa.c (dump_decl_set): Likewise.
24335         (update_ssa): Likewise.
24336         * tree-sra.c (scan_function): Likewise.
24337         (decide_instantiations): Likewise.
24338         (scalarize_parms): Likewise.
24339         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
24340         (dsa_named_for): Likewise.
24341         * tree-ssa-structalias.c (update_alias_info): Likewise.
24342         (merge_smts_into): Likewise.
24343
24344 2008-02-27  David Daney  <ddaney@avtrex.com>
24345
24346         PR target/34409
24347         * config/mips/iris.h (MIPS_DEBUGGING_INFO): Define.
24348         * config/mips/openbsd.h (MIPS_DEBUGGING_INFO): Same.
24349         * config/mips/sde.h (MIPS_DEBUGGING_INFO): Remove undef.
24350         * config/mips/vxworks.h (MIPS_DEBUGGING_INFO): Same.
24351         * config/mips/mips.h (MIPS_DEBUGGING_INFO): Remove define.
24352
24353 2008-02-27  Uros Bizjak  <ubizjak@gmail.com>
24354
24355         PR target/25477
24356         * config/darwin-ppc-ldouble-patch.def (BUILT_IN_NANL): Add.
24357         (BUILT_IN_NEXTTOWARD): Remove.
24358         (BUILT_IN_NEXTTOWARDF): Ditto.
24359         * config/darwin.c (darwin_patch_builtin): Use ACONCAT instead of
24360         alloca/strcpy/strcat.  Remove commented-out code.  Fix whitespace.
24361
24362 2008-02-27  Tom Tromey  <tromey@redhat.com>
24363
24364         * tree-dump.c (dequeue_and_dump) <FUNCTION_DECL>: Check
24365         DECL_SAVED_TREE, not DECL_LANG_SPECIFIC, when dumping body.
24366
24367 2008-02-27  Jan Beulich  <jbeulich@novell.com>
24368
24369         * c-decl.c (merge_decls): Use DECL_USER_ALIGN() on olddecl to
24370         update the respective field on newdecl.
24371
24372 2008-02-27  Revital Eres  <eres@il.ibm.com>
24373
24374         PR rtl-optimization/34999
24375         * bb-reorder.c (add_labels_and_missing_jumps): Do not handle
24376         crossing edges that ends with a call insn.
24377         (fix_up_fall_thru_edges): Handle crossing edges that ends with a
24378         call insn and clear the EDGE_CROSSING flag of the crossing edge
24379         when fixing fallthru edges.
24380
24381 2008-02-27  Richard Guenther  <rguenther@suse.de>
24382
24383         PR middle-end/35390
24384         * fold-const.c (fold_unary): Return the correct argument,
24385         converted to the result type.
24386
24387 2008-02-27  Richard Guenther  <rguenther@suse.de>
24388
24389         PR middle-end/34971
24390         * expr.c (expand_expr_real_1): Assert on rotates that operate
24391         on partial modes.
24392         * fold-const.c (fold_binary): Use the types precision, not the
24393         bitsize of the mode if folding rotate expressions.  Build rotates
24394         only for full modes.
24395
24396 2008-02-27  Jakub Jelinek  <jakub@redhat.com>
24397
24398         * c-ppoutput.c (scan_translation_unit): Handle CPP_PRAGMA
24399         and CPP_PRAGMA_EOL.
24400         * c-pragma.c (pragma_ns_name): New typedef.
24401         (registered_pp_pragmas): New variable.
24402         (c_pp_lookup_pragma): New function.
24403         (c_register_pragma_1): If flag_preprocess_only, do nothing
24404         for non-expanded pragmas, for expanded ones push pragma's
24405         namespace and name into registered_pp_pragmas vector.
24406         (c_invoke_pragma_handler): Register OpenMP pragmas even when
24407         flag_preprocess_only, don't register GCC pch_preprocess
24408         pragma if flag_preprocess_only.
24409         * c-opts.c (c_common_init): Call init_pragma even if
24410         flag_preprocess_only.
24411         * c-pragma.c (c_pp_lookup_pragma): New prototype.
24412         * config/darwin.h (DARWIN_REGISTER_TARGET_PRAGMAS): Don't call
24413         cpp_register_pragma if flag_preprocess_only.
24414
24415 2008-02-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
24416
24417         PR c/28800
24418         * c-parser.c (c_parser_translation_unit): Warn for empty
24419         translation unit, not empty source file.
24420
24421 2008-02-26  Paul Brook  <paul@codesourcery.com>
24422
24423         * config/arm/arm.c (thumb_set_frame_pointer): Ensure SP is first
24424         operand for Thumb-2.
24425         * config/arm/arm.h (reg_class): Add CORE_REGS.
24426         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Ditto.
24427         (BASE_REG_CLASS): Use CORE_REGS.
24428         (PREFERRED_RELOAD_CLASS): Add STACK_REG.
24429         (REGNO_MODE_OK_FOR_REG_BASE_P): Use REGNO_MODE_OK_FOR_BASE_P.
24430         (REGNO_OK_FOR_INDEX_P): Exclude SP.
24431         (ARM_REG_OK_FOR_INDEX_P): Always define.  Use
24432         ARM_REGNO_OK_FOR_INDEX_P.
24433         (ARM_PRINT_OPERAND_ADDRESS): Swap operands for [reg, sp].
24434         * config/arm/arm.md (arm_addsi3, thumb1_addsi3, arm_subsi3_insn,
24435         arm_movsi_insn, thumb1_movsi_insni, stack_tie): Add "k" alternatives.
24436         (ldm/stm peepholes): Ditto.
24437         * config/arm/thumb2.md (thumb2_movdi): Add "k" alternatives.
24438         * config/arm/vfp.md (arm_movsi_vfp, thumb2_movsi_vfp): Ditto.
24439         * config/arm/iwmmxt.md (iwmmxt_movsi_insn): Ditto.
24440         * config/arm/constraints.md: Enable "k" constraint on ARM.
24441
24442 2008-02-27  Ben Elliston  <bje@au.ibm.com>
24443
24444         * config/rs6000/rs6000.c: Annotate cache line size field in all
24445         instances of struct processor_costs.
24446
24447 2008-02-26  David Edelsohn  <edelsohn@gnu.org>
24448
24449         * dbgcnt.def (cfg_cleanup, cprop1, cprop2, dce_fast, dce_ud, dse1,
24450         dse2, gcse, if_conversion, if_after_combine, if_after_reload,
24451         jump_bypass): New counters.
24452         * cfgcleanup.c (cleanup_cfg): Add dbg_cnt.
24453         * dce.c (gate_ud_dce): Same.
24454         (gate_fast_dce): Same.
24455         * dse.c (gate_dse1): New function.
24456         (gate_dse2): New function.
24457         (gate_dse): Merge results of new gate functions.
24458         * gcse.c (gcse_main): Bracket cprop1 and cprop2 with dbg_cnt.
24459         (gate_handle_jump_bypass): Add dbg_cnt.
24460         (gate_handle_gcse): Add dbg_cnt.
24461         * ifcvt.c (gate_handle_if_conversion): Same.
24462         (gate_handle_if_after_combine): Same.
24463         (gate_handle_if_after_reload): Same.
24464         * Makefile.in: Add DBGCNT_H to cfgcleanup.o and ifcvt.o.
24465
24466 2008-02-26  Edmar Wienskoski  <edmar@freescale.com>
24467
24468         * config/rs6000/rs6000.c (processor_costs): Update e300 cache
24469         line sizes.
24470         * doc/invoke.texi: Add e300c2 and e300c3 to list of cpus.
24471
24472 2008-02-26  Jason Merrill  <jason@redhat.com>
24473
24474         PR c++/35315
24475         * attribs.c (decl_attributes): Leave ATTR_FLAG_TYPE_IN_PLACE
24476         alone if it's the naming decl for the type's main variant.
24477
24478 2008-02-26  Tom Tromey  <tromey@redhat.com>
24479
24480         * system.h (USE_MAPPED_LOCATION): Poison.
24481         * Makefile.in (GTFILES): Put CPP_ID_DATA_H first.
24482         * tree-cfg.c (make_cond_expr_edges): Remove old location code.
24483         (make_goto_expr_edges): Likewise.
24484         (remove_bb): Likewise.
24485         (execute_warn_function_return): Likewise.
24486         * basic-block.h (struct edge_def) <goto_locus>: Change type to
24487         location_t.
24488         * c-common.c (fname_decl): Remove old location code.
24489         * tree-vect-transform.c (vect_finish_stmt_generation): Remove old
24490         location code.
24491         * rtl.h (ASM_OPERANDS_SOURCE_LOCATION): Remove old-location
24492         variant.
24493         (ASM_INPUT_SOURCE_LOCATION): Likewise.
24494         (gen_rtx_ASM_INPUT): Likewise.
24495         (gen_rtx_ASM_INPUT_loc): Likewise.
24496         (get_rtx_asm_OPERANDS): Remove.
24497         * cfglayout.c (insn_locators_alloc): Remove old location code.
24498         (set_curr_insn_source_location): Likewise.
24499         (curr_insn_locator): Likewise.
24500         * print-tree.c (print_node): Remove old location code.
24501         * tree-mudflap.c (mf_varname_tree): Remove old location code.
24502         (mf_file_function_line_tree): Remove test of USE_MAPPED_LOCATION.
24503         * cfgexpand.c (expand_gimple_cond_expr): Don't use
24504         location_from_locus.
24505         (construct_exit_block): Remove old location code.
24506         * emit-rtl.c (force_next_line_note): Remove old location code.
24507         * profile.c (branch_prob): Remove old location code.
24508         * tree-vectorizer.h (LOC, UNKNOWN_LOC, EXPR_LOC, LOC_FILE,
24509         LOC_LINE): Remove old-location variants.
24510         * langhooks.c (lhd_print_error_function): Remove old location
24511         code.
24512         * configure, config.in: Rebuilt.
24513         * configure.ac (--enable-mapped-location): Remove.
24514         * c-decl.c (c_init_decl_processing): Remove old location code.
24515         (finish_function): Likewise.
24516         * recog.c (decode_asm_operands): Remove old location code.
24517         * c-pch.c (c_common_read_pch): Remove old location code.
24518         * rtl.def (ASM_INPUT, ASM_OPERANDS): Remove old location
24519         variants.
24520         * gimple-low.c (lower_function_body): Remove old location code.
24521         * toplev.c (unknown_location): Remove.
24522         (push_srcloc): Remove old-location variant.
24523         (process_options): Remove old location code.
24524         (lang_dependent_init): Likewise.
24525         * input.h (UNKNOWN_LOCATION): Move definition.
24526         (location_t): Undeprecate.
24527         (source_locus): Remove.
24528         (location_from_locus): Remove.
24529         (struct location_s): Remove.
24530         Remove all old-location code.
24531         (input_line, input_filename): Remove.
24532         * final.c (final_scan_insn): Remove old location code.
24533         * diagnostic.c (diagnostic_build_prefix): Remove
24534         USE_MAPPED_LOCATION test.
24535         * tree.h (gimple_stmt) <locus>: Now a location_t.
24536         (tree_exp) <locus>: Likewise.
24537         (DECL_IS_BUILTIN): Remove old-location variant.
24538         (annotate_with_file_line, annotate_with_locus): Likewise.
24539         (expr_locus, set_expr_locus): Update.
24540         * tree.c (build1_stat): Remove old location code.
24541         (last_annotated_node): Remove.
24542         (annotate_with_file_line): Remove old-location variant.
24543         (annotate_with_locus): Likewise.
24544         (expr_location): Remove old location code.
24545         (set_expr_location): Likewise.
24546         (expr_has_location): Likewise.
24547         (expr_locus): Likewise.
24548         (set_expr_locus): Likewise.
24549         (expr_filename): Don't use location_from_locus.
24550         (expr_lineno): Likewise.
24551         * rtl-error.c (location_for_asm): Remove old location code.
24552         * c-lex.c (cb_line_change): Remove old location code.
24553         (fe_file_change): Likewise.
24554         (cb_def_pragma): Likewise.
24555         (c_lex_with_flags): Likewise.
24556         * gengtype.c (do_typedef): Don't special-case location types.
24557         (define_location_structures): Remove.
24558         (main): Don't call define_location_structures.
24559         * tree-pretty-print.c (dump_implicit_edges): Remove old location
24560         code.
24561
24562 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24563
24564         PR 26264
24565         * builtins.def (BUILT_IN_STDARG_START): Remove.
24566         * builtins.c (expand_builtin): Remove BUILT_IN_STDARG_START.
24567         * tree-stdarg.c (execute_optimize_stdarg): Likewise.
24568         * tree-inline.c (inline_forbidden_p_1): Likewise.
24569
24570 2008-02-26  Richard Guenther  <rguenther@suse.de>
24571
24572         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
24573         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
24574         (lookup_decl_from_uid): Declare.
24575         (remove_decl_from_map): Likewise.
24576         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
24577         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
24578         (decl_for_uid_map): New global hashtable mapping DECL_UID
24579         to the decl tree.
24580         (init_ttree): Allocate it.
24581         (insert_decl_to_uid_decl_map): New helper function.
24582         (make_node_stat): Insert new decls into the map.
24583         (copy_node_stat): Likewise.
24584         (lookup_decl_from_uid): New function.
24585         (remove_decl_from_map): Likewise.
24586         (print_decl_for_uid_map_statistics): New helper.
24587         (dump_tree_statistics): Call it.
24588
24589         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
24590         (referenced_var_iterator): Adjust.
24591         (FOR_EACH_REFERENCED_VAR): Adjust.
24592         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
24593         (num_referenced_vars): Adjust.
24594         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
24595         (first_referenced_var): Remove.
24596         (end_referenced_vars_p): Likewise.
24597         (next_referenced_var): Likewise.
24598         (referenced_var_iterator_set): New helper function.
24599         * tree-dfa.c (referenced_var_lookup): Adjust.
24600         (referenced_var_check_and_insert): Likewise.
24601         (remove_referenced_var): Likewise.
24602         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
24603         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
24604         (verify_call_clobbering): Likewise.
24605         (verify_memory_partitions): Likewise.
24606         (init_tree_ssa): Allocate bitmap instead of hashtable for
24607         referenced_vars.
24608         (delete_tree_ssa): Adjust.
24609         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
24610         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
24611         (compute_tag_properties): Likewise.
24612         (set_initial_properties): Likewise.
24613         (find_partition_for): Likewise.
24614         (update_reference_counts): Likewise.
24615         (dump_may_aliases_for): Likewise.
24616         * tree-ssa-operands.c (add_virtual_operand): Likewise.
24617         (add_call_clobber_ops): Likewise.
24618         (add_call_read_ops): Likewise.
24619         (get_asm_expr_operands): Likewise.
24620         * tree-into-ssa.c (dump_decl_set): Likewise.
24621         (update_ssa): Likewise.
24622         * tree-sra.c (scan_function): Likewise.
24623         (decide_instantiations): Likewise.
24624         (scalarize_parms): Likewise.
24625         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
24626         (dsa_named_for): Likewise.
24627         * tree-ssa-structalias.c (update_alias_info): Likewise.
24628         (merge_smts_into): Likewise.
24629
24630 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24631
24632         PR 34351
24633         * doc/invoke.texi (-Wall): Add -Wvolatile-register-var.
24634         * c-opts.c (c_common_handle_option): Wall enables
24635         Wvolatile-register-var.
24636         * common.opt: Move Wvolatile-register-var to...
24637         * c.opt: ...here.
24638
24639 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24640
24641         * common.opt (Wlarger-than=): New.
24642         * doc/invoke.texi (Warning Options): Replace -Wlarger-than- with
24643         -Wlarger-than=.
24644         * opts.c (common_handle_option): Handle -Wlarger-than=.
24645         * optc-gen.awk: Likewise.
24646         * opth-gen.awk: Likewise.
24647         * stor-layout.c (layout_decl): Use -Wlarger-than= for warning.
24648         * tree-optimize.c (tree_rest_of_compilation): Likewise.
24649
24650 2008-02-26  Manuel Lopez-Ibanez <manu@gcc.gnu.org>
24651
24652         * c-common.c (match_case_to_enum_1): Add appropriate
24653         OPT_W* parameter to warning.
24654         (c_do_switch_warnings): Likewise.
24655         * c-typeck.c (warning_init): Add one more parameter following
24656         'warning' function.
24657         (push_init_level): Update call to warning_init.
24658         (pop_init_level): Likewise.
24659         (add_pending_init): Likewise.
24660         (output_init_element: Likewise.
24661
24662 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24663
24664         PR 28322
24665         * toplev.c (toplev_main): If there are warnings or error, print
24666         errors for ignored options.
24667         * opts.c (ignored_options): New static variable.
24668         (postpone_unknown_option_error): New.
24669         (print_ignored_options): New.
24670         (handle_option): Postpone errors for unknown -Wno-* options.
24671         * opts.h (print_ignored_options): Declare.
24672
24673 2008-02-25  Richard Sandiford  <rsandifo@nildram.co.uk>
24674
24675         * config/mips/mips.md (loadgp_blockage, blockage): Change type
24676         to "ghost".
24677
24678 2008-02-25  Richard Guenther  <rguenther@suse.de>
24679
24680         Revert:
24681         2008-02-25  Richard Guenther  <rguenther@suse.de>
24682
24683         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
24684         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
24685         (lookup_decl_from_uid): Declare.
24686         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
24687         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
24688         (decl_for_uid_map): New global hashtable mapping DECL_UID
24689         to the decl tree.
24690         (init_ttree): Allocate it.
24691         (insert_decl_to_uid_decl_map): New helper function.
24692         (make_node_stat): Insert new decls into the map.
24693         (copy_node_stat): Likewise.
24694         (lookup_decl_from_uid): New function.
24695         (print_decl_for_uid_map_statistics): New helper.
24696         (dump_tree_statistics): Call it.
24697
24698         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
24699         (referenced_var_iterator): Adjust.
24700         (FOR_EACH_REFERENCED_VAR): Adjust.
24701         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
24702         (num_referenced_vars): Adjust.
24703         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
24704         (first_referenced_var): Remove.
24705         (end_referenced_vars_p): Likewise.
24706         (next_referenced_var): Likewise.
24707         (referenced_var_iterator_set): New helper function.
24708         * tree-dfa.c (referenced_var_lookup): Adjust.
24709         (referenced_var_check_and_insert): Likewise.
24710         (remove_referenced_var): Likewise.
24711         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
24712         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
24713         (verify_call_clobbering): Likewise.
24714         (verify_memory_partitions): Likewise.
24715         (init_tree_ssa): Allocate bitmap instead of hashtable for
24716         referenced_vars.
24717         (delete_tree_ssa): Adjust.
24718         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
24719         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
24720         (compute_tag_properties): Likewise.
24721         (set_initial_properties): Likewise.
24722         (find_partition_for): Likewise.
24723         (update_reference_counts): Likewise.
24724         (dump_may_aliases_for): Likewise.
24725         * tree-ssa-operands.c (add_virtual_operand): Likewise.
24726         (add_call_clobber_ops): Likewise.
24727         (add_call_read_ops): Likewise.
24728         (get_asm_expr_operands): Likewise.
24729         * tree-into-ssa.c (dump_decl_set): Likewise.
24730         (update_ssa): Likewise.
24731         * tree-sra.c (scan_function): Likewise.
24732         (decide_instantiations): Likewise.
24733         (scalarize_parms): Likewise.
24734         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
24735         (dsa_named_for): Likewise.
24736         * tree-ssa-structalias.c (update_alias_info): Likewise.
24737         (merge_smts_into): Likewise.
24738
24739 2008-02-25  Janne Blomqvist  <jb@gcc.gnu.org>
24740
24741         PR fortran/29549
24742         * doc/invoke.texi (-fcx-limited-range): Document new option.
24743         * toplev.c (process_options): Handle -fcx-fortran-rules.
24744         * common.opt: Add documentation for -fcx-fortran-rules.
24745
24746 2008-02-25  Janne Blomqvist  <jb@gcc.gnu.org>
24747
24748         PR c/35162
24749         * doc/invoke.texi (-fcx-limited-range): Correct to be in line with
24750         actual behaviour and C99.
24751
24752 2008-02-26  Ben Elliston  <bje@au.ibm.com>
24753
24754         * config/rs6000/rs6000.h (ASM_CPU_POWER5_SPEC): Define.
24755         (ASM_CPU_POWER6_SPEC): Likewise.
24756         (ASM_CPU_SPEC): Pass %(asm_cpu_power5) for -mcpu=power5.
24757         Likewise, pass %(asm_cpu_power6) for -mcpu=power6.
24758         (EXTRA_SPECS): Add asm_cpu_power5, asm_cpu_power6 spec strings.
24759
24760 2008-02-25  Richard Guenther  <rguenther@suse.de>
24761
24762         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
24763         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
24764         (lookup_decl_from_uid): Declare.
24765         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
24766         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
24767         (decl_for_uid_map): New global hashtable mapping DECL_UID
24768         to the decl tree.
24769         (init_ttree): Allocate it.
24770         (insert_decl_to_uid_decl_map): New helper function.
24771         (make_node_stat): Insert new decls into the map.
24772         (copy_node_stat): Likewise.
24773         (lookup_decl_from_uid): New function.
24774         (print_decl_for_uid_map_statistics): New helper.
24775         (dump_tree_statistics): Call it.
24776
24777         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
24778         (referenced_var_iterator): Adjust.
24779         (FOR_EACH_REFERENCED_VAR): Adjust.
24780         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
24781         (num_referenced_vars): Adjust.
24782         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
24783         (first_referenced_var): Remove.
24784         (end_referenced_vars_p): Likewise.
24785         (next_referenced_var): Likewise.
24786         (referenced_var_iterator_set): New helper function.
24787         * tree-dfa.c (referenced_var_lookup): Adjust.
24788         (referenced_var_check_and_insert): Likewise.
24789         (remove_referenced_var): Likewise.
24790         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
24791         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
24792         (verify_call_clobbering): Likewise.
24793         (verify_memory_partitions): Likewise.
24794         (init_tree_ssa): Allocate bitmap instead of hashtable for
24795         referenced_vars.
24796         (delete_tree_ssa): Adjust.
24797         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
24798         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
24799         (compute_tag_properties): Likewise.
24800         (set_initial_properties): Likewise.
24801         (find_partition_for): Likewise.
24802         (update_reference_counts): Likewise.
24803         (dump_may_aliases_for): Likewise.
24804         * tree-ssa-operands.c (add_virtual_operand): Likewise.
24805         (add_call_clobber_ops): Likewise.
24806         (add_call_read_ops): Likewise.
24807         (get_asm_expr_operands): Likewise.
24808         * tree-into-ssa.c (dump_decl_set): Likewise.
24809         (update_ssa): Likewise.
24810         * tree-sra.c (scan_function): Likewise.
24811         (decide_instantiations): Likewise.
24812         (scalarize_parms): Likewise.
24813         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
24814         (dsa_named_for): Likewise.
24815         * tree-ssa-structalias.c (update_alias_info): Likewise.
24816         (merge_smts_into): Likewise.
24817
24818 2008-02-25  Andreas Krebbel  <krebbel1@de.ibm.com>
24819
24820         PR target/35258
24821         * cse.c (cse_insn): Avoid creation of overlapping MEMs.
24822         * alias.c (nonoverlapping_memrefs_p): Export for use in other modules.
24823         * alias.h (nonoverlapping_memrefs_p): Likewise.
24824
24825 2008-02-25  Jan Beulich  <jbeulich@novell.com>
24826
24827         * Makefile.in: Also prefix uses of crt0.o and mcrt0.o with $(T).
24828         * config/i386/netware-libgcc.exp: Add __bswap?i2,
24829         __emultls_get_address, __emultls_register_common,
24830         __floatundi?f, and _Unwind_GetIPInfo.
24831         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration):
24832         Sync with config/i386/winnt.c:gen_stdcall_or_fastcall_suffix().
24833         (gen_regparm_prefix): Likewise.
24834         (i386_nlm_encode_section_info): Sync with
24835         config/i386/winnt.c:i386_pe_encode_section_info().
24836         (i386_nlm_maybe_mangle_decl_assembler_name): New.
24837         i386_nlm_mangle_decl_assembler_name): New.
24838         (netware_override_options): New.
24839         * config/i386/netware.h (netware_override_options): Declare.
24840         (OVERRIDE_OPTIONS): Re-define to netware_override_options.
24841         (i386_nlm_mangle_decl_assembler_name): Declare.
24842         (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Define.
24843
24844 2008-02-25  Ben Elliston  <bje@au.ibm.com>
24845
24846         PR other/32948
24847         * c-decl.c (grokdeclarator): Remove unused local variables
24848         `typedef_type' and `type_as_written'.
24849         * bb-reorder.c
24850         (find_rarely_executed_basic_blocks_and_crossing_edges): Remove
24851         unused local variable `has_hot_blocks'.
24852         (fix_crossing_conditional_branches): Remove unused local variable
24853         `prev_bb'.
24854
24855 2008-02-25  Uros Bizjak  <ubizjak@gmail.com>
24856
24857         PR middle-end/19984
24858         * builtins.def (BUILT_IN_NAN): Define as c99 builtin
24859         using DEF_C99_BUILTIN.
24860         (BUILT_IN_NANF): Ditto.
24861         (BUILT_IN_NANL): Ditto.
24862
24863 2008-02-25  Ayal Zaks  <zaks@il.ibm.com>
24864             Revital Eres  <eres@il.ibm.com>
24865
24866         * modulo-sched.c (calculate_must_precede_follow): Address TODO
24867         regarding the order of two dependent insns in the same row.
24868
24869 2008-02-25  Eric Botcazou  <ebotcazou@adacore.com>
24870
24871         * stor-layout.c (layout_decl): Do not bump the alignment of a
24872         bit-field to more than byte alignment if it is packed.
24873
24874 2008-02-24  David Edelsohn  <edelsohn@gnu.org>
24875
24876         * config/rs6000/rs6000.c (processor_costs): Add cache costs for
24877         e300c2 and e300c3.
24878
24879 2008-02-24  Diego Novillo  <dnovillo@google.com>
24880
24881         http://gcc.gnu.org/ml/gcc-patches/2008-02/msg01094.html
24882
24883         PR 33738
24884         * tree-vrp.c (vrp_evaluate_conditional): With
24885         -Wtype-limits, emit a warning when comparing against a
24886         constant outside the natural range of OP0's type.
24887         * c.opt (Wtype-limits): Move ...
24888         * common.opt (Wtype-limits): ... here.
24889
24890 2008-02-24  Edmar Wienskoski  <edmar@freescale.com>
24891
24892         * config.gcc (powerpc*-*-*): Add new cores e300c2 and e300c3.
24893         * config/rs6000/e300c2c3.md: New file.
24894         * config/rs6000/rs6000.c (processor_costs): Add new costs for
24895         e300c2 and e300c3.
24896         (rs6000_override_options): Add e300c2 and e300c3 cases to
24897         processor_target_table. Do not allow usage of Altivec or Spe
24898         with e300 cores. Initialize rs6000_cost for e300c2 and e300c3.
24899         (rs6000_issue_rate): Set issue rate for e300c2 and e300c3.
24900         * config/rs6000/rs6000.h (processor_type): Add
24901         PROCESSOR_PPCE300C2 and PROCESSOR_PPCE300C3.
24902         (ASM_CPU_SPEC): Add e300c2 and e300c3.
24903         * config/rs6000/rs6000.md (define_attr "cpu"): Add ppce300c2
24904         and ppce300c3. Include e300c2c3.md.
24905
24906 2008-02-23  David Edelsohn  <edelsohn@gnu.org>
24907
24908         * config/rs6000/rs6000.h (CONSTANT_ALIGNMENT): Use STRICT_ALIGNMENT
24909         instead of TARGET_STRICT_ALIGN.
24910
24911 2008-02-23  Joseph Myers  <joseph@codesourcery.com>
24912
24913         * explow.c (memory_address): Assert that the generated address is
24914         valid.
24915
24916 2008-02-23  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
24917
24918         PR target/25477
24919         * config/darwin-protos.h: Add darwin_patch_builtins prototype.
24920         * config/darwin-ppc-ldouble-patch.def: New file.
24921         * config/rs6000/darwin.h (SUBTARGET_INIT_BUILTINS): New macro.
24922         * config/rs6000/rs6000.c (rs6000_init_builtins): Call
24923         SUBTARGET_INIT_BUILTINS if defined.
24924         * config/darwin.c (darwin_patch_builtin, darwin_patch_builtins):
24925         New functions.
24926
24927 2008-02-23  Andrew Pinski  <andrew_pinski@playstation.sony.com>
24928
24929         PR rtl-opt/33512
24930         * simplify-rtx.c (simplify_binary_operation_1): Add simplification
24931         of (and X (ior (not X) Y) and (and (ior (not X) Y) X).
24932
24933 2008-02-23  Andrew Pinski  <andrew_pinski@playstation.sony.com>
24934
24935         PR pch/35027
24936         * c-pch.c (c_common_valid_pch): Make the "too short to be a PCH
24937         file" warning condtional on -Winvalid-PCH.
24938
24939 2008-02-23  Daniel Jacobowitz  <dan@codesourcery.com>
24940
24941         * expmed.c (extract_bit_field): Always use adjust_address for MEM.
24942
24943 2008-02-23  Uros Bizjak  <ubizjak@gmail.com>
24944
24945         PR target/22076
24946         PR target/34256
24947         * config/i386/mmx.md (*mov<mode>_internal_rex64): Use "!y" to
24948         prevent reload from using MMX registers.
24949         (*mov<mode>_internal): Ditto.
24950         (*movv2sf_internal_rex64): Ditto.
24951         (*movv2sf_internal): Ditto.
24952
24953 2008-02-23  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
24954
24955         PR documentation/31569
24956         * doc/install.texi2html: Use makeinfo --no-number-sections.
24957
24958 2008-02-22  Nathan Froyd  <froydnj@codesourcery.com>
24959
24960         * config/rs6000/rs6000.c (rs6000_legitimize_address): Check to
24961         ensure that we can address an entire entity > 8 bytes.  Don't
24962         generate reg+reg addressing for such data.
24963
24964 2008-02-22  Nathan Froyd  <froydnj@codesourcery.com>
24965
24966         * config/rs6000/rs6000.h (CONSTANT_ALIGNMENT): Don't overalign
24967         strings when optimizing for size, unless the target cares about
24968         alignment.
24969
24970 2008-02-22  Tom Tromey  <tromey@redhat.com>
24971
24972         * regclass.c (current_pass): Remove declaration.
24973
24974 2008-02-22  Anatoly Sokolov <aesok@post.ru>
24975
24976         * config/avr/libgcc.S (__RAMPZ__): Define.
24977         (__do_copy_data): Add for devices with 128KB code memory.
24978
24979 2008-02-22  Nathan Froyd  <froydnj@codesourcery.com>
24980
24981         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
24982         Use spe_abi.
24983         * config/rs6000/eabispe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Likewise.
24984
24985 2008-02-22  Hans-Peter Nilsson  <hp@axis.com>
24986
24987         * config/cris/cris.h (REG_CLASS_FROM_LETTER): Recognize 'b' for
24988         GENNONACR_REGS.
24989
24990 2008-02-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
24991
24992         PR c/19999
24993         * c-typeck.c (build_binary_op): Warn about floating point
24994         comparisons if FLOAT_TYPE_P, not only for REAL_TYPE.
24995
24996 2008-02-21  Janis Johnson  <janis187@us.ibm.com>
24997
24998         PR target/34526
24999         * config/rs6000/rs6000.c (rs6000_altivec_abi): Clarify comment.
25000         (rs6000_explicit_options): Split abi into spe_abi and altivec_abi,
25001         add vrsave.
25002         (rs6000_override_options): Set altivec_abi as default, not override,
25003         for 64-bit GNU/Linux; for 32-bit GNU/Linux default to altivec_abi for
25004         TARGET_ALTIVEC; default to TARGET_ALTIVEC_VRSAVE when AltiVec ABI
25005         is used; use new member spe_abi.
25006         (rs6000_handle_option): Set rs6000_explicit_options.vrsave; use
25007         spe_abi and altivec_abi.
25008
25009 2008-02-22  Tomas Bily  <tbily@suse.cz>
25010
25011         * tree-vectorizer.c (vect_is_simple_reduction): Fix comment typo.
25012
25013 2008-02-21  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
25014
25015         PR bootstrap/35273
25016         * config.build (build_file_translate): Set to `CMD //c' only if
25017         it works.
25018         * Makefile.in (build_file_translate): Improve comment.
25019
25020 2008-02-21  Jan Hubicka  <jh@suse.cz>
25021
25022         * predict.def (PRED_TREE_OPCODE_POSITIVE, PRED_TREE_OPCODE_NONEQUAL,
25023         PRED_TREE_OPCODE_POSITIVE, PRED_TREE_OPCODE_NONEQUAL, PRED_CALL,
25024         PRED_TREE_EARLY_RETURN, PRED_NULL_RETURN): Update.
25025
25026 2008-02-21  Michael Matz  <matz@suse.de>
25027
25028         PR target/35264
25029         * config/i386/i386.c (ix86_expand_branch): Add missing breaks.
25030
25031 2008-02-21  Uros Bizjak  <ubizjak@gmail.com>
25032
25033         * config/i386/i386.md (mov<mode>cc): Macroize expander from movsfcc,
25034         movdfcc and movxfcc using X87MODEF mode iterator and SSE_FLOAT_MODE_P
25035         as insn constraint.
25036         * config/i386/sse.md (<sse>_movup<ssemodesuffixf2c>): Macroize insn
25037         from sse_movups adn sse2_movupd using SSEMODEF2P mode iterator and
25038         SSE_VEC_FLOAT_MODE_P as insn constraint.
25039         (<sse>_movmskp<ssemodesuffixf2c>): Ditto from similar patterns.
25040         (sse4a_movnt<mode>): Macroize insn from sse4a_movntsf and
25041         sse4a_movntdf using MODEF mode iterator.
25042         (sse4a_vmmovnt<mode>): Macroize insn form sse4a_vmmovntv2df and
25043         sse4a_vmmovntv4sf using SSEMODEF2P mode iterator.
25044         (sse4_1_blendp<ssemodesuffixf2c>): Ditto from similar patterns.
25045         (sse4_1_blendvp<ssemodesuffixf2c>): Ditto.
25046         (sse4_1_dpp<ssemodesuffixf2c>): Ditto.
25047         (sse4_1_roundp<ssemodesuffixf2c>): Ditto.
25048         (sse4_1_rounds<ssemodesuffixf2c>): Ditto.
25049
25050 2008-02-21  Richard Guenther  <rguenther@suse.de>
25051
25052         * tree.def (PAREN_EXPR): New tree code.
25053         * fold-const.c (fold_unary): Remove PAREN_EXPR around constants
25054         and PAREN_EXPR.
25055         * tree-pretty-print.c (dump_generic_node): Handle PAREN_EXPR.
25056         * expr.c (expand_expr_real_1): Likewise.
25057         * tree-inline.c (estimate_num_insns_1): Likewise.
25058         * tree-complex.c (expand_complex_move): Likewise.
25059         * tree-vectorizer.c (vect_is_simple_use): Treat PAREN_EXPR (x)
25060         as plain x.
25061
25062 2008-02-20  Kaz Kojima  <kkojima@gcc.gnu.org>
25063
25064         PR target/35225
25065         * config/sh/sh.c (find_barrier): Don't go past 'from' argument.
25066
25067 2008-02-20  Kaz Kojima  <kkojima@gcc.gnu.org>
25068
25069         PR target/35190
25070         * config/sh/sh.md (jump_compact): Disable for crossing jumps.
25071
25072         * config/sh/sh.c (find_barrier): Don't go past
25073         NOTE_INSN_SWITCH_TEXT_SECTIONS note.
25074
25075 2008-02-20  DJ Delorie  <dj@redhat.com>
25076
25077         * config/h8300/h8300.md (insv): Force source operand to be a register.
25078
25079         * config/h8300/h8300.c (h8300_expand_epilogue): Emit return insn
25080         as a jump, not as a plain insn.
25081
25082 2008-02-20  Seongbae Park <seongbae.park@gmail.com>
25083
25084         * doc/invoke.texi (Warning Options): Add new option
25085         -Wframe-larger-than=.
25086         (-Wframe-larger-than): Document.
25087
25088         * flags.h (warn_frame_larger_than, frame_larger_than_size):
25089         Add declarations for new option variables.
25090
25091         * final.c (final_start_function): Check the frame size
25092         before emission and issue a Wframe-larger-than warning.
25093
25094         * opts.c (warn_frame_larger_than, frame_larger_than_size):
25095         Add definitions for new option variables.
25096         (common_handle_option): Handle new option OPT_Wframe_larger_than_.
25097
25098         * common.opt (Wframe-larger-than=): New option.
25099
25100 2008-02-20  Uros Bizjak  <ubizjak@gmail.com>
25101
25102         * config/i386/sse.md (<sse>_vmmul<mode>3): Fix typo in asm template.
25103         (<sse>_div<mode>3): Ditto.
25104         (<sse>_vmdiv<mode>3): Ditto.
25105         (<sse>_vmsqrt<mode>2): Ditto.
25106         (*smax<mode>3): Ditto.
25107         (sse5_frcz<mode>2): Ditto.
25108         (sse5_vmfrcz<mode>2): Ditto.  Use TARGET_SSE5 instead of TARGET_ROUND
25109         as insn constraint.
25110
25111 2008-02-20  Richard Guenther  <rguenther@suse.de>
25112
25113         PR middle-end/35265
25114         * builtins.c (validate_arg): If we want an INTEGER_TYPE,
25115         be happy with INTEGRAL_TYPE_P.
25116
25117 2008-02-20  Richard Guenther  <rguenther@suse.de>
25118
25119         * fold-const.c (split_tree): Associate floatig-point expressions
25120         if flag_associative_math is set.
25121
25122 2008-02-20  Richard Guenther  <rguenther@suse.de>
25123
25124         * tree.h (fold_real_zero_addition_p): Declare.
25125         * fold-const.c (fold_real_zero_addition_p): Export.
25126         * tree-ssa-reassoc.c (eliminate_using_constants): Also handle
25127         floating-point operations with zero and one.
25128
25129 2008-02-20  Paolo Bonzini  <bonzini@gnu.org>
25130
25131         * doc/install.texi: Correct references to CFLAGS, replacing them
25132         with BOOT_CFLAGS.  Document flags used during bootstrap for
25133         target libraries.
25134
25135 2008-02-20  Uros Bizjak  <ubizjak@gmail.com>
25136
25137         * config/i386/i386.h (SSE_VEC_FLOAT_MODE_P): New define.
25138         * config/i386/i386.md (*sse_setcc<mode>): Macroize from *sse_setccsf
25139         and *sse_setccdf using MODEF mode iterator and SSE_FLOAT_MODE_P as
25140         insn constraint.
25141         (smin<mode>3): Ditto from similar patterns.
25142         (smax<mode>3): Ditto.
25143         (*ieee_smin<mode>3): Ditto.
25144         (*ieee_smax<mode>3): Ditto.
25145         * config/i386/sse.md (sse): New mode attribute.
25146         (mov<mode>): Macroize expander from movv4sf and movv2df using
25147         SSEMODEF2P mode iterator.
25148         (<sse>_movnt<mode>): Ditto from similar patterns. Use
25149         SSE_VEC_FLOAT_MODE_P as insn constraint.
25150         (storent<mode>): Ditto.
25151         (storent<mode>): Macroize expander from storentsf and storentdf using
25152         MODEF mode iterator.
25153         (neg<mode>2): Macroize from negv4sf2 and negv2df2 using SSEMODEF2P
25154         mode iterator and SSE_VEC_FLOAT_MODE_P as insn constraint.
25155         (abs<mode>2): Ditto from similar patterns.
25156         (add<mode>3, *add<mode>3, <sse>_vmadd<mode>3): Ditto.
25157         (sub<mode>3, *sub<mode>3, <sse>_vmsub<mode>3): Ditto.
25158         (<sse>_div<mode>3, <sse>_vmdiv<mode>3): Ditto.
25159         (<sse>_vmsqrt<mode>2): Ditto.
25160         (smin<mode>3, *smin<mode>3_finite, *smin<mode>3)
25161         (<sse>_vmsmin<mode>3, *ieee_smin<mode>3): Ditto.
25162         (smax<mode>3, *smax<mode>3_finite, *smax<mode>3)
25163         (<sse>_vmsmax<mode>3, *ieee_smax<mode>3): Ditto.
25164         (<sse>_maskcmp<mode>3): Macroize from sse_maskcmpv4sf3,
25165         sse_maskcmpsf3, sse2_maskcmpv2df3 and sse2_maskcmpdf3 using SSEMODEF4
25166         mode iterator. Use SSE_FLOAT_MODE_P with SSE_VEC_FLOAT_MODE_P as
25167         insn constraint.
25168         (<sse>_comi): Macroize from sse_comi and sse2_comi using MODEF mode
25169         iterator and SSE_FLOAT_MODE_P as insn constraint.
25170         (<sse>_ucomi): Ditto from similar patterns.
25171         (<sse>_vmmaskcmp<mode>3): Macroize from sse_vmmaskcmpv4sf3 and
25172         sse2_vmmaskcmpv2df3 using SSEMODEF2P mode iterator and
25173         SSE_VEC_FLOAT_MODE_P as insn constraint.
25174         (vcond<mode>): Ditto from similar patterns.
25175         (and<mode>3, *and<mode>3): Ditto.
25176         (<sse>_nand<mode>3): Ditto.
25177         (ior<mode>3, *ior<mode>3): Ditto.
25178         (xor<mode>3, *xor<mode>3): Ditto.
25179         (*and<mode>3): Macroize from *andsf3 and *anddf3 using MODEF mode
25180         iterator and SSE_FLOAT_MODE_P as insn constraint.
25181         (*nand<mode>3): Ditto from similar patterns.
25182         (*ior<mode>3): Ditto.
25183         (*xor<mode>3): Ditto.
25184
25185 2008-02-20  Ira Rosen  <irar@il.ibm.com>
25186
25187         * config/spu/spu.md (vec_unpacku_hi_v8hi, vec_unpacku_lo_v8hi,
25188         vec_unpacks_hi_v8hi, vec_unpacks_lo_v8hi, vec_unpacku_hi_v16qi,
25189         vec_unpacku_lo_v16qi, vec_unpacks_lo_v16qi): Implement.
25190
25191 2008-02-19  Jan Hubicka  <jh@suse.cz>
25192
25193         * predict.c (tree_bb_level_predictions): Remove variable next
25194         mistakely introduced by previous commit.
25195
25196 2008-02-19  Jan Hubicka  <jh@suse.cz>
25197
25198         * predict.c (predict_paths_leading_to): Rewrite.
25199         (predict_paths_for_bb): New.
25200         (tree_bb_level_predictions): Update call of predict_paths_leading_to.
25201
25202 2008-02-19  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
25203
25204         PR bootstrap/35218
25205         * Makefile.in (build_file_translate): New.
25206         (gcc-vers.texi): Use it for translating $(abs_srcdir).
25207         * config.build (build_file_translate): Set to `CMD //c' on MinGW.
25208         * configure.ac (build_file_translate): Substitute it.
25209         * configure: Regenerate.
25210
25211 2008-02-19  Jan Hubicka  <jh@suse.cz>
25212
25213         PR rtl-optimization/34408
25214         * see.c (see_def_extension_not_merged): Copy subreg so we don't have
25215         invalid sharing.
25216
25217 2008-02-19  Jan Hubicka  <jh@suse.cz>
25218
25219         PR middle-end/28779
25220         * tree-inline.c (estimate_num_insns_1): Fix counting of cost of
25221         call_expr.
25222
25223 2008-02-19  H.J. Lu  <hongjiu.lu@intel.com>
25224
25225         PR Ada/35186
25226         * config/i386/i386-modes.def: Revert the last DI alignment
25227         change until Ada people can look into it.
25228
25229 2008-02-19  Nick Clifton  <nickc@redhat.com>
25230
25231         * opts.c (print_specific_help): Fix typo in --help text.
25232
25233 2008-02-19  Jakub Jelinek  <jakub@redhat.com>
25234
25235         PR target/35239
25236         * config/i386/cpuid.h (__cpuid, __get_cpuid_max): Use special
25237         32-bit inline asm without asm alternatives for host GCC < 3.0.
25238
25239 2008-02-19  Richard Guenther  <rguenther@suse.de>
25240
25241         PR tree-optimization/34989
25242         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Re-structure.
25243         Allow propagation to INDIRECT_REF if we can simplify only.
25244
25245 2008-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25246
25247         * c-common.c (warn_for_collisions_1): Use appropriate option when
25248         warning.
25249
25250 2008-02-19  Nick Clifton  <nickc@redhat.com>
25251
25252         PR other/31349
25253         * opts.c (undocumented_msg): Leave blank unless checking is enabled.
25254         (handle_options): Fix indentation.
25255         (print_filtered_help): If no language-specific options were
25256         displayed tell the user how to list all the options supported by
25257         the language's front-end.
25258         (print_specific_help): Fix indentation and remove duplicate line.
25259         (common_handle_option): Handle the -v option.
25260         For --help enable the display of undocumented options if the -v
25261         switch has been included on the command line.
25262         For --help= check for overlaps in the arguments between the option
25263         classes and the language names and issue a warning when they
25264         cannot be disambiguated.
25265         * c.opt (v): Pass on to the common option handler.
25266
25267 2008-02-19  Revital Eres  <eres@il.ibm.com>
25268
25269         * modulo-sched.c (sms_schedule): Change dump message when
25270         create_ddg function fails.
25271         (try_scheduling_node_in_cycle): Rename row to cycle.
25272         (print_partial_schedule): Rename CYCLE to ROW.
25273
25274 2008-02-19  Christian Bruel  <christian.bruel@st.com>
25275             Zdenek Dvorak  <ook@ucw.cz>
25276
25277         * tree-ssa-loop-ivopts.c (may_be_unaligned_p): Check step alignment.
25278
25279 2008-02-19  Uros Bizjak  <ubizjak@gmail.com>
25280
25281         PR target/33555
25282         * config/i386/i386.md (*x86_movsicc_0_m1_se): New insn pattern.
25283         (*x86_movdicc_0_m1_se): Ditto.
25284
25285 2008-02-19  Uros Bizjak  <ubizjak@gmail.com>
25286
25287         * config/i386/sfp-machine.h (__gcc_CMPtype): New typedef.
25288         (CMPtype): Define as __gcc_CMPtype.
25289         * config/rs6000/sfp-machine.h (__gcc_CMPtype): New typedef.
25290         (CMPtype): Define as __gcc_CMPtype.
25291
25292 2008-02-19  Hans-Peter Nilsson  <hp@axis.com>
25293
25294         Support valgrind 3.3 for --enable-checking=valgrind.
25295         * system.h: Consolidate ENABLE_VALGRIND_CHECKING-dependent defines
25296         here.
25297         [!VALGRIND_MAKE_MEM_NOACCESS]: Define as VALGRIND_MAKE_NOACCESS.
25298         [!VALGRIND_MAKE_MEM_DEFINED]: Define as VALGRIND_MAKE_READABLE.
25299         [!VALGRIND_MAKE_MEM_UNDEFINED]: Define as VALGRIND_MAKE_WRITABLE.
25300         * ggc-common.c: Remove ENABLE_VALGRIND_CHECKING-dependent defines.
25301         Replace use of VALGRIND_MAKE_READABLE, VALGRIND_MAKE_WRITABLE, and
25302         VALGRIND_MAKE_NOACCESS with VALGRIND_MAKE_MEM_DEFINED,
25303         VALGRIND_MAKE_MEM_UNDEFINED, and VALGRIND_MAKE_MEM_NOACCESS
25304         respectively.
25305         * ggc-zone.c: Similar.
25306         * ggc-page.c: Similar.
25307
25308 2008-02-19  Paul Brook  <paul@codesourcery.com>
25309
25310         PR target/35071
25311         * config/arm/ieee754-df.S: Fix do_it typo.
25312         * config/arm/ieee754-sf.S: Fix do_it typo.
25313
25314 2008-02-18  H.J. Lu  <hongjiu.lu@intel.com>
25315
25316         PR target/35189
25317         * config/i386/i386.c (OPTION_MASK_ISA_MMX_SET): New.
25318         (OPTION_MASK_ISA_3DNOW_SET): Likewise.
25319         (OPTION_MASK_ISA_SSE_SET): Likewise.
25320         (OPTION_MASK_ISA_SSE2_SET): Likewise.
25321         (OPTION_MASK_ISA_SSE3_SET): Likewise.
25322         (OPTION_MASK_ISA_SSSE3_SET): Likewise.
25323         (OPTION_MASK_ISA_SSE4_1_SET): Likewise.
25324         (OPTION_MASK_ISA_SSE4_2_SET): Likewise.
25325         (OPTION_MASK_ISA_SSE4_SET): Likewise.
25326         (OPTION_MASK_ISA_SSE4A_SET): Likewise.
25327         (OPTION_MASK_ISA_SSE5_SET): Likewise.
25328         (OPTION_MASK_ISA_3DNOW_A_UNSET): Likewise.
25329         (OPTION_MASK_ISA_MMX_UNSET): Updated.
25330         (OPTION_MASK_ISA_3DNOW_UNSET): Updated.
25331         (OPTION_MASK_ISA_SSE_UNSET): Likewise.
25332         (OPTION_MASK_ISA_SSE3_UNSET): Likewise.
25333         (OPTION_MASK_ISA_SSSE3_UNSET): Likewise.
25334         (OPTION_MASK_ISA_SSE4_1_UNSET): Likewise.
25335         (OPTION_MASK_ISA_SSE4_2_UNSET): Likewise.
25336         (OPTION_MASK_ISA_SSE4A_UNSET): Likewise.
25337         (OPTION_MASK_ISA_SSE5_UNSET): Likewise.
25338         (OPTION_MASK_ISA_SSE4): Removed.
25339         (ix86_handle_option): Turn on bits in ix86_isa_flags and
25340         ix86_isa_flags_explicit with OPTION_MASK_ISA_XXX_SET for -mXXX.
25341         (override_options): Don't turn on implied SSE/MMX bits in
25342         ix86_isa_flags.
25343
25344 2008-02-18  H.J. Lu  <hongjiu.lu@intel.com>
25345
25346         * config/i386/i386-modes.def: Use 4 byte alignment on DI for
25347         32bit host.
25348
25349 2008-02-18  Joey Ye  <joey.ye@intel.com>
25350
25351         PR middle-end/34921
25352         * tree-nested.c (insert_field_into_struct): Set type alignment
25353         to field alignment if the former is less than the latter.
25354
25355 2008-02-18  Jakub Jelinek  <jakub@redhat.com>
25356
25357         * BASE-VER: Set to 4.4.0.
25358
25359 2008-02-17 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
25360
25361         * doc/c-tree.texi: Use @dots{} and @enddots{} where appropriate.
25362         * doc/cfg.texi: Likewise.
25363         * doc/extend.texi: Likewise.
25364         * doc/gty.texi: Likewise.
25365         * doc/invoke.texi: Likewise.
25366         * doc/loop.texi: Likewise.
25367         * doc/md.texi: Likewise.
25368         * doc/passes.texi: Likewise.
25369         * doc/rtl.texi: Likewise.
25370         * doc/sourcebuild.texi: Likewise.
25371         * doc/tm.texi: Likewise.
25372         * doc/tree-ssa.texi: Likewise.
25373
25374 2008-02-17  Richard Guenther  <rguenther@suse.de>
25375
25376         PR middle-end/35227
25377         * tree-complex.c (init_parameter_lattice_values): Handle parameters
25378         without default definition.
25379
25380 2008-02-17  Richard Guenther  <rguenther@suse.de>
25381
25382         PR tree-optimization/35231
25383         * tree-vrp.c (register_edge_assert_for): Do not assume A == 0
25384         if A | B != 1.
25385
25386 2008-02-17  Uros Bizjak  <ubizjak@gmail.com>
25387
25388         Revert:
25389         2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
25390         * config/i386/sfp-machine.h (CMPtype): Define as typedef using
25391         libgcc_cmp_return mode.
25392
25393 2008-02-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25394
25395         PR c/28368
25396         * doc/invoke.texi (-std): Clarify description of -std= and -ansi.
25397
25398 2008-02-16  Ralf Corsepius  <ralf.corsepius@rtems.org>
25399
25400         * config/m68k/t-rtems (M68K_MLIB_CPU): Add 5208, 5307, 5407, 5475
25401         multilibs.
25402
25403 2008-02-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
25404
25405         * doc/c-tree.texi: Use `@.' where appropriate.
25406         * doc/extend.texi: Likewise.
25407         * doc/install.texi: Likewise.
25408         * doc/invoke.texi: Likewise.
25409         * doc/loop.texi: Likewise.
25410         * doc/makefile.texi: Likewise.
25411         * doc/md.texi: Likewise.
25412         * doc/passes.texi: Likewise.
25413         * doc/standards.texi: Likewise.
25414         * doc/tm.texi: Likewise.
25415
25416 2008-02-15  Jakub Jelinek  <jakub@redhat.com>
25417
25418         PR middle-end/35196
25419         * omp-low.c (expand_omp_for_generic): Don't initialize fd->v
25420         in entry_bb.
25421         (expand_omp_for_static_nochunk): Initialize fd->v in seq_start_bb
25422         rather than in entry_bb.
25423
25424 2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
25425
25426         * config/i386/sfp-machine.h (CMPtype): Define as typedef using
25427         libgcc_cmp_return mode.
25428
25429 2008-02-15  Jakub Jelinek  <jakub@redhat.com>
25430
25431         PR middle-end/35130
25432         * tree-nested.c (convert_call_expr): Put FRAME.* vars into
25433         OMP_CLAUSE_SHARED rather than OMP_CLAUSE_FIRSTPRIVATE clause.
25434
25435 2008-02-15  Richard Guenther  <rguenther@suse.de>
25436             Zdenek Dvorak  <ook@ucw.cz>
25437
25438         PR tree-optimization/35164
25439         * tree-flow.h (stmt_references_abnormal_ssa_name): Declare.
25440         * tree-dfa.c (stmt_references_abnormal_ssa_name): New function.
25441         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
25442         Only propagate addresses which do not have abnormal SSA_NAMEs
25443         in their operands.
25444
25445 2008-02-15  Joseph Myers  <joseph@codesourcery.com>
25446
25447         PR target/35088
25448         * config/m68k/m68k.h (DWARF_CIE_DATA_ALIGNMENT): Define.
25449
25450 2008-02-15  Jan Hubicka  <jh@suse.cz>
25451
25452         PR middle-end/35149
25453         * ipa.c (cgraph_remove_unreachable_nodes): Clear local.inlinable flag.
25454
25455 2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
25456
25457         PR middle-end/34621
25458         * function.c (pad_to_arg_alignment): Remove test for STACK_BOUNDARY
25459         when calculating alignment_pad.
25460
25461 2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
25462
25463         * config/i386/i386.h (CLEAR_RATIO): Use MIN macro.
25464         (WIDEST_HARDWARE_FP_SIZE): Use LONG_DOUBLE_TYPE_SIZE define.
25465         * config/i386/darwin.h (PREFERRED_STACK_BOUNDARY): Use MAX macro
25466         and STACK_BOUNDARY define.
25467
25468 2008-02-14  Danny Smith  <dannysmith@users.sourceforge.net>
25469
25470         PR preprocessor/35061
25471         * c-pragma.c (handle_pragma_pop_macro): Check that
25472         pushed_macro_table has been allocated.
25473
25474 2008-02-14  Eric Botcazou  <ebotcazou@adacore.com>
25475
25476         PR middle-end/35136
25477         * gimplify.c (force_gimple_operand_bsi): Revert 2008-02-12 change.
25478         (force_gimple_operand): Likewise.
25479         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Add new cases
25480         for TARGET_MEM_REF and CONVERT_EXPR/NON_LVALUE_EXPR/NOP_EXPR.
25481         Also recurse on the operand for regular VIEW_CONVERT_EXPRs.
25482         (find_interesting_uses_address): Check addressability and alignment
25483         of the base expression only after substituting bases of IVs into it.
25484
25485 2008-02-14  Michael Matz  <matz@suse.de>
25486
25487         PR target/34930
25488         * function.c (instantiate_virtual_regs_in_insn): Reload address
25489         before falling back to reloading the whole operand.
25490
25491 2008-02-14  Andreas Krebbel  <krebbel1@de.ibm.com>
25492
25493         * config/s390/s390.c (s390_mainpool_start): Emit the pool
25494         before the first section switch note.
25495
25496 2008-02-14 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
25497
25498         * doc/bugreport.texi: Update copyright years.
25499         * doc/c-tree.texi: Likewise.
25500         * doc/cfg.texi: Likewise.
25501         * doc/cpp.texi: Likewise.
25502         * doc/cppinternals.texi: Likewise.
25503         * doc/fragments.texi: Likewise.
25504         * doc/frontends.texi: Likewise.
25505         * doc/gcc.texi: Likewise.
25506         * doc/gty.texi: Likewise.
25507         * doc/hostconfig.texi: Likewise.
25508         * doc/implement-c.texi: Likewise.
25509         * doc/libgcc.texi: Likewise.
25510         * doc/loop.texi: Likewise.
25511         * doc/makefile.texi: Likewise.
25512         * doc/options.texi: Likewise.
25513         * doc/passes.texi: Likewise.
25514         * doc/rtl.texi: Likewise.
25515         * doc/sourcebuild.texi: Likewise.
25516         * doc/standards.texi: Likewise.
25517         * doc/tree-ssa.texi: Likewise.
25518         * doc/trouble.texi: Likewise.
25519
25520         * doc/extend.texi: Use @: or add comma where appropriate.
25521         * doc/invoke.texi: Likewise.
25522         * doc/tm.texi: Likewise.
25523
25524 2008-02-14  Alan Modra  <amodra@bigpond.net.au>
25525
25526         PR target/34393
25527         * config/rs6000/rs6000.md (restore_stack_block): Force operands[1]
25528         to a reg.
25529
25530 2008-02-14  Jesper Nilsson  <jesper.nilsson@axis.com>
25531
25532         * doc/md.texi (clz, ctz): Add reference.
25533         * doc/rtl.texi (clz, ctz): Likewise.
25534
25535 2008-02-13  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
25536
25537         PR other/35148
25538         * Makefile.in (gcc-vers.texi): Use abs_srcdir for the value of
25539         srcdir.
25540
25541 2008-02-13  Andreas Krebbel  <krebbel1@de.ibm.com>
25542
25543         * config/s390/s390.c (struct constant_pool): New field
25544         emit_pool_after added.
25545         (s390_mainpool_start): Set the emit_pool_after flag according
25546         to the section switch notes.
25547         (s390_mainpool_finish): Consider emit_pool_after when emitting
25548         the literal pool at the end of the function.
25549         (s390_chunkify_start): Force literal pool splits at section
25550         switch notes.
25551
25552 2008-02-13  Michael Matz  <matz@suse.de>
25553
25554         PR debug/35065
25555         * var-tracking.c (clobber_variable_part): Correctly traverse the
25556         list.
25557
25558 2008-02-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25559
25560         PR 29673
25561         * doc/invoke.texi (Debugging Options): Remove -fdump-tree-inlined.
25562         Add -fdump-ipa-inline.
25563         * tree-dump.c (dump_files): Remove tree-inlined dump.
25564         * tree-pass.h (tree_dump_index): Remove TDI_inlined.
25565
25566 2008-02-12  Richard Guenther  <rguenther@suse.de>
25567
25568         PR tree-optimization/35171
25569         * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Deal with
25570         default defs.
25571
25572 2008-02-12  Richard Guenther  <rguenther@suse.de>
25573
25574         PR middle-end/35163
25575         * fold-const.c (fold_widened_comparison): Use get_unwidened in
25576         value-preserving mode.  Disallow final truncation.
25577
25578 2008-02-12  Eric Botcazou  <ebotcazou@adacore.com>
25579
25580         PR middle-end/35136
25581         * gimplify.c (force_gimple_operand_bsi): Move SSA renaming
25582         code from here to...
25583         (force_gimple_operand): ...here.
25584
25585 2008-02-12  Jakub Jelinek  <jakub@redhat.com>
25586
25587         PR c++/35144
25588         * tree-sra.c (sra_build_assignment): fold_convert SRC if copying
25589         non-compatible pointers.
25590         (generate_element_copy): If SRC and DST are RECORD_TYPEs with
25591         different FIELD_DECLs, try harder by comparing field offsets, sizes
25592         and types.
25593
25594         PR inline-asm/35160
25595         * function.c (match_asm_constraints_1): Don't replace the same input
25596         multiple times.
25597
25598 2008-02-12  Anatoly Sokolov <aesok@post.ru>
25599
25600         * config/avr/avr.h (AVR_HAVE_RAMPZ): Define.
25601         * config/avr/avr.c (expand_prologue): Save RAMPZ register.
25602         (expand_epilogue): Restore RAMPZ register.
25603         * config/avr/avr.md (RAMPZ_ADDR): New constant.
25604
25605 2008-02-11  Kai Tietz  <kai.tietz@onevision.com>
25606
25607         * config/i386/cygwin.asm: (__alloca): Correct calling
25608         convention and alignment.
25609         (__chkstk): Force 8 byte stack alignment.
25610
25611 2008-02-11  Uros Bizjak  <ubizjak@gmail.com>
25612             Richard Guenther  <rguenther@suse.de>
25613
25614         PR tree-optimization/33992
25615         * tree-ssa-loop-im.c (rewrite_bittest): Fixup the type of
25616         the zero we compare against.
25617
25618 2008-02-10  Danny Smith  <dannysmith@users.sourceforge.net>
25619
25620         PR libfortran/35063
25621         * gthr-win32.h (__gthread_mutex_destroy_function): New function
25622         to CloseHandle after unlocking to prevent accumulation of handle
25623         count.
25624
25625 2008-02-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
25626
25627         PR middle_end/34150
25628         * pa.c (legitimize_pic_address): Add REG_EQUAL note on sets with a
25629         pic_label_operand source.  Similarly, add a REG_LABEL_OPERAND note
25630         and update LABEL_NUSES during and after reload.
25631
25632 2008-02-08  Steven Bosscher  <stevenb.gcc@gmail.com>
25633
25634         PR middle-end/34627
25635         * combine.c (simplify_if_then_else): Make sure the comparison is
25636         against const0_rtx when simplifying to (abs x) or (neg (abs X)).
25637
25638 2008-02-08  Richard Sandiford  <rsandifo@nildram.co.uk>
25639
25640         PR bootstrap/35051
25641         * double-int.h: Don't include gmp.h for GENERATOR_FILEs.
25642         (mpz_set_double_int, mpz_get_double_int): Hide from GENERATOR_FILEs.
25643         * real.h: Don't include gmp.h or mpfr.h for GENERATOR_FILEs.
25644         (real_from_mpfr, mpfr_from_real): Hide from GENERATOR_FILEs.
25645         * tree.h (get_type_static_bounds): Likewise.
25646
25647 2008-02-08  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
25648
25649         * doc/invoke.texi (Option Summary, C++ Dialect Options)
25650         (Objective-C and Objective-C++ Dialect Options, Warning Options):
25651         Make -Wfoo language annotations match what the compiler outputs.
25652
25653 2008-02-08  Sa Liu  <saliu@de.ibm.com>
25654
25655         * config/spu/spu-builtins.def: Fixed wrong parameter type in spu
25656         intrinsics spu_convts, spu_convtu, spu_convtf.
25657
25658 2008-02-08  Hans-Peter Nilsson  <hp@axis.com>
25659
25660         * doc/extend.texi (Function Attributes) <noinline>: Mention
25661         asm ("") as method to keep calls.
25662
25663 2008-02-07  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25664
25665         PR other/32754
25666         * doc/options.texi (Options): Replace references to opts.sh with
25667         optc-gen.awk.
25668         * opts-common.c: Likewise.
25669         * optc-gen.awk: Likewise.
25670
25671 2008-02-07  Andreas Krebbel  <krebbel1@de.ibm.com>
25672
25673         * config/s390/s390.h (FUNCTION_ARG_REGNO_P): Fix fprs for 64 bit.
25674
25675 2008-02-07  Richard Henderson  <rth@redhat.com>
25676
25677         PR rtl-opt/33410
25678         * config/alpha/alpha.c (alpha_emit_xfloating_compare): Use an
25679         EXPR_LIST for the REG_EQUAL instead of a comparison with a
25680         funny mode.
25681
25682 2008-02-07  Uros Bizjak  <ubizjak@gmail.com>
25683
25684         PR tree-optimization/35085
25685         * tree-ssa-reassoc.c (rewrite_expr_tree): Enable destructive update
25686         for operand entry oe2 in addition to operand entry oe3 in order to
25687         expose more opportunities for vectorizer sum reduction.
25688
25689 2008-02-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
25690
25691         PR other/35107
25692         * Makefile.in (LIBS): Remove $(GMPLIBS).
25693         (cc1-dummy, cc1): Add $(GMPLIBS).
25694
25695 2008-02-06  Jan Hubicka  <jh@suse.cz>
25696
25697         PR target/23322
25698         * i386.md (moddf_integer): Do not produce partial memory stalls for
25699         targets where it hurts.
25700
25701 2008-02-06  Uros Bizjak  <ubizjak@gmail.com>
25702
25703         PR target/35083
25704         * optabs.c (expand_float): Do not check for decimal modes when
25705         expanding unsigned integer through signed conversion.
25706
25707 2008-02-06  Nick Clifton  <nickc@redhat.com>
25708
25709         * config/stormy16/stormy16.md (eqbranchsi): Replace a match_dup
25710         inside the clobber with a match_operand and duplicated operand
25711         number in the constraint.
25712         (ineqbranchsi): Delete redundant comment.
25713
25714 2008-02-06  Ralf Corsepius  <ralf.corsepius@rtems.org>
25715
25716         * config/arm/rtems-elf.h (TARGET_OS_CPP_BUILTINS): Add
25717         builtin_define ("__USE_INIT_FINI__").
25718         * config/h8300/t-rtems (MULTILIB_OPTION,MULTILIB_DIRNAMES): Add
25719         -msx multilibs.
25720         * gthr-rtems.h: Remove __GTHREAD_MUTEX_INIT.
25721
25722 2008-02-06  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
25723
25724         PR documentation/30330
25725         * doc/invoke.texi (C++ Dialect Options)
25726         (Objective-C and Objective-C++ Dialect Options, Warning Options):
25727         For each warning option -Wfoo that allows -Wno-foo, ensure both
25728         -Wfoo and -Wno-foo are listed in the option index.  Fix index
25729         entry of -Wswitch-default, index -Wnormalized= including the
25730         `=', and -Wlarger-than-@var{len} including @var{len}.
25731
25732 2008-02-05  Uros Bizjak  <ubizjak@gmail.com>
25733
25734         * config/i386/i386.md (floatunssisf2): Use
25735         ix86_expand_convert_uns_sisf_sse also for TARGET_SSE.
25736         (floatunssi<mode>2): Rename from floatunssisf2 and floatunssidf2.
25737         Macroize expander using MODEF mode iterator.
25738
25739 2008-02-05  Diego Novillo  <dnovillo@google.com>
25740
25741         http://gcc.gnu.org/ml/gcc-patches/2008-02/msg00140.html
25742
25743         PR 33738
25744         * tree-vrp.c (vrp_evaluate_conditional): Revert fix for PR 33738.
25745
25746 2008-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
25747
25748         PR other/35070
25749         * toplev.c (print_version): Honor `indent' for GMP/MPFR warnings.
25750
25751 2008-02-05  H.J. Lu  <hongjiu.lu@intel.com>
25752
25753         PR target/35084
25754         * config/i386/i386.c (ix86_function_sseregparm): Add an arg
25755         to indicate if a message should be generated.
25756         (init_cumulative_args): Updated.
25757         (function_value_32): Likewise.
25758
25759 2008-02-05  Joseph Myers  <joseph@codesourcery.com>
25760
25761         * doc/include/texinfo.tex: Update to version 2008-02-04.16.
25762
25763 2008-02-05  Uros Bizjak  <ubizjak@gmail.com>
25764
25765         PR target/35083
25766         * config/i386/i386.md (floatunsisf2): Enable for TARGET_SSE_MATH only.
25767         Call ix86_expand_convert_uns_sisf_sse for TARGET_SSE2.
25768
25769 2008-02-04  Diego Novillo  <dnovillo@google.com>
25770
25771         http://gcc.gnu.org/ml/gcc-patches/2008-02/msg00110.html
25772
25773         PR 33738
25774         * tree-vrp.c (vrp_evaluate_conditional): With
25775         -Wtype-limits, emit a warning when comparing against a
25776         constant outside the natural range of OP0's type.
25777
25778 2008-02-04  Richard Guenther  <rguenther@suse.de>
25779
25780         PR middle-end/33631
25781         * expr.c (count_type_elements): Give for unions instead of
25782         guessing.
25783
25784 2008-02-04  Richard Guenther  <rguenther@suse.de>
25785
25786         PR middle-end/35043
25787         * gimplify.c (gimplify_init_ctor_eval): Convert array indices
25788         to TYPE_DOMAINs base type instead of using bitsizetype here.
25789
25790 2008-02-03  Jason Merrill  <jason@redhat.com>
25791
25792         * print-tree.c (print_node) [CONSTRUCTOR]: Print elements.
25793
25794 2008-02-04  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
25795
25796         PR other/29972
25797         * doc/invoke.texi (C++ Dialect Options, Optimize Options)
25798         (HPPA Options, i386 and x86-64 Options, IA-64 Options)
25799         (RS/6000 and PowerPC Options): Fix typos and markup.
25800         * doc/passes.texi (Tree-SSA passes): Likewise.
25801
25802 2008-02-02  Michael Matz  <matz@suse.de>
25803
25804         PR target/35045
25805         * postreload-gcse.c (record_last_reg_set_info_regno): Renamed
25806         from record_last_reg_set_info.
25807         (record_last_reg_set_info): Take an RTX argument, iterate over all
25808         constituent hardregs.
25809         (record_last_set_info, record_opr_changes): Change calls to
25810         new signature or to record_last_reg_set_info_regno.
25811
25812 2008-02-02  Gerald Pfeifer  <gerald@pfeifer.com>
25813
25814         * doc/extend.texi (X86 Built-in Functions): Fix grammar.
25815
25816 2008-02-01  Hans-Peter Nilsson  <hp@axis.com>
25817
25818         PR rtl-optimization/34773
25819         * reg-notes.def (EQUAL): Mention significance of combination of
25820         REG_EQUAL and REG_RETVAL.
25821         * fwprop.c (try_fwprop_subst): Don't add REG_EQUAL to an
25822         insn that has a REG_RETVAL.
25823
25824 2008-02-01  Roger Sayle  <roger@eyesopen.com>
25825
25826         PR bootstrap/33781
25827         * configure.ac (--enable-fixed-point): Disable unless explicitly
25828         requested on IRIX.
25829         * configure: Regenerate.
25830
25831 2008-02-01  Richard Guenther  <rguenther@suse.de>
25832
25833         PR other/35042
25834         * invoke.texi (-finline-limit): Remove no longer true parts
25835         of the documentation.  Note that there is no default value.
25836
25837 2008-02-01  Andrew Pinski  <pinskia@gmail.com>
25838             Mark Mitchell  <mark@codesourcery.com>
25839             Ben Elliston  <bje@au.ibm.com>
25840
25841         PR c/29326
25842         * doc/extend.texi (Other Builtins): Document.
25843
25844 2008-01-31  Tom Browder <tom.browder@gmail.com>
25845
25846         * doc/c-tree.texi (Types): Fix grammar.
25847         (Expression trees): Ditto.
25848         * doc/passes.texi (Tree-SSA passes): Ditto.
25849
25850         * doc/configterms.texi (Configure Terms): Fix typo.
25851         * doc/cpp.texi (Common Predefined Macros): Ditto.
25852         * doc/md.texi (Machine Constraints): Ditto.
25853
25854         * doc/makefile.texi (Makefile): Add comma.
25855
25856 2008-01-31  Tom Browder  <tom.browder@gmail.com>
25857             Gerald Pfeifer  <gerald@pfeifer.com>
25858
25859         * doc/sourcebuild.texi (Front End): Remove references to CVS
25860         and CVSROOT/modules.
25861         (Texinfo Manuals): Replace reference to CVS by one to SVN.
25862         (Back End): Remove reference to CVS.
25863
25864 2008-01-31  Richard Sandiford  <rsandifo@nildram.co.uk>
25865
25866         PR target/34900
25867         * config/mips/mips.c (gen_load_const_gp): New function, taking a
25868         comment from...
25869         (mips16_gp_pseudo_reg): ...here.
25870         * config/mips/mips.md (load_const_gp): Replace with...
25871         (load_const_gp_<mode>): ...this :P-based insn.
25872
25873 2008-01-31  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25874
25875         * doc/invoke.texi (-ansi): Mention explicitly corresponding -std=
25876         options. Minor fixes.
25877         (-std): Move reference to standards closer to where language
25878         standards are first mentioned.
25879
25880 2008-01-31  Richard Sandiford  <rsandifo@nildram.co.uk>
25881
25882         PR rtl-optimization/34995
25883         * reload.c (alternative_allows_const_pool_ref): Take an rtx
25884         parameter and return a bool.  If the rtx parameter is nonnull,
25885         check that it satisfies an EXTRA_MEMORY_CONSTRAINT.
25886         (find_reloads): Update call accordingly.  Pass the new operand
25887         if it needed no address reloads, otherwise pass null.
25888
25889 2008-01-30  Richard Henderson  <rth@redhat.com>
25890
25891         PR c/34993
25892         * tree.c (build_type_attribute_qual_variant): Skip TYPE_DOMAIN
25893         for unbounded arrays.
25894
25895 2008-01-30  Silvius Rus  <rus@google.com>
25896
25897         * config/i386/xmmintrin.h (_mm_prefetch): Add const to first arg.
25898
25899 2008-01-30  Jan Hubicka  <jh@suse.cz>
25900
25901         PR target/34982
25902         * i386.c (init_cumulative_args): Use real function declaration when
25903         calling locally.
25904
25905 2008-01-30  Richard Sandiford  <rsandifo@nildram.co.uk>
25906
25907         PR rtl-optimization/34998
25908         * global.c (build_insn_chain): Treat non-subreg_lowpart
25909         SUBREGs of pseudos as clobbering all the words covered by the
25910         SUBREG, not just all the bytes.
25911         * ra-conflict.c (clear_reg_in_live): Likewise.  Take the
25912         original df_ref rather than an extract parameter.
25913         (global_conflicts): Update call accordingly.
25914
25915 2008-01-30  Andreas Krebbel  <krebbel1@de.ibm.com>
25916
25917         * config/s390/fixdfdi.h (__fixunstfdi, __fixtfdi): Rearrange
25918         the overflow check to make it easier to read.
25919         (__fixtfdi): Change the type of the ll member in union
25920         long_double to UDItype_x.
25921
25922 2008-01-30  Jakub Jelinek  <jakub@redhat.com>
25923
25924         PR middle-end/34969
25925         * cgraph.h (cgraph_update_edges_for_call_stmt): New prototype.
25926         * cgraph.c (cgraph_update_edges_for_call_stmt): New function.
25927         * tree-inline.c (fold_marked_statements): Call
25928         cgraph_update_edges_for_call_stmt if folding a call statement.
25929         * cgraphunit.c (verify_cgraph_node): Set cfun to this_cfun for
25930         debug_generic_stmt calls, reset it back afterwards.
25931
25932         PR c/35017
25933         * c-decl.c (start_decl): Don't pedwarn about TREE_READONLY
25934         static decls.
25935         * c-typeck.c (build_external_ref): Don't pedwarn about
25936         static vars in current function's scope.
25937
25938 2008-01-29  Joseph Myers  <joseph@codesourcery.com>
25939
25940         * config.gcc (i[34567]86-*-nto-qnx*): Remove deprecation.
25941
25942 2008-01-29  Bernhard Fischer  <aldot@gcc.gnu.org>
25943
25944         PR c/35002
25945         * ipa-struct-reorg.c: Fix spelling.
25946         * params.def: Ditto.
25947
25948 2008-01-29  Richard Guenther  <rguenther@suse.de>
25949
25950         PR middle-end/35006
25951         * tree-inline.h (struct copy_body_data): Add remapping_type_depth
25952         field.
25953         * tree-inline.c (remap_type): Increment remapping_type_depth
25954         around remapping types.
25955         (copy_body_r): Only add referenced variables if they are referenced
25956         from code, not types.
25957
25958 2008-01-29  Douglas Gregor  <doug.gregor@gmail.com>
25959
25960         PR c++/34055
25961         PR c++/34103
25962         PR c++/34219
25963         PR c++/34606
25964         PR c++/34753
25965         PR c++/34754
25966         PR c++/34755
25967         PR c++/34919
25968         PR c++/34961
25969         * c-pretty-print.c (pp_c_type_qualifier_list): Don't try to print
25970         qualifiers for an ERROR_MARK_NODE or a NULL_TREE.
25971
25972 2008-01-28  Andy Hutchinson   <hutchinsonandy@netscape.net>
25973
25974         PR target/34412
25975         * config/avr/avr.c (expand_prologue): Use correct QI mode frame
25976         pointer for tiny stack.
25977
25978 2008-01-28  Bernhard Fischer  <aldot@gcc.gnu.org>
25979
25980         * doc/tree-ssa.texi: Add cindex PHI nodes and improve wording.
25981
25982 2008-01-28  Bernhard Fischer  <aldot@gcc.gnu.org>
25983
25984         * config/vx-common.h: Fix typo in comment.
25985
25986 2008-01-28  Ian Lance Taylor  <iant@google.com>
25987
25988         PR c++/34862
25989         PR c++/33407
25990         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Don't
25991         coalesce pointers if they have different DECL_NO_TBAA_P values.
25992         * tree-ssa-copy.c (may_propagate_copy): Don't propagate copies
25993         between variables with different DECL_NO_TBAA_P values.
25994
25995 2008-01-28  Nathan Froyd  <froydnj@codesourcery.com>
25996
25997         PR 31535
25998         * config/rs6000/rs6000.c (small_data_operand): Vectors and floats
25999         are not legitimate small data references on SPE targets.
26000
26001 2008-01-28  David Daney  <ddaney@avtrex.com>
26002
26003         * doc/install.texi (mips-*-*): Recommend binutils 2.18.
26004
26005 2008-01-28  David Daney  <ddaney@avtrex.com>
26006
26007         * doc/install.texi (--disable-libgcj-bc):  Reword documentation.
26008
26009 2008-01-27  Joseph Myers  <joseph@codesourcery.com>
26010
26011         * config.gcc (strongarm*-*, ep9312*-*, xscale*-*, parisc*-*,
26012         m680[012]0-*, *-*-beos*, *-*-kaos*, *-*-linux*aout*,
26013         *-*-linux*libc1*, *-*-solaris2.[0-6], *-*-solaris2.[0-6].*,
26014         *-*-sysv*, *-*-windiss*, alpha*-*-unicosmk*, cris-*-aout,
26015         hppa1.1-*-pro*, hppa1.1-*-osf*, hppa1.1-*-bsd*,
26016         i[34567]86-sequent-ptx4*, i[34567]86-*-nto-qnx*,
26017         i[34567]86-*-sco3.2v5*, i[34567]86-*-uwin*, powerpc-*-chorusos*,
26018         vax-*-bsd*, vax-*-ultrix*): Mark obsolete.
26019
26020 2008-01-27  Bernhard Fischer  <aldot@gcc.gnu.org>
26021
26022         * basic-block.h (condjump_equiv_p): Fix comment.
26023
26024 2008-01-27  Bernhard Fischer  <aldot@gcc.gnu.org>
26025
26026         * tree-pretty-print.c (print_generic_decl, print_generic_stmt,
26027         print_generic_stmt_indented): Fix comment.
26028
26029 2008-01-27  Bernhard Fischer  <aldot@gcc.gnu.org>
26030
26031         * configure.ac (__stack_chk_fail): Add detecion for availability
26032         of SSP in uClibc by checking if __UCLIBC_HAS_SSP__ is defined.
26033         * configure: Regenerate.
26034
26035 2008-01-26  Maxim Kuvyrkov  <maxim@codesourcery.com>
26036
26037         PR middle-end/34688
26038         * final.c (output_addr_const): Handle TRUNCATE.
26039
26040 2008-01-26  Zdenek Dvorak  <ook@ucw.cz>
26041
26042         PR target/34711
26043         * tree-ssa-loop-ivopts.c (comp_cost): New type.
26044         (zero_cost, infinite_cost): New constants.
26045         (struct cost_pair): Change type of cost to comp_cost.
26046         (struct iv_ca): Change type of cand_use_cost and cost to comp_cost.
26047         (new_cost, add_costs, sub_costs, compare_costs, infinite_cost_p):
26048         New functions.
26049         (set_use_iv_cost, force_expr_to_var_cost, force_var_cost,
26050         split_address_cost, ptr_difference_cost, difference_cost,
26051         get_computation_cost_at, get_computation_cost,
26052         determine_use_iv_cost_generic, determine_use_iv_cost_address,
26053         determine_use_iv_cost_condition, determine_use_iv_costs,
26054         cheaper_cost_pair, iv_ca_recount_cost, iv_ca_set_no_cp,
26055         iv_ca_set_cp, iv_ca_cost, iv_ca_new, iv_ca_dump, iv_ca_extend,
26056         iv_ca_narrow, iv_ca_prune, try_improve_iv_set, find_optimal_iv_set):
26057         Change type of cost to comp_cost.
26058         (determine_iv_cost): Increase cost of non-original ivs, instead
26059         of decreasing the cost of original ones.
26060         (get_address_cost): Indicate the complexity of the addressing mode
26061         in comp_cost.
26062         (try_add_cand_for): Prefer using ivs not specific to some object.
26063         * tree-flow.h (force_expr_to_var_cost): Declaration removed.
26064
26065 2008-01-26  Peter Bergner  <bergner@vnet.ibm.com>
26066             Janis Johnson  <janis187@us.ibm.com>
26067
26068         PR target/34814
26069         * doc/tm.texi (TARGET_EXPAND_TO_RTL_HOOK): Document.
26070         (TARGET_INSTANTIATE_DECLS): Likewise.
26071         * target.h (expand_to_rtl_hook): New target hook.
26072         (instantiate_decls): Likewise.
26073         * function.c (instantiate_decl): Make non-static.  Rename to...
26074         (instantiate_decl_rtl): ... this.
26075         (instantiate_expr): Use instantiate_decl_rtl.
26076         (instantiate_decls_1): Likewise.
26077         (instantiate_decls): Likewise.
26078         (instantiate_virtual_regs: Call new instantiate_decls taget hook.
26079         * function.h (instantiate_decl_rtl): Add prototype.
26080         * cfgexpand.c (target.h): New include.
26081         (tree_expand_cfg): Call new expand_to_rtl_hook target hook.
26082         * target-def.h (TARGET_EXPAND_TO_RTL_HOOK): New define.
26083         (TARGET_INSTANTIATE_DECLS): Likewise.
26084         (TARGET_INITIALIZER): New target hooks added.
26085         * config/rs6000/rs6000-protos.h (rs6000_secondary_memory_needed_rtx):
26086         New prototype.
26087         * config/rs6000/rs6000.c (tree-flow.h): New include.
26088         (machine_function): Add sdmode_stack_slot field.
26089         (rs6000_alloc_sdmode_stack_slot): New function.
26090         (rs6000_instantiate_decls): Likewise.
26091         (rs6000_secondary_memory_needed_rtx): Likewise.
26092         (rs6000_check_sdmode): Likewise.
26093         (TARGET_EXPAND_TO_RTL_HOOK): Target macro defined.
26094         (TARGET_INSTANTIATE_DECLS): Likewise.
26095         (rs6000_hard_regno_mode_ok): Allow SDmode.
26096         (num_insns_constant): Likewise.  Handle _Decimal32 constants.
26097         (rs6000_emit_move): Handle SDmode.
26098         (function_arg_advance): Likewise.
26099         (function_arg): Likewise.
26100         (rs6000_gimplify_va_arg): Likewise.  Add special handling of
26101         SDmode var args for 32-bit compiles.
26102         (rs6000_secondary_reload_class): Handle SDmode.
26103         (rs6000_output_function_epilogue): Likewise.
26104         (rs6000_function_value): Simplify if statement.
26105         (rs6000_libcall_value): Likewise.
26106         * config/rs6000/rs6000.h (SLOW_UNALIGNED_ACCESS): Handle SDmode.
26107         (SECONDARY_MEMORY_NEEDED_RTX): Add define.
26108         * config/rs6000/dfp.md (movsd): New define_expand and splitter.
26109         (movsd_hardfloat): New define_insn.
26110         (movsd_softfloat): Likewise.
26111         (movsd_store): Likewise.
26112         (movsd_load): Likewise.
26113         (extendsddd2): Likewise.
26114         (extendsdtd2): Likewise.
26115         (truncddsd2): Likewise.
26116         (movdd_hardfloat64): Fixup comment.
26117         (UNSPEC_MOVSD_LOAD): New constant.
26118         (UNSPEC_MOVSD_STORE): Likewise.
26119
26120 2008-01-26  Jakub Jelinek  <jakub@redhat.com>
26121
26122         PR c++/34965
26123         * c-pretty-print.c (pp_c_exclusive_or_expression): Handle
26124         TRUTH_XOR_EXPR.
26125         (pp_c_logical_and_expression): Handle TRUTH_AND_EXPR.
26126         (pp_c_logical_or_expression): Handle TRUTH_OR_EXPR.
26127         (pp_c_expression): Handle TRUTH_AND_EXPR, TRUTH_OR_EXPR
26128         and TRUTH_XOR_EXPR.
26129
26130 2008-01-26  David Edelsohn  <edelsohn@gnu.org>
26131
26132         PR target/34794
26133         * config.gcc: Separate AIX 5.3 from AIX 6.1.
26134         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
26135         __LONGDOUBLE128 too.
26136         * config/rs6000/aix61.h: New file.
26137
26138 2008-01-26  Richard Sandiford  <rsandifo@nildram.co.uk>
26139
26140         PR rtl-optimization/34959
26141         * optabs.c (expand_unop): In libcall notes, give ffs, clz, ctz,
26142         popcount and parity rtxes the same mode as their operand.
26143         Truncate or extend the result to the return value's mode
26144         if necessary.
26145
26146 2008-01-26  Richard Sandiford  <rsandifo@nildram.co.uk>
26147
26148         PR target/34981
26149         * config/mips/mips-protos.h (mips_expand_call): Return an rtx.
26150         * config/mips/mips.h (FIRST_PSEUDO_REGISTER): Rename FAKE_CALL_REGNO
26151         to GOT_VERSION_REGNUM.
26152         (CALL_REALLY_USED_REGISTERS): Set the GOT_VERSION_REGNUM entry to 0.
26153         (EPILOGUE_USES): Include GOT_VERSION_REGNUM if TARGET_USE_GOT.
26154         * config/mips/mips.c (mips_emit_call_insn): New function.
26155         (mips_call_tls_get_addr): Call mips_expand_call directly.
26156         (mips16_copy_fpr_return_value): Use mips_emit_call_insn rather than
26157         emit_call_insn.
26158         (mips16_build_call_stub): Likewise.  Return the call insn or null.
26159         (mips_expand_call): Update the call to mips16_build_call_stub
26160         accordingly and a remove redundant condition.  Assert that MIPS16
26161         stubs do not use lazy binding.  Use mips_emit_call_insn and return
26162         the call insn.
26163         (mips_extra_live_on_entry): Include GOT_VERSION_REGNUM if
26164         TARGET_USE_GOT.
26165         (mips_hard_regno_mode_ok_p): Allow SImode for GOT_VERSION_REGNUM.
26166         (mips_avoid_hazard): Remove hazard_set handling.
26167         * config/mips/mips.md (UNSPEC_EH_RECEIVER): Rename to...
26168         (UNSPEC_RESTORE_GP): ...this.
26169         (UNSPEC_SET_GOT_VERSION, UNSPEC_UPDATE_GOT_VERSION): New constants.
26170         (FAKE_CALL_REGNO): Rename to...
26171         (GOT_VERSION_REGNUM): ...this.
26172         (type): Add "ghost" value.  Add an associated insn reservation.
26173         (hazard_set): Remove.
26174         (exception_receiver): Rename to...
26175         (restore_gp): ...this and update the unspec identifier accordingly.
26176         (exception_receiver, nonlocal_got_receiver): New expanders.
26177         (load_call<mode>): Use GOT_VERSION_REGNUM.  Don't set
26178         FAKE_CALL_REGNO.  Remove hazard_set attribute.
26179         (set_got_version, update_got_version): New patterns.
26180
26181 2008-01-26  Danny Smith  <dannysmith@users.sourceforge.net>
26182
26183         PR target/34970
26184         * config/i386/cygming.h (ASM_OUTPUT_LABELREF): Define.
26185
26186 2008-01-25  Joseph Myers  <joseph@codesourcery.com>
26187
26188         PR other/31955
26189         * doc/install.texi2html: Generate gcc-vers.texi.
26190
26191 2008-01-25  DJ Delorie  <dj@redhat.com>
26192
26193         * config/m32c/m32c.h (ASM_PREFERRED_EH_DATA_FORMAT): Define.
26194
26195 2008-01-25  Joseph Myers  <joseph@codesourcery.com>
26196
26197         * config/c4x: Remove directory.
26198         * config.gcc (crx-*, mt-*): Mark obsolete.
26199         (c4x-*, tic4x-*, c4x-*-rtems*, tic4x-*-rtems*, c4x-*, tic4x-*,
26200         h8300-*-rtemscoff*, ns32k-*-netbsdelf*, ns32k-*-netbsd*,
26201         sh-*-rtemscoff*): Remove cases.
26202         * defaults.h (C4X_FLOAT_FORMAT): Remove.
26203         * real.c (encode_c4x_single, decode_c4x_single,
26204         encode_c4x_extended, decode_c4x_extended, c4x_single_format,
26205         c4x_extended_format): Remove.
26206         * real.h (c4x_single_format, c4x_extended_format): Remove.
26207         * doc/extend.texi (interrupt, naked): Remove mention of attributes
26208         on C4x.
26209         (Pragmas): Remove comment about c4x pragmas.
26210         * doc/install.texi (c4x): Remove target-specific instructions.
26211         * doc/invoke.texi (TMS320C3x/C4x Options): Remove.
26212         * doc/md.texi (Machine Constraints): Remove C4x documentation.
26213         * doc/tm.texi (MEMBER_TYPE_FORCES_BLK, c_register_pragma): Do not
26214         refer to C4x source files as examples.
26215         (C4X_FLOAT_FORMAT): Remove documentation.
26216
26217 2008-01-25  Bernd Schmidt  <bernd.schmidt@analog.com>
26218
26219         * config/bfin/bfin.c (override_options): Reorder tests so that
26220         flag_pic gets enabled for -msep-data.
26221
26222 2008-01-25  Richard Guenther  <rguenther@suse.de>
26223
26224         PR middle-end/32244
26225         * expr.c (expand_expr_real_1): Reduce result of LSHIFT_EXPR
26226         to its bitfield precision if required.
26227
26228 2008-01-25  Jakub Jelinek  <jakub@redhat.com>
26229
26230         PR middle-end/33880
26231         * tree-nested.c (walk_omp_for): New function.
26232         (convert_nonlocal_reference, convert_local_reference): Call
26233         walk_omp_for on OMP_FOR.
26234         (convert_call_expr): Call walk_body on OMP_FOR's
26235         OMP_FOR_PRE_INIT_BODY.
26236
26237 2008-01-25  Richard Guenther  <rguenther@suse.de>
26238
26239         PR tree-optimization/34966
26240         * tree-ssa-math-opts.c (execute_cse_sincos_1): For all but
26241         default defs and PHI_NODEs we have to insert after the
26242         defining statement.
26243
26244 2008-01-24  Nick Clifton  <nickc@redhat.com>
26245
26246         * config/stormy16/stormy16-lib2.c (MIN_UNITS_PER_WORD):
26247         Provide a default definition.
26248         (LIBGCC2_UNITS_PER_WORD): Likewise.
26249
26250         * config/stormy16/stormy16.c: Include df.h for the prototype
26251         for df_regs_ever_live_p.
26252         (xstormy16_expand_builtin_va_start): Convert the stack offset
26253         into a component_ref and then use POINTER_PLUS_EXPR to add it
26254         to the incoming_virtual_args_rtx.
26255         (xstormy16_gimplify_va_arg_expr): Rename to
26256         xstormy16_gimplify_va_arg_expr.
26257         Use POINTER_PLUS_EXPR when performing pointer arithmetic.
26258         (TARGET_GIMPLIFY_VA_ARG_EXPR): Use renamed
26259         xstormy16_gimplify_va_arg_expr.
26260         Fix up some formatting issues.
26261
26262         * config/stormy16/stormy16.c: (xstormy16_carry_plus_operand):
26263         Move to predicates.md.
26264         (xs_hi_general_operand): Likewise.
26265         (xs_hi_nonmemory_operand): Likewise.
26266         * config/stormy16/predicates.md:
26267         (xstormy16_carry_plus_operand): New predicate.
26268         (xs_hi_general_operand): New predicate.
26269         (xs_hi_nonmemory_operand): New predicate.
26270         * config/stormy16/stormy16-protos.h:
26271         (xstormy16_carry_plus_operand): Delete prototype.
26272         (xs_hi_general_operand): Likewise.
26273         (xs_hi_nonmemory_operand): Likewise.
26274
26275         * config/storm16/stormy16.md (addhi3): Remove earlyclobber
26276         modifiers as they are no longer needed and they can trigger
26277         reload spill failures.
26278
26279         * config/storm16/stormy16.md (ineqbranchsi): Replace match_dup
26280         with a match_operand in order to help reload.
26281
26282         * config/storm16/stormy16.md (movhi_internal): Replace 'r'
26283         constraint with 'e' for the 8th alternative as this version of
26284         the mov.w instruction only accepts the lower 8 registers.
26285
26286 2008-01-25  Uros Bizjak  <ubizjak@gmail.com>
26287
26288         PR target/34856
26289         * simplifx-rtx.c (simplify_const_binary_operation) [VEC_CONCAT]:
26290         Consider only CONST_INT, CONST_DOUBLE and CONST_FIXED as constant
26291         vector elements.
26292
26293 2008-01-25  Jakub Jelinek  <jakub@redhat.com>
26294
26295         PR middle-end/33333
26296         * gimplify.c (gimplify_omp_for): Gimplify OMP_FOR_PRE_BODY.
26297
26298 2008-01-25  Golovanevsky Olga  <olga@il.ibm.com>
26299
26300         * ipa-struct-reorg.c (remove_str_allocs_in_func, remove_str_allocs):
26301         New functions.
26302         (remove_structure): Update allocations list before removing structure.
26303
26304 2008-01-25  Golovanevsky Olga  <olga@il.ibm.com>
26305
26306         * ipa-struct-reorg.c (is_safe_cond_expr,
26307         create_new_stmts_for_cond_expr): Use integer_zerop function,
26308         that recognize not only zero-pointer, but zero-integer too.
26309
26310 2008-01-25  Ben Elliston  <bje@au.ibm.com>
26311
26312         PR other/22232
26313         * fixproto: Escape "." in sed expression that strips leading "./".
26314
26315 2008-01-24  H.J. Lu  <hongjiu.lu@intel.com>
26316
26317         PR driver/34904
26318         * gcc.c (SWITCH_OK): Removed.
26319         (SWITCH_LIVE): Changed to bit.
26320         (SWITCH_FALSE): Likewise.
26321         (SWITCH_IGNORE): Likewise.
26322         (switchstr): Change live_cond to unsigned int.
26323         (process_command): Replace SWITCH_OK with 0.
26324         (do_self_spec): Likewise.
26325         (set_collect_gcc_options): Check the SWITCH_IGNORE bit.
26326         (give_switch): Likewise.
26327         (used_arg): Likewise.
26328         (do_spec_1): Set the SWITCH_IGNORE bit.
26329         (check_live_switch): Check both SWITCH_LIVE and SWITCH_FALSE
26330         bits.  Set the SWITCH_LIVE bit.
26331
26332 2008-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
26333
26334         * config/s390/s390.h (MOVE_RATIO): Define new target macro.
26335
26336 2008-01-24  Richard Sandiford  <rsandifo@nildram.co.uk>
26337
26338         PR tree-optimization/34472
26339         * ipa-struct-reorg.c (safe_cond_expr_check): Change the DATA
26340         parameter to a "bool *" and set *DATA to false if there is
26341         an unsafe access.  Do not delete the structure here.
26342         (check_cond_exprs): Delete it here instead.
26343         (check_cond_exprs, exclude_cold_structs): Do not increase
26344         I when removing a structure.
26345
26346 2008-01-24  Uros Bizjak  <ubizjak@gmail.com>
26347
26348         PR target/34856
26349         * config/i386/i386.c (ix86_expand_vector_init): Consider only
26350         CONST_INT, CONST_DOUBLE and CONST_FIXED as constant vector elements.
26351
26352 2008-01-24  Jakub Jakub Jelinek  <jakub@redhat.com>
26353
26354         PR middle-end/34934
26355         * tree-stdarg.c (reachable_at_most_once): Use VEC vector instead of
26356         a fixed vector for stack.
26357
26358 2008-01-24  Ben Elliston  <bje@au.ibm.com>
26359
26360         PR c++/25701
26361         * doc/gcc.texi (Software development): Add a direntry for g++.
26362
26363 2008-01-23  Hans-Peter Nilsson  <hp@axis.com>
26364
26365         * config/cris/cris.h (CC1PLUS_SPEC, OPTIMIZATION_OPTIONS): Drop
26366         stale and straggling -fforce-addr comments above.
26367
26368         * config/cris/cris.h (CRIS_SUBTARGET_VERSION, TARGET_VERSION): Don't
26369         define.
26370         * config/cris/linux.h (CRIS_SUBTARGET_VERSION): Don't define.
26371         * config/cris/aout.h (CRIS_SUBTARGET_VERSION): Don't define.
26372
26373 2008-01-23  Michael Matz  <matz@suse.de>
26374
26375         PR debug/34895
26376         * dwarf2out.c (force_type_die): Use modified_type_die instead of
26377         gen_type_die.
26378
26379 2008-01-23  Andreas Krebbel  <krebbel1@de.ibm.com>
26380
26381         * ipa-struct-reorg.c (create_new_malloc): Use pointer type as
26382         malloc result type.
26383
26384 2008-01-23 Anatoly Sokolov <aesok@post.ru>
26385
26386         * config/avr/avr.c (avr_current_arch): New variable.
26387         (avr_arch_types): Add 'avr31' and 'avr51' entries.
26388         (avr_arch): Add 'ARCH_AVR31' and 'ARCH_AVR51'.
26389         (avr_mcu_types): Add 'avr31' and 'avr51' architectures.
26390         (avr_override_options): Init 'avr_current_arch'.
26391         (base_arch_s): Move from here...
26392         * config/avr/avr.h (base_arch_s): ... here. Add new members
26393         'have_elpm', 'have_elpmx', 'have_eijmp_eicall', 'reserved'. Rename
26394         'mega' to 'have_jmp_call'.
26395         (TARGET_CPU_CPP_BUILTINS): Define "__AVR_HAVE_JMP_CALL__",
26396         "__AVR_HAVE_RAMPZ__", "__AVR_HAVE_ELPM__" and "__AVR_HAVE_ELPMX__"
26397         macros.
26398         (LINK_SPEC, CRT_BINUTILS_SPECS, ASM_SPEC): Add 'avr31' and 'avr51'
26399         architectures.
26400         * config/avr/t-avr (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
26401         MULTILIB_MATCHES): Ditto.
26402
26403 2008-01-23  Richard Guenther  <rguenther@suse.de>
26404
26405         PR middle-end/31529
26406         * cgraphunit.c (cgraph_reset_node): Always mark the node
26407         not reachable if it is not queued already.
26408
26409 2008-01-23  Bernd Schmidt  <bernd.schmidt@analog.com>
26410
26411         * config/bfin/bfin-protos.h (WA_RETS, ENABLE_WA_RETS): New macros.
26412         * config/bfin/bfin.c (bfin_cpus): Add WA_RETS everywhere.
26413         (cputype_selected): New static variable.
26414         (bfin_handle_option): Set it if -mcpu is used.
26415         (override_option): Select default set of workarounds if no cpu type
26416         selected on the command line.
26417         (workaround_rts_anomaly): Only run if ENABLE_WA_RETS.
26418
26419         From  Michael Frysinger  <michael.frysinger@analog.com>
26420         * config/bfin/bfin-protos.h (enum bfin_cpu_type): Add
26421         BFIN_CPU_BF547, BFIN_CPU_BF523, BFIN_CPU_BF524, and BFIN_CPU_BF526.
26422
26423         * config/bfin/elf.h (LIB_SPEC): Use proper linker script
26424         for bf547, bf523, bf524, and bf526.
26425         * config/bfin/bfin.c (bfin_cpus[]): Add bf547,  bf523, bf524, and
26426         bf526.
26427         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
26428         __ADSPBF523__ for bf523, __ADSPBF524__ for bf524,
26429         __ADSPBF526__ for bf526, __ADSPBF52x__ for all three, as well as
26430         __ADSPBF547__ and __ADSPBF54x__ for bf547.
26431         * doc/invoke.texi (Blackfin Options): Document that
26432         -mcpu now accept bf547, bf523, bf524, and bf526.
26433
26434 2008-01-22  Eric Botcazou  <ebotcazou@adacore.com>
26435
26436         PR rtl-optimization/34628
26437         * combine.c (try_combine): Stop and undo after the first combination
26438         if an autoincrement side-effect on the first insn has effectively
26439         been lost.
26440
26441 2008-01-22  David Edelsohn  <edelsohn@gnu.org>
26442
26443         PR target/34529
26444         * config/rs6000/rs6000.c (rs6000_legitimate_offset_address_p):
26445         Offset addresses are not valid for Altivec or paired float modes.
26446
26447 2008-01-22  Jakub Jelinek  <jakub@redhat.com>
26448
26449         PR c++/34607
26450         * c-parser.c (c_parser_omp_for_loop): Don't call c_finish_omp_for
26451         if DECL_INITIAL (decl) is error_mark_node.
26452
26453         PR c++/34914
26454         * c-common.c (handle_vector_size_attribute): Only allow
26455         integral, scalar float and fixed point types.  Handle OFFSET_TYPE
26456         the same way as pointer, array etc. types.
26457         * tree.c (reconstruct_complex_type): Handle OFFSET_TYPE.
26458
26459         PR c++/34917
26460         * tree.c (build_type_attribute_qual_variant): Call
26461         build_qualified_type if attributes are equal, but quals are not.
26462
26463 2008-01-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26464
26465         PR 32102
26466         * doc/invoke.texi (-Wall): -Wall enables -Wstrict-overflow=1.
26467         * flags.h (warn_strict_aliasing): Remove.
26468         (warn_strict_overflow): Remove.
26469         * opts.c (warn_strict_aliasing): Remove.
26470         (warn_strict_overflow): Remove.
26471         * c-opts.c (c_common_handle_option): -Wall only sets
26472         -Wstrict-aliasing or -Wstrict-overflow if they are uninitialized.
26473         (c_common_post_options): Give default values to -Wstrict-aliasing
26474         and -Wstrict-overflow if they are uninitialized.
26475         * common.opt (Wstrict-aliasing): Specify Var and Init.
26476         (Wstrict-overflow): Likewise.
26477
26478 2008-01-22  Kenneth Zadeck  <zadeck@naturalbridge.com>
26479
26480         PR rtl-optimization/26854
26481         PR rtl-optimization/34400
26482         PR rtl-optimization/34884
26483         * ddg.c (create_ddg_dep_from_intra_loop_link): Use
26484         DF_RD->gen.
26485         * df.h (df_changeable_flags.DF_RD_NO_TRIM): Deleted
26486         (df_rd_bb_info.expanded_lr_out): Deleted
26487         * loop_invariant.c (find_defs): Deleted DF_RD_NO_TRIM flag.
26488         * loop_iv.c (iv_analysis_loop_init): Ditto.  * df-problems.c
26489         (df_rd_free_bb_info, df_rd_alloc, df_rd_confluence_n,
26490         df_rd_bb_local_compute, df_rd_transfer_function, df_rd_free):
26491         Removed code to allocate, initialize or free expanded_lr_out.
26492         (df_rd_bb_local_compute_process_def): Restructured to make more
26493         understandable.
26494         (df_rd_confluence_n): Removed code to no apply invalidate_by_call
26495         sets if the sets are being trimmed.
26496
26497 2008-01-22  H.J. Lu  <hongjiu.lu@intel.com>
26498
26499         PR bootstrap/32287
26500         * configure.ac (ld_vers): Support GNU linker version xx.xx.*
26501         (as_vers): Likewise.
26502         * configure: Regenerated.
26503
26504 2008-01-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26505
26506         PR middle-end/33092
26507         * tree-pass.h (pass_build_alias): New pass.
26508         * tree-ssa-alias.c (gate_build_alias): New.
26509         (pass_build_alias): New.
26510         * passes.c (init_optimization_passes): Add pass_build_alias after
26511         pass_create_structure_vars.
26512
26513 2008-01-22  Wolfgang Gellerich  <gellerich@de.ibm.com>
26514
26515         * config/s390/s390.h (S390_TDC_POSITIVE_NORMALIZED_NUMBER):
26516         Renamed to S390_TDC_POSITIVE_NORMALIZED_BFP_NUMBER.
26517         (S390_TDC_NEGATIVE_NORMALIZED_NUMBER): Renamed to
26518         S390_TDC_NEGATIVE_NORMALIZED_BFP_NUMBER.
26519         (S390_TDC_POSITIVE_DENORMALIZED_NUMBER): Renamed to
26520         S390_TDC_POSITIVE_DENORMALIZED_BFP_NUMBER.
26521         (S390_TDC_NEGATIVE_DENORMALIZED_NUMBER): Renamed to
26522         S390_TDC_NEGATIVE_DENORMALIZED_BFP_NUMBER.
26523         (S390_TDC_POSITIVE_NORMALIZED_BFP_NUMBER): New constant.
26524         (S390_TDC_NEGATIVE_NORMALIZED_BFP_NUMBER): New constant.
26525         (S390_TDC_POSITIVE_DENORMALIZED_BFP_NUMBER): New constant.
26526         (S390_TDC_NEGATIVE_DENORMALIZED_BFP_NUMBER): New constant.
26527         * config/s390/s390.md (FP_ALL): New mode iterator.
26528         (_d): New mode attribute.
26529         ("*signbit<mode>2>"): Changed mode of first operand.
26530         ("isinf<mode>2"): Changed mode of first operand.
26531         ("*TDC_insn"): Adaptation for DFP modes.
26532
26533 2008-01-22  Ben Elliston  <bje@au.ibm.com>
26534
26535         * tree.c (check_qualified_type): Improve function description.
26536
26537 2008-01-21  Jason Merrill  <jason@redhat.com>
26538
26539         PR c++/34196
26540         * tree.h (TRY_CATCH_IS_CLEANUP): New macro.
26541         * tree-eh.c (honor_protect_cleanup_actions): Strip TRY_CATCH_EXPR
26542         if it is set.
26543
26544 2008-01-21  DJ Delorie  <dj@redhat.com>
26545
26546         * doc/tm.texi (HARD_REGNO_NREGS): Note that this macro must not
26547         return zero.
26548
26549 2008-01-21  Richard Guenther  <rguenther@suse.de>
26550
26551         PR middle-end/34856
26552         * tree-cfg.c (verify_expr): Allow all invariant expressions
26553         instead of just constant class ones as reference argument.
26554         * tree-ssa-loop-im.c (for_each_index): Handle CONSTRUCTOR
26555         like any other constant.
26556         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise.
26557
26558 2008-01-21  H.J. Lu  <hongjiu.lu@intel.com>
26559
26560         * regmove.c (fixup_match_1): Update call crossed frequencies.
26561
26562 2008-01-21  Richard Guenther  <rguenther@suse.de>
26563
26564         PR c/34885
26565         * tree-inline.c (setup_one_parameter): Deal with mismatched
26566         types using a VIEW_CONVERT_EXPR.
26567
26568 2008-01-21  Alon Dayan  <alond@il.ibm.com>
26569             Olga Golovanevsky  <olga@il.ibm.com>
26570
26571         PR tree-optimization/34701
26572         * ipa-struct-reorg.c (gen_size): Fix the malloc parameter calculation
26573         when the structure size is not a power of 2.
26574
26575 2008-01-20  Kenneth Zadeck  <zadeck@naturalbridge.com>
26576
26577         * doc/install.texi: Add doc for --enable-checking=df.
26578
26579 2008-01-20  Kaz Kojima  <kkojima@gcc.gnu.org>
26580
26581         PR rtl-optimization/34808
26582         * emit-rtl.c (try_split): Handle REG_RETVAL notes.
26583
26584 2008-01-20  Richard Sandiford  <rsandifo@nildram.co.uk>
26585
26586         * global.c (find_reg): Only compute EH_RETURN_DATA_REGNO once per
26587         input.
26588
26589 2008-01-19  Kenneth Zadeck  <zadeck@naturalbridge.com>
26590
26591         PR rtl-optimization/26854
26592         PR rtl-optimization/34400
26593         * ddg.c (create_ddg_dep_from_intra_loop_link): Do not use
26594         DF_RD->gen.
26595         * df.h (df_changeable_flags.DF_RD_NO_TRIM): New.
26596         (df_rd_bb_info.expanded_lr_out): New.
26597         * loop_invariant.c (find_defs): Added DF_RD_NO_TRIM flag.
26598         * loop_iv.c (iv_analysis_loop_init): Ditto.
26599         * df-problems.c (df_rd_free_bb_info, df_rd_alloc, df_rd_confluence_n,
26600         df_rd_bb_local_compute, df_rd_transfer_function, df_rd_free):
26601         Added code to allocate, initialize or free expanded_lr_out.
26602         (df_rd_bb_local_compute_process_def): Restructured to make
26603         more understandable.
26604         (df_rd_confluence_n): Add code to do nothing with fake edges and
26605         code to no apply invalidate_by_call sets if the sets are being trimmed.
26606         (df_lr_local_finalize): Renamed to df_lr_finalize.
26607         (df_live_local_finalize): Renamed to df_live_finalize.
26608
26609 2008-01-20  Richard Sandiford  <rsandifo@nildram.co.uk>
26610
26611         PR target/34831
26612         * config/mips/mips.md (div<mode>3): Use <recip_condition> when
26613         deciding whether to use reciprocal instructions.
26614
26615 2008-01-19  Uros Bizjak  <ubizjak@gmail.com>
26616
26617         * dwarf2out.c (dwarf2out_switch_text_section): Do not call
26618         dwarf2out_note_section_used if cold_text_section is NULL.
26619
26620 2008-01-19  Jakub Jelinek  <jakub@redhat.com>
26621
26622         PR gcov-profile/34610
26623         * tree-cfg.c (make_edges): Mark both outgoing edges from
26624         OMP_CONTINUE and from OMP_FOR as EDGE_ABNORMAL.
26625         * omp-low.c (expand_omp_for): Clear EDGE_ABNORMAL bits
26626         from OMP_FOR and OMP_CONTINUE outgoing edges.
26627
26628         * tree-profile.c (tree_profiling): Return early if
26629         cfun->after_tree_profile != 0.  Set cfun->after_tree_profile
26630         at the end.
26631         * omp-low.c (expand_omp_parallel): Copy after_tree_profile
26632         from cfun to child_cfun.
26633         * function.h (struct function): Add after_tree_profile bit.
26634
26635 2008-01-19 Anatoly Sokolov <aesok@post.ru>
26636
26637         * config/avr/avr.S (_exit): Disable interrupt.
26638
26639 2008-01-18  Kenneth Zadeck  <zadeck@naturalbridge.com>
26640             Steven Bosscher  <stevenb.gcc@gmail.com>
26641
26642         PR rtl-optimization/26854
26643         PR rtl-optimization/34400
26644         * df-problems.c (df_live_scratch): New scratch bitmap.
26645         (df_live_alloc): Allocate df_live_scratch when doing df_live.
26646         (df_live_reset): Clear the proper bitmaps.
26647         (df_live_bb_local_compute): Only process the artificial defs once
26648         since the order is not important.
26649         (df_live_init): Init the df_live sets only with the variables
26650         found live by df_lr.
26651         (df_live_transfer_function): Use the df_lr sets to prune the
26652         df_live sets as they are being computed.
26653         (df_live_free): Free df_live_scratch.
26654
26655 2008-01-18  Ian Lance Taylor  <iant@google.com>
26656
26657         * common.opt: Add fmerge-debug-strings.
26658         * dwarf2out.c (DEBUG_STR_SECTION_FLAGS): Test
26659         flag_merge_debug_strings rather than flag_merge_constants.
26660         * doc/invoke.texi (Option Summary): Mention
26661         -fmerge-debug-strings.
26662         (Debugging Options): Document -fmerge-debug-strings.
26663
26664 2008-01-18  Ian Lance Taylor  <iant@google.com>
26665
26666         PR c++/33407
26667         * tree.h (DECL_IS_OPERATOR_NEW): Define.
26668         (struct tree_function_decl): Add new field operator_new_flag.
26669         * tree-inline.c (expand_call_inline): When inlining a call to
26670         operator new, force the return value to go into a variable, and
26671         set DECL_NO_TBAA_P on that variable.
26672         * c-decl.c (merge_decls): Merge DECL_IS_OPERATOR_NEW flag.
26673
26674 2008-01-18  Uros Bizjak  <ubizjak@gmail.com>
26675
26676         PR debug/34484
26677         * dwarf2out.c (dwarf2out_switch_text_section): Do not guard with
26678         DWARF2_DEBUGGING_INFO.
26679         (dwarf2out_note_section_used): Ditto.  Add prototype.
26680         (have_multiple_function_sections, text_section_used,
26681         cold_text_section_used, *cold_text_sections): Move declarations
26682         before their uses.
26683
26684 2008-01-17  Bob Wilson  <bob.wilson@acm.org>
26685
26686         * config/xtensa/unwind-dw2-xtensa.h (_Unwind_FrameState): Remove pc
26687         field and add signal_ra.
26688         * config/xtensa/unwind-dw2-xtensa.c (uw_frame_state_for): Remove
26689         assignments to frame state pc.  Move end of stack check after
26690         MD_FALLBACK_FRAME_STATE_FOR.
26691         (uw_update_context_1): Use frame state signal_regs if set, instead
26692         of checking signal_frame flag.
26693         (uw_update_context): Use frame state signal_ra if set.
26694         * config/xtensa/linux.h (MD_UNWIND_SUPPORT): Define.
26695         * config/xtensa/linux-unwind.h: New file.
26696
26697 2008-01-18  Bernhard Fischer  <aldot@gcc.gnu.org>
26698
26699         * modulo-sched.c (get_sched_window): Fix comment typo.
26700
26701 2008-01-17  Andrew MacLeod  <amacleod@redhat.com>
26702
26703         PR tree-optimization/34648
26704         * tree-ssa-sccvn.c (visit_use): Expressions which can throw are varying.
26705
26706 2008-01-17  Anatoly Sokolov <aesok@post.ru>
26707
26708         * config/avr/avr.h (LINK_SPEC): Support -mrelax and -mpmem-wrap-around.
26709         * config/avr/avr.opt (mrelax, mpmem-wrap-around): Add.
26710
26711 2008-01-17  Seongbae Park  <seongbae.park@gmail.com>
26712
26713         PR rtl-optimization/34400
26714         * df-core.c (df_worklist_dataflow_overeager,
26715         df_worklist_dataflow_doublequeue): New functions.
26716         (df_worklist_dataflow): Two different worklist solvers.
26717         * params.def (PARAM_DF_DOUBLE_QUEUE_THRESHOLD_FACTOR):
26718         New param.
26719
26720 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
26721
26722         PR testsuite/34821
26723         * doc/invoke.texi: Document the dependence on pthread for fopenmp
26724         and ftree-parallelize-loops.
26725
26726 2008-01-17  Mircea Namolaru  <namolaru@il.ibm.com>
26727
26728         PR rtl-optimization/34826
26729         * loop-doloop (doloop_modify): Update the REG_BR_PROB note.
26730
26731 2008-01-17  Andreas Krebbel  <krebbel1@de.ibm.com>
26732
26733         * global.c (find_reg): Mark the eh regs as used if necessary.
26734         * ra-conflict.c (global_conflicts): Set no_eh_reg flag.
26735         * ra.h (struct allocno): no_eh_reg field added.  Changed
26736         no_stack_reg type to bitfield.
26737
26738 2008-01-17  Eric Botcazou  <ebotcazou@adacore.com>
26739
26740         * tree.c (substitute_in_expr): Add missing 'break'.
26741
26742 2008-01-17  Richard Guenther  <rguenther@suse.de>
26743
26744         PR tree-optimization/34825
26745         * tree-ssa-math-opts.c (is_division_by): Do not recognize
26746         x / x as division to handle.
26747
26748 2008-01-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
26749
26750         * pa64-hpux.h (LIB_SPEC): Add "-lpthread" in shared links if "-mt" or
26751         "-pthread" is specified.
26752         * pa-hpux11.h (LIB_SPEC): Likewise.
26753
26754 2008-01-16  Janis Johnson  <janis187@us.ibm.com>
26755             Peter Bergner  <bergner@vnet.ibm.com>
26756
26757         PR rtl-optimization/33796
26758         * sparseset.c (sparseset_alloc): Use xcalloc rather than xmalloc.
26759
26760 2008-01-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
26761
26762         PR libgfortran/34699
26763         * pa-hpux.h (LINK_SPEC): Only search /lib/pa1.1 and /usr/lib/pa1.1 on
26764         static links.
26765         * pa-hpux10.h (LINK_SPEC): Likewise.
26766         * pa-hpux11.h (LINK_SPEC): Don't search /lib/pa1.1 and /usr/lib/pa1.1.
26767
26768 2008-01-16  Richard Guenther  <rguenther@suse.de>
26769
26770         PR middle-end/32628
26771         * fold-const.c (fold_convert_const_int_from_int): Do not
26772         set overflow if that occured only because of a sign extension
26773         change when converting from/to a sizetype with the same
26774         precision and signedness.
26775
26776 2008-01-16  Uros Bizjak  <ubizjak@gmail.com>
26777
26778         PR debug/34249
26779         * dwarf2out.c (output_call_frame_info): Move output of FDE initial
26780         location address to the correct place.  Update copyright year.
26781
26782 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
26783
26784         * lambda-code.c (lambda_transform_legal_p): Handle the case of
26785         no dependences in the dependence_relations vector.
26786
26787 2008-01-16  Jan Hubicka  <jh@suse.cz>
26788
26789         PR rtl-optimization/31396
26790         * regstat.c (regstat_bb_compute_ri): Compute FREQ_CALLS_CROSSED.
26791         * cfg.c (dump_reg_info): Print it.
26792         * regs.h (struct reg_info_t): add freq_calls_crossed.
26793         (REG_FREQ_CALLS_CROSSED): New macro.
26794         * global.c (global_alloc): Compute freq_calls_crossed for allocno.
26795         (find_reg): Update call of CALLER_SAVE_PROFITABLE.
26796         * regmove.c (optimize_reg_copy_1, optimize_reg_copy_2, fixup_match_2,
26797         regmove_optimize): Update call crossed frequencies.
26798         * local-alloc.c (struct qty): Add freq_calls_crossed.
26799         (alloc_qty): Copute freq_calls_crossed.
26800         (update_equiv_regs, combine_regs): Update REG_FREQ_CALLS_CROSSED.
26801         (find_free_reg): Update call of CALLER_SAVE_PROFITABLE.
26802         * ra.h (struct allocno): Add freq_calls_crossed.
26803
26804 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
26805
26806         * gcc.c (LINK_COMMAND_SPEC): Add includes and link options for
26807         libgomp when compiling with ftree-parallelize-loops.
26808         (GOMP_SELF_SPECS): Add -pthread for ftree-parallelize-loops.
26809
26810 2008-01-16  Richard Guenther  <rguenther@suse.de>
26811
26812         PR tree-optimization/34769
26813         * tree-data-ref.c (initialize_matrix_A): Revert fix for PR34458.
26814         * tree.c (int_cst_value): Instead make this function more
26815         permissive in what it accepts as valid input.  Document this
26816         function always sign-extends the value.
26817
26818 2008-01-16  Jakub Jelinek  <jakub@redhat.com>
26819             Richard Guenther  <rguenther@suse.de>
26820
26821         PR c/34668
26822         * gimplify.c (fold_indirect_ref_rhs): Rename to ...
26823         (gimple_fold_indirect_ref_rhs): ... this.
26824         (gimple_fold_indirect_ref): New function with foldings
26825         that preserve lvalueness.
26826         (gimplify_modify_expr_rhs): Call gimple_fold_indirect_ref_rhs.
26827         * tree-flow.h (gimple_fold_indirect_ref): Declare.
26828         * tree-inline.c (copy_body_r): Use gimple_fold_indirect_ref
26829         to fold an INDIRECT_REF, fall back to the old use of
26830         fold_indirect_ref_1.
26831
26832 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
26833
26834         * tree-data-ref.c (subscript_dependence_tester_1): Call
26835         free_conflict_function.
26836         (compute_self_dependence): Same.
26837
26838 2008-01-16  Uros Bizjak  <ubizjak@gmail.com>
26839
26840         PR debug/34249
26841         * debug.h (dwarf2out_switch_text_section): Move declaration from ...
26842         * dwarf2out.c (dwarf2out_switch_text_section): ... here.  Make
26843         function global.
26844         * final.c (final_scan_insn) [NOTE_INSN_SWITCH_TEXT_SECTIONS]:
26845         Depending on dwarf2out_do_frame, call dwarf2out_switch_text_section
26846         for DWARF2_UNWIND_INFO targets.
26847
26848 2008-01-16  Richard Guenther  <rguenther@suse.de>
26849
26850         PR c/34768
26851         * c-typeck.c (common_pointer_type): Do not merge inconsistent
26852         type qualifiers for function types.
26853
26854 2008-01-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
26855
26856         * tree-parloops.c (gen_parallel_loop): Fix ommision of declaration for
26857         loop_iterator li from previous commit.
26858
26859 2008-01-15  Sebastian Pop  <sebastian.pop@amd.com>
26860
26861         * tree-parloops.c (gen_parallel_loop): Free loop bound estimations.
26862
26863 2008-01-12  Sebastian Pop  <sebastian.pop@amd.com>
26864
26865         * tree-parloops.c (loop_has_blocks_with_irreducible_flag): New.
26866         (parallelize_loops): Don't parallelize irreducible components.
26867
26868 2008-01-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26869
26870         PR c++/24924
26871         * c-opts (c_common_post_options): Do not enable CPP
26872         flag_pedantic_errors by default.
26873
26874 2008-01-14  Eric Botcazou  <ebotcazou@adacore.com>
26875
26876         PR rtl-optimization/31944
26877         * cse.c (remove_pseudo_from_table): New function.
26878         (merge_equiv_classes): Use above function to remove pseudo-registers.
26879         (invalidate): Likewise.
26880
26881 2008-01-13  Richard Guenther  <rguenther@suse.de>
26882
26883         PR middle-end/34601
26884         * emit-rtl.c (set_reg_attrs_for_decl_rtl): Use DECL_MODE
26885         instead of TYPE_MODE to deal with calls from expand_one_error_var.
26886
26887 2008-01-13  Uros Bizjak  <ubizjak@gmail.com>
26888
26889         * gcse.c (cprop_jump): Call validate_unshare_change instead of
26890         validate_change to unshare the source of the PC set.
26891
26892 2008-01-12  Jan Hubicka  <jh@suse.cz>
26893
26894         PR middle-end/32135
26895         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Do not construct
26896         references above array bounds.  This might trigger bounds checks for
26897         pointers to arrays.
26898
26899 2008-01-12  Sebastian Pop  <sebastian.pop@amd.com>
26900
26901         * tree-ssa-ter.c (free_temp_expr_table): Free num_in_part and
26902         new_replaceable_dependencies.
26903
26904 2008-01-12  Doug Kwan  <dougkwan@google.com>
26905
26906         * c-decl.c: (grokdeclarator): Use OPT_Wignored_qualifiers
26907         instead of OPT_Wreturn_type in warning due to ignored return type
26908         qualifiers.
26909         * c-opt.c (c_common_post_option): Add -Wignored-qualifiers to
26910         options included in -Wextra.
26911         * c.opt: New option -Wignored_qualifiers.
26912         * doc/invoke.texi (Warning Options, -Wextra): Add new option
26913         -Wignore_qualifiers.
26914         (-Wignored-qualifiers): Document.
26915         (-Wreturn-type): Remove description of functionality now handled
26916         by -Wignored-qualifiers.
26917
26918 2008-01-12  Eric Botcazou  <ebotcazou@adacore.com>
26919
26920         PR ada/33788
26921         * fold-const.c (fold_unary) <VIEW_CONVERT_EXPR>: Fold an existing
26922         NOP_EXPR if it is between integral types with the same precision.
26923
26924 2008-01-12  Jan Hubicka  <jh@suse.cz>
26925
26926         PR other/28023
26927         * invoke.texi (max-inline-recursive-depth): Fix default value.
26928
26929 2008-01-12  Zdenek Dvorak  <ook@ucw.cz>
26930
26931         * tree-parloops.c (transform_to_exit_first_loop): Cast nit to the
26932         correct type.
26933
26934 2008-01-11  Bob Wilson  <bob.wilson@acm.org>
26935
26936         * config/xtensa/xtensa.c (override_options): Set flag_shlib.
26937
26938 2008-01-11  James E. Wilson  <wilson@specifix.com>
26939
26940         PR target/26015
26941         * config/vax/elf.h (FRAME_POINTER_CFA_OFFSET): Define.
26942
26943 2008-01-11  Anatoly Sokolov <aesok@post.ru>
26944
26945         * config/avr/avr.c (expand_prologue, expand_epilogue): Don't
26946         save/restore frame pointer register and don't use 'call-prologues'
26947         optimization in function with "OS_task" attribute.
26948
26949 2008-01-11  Eric Botcazou  <ebotcazou@adacore.com>
26950
26951         PR middle-end/31309
26952         * expr.c (copy_blkmode_from_reg): Use a mode suited to the size
26953         when copying to memory.
26954
26955 2008-01-11  Steven Bosscher  <stevenb.gcc@gmail.com>
26956
26957         PR rtl-optimization/30905
26958         * cfgcleanup.c: Include dce.h
26959         (crossjumps_occured): New global variable.
26960         (try_crossjump_bb): Exit loop after finding a fallthru edge.
26961         If something changed, set crossjumps_occured to true.
26962         (try_optimize_cfg): Clear crossjumps_occured at the beginning.
26963         Don't add/remove fake edges to exit here...
26964         (cleanup_cfg): ...but do it here, when crossjumping.
26965         Run a fast DCE when successful crossjumps occured in the latest
26966         iteration of try_optimize_cfg.
26967
26968 2008-01-11  Richard Guenther  <rguenther@suse.de>
26969
26970         * tree-ssa-sccvn.c (struct vn_binary_op_s): Move hashcode near opcode.
26971         (struct vn_unary_op_s): Likewise.
26972         (vn_reference_insert): Free old reference on hash collision.
26973
26974 2008-01-10  Raksit Ashok  <raksit@google.com>
26975
26976         PR rtl-optimization/27971
26977         * combine.c (find_split_point): Split PLUS expressions which are
26978         inside a MEM rtx, and whose first operand is complex.
26979
26980 2008-01-10  DJ Delorie  <dj@redhat.com>
26981
26982         * config/m32c/m32c.c (m32c_hard_regno_nregs_1): Renamed from...
26983         (m32c_hard_regno_nregs): ...this, which is now a wrapper.
26984         (m32c_hard_regno_ok): Call the underlying function.
26985
26986 2008-01-10  Richard Guenther  <rguenther@suse.de>
26987
26988         PR middle-end/34683
26989         * tree-cfg.c (tree_merge_blocks): Do not go through the
26990         full-blown folding and stmt updating path if we just deal
26991         with virtual operands.
26992         * tree-ssa-copy.c (may_propagate_copy): Do not short-cut
26993         test for abnormal SSA_NAMEs.
26994
26995 2008-01-10  Andreas Krebbel  <krebbel1@de.ibm.com>
26996
26997         PR middle-end/34641
26998         * reload.c (push_reload): Add assertions.  All constants from
26999         reg_equiv_constant should have been used for replacing the respective
27000         pseudo earlier.
27001         (find_reloads_address): Invoke find_reloads_address_part for
27002         constant taken from the reg_equiv_constant array.
27003
27004 2008-01-10  Steven Bosscher  <stevenb.gcc@gmail.com>
27005
27006         * tree-ssa-sccvn.h (struct vn_ssa_aux): Make the most accessed
27007         field (valnum) the first in the struct.  Replace bools with
27008         unit bit fields.
27009
27010 2008-01-10  Richard Guenther  <rguenther@suse.de>
27011
27012         PR tree-optimization/34651
27013         * tree-sra.c (sra_build_assignment): Sanitize.  Use the correct
27014         types and ordering for masking and converting.
27015
27016 2008-01-09  Sebastian Pop  <sebastian.pop@amd.com>
27017
27018         PR tree-optimization/34017
27019         * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Generate code
27020         also for PHI_NODE expressions.
27021
27022 2008-01-09  Jan Hubicka  <jh@suse.cz>
27023
27024         PR tree-optimization/34708
27025         * tree-inline.c (estimate_num_insns_1): Compute cost of SWITCH_EXPR
27026         based on number of case labels.
27027         (init_inline_once): Remove switch_cost.
27028         * tree-inline.h (eni_weights_d): Remove switch_cost.
27029
27030 2008-01-09  Richard Guenther  <rguenther@suse.de>
27031         Andrew Pinski  <andrew_pinski@playstation.sony.com>
27032
27033         PR middle-end/30132
27034         * gimplify.c (gimplify_cond_expr): Do not create an addressable
27035         temporary if an rvalue is ok or an lvalue is not required.
27036
27037 2008-01-09  Richard Guenther  <rguenther@suse.de>
27038
27039         PR middle-end/34458
27040         * tree-data-ref.c (initialize_matrix_A): Use tree_low_cst,
27041         adjust return type.
27042
27043 2008-01-09  Richard Guenther  <rguenther@suse.de>
27044
27045         PR middle-end/34679
27046         * tree.c (host_integerp): Check for sizetype only if the
27047         type is an integer type.
27048
27049 2008-01-09  Steven Bosscher  <stevenb.gcc@gmail.com>
27050
27051         PR debug/26364
27052         * opts.c (decode_options): Disable inlining of functions called
27053         once if not in unit-at-a-time mode.
27054
27055 2008-01-09  Alexandre Oliva  <aoliva@redhat.com>
27056
27057         * Makefile.in (dse.o): Remove duplicate $(RECOG_H) dependency.
27058
27059 2008-01-08  Richard Guenther  <rguenther@suse.de>
27060
27061         PR middle-end/31863
27062         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Bail
27063         out early if the result will be unused.
27064
27065 2008-01-08  Uros Bizjak  <ubizjak@gmail.com>
27066
27067         PR target/34709
27068         Revert:
27069
27070         2008-01-05  Uros Bizjak  <ubizjak@gmail.com>
27071         * config/i386/i386.c (ix86_builtin_reciprocal): Remove check
27072         for TARGET_RECIP.
27073
27074 2008-01-08  Jan Sjodin  <jan.sjodin@amd.com>
27075
27076         * config/i386/i386.c (k8_cost, amdfam10_cost): Branch costs
27077         for vectorization tuned.
27078
27079 2008-01-08  Richard Guenther  <rguenther@suse.de>
27080
27081         PR tree-optimization/34683
27082         * tree-ssa-operands.c (operand_build_cmp): Export.
27083         * tree-ssa-operands.h (operand_build_cmp): Declare.
27084         * tree-vn.c (vuses_compare): Remove.
27085         (sort_vuses): Use operand_build_cmp.
27086         (sort_vuses_heap): Likewise.
27087         * tree-ssa-sccvn.c (vuses_to_vec): Use VEC_reserve, not VEC_alloc
27088         to re-use old VEC if available.  Do not sort already sorted VUSEs.
27089         (vdefs_to_vec): Do not sort already sorted VDEFs.
27090
27091 2008-01-08  Jakub Jelinek  <jakub@redhat.com>
27092
27093         PR middle-end/34694
27094         * omp-low.c (copy_var_decl): Copy also DECL_SOURCE_LOCATION.
27095
27096 2008-01-08  Uros Bizjak  <ubizjak@gmail.com>
27097
27098         PR target/34702
27099         * doc/invoke.texi (i386 and x86-64 Options) [mrecip]: Document
27100         limitations of reciprocal sequences on x86 targets.
27101
27102 2008-01-08  Richard Guenther  <rguenther@suse.de>
27103
27104         PR tree-optimization/34683
27105         * tree-flow-inline.h (var_ann): Remove overzealous asserts.
27106
27107 2008-01-07  Jakub Jelinek  <jakub@redhat.com>
27108
27109         PR target/34622
27110         * config/darwin.c (darwin_mergeable_string_section): Don't use
27111         .cstring if int_size_in_bytes != TREE_STRING_LENGTH.
27112
27113 2008-01-07  Uros Bizjak  <ubizjak@gmail.com>
27114
27115         PR target/34682
27116         * config/i386/i386.md (neg<mode>2): Rename from negsf2, negdf2 and
27117         negxf2.  Macroize expander using X87MODEF mode iterator.  Change
27118         predicates of op0 and op1 to register_operand.
27119         (abs<mode>2): Rename from abssf2, absdf2 and negxf2.  Macroize
27120         expander using X87MODEF mode iterator.  Change predicates of
27121         op0 and op1 to register_operand.
27122         ("*absneg<mode>2_mixed", "*absneg<mode>2_sse"): Rename from
27123         corresponding patterns and macroize using MODEF macro.  Change
27124         predicates of op0 and op1 to register_operand and remove
27125         "m" constraint. Disparage "r" alternative with "!".
27126         ("*absneg<mode>2_i387"): Rename from corresponding patterns and
27127         macroize using X87MODEF macro.  Change predicates of op0 and op1
27128         to register_operand and remove "m" constraint.  Disparage "r"
27129         alternative with "!".
27130         (absneg splitter with memory operands): Remove.
27131         ("*neg<mode>2_1", "*abs<mode>2_1"): Rename from corresponding
27132         patterns and macroize using X87MODEF mode iterator.
27133         * config/i386/sse.md (negv4sf2, absv4sf2, neg2vdf2, absv2df2):
27134         Change predicate of op1 to register_operand.
27135         * config/i386/i386.c (ix86_expand_fp_absneg_operator): Remove support
27136         for memory operands.
27137
27138 2008-01-07  Nathan Froyd  <froydnj@codesourcery.com>
27139
27140         * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add clause for mcpu=8548.
27141
27142 2008-01-07  Richard Guenther  <rguenther@suse.de>
27143
27144         * basic-block.h (struct edge_def): Pair dest_idx with goto_locus
27145         fields.
27146
27147 2008-01-07  Richard Guenther  <rguenther@suse.de>
27148
27149         PR tree-optimization/34683
27150         * tree-ssa-sccvn.c (vuses_to_vec): Pre-allocate the vector of
27151         VOPs of the needed size to save memory.  Use VEC_quick_push
27152         to save compile-time.
27153         (vdefs_to_vec): Likewise.
27154
27155 2008-01-07  Sa Liu  <saliu@de.ibm.com>
27156
27157         * config/spu/spu.md (divdf3): Genetate inline code for double
27158         division.  The implementation doesn't handle INF or NAN, therefore it
27159         only applies when -ffinite-math-only is given.
27160
27161 2008-01-06  Paolo Carlini  <pcarlini@suse.de>
27162
27163         PR libstdc++/34680
27164         * c-cppbuiltin.c (c_cpp_builtins): Define __GXX_RTTI, if appropriate.
27165         * doc/cpp.texi ([Common Predefined Macros]): Document.
27166
27167 2008-01-06  Uros Bizjak  <ubizjak@gmail.com>
27168
27169         * config/i386/i386.c (ix86_emit_swsqrtsf): Use negative constants in
27170         order to use commutative addition instead of subtraction.
27171
27172 2008-01-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
27173             Mircea Namolaru  <namolaru@il.ibm.com>
27174             Vladimir Yanovsky  <yanov@il.ibm.com>
27175             Revital Eres  <eres@il.ibm.com>
27176
27177         PR tree-optimization/34263
27178         * tree-outof-ssa.c (process_single_block_loop_latch,
27179         contains_tree_r): New functions.
27180         (analyze_edges_for_bb): Call process_single_block_loop_latch
27181         function to empty single-basic-block latch block if possible.
27182
27183 2008-01-05  Uros Bizjak  <ubizjak@gmail.com>
27184
27185         * config/i386/i386.c (ix86_builtin_reciprocal): Remove check
27186         for TARGET_RECIP.
27187         (ix86_emit_swsqrtsf): Do not filter out infinity for rsqrt expansion.
27188
27189 2008-01-05  Richard Sandiford  <rsandifo@nildram.co.uk>
27190
27191         * c-omp.c (check_omp_for_incr_expr): Handle CONVERT_EXPR.
27192
27193 2008-01-05  Richard Sandiford  <rsandifo@nildram.co.uk>
27194
27195         * config/mips/mips.c (mips_in_small_data_p): Reinstate size > 0 check.
27196
27197 2008-01-05  Jakub Jelinek  <jakub@redhat.com>
27198
27199         PR tree-optimization/34618
27200         * tree-outof-ssa.c (create_temp): Copy over DECL_GIMPLE_REG_P
27201         flag from T.
27202
27203 2008-01-05  Uros Bizjak  <ubizjak@gmail.com>
27204
27205         PR target/34673
27206         * config/i386/i386.c (ix86_emit_swsqrtsf): Swap input operands
27207         in the call to gen_rtx_NE.  Remove unneeded VECTOR_MODE_P check.
27208         Update copyright year.
27209
27210         * config/i386/i386.md (rsqrtsf2): Enable for TARGET_SSE_MATH.
27211         Update copyright year.
27212         * config/i386/sse.md (rsqrtv4sf2): Ditto. Unconditionally expand
27213         using NR fixup.
27214
27215 2008-01-05  Zhouyi Zhou  <zhouzhouyi@FreeBSD.org>
27216
27217         * tree-vrp.c (find_conditional_asserts): Remove redundant check that
27218         edge does not point to current bb before changing need_assert.
27219
27220 2008-01-04  Richard Guenther  <rguenther@suse.de>
27221
27222         PR middle-end/34029
27223         * tree-cfg.c (verify_expr): Do not look inside ADDR_EXPRs
27224         for verifying purposes if they are is_gimple_min_invariant.
27225
27226 2008-01-04  Aldy Hernandez  <aldyh@redhat.com>
27227
27228         PR tree-optimization/34448
27229         PR tree-optimization/34465
27230         * gimplify.c (gimplify_init_constructor): Add new parameter
27231         notify_temp_creation.  Use it.
27232         (gimplify_modify_expr_rhs): Take volatiles into account when
27233         optimizing constructors.
27234         Do not optimize constructors if gimplify_init_constructor will dump to
27235         memory.
27236         * gcc.dg/tree-ssa/pr32901.c: Tests const volatiles.
27237         * gcc.c-torture/compile/pr34448.c: New.
27238
27239 2008-01-04  Jakub Jelinek  <jakub@redhat.com>
27240
27241         PR gcov-profile/34609
27242         * tree-inline.c (declare_return_variable): Set TREE_ADDRESSABLE on
27243         return_slot if result is TREE_ADDRESSABLE.
27244
27245 2008-01-04  Richard Sandiford  <rsandifo@nildram.co.uk>
27246
27247         * config/mips/mips.md (sqrt_condition): Tweak comment.
27248         (recip_condition): Likewise.  Require TARGET_FLOAT64 for DFmode.
27249
27250 2008-01-03  Tom Tromey  <tromey@redhat.com>
27251
27252         PR c/34457
27253         * c-common.c (c_type_hash): Handle VLAs.
27254
27255 2008-01-03  Jan Hubicka  <jh@suse.cz>
27256
27257         PR tree-optimization/31081
27258         * tree-inline.c (remap_ssa_name): Initialize uninitialized SSA vars to
27259         0 when inlining and not inlining to first basic block.
27260         (remap_decl): When var is initialized to 0, don't set default_def.
27261         (expand_call_inline): Set entry_bb.
27262         * tree-inline.h (copy_body_data): Add entry_bb.
27263
27264 2008-01-03  Jakub Jelinek  <jakub@redhat.com>
27265
27266         PR c++/34619
27267         * cgraphunit.c (cgraph_build_static_cdtor): set_cfun back to NULL
27268         before returning.
27269
27270         PR tree-optimization/29484
27271         * tree-inline.c (inline_forbidden_p_2): New function.
27272         (inline_forbidden_p): Disallow inlining if some static var
27273         has an address of a local LABEL_DECL in its initializer.
27274         * doc/extend.texi (Labels as Values): Document &&foo behaviour
27275         vs. inlining.
27276
27277 2008-01-03  Sebastian Pop  <sebastian.pop@amd.com>
27278
27279         PR tree-optimization/34635
27280         * tree-data-ref.c (add_other_self_distances): Make sure that the
27281         evolution step is constant.
27282
27283 2008-01-03  Jakub Jelinek  <jakub@redhat.com>
27284
27285         PR middle-end/34608
27286         * omp-low.c (expand_omp_parallel): Purge dead EH edges in the child fn.
27287
27288 2008-01-02  Richard Sandiford  <rsandifo@nildram.co.uk>
27289
27290         * tree-sra.c (scalarize_init): Insert the generate_element_init
27291         statements after the generate_element_zero statements.
27292
27293 2008-01-02  Richard Guenther  <rguenther@suse.de>
27294
27295         PR middle-end/34093
27296         PR middle-end/31976
27297         * tree-ssa-operands.c (ssa_operand_alloc): Also allocate a buffer
27298         for very large number of operands instead of ICEing.
27299
27300 2008-01-02  Arthur Norman <acn1@cam.ac.uk>
27301
27302         PR target/34013
27303         * config/i386/i386.c (ix86_expand_prologue): Save red-zone
27304         while stack probing.
27305
27306 2008-01-01  Douglas Gregor  <doug.gregor@gmail.com>
27307
27308         * c-opts.c (sanitize_cpp_opts): Don't warn about "long long" when
27309         in C++0x mode.
27310
27311 2008-01-01  Volker Reichelt  <v.reichelt@netcologne.de>
27312
27313         PR libmudflap/26442
27314         * tree-mudflap.c (mx_register_decls): Guard warning by
27315         !DECL_ARTIFICIAL check.
27316
27317 2008-01-01  Jakub Jelinek  <jakub@redhat.com>
27318
27319         * config/i386/sse.md (sse5_pperm, sse5_pperm_pack_v2di_v4si,
27320         sse5_pperm_pack_v4si_v8hi, sse5_pperm_pack_v8hi_v16qi,
27321         sse5_perm<mode>): Fix constraints.