OSDN Git Service

2008-11-15 Vladimir Makarov <vmakarov@redhat.com>
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2008-11-15  Vladimir Makarov  <vmakarov@redhat.com>
2
3         PR bootstrap/37790
4         * ira-int.h (ira_copy_allocno_live_range_list,
5         ira_merge_allocno_live_ranges,
6         ira_allocno_live_ranges_intersect_p,
7         ira_finish_allocno_live_range_list): New prototypes.
8         (ira_allocno_live_ranges_intersect_p,
9         ira_pseudo_live_ranges_intersect_p): Remove.
10         
11         * ira-conflicts.c (ira_allocno_live_ranges_intersect_p,
12         ira_pseudo_live_ranges_intersect_p): Rename to
13         allocnos_have_intersected_live_ranges_p and
14         pseudos_have_intersected_live_ranges_p.  Move them from here to
15         ...
16
17         * ira-color.c: ... here
18         (coalesced_allocno_conflict_p): Use
19         allocnos_have_intersected_live_ranges_p.
20         (coalesced_allocnos_living_at_program_points,
21         coalesced_allocnos_live_at_points_p,
22         set_coalesced_allocnos_live_points): Remove.
23         (slot_coalesced_allocnos_live_ranges,
24         slot_coalesced_allocno_live_ranges_intersect_p,
25         setup_slot_coalesced_allocno_live_ranges): New.
26         (coalesce_spill_slots): Use ranges of coalesced allocnos.
27         (ira_sort_regnos_for_alter_reg): Use
28         allocnos_have_intersected_live_ranges_p.
29         (ira_reuse_stack_slot): Use
30         pseudos_have_intersected_live_ranges_p.
31
32         * global.c (pseudo_for_reload_consideration_p): Check
33         flag_ira_share_spill_slots too.
34
35         * ira-build.c (copy_allocno_live_range_list): Rename to
36         ira_copy_allocno_live_range_list.  Make it external.
37         (merge_ranges): Rename to ira_merge_allocno_live_ranges.  Make it
38         external.
39         (ira_allocno_live_ranges_intersect_p): New.
40         (ira_finish_allocno_live_range_list): New.
41         (finish_allocno): Use it.
42         (remove_unnecessary_allocnos): Use ira_merge_allocno_live_ranges.
43         (copy_info_to_removed_store_destinations): Ditto.  Use
44         ira_copy_allocno_live_range_list.
45         (ira_flattening): Use ira_merge_allocno_live_ranges.
46         
47         * ira.c (too_high_register_pressure_p): New function.
48         (ira): Switch off sharing spill slots if the pressure is too high.
49
50 2008-11-19  Richard Guenther  <rguenther@suse.de>
51
52         * tree.c (build2_stat): Allow non-POINTER_PLUS_EXPRs with
53         non-sizetype offsets if their precision matches that of
54         the pointer.
55         * expr.c (expand_expr_real_1): Always sign-extend the offset
56         operand of a POINTER_PLUS_EXPR.
57
58 2008-11-19  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
59
60         * config.gcc: Unobsolete mips-sgi-irix[56]*.
61         (mips-sgi-irix[56]*): No need to use fixproto.
62
63 2008-11-19  Maxim Kuvyrkov  <maxim@codesourcery.com>
64             Paul Brook  <paul@codesourcery.com>
65
66         * config/m68k/lb1sf68.asm: Add GNU-stack annotation to avoid
67         executable stack.
68
69 2008-11-19  Maxim Kuvyrkov  <maxim@codesourcery.com>
70
71         * config/m68k/m68k.c (sched_attr_op_type): Handle all CONSTs.
72
73 2008-11-19  Razya Ladelsky  <razya@il.ibm.com>
74
75         PR target/38156
76         * tree-parloops.c (loop_parallel_p): NULL vect_dump.
77         (separate_decls_in_region): Create shared struct even when there 
78         are only reductions.
79
80 2008-11-19  Hariharan Sandanagobalane <hariharan@picochip.com>
81         * config/picochip/picochip.c (headers): Remove an unnecessary
82         header file.
83
84 2008-11-19  Andrew Stubbs  <ams@codesourcery.com>
85
86         PR target/36133
87         * config/m68k/m68k.h (CC_OVERFLOW_UNUSABLE, CC_NO_CARRY): New defines.
88         * config/m68k/m68k.c (notice_update_cc): Set cc_status properly for
89         shift instructions.
90         * config/m68k/m68k.md: Adjust all conditional branches that use the
91         carry and overflow flags so they understand CC_OVERFLOW_UNUSABLE.
92
93 2008-11-18  Uros Bizjak  <ubizjak@gmail.com>
94
95         PR target/37362
96         * config/mips/mips.md (move_doubleword_fpr<mode>): Check that "high"
97         is a register or zero operand in the correct mode before generating
98         mtch1 insn or a register operand in the correct mode before generating
99         mfch1 insn.
100         (mtch1<mode>): Correct operand 1 predicate to reg_or_0_operand.
101
102 2008-11-18  Adam Nemet  <anemet@caviumnetworks.com>
103
104         * config.gcc (mips*-sde-elf*): Handle mipsisa64r2*.
105         (mipsisa64r2-*-elf*, mipsisa64r2el-*-elf*): Add new cases to
106         mipsisa*-*-elf*.  Handle mipsisa64r2*.
107         * config/mips/sde.h (LINK_SPEC): Handle -mips64r2.
108         * config/mips/t-isa3264 (MULTILIB_OPTIONS, MULTILIB_DIRNAMES): Add
109         mips64r2.
110         (MULTILIB_EXCLUSIONS): Add mips64r2/mfp64.
111         * config/mips/t-sde (MULTILIB_OPTIONS, MULTILIB_DIRNAMES): Add
112         mips64r2.
113         (MULTILIB_EXCLUSIONS): Add mips64r2/mfp64.  Add mips64r2/mips16.
114         Fix mips16 if mips64 or mips64r2 are multilib defaults.
115         * config/mips/t-sdemtk (MULTILIB_OPTIONS, MULTILIB_DIRNAMES): Add
116         mips64r2.
117
118 2008-11-18  Jakub Jelinek  <jakub@redhat.com>
119
120         PR target/38130
121         * config/i386/i386.md (allocate_stack_worker_32,
122         allocate_stack_worker_64): Don't use match_dup between input and
123         output operand.
124         (allocate_stack): Adjust gen_stack_worker_{32,64} caller.
125         * config/i386/i386.c (ix86_expand_prologue): Likewise.
126
127 2008-11-18  Kai Tietz  <kai.tietz@onevision.com>
128
129         * config/i386/t-cygming (SHLIB_LINK): Make sure that $(SHLIB_MAP).def
130         is forced when trying to do a symbol link for it.
131
132 2008-11-17  Adam Nemet  <anemet@caviumnetworks.com>
133
134         * expmed.c (extract_bit_field_1): Also use a temporary and
135         convert_extracted_bit_field when the conversion from ext_mode to
136         the target mode requires explicit truncation.
137
138 2008-11-17  Richard Sandiford  <rdsandiford@googlemail.com>
139
140         * config/mips/mips.h (REG_ALLOC_ORDER): Put accumulators first.
141         Tweak formatting.
142         * config/mips/mips.c (mips_ira_cover_classes): Don't use accumulator
143         registers when not optimizing.
144
145 2008-11-17  Richard Sandiford  <rdsandiford@googlemail.com>
146
147         * config/mips/mips.md (*mul_acc_si): Remove middle alternative
148         and its associated define_split.  Expose the all-d alternative
149         to the register allocator, but mark it with "?".  Mark the first
150         alternative with "*?*?".
151         (*mul_sub_si): Likewise.
152         (*mul_acc_si_r3900): New pattern.
153
154 2008-11-17  Jakub Jelinek  <jakub@redhat.com>
155
156         PR middle-end/38140
157         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): If
158         propagating x = &a into *x = b, add a cast if not useless
159         type conversion or don't optimize if another stmt would be
160         needed.
161
162 2008-11-17  Uros Bizjak  <ubizjak@gmail.com>
163
164         PR middle-end/37908
165         * optabs.c (expand_sync_operation): Properly handle NAND case
166         by calculating ~(t1 & val) instead of (~t1 & val).
167         * builtins.c (expand_builtin_sync_operation): Warn for changed
168         semantics in NAND builtins.
169         * c.opt (Wsync-nand): New warning option.  Describe -Wsync-nand.
170         
171         * doc/invoke.texi (Warning options): Add Wsync-nand.
172         * doc/extend.texi (Atomic Builtins) [__sync_fetch_and_nand]: Correct
173         __sync_fetch_and_nand builtin operation in the example.  Add a note
174         about changed semantics in GCC 4.4.
175         [__sync_nand_and_fetch]: Correct __sync_nand_and_fetch builtin
176         operation in the example.  Add a note about changed semantics in
177         GCC 4.4.
178
179 2008-11-16  Jan Hubicka  <jh@suse.cz>
180
181         * cgraph.c (cgraph_function_body_availability): Fix test of externally
182         visible.
183
184 2008-11-16  Joshua Kinard  <kumba@gentoo.org>
185
186         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Map -march=r1[0246]000
187         to -mips4.
188
189 2008-11-16  Richard Sandiford  <rdsandiford@googlemail.com>
190
191         PR target/38052
192         * config/mips/mips.c (mips_cfun_call_saved_reg_p)
193         (mips_cfun_might_clobber_call_saved_reg_p): New functions,
194         split out from...
195         (mips_save_reg_p): ...here.  Always consult TARGET_CALL_SAVED_GP
196         rather than call_really_used_regs when handling $gp.
197
198 2008-11-16  Richard Sandiford  <rdsandiford@googlemail.com>
199
200         PR target/38052
201         * config/mips/mips.c (machine_function): Update the comment
202         above global_pointer.
203         (mips_global_pointer): Use INVALID_REGNUM rather than 0 to indicate
204         that a function doesn't need a global pointer.
205         (mips_current_loadgp_style): Update accordingly.
206         (mips_restore_gp): Likewise.
207         (mips_output_cplocal): Likewise.
208         (mips_expand_prologue): Likewise.
209
210 2008-11-16  Eric Botcazou  <ebotcazou@adacore.com>
211
212         * config/sparc/sparc.c (function_arg_vector_value): Remove 'base_mode'
213         parameter.  Use DImode for computing the number of registers.
214         (function_arg): Adjust for above change.
215         (function_value): Likewise.
216
217 2008-11-15  Zdenek Dvorak  <ook@ucw.cz>
218
219         PR tree-optimization/37950
220         * tree-flow-inline.h (memory_partition): Return NULL when aliases were
221         not computed for the current function.
222
223 2008-11-15  Jakub Jelinek  <jakub@redhat.com>
224
225         PR target/38123
226         * config/i386/i386.c (ix86_gimplify_va_arg): Don't share valist between
227         gpr and other COMPONENT_REFs.
228
229 2008-11-15  Richard Guenther  <rguenther@suse.de>
230
231         PR tree-optimization/38051
232         * tree-ssa-alias.c (update_alias_info_1): Manually find
233         written variables.
234
235 2008-11-15  Joshua Kinard  <kumba@gentoo.org>
236
237         * doc/invoke.texi (-mfix-r10000): Document.
238         * config/mips/mips.opt (mfix-r10000): New option.
239         * config/mips/mips-protos.h (mips_output_sync_loop): Declare.
240         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP): Use %?.
241         (MIPS_COMPARE_AND_SWAP_12): Likewise.
242         (MIPS_SYNC_OP): Likewise.
243         (MIPS_SYNC_OP_12): Likewise.
244         (MIPS_SYNC_OLD_OP_12): Likewise.
245         (MIPS_SYNC_NEW_OP_12): Likewise.
246         (MIPS_SYNC_OLD_OP): Likewise.
247         (MIPS_SYNC_NAND): Likewise.
248         (MIPS_SYNC_OLD_NAND): Likewise.
249         (MIPS_SYNC_EXCHANGE): Likewise.
250         (MIPS_SYNC_EXCHANGE_12): Likewise.
251         (MIPS_SYNC_NEW_OP): Likewise, using %~ to fill branch-likely
252         delay slots.
253         (MIPS_SYNC_NEW_NAND): Likewise.
254         * config/mips/mips.c (mips_print_operand_punctuation): Handle '~'.
255         (mips_init_print_operand_punct): Treat '~' as a punctuation character.
256         (mips_output_sync_loop): New function.
257         (mips_override_options): Make -march=r10000 imply -mfix-r10000.
258         Make -mfix-r10000 require branch-likely instructions.
259         * config/mips/sync.md (sync_compare_and_swap<mode>): Use
260         mips_output_sync_loop.
261         (compare_and_swap_12): Likewise.
262         (sync_add<mode>): Likewise.
263         (sync_<optab>_12): Likewise.
264         (sync_old_<optab>_12): Likewise.
265         (sync_new_<optab>_12): Likewise.
266         (sync_nand_12): Likewise.
267         (sync_old_nand_12): Likewise.
268         (sync_new_nand_12): Likewise.
269         (sync_sub<mode>): Likewise.
270         (sync_old_add<mode>): Likewise.
271         (sync_old_sub<mode>): Likewise.
272         (sync_new_add<mode>): Likewise.
273         (sync_new_sub<mode>): Likewise.
274         (sync_<optab><mode>): Likewise.
275         (sync_old_<optab><mode>): Likewise.
276         (sync_new_<optab><mode>): Likewise.
277         (sync_nand<mode>): Likewise.
278         (sync_old_nand<mode>): Likewise.
279         (sync_new_nand<mode>): Likewise.
280         (sync_lock_test_and_set<mode>): Likewise.
281         (test_and_set_12): Likewise.
282
283 2008-11-15  Eric Botcazou  <ebotcazou@adacore.com>
284
285         * gcc.c (cc1_options): Fix comment.
286
287 2008-11-15  Jakub Jelinek  <jakub@redhat.com>
288
289         PR c++/37561
290         * c-typeck.c (build_unary_op): Don't call get_unwidened.  Use
291         argtype instead of result_type.
292
293 2008-11-14  Adam Nemet  <anemet@caviumnetworks.com>
294
295         * ira-int.h (struct ira_loop_tree_node): Improve comments for
296         subloop_next/next and subloops/childen fields.
297
298 2008-11-14  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
299
300         * config/spu/spu-elf.h (STANDARD_STARTFILE_PREFIX_2): Disable default.
301         (STANDARD_INCLUDE_DIR): Redefine to "/include".
302         (LOCAL_INCLUDE_DIR): Undefine.
303         * config/spu/t-spu-elf (NATIVE_SYSTEM_HEADER_DIR): Define.
304
305 2008-11-14  Vladimir Makarov  <vmakarov@redhat.com>
306
307         PR rtl-optimization/37397
308         * ira-int.h (struct ira_allocno): New member bad_spill_p.
309         (ALLOCNO_BAD_SPILL_P): New macro.
310
311         * ira-color.c (push_allocnos_to_stack): Check ALLOCNO_BAD_SPILL_P.
312
313         * ira-build.c (ira_create_allocno): Initialize ALLOCNO_BAD_SPILL_P.
314         (create_cap_allocno, propagate_allocno_info,
315         remove_unnecessary_allocnos): Set up or update ALLOCNO_BAD_SPILL_P.
316         (update_bad_spill_attribute): New function.
317         (ira_build): Call it.
318
319         * ira-costs.c (record_reg_classes): Set up ALLOCNO_BAD_SPILL_P.
320         
321 2008-11-14  Jakub Jelinek  <jakub@redhat.com>
322
323         PR tree-optimization/38104
324         * gimplify.c (gimple_regimplify_operands): Add referenced vars
325         before calling mark_symbols_for_renaming, not after it.
326
327 2008-11-14  Kaz Kojima  <kkojima@gcc.gnu.org>
328
329         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Revert last change.
330         (OVERRIDE_OPTIONS): Likewise.
331
332 2008-11-14  Maxim Kuvyrkov  <maxim@codesourcery.com>
333             Andrew Stubbs  <ams@codesourcery.com>
334             Gunnar Von Boehn  <gunnar@genesi-usa.com>
335
336         PR target/36134
337         * config/m68k/m68k.md (addsi3_5200): Add a new alternative preferring
338         the shorter LEA insn over ADD.L where possible.
339
340 2008-11-14  Thomas Schwinge  <tschwinge@gnu.org>
341
342         * configure.ac (gcc_cv_libc_provides_ssp): Also consider GNU/Hurd
343         systems, which are assumend to always provide SSP-support in glibc.
344         Also consider GNU/kFreeBSD, GNU/kNetBSD systems in the `*-*-linux*'
345         case.
346         * configure: Regenerate.
347
348 2008-11-14  Jakub Jelinek  <jakub@redhat.com>
349
350         PR middle-end/36125
351         * function.c (gimplify_parameters): For callee copies parameters,
352         move TREE_ADDRESSABLE flag from the PARM_DECL to the local copy.
353
354 2008-11-13  Thomas Schwinge  <tschwinge@gnu.org>
355
356         PR target/28102
357         * config.gcc (*-*-gnu*): Move Alpha parts into the `alpha*-*-gnu*',
358         x86 parts into the `i[34567]86-*-linux*' and parts that are
359         independent of the processor architecture into the `*-*-linux*' cases.
360         (*-*-linux*): Consider `linux.opt' only for Linux-based configurations.
361         * config/i386/gnu.h (GLIBC_DYNAMIC_LINKER): Redefine.
362         (TARGET_OS_CPP_BUILTINS, LINK_SPEC): Don't redefine.
363         [TARGET_LIBC_PROVIDES_SSP] (TARGET_THREAD_SSP_OFFSET): Undefine.
364         * config/gnu.h (NO_IMPLICIT_EXTERN_C): Don't redefine.
365         (HURD_TARGET_OS_CPP_BUILTINS): Don't define, but instead...
366         (LINUX_TARGET_OS_CPP_BUILTINS): Redefine.
367
368 2008-11-13  Ruan Beihong  <ruanbeihong@gmail.com>
369
370         * config/mips/loongson.md (<u>div<mode>3, <u>mod<mode>3): New patterns.
371         * config/mips/loongson2ef.md (ls2_imult): Handle imul3nc.
372         (ls2_idiv): Likewise idiv3.
373         (ls2_prefetch): New reservation.
374         * config/mips/mips.h (ISA_HAS_PREFETCH): Add TARGET_LOONGSON_2EF.
375         * config/mips/mips.md (type): Add imul3nc and idiv3.
376         (length): Handle idiv3.
377         (any_mod): New code_iterator.
378         (u): Handle MOD and UMOD.
379         (mul<mode>3): Generate mul<mode>3_mul3_ls2ef on Loongson targets.
380         (prefetch): Handle TARGET_LOONGSON_2EF.
381
382 2008-11-13  Jakub Jelinek  <jakub@redhat.com>
383
384         PR c++/27017
385         * dwarf2out.c (prune_unused_types_walk_local_classes): New function.
386         (prune_unused_types_walk): Call it for non-perennial local classes.
387         Set die_mark to 2 if recursing on children.  If die_mark is 1 on
388         entry, just set it to 2 and recurse on children, don't walk attributes
389         again.
390
391 2008-11-13  Martin Michlmayr  <tbm@cyrius.com>
392
393         * c-common.c (warn_about_parentheses): Add missing whitespace
394         in warning.
395
396 2008-11-13  Paul Brook  <paul@codesourcery.com>
397
398         * doc/invoke.texi: Document --fix-cortex-m3.
399         * config/arm/arm.c (arm_override_options): Set fix_cm3_ldrd if
400         Cortex-M3 cpu is selected.
401         (output_move_double): Avoid overlapping base register and first
402         destination register when fix_cm3_ldrd.
403         * config/arm/arm.opt: Add mfix-cortex-m3-ldrd.
404
405 2008-11-13  Jakub Jelinek  <jakub@redhat.com>
406
407         PR bootstrap/38100
408         * gimple.h (gimple_range_check_failed): Remove prototype.
409         * gimple.c (gimple_check_failed): Don't check GCC_VERSION
410         in guarding #if.
411         (gimple_range_check_failed): Removed.
412
413 2008-11-13  Andrew Haley  <aph@redhat.com>
414
415         PR bootstrap/38088
416         * mcf.c (CAP_INFINITY): Use HOST_WIDEST_INT maximum, not GCC specific
417         __LONG_LONG_MAX__.
418
419 2008-11-12  Jakub Jelinek  <jakub@redhat.com>
420
421         PR c++/36478
422         Revert:
423         2007-05-07  Mike Stump  <mrs@apple.com>
424         * doc/invoke.texi (Warning Options): Document that -Wempty-body
425         also checks for and while statements in C++.
426
427 2008-11-12  Dodji Seketeli  <dodji@redhat.com>
428
429         PR debug/27574
430         * cgraph.h: New abstract_and_needed member to struct cgraph_node.
431         * cgraphunit.c (cgraph_analyze_functions): Flag abstract functions
432         - which clones are reachable - as "abstract and needed".
433         * cgraph.c (cgraph_release_function_body):  If a node is
434         "abstract and needed", do not release its DECL_INITIAL() content
435         that will be needed to emit debug info.
436
437 2008-11-12  Steve Ellcey  <sje@cup.hp.com>
438
439         PR target/27880
440         * configure.ac (GCC_CHECK_UNWIND_GETIPINFO): Use this macro
441         to set HAVE_GETIPINFO.
442         * aclocal.m4: Include ../config/unwind_ipinfo.m4.
443         * configure: Regenerate.
444         * config.in: Regenerate.
445
446 2008-11-12  Jack Howarth  <howarth@bromo.med.uc.edu>
447
448         PR bootstrap/38010
449         * gcc/config.gcc: Use darwin9.h on darwin10 as well.
450
451 2008-11-12  Jakub Jelinek  <jakub@redhat.com>
452
453         Revert:
454         2008-10-21  Jakub Jelinek  <jakub@redhat.com>
455         * gimplify.c (gimplify_expr): Drop TREE_OVERFLOW from INTEGER_CSTs.
456
457 2008-11-12  Jason Merrill  <jason@redhat.com>
458
459         PR c++/38007
460         * c-common.c (c_common_signed_or_unsigned_type): Remove C++
461         special casing.
462
463 2008-11-12  Anatoly Sokolov  <aesok@post.ru>
464
465         * config/avr/avr.c (avr_mcu_t): Add atmega16hvb, atmega32hvb,
466         atmega4hvd, atmega8hvd, atmega64c1, atmega64m1, atmega16u4 and
467         atmega32u6 devices.
468         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
469         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
470
471 2008-11-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
472
473         * gcc/config/s390/s390.h (INITIAL_FRAME_ADDRESS_RTX): Remove
474         packed-stack special handling.
475         (FRAME_ADDR_RTX): Add definition.
476
477 2008-11-12  Jakub Jelinek  <jakub@redhat.com>
478
479         PR target/35366
480         * fold-const.c (native_encode_string): New function.
481         (native_encode_expr): Use it for STRING_CST.
482
483 2008-11-12  DJ Delorie  <dj@redhat.com>
484
485         * config/m32c/cond.md (cond_to_int peephole2): Don't eliminate the
486         insns if the intermediate value will be used later.
487
488 2008-11-12  Andreas Schwab  <schwab@suse.de>
489
490         * config/m68k/m68k.c (print_operand): Mask off extra extension
491         bits when writing out the representation of real values.
492
493 2008-11-12  Ira Rosen  <irar@il.ibm.com>
494
495         PR tree-optimization/38079
496         * tree-vect-analyze.c (vect_analyze_data_refs): Replace dump_file
497         with vect_dump.
498
499 2008-11-12  Jakub Jelinek  <jakub@redhat.com>
500
501         PR c++/35334
502         * c-pretty-print.c (pp_c_complex_expr): New function.
503         (pp_c_postfix_expression) <case COMPLEX_EXPR>: Call it.
504
505         PR target/35366
506         * expr.c (expand_expr_addr_expr_1): If EXP needs bigger alignment
507         than INNER and INNER is a constant, forcibly align INNER as much
508         as needed.
509
510 2008-11-11  Richard Sandiford  <rdsandiford@googlemail.com>
511
512         * cse.c (fold_rtx): Remove redundant gen_rtx_CONST.
513
514 2008-11-11  Richard Sandiford  <rdsandiford@googlemail.com>
515
516         PR rtl-optimization/37363
517         * simplify-rtx.c (simplify_plus_minus): Don't create
518         (const (minus ...)) expresisons.
519
520 2008-11-11  Eric Botcazou  <ebotcazou@adacore.com>
521
522         * ira-lives.c (process_bb_node_lives): Restore EH_RETURN_DATA_REGNO
523         handling.
524
525 2008-11-10  Catherine Moore  <clm@codesourcery.com>
526
527         * config.gcc (mips64vrel-*-elf*): Include the tm_file
528         prior to vr.h.
529         * config/mips/linux.h (LINUX_DRIVER_SELF_SPECS): New.
530         (BASE_DRIVER_SELF_SPECS): Remove.
531         (DRIVER_SELF_SPECS): New definition.
532         * config/mips/elfoabi.h: (DRIVER_SELF_SPECS): Include
533         BASE_DRIVER_SELF_SPECS.
534         * config/mips/sde.h: Likewise.
535         * config/mips/iris6.h: Likewise.
536         * config/mips/vr.h: Likewise.
537         * config/mips/mips.h (BASE_DRIVER_SELF_SPECS): New. 
538
539 2008-11-10  Vladimir Makarov  <vmakarov@redhat.com>
540
541         PR rtl-optimizations/37948
542         * ira-int.h (struct ira_allocno_copy): New member constraint_p.
543         (ira_create_copy, ira_add_allocno_copy): New parameter.
544
545         * ira-conflicts.c (process_regs_for_copy): New parameter.  Pass it
546         to ira_add_allocno_copy.
547         (process_reg_shuffles, add_insn_allocno_copies): Pass a new
548         parameter to process_regs_for_copy.
549         (propagate_copies): Pass a new parameter to ira_add_allocno_copy.
550         Fix typo in passing second allocno to ira_add_allocno_copy.
551
552         * ira-color.c (update_conflict_hard_regno_costs): Use head of
553         coalesced allocnos list.
554         (assign_hard_reg): Ditto.  Check that assigned allocnos are not in
555         the graph.
556         (add_ira_allocno_to_bucket): Rename to add_allocno_to_bucket.
557         (add_ira_allocno_to_ordered_bucket): Rename to
558         add_allocno_to_ordered_bucket.
559         (push_ira_allocno_to_stack): Rename to push_allocno_to_stack.  Use
560         head of coalesced allocnos list.
561         (push_allocnos_to_stack): Remove calculation of ALLOCNO_TEMP.
562         Check that it is aready calculated.
563         (push_ira_allocno_to_spill): Rename to push_ira_allocno_to_spill.
564         (setup_allocno_left_conflicts_num): Use head of coalesced allocnos
565         list.
566         (coalesce_allocnos): Do extended coalescing too.
567
568         * ira-emit.c (add_range_and_copies_from_move_list): Pass a new
569         parameter to ira_add_allocno_copy.
570
571         * ira-build.c (ira_create_copy, ira_add_allocno_copy): Add a new
572         parameter.
573         (print_copy): Print copy origination too.
574
575         * ira-costs.c (scan_one_insn): Use alloc_pref for load from
576         equivalent memory.
577         
578 2008-11-10  Kaz Kojima  <kkojima@gcc.gnu.org>
579
580         PR rtl-optimization/37514
581         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Set
582         flag_ira_share_spill_slots to 2 if it's already non-zero.
583         (OVERRIDE_OPTIONS): Clear flag_ira_share_spill_slots if
584         flag_ira_share_spill_slots is 2.
585
586 2008-11-10  Kevin Buettner  <kevinb@redhat.com>
587
588         * config/m32c/prologue.md (prologue_enter_16): Set FB to SP - 2.
589         (prologue_enter_32): Set FB to SP - 4.
590
591 2008-11-10  DJ Delorie  <dj@redhat.com>
592
593         * config/m32c/m32c.c (m32c_const_ok_for_constraint_p): Add ImB
594         constraint for single-bit-clear in lower byte of HI constant, vs
595         Imb which just ignores the upper byte.
596         * config/m32c/predicates.md (m32c_1mask8_operand): Use it.
597         * config/m32c/bitops.md (andhi3_16, andhi3_24): Use it.
598         (iorhi3_16): Check for single bit set, not single bit clear.
599
600 2008-11-10  Janis Johnson  <janis187@us.ibm.com>
601
602         * doc/sourcebuild.texi (Torture Tests): Fix formatting for bullets.
603
604         * doc/sourcebuild.texi (Torture Tests): Fix formatting in example.
605
606 2008-11-10  Eric Botcazou  <ebotcazou@adacore.com>
607
608         * calls.c (store_unaligned_arguments_into_pseudos): Deal only with
609         values living in memory and use more precise alignment information.
610
611 2008-11-10  Jakub Jelinek  <jakub@redhat.com>
612
613         PR middle-end/35314
614         * tree-mudflap.c (mf_build_check_statement_for): Split then_block
615         after __mf_check call if the call must end a bb.
616
617 2008-11-10  Ralph Loader  <suckfish@ihug.co.nz>
618
619         PR middle-end/37807
620         PR middle-end/37809
621         * combine.c (force_to_mode): Do not process vector types.
622
623         * rtlanal.c (nonzero_bits1): Do not process vector types.
624         (num_sign_bit_copies1): Likewise.
625
626 2008-11-09  Thomas Schwinge  <tschwinge@gnu.org>
627
628         * config/i386/gnu.h: Add copyright and licensing header.
629         * config/gnu.h: Likewise.
630
631 2008-11-07  Andrew Pinski  <andrew_pinski@playstation.sony.com>
632
633         * fwprop.c (fwprop_done): Call df_remove_problem.
634
635 2008-11-07  Sebastian Pop  <sebastian.pop@amd.com>
636
637         PR middle-end/37379
638         * tree-scalar-evolution.c (instantiate_scev_1): Return
639         chrec_dont_know for VL_EXP_CLASS_P.
640         
641 2008-11-06  Uros Bizjak  <ubizjak@gmail.com>
642
643         * reg-stack.c (reg_to_stack): Add missing braces in memset
644         size calculation.
645
646 2008-11-06  Andrew Stubbs  <ams@codesourcery.com>
647
648         * config/arm/bpabi.h (PROFILE_HOOK): New undef.
649         (NO_PROFILE_COUNTERS): New define.
650
651 2008-11-06  David Edelsohn  <edelsohn@gnu.org>
652
653         PR target/26397
654         * config/rs6000/aix.h (LIBSTDCXX_STATIC): Define.
655         
656 2008-11-06  Kazu Hirata  <kazu@codesourcery.com>
657
658         PR target/35574
659         * config/sparc/constraints.md (D): New.
660         * config/sparc/predicates.md (const_double_or_vector_operand): New.
661         * config/sparc/sparc.c (sparc_extra_constraint_check): Handle the
662         'D' constraint.
663         * config/sparc/sparc.md (*movdf_insn_sp32_v9, *movdf_insn_sp64):
664         Use the 'D' constraint in addition to 'F' in some alternatives.
665         (DF splitter): Generalize for V64mode.
666         * doc/md.texi (SPARC): Document the 'D' constraint.
667
668 2008-11-06  Uros Bizjak  <ubizjak@gmail.com>
669
670         * reg-stack.c (reg_to_stack): Generate +QNaN using real_nan.
671
672 2008-11-06  Ben Elliston  <bje@au.ibm.com>
673
674         * gcc.c: Remove ancient comment about a bug in Sun cc.
675
676 2008-11-05  Janis Johnson  <janis187@us.ibm.com>
677
678         * doc/sourcebuild.texi (Torture Tests): Add ADDITIONAL_TORTURE_OPTIONS.
679
680 2008-11-06  Ben Elliston  <bje@au.ibm.com>      
681
682         * config/rs6000/rs6000.c (rs6000_override_options): Comment fix.
683
684 2008-11-06  Ben Elliston  <bje@au.ibm.com>
685
686         * config/rs6000/rs6000.opt (mwarn-cell-microcode): Improve option
687         description.
688
689 2008-11-05  Hans-Peter Nilsson  <hp@axis.com>
690
691         PR target/38016
692         * config/cris/cris.c (cris_order_for_addsi3): Test for !REG_P, not
693         just MEM_P.
694
695 2008-11-05  Martin Jambor  <mjambor@suse.cz>
696
697         PR middle-end/37861
698         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Don't turn
699         pointer arithmetics into array_ref if the array is accessed
700         through an indirect_ref.
701
702 2008-11-05  Richard Guenther  <rguenther@suse.de>
703
704         PR middle-end/37742
705         * tree-ssa.c (useless_type_conversion_p_1): Check different restrict
706         qualified pointer conversion before stripping qualifiers.
707         * gimplify.c (create_tmp_from_val): Use correctly qualified type.
708         * tree-flow.h (may_propagate_address_into_dereference): Declare.
709         * tree-ssa-ccp.c (may_propagate_address_into_dereference): New
710         function.
711         (ccp_fold): Use it.
712         * tree-ssa-forwprop.c (rhs_to_tree): Remove useless conversions,
713         properly canonicalize binary ops.
714         (forward_propagate_addr_expr_1): Use
715         may_propagate_address_into_dereference.
716
717 2008-11-05  Uros Bizjak  <ubizjak@gmail.com>
718
719         PR middle-end/37286
720         * reg-stack.c (subst_stack_regs_pat) [MINUS, DIV, MULT, PLUS]:
721         Initialize uninitialized input registers with a NaN.
722
723 2008-11-05  Tobias Grosser  <grosser@fim.uni-passau.de>
724
725         PR middle-end/37833
726
727         * graphite.c (scan_tree_for_params): Add POINTER_PLUS_EXPR.
728
729 2008-11-05  Tobias Grosser  <grosser@fim.uni-passau.de>
730
731         PR middle-end/37943
732
733         * graphite.c (scopdet_basic_block_info): Fix loops with multiple
734         exits and conditions.
735         * testsuite/gcc.dg/graphite/pr37943.c: New.
736
737 2008-11-04  Jakub Jelinek  <jakub@redhat.com>
738             Andrew Pinski  <andrew_pinski@playstation.sony.com>
739
740         PR c/35430
741         * c-common.c (warn_for_sign_compare): For complex result_type
742         use component's type.
743
744 2008-11-04  Jakub Jelinek  <jakuB@redhat.com>
745
746         * print-tree.c (print_node): Use code instead of TREE_CODE (node).
747
748         * print-tree.c (print_node): Don't print DECL_INITIAL
749         for PARM_DECL.
750
751         PR c/37106
752         * c-common.c (parse_optimize_options): Save and restore
753         flag_strict_aliasing around decode_options call.
754
755 2008-11-04  Uros Bizjak  <ubizjak@gmail.com>
756
757         * config/i386/driver-i386.c (enum vendor_signatures): New enum.
758         (host_detect_local_cpu): Use it instead of casted strings to
759         compare vendor signatures.
760
761 2008-11-03  Mikael Pettersson  <mikpe@it.uu.se>
762
763         PR target/37989
764         * config/i386/mingw32.h (REAL_LIBGCC_SPEC): Only add libgcc_s.a
765         or libgcc_eh.a to spec if ENABLE_SHARED_LIBGCC.
766
767 2008-11-03  Catherine Moore  <clm@codesourcery.com>
768
769         * config/mips.c (mips_conditional_register_usage):  Handle the
770         DSP control register.
771         * doc/extend.texi: Document the DSP control register.
772
773 2008-11-03  Steve Ellcey <sje@cup.hp.com>
774             Jakub Jelinek  <jakub@redhat.com>
775
776         * omp-low.c (expand_omp_for_generic): If iter_type has different
777         precision than type and type is a pointer type, cast n1 and n2
778         first to an integer type with the same precision as pointers
779         and only afterwards to iter_type.
780
781 2008-11-03  Richard Sandiford  <rdsandiford@googlemail.com>
782
783         * config/arm/arm.md (UNSPEC_PIC_BASE): Update documentation.
784         (UNSPEC_GOTSYM_OFF): New unspec.
785         (pic_add_dot_plus_four): Simplify the UNSPEC_PIC_BASE operands.
786         (pic_add_dot_plus_eight): Likewise.
787         (tls_load_dot_plus_eight): Likewise.  Update peephole2.
788         * config/arm/thumb2.md (pic_load_dot_plus_four): Simplify the
789         UNSPEC_PIC_BASE operands.
790         * config/arm/arm.c (arm_load_pic_register): Use UNSPEC_GOTSYM_OFF.
791         (arm_output_addr_const_extra): Handle it.
792
793 2008-11-03  Eric Botcazou  <ebotcazou@adacore.com>
794
795         * config/i386/i386.c (classify_argument) <ARRAY_TYPE>: Promote partial
796         integer class to full integer class if the offset is not word-aligned.
797
798 2008-11-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
799
800         PR rtl-opt/37782
801         * loop-doloop.c (doloop_modify): Add from_mode argument that says what
802         mode count is in.
803         (doloop_optimize): Update call to doloop_modify.
804
805 2008-11-03  Eric Botcazou  <ebotcazou@adacore.com>
806
807         * tree-sra.c (bitfield_overlaps_p): Fix oversight.
808
809 2008-11-03  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
810
811         PR other/37463
812         * configure.ac (gcc_cv_ld_ro_rw_mix): Move before
813         gcc_cv_as_cfi_directive.
814         (gcc_cv_as_cfi_directive) [*-*-solaris*]: Check if linker supports
815         merging read-only and read-write sections or assembler emits
816         read-write .eh_frame sections.
817         * configure: Regenerate.
818         
819 2008-11-03  Nathan Froyd  <froydnj@codesourcery.com>
820
821         Revert:
822         2008-10-31  Nathan Froyd  <froydnj@codesourcery.com>
823
824         * config/rs6000/rs6000.c (no_global_regs_above): Fix precedence
825         problem.
826         (rs6000_emit_prologue): Invert logic.
827         * config/rs6000/rs6000.md (*save_gpregs_<mode>): Use explicit
828         (reg:P 11) instead of match_operand.
829         (*save_fpregs_<mode>): Likewise.
830         (*restore_gpregs_<mode>): Likewise.
831         (*return_and_restore_gpregs_<mode>): Likewise.
832         (*return_and_restore_fpregs_<mode>): Likewise.
833         * config/rs6000/spe.md (*save_gpregs_spe): Use explicit
834         (reg:P 11) insted of match_operand.
835         (*restore_gpregs_spe): Likewise.
836         (*return_and_restore_gpregs_spe): Likewise.
837
838 2008-11-03  Harsha Jagasia  <harsha.jagasia@amd.com>
839
840         PR tree-optimization/37684
841         * gcc.dg/graphite/pr37684.c: New.
842         * graphite.c (exclude_component_ref): New.
843         (is_simple_operand): Call exclude_component_ref.
844
845 2008-11-03  Sebastian Pop  <sebastian.pop@amd.com>
846
847         PR tree-optimization/36908
848         * testsuite/gcc.dg/tree-ssa/pr36908.c: New.
849         * tree-loop-distribution.c (number_of_rw_in_rdg): New.
850         (number_of_rw_in_partition): New.
851         (partition_contains_all_rw): New.
852         (ldist_gen): Do not distribute when one of the partitions
853         contains all the memory operations.
854
855 2008-11-03  Sebastian Pop  <sebastian.pop@amd.com>
856
857         * cfghooks.c (split_block): Set BB_IRREDUCIBLE_LOOP and
858         EDGE_IRREDUCIBLE_LOOP.
859
860 2008-11-03  Bernd Schmidt  <bernd.schmidt@analog.com>
861
862         * config/bfin/bfin.c (bfin_optimize_loop): Properly handle case
863         where we have one entry point in the loop which isn't the head.
864
865 2008-11-03  Richard Guenther  <rguenther@suse.de>
866
867         PR middle-end/37573
868         * tree-data-ref.c (split_constant_offset_1): Fix tuplification.
869
870 2008-11-03  Jakub Jelinek  <jakub@redhat.com>
871
872         PR middle-end/37858
873         * passes.c (execute_one_pass): Don't look at cfun->curr_properties
874         for ipa and simple ipa passes.
875
876 2008-11-02  Richard Guenther  <rguenther@suse.de>
877
878         PR tree-optimization/37542
879         * tree-ssa-pre.c (fully_constant_expression): Handle more cases.
880         * tree-ssa-sccvn.c (vn_get_expr_for): Fix typo.
881         (vn_nary_op_lookup_stmt): Adjust for unary reference trees.
882         (vn_nary_op_insert_stmt): Likewise.
883         (visit_use): Likewise.
884
885 2008-11-02  Anatoly Sokolov  <aesok@post.ru>
886
887         * config/avr/avr.md (UNSPEC_SWAP): Remove constants.
888         (*swap): Remove.
889         (rotlqi3, *rotlqi3_4, rotlhi3, *rotlhi3_8,
890         rotlsi3, *rotlsi3_8, *rotlsi3_16, *rotlsi3_24): New patterns.
891         (ashlqi3_const4, ashlqi3_const5, ashlqi3_const6, ashlqi3_l_const4,
892         ashlqi3_l_const5, ashlqi3_l_const6, lshrqi3_const4, lshrqi3_const5,
893         lshrqi3_const6, lshrqi3_l_const4, lshrqi3_l_const4, lshrqi3_l_const6
894         peephole2's): Replace unspec with rotate.
895         * config/avr/avr.c (avr_rtx_costs): Add ROTATE.
896
897 2008-11-02  Richard Guenther  <rguenther@suse.de>
898
899         PR tree-optimization/37991
900         * tree-ssa-sccvn.h (copy_vuses_from_stmt): Remove.
901         * tree-ssa-sccvn.c (copy_vuses_from_stmt): Make static.
902         (set_ssa_val_to): Print if the value changed.
903         (simplify_binary_expression): Strip useless conversions.
904
905 2008-11-01  Hans-Peter Nilsson  <hp@axis.com>
906
907         PR target/37939
908         * config/cris/cris.c (cris_rtx_costs) <MULT>: Return 0 for an ADDI
909         operand.
910
911 2008-11-01  Richard Guenther  <rguenther@suse.de>
912
913         PR middle-end/37976
914         * builtins.c (fold_builtin_strspn): Return a size_t.
915         (fold_builtin_strcspn): Likewise.
916
917 2008-10-31  Nathan Froyd  <froydnj@codesourcery.com>
918
919         * config/rs6000/rs6000.c (rs6000_file_start): Output gnu
920         attribute for struct return convention.
921
922 2008-10-31  Nathan Froyd  <froydnj@codesourcery.com>
923
924         * config/rs6000/crtsavres.asm: Really, really delete.
925
926 2008-10-31  Nathan Froyd  <froydnj@codesourcery.com>
927
928         * config/rs6000/rs6000.c (no_global_regs_above): Fix precedence
929         problem.
930         (rs6000_emit_prologue): Invert logic.
931         * config/rs6000/rs6000.md (*save_gpregs_<mode>): Use explicit
932         (reg:P 11) instead of match_operand.
933         (*save_fpregs_<mode>): Likewise.
934         (*restore_gpregs_<mode>): Likewise.
935         (*return_and_restore_gpregs_<mode>): Likewise.
936         (*return_and_restore_fpregs_<mode>): Likewise.
937         * config/rs6000/spe.md (*save_gpregs_spe): Use explicit
938         (reg:P 11) insted of match_operand.
939         (*restore_gpregs_spe): Likewise.
940         (*return_and_restore_gpregs_spe): Likewise.
941
942 2008-10-28  Luis Machado  <luisgpm@br.ibm.com>
943
944         * gcc.h (DEFAULT_WORD_SWITCH_TAKES_ARG): Add "dumpbase" to the
945         list of word switches that take args.
946
947 2008-10-30  Jakub Jelinek  <jakub@redhat.com>
948
949         * config/s390/s390.c (s390_mark_symbol_ref_as_used): New function.
950         (s390_output_pool_entry): Call it through for_each_rtx.
951
952         PR middle-end/37730
953         * expr.c (store_constructor): For vectors, if target is a MEM, use
954         target's MEM_ALIAS_SET instead of elttype alias set.
955
956 2008-10-29  Kaz Kojima  <kkojima@gcc.gnu.org>
957
958         PR target/37909
959         * config/sh/sh.c (untangle_mova): Return -1 when NEW_MOVA has
960         no address.
961
962 2008-10-29  David Edelsohn  <edelsohn@gnu.org>
963
964         PR target/37878
965         * config/rs6000/predicates.md (word_offset_memref_operand):
966         Restructure code and look inside auto-inc/dec addresses.
967         
968 2008-10-29  Steve Ellcey  <sje@cup.hp.com>
969
970         PR target/32277
971         * libgcov.c ( __gcov_indirect_call_profiler): Check
972         TARGET_VTABLE_USES_DESCRIPTORS.
973
974 2008-10-29  Stefan Schulze Frielinghaus  <xxschulz@de.ibm.com>
975
976         * config/spu/spu.h (FRAME_GROWS_DOWNWARD): Define.
977         (INITIAL_FRAME_POINTER_OFFSET): Remove.
978         * config/spu/spu.c (spu_initial_elimination_offset): Calculate new
979         offset if eliminating soft frame pointer.
980         * config/spu/spu.md (stack_protect_set, stack_protect_test)
981         (stack_protect_test_si): Add initial machine description
982         for Stack Smashing Protector
983
984 2008-10-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
985
986         PR 11492
987         * c-common.c (min_precision): Move to...
988         * tree.c (tree_int_cst_min_precision): ... to here. Renamed.
989         * tree.h (tree_int_cst_min_precision): Declare.
990         * c-common.h (min_precision): Delete declaration.
991         * fold-const.c (tree_binary_nonnegative_warnv_p): Handle
992         multiplication of non-negative integer constants.
993         * c-decl.c (check_bitfield_type_and_width): Rename min_precision to
994         tree_int_cst_min_precision.
995         (finish_enum): Likewise.
996
997 2008-10-29  Joseph Myers  <joseph@codesourcery.com>
998
999         PR middle-end/36578
1000         * convert.c (convert_to_real): Do not optimize conversions of
1001         binary arithmetic operations between binary and decimal
1002         floating-point types.  Consider mode of target type in determining
1003         decimal type for arithmetic.  Unless
1004         flag_unsafe_math_optimizations, do not optimize binary conversions
1005         where this may change rounding behavior.
1006         * real.c (real_can_shorten_arithmetic): New.
1007         * real.h (real_can_shorten_arithmetic): Declare.
1008
1009 2008-10-29  Bernd Schmidt  <bernd.schmidt@analog.com>
1010         
1011         * config/bfin/bfin-protos.h (WA_05000257, WA_05000283, WA_05000315,
1012         ENABLE_WA_05000257, ENABLE_WA_05000283, ENABLE_WA_05000315): New.
1013         * config/bfin/bfin.c (bfin_cpus): Add these workaround bits as
1014         appropriate.
1015         (must_save_p): For some workarounds, interrupts need to clobber a
1016         P register.
1017         (expand_prologue_reg_save, expand_epilogue_reg_restore): Save LC0
1018         and LC1 for WA_05000257.
1019         (expand_interrupt_handler_prologue): Add dummy read of CHIPID for
1020         WA_05000283 and WA_05000315.
1021         * config/bfin/bfin.md (UNSPEC_VOLATILE_DUMMY): New constant.
1022         (movbi): Add alternative to set CC to 1; improve code for setting
1023         CC to 0.
1024         (dummy_load): New pattern.
1025
1026 2008-10-29  Jakub Jelinek  <jakub@redhat.com>
1027
1028         PR middle-end/37870
1029         * expmed.c (extract_bit_field_1): If int_mode_for_mode returns
1030         BLKmode for non-memory, convert using a wider MODE_INT mode
1031         or through memory.
1032
1033         PR middle-end/37913
1034         * tree-cfgcleanup.c (split_bbs_on_noreturn_calls): Only split bbs
1035         that haven't been removed yet.
1036
1037 2008-10-29  Bernd Schmidt  <bernd.schmidt@analog.com>
1038
1039         * config/bfin/bfin.c (struct machine_function): New member
1040         has_loopreg_clobber.
1041         (bfin_expand_movmem): Set it when generating memcpy insns.
1042         (n_regs_saved_by_prologue, expand_prologue_reg_save,
1043         expand_epilogue_reg_restore): If we have hardware loops,
1044         memcpy insns (indicated by has_loopreg_clobber) or function
1045         calls, we need to save the loop registers.
1046
1047 2008-10-28  H.J. Lu  <hongjiu.lu@intel.com>
1048
1049         * config/i386/i386.c (core2_cost): Fix typos in comments.
1050
1051 2008-10-28  Jakub Jelinek  <jakub@redhat.com>
1052
1053         PR c/37924
1054         * combine.c (make_compound_operation): Don't call make_extraction with
1055         non-positive length.
1056         (simplify_shift_const_1): Canonicalize count even if complement_p.
1057
1058 2008-10-28  Joseph Myers  <joseph@codesourcery.com>
1059
1060         * convert.c (strip_float_extensions): Do not remove or introduce
1061         conversions between binary and decimal floating-point types.
1062
1063 2008-10-28  Jakub Jelinek  <jakub@redhat.com>
1064
1065         PR middle-end/37931
1066         * fold-const.c (distribute_bit_expr): Convert common, left and
1067         right arguments to type.
1068
1069 2008-10-28  Nick Clifton  <nickc@redhat.com>
1070
1071         * config/mn10300/mn10300.h (CALL_REALLY_USED_REGISTERS): Define.
1072         * config/mn10300/mn10300.c (fp_regs_to_save): Test the
1073         call_really_used_regs array rather than the call_used_regs array.
1074         (mn10300_get_live_callee_saved_regs, expand_prologue,
1075         expand_epilogue, output_tst): Likewise.
1076
1077 2008-10-27  Jakub Jelinek  <jakub@redhat.com>
1078
1079         PR target/37378
1080         * df-scan.c (df_bb_refs_collect): Don't handle EH_USES here.
1081         (df_get_entry_block_def_set): Neither here.
1082         (df_get_regular_block_artificial_uses): Add EH_USES registers.
1083
1084         PR tree-optimization/37879
1085         * predict.c (tree_estimate_probability): Check if last_stmt is
1086         non-NULL before dereferencing it.
1087
1088 2008-10-27  Vladimir Makarov  <vmakarov@redhat.com>
1089
1090         * ira-int.h (ira_allocno): Add member updated_cover_class_cost.
1091         (ALLOCNO_UPDATED_COVER_CLASS_COST): New.
1092         (ira_fast_allocation): Remove the prototype.
1093         
1094         * ira-color.c (update_copy_costs, allocno_cost_compare_func,
1095         assign_hard_reg, calculate_allocno_spill_cost): Use updated costs.
1096         (color_pass): Modify the updated costs.
1097         (ira_color): Rename to color.  Make it static.
1098         (ira_fast_allocation): Rename to fast_allocation.  Make it static.
1099         (ira_color): New function.
1100         
1101         * ira-conflicts.c (process_regs_for_copy): Propagate hard reg cost
1102         change.
1103
1104         * ira-lives.c (last_call_num, allocno_saved_at_call): New
1105         variables.
1106         (set_allocno_live, clear_allocno_live, mark_ref_live,
1107         mark_ref_dead): Invalidate corresponding element of
1108         allocno_saved_at_call.
1109         (process_bb_node_lives): Increment last_call_num.  Setup
1110         allocno_saved_at_call.  Don't increase ALLOCNO_CALL_FREQ if the
1111         allocno was already saved.
1112         (ira_create_allocno_live_ranges): Initiate last_call_num and
1113         allocno_saved_at_call.
1114
1115         * ira-build.c (ira_create_allocno): Initiate
1116         ALLOCNO_UPDATED_COVER_CLASS_COST.
1117         (create_cap_allocno, propagate_allocno_info,
1118         remove_unnecessary_allocnos): Remove setting updated costs.
1119         (ira_flattening): Set up ALLOCNO_UPDATED_COVER_CLASS_COST.
1120
1121         * ira.c (ira):  Don't call ira_fast_allocation.
1122
1123         * ira-costs.c (setup_allocno_cover_class_and_costs): Don't set up
1124         updated costs.
1125         
1126 2008-10-27  Vladimir Makarov  <vmakarov@redhat.com>
1127
1128         PR middle-end/37813
1129         * ira-conflicts.c (process_regs_for_copy): Remove class subset check.
1130
1131         * ira-int.h (ira_hard_regno_cover_class): New.
1132
1133         * ira-lives.c (mark_reg_live, mark_reg_dead,
1134         process_bb_node_lives): Use ira_hard_regno_cover_class.
1135
1136         * ira.c (reg_class ira_hard_regno_cover_class): New global variable.
1137         (setup_hard_regno_cover_class): New function.
1138         (ira_init): Call setup_hard_regno_cover_class.
1139
1140         * ira-costs.c (cost_class_nums): Add comment.
1141         (find_allocno_class_costs): Initiate cost_class_nums.
1142         (setup_allocno_cover_class_and_costs): Check cost_class_nums.
1143
1144 2008-10-27  Vladimir Makarov  <vmakarov@redhat.com>
1145
1146         PR middle-end/37884
1147         * ira-build.c (copy_live_ranges_to_removed_store_destinations):
1148         Rename to copy_info_to_removed_store_destinations.  Propagate
1149         conflict hard regs and register stack attribute.
1150
1151 2008-10-26  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1152
1153         PR middle-end/37316
1154         * pa.c (function_arg_padding):  Pad complex and vector types
1155         upward in 64-bit runtime.
1156         (function_arg): Use BLKmode for PARALLEL in 64-bit runtime.
1157
1158 2008-10-26  Matthias Klose  <doko@ubuntu.com>
1159
1160         * doc/install.texi: Document requirements on antlr.
1161
1162 2008-10-25  Richard Sandiford  <rdsandiford@googlemail.com>
1163
1164         * config/mips/mips.h (REG_ALLOC_ORDER): Put call-clobbered registers
1165         first.
1166
1167 2008-10-24  Michael Meissner  <meissner@linux.vnet.ibm.com>
1168
1169         PR target/37841
1170         * function.c (locate_and_pad_parm): If FUNCTION_ARG_ADJUST_OFFSET
1171         is defined, use it to modify the constant offset.
1172
1173         * doc/tm.texi (FUNCTION_ARG_OFFSET): Document new macro.
1174
1175         * config/spu/spu.h (FUNCTION_ARG_OFFSET): New macro to move char
1176         and short arguments to the correct location as mandated by the ABI.
1177
1178 2008-10-24  Kaz Kojima  <kkojima@gcc.gnu.org>
1179
1180         PR rtl-optimization/37769
1181         * regmove.c (optimize_reg_copy_2): Update REG_INC note if needed.
1182
1183 2008-10-24  Kaz Kojima  <kkojima@gcc.gnu.org>
1184
1185         * config/sh/t-sh: Use $(MULTILIB_CFLAGS) when compiling to
1186         unwind-dw2-Os-4-200.o.
1187
1188 2008-10-24  Joseph Myers  <joseph@codesourcery.com>
1189
1190         * c-typeck.c (enum impl_conv): Remove ic_argpass_nonproto.
1191         (convert_for_assignment): Remove ic_argpass_nonproto cases.
1192
1193 2008-10-24  Jakub Jelinek  <jakub@redhat.com>
1194
1195         PR tree-optimization/36038
1196         * tree-ssa-loop-ivopts.c (add_old_iv_candidates): For pointer bases
1197         add sizetype IV with initial value zero instead of pointer type.
1198
1199 2008-10-24  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1200
1201         PR c/7543
1202         * value-prof.c (gimple_stringop_fixed_value): Use parentheses
1203         around bit operation.
1204         * profile.c (is_edge_inconsistent): Likewise.
1205         * fold-const.c (truth_value_p): Move from here...
1206         * tree.h (truth_value_p): ... to here.
1207         * c-tree.h (c_expr): Update description of original_code.
1208         * c-typeck.c (parser_build_unary_op): Set original_code.
1209         (parser_build_binary_op): Update call to warn_about_parentheses.
1210         * c-common.c (warn_about_parentheses): Take two additional
1211         arguments of the operands. Use a switch. Quote operators
1212         appropriately. Define macro APPEARS_TO_BE_BOOLEAN_EXPR_P.
1213         Add warning about !x | y and !x & y.
1214         * c-common.h (warn_about_parentheses): Update declaration.
1215
1216 2008-10-24  Jakub Jelinek  <jakub@redhat.com>
1217
1218         * Makefile.in (lang_checks_parallelized, check_gcc_parallelize,
1219         check_p_tool, check_p_vars, check_p_subno, check_p_comma,
1220         check_p_subwork, check_p_numbers, check_p_subdir, check_p_subdirs):
1221         New variables.
1222         (check-subtargets, check-%-subtargets, check-parallel-%): New targets.
1223         (check-%): For test targets listed in lang_checks_parallelized
1224         if -j is used and RUNTESTFLAGS doesn't specify tests to execute,
1225         run the testing in multiple make goals, possibly parallel, and
1226         afterwards run dg-extract-results.sh to merge the sum and log files.
1227
1228 2008-10-24  Richard Sandiford  <rdsandiford@googlemail.com>
1229
1230         * config/mips/mips.c (mips_canonicalize_move_class): New function.
1231         (mips_move_to_gpr_cost): Likewise.
1232         (mips_move_from_gpr_cost): Likewise.
1233         (mips_register_move_cost): Make more fine-grained.
1234
1235 2008-10-23  Tobias Grosser  <grosser@fim.uni-passau.de>
1236
1237         * graphite.c (graphite_apply_transformations): Check for
1238         -fgraphite-identity.
1239         * toplev.c (process_options): Add graphite_identity.
1240         * tree-ssa-loop.c (gate_graphite_transforms): Add graphite_identity.
1241
1242 2008-10-23  Bernd Schmidt  <bernd.schmidt@analog.com>
1243
1244         * config/bfin/bfin.c (bdesc_2arg): Add mulhisill, mulhisilh,
1245         mulhisihl and mulhisihh builtins.
1246
1247         From Jie Zhang  <jie.zhang@analog.com>
1248         * config/bfin/bfin.md (composev2hi): Put operands into vector
1249         with correct order.
1250         
1251 2008-10-22  Chao-ying Fu  <fu@mips.com>
1252
1253         * config/mips/mips.opt (msmartmips): Accept -mno-smartmips.
1254
1255 2008-10-22  Bernd Schmidt  <bernd.schmidt@analog.com>
1256
1257         From Mike Frysinger  <michael.frysinger@analog.com>
1258         * config/bfin/bfin-protos.h (bfin_cpu_type): Add BFIN_CPU_BF512,
1259         BFIN_CPU_BF514, BFIN_CPU_BF516, and BFIN_CPU_BF518.
1260         * config/bfin/bfin.c (bfin_cpus[]): Add 0.0 for bf512, bf514, bf516,
1261         and bf518.  Add 0.2 for bf522, bf523, bf524, bf526, and bf527.
1262         Add 0.6 for bf533, bf532, and bf531.  Add 0.5 for bf538 and bf539.
1263         Add 0.2 for bf542, bf544, bf547, bf548, and bf549.
1264         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF512__
1265         for BFIN_CPU_BF512, __ADSPBF514__ for BFIN_CPU_BF514, __ADSPBF516__
1266         for BFIN_CPU_BF516, and __ADSPBF518__ for BFIN_CPU_BF518.  Define
1267         __ADSPBF51x__ for all of them.
1268         * config/bfin/elf.h (LIB_SPEC): Select proper linker scripts for
1269         -mcpu bf512, bf514, bf516, and bf518.
1270         * config/bfin/t-bfin-elf (MULTILIB_MATCHES): Select bf532-none for
1271         bf512-none, bf514-none, bf516-none, and bf518-none.
1272         * config/bfin/t-bfin-linux (MULTILIB_MATCHES): Likewise.
1273         * config/bfin/t-bfin-uclinux (MULTILIB_MATCHES): Likewise.
1274         * doc/invoke.texi (Blackfin Options): Document that
1275         -mcpu now accepts bf512, bf514, bf516, and bf518.
1276
1277 2008-10-22  Jakub Jelinek  <jakub@redhat.com>
1278
1279         PR middle-end/37882
1280         * fold-const.c (build_range_type): For 1 .. signed_max
1281         range call build_nonstandard_inter_type if signed_type_for
1282         returned a type with bigger precision.
1283
1284 2008-10-22  Richard Guenther  <rguenther@suse.de>
1285
1286         * tree.def (COMPLEX_TYPE): Constrain element type.
1287         * tree.c (build_complex_type): Assert that.
1288         * tree-ssa-structalias.c (could_have_pointers): Complex types
1289         cannot have pointers.
1290
1291 2008-10-22  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1292
1293         PR c/30949
1294         * c-typeck.c (convert_for_assignment): Do not give declaration's
1295         location for builtins. Spell out which type was expected and which
1296         was given.
1297
1298 2008-10-22  Nick Clifton  <nickc@redhat.com>
1299
1300         * config/frv/frv.h (HARD_REGNO_RENAME_OK): Define.  Do not allow
1301         the fdpic register to be a target when running in fdpic mode.
1302
1303 2008-10-22 Rafael Espindola  <espindola@google.com>
1304
1305         * ipa-struct-reorg.c (create_new_alloc_sites): Properly insert the
1306         newly created statements.
1307
1308 2008-10-22  Kaz Kojima  <kkojima@gcc.gnu.org>
1309
1310         PR target/37633
1311         * config/sh/sh.c (sh_hard_regno_mode_ok): New function.
1312         * config/sh/sh.h (HARD_REGNO_MODE_OK): Use it.
1313         * config/sh/sh-protos.h (sh_hard_regno_mode_ok): Declare.
1314
1315 2008-10-22  Jakub Jelinek  <jakub@redhat.com>
1316
1317         PR target/37880
1318         * doc/invoke.texi: Fix spelling of -mlarge-data-threshold option.
1319         Adjust -mcmodel=medium description for 2005-07-31 changes.
1320
1321 2008-10-22  Jan Hubicka  <jh@suse.cz>
1322             Jakub Jelinek  <jakub@redhat.com>
1323
1324         PR middle-end/35853
1325         * doc/invoke.texi: Remove references to obsoleted -d dumps.
1326
1327 2008-10-21  Richard Henderson  <rth@redhat.com>
1328
1329         PR 37815
1330         * emit-rtl.c (get_spill_slot_decl): Export.
1331         * emit-rtl.h (get_spill_slot_decl): Declare.
1332         * var-tracking.c (vt_add_function_parameters): Relax assertion
1333         on the contents of MEM_EXPR in a PARM_DECL to include a spill slot.
1334
1335 2008-10-21  Bob Wilson  <bob.wilson@acm.org>
1336
1337         * var-tracking.c (insn_stack_adjust_offset_pre_post): If insn has a
1338         REG_FRAME_RELATED_EXPR note, examine the pattern from the note instead
1339         of from insn.
1340
1341 2008-10-21  Adam Nemet  <anemet@caviumnetworks.com>
1342
1343         PR middle-end/37669
1344         * tree-ssa-ccp.c (ccp_fold_builtin): Only allow one argument to be
1345         processed by get_maxval_strlen.
1346
1347 2008-10-21  David Edelsohn  <edelsohn@gnu.org>
1348
1349         PR target/35485
1350         * tree.c (get_file_function_name): Copy first_global_object_name.
1351         Centralize call to clean_symbol_name.
1352
1353 2008-10-21  Sandra Loosemore  <sandra@codesourcery.com>
1354
1355         * config.gcc (powerpc-*): Make t-ppcgas imply usegas.h.
1356         * config/svr4.h (SVR4_ASM_SPEC): New.
1357         (ASM_SPEC): Inherit from SVR4_ASM_SPEC.
1358         * config/rs6000/sysv4.h (ASM_SPEC): Inherit from SVR4_ASM_SPEC.
1359
1360         * doc/invoke.texi (Option Summary): Add -T to linker options.
1361         (Link Options): Document -T.
1362         
1363 2008-10-21  Jakub Jelinek  <jakub@redhat.com>
1364
1365         * tree-inline.c (tree_inlinable_function_p): Remove tuples
1366         debugging hack.
1367
1368         * gimplify.c (gimplify_expr): Drop TREE_OVERFLOW from INTEGER_CSTs.
1369
1370         PR debug/37020
1371         * c-decl.c (merge_decls): Don't call outlining_inline_function hook.
1372
1373 2008-10-20  Daniel Berlin  <dberlin@dberlin.org>
1374
1375         * tree-ssa-pre.c (insert_into_preds_of_block): Don't rewrite constant
1376         part of expression.
1377
1378 2008-10-20  Tobias Schlüter  <tobi@gcc.gnu.org>
1379
1380         * doc/install.texi: Fix typos in previous patch.
1381
1382 2008-10-19  Tobias Schlüter  <tobi@gcc.gnu.org>
1383
1384         * doc/install.texi: Document in-tree building of gcc and mpfr.
1385
1386 2008-10-19  Richard Guenther  <rguenther@suse.de>
1387
1388         * tree-ssa-alias.c (may_alias_p): Remove bogus shortcut.
1389
1390 2008-10-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1391
1392         PR c/30260
1393         * c-decl.c (finish_enum): Convert non-integer enumerators to enum type.
1394         (build_enumerator): Convert enumerators that fit in integer to
1395         integer type.
1396
1397 2008-10-18  Uros Bizjak  <ubizjak@gmail.com>
1398
1399         * config/i386/i386.md (unnamed peephole2): Do not force memory
1400         operands of arith or logical instructions into registers for
1401         non-TARGET_READ_MODIFY targets.
1402
1403         (ffs_cmove): Change operand 0 predicate to register_operand.
1404         Change operand 1 predicate to nonimmediate_operand.
1405         (ffsdi2): Ditto.
1406         (*ffs_no_cmove): Change operand 0 predicate to register_operand.
1407
1408 2008-10-18  Richard Guenther  <rguenther@suse.de>
1409
1410         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Guard
1411         VIEW_CONVERT_EXPR case against invalid gimple.
1412
1413 2008-10-17  Andreas Krebbel  <krebbel1@de.ibm.com>
1414
1415         * c-parser.c (c_parser_binary_expression): Silence the
1416         uninitialized variable warning emitted for binary_loc.
1417
1418 2008-10-16  Daniel Berlin  <dberlin@dberlin.org>
1419
1420         * tree-ssa-pre.c (phi_translate_set): Add constants to phi
1421         translation cache.
1422
1423 2008-10-16  Joseph Myers  <joseph@codesourcery.com>
1424
1425         PR c/33192
1426         * c-typeck.c (build_unary_op): Use omit_one_operand for
1427         IMAGPART_EXPR of real argument.
1428
1429 2008-10-16  Jakub Jelinek  <jakub@redhat.com>
1430
1431         PR tree-optimization/37664
1432         * fold-const.c (fold_binary): When optimizing comparison with
1433         highest or lowest type's value, don't consider TREE_OVERFLOW.
1434
1435 2008-10-16  David Edelsohn  <edelsohn@gnu.org>
1436
1437         PR target/35483
1438         * Makefile.in (coverage.o): Depend on $(TM_P_H).
1439         * coverage.c: Include tm_p.h.
1440         * config/rs6000/x-aix (jc1): Override LDFLAGS.
1441         * config/rs6000/xcoff.h (ASM_GENERATE_INTERNAL_LABEL): Strip
1442         dollar signs from PREFIX.
1443         * config/rs6000/rs6000.c (output_toc): Use RS6000_OUTPUT_BASENAME
1444         instead of manual strip_name_encoding.
1445
1446 2008-10-16  Richard Guenther  <rguenther@suse.de>
1447
1448         PR middle-end/37418
1449         * tree-ssa.c (useless_type_conversion_p_1): Do not treat
1450         volatile qualified functions or methods as relevant.
1451
1452 2008-10-16  Jakub Jelinek  <jakub@redhat.com>
1453
1454         PR tree-optimization/37525
1455         * tree.c (int_fits_type_p): Rewrite using double_int.  Zero extend
1456         sizetype unsigned constants, both in the case of C and bounds.
1457
1458 2008-10-15  Jan Hubicka  <jh@suse.cz>
1459
1460         * ira-emit.c (change_regs): Return false when replacing reg by itself.
1461
1462 2008-10-14  Vladimir Makarov  <vmakarov@redhat.com>
1463
1464         PR target/37633
1465         * ira-costs.c (ira_tune_allocno_costs_and_cover_classes): Check
1466         HARD_REGNO_CALL_PART_CLOBBERED.
1467
1468 2008-10-15  Vladimir Makarov  <vmakarov@redhat.com>
1469
1470         PR middle-end/37535
1471         * ira-lives.c (mark_early_clobbers): Remove.
1472         (make_pseudo_conflict, check_and_make_def_use_conflicts,
1473         check_and_make_def_conflicts,
1474         make_early_clobber_and_input_conflicts,
1475         mark_hard_reg_early_clobbers): New functions.
1476         (process_bb_node_lives): Call
1477         make_early_clobber_and_input_conflicts and
1478         mark_hard_reg_early_clobbers.  Make hard register inputs live again.
1479
1480         * doc/rtl.texi (clobber): Change descriotion of RA behaviour for
1481         early clobbers of pseudo-registers.
1482         
1483 2008-10-15  Vladimir Makarov  <vmakarov@redhat.com>
1484
1485         PR middle-end/37674
1486         * ira-build.c (ira_flattening): Recalculate
1487         ALLOCNO_TOTAL_NO_STACK_REG_P and ALLOCNO_TOTAL_CONFLICT_HARD_REGS
1488         from the scratch instead of the propagation.
1489         
1490 2008-10-15  Richard Sandiford  <rdsandiford@googlemail.com>
1491
1492         * doc/rtl.texi (const_double): Remove the "addr" operand.
1493         Describe CONST_DOUBLE_* macros under const_double rather
1494         than const_vector.
1495         (const_fixed): Fix the operand description.
1496         (const): Add an @findex directive.
1497         (CONST0_RTX, CONST1_RTX, CONST2_RTX): Move description
1498         after the constant rtl table.
1499         (fix): Combine floating-point and fixed-point descriptions.
1500         Fix hyphenation.
1501         * sched-deps.c (sched_analyze_2): Remove reference to
1502         CONST_DOUBLE_CHAIN.
1503
1504 2008-10-15  Richard Sandiford  <rdsandiford@googlemail.com>
1505
1506         * config/mn10300/mn10300.h (OUTPUT_ADDR_CONST_EXTRA): Handle
1507         UNSPEC_GOTSYM_OFFs.
1508         * config/mn10300/mn10300.c (legitimate_pic_operand_p): Return true
1509         for UNSPEC_GOTSYM_OFFs.
1510         * config/mn10300/mn10300.md (UNSPEC_GOTSYM_OFF): New unspec.
1511         (add_GOT_to_pic_reg): Use it.
1512         * config/mn10300/constraints.md (S): Allow UNSPEC_GOTSYM_OFF.
1513
1514 2008-10-15  Jan Sjodin  <jan.sjodin@amd.com>
1515             Harsha Jagasia  <harsha.jagasia@amd.com>
1516
1517         PR tree-optimization/37485
1518         * graphite.c (gmp_cst_to_tree): Moved.
1519         (iv_stack_entry_is_constant): New.
1520         (iv_stack_entry_is_iv): New.
1521         (loop_iv_stack_push): Renamed to loop_iv_stack_push_iv.
1522         (loop_iv_stack_insert_constant): New.
1523         (loop_iv_stack_pop): Use new datatpype.
1524         (loop_iv_stack_get_iv): Same.
1525         (loop_iv_stack_get_iv_from_name): Same.
1526         (loop_iv_stack_debug): Renamed to debug_loop_iv_stack.
1527         (loop_iv_stack_patch_for_consts): New.
1528         (loop_iv_stack_remove_constants): New.
1529         (graphite_create_new_loop): Use loop_iv_stack_push_iv.
1530         (translate_clast): Call loop_iv_stack_patch_for_consts and
1531         loop_iv_stack_remove_constants.
1532         (gloog): Use new datatype.  Redirect construction edge to end
1533         block to avoid accidental deletion.
1534         * graphite.h (enum iv_stack_entry_kind): New.  Tag for data in
1535         iv stack entry.
1536         (union iv_stack_entry_data): New.  Data in iv stack entry.
1537         (struct iv_stack_entry): New.  Datatype for iv stack entries.
1538
1539 2008-10-15  Sebastian Pop  <sebastian.pop@amd.com>
1540
1541         * tree-data-ref.c (stmt_simple_memref_p): Fix memleak.
1542         * graphite.c (free_scop): Same.
1543         (build_scops): Same.
1544         (free_scattering): New.
1545         (build_cloog_prog): Call free_scattering.
1546         (patch_phis_for_virtual_defs): Fix memleak.
1547         (graphite_trans_bb_strip_mine): Same.
1548         (limit_scops): Same.
1549
1550 2008-10-15  Sebastian Pop  <sebastian.pop@amd.com>
1551             Harsha Jagasia  <harsha.jagasia@amd.com>
1552
1553         PR tree-optimization/37828
1554         * graphite.c (graphite_trans_loop_block): Do not loop block
1555         single nested loops.
1556
1557 2008-10-15  Sebastian Pop  <sebastian.pop@amd.com>
1558
1559         PR tree-optimization/37686
1560         * tree-loop-linear.c (linear_transform_loops): Build a
1561         loop nest vector.  Pass it to lambda_compute_access_matrices.
1562         * tree-data-ref.h (struct access_matrix): Store the loop nest
1563         relative to which it encodes the information.
1564         (AM_LOOP_NEST_NUM): Renamed AM_LOOP_NEST.
1565         (am_vector_index_for_loop): Reimplemented: iterate over the
1566         loop nest for finding the loop index in the access matrix.
1567         (lambda_compute_access_matrices): Update declaration.
1568         * lambda-code.c (build_access_matrix): Pass the loop nest and
1569         record it.
1570         (lambda_compute_access_matrices): Same.
1571
1572 2008-10-15  Andreas Krebbel  <krebbel1@de.ibm.com>
1573
1574         * config/s390/s390.h: (TARGET_DFP): This requires TARGET_HARD_FLOAT.
1575         * config/s390/s390.md: Replace "TARGET_HARD_FLOAT &&
1576         TARGET_(HARD_)DFP" with only TARGET_(HARD_)DFP since this
1577         already implies hard float.  Also fix several insn condition
1578         with TARGET_DFP which shall require TARGET_HARD_DFP instead.
1579
1580 2008-10-15  David Edelsohn  <edelsohn@gnu.org>
1581
1582         PR target/35483
1583         Based on patches by Laurent Vivier.
1584         * xcoffout.h (DBX_FINISH_STABS): Translate dollar sign to underscore.
1585         * config/rs6000/rs6000-protos.h (rs6000_xcoff_strip_dollar): Declare.
1586         * config/rs6000/xcoff.h (ASM_DECLARE_FUNCTION_NAME): Translate
1587         dollar sign to underscore.
1588         (ASM_OUTPUT_EXTERNAL): Same.
1589         (ASM_OUTPUT_LABELREF): New.
1590         * config/rs6000/rs6000.c (rs6000_xcoff_strip_dollar): New.
1591
1592         * config/rs6000/aix51.h (TARGET_USE_JCR_SECTION): Define.
1593         * config/rs6000/aix52.h (TARGET_USE_JCR_SECTION): Define.
1594         * config/rs6000/aix53.h (TARGET_USE_JCR_SECTION): Define.
1595         * config/rs6000/aix61.h (TARGET_USE_JCR_SECTION): Define.
1596
1597 2008-10-15  Jakub Jelinek  <jakub@redhat.com>
1598
1599         PR tree-optimization/36881
1600         * tree-switch-conversion.c (check_final_bb): For flag_pic, check
1601         that each value doesn't need runtime relocations, for !flag_pic
1602         check that each value is just a valid initializer constant.
1603
1604 2008-10-14  Richard Sandiford  <rdsandiford@googlemail.com>
1605
1606         * config/mips/mips.h (reg_class): Remove HI_AND_GR_REGS,
1607         LO_AND_GR_REGS, HI_AND_FP_REGS, COP0_AND_GR_REGS, COP2_AND_GR_REGS,
1608         COP3_AND_GR_REGS, ALL_COP_REGS and ALL_COP_AND_GR_REGS.
1609         Add GR_AND_MD0_REGS, GR_AND_MD1_REGS, GR_AND_MD_REGS and
1610         GR_AND_ACC_REGS.
1611         (REG_CLASS_NAMES): Update accordingly.
1612         (REG_CLASS_CONTENTS): Likewise.  Use the class name in the comments,
1613         rather than an unpredictable descriptive string.
1614         * config/mips/mips.c (mips_register_move_cost): Remove comment.
1615         (mips_register_move_cost): Check for specific COP*_REGS classes,
1616         instead of ALL_COP_AND_GR_REGS.
1617         (mips_ira_cover_classes): New function.
1618         (mips_secondary_reload_class): Remove MTLO and MTHI workarounds.
1619         (TARGET_IRA_COVER_CLASSES): Define.
1620
1621 2008-10-14  Douglas Gregor  <doug.gregor@gmail.com>
1622
1623         PR c++/37553
1624         * tree.c (build_type_attribute_qual_variant): Hash on the
1625         unqualified type, and don't overwrite an existing
1626         (type_hash_eq): Make the TYPE_NAME of the types significant, to
1627         allow distinguishing between wchar_t and its underlying type. This
1628         also means that we'll retain a little more typedef information.
1629
1630 2008-10-14  Andrey Belevantsev  <abel@ispras.ru>
1631             Dmitry Melnik  <dm@ispras.ru>
1632             Dmitry Zhurikhin  <zhur@ispras.ru>
1633             Alexander Monakov  <amonakov@ispras.ru>
1634             Maxim Kuvyrkov  <maxim@codesourcery.com>
1635
1636         * target.h (struct gcc_target): Update prototypes of needs_block_p
1637         and gen_spec_check.
1638         * haifa-sched.c (create_check_block_twin): Update calls to the above.
1639         * sel-sched.c (create_speculation_check): Likewise.
1640         * doc/tm.texi: Provide documentation for new target hooks.
1641                 
1642         * config/ia64/ia64.c: Include sel-sched.h.  Rewrite speculation hooks.
1643         (ia64_gen_spec_insn): Removed.
1644         (get_spec_check_gen_function, insn_can_be_in_speculative_p,
1645         ia64_gen_spec_check): New static functions.
1646         (ia64_alloc_sched_context, ia64_init_sched_context,
1647         ia64_set_sched_context, ia64_clear_sched_context,
1648         ia64_free_sched_context, ia64_get_insn_spec_ds,
1649         ia64_get_insn_checked_ds, ia64_skip_rtx_p): Declare functions.
1650         (ia64_needs_block_p): Change prototype.
1651         (ia64_gen_check): Rename to ia64_gen_spec_check.
1652         (ia64_adjust_cost): Rename to ia64_adjust_cost_2.  Add new parameter
1653         into declaration, add special memory dependencies handling.
1654         (TARGET_SCHED_ALLOC_SCHED_CONTEXT, TARGET_SCHED_INIT_SCHED_CONTEXT,
1655         TARGET_SCHED_SET_SCHED_CONTEXT, TARGET_SCHED_CLEAR_SCHED_CONTEXT,
1656         TARGET_SCHED_FREE_SCHED_CONTEXT, TARGET_SCHED_GET_INSN_SPEC_DS,
1657         TARGET_SCHED_GET_INSN_CHECKED_DS, TARGET_SCHED_SKIP_RTX_P):
1658         Define new target hooks.
1659         (TARGET_SCHED_GEN_CHECK): Rename to TARGET_SCHED_GEN_SPEC_CHECK.
1660         (ia64_optimization_options): Turn on selective scheduling with -O3,
1661         disable -fauto-inc-dec. Set mflag_sched_control_spec to true by
1662         default with selective scheduling.
1663         (ia64_override_options): Initialize align_loops and align_functions
1664         to 32 and 64, respectively.  Set global selective scheduling flags
1665         according to target-dependent flags.
1666         (rtx_needs_barrier): Support UNSPEC_LDS_A.
1667         (group_barrier_needed): Use new mstop-bit-before-check flag.
1668         Add heuristic.
1669         (dfa_state_size): Make global.
1670         (spec_check_no, max_uid): Remove.
1671         (mem_ops_in_group, current_cycle): New variables.
1672         (ia64_sched_init): Disable checks for !SCHED_GROUP_P after reload.
1673         Initialize new variables.
1674         (is_load_p, record_memory_reference): New functions.
1675         (ia64_dfa_sched_reorder): Lower priority of loads when limit is
1676         reached.
1677         (ia64_variable_issue): Change use of current_sched_info to
1678         sched_deps_info.  Update comment.  Note if a load or a store is issued.
1679         (ia64_first_cycle_multipass_dfa_lookahead_guard_spec): Require a cycle
1680         advance if maximal number of loads or stores was issued on current
1681         cycle.
1682         (scheduled_good_insn): New static helper function.
1683         (ia64_dfa_new_cycle): Assert that last_scheduled_insn is set when
1684         a group barrier is needed.  Fix vertical spacing.  Guard the code
1685         doing state transition with last_scheduled_insn check.
1686         Mark that a stop bit should be before current insn if there was a 
1687         cycle advance.  Update current_cycle and mem_ops_in_group.
1688         (ia64_h_i_d_extended): Change use of current_sched_info to
1689         sched_deps_info. Reallocate stops_p by larger chunks.
1690         (struct _ia64_sched_context): New structure.
1691         (ia64_sched_context_t): New typedef.
1692         (ia64_alloc_sched_context, ia64_init_sched_context,
1693         ia64_set_sched_context, ia64_clear_sched_context,
1694         ia64_free_sched_context): New static functions.
1695         (gen_func_t): New typedef.
1696         (get_spec_load_gen_function): New function.
1697         (SPEC_GEN_EXTEND_OFFSET): Declare.      
1698         (ia64_set_sched_flags): Check common_sched_info instead of *flags.
1699         (get_mode_no_for_insn): Change the condition that prevents use of
1700         special hardware registers so it can now handle pseudos.
1701         (get_spec_unspec_code): New function.
1702         (ia64_skip_rtx_p, get_insn_spec_code, ia64_get_insn_spec_ds,
1703         ia64_get_insn_checked_ds, ia64_gen_spec_load): New static functions.
1704         (ia64_speculate_insn, ia64_needs_block_p): Support branchy checks
1705         during selective scheduling.
1706         (ia64_speculate_insn): Use ds_get_speculation_types when
1707         determining whether we need to change the pattern.
1708         (SPEC_GEN_LD_MAP, SPEC_GEN_CHECK_OFFSET): Declare.
1709         (ia64_spec_check_src_p): Support new speculation/check codes.
1710         (struct bundle_state): New field.
1711         (issue_nops_and_insn): Initialize it.
1712         (insert_bundle_state): Minimize mid-bundle stop bits.
1713         (important_for_bundling_p): New function.
1714         (get_next_important_insn): Use important_for_bundling_p.
1715         (bundling): When shifting TImode from unimportant insns, ignore
1716         also group barriers.  Assert that best state is found before
1717         the backward bundling pass.  Print number of mid-bundle stop bits.
1718         Minimize mid-bundle stop bits.  Check correct calculation of
1719         mid-bundle stop bits.
1720         (ia64_sched_finish, final_emit_insn_group_barriers): Fix formatting.
1721         (final_emit_insn_group_barriers): Emit stop bits before insns starting
1722         a new cycle.
1723         (sel2_run): New variable.
1724         (ia64_reorg): When flag_selective_scheduling2 is set, run the
1725         selective scheduling pass instead of schedule_ebbs.
1726         
1727         * config/ia64/ia64.md (speculable1, speculable2): New attributes.
1728         (UNSPEC_LDS_A): New UNSPEC.
1729         (movqi_internal, movhi_internal, movsi_internal, movdi_internal,
1730         movti_internal, movsf_internal, movdf_internal,
1731         movxf_internal): Make visible.  Add speculable* attributes.
1732         (output_c_nc): New mode attribute.
1733         (mov<mode>_speculative_a, zero_extend<mode>di2_speculative_a,
1734         mov<mode>_nc, zero_extend<mode>di2_nc,
1735         advanced_load_check_nc_<mode>): New insns.
1736         (zero_extend*): Add speculable* attributes.
1737
1738         * config/ia64/ia64.opt (msched_fp_mem_deps_zero_cost): New option.
1739         (msched-stop-bits-after-every-cycle): Likewise.
1740         (msched-max-memory-insns, msched-max-memory-insns-hard-limit):
1741         Likewise.
1742         (msched-spec-verbose): Remove.
1743         (msched-prefer-non-data-spec-insns,
1744         msched-prefer-non-control-spec-insns,
1745         msched-count-spec-in-critical-path,
1746         msel-sched-dont-check-control-spec): Use Target  Report Var
1747         instead of Common Report Var.
1748
1749         * config/ia64/itanium2.md: Remove incorrect bypass.
1750         
1751         * config/ia64/t-ia64 (ia64.o): Add dependency on sel-sched.h.
1752
1753 2008-10-14  Jakub Jelinek  <jakub@redhat.com>
1754
1755         PR middle-end/37805
1756         * opts.c (common_handle_option): Don't ICE on -fhelp=joined
1757         and -fhelp=separate.
1758
1759 2008-10-14  Ben Elliston  <bje@au.ibm.com>
1760
1761         * config/rs6000/rs6000.md (cell_micro): Fix formatting.
1762
1763 2008-10-13  Joseph Myers  <joseph@codesourcery.com>
1764
1765         * combine.c (simplify_set): Avoid calling LOAD_EXTEND_OP on
1766         non-integer modes.
1767
1768 2008-10-13  Matthias Klose  <doko@ubuntu.com>
1769
1770         * config/pa/linux-atomic.c: Work around missing header file
1771         for hppa64-linux-gnu targets.
1772
1773 2008-10-13  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1774             Kaushal Kantawala <Kaushal_Kantawala@playstation.sony.com>
1775             Trevor Smigiel  <Trevor_Smigiel@playstation.sony.com>
1776             Grace Cao  <grace_cao@playstation.sony.com>
1777
1778         * doc/invoke.texi (-mgen-cell-microcode): Document.
1779         (-mwarn-cell-microcode): Document.
1780         * cfglayout.c (locator_location): Export.
1781         * rtl.h (locator_location): Define prototype.
1782         * config/rs6000/predicates.md (cc_reg_not_micro_cr0_operand):
1783         New predicate.
1784         * rs6000/rs6000-protos.h (rs6000_final_prescan_insn): Define prototype.
1785         * config/rs6000/rs6000.opt (mgen-cell-microcode): New option.
1786         (mwarn-cell-microcode): New option.
1787         * rs6000/rs6000.c (rs6000_cell_dont_microcode): Delete unused variable.
1788         (rs6000_override_options): Set rs6000_gen_cell_microcode if tuning for
1789         cell and not already set.
1790         Turn off string instructions if not generating cell microcode.
1791         (rs6000_final_prescan_insn): New function that warns about microcoded
1792         instructions.
1793         * config/rs6000/rs6000.h (FINAL_PRESCAN_INSN): Define.
1794         * config/rs6000/rs6000.md
1795         Replace cc_reg_not_cr0_operand with cc_reg_not_micro_cr0_operand if
1796         the instruction would have been microcoded on the Cell.  Set
1797         cell_micro to always on unnamed patterns for the string instructions.
1798         (cell_micro): Update definition, remove load/store conditional
1799         microcoded.
1800         (sign_extend:DI): Define new pattern for non microcoded version.
1801         (sign_extend:SI): Likewise.
1802         (compare (div:P)): Set cell_micro to not.
1803         (andsi3): Define as an expand.
1804         (andsi3_mc): New pattern.
1805         (andsi3_nomc): New pattern.
1806         (andsi3_internal0_nomc): New pattern.
1807         (andsi3_internal2): Rename to ...
1808         (andsi3_internal2_mc): this and enable iff generating microcode.
1809         (andsi3_internal3): Rename to ...
1810         (andsi3_internal3_mc): this and enable iff generating microcode.
1811         (andsi3_internal4): Enable iif generating microcode.
1812         (andsi3_internal5): Rename to ..
1813         (andsi3_internal5_mc): this and enable iff generating microcode.
1814         (andsi3_internal5_nomc): New pattern.
1815         (extzvdi_internal1): Enable iff generating microcode.
1816         (extzvdi_internal2): Likewise.
1817         (rotlsi3_internal7): Set cell_micro to always if non immediate form.
1818         (anddi3): Change to expand.
1819         (anddi3_mc): Rename from anddi3.
1820         (anddi3_no_mc): New pattern.
1821         (anddi3_internal2): Rename to ..
1822         (anddi3_internal2_mc): this and enable iff generating microcode.
1823         (anddi3_internal2_nomc): New pattern.
1824         (anddi3_internal3): Rename to ..
1825         (anddi3_internal3_mc): this and enable iff generating microcode.
1826         (anddi3_internal3_nomc): New pattern.
1827         (movti_string): Set cell_micro to always if TARGET_STRING.
1828         (stmsi8): Set cell_micro to always.
1829         (stmsi7): Likewise.
1830         (stmsi6): Likewise.
1831         (stmsi5): Likewise.
1832         (stmsi4): Likewise.
1833         (stmsi3): Likewise.
1834         (stmsi8_power): Likewise.
1835         (stmsi7_power): Likewise.
1836         (stmsi6_power): Likewise.
1837         (stmsi5_power): Likewise.
1838         (stmsi4_power): Likewise.
1839         (stmsi3_power): Likewise.
1840         (movsi_update2): Enable iff generating microcode.
1841         (movhi_update3): Likewise.
1842         (lmw): Set cell_micro to always.
1843
1844 2008-10-13  Richard Sandiford  <rdsandiford@googlemail.com>
1845
1846         * config/s390/s390.md (UNSPEC_POOL_OFFSET): New constant.
1847         * config/s390/s390.c (machine_function): Remove
1848         decomposed_literal_pool_addresses_ok_p.
1849         (s390_decompose_address): Check for UNSPEC_POOL_OFFSET instead of
1850         the difference of two labels.
1851         (s390_output_addr_const_extra): Handle UNSPEC_POOL_OFFSET.
1852         (s390_pool_offset): New function.
1853         (s390_find_constant, s390_find_execute, s390_dump_pool): Use it.
1854         (s390_reorg): Don't set decomposed_literal_pool_addresses_ok_p.
1855
1856 2008-10-13  Nathan Froyd  <froydnj@codesourcery.com>
1857
1858         * doc/install.texi (powerpc-*-*): Require binutils 2.15.
1859         (powerpc*-*-linux-gnu*): Describe.
1860         * config/rs6000/ppc-asm.h (HIDDEN_FUNC): New macro.
1861         * config/rs6000/crtresfpr.asm, config/rs6000/crtresgpr.asm,
1862         config/rs6000/crtresxfpr.asm, config/rs6000/crtresxgpr.asm,
1863         config/rs6000/crtsavfpr.asm, config/rs6000/crtsavgpr.asm,
1864         config/rs6000/e500crtres32gpr.asm,
1865         config/rs6000/e500crtres64gpr.asm,
1866         config/rs6000/e500crtres64gprctr.asm,
1867         config/rs6000/e500crtrest32gpr.asm,
1868         config/rs6000/e500crtrest64gpr.asm,
1869         config/rs6000/e500crtresx32gpr.asm,
1870         config/rs6000/e500crtresx64gpr.asm,
1871         config/rs6000/e500crtsav32gpr.asm,
1872         config/rs6000/e500crtsav64gpr.asm,
1873         config/rs6000/e500crtsav64gprctr.asm,
1874         config/rs6000/e500crtsavg32gpr.asm,
1875         config/rs6000/e500crtsavg64gpr.asm,
1876         config/rs6000/e500crtsavg64gprctr.asm: Use it.
1877         * config/rs6000/crtsavres.asm: Really remove.
1878
1879 2008-10-13  Kai Tietz  <kai.tietz@onevision.com>
1880
1881         Fix PR/25502
1882         * c-format.c (convert_format_name_to_system_name): Use
1883         TARGET_OVERRIDES_FORMAT_INIT.
1884         * config.gcc (extra_options): Add for mingw targets mingw.opt.
1885         * config/i386/mingw.opt: New.
1886         * config/i386/mingw32.h (TARGET_OVERRIDES_FORMAT_INIT): New.
1887         * config/i386/msformat-c.c (TARGET_OVERRIDES_FORMAT_INIT): New.
1888         (ms_printf_length_specs): Removed const specifier.
1889         * doc/tm.texi (TARGET_OVERRIDES_FORMAT_INIT): New.
1890         * doc/invoke.texi (Wno-pedantic-ms-format): New.
1891
1892 2008-10-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1893
1894         * builtins.c: Remove MPFR_VERSION_NUM(2,3,0) conditionals.
1895         * doc/install.texi: Bump recommended MPFR to 2.3.2.
1896
1897 2008-10-12  Kenneth Zadeck <zadeck@naturalbridge.com>
1898
1899         PR middle-end/37808
1900         * df-scan.c (df_ref_change_reg_with_loc_1): Added test to make
1901         sure that ref has valid bb.
1902         
1903 2008-10-12  Richard Henderson  <rth@redhat.com>
1904
1905         PR middle-end/37447
1906         * Makefile.in (reload1.o): Depend on EMIT_RTL_H.
1907         * alias.c (value_addr_p, stack_addr_p): Remove.
1908         (nonoverlapping_memrefs_p): Remove IRA special case.
1909         * emit-rtl.c (get_spill_slot_decl, set_mem_attrs_for_spill): New.
1910         * emit-rtl.h (set_mem_attrs_for_spill): Declare.
1911         * reload1.c (alter_reg): Use it.
1912
1913 2008-10-12  Uros Bizjak  <ubizjak@gmail.com>
1914
1915         * config/i386/driver-i386.c (detect_caches_cpuid2): Use array
1916         of registers instead of eax, ebx, ecx and edx.  Use for loop
1917         and check register for non-zero value before the call
1918         to decode_caches_intel.
1919
1920 2008-10-11  Kenneth Zadeck <zadeck@naturalbridge.com>
1921
1922         PR rtl-optimization/37448
1923         * df.h: (df_ref_class): New enum.
1924         (DF_REF_TYPE_NAMES, df_ref_extract): Removed.
1925         (struct df_ref): Replaced with union df_ref_d.
1926         (df_base_ref, df_artificial_ref, df_regular_ref, df_extract_ref):
1927         New members of df_ref_d union.
1928         (DF_REF_REAL_REG, DF_REF_REGNO, DF_REF_REAL_LOC, DF_REF_REG,
1929         DF_REF_LOC, DF_REF_BB, DF_REF_INSN_INFO, DF_REF_INSN,
1930         DF_REF_CLASS, DF_REF_TYPE, DF_REF_CHAIN, DF_REF_ID, DF_REF_FLAGS,
1931         DF_REF_ORDER, DF_REF_IS_ARTIFICIAL, DF_REF_NEXT_REG,
1932         DF_REF_PREV_REG, DF_REF_EXTRACT_WIDTH, DF_REF_EXTRACT_OFFSET,
1933         DF_REF_EXTRACT_MODE): Replaced definition to access union df_ref_d.
1934         (DF_MWS_REG_DEF_P, DF_MWS_REG_USE_P, DF_MWS_TYPE): New macros.
1935         (df_scan_bb_info, df_bb_regno_first_def_find,
1936         df_bb_regno_last_def_find, df_find_def, df_find_use,
1937         df_refs_chain_dump, df_regs_chain_dump, df_ref_debug,
1938         debug_df_ref, df_chain_create, df_chain_unlink, df_chain_copy,
1939         df_ref_create, df_ref_remove, df_compute_accessed_bytes,
1940         df_get_artificial_defs, df_get_artificial_uses, union_defs)
1941         Replaced struct df_ref * with df_ref.
1942         * df-scan.c (df_collection_rec, df_null_ref_rec,
1943         df_ref_chain_delete_du_chain, df_ref_chain_delete, df_install_ref,
1944         df_grow_ref_info, df_ref_create, df_reg_chain_unlink,
1945         df_ref_compress_rec, df_ref_remove, df_ref_chain_delete_du_chain,
1946         df_ref_chain_delete, df_free_collection_rec, df_insn_rescan,
1947         df_reorganize_refs_by_reg_by_reg,
1948         df_reorganize_refs_by_reg_by_insn, df_reorganize_refs_by_reg,
1949         df_ref_change_reg_with_loc_1, df_notes_rescan, df_swap_refs,
1950         df_sort_and_compress_refs, df_install_ref, df_install_refs,
1951         df_ref_record, df_get_conditional_uses, df_get_call_refs,
1952         df_bb_refs_record, df_exit_block_uses_collect,
1953         df_record_exit_block_uses, df_reg_chain_mark,
1954         df_reg_chain_verify_unmarked, df_refs_verify): Replaced struct
1955         df_ref * with df_ref.
1956         (df_ref_record, df_uses_record, df_ref_create_structure): Added
1957         df_ref_class parameter.
1958         (df_scan_problem_data): Added new pools for different types of refs.
1959         (df_scan_free_internal, df_scan_alloc, df_free_ref,
1960         df_ref_create_structure): Processed new ref pools.
1961         (df_scan_start_dump): Added counts of refs and insns.
1962         (df_ref_create, df_notes_rescan, df_def_record_1, df_uses_record,
1963         df_get_call_refs, df_insn_refs_collect, df_bb_refs_collect,
1964         df_entry_block_defs_collect, df_exit_block_uses_collect): Added
1965         code to pass df_ref_class down to ref creation functions.
1966         (df_reg_chain_unlink, df_ref_remove, df_ref_change_reg_with_loc_1,
1967         df_reg_chain_mark): Use macros to hide references to df_refs.
1968         (df_ref_chain_change_bb): Removed.
1969         (df_insn_change_bb): Remove calls to df_ref_insn_change_bb.
1970         (df_ref_equal_p, df_ref_compare, df_ref_create_structure):
1971         Enhanced to understand df_ref union structure.
1972         * fwprop.c (local_ref_killed_between_p, use_killed_between,
1973         all_uses_available_at, update_df, try_fwprop_subst,
1974         forward_propagate_subreg, forward_propagate_and_simplify,
1975         forward_propagate_into, fwprop, fwprop_addr): Replaced struct
1976         df_ref * with df_ref.
1977         (use_killed_between, all_uses_available_at): Use macros to hide
1978         references to df_refs.
1979         * regstat.c (regstat_bb_compute_ri,
1980         regstat_bb_compute_calls_crossed): Replaced struct df_ref * with
1981         df_ref.
1982         * see.c (see_handle_relevant_defs, see_handle_relevant_uses,
1983         see_handle_relevant_refs, see_analyze_one_def,
1984         see_update_relevancy, see_propagate_extensions_to_uses): Replaced
1985         struct df_ref * with df_ref.
1986         * ra-conflict.c (record_one_conflict, clear_reg_in_live,
1987         global_conflicts): Replaced struct df_ref * with df_ref.
1988         * ddg.c (create_ddg_dep_from_intra_loop_link,
1989         add_cross_iteration_register_deps, build_inter_loop_deps):
1990         Replaced struct df_ref * with df_ref.
1991         (create_ddg_dep_from_intra_loop_link,
1992         add_cross_iteration_register_deps): Use macros to hide references
1993         to df_refs.
1994         * auto-inc-dec.c (find_inc, merge_in_block): Replaced struct
1995         df_ref * with df_ref.
1996         * df-core.c (df_bb_regno_first_def_find,
1997         df_bb_regno_last_def_find, df_find_def, df_find_use,
1998         df_refs_chain_dump, df_regs_chain_dump, df_ref_debug,
1999         debug_df_ref): Replaced struct df_ref * with df_ref.
2000         (df_mws_dump, df_ref_debug): Use macros to hide references to df_refs.
2001         * cse.c (cse_extended_basic_block): Replaced struct df_ref * with
2002         df_ref.
2003         * web.c (union_defs, entry_register, replace_ref, web_main):
2004         Replaced struct df_ref * with df_ref.
2005         (union_defs, replace_ref): Use macros to hide references to df_refs.
2006         * global.c (compute_regs_asm_clobbered, build_insn_chain):
2007         Replaced struct df_ref * with df_ref.
2008         * ifcvt.c (dead_or_predicable): Replaced struct df_ref * with df_ref.
2009         * sel-sched-ir.c (maybe_downgrade_id_to_use, setup_id_reg_sets, ):
2010         Replaced struct df_ref * with df_ref.
2011         * ira-lives.c (mark_ref_live, def_conflicts_with_inputs_p,
2012         mark_ref_dead, process_bb_node_lives): Replaced struct df_ref *
2013         with df_ref.
2014         * local-alloc.c (block_alloc): Replaced struct df_ref * with df_ref.
2015         * df-byte-scan.c (df_compute_accessed_bytes_extract,
2016         df_compute_accessed_bytes_strict_low_part,
2017         df_compute_accessed_bytes_subreg, df_compute_accessed_bytes):
2018         Replaced struct df_ref * with df_ref.
2019         (df_compute_accessed_bytes): Use macros to hide references to df_refs.
2020         * init-regs.c (initialize_uninitialized_regs): Replaced struct
2021         df_ref * with df_ref.
2022         * loop-invariant.c (invariant_for_use, hash_invariant_expr_1,
2023         check_dependency, check_dependencies, record_uses): Replaced
2024         struct df_ref * with df_ref.
2025         (invariant_for_use, check_dependency): Use macros to hide
2026         references to df_refs.
2027         * loop-iv.c (iv_analysis_loop_init, iv_get_reaching_def,
2028         get_biv_step_1, get_biv_step, record_iv, iv_analyze_def,
2029         iv_analyze, biv_p): Replaced struct df_ref * with df_ref.
2030         (iv_analysis_loop_init, iv_get_reaching_def): Use macros to hide
2031         references to df_refs.
2032         * ira.c (compute_regs_asm_clobbered): Replaced struct df_ref *
2033         with df_ref.
2034         * combine.c (create_log_links): Replaced struct df_ref * with df_ref.
2035         * df-problems.c (df_rd_bb_local_compute_process_def,
2036         df_lr_bb_local_compute, df_live_bb_local_compute, df_chain_create,
2037         df_chain_unlink_1, df_chain_unlink, df_chain_copy,
2038         df_chain_remove_problem, df_chain_create_bb_process_use,
2039         df_chain_create_bb, df_chain_top_dump, df_chain_bottom_dump,
2040         df_byte_lr_check_regs, df_byte_lr_bb_local_compute,
2041         df_byte_lr_simulate_defs, df_byte_lr_simulate_uses,
2042         df_byte_lr_simulate_artificial_refs_at_top,
2043         df_byte_lr_simulate_artificial_refs_at_end, df_create_unused_note,
2044         df_note_bb_compute, df_note_add_problem, df_simulate_defs,
2045         df_simulate_uses, df_simulate_artificial_refs_at_end,
2046         df_simulate_artificial_refs_at_top): Replaced struct df_ref * with
2047         df_ref.
2048         (df_chain_dump): Use macros to hide references to df_refs.
2049         * config/mips/mips.c (r10k_simplify_address): Replaced struct
2050         df_ref * with df_ref.
2051         * dce.c (mark_nonreg_stores, delete_corresponding_reg_eq_notes,
2052         mark_artificial_uses, mark_reg_dependencies,
2053         byte_dce_process_block): Replaced struct df_ref * with df_ref.
2054
2055 2008-10-11  Eric Botcazou  <ebotcazou@adacore.com>
2056
2057         * tree.h (contains_packed_reference): Mention ARRAY_RANGE_REF in
2058         head comment.
2059         (array_ref_element_size): Likewise.
2060         (array_ref_low_bound): Likewise.
2061         (array_ref_up_bound): Likewise.
2062         * expr.c (contains_packed_reference): Likewise.
2063         (array_ref_element_size): Likewise.
2064         (array_ref_low_bound): Likewise.
2065         (array_ref_up_bound): Likewise.
2066         * tree-ssa-loop-ivopts.c (idx_contains_abnormal_ssa_name_p): Deal
2067         with ARRAY_RANGE_REF.
2068         (idx_find_step): Likewise.
2069         (idx_record_use): Likewise.
2070         (strip_offset_1): Likewise.
2071         (idx_remove_ssa_names): Likewise.
2072
2073 2008-10-11  Uros Bizjak  <ubizjak@gmail.com>
2074             Andi Kleen  <ak@linux.intel.com>
2075
2076         * config/i386/cpuid.h (__cpuid_count): New defines.
2077         * config/i386/driver-i386.c (struct cache_desc): New structure.
2078         (describe_cache): Use struct cache_desc to pass cache descriptions.
2079         (detect_l2_cache): Ditto. Rename from decode_l2_cache.
2080         (detect_caches_amd): Use struct cache_desc to describe caches.
2081         (decode_caches_intel): Use struct cache_desc to pass cache
2082         descriptions.  Update descriptions to match latest (rev -032,
2083         December 2007) CPUID documentation.  Do not check valid bit here.
2084         Check for Xeon MP value 0x49 problems.
2085         (detect_caches_cpuid2): New function, split from detect_caches_intel.
2086         Check valid bit before calling decode_caches_intel.  Detect number
2087         of times to repeat CPUID instruction.
2088         (detect_caches_cpuid4): New function.
2089         (detect_caches_intel): Depending on max_level, call
2090         detect_caches_cpuid2 or detect_caches_cpuid4.  Call detect_l2_cache
2091         only when other methods fail to provide valid L2 cache description.
2092
2093 2008-10-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2094
2095         PR middle-end/37608
2096         * pa.md (call, call_value): Generate an rtx for register r4 and pass
2097         it to PIC call patterns.
2098         (call_symref_pic): Revise pattern to expose PIC register save.  Remove
2099         code generation and attributes from pattern.  Change peephole2 to
2100         split for noreturn case.  Revise split pattern for non noreturn case.
2101         (call_symref_64bit, call_reg_pic, call_reg_64bit, call_val_symref_pic,
2102         call_val_symref_64bit, call_val_reg_pic, call_val_reg_64bit): Likewise.
2103         * pa.c (attr_length_call): Simplify extraction of call rtx.  Add some
2104         asserts.
2105
2106 2008-10-11  David Edelsohn  <edelsohn@gnu.org>
2107
2108         * config/rs6000/rs6000.md (aux_truncdfsf2): Remove TARGET_SINGLE_FLOAT.
2109         (addsf3, subsf3, mulsf3 ! TARGET_POWERPC): Remove TARGET_SINGLE_FLOAT
2110         and fp_type.
2111         (divdf3): Reformat long line.
2112
2113 2008-10-11  Michael J. Eager  <eager@eagercon.com>
2114
2115         * config/rs6000/rs6000.c (rs6000_parse_fpu_option): Interpret
2116         -mfpu options.
2117         (rs6000_handle_option): Process -mfpu options.
2118         * config/rs6000/rs6000.h: (TARGET_XILINX_FPU): New.
2119         (enum fpu_type_t): New.
2120         * config/rs6000/rs6000.md (attr fp_type): New.  Include xfpu.md.
2121         (addsf3, subsf3, mulsf3, adddf3, subdf3, muldf3, trunctfdf2): Set
2122         fp_type.
2123         (floatsisf2): Remove TARGET_SINGLE_FPU condition.
2124         (floatdidf2): Add TARGET_SINGLE_FPU condition.
2125         * config/rs6000/rs6000.opt (-mfpu): New.
2126         (-mxilinx-fpu): New.
2127         * config/rs6000/sysv4.h: (DRIVER_SELF_SPECS): New.
2128         * config/rs6000/xfpu.h: New. Define TARGET_XILINX_FPU.
2129         * config/rs6000/xfpu.md: New. Define Xilinx pipeline.
2130         * gcc/config.gcc: powerpc-xilinx-eabi target: New.
2131         * gcc/doc/invoke.texi (RS/6000 and PowerPC Options): Add -mfpu option.
2132
2133 2008-10-11  Jakub Jelinek  <jakub@redhat.com>
2134
2135         PR target/35760
2136         * config/rs6000/rs6000.c (rs6000_legitimize_address): Only create
2137         LO_SUM on Darwin if mode has just one unit.
2138
2139 2008-10-10  H.J. Lu  <hongjiu.lu@intel.com>
2140
2141         PR debug/37002
2142         * dwarf2out.c (mem_loc_descriptor): Use DRAP for vDRAP which
2143         has been optimized out.
2144
2145 2008-10-10  Richard Sandiford  <rdsandiford@googlemail.com>
2146
2147         * config/sh/sh.h (PREFERRED_RELOAD_CLASS): Test PIC_ADDR_P
2148         instead of PIC_DIRECT_ADDR_P.
2149         (SECONDARY_INPUT_RELOAD_CLASS): Likewise.
2150         (IS_LITERAL_OR_SYMBOLIC_S16_P, IS_LITERAL_OR_SYMBOLIC_U16_P): Delete.
2151         (IS_NON_EXPLICIT_CONSTANT_P): Don't test PIC_OFFSET_P.
2152         (PIC_OFFSET_P): Rename to...
2153         (PCREL_SYMOFF_P): ...this.
2154         (PIC_DIRECT_ADDR_P): Delete.
2155         (MOVI_SHORI_BASE_OPERAND_P): Check PCREL_SYMOFF_P instead of
2156         PIC_OFFSET_P.
2157         (OUTPUT_ADDR_CONST_EXTRA): Don't require unspecs to have a
2158         single argument.  Handle UNSPEC_EXTRACT_S16, UNSPEC_EXTRACT_U16,
2159         UNSPEC_SYMOFF and UNSPEC_PCREL_SYMOFF.
2160         * config/sh/sh.c (print_operand): Remove CONST handling.
2161         (unspec_caller_rtx_p): Rewrite to use split_const and check
2162         the operands of UNSPEC bases.
2163         (fixup_mova): Replace (unspec [(minus A B)] UNSPEC_PIC)
2164         with (unspec [A B] UNSPEC_SYMOFF).
2165         (nonpic_symbol_mentioned_p): Check for UNSPEC_SYMOFF and
2166         UNSPEC_PCREL_SYMOFF.
2167         (sh_secondary_reload): Test PIC_ADDR_P instead of PIC_DIRECT_ADDR_P.
2168         * config/sh/sh.md (UNSPEC_EXTRACT_S16): New unspec.
2169         (UNSPEC_EXTRACT_U16): Likewise.
2170         (UNSPEC_SYMOFF): Likewise.
2171         (UNSPEC_PCREL_SYMOFF): Likewise.
2172         (movsi_const): Use UNSPEC_EXTRACT_*16s to extract 16-bit portions
2173         of constants.
2174         (movsi_const_16bit): Likewise.
2175         (movdi_const, movdi_const_32bit, movdi_const_16bit): Likewise.
2176         (GOTaddr2picreg): Replace (unspec [(minus A (minus B pc))] UNSPEC_PIC)
2177         with (unspec [A B] UNSPEC_PCREL_SYMOFF).
2178         (sym_label2reg): Replace (minus (const (unspec [A] UNSPEC_PIC)) B)
2179         with (unspec [A B] UNSPEC_SYMOFF).
2180         (symPLT_label2reg): Replace (minus A (minus B pc)) with
2181          (unspec [A B] PCREL_UNSPEC_SYMOFF).
2182         * config/sh/constraints.md (Css): Check for an UNSPEC_EXTRACT_S16.
2183         (Csu): Likewise UNSPEC_EXTRACT_U16.
2184         (Csy): Test PIC_ADDR_P instead of PIC_DIRECT_ADDR_P.
2185         (Cpg): Update after changes to IS_NON_EXPLICIT_CONSTANT_P.
2186
2187 2008-10-10  Stepan Kasal  <skasal@redhat.com>
2188
2189         * gcc/doc/invoke.texi (Optimize Options): Fix typo in examples
2190         for loop strip mining and loop blocking.
2191
2192 2008-10-10  Alexandre Oliva  <aoliva@redhat.com>
2193
2194         * fortran/trans-types.c (gfc_get_nodesc_array_type): Don't
2195         vary types depending on debug info.
2196
2197 2008-10-10  Alexandre Oliva  <aoliva@redhat.com>
2198
2199         * c-gimplify.c (c_genericize): Don't refer to DECL_ASSEMBLER_NAME
2200         before ensuring it's already computed.
2201
2202 2008-10-09  Jakub Jelinek  <jakub@redhat.com>
2203
2204         * rtl.h (locator_eq): New decl.
2205         * cfglayout.c (locator_scope): New function.
2206         (insn_scope): Use it.
2207         (locator_eq): New function.
2208         (fixup_reorder_chain): Search for last insn in src bb
2209         that has locator set or first insn in dest bb.  Use
2210         locator_eq instead of == to compare locators.
2211         * cfgrtl.c (cfg_layout_merge_blocks): Likewise.
2212         * cfgcleanup.c (try_forward_edges): Use locator_eq instead of
2213         == to compare locators.
2214
2215         * tree-ssa-live.c (remove_unused_locals): Mark all edge's goto_block
2216         as used.
2217         * gimple-low.c (lower_function_body, lower_gimple_return,
2218         lower_builtin_setjmp): Set gimple_block on the newly created stmts.
2219         * tree-cfg.c (make_cond_expr_edges, make_goto_expr_edges): Only set
2220         goto_block on edges if goto_locus is known.
2221
2222         PR middle-end/37774
2223         * tree.h (get_object_alignment): Declare.
2224         * emit-rtl.c (set_mem_attributes_minus_bitpos): Call
2225         get_object_alignment if needed.
2226         * builtins.c (get_pointer_alignment): Move ADDR_EXPR operand
2227         handling to ...
2228         (get_object_alignment): ... here.  New function.  Try harder to
2229         determine alignment from get_inner_reference returned offset.
2230
2231 2008-10-08  Jakub Jelinek  <jakub@redhat.com>
2232
2233         * graphite.c (gloog): Don't call find_unreachable_blocks
2234         before delte_unreachable_blocks.
2235
2236         * cfgexpand.c (expand_gimple_cond): Convert also goto_block and
2237         goto_locus of true_edge into RTL locator.
2238
2239 2008-10-08  Uros Bizjak  <ubizjak@gmail.com>
2240
2241         * config/i386/i386.md (*jcc_btdi_rex64): Clobber FLAGS_REG.
2242         (*jcc_btdi_mask_rex64): Ditto.
2243         (*jcc_btsi): Ditto.
2244         (*jcc_btsi_mask): Ditto.
2245         (*jcc_btsi_1): Ditto.
2246         (*jcc_btsi_mask_1): Ditto.
2247
2248 2008-10-08  Paul Brook  <paul@codesourcery.com>
2249
2250         * config/arm/bpabi.h (ARM_FUNCTION_PROFILER): Define new EABI
2251         compatible profiler (__gnu_mcount_nc).
2252         (SUBTARGET_FRAME_POINTER_REQUIRED): Define.
2253
2254 2008-10-08  H.J. Lu  <hongjiu.lu@intel.com>
2255
2256         * config/i386/i386.c (initial_ix86_tune_features): Add
2257         X86_TUNE_USE_VECTOR_FP_CONVERTS.
2258         * config/i386/i386.h (ix86_tune_indices): Likewise.
2259         (TARGET_USE_VECTOR_FP_CONVERTS): New.
2260
2261         * config/i386/i386.md: Check TARGET_USE_VECTOR_FP_CONVERTS
2262         instead of (TARGET_USE_VECTOR_CONVERTS || TARGET_GENERIC)
2263         for FP to FP splitters.
2264
2265 2008-10-08  H.J. Lu  <hongjiu.lu@intel.com>
2266
2267         * config/i386/i386.md: Add missing gen_sse2_cvtdq2p to convert
2268         splitter.
2269
2270 2008-10-08  Jakub Jelinek  <jakub@redhat.com>
2271
2272         PR target/36635
2273         PR target/37290
2274         PR rtl-optimization/37341
2275         * cse.c (cse_cc_succs): Add ORIG_BB argument, don't follow edges
2276         to ORIG_BB, pass through ORIG_BB recursively.
2277         (cse_condition_code_reg): Adjust caller.
2278
2279 2008-10-08  Kai Tietz  <kai.tietz@onevision.com>
2280
2281         * sdbout.c (sdbout_one_type): Treat the value type
2282         CONST_DECL for enumerals.
2283
2284 2008-10-07  H.J. Lu  <hongjiu.lu@intel.com>
2285
2286         * config/i386/i386.md: Remove trailing white spaces.
2287
2288 2008-10-07  Kenneth Zadeck <zadeck@naturalbridge.com>
2289
2290         PR rtl-optimization/37448
2291         * alloc-pool.c (struct alloc_pool_descriptor) [elt_size]: New field.
2292         (stuct alloc_pool_descriptor) [created, allocated, current, peak]:
2293         Make unsigned long.
2294         (struct output_info) [count]: Renamed total_created and made
2295         unsigned long.
2296         (struct output_info) [size]: Renamed total_allocated and made
2297         unsigned long.
2298         (create_alloc_pool, empty_alloc_pool, pool_alloc, pool_free):
2299         Properly keep track of desc->size.
2300         (print_statistics, dump_alloc_pool_statistics): Enhance the
2301         printing of statistics to print the number of elements and to use
2302         unsigned longs.
2303         
2304 2008-10-07  Jakub Jelinek  <jakub@redhat.com>
2305
2306         PR middle-end/37576
2307         * opts.h (CL_SAVE): Move up to flags range.
2308         (CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_TARGET,
2309         CL_COMMON): Renumber.
2310         (CL_MIN_OPTION_CLASS): Set to CL_PARAMS.
2311         * opts.c (common_handle_option): Revert last change.
2312
2313 2008-10-07  H.J. Lu  <hongjiu.lu@intel.com>
2314
2315         * config/i386/i386-protos.h (ix86_schedule): New.
2316
2317         * config/i386/i386.c (ix86_schedule): New.
2318         (override_options): Add schedule to processor_alias_table.  Set
2319         ix86_schedule from the schedule field in processor_alias_table.
2320         (ix86_function_specific_save): Save ix86_schedule.
2321         (ix86_function_specific_restore): Restore ix86_schedule.
2322
2323         * config/i386/i386.md (cpu): Map to ix86_schedule instead of
2324         ix86_tune.  Add none and remove i386, i486, pentium4, nocona
2325         and generic32.
2326
2327         * config/i386/i386.opt: Add schedule.
2328
2329         * config/i386/ppro.md: Remove generic32.
2330
2331 2008-10-07  Simon Martin  <simartin@users.sourceforge.net>
2332
2333         PR c/35437
2334         * expr.c (count_type_elements): Handle ERROR_MARK.
2335
2336 2008-10-07  Jakub Jelinek  <jakub@redhat.com>
2337
2338         PR debug/29609
2339         PR debug/36690
2340         PR debug/37616
2341         * basic-block.h (struct edge_def): Add goto_block field.
2342         * cfglayout.c (fixup_reorder_chain): Ensure that there is at least
2343         one insn with locus corresponding to edge's goto_locus if !optimize.
2344         * profile.c (branch_prob): Copy edge's goto_block.
2345         * cfgrtl.c (force_nonfallthru_and_redirect): Use goto_locus for
2346         emitted jumps.
2347         (cfg_layout_merge_blocks): Emit a nop with edge's goto_locus
2348         locator in between the merged basic blocks if !optimize and needed.
2349         * cfgexpand.c (expand_gimple_cond): Convert goto_block and
2350         goto_locus into RTL locator.  For unconditional jump use that
2351         locator for the jump insn.
2352         (expand_gimple_cond): Convert goto_block and goto_locus into
2353         RTL locator for all remaining edges.  For unconditional jump
2354         use that locator for the jump insn.
2355         * cfgcleanup.c (try_forward_edges): Avoid the optimization if
2356         there is more than one edge or insn locator along the forwarding
2357         edges and !optimize.  If there is just one, set e->goto_locus.
2358         * tree-cfg.c (make_cond_expr_edges, make_goto_expr_edges): Set also
2359         edge's goto_block.
2360         (move_block_to_fn): Adjust edge's goto_block.
2361
2362 2008-10-07  H.J. Lu  <hongjiu.lu@intel.com>
2363
2364         PR middle-end/37731
2365         * expmed.c (expand_mult): Properly check DImode constant in
2366         CONST_DOUBLE.
2367
2368 2008-10-07  Jakub Jelinek  <jakub@redhat.com>
2369
2370         PR debug/37738
2371         * dwarf2out.c (common_block_die_table): New variable.
2372         (common_block_die_table_hash, common_block_die_table_eq): New
2373         functions.
2374         (gen_variable_die): Look up a DW_TAG_common_block die for a particular
2375         COMMON block in the current scope rather than globally.  Optimize
2376         DW_OP_addr SYMBOL_REF DW_OP_plus_uconst off into
2377         DW_OP_addr SYMBOL_REF+off.
2378
2379 2008-10-07  Eric Botcazou  <ebotcazou@adacore.com>
2380
2381         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p) <VIEW_CONVERT_EXPR>:
2382         Return true for non-addressable GIMPLE operands.
2383
2384 2008-10-07  H.J. Lu  <hongjiu.lu@intel.com>
2385
2386         PR target/24765
2387         * config/i386/i386.c (initial_ix86_tune_features): Remove
2388         X86_TUNE_USE_BIT_TEST.
2389         * config/i386/i386.h (ix86_tune_indices): Likewise.
2390         (TARGET_USE_BIT_TEST): Removed.
2391
2392 2008-10-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
2393
2394         * config.gcc (arm*-*-*): Add aapcs-linux to supported ABIs.
2395
2396 2008-10-06  Adam Nemet  <anemet@caviumnetworks.com>
2397
2398         * config/mips/mips.md (mulsi3_mul3, muldi3_mul3): Merge these ...
2399         (mul<mode>3_mul3): ... into this new template.
2400
2401 2008-10-06  Aldy Hernandez  <aldyh@redhat.com>
2402
2403         * gimplify.c (gimplify_arg): Add location argument.  Use it.
2404         (gimplify_call_expr): Pass location to gimplify_arg.
2405         (gimplify_modify_expr_to_memcpy): Same.
2406         (gimplify_modify_expr_to_memset): Same.
2407
2408 2008-10-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2409
2410         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
2411         Update calls to build_unary_op and build_indirect_ref for location
2412         changes.
2413
2414 2008-10-06  Aldy Hernandez  <aldyh@redhat.com>
2415
2416         build_modify_expr.
2417         * c-decl.c (finish_decl): Pass input_location to build_unary_op.
2418         * c-typeck.c (array_to_pointer_conversion): Pass location to
2419         build_unary_op.
2420         (function_to_pointer_conversion): Use error_at and warning_at.
2421         (build_indirect_ref): Same.
2422         (build_array_ref): Pass location to build_binary_op.
2423         (parser_build_unary_op): Do not set location after calling
2424         build_unary_op.
2425         (build_unary_op): Add location argument.  Use it throughout.  Set
2426         EXPR_LOCATION before returning new tree.
2427         (build_modify_expr): Same.
2428         (build_binary_op): Use location throughout.  Set EXPR_LOCATION before
2429         returning node.
2430         * c-omp.c (c_finish_omp_atomic): Pass location to build_unary_op,
2431         build_indirect_ref, build_modify_expr.
2432         (c_finish_omp_for): Same.  Use error_at instead of error.
2433         * c-common.c (c_common_truthvalue_conversion): Pass location to
2434         build_unary_op.
2435         (warn_for_div_by_zero): Add location argument.
2436         * c-common.h: Add argument to build_modify_expr, build_indirect_ref,
2437         build_unary_op, warn_for_div_by_zero.
2438         * c-parser.c (c_parser_typeof_specifier): Use
2439         protected_set_expr_location.
2440         (c_parser_statement_after_labels): Same.
2441         (c_parser_condition): Same.
2442         (c_parser_expr_no_commas): Pass correct location to build_modify_expr.
2443         (c_parser_conditional_expression): Use protected_set_expr_location.
2444         (c_parser_unary_expression): Pass location to build_indirect_ref.
2445         (c_parser_postfix_expression_after_primary): Pass location to
2446         build_indirect_ref, build_unary_op.
2447         (c_parser_omp_for_loop): Set the increment expression's EXPR_LOCATION.
2448
2449 2008-10-06  Joshua Kinard  <kumba@gentoo.org>
2450
2451         * doc/invoke.texi: List r1x000 family under the -march MIPS option.
2452         * config/mips/mips.h (PROCESSOR_R10000): New processor_type.
2453         * config/mips/mips.c (mips_cpu_info_table): Add r10000, r12000,
2454         r14000 and r16000.
2455         (mips_rtx_cost_data): Add a PROCESSOR_R10000 entry.
2456         (mips_issue_rate): Handle PROCESSOR_R10000.
2457         * config/mips/mips.md (cpu): Add r10000.
2458         Include r10000.md.
2459         * config/mips/10000.md: New file.
2460
2461 2008-10-06  Richard Sandiford  <rdsandiford@googlemail.com>
2462
2463         * config/rs6000/rs6000-protos.h (rs6000_find_base_term): Declare.
2464         * config/rs6000/rs6000.h (FIND_BASE_TERM): New macro.
2465         * config/rs6000/rs6000.c (rs6000_find_base_term): New function.
2466
2467 2008-10-06  Richard Sandiford  <rdsandiford@googlemail.com>
2468
2469         * config/darwin-protos.h (machopic_function_base_name): Delete.
2470         (machopic_function_base_sym): Likewise.
2471         (machopic_gen_offset): Declare.
2472         * config/darwin.h (MACHOPIC_FUNCTION_BASE_NAME): New macro.
2473         (ASM_OUTPUT_LABELREF): Use it instead of a hard-coded string constant.
2474         * config/darwin.c (machopic_function_base_name): Delete.
2475         (machopic_function_base_sym): Likewise.
2476         (gen_pic_offset): Rename to...
2477         (machopic_gen_offset): ...this and remove the pic_base argument.
2478         Instead use MACHO_DYNAMIC_NO_PIC_P to decide whether a PIC offset
2479         is needed.  Create an UNSPEC_MACHOPIC_OFFSET if so, and set
2480         crtl->uses_pic_offset_table.
2481         (machopic_indirect_data_reference): Use new machopic_gen_offset
2482         interface.
2483         (machopic_legitimize_pic_address): Likewise.
2484         (machopic_operand_p): Check for UNSPEC_MACHOPIC_OFFSET.
2485
2486         * config/i386/darwin.h (GOT_SYMBOL_NAME): Use
2487         MACHOPIC_FUNCTION_BASE_NAME instead of machopic_function_base_name.
2488         * config/i386/i386.c (output_set_got): Likewise.
2489         (darwin_local_data_pic): Check for an UNSPEC_MACHOPIC_OFFSET
2490         instead of a MINUS.
2491         (legitimate_pic_operand_p): Handle UNSPEC_MACHOPIC_OFFSET.
2492         (legitimate_address_p): Likewise.
2493         (output_pic_addr_const): Likewise.
2494         (output_addr_const_extra): Likewise.
2495         (ix86_delegitimize_address): Expect darwin_local_data_pic to
2496         match an UNSPEC rather than a MINUS.
2497         * config/i386/i386.md (UNSPEC_MACHOPIC_OFFSET): Define.
2498         (builtin_setjmp_receiver): Use machopic_gen_offset.
2499         * config/i386/predicates.md (pic_symbolic_operand): Handle
2500         UNSPEC_MACHOPIC_OFFSET.
2501
2502         * config/rs6000/rs6000.c (rs6000_legitimize_reload_address):
2503         Use machopic_gen_offset and machopic_operand_p.
2504         (rs6000_output_addr_const_extra): Handle UNSPEC_MACHOPIC_OFFSET.
2505         (rs6000_emit_prologue): Use MACHOPIC_FUNCTION_BASE_NAME.
2506         * config/rs6000/rs6000.md (UNSPEC_MACHOPIC_OFFSET): Define.
2507         (builtin_setjmp_receiver): Use MACHOPIC_FUNCTION_BASE_NAME.
2508         Set crtl->uses_pic_offset_table.
2509
2510 2008-10-06  Richard Sandiford  <rdsandiford@googlemail.com>
2511
2512         * config/rs6000/rs6000-protos.h (rs6000_output_addr_const_extra):
2513         Declare.
2514         * config/rs6000/rs6000.h (OUTPUT_ADDR_CONST_EXTRA): New macro.
2515         * config/rs6000/rs6000.md (UNSPEC_TOCREL): New constant.
2516         * config/rs6000/rs6000.c (constant_pool_expr_1): Delete.
2517         (constant_pool_expr_p): Use split_const and check the base.
2518         (toc_relative_expr_p): Likewise, checking for an UNSPEC_TOCREL
2519         instead of a MINUS.
2520         (legitimate_constant_pool_address_p): Check toc_relative_p
2521         instead of constant_pool_expr_p.
2522         (print_operand_address): Always use output_addr_const for
2523         constant pool addresses.
2524         (rs6000_output_addr_const_extra): New function.
2525         (create_TOC_reference): Create an UNSPEC_TOCREL instead of a MINUS.
2526
2527 2008-10-06  Vladimir Makarov  <vmakarov@redhat.com>
2528
2529         PR middle-end/37535
2530
2531         * ira-lives.c (mark_reg_live, mark_reg_dead): New functions.
2532         (mark_ref_live, mark_ref_dead): Use them.
2533         (def_conflicts_with_inputs_p): Remove.
2534         (mark_early_clobbers): New function.
2535         (process_bb_node_lives): Call preprocess_constraints and
2536         mark_early_clobbers.
2537
2538         * doc/rtx.texi (clobber): Change how RA deals with clobbers.
2539
2540 2008-10-06  Danny Smith  <dannysmith@users.sourceforge.net>
2541
2542         * config/i386/mingw32.h (REAL_LIBGCC_SPEC): Add thread cleanup
2543         lib with -mthread switch.
2544
2545 2008-10-05  Dodji Seketeli  <dodji@redhat.com>
2546
2547         PR c++/37410
2548         * dwarf2out.c (dwarf2out_imported_module_or_decl): Split this
2549         function in two, making it call a new and reusable
2550         dwarf2out_imported_module_or_decl() that takes the containing
2551         BLOCK of the declaration in argument.
2552         (dwarf2out_imported_module_or_decl_real): New function.
2553         (decls_for_scope, gen_decl_die, dwarf2out_decl): Take
2554         IMPORTED_DECL in account.
2555         * tree.def: Added IMPORTED_DECL node type.
2556         * tree.h: Added accessors for IMPORTED_DECL nodes.
2557         * tree.c (init_ttree): Initialise IMPORTED_DECL node type.
2558
2559 2008-10-05  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
2560
2561         * doc/gimple.texi: Fix some typos, wrap some long lines,
2562         fix some broken wraps with continuations.
2563         * tree-ssa-reassoc.c: Fix comment typos.
2564
2565 2000-10-04  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2566
2567         PR target/37603
2568         * pa.c (legitimize_pic_address): Force function labels to memory in
2569         word mode.
2570
2571 2008-10-04  Anton Blanchard  <anton@samba.org>
2572
2573         * config/rs6000/rs6000.c (rs6000_emit_sync): Use gen_lwsync().
2574         (rs6000_split_atomic_op): Same.
2575         (rs6000_split_compare_and_swap): Same.
2576         (rs6000_split_compare_and_swapqhi): Same.
2577
2578 2008-10-04  Richard Guenther  <rguenther@suse.de>
2579
2580         * tree-ssa-sccvn.c (vn_reference_op_eq): Use types_compatible_p
2581         instead of pointer equality.
2582         (vn_nary_op_eq): Likewise.
2583
2584 2008-10-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2585
2586         * config/rs6000/rs6000.md (fseldfsf4): Add TARGET_SINGLE_FLOAT 
2587         condition.
2588         (fselsfdf4): Make condition on "TARGET_HARD_FLOAT && TARGET_FPRS &&
2589         TARGET_DOUBLE_FLOAT && TARGET_SINGLE_FLOAT".
2590
2591 2008-10-03  Danny Smith  <dannysmith@users.sourceforge.net>
2592
2593         * config/i386/winnt.c (i386_pe_strip_name_encoding_full):
2594         Revert previous change.
2595
2596 2008-10-03  Tom Tromey  <tromey@redhat.com>
2597
2598         * stringpool.c (ggc_alloc_string): Terminate string.
2599
2600 2008-10-03  Jakub Jelinek  <jakub@redhat.com>
2601
2602         * gimplify.c (gimplify_function_tree): For -finstrument-functions
2603         use gimple_bind_{,set_}block instead of gimple_{,set_}block.
2604         * gimple.h (gimple_bind_set_block): Allow second argument to be NULL.
2605
2606         PR debug/37726
2607         * gimplify.c (declare_vars): Use gimple_bind_block instead of
2608         gimple_block.
2609
2610 2008-10-03  Pascal Obry  <obry@adacore.com>
2611
2612         * gcov.c (create_file_names): Properly handle UNIX and DOS
2613         directory separators.
2614         (make_gcov_file_name): Likewise + convert the ':' DOS drive
2615         separator to '~' to ensure clean filenames on Windows.
2616
2617 2008-10-02  Danny Smith  <dannysmith@users.sourceforge.net>
2618
2619         * config/i386/winnt.c (i386_pe_strip_name_encoding_full):
2620         Add a null terminator to the stripped name.
2621
2622 2008-10-02  David Edelsohn  <edelsohn@gnu.org>
2623
2624         * config/rs6000/rs6000.c (USE_FP_FOR_ARG_P): Revert
2625         TARGET_DOUBLE_FLOAT, TARGET_SINGLE_FLOAT.
2626         (function_arg_advance): Condition on TARGET_DOUBLE_FLOAT,
2627         TARGET_SINGLE_FLOAT.  Revert SCALAR_FLOAT_MODE_P condition.
2628         (function_arg): Condition on TARGET_DOUBLE_FLOAT, TARGET_SINGLE_FLOAT.
2629         (rs6000_function_value): Revert TARGET_DOUBLE_FLOAT,
2630         TARGET_SINGLE_FLOAT.
2631
2632 2008-10-02  Daniel Jacobowitz  <dan@codesourcery.com>
2633
2634         * builtins.c (fold_builtin_pow): Check for 0 ** NEGATIVE.
2635
2636 2008-10-02  Richard Guenther  <rguenther@suse.de>
2637
2638         PR middle-end/37713
2639         * tree-ssa.c (useless_type_conversion_p_1): For COMPLEX_TYPE
2640         and VECTOR_TYPE recurse with useless_type_conversion_p which
2641         properly handles void pointer conversion.
2642
2643 2008-10-02  Danny Smith  <dannysmith@users.sourceforge.net>  
2644
2645         PR target/37528
2646         * config/i386/mingw32.h (LIBGCC_SPEC) : Replace with ..
2647         (REAL_LIBGCC_SPEC): New.  Always include -lgcc.
2648
2649 2008-10-01  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2650
2651         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
2652         Handle ALTIVEC_BUILTIN_VEC_SPLATS, ALTIVEC_BUILTIN_VEC_PROMOTE,
2653         ALTIVEC_BUILTIN_VEC_EXTRACT, and ALTIVEC_BUILTIN_VEC_INSERT specially,
2654         they translate to non builtins.
2655         * config/rs6000/rs6000.c (altivec_init_builtins): Add new variable
2656         opaque_ftype_opaque.  Define builtins __builtin_vec_splats,
2657         __builtin_vec_promote, __builtin_vec_extract, and
2658         __builtin_vec_insert.
2659         * config/rs6000/rs6000.h (enum rs6000_builtins): Add
2660         ALTIVEC_BUILTIN_VEC_EXTRACT, ALTIVEC_BUILTIN_VEC_PROMOTE,
2661         ALTIVEC_BUILTIN_VEC_INSERT, and ALTIVEC_BUILTIN_VEC_SPLATS.
2662         * config/rs6000/altivec.h (vec_extract): Define
2663         (vec_insert): Define.
2664         (vec_splats): Define.
2665         (vec_promote): Define.
2666
2667 2008-10-01  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2668             Yukishige Shibata  <shibata@rd.scei.sony.co.jp>
2669             Trevor Smigiel  <Trevor_Smigiel@playstation.sony.com>
2670
2671         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add Cell
2672         Altivec intrinsics.
2673         * config/rs6000/rs6000.c (altivec_expand_lv_builtin): Delete
2674         prototype.  Add new parameter, blk.
2675         Use BLKmode for the MEM if blk is true.
2676         (altivec_expand_builtin): Handle ALTIVEC_BUILTIN_STVLX,
2677         ALTIVEC_BUILTIN_STVLXL, ALTIVEC_BUILTIN_STVRX, and
2678         ALTIVEC_BUILTIN_STVRXL.
2679         Update usage of altivec_expand_lv_builtin.
2680         Handle ALTIVEC_BUILTIN_LVLX, ALTIVEC_BUILTIN_LVLXL,
2681         ALTIVEC_BUILTIN_LVRX, and ALTIVEC_BUILTIN_LVRXL.
2682         (altivec_init_builtins): If compiling for the Cell, also define the
2683         cell VMX builtins.
2684         * config/rs6000/rs6000.h (rs6000_builtins): Define
2685         ALTIVEC_BUILTIN_LVLX, ALTIVEC_BUILTIN_LVLXL, ALTIVEC_BUILTIN_LVRX,
2686         ALTIVEC_BUILTIN_LVRXL, ALTIVEC_BUILTIN_STVLX, ALTIVEC_BUILTIN_STVLXL,
2687         ALTIVEC_BUILTIN_STVRX, ALTIVEC_BUILTIN_STVRXL,
2688         ALTIVEC_BUILTIN_VEC_LVLX, ALTIVEC_BUILTIN_VEC_LVLXL,
2689         ALTIVEC_BUILTIN_VEC_LVRX, ALTIVEC_BUILTIN_VEC_LVRXL,
2690         ALTIVEC_BUILTIN_VEC_STVLX, ALTIVEC_BUILTIN_VEC_STVLXL,
2691         ALTIVEC_BUILTIN_VEC_STVRX, and ALTIVEC_BUILTIN_VEC_STVRXL.
2692         * config/rs6000/altivec.md (define_constants): Define UNSPEC_LVLX,
2693         UNSPEC_LVLXL, UNSPEC_LVRX, UNSPEC_LVRXL, UNSPEC_STVLX, UNSPEC_STVLXL,
2694         UNSPEC_STVRX, and UNSPEC_STVRXL.
2695         (altivec_lvlx): New pattern.
2696         (altivec_lvlxl): New pattern.
2697         (altivec_lvrx): New pattern.
2698         (altivec_lvrxl): New pattern.
2699         (altivec_stvlx): New pattern.
2700         (altivec_stvlxl): New pattern.
2701         (altivec_stvrx): New pattern.
2702         (altivec_stvrxl): New pattern.
2703         * config/rs6000/altivec.h (vec_lvlx): Define if PPU is defined.
2704         (vec_lvlxl): Likewise.
2705         (vec_lvrx): Define if PPU is defined.
2706         (vec_lvrxl): Likewise.
2707         (vec_stvlx): Define if PPU is defined.
2708         (vec_stvlxl): Likewise.
2709         (vec_stvrx): Define if PPU is defined.
2710         (vec_stvrxl): Likewise.
2711
2712 2008-10-01  Geert Bosch  <bosch@adacore.com>
2713
2714         * tree.c (contains_placeholder_p): Return 0 for a SAVE_EXPR.
2715
2716 2008-10-01  Richard Guenther  <rguenther@suse.de>
2717
2718         PR tree-optimization/37617
2719         * tree-ssa-pre.c (create_expression_by_pieces): During FRE
2720         do not add to the NEW_SETS.
2721
2722 2008-10-01  Richard Guenther  <rguenther@suse.de>
2723
2724         PR middle-end/37285
2725         * tree-vrp.c (execute_vrp): If we optimized away the default
2726         case make sure to promote the label that got in place of it
2727         to a default case label.
2728
2729 2008-10-01  Richard Henderson  <rth@redhat.com>
2730
2731         PR tree-opt/35737
2732         * tree-complex.c (set_component_ssa_name): Don't optimize
2733         is_gimple_min_invariant values with ssa_names in abnormal phis.
2734
2735 2008-09-30  Paolo Bonzini  <bonzini@gnu.org>
2736
2737         PR tree-optimization/37662
2738         * tree-ssa-ccp.c (fold_gimple_assign): Invert the operands of a
2739         commutative binary operation if they are in the wrong order and
2740         fold_build2 produces non-GIMPLE.
2741
2742 2008-09-30  Jakub Jelinek  <jakub@redhat.com>
2743
2744         PR tree-optimization/37662
2745         PR tree-optimization/37663
2746         * tree-vrp.c (simplify_truth_ops_using_ranges): Don't call
2747         get_value_range with non-SSA_NAME.  Don't assert operands have been
2748         folded, instead just bail out.
2749
2750 2008-09-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2751
2752         * config/rs6000/rs6000.md (fnmadds combiner): Revert typo.
2753
2754 2008-09-30  Richard Guenther  <rguenther@suse.de>
2755
2756         PR middle-end/37491
2757         * tree-vect-transform.c (vect_create_data_ref_ptr): Properly
2758         build restrict-qualified pointers.
2759         (vectorizable_store): Move alias check later.
2760         (vectorizable_load): Likewise.
2761
2762 2008-09-30  Paolo Bonzini  <bonzini@gnu.org>
2763
2764         * c-common.c (empty_if_body_warning): Remove.
2765         * c-common.h (empty_if_body_warning): Remove.
2766         * c-parser.c (c_parser_if_body, c_parser_else_body): Implement
2767         here the -Wempty-body warning for `if' and `else' statements.
2768         * c-typeck.c (c_finish_if_stmt): Do not call empty_body_warning.
2769
2770 2008-09-29  H.J. Lu  <hongjiu.lu@intel.com>
2771
2772         * config/i386/i386.opt: Add msse2avx.
2773
2774         * config/i386/linux.h (ASM_SPEC): New.  Support -msse2avx.
2775         * config/i386/linux64.h (ASM_SPEC): Likewise.
2776
2777         * doc/invoke.texi: Document -msse2avx.
2778
2779 2008-09-29  Eric Botcazou  <ebotcazou@adacore.com>
2780
2781         * dwarf2out.c (constant_size): Use HOST_WIDE_INT in parameter type.
2782
2783 2008-09-29  Joseph Myers  <joseph@codesourcery.com>
2784
2785         * ifcvt.c (noce_emit_store_flag): If using condition from original
2786         jump, reverse it if if_info->cond was reversed.
2787
2788 2008-09-29  Eric Botcazou  <ebotcazou@adacore.com>
2789
2790         * expr.c (expand_expr_real_1) <normal_inner_ref>: Force op0 to
2791         non-constant memory if it cannot be forced to constant memory.
2792         Overhaul surrounding code and factor out common condition.
2793
2794 2008-09-29  Jeff Law <law@redhat.com>
2795
2796         * reload1.c (alter_reg): Add missing curly braces.
2797
2798 2008-09-29  Michael J. Eager  <eager@eagercon.com>
2799
2800         * config/rs6000/predicates.md (easy_fp_constant): Single FP consts
2801         are easy.
2802         * config/rs6000/rs6000.c (rs6000_override_options): Move
2803         rs6000_init_hard_regno_mode_ok after all options changed.
2804         Set rs6000_single_float, rs6000_double_float if TARGET_HARD_FLOAT.
2805         (rs6000_handle_option): Process -msingle-float, -mdouble-float,
2806         -msimple-fpu flags.  Add warning messages if single FP not configured.
2807         (rs6000_file_start): Output gnu_attribute for single-float.
2808         (legitimate_lo_sum_address_p): Condition on TARGET_DOUBLE_FLOAT.
2809         (rs6000_legitimize_address): Likewise.
2810         (rs6000_legitimize_reload_address): Likewise.
2811         (rs6000_emit_move): Condition on TARGET_DOUBLE_FLOAT,
2812         TARGET_SINGLE_FLOAT.
2813         (function_arg_advance): Likewise (partial conversion).
2814         (setup_incoming_varargs): Condition on TARGET_DOUBLE_FLOAT.
2815         (rs6000_gimplify_va_arg): Condition on TARGET_DOUBLE_FLOAT,
2816         TARGET_SINGLE_FLOAT.
2817         (rs6000_split_multireg_move): Condition on TARGET_DOUBLE_FLOAT.
2818         (rs6000_emit_prologue): Likewise.
2819         (rs6000_function_value): Condition on TARGET_DOUBLE_FLOAT,
2820         TARGET_SINGLE_FLOAT.
2821         (rs6000_libcall_value): Likewise.
2822         * config/rs6000/rs6000.h (TARGET_SINGLE_FLOAT): New default to 1.
2823         (TARGET_DOUBLE_FLOAT): New default to 1
2824         (TARGET_SIMPLE_FPU): New default to 0
2825         (TARGET_SINGLE_FPU): New default to 0
2826         (TARGET_SINGLE_FLOAT_MODE): New.
2827         (TARGET_DOUBLE_FLOAT_MODE): New.
2828         * config/rs6000/singlefp.h: New; redefine TARGET_SINGLE_FLOAT,
2829         TARGET_DOUBLE_FLOAT, TARGET_SIMPLE_FPU, TARGET_SINGLE_FPU,
2830         UNITS_PER_FP_WORD
2831         * config/rs6000/rs6000.md (define_mode_iterator): Condition on
2832         TARGET_DOUBLE_FLOAT, TARGET_SINGLE_FLOAT.
2833         (extendsfdf2, extendsfdf2_fpr, truncdfsf2, truncdfsf2_fpr,
2834         copysigndf3,fseldfsf4, negdf2, negdf2_fpr, absdf2, absdf2_fpr,
2835         nabsdf2_fpr, adddf3, adddf3_fpr, subdf3, subdf3_fpr, muldf3,
2836         muldf3_fpr, divdf3, divdf3_fpr, sqrtdf2, smaxdf3, smindf3,
2837         movdfcc, *fseldfdf4, floatsidf2, *floatsidf2_internal,
2838         floatunssidf2, *floatunssidf2_internal, fix_truncdfsi2,
2839         *fix_truncdfsi2_internal, fix_truncdfsi2_internal_gfxopt,
2840         fix_truncdfsi2_mfpgpr, fctiwz, btruncdf2, ceildf2, floordf2,
2841         rounddf2, floatdidf2, floatsidf_ppc64_mfpgpr, floatsidf_ppc64,
2842         floatunssidf_ppc64, fix_truncdfdi2, movdf_hardfloat32,
2843         movdf_hardfloat64_mfpgpr, movdf_hardfloat64, extenddftf2_fprs,
2844         extenddftf2_internal, trunctfdf2_internal2, fix_trunc_helper,
2845         abstf2_internal, movdf_update1, movdf_update2, cmpdf_internal1,
2846         cmptf_internal1, *cmptf_internal2): Condition on
2847         TARGET_DOUBLE_FLOAT.
2848         (aux_truncdfsf2, negsf2, *negsf2, abssf2, *abssf2, addsf3, subsf3,
2849         mulsf3, divsf3, sqrtsf2, copysignsf3, smaxsf3, sminsf3, movsfcc,
2850         *fselsfsf4, fixuns_truncsfsi2, fix_truncsfsi2, floatunssisf2,
2851         btruncsf2, ceilsf2, floorsf2, roundsf2, floatdisf2_internal1,
2852         floatdisf2_internal2, *movsf_hardfloat, trunctfsf2_fprs,
2853         *movsf_update1, *movsf_update2, *cmpsf_internal1): Condition on
2854         TARGET_SINGLE_FLOAT.
2855         (divsf3, sqrtsf2, divdf3, divdf3_fpr): Condition on TARGET_SIMPLE_FPU.
2856         * config/rs6000/rs6000.opt (-msingle-float): New.
2857         (-mdouble-float): New.
2858         (-msimple-fpu): New.
2859         * doc/invoke.texi (RS/6000 and PowerPC Options): Add
2860         -msingle-float, -mdouble-float, -msimple-fpu options.
2861         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Set
2862         _SOFT_DOUBLE for -msingle-float.
2863         * config.gcc: New config for target=powerpc-xilinx-eabi.
2864
2865 2008-09-29  Tobias Grosser  <grosser@fim.uni-passau.de>
2866
2867         * graphite.c (dot_all_scops_1): Remove unused checks. SCoPs always
2868         have exit and entry.
2869         (new_scop): Take entry and exit edge to define new SCoP.
2870         (sd_region_p): New structure used during SCoP detection.
2871         (move_scops): Delete.
2872         (move_sd_regions): New.
2873         (scopdet_info): Change the definition from edges back to basic_blocks.
2874         (scopdet_edge_info):  Work on basic_blocks and rename to
2875         scopdet_basic_block_info.
2876         (split_difficult_bb): At the moment removed. We should later
2877         add it at another place.
2878         (build_scops_1): Work on basic_blocks.
2879         (bb_in_sd_region): New.
2880         (find_single_entry_edge): New.
2881         (find_single_exit_edge): New.
2882         (create_single_entry_edge): New.
2883         (sd_region_without_exit): New.
2884         (create_single_exit_edge): New.
2885         (unmark_exit_edges): New.
2886         (mark_exit_edges): New.
2887         (create_sese_edges): New.
2888         (build_graphite_scops): New.
2889         (build_scops): Make SCoPs SESE.
2890         (limit_scops): Use the new functions.
2891
2892 2008-09-29  Hans-Peter Nilsson  <hp@axis.com>
2893
2894         * config/cris/cris.h (IRA_COVER_CLASSES): Define.
2895
2896 2008-09-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2897
2898         PR target/37640
2899         * config/rs6000/rs6000.c (rs6000_expand_compare_and_swapqhi): Force
2900         address to a register before taking the lower part.
2901
2902 2008-09-28  Kaz Kojima  <kkojima@gcc.gnu.org>
2903
2904         * config/sh/sh.h (OVERRIDE_OPTIONS): Unset flag_dwarf2_cfi_asm
2905         for SHmedia.
2906
2907 2008-09-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2908             Kaushal Kantawala  <kaushal_kantawala@playstation.sony.com>
2909
2910         PR tree-opt/36891
2911         * tree-ssa-loop-im.c (rewrite_reciprocal): Set DECL_GIMPLE_REG_P on
2912         the newly created variable.
2913         Create a VECTOR_CST of all 1s for vector types.
2914
2915 2008-09-28  Eric Botcazou  <ebotcazou@adacore.com>
2916
2917         PR middle-end/36575
2918         * fold-const.c (div_and_round_double) <ROUND_DIV_EXPR>: Fix typo.
2919
2920 2008-09-28  Eric Botcazou  <ebotcazou@adacore.com>
2921
2922         * expmed.c (store_fixed_bit_field): Always use convert_to_mode in
2923         order to convert between modes.
2924         (extract_bit_field_1): Test TRULY_NOOP_TRUNCATION on the right mode.
2925
2926 2008-09-27  Kaz Kojima  <kkojima@gcc.gnu.org>
2927
2928         * config/sh/sh.c (sh_gimplify_va_arg_expr): Use VIEW_CONVERT_EXPR
2929         if needed.
2930
2931 2008-09-26  Vladimir Makarov  <vmakarov@redhat.com>
2932
2933         Revert:
2934         2008-09-25  Vladimir Makarov  <vmakarov@redhat.com>
2935         * ira-lives.c:...
2936         * doc/rtl.texi:...
2937
2938 2008-09-26  Adam Nemet  <anemet@caviumnetworks.com>
2939
2940         * config/mips/mips.h (ISA_HAS_DMUL3, ISA_HAS_BADDU, ISA_HAS_BBIT,
2941         ISA_HAS_CINS, ISA_HAS_EXTS, ISA_HAS_SEQ_SNE, ISA_HAS_POP): Change
2942         them to yield false with MIPS16.
2943
2944 2008-09-26  Jakub Jelinek  <jakub@redhat.com>
2945
2946         PR middle-end/37275
2947         * dwarf2out.c (tls_mem_loc_descriptor): New function.
2948         (mem_loc_descriptor): Use it for MEM.  For PLUS fail if second
2949         mem_loc_descriptor failed.  Accept UNSPEC.
2950         (loc_descriptor): Use tls_mem_loc_descriptor for MEM.  For PARALLEL
2951         fail if one of the loc_descriptor calls for pieces failed.
2952         (loc_descriptor_from_tree_1): Handle even DECL_EXTERNAL __thread vars,
2953         as long as they bind locally.  For COMPONENT_REF, ARRAY_REF etc. fail
2954         if loc_descriptor_from_tree_1 on offset failed.
2955
2956         PR middle-end/37576
2957         * opts.c (common_handle_option): Don't call print_specific_help with
2958         CL_SAVE as first argument.
2959
2960 2008-09-26  Peter O'Gorman  <pogma@thewrittenword.com>
2961             Steve Ellcey  <sje@cup.hp.com>
2962
2963         * configure: Regenerate for new libtool.
2964         * aclocal.m4: Ditto.
2965
2966 2008-09-26  Pat Haugen  <pthaugen@us.ibm.com>
2967
2968         * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Use correct
2969         alias set on MEM when saving stack pointer.
2970         * config/rs6000/rs6000.md (allocate_stack): Likewise
2971
2972 2008-09-26  Dorit Nuzman  <dorit@il.ibm.com>
2973
2974         PR tree-optimization/37574
2975         * tree-vectorizer.c (vect_is_simple_use): Fix indentation.
2976         * tree-vect-transform.c (vect_get_constant_vectors): Use vectype
2977         instead of vector_type for constants. Take computation out of loop.
2978         (vect_get_vec_def_for_operand): Use only vectype for constant case,
2979         and use only vector_type for invariant case.
2980         (get_initial_def_for_reduction): Use vectype instead of vector_type.
2981
2982 2008-09-25  Jakub Jelinek  <jakub@redhat.com>
2983
2984         PR c/37645
2985         * c-common.c (handle_weakref_attribute): Ignore the attribute unless
2986         the decl is a VAR_DECL or FUNCTION_DECL.
2987
2988 2008-09-25  Vladimir Makarov  <vmakarov@redhat.com>
2989
2990         PR middle-end/37535
2991         * ira-lives.c (mark_reg_live, mark_reg_dead): New functions.
2992         (mark_ref_live, mark_ref_dead): Use them.
2993         (def_conflicts_with_inputs_p): Remove.
2994         (mark_early_clobbers): New function.
2995         (process_bb_node_lives): Call preprocess_constraints and
2996         mark_early_clobbers.
2997
2998         * doc/rtl.texi (clobber): Change how RA deals with clobbers.
2999
3000 2008-09-25  Vladimir Makarov  <vmakarov@redhat.com>
3001
3002         PR middle-end/37448
3003         * ira-int.h (IRA_ALLOCNO_TEMP): Rename to ALLOCNO_TEMP.
3004         (ira_compress_allocno_live_ranges): New prototype.
3005
3006         * ira-color.c: Rename IRA_ALLOCNO_TEMP to ALLOCNO_TEMP.
3007         (coalesced_allocnos_living_at_program_points): New.
3008         (coalesced_allocnos_live_at_points_p,
3009         set_coalesced_allocnos_live_points): New functions.
3010         (coalesce_spill_slots): Rewrite.
3011         
3012         * ira-lives.c (remove_some_program_points_and_update_live_ranges,
3013         ira_compress_allocno_live_ranges): New functions.
3014
3015         * ira-build.c (ira_flattening): Call
3016         ira_compress_allocno_live_ranges.
3017         (ira_build): Ditto.
3018
3019 2008-09-25  H.J. Lu  <hongjiu.lu@intel.com>
3020
3021         * config/i386/i386.md: Check cmp/branch fuse for cmp peephole
3022         optimization.
3023
3024 2008-09-25  Richard Sandiford  <rdsandiford@googlemail.com>
3025
3026         * combine.c (make_compound_operation): Handle the 'E' format.
3027         (count_rtxs): Likewise.
3028         (update_table_tick): Likewise.
3029         (get_last_value_validate): Likewise.
3030
3031 2008-09-25  Eric Botcazou  <ebotcazou@adacore.com>
3032
3033         * dbxout.c (dbxout_parms): Fetch the inner REG inside a PARALLEL.
3034
3035 2008-09-25 Sergei Dyshel <sergeid@il.ibm.com>
3036
3037         * matrix-reorg.c (transform_allocation_sites): Initializers 
3038         added to avoid the warning.
3039
3040 2008-09-25  Martin Jambor  <mjambor@suse.cz>
3041
3042         * cgraph.c (free_nodes): New variable.
3043         (NEXT_FREE_NODE): New macro.
3044         (cgraph_create_node): Reuse nodes from the free list.  Do not
3045         update uid if doing so.
3046         (cgraph_remove_node): Add the node to the free list.
3047
3048 2008-09-25  Gerald Pfeifer  <gerald@pfeifer.com>
3049
3050         * config/freebsd.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define.
3051
3052 2008-09-24  Richard Henderson  <rth@redhat.com>
3053
3054         * dwarf2.h (DW_OP_GNU_encoded_addr): New.
3055         * unwind-dw2.c (execute_stack_op): Handle it.
3056
3057 2008-09-24  David Edelsohn  <edelsohn@gnu.org>
3058
3059         Revert:
3060         2008-09-24  Michael J. Eager  <eager@eagercon.com>
3061
3062 2008-09-24  Aldy Hernandez  <aldyh@redhat.com>
3063
3064         * c-common.c (fname_decl): New location argument.
3065         * c-common.h (fname_decl): Same.
3066         * c-parser.c (c_lex_one_token): Use {warning,error}_at instead of
3067         {warning,error}.
3068         (c_parser_typeof_specifier): Same.
3069         (c_parser_parms_list_declarator): Same.
3070         (c_parser_asm_string_literal): Same.
3071         (c_parser_compound_statement_nostart): Same.
3072         (c_parser_label): Same.
3073         (c_parser_do_statement): Same.
3074         (c_parser_asm_statement): Same.
3075         (c_parser_unary_expression): Same.
3076         (c_parser_sizeof_expression): Same.
3077         (c_parser_postfix_expression): Same.
3078         (c_parser_pragma): Same.
3079         (c_parser_omp_clause_collapse): Same.
3080         (c_parser_omp_clause_num_threads): Same.
3081         (c_parser_omp_clause_schedule): Same.
3082         (c_parser_omp_all_clauses): Same.
3083         (c_parser_omp_sections_scope): Same.
3084         (c_parser_omp_for_loop): Same.  Pass condition's location to
3085         c_objc_common_truthvalue_conversion.
3086         (c_parser_enum_specifier): Remove comment.
3087
3088 2008-09-24  Michael J. Eager  <eager@eagercon.com>
3089
3090         * config/rs6000/predicates.md (easy_fp_constant): Single FP consts
3091         are easy.
3092         * config/rs6000/rs6000.c (rs6000_override_options): Move
3093         rs6000_init_hard_regno_mode_ok after all options changed.
3094         Set rs6000_single_float, rs6000_double_float if TARGET_HARD_FLOAT.
3095         (rs6000_handle_option): Process -msingle-float, -mdouble-float,
3096         -msimple-fpu flags.  Add warning messages if single FP not configured.
3097         (rs6000_file_start): Output gnu_attribute for single-float.
3098         (legitimate_lo_sum_address_p): Condition on TARGET_DOUBLE_FLOAT.
3099         (rs6000_legitimize_address): Likewise.
3100         (rs6000_legitimize_reload_address): Likewise.
3101         (rs6000_emit_move): Condition on TARGET_DOUBLE_FLOAT,
3102         TARGET_SINGLE_FLOAT.
3103         (function_arg_advance): Likewise.
3104         (function_arg): Likewise.
3105         (setup_incoming_varargs): Condition on TARGET_DOUBLE_FLOAT.
3106         (rs6000_gimplify_va_arg): Condition on TARGET_DOUBLE_FLOAT,
3107         TARGET_SINGLE_FLOAT.
3108         (rs6000_split_multireg_move): Condition on TARGET_DOUBLE_FLOAT.
3109         (rs6000_emit_prologue): Likewise.
3110         (rs6000_function_value): Condition on TARGET_DOUBLE_FLOAT,
3111         TARGET_SINGLE_FLOAT.
3112         (rs6000_libcall_value): Likewise.
3113         * config/rs6000/rs6000.h (TARGET_SINGLE_FLOAT): New default to 1.
3114         (TARGET_DOUBLE_FLOAT): New default to 1
3115         (TARGET_SIMPLE_FPU): New default to 0
3116         (TARGET_SINGLE_FPU): New default to 0
3117         (TARGET_SINGLE_FLOAT_MODE): New.
3118         (TARGET_DOUBLE_FLOAT_MODE): New.
3119         * config/rs6000/singlefp.h: New; redefine TARGET_SINGLE_FLOAT,
3120         TARGET_DOUBLE_FLOAT, TARGET_SIMPLE_FPU, TARGET_SINGLE_FPU,
3121         UNITS_PER_FP_WORD
3122         * config/rs6000/rs6000.md (define_mode_iterator): Condition on
3123         TARGET_DOUBLE_FLOAT, TARGET_SINGLE_FLOAT.
3124         (extendsfdf2, extendsfdf2_fpr, truncdfsf2, truncdfsf2_fpr,
3125         copysigndf3,fseldfsf4, negdf2, negdf2_fpr, absdf2, absdf2_fpr,
3126         nabsdf2_fpr, adddf3, adddf3_fpr, subdf3, subdf3_fpr, muldf3,
3127         muldf3_fpr, divdf3, divdf3_fpr, sqrtdf2, smaxdf3, smindf3,
3128         movdfcc, *fseldfdf4, floatsidf2, *floatsidf2_internal,
3129         floatunssidf2, *floatunssidf2_internal, fix_truncdfsi2,
3130         *fix_truncdfsi2_internal, fix_truncdfsi2_internal_gfxopt,
3131         fix_truncdfsi2_mfpgpr, fctiwz, btruncdf2, ceildf2, floordf2,
3132         rounddf2, floatdidf2, floatsidf_ppc64_mfpgpr, floatsidf_ppc64,
3133         floatunssidf_ppc64, fix_truncdfdi2, movdf_hardfloat32,
3134         movdf_hardfloat64_mfpgpr, movdf_hardfloat64, extenddftf2_fprs,
3135         extenddftf2_internal, trunctfdf2_internal2, fix_trunc_helper,
3136         abstf2_internal, movdf_update1, movdf_update2, cmpdf_internal1,
3137         cmptf_internal1, *cmptf_internal2): Condition on
3138         TARGET_DOUBLE_FLOAT.
3139         (aux_truncdfsf2, negsf2, *negsf2, abssf2, *abssf2, addsf3, subsf3,
3140         mulsf3, divsf3, sqrtsf2, copysignsf3, smaxsf3, sminsf3, movsfcc,
3141         *fselsfsf4, fixuns_truncsfsi2, fix_truncsfsi2, floatunssisf2,
3142         btruncsf2, ceilsf2, floorsf2, roundsf2, floatdisf2_internal1,
3143         floatdisf2_internal2, *movsf_hardfloat, trunctfsf2_fprs,
3144         *movsf_update1, *movsf_update2, *cmpsf_internal1): Condition on
3145         TARGET_SINGLE_FLOAT.
3146         (divsf3, sqrtsf2, divdf3, divdf3_fpr): Condition on TARGET_SIMPLE_FPU.
3147         * config/rs6000/rs6000.opt (-msingle-float): New.
3148         (-mdouble-float): New.
3149         (-msimple-fpu): New.
3150         * doc/invoke.texi (RS/6000 and PowerPC Options): Add
3151         -msingle-float, -mdouble-float, -msimple-fpu options.
3152         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Set
3153         _SOFT_DOUBLE for -msingle-float.
3154         * config.gcc: New config for target=powerpc-xilinx-eabi.
3155
3156 2008-09-23  Eric Botcazou  <ebotcazou@adacore.com>
3157
3158         * config/sparc/constraints.md: New file.
3159         * config/sparc/sparc.md: Include it.
3160         * config/sparc/sparc-protos.h (memory_ok_for_ldd): Declare.
3161         (sparc_extra_constraint_check): Delete.
3162         * config/sparc/sparc.c (register_ok_for_ldd): Minor tweaks.
3163         (memory_ok_for_ldd): New predicate.
3164         (sparc_extra_constraint_check): Delete.
3165         * config/sparc/sparc.h (REG_CLASS_FROM_LETTER): Likewise.
3166         (CONST_OK_FOR_LETTER_P): Likewise.
3167         (CONST_DOUBLE_OK_FOR_LETTER_P): Likewise.
3168         (EXTRA_CONSTRAINT): Likewise.
3169
3170 2008-08-23  Steve Ellcey  <sje@cup.hp.com>
3171
3172         * regrename.c (do_replace): Copy REG_POINTER value to new reg.
3173
3174 2008-09-23  Richard Sandiford  <rdsandiford@googlemail.com>
3175
3176         * alias.c (find_base_value): Use FIND_BASE_TERM.
3177         * doc/tm.texi (FIND_BASE_TERM): Update documentation.
3178
3179 2008-09-23  Richard Sandiford  <rdsandiford@googlemail.com>
3180
3181         * config/i386/i386.c: Include cselib.h.
3182         (ix86_pic_register_p): New function.
3183         (ix86_delegitimize_address): Use it to check for the PIC register.
3184
3185 2008-09-23  Richard Sandiford  <rdsandiford@googlemail.com>
3186
3187         * doc/tm.texi (FIND_BASE_TERM): Expand documentation.
3188         * config/i386/i386.c (ix86_find_base_term): Don't check for
3189         SYMBOL_REF and LABEL_REF.
3190
3191 2008-09-23  Richard Sandiford  <rdsandiford@googlemail.com>
3192
3193         * config/i386/i386.c (ix86_delegitimize_address): Wrap the
3194         constant PLUS in a CONST.
3195
3196 2008-09-23  Kai Tietz  <kai.tietz@onevision.com>
3197
3198         * config/i386/i386.c (ix86_function_ok_for_sibcall): Correct
3199         check for sibcall support for w64.
3200
3201 2008-09-23  Eric Botcazou  <ebotcazou@adacore.com>
3202
3203         * c-ppoutput.c (cb_used_define): Do nothing for a builtin node.
3204
3205 2008-09-23  Aldy Hernandez  <aldyh@redhat.com>
3206
3207         * c-tree.h: Add argument to c_objc_common_truthvalue_conversion,
3208         parser_build_binary_op.
3209         * c-decl.c (build_enumerator): Pass location to build_binary_op.
3210         * c-typeck.c (build_array_ref): Same.
3211         (parser_build_unary_op): New location argument.
3212         (pointer_diff): Pass location to build_binary_op,
3213         c_objc_common_truthvalue_conversion.
3214         (build_modify_expr): Same.
3215         (build_unary_op): New location argument.
3216         (build_binary_op): New location argument.
3217         (c_objc_common_truthvalue_conversion): Pass location to
3218         c_*common_truthvalue_conversion.
3219         * c-convert.c (convert): Same.
3220         * c-common.c (binary_op_error): New location argument.
3221         (pointer_int_sum): Pass location to build_binary_op.
3222         (c_common_truthvalue_conversion): New location argument.
3223         (warn_for_sign_compare): Same.
3224         * c-common.h: Add location argument to c_common_truthvalue_conversion,
3225         binary_op_error, build_binary_op, warn_for_sign_compare.
3226         * c-parser.c (c_parser_condition): Pass location to
3227         c_*common_truthvalue_conversion.
3228         (c_parser_conditional_expression): Save condition's location and pass
3229         it on down.
3230         (c_parser_binary_expression): Same, but for the binary operator's
3231         location.
3232         (c_parser_omp_for_loop): Pass location to
3233         c_objc_common_truthvalue_conversion.
3234
3235 2008-09-23  Martin Jambor  <mjambor@suse.cz>
3236
3237         * cgraph.c (cgraph_free_edge): Use sizeof(*e).
3238         (cgraph_node_remove_callees): New temporary f.  Hold the next item
3239         in f when looping.
3240         (cgraph_node_remove_callers): Likewise.
3241
3242         * ipa-prop.c (ipa_edge_removal_hook): Use ATTRIBUTE_UNUSED.
3243         (ipa_node_removal_hook): Likewise.
3244
3245         * doc/gimple.texi (gimple_copy_call_skip_args): Changed to
3246         gimple_call_copy_skip_args and moved to the gimple_call section.
3247         * gimple.c (gimple_copy_call_skip_args): Renamed to
3248         gimple_call_copy_skip_args.  Changed al users.
3249
3250 2008-09-22  Vladimir Makarov  <vmakarov@redhat.com>
3251
3252         * ira-color.c (start_allocno_priorities): Rename to
3253         setup_allocno_priorities.  Use costs and
3254         ALLOCNO_EXCESS_PRESSURE_POINTS_NUM instead of frequencies and
3255         range lengths.  Get rid off doubles.
3256         (ira_fast_allocations): Call start_allocno_priorities.
3257         
3258 2008-09-22  David Daney  <ddaney@avtrex.com>
3259
3260         PR target/37593
3261         * config/mips/mips.h (FUNCTION_PROFILER): Call _mcount via a
3262         register if TARGET_LONG_CALLS.
3263
3264 2008-09-22  Richard Guenther  <rguenther@suse.de>
3265
3266         PR tree-optimization/37145
3267         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Re-enable
3268         value-numbering union accesses with their offset and size only.
3269         (visit_reference_op_load): Fix simplification of inserted conversions.
3270         * tree-ssa-pre.c (find_or_generate_expression): Do not
3271         recursively generate expressions if running FRE.
3272
3273 2008-09-22  Adam Nemet  <anemet@caviumnetworks.com>
3274
3275         * config/mips/mips.h (ISA_HAS_BADDU): New macro.
3276         * config/mips/mips.md (*baddu_si_eb, *baddu_si_el, *baddu_di<mode>):
3277         New patterns.
3278
3279 2008-09-22  Richard Guenther  <rguenther@suse.de>
3280
3281         PR tree-optimization/37145
3282         * tree-ssa-pre.c (fully_constant_expression): Simplify builtin calls.
3283         (phi_translate_1): Constant fold references.
3284
3285 2008-09-22  Ira Rosen  <irar@il.ibm.com>
3286
3287         PR tree-optimization/37482
3288         * tree-vectorizer.h (struct _slp_instance): Add new field.
3289         (SLP_INSTANCE_FIRST_LOAD_STMT): New.
3290         (get_earlier_stmt): New function.
3291         * tree-vect-analyze.c (vect_find_first_load_in_slp_instance): New
3292         function.
3293         (vect_analyze_slp_instance): Set SLP_INSTANCE_FIRST_LOAD_STMT.
3294         * tree-vect-transform.c (vect_finish_stmt_generation): Remove the
3295         asserts that GSI points to the scalar statement being vectorized.
3296         Set new statement location according to GSI.
3297         (vect_schedule_slp_instance): Use GSI of
3298         SLP_INSTANCE_FIRST_LOAD_STMT when vectorizing loads.
3299
3300 2008-09-21  Jan Hubicka  <jh@suse.cz>
3301
3302         * ipa-cp.c (ipcp_estimate_growth): Check recursive calls.
3303         (ipcp_insert_stage): Update dead_nodes bitmap.
3304
3305 2008-09-22  Danny Smith  <dannysmith@users.sourceforge.net>
3306
3307         PR target/37528 
3308         * config/i386/t-cygming (SHLIB_LC): Remove.
3309         (SHLIB_LINK): Don't add static objects to SHLIB_IMPLIB
3310         * config/i386/t-cygwin (SHLIB_LC): Specify all required libraries.
3311
3312 2008-09-22  Hans-Peter Nilsson  <hp@axis.com>
3313
3314         PR middle-end/37170
3315         PR middle-end/37280
3316         * final.c (mark_symbol_ref_as_used): New helper function.
3317         (output_operand): Instead of just looking inside MEMs for
3318         SYMBOL_REFs, use new helper function and for_each_rtx.
3319         * varasm.c (assemble_external): Move #ifndef ASM_OUTPUT_EXTERNAL
3320         to after weak-handling.  Don't mark decls with TREE_STATIC as weak.
3321         Make head comment more general.
3322         * config/darwin.c (machopic_output_indirection): Handle weak
3323         references here, like in assemble_external.
3324
3325 2008-09-21  Eric Botcazou  <ebotcazou@adacore.com>
3326
3327         * config/sparc/sparc-protos.h (gen_compare_operator): Declare.
3328         (sparc_emit_float_lib_cmp): Change return type.
3329         * config/sparc/sparc.c (gen_compare_reg): Add comment about TFmode.
3330         (gen_compare_operator): New function.
3331         (sparc_emit_float_lib_cmp): Return the new operator to be used in
3332         the comparison sequence.  Minor tweaks.
3333         * config/sparc/sparc.md (seq, sne, sgt, slt, sge, sle): Assert
3334         that the final operator and the result of sparc_emit_float_lib_cmp
3335         match for software TFmode; use emit_insn in lieu of emit_jump_insn.
3336         (beq, bne, bgt, blt, bge, ble, bunordered, bordered, bungt, bunlt,
3337         buneq, bunge, bunle, bltgt): Assert that the final operator and the
3338         result of sparc_emit_float_lib_cmp match for software TFmode.
3339         (movqicc, movhicc, movsicc, movdicc): Merge into...
3340         (mov<I:mode>cc): ...this.
3341         (movsfcc, movdfcc, movtfcc): Merge into...
3342         (mov<F:mode>cc): ...this.
3343         (movqi_cc_sp64, movhi_cc_sp64, movsi_cc_sp64, movdi_cc_sp64): Merge
3344         into...
3345         (mov<I:mode>_cc_v9): ...this.
3346         (movdi_cc_sp64_trunc): Delete.
3347         (movqi_cc_reg_sp64, movhi_cc_reg_sp64, movsi_cc_reg_sp64,
3348         movdi_cc_reg_sp64): Merge into...
3349         (mov<I:mode>_cc_reg_sp64): ...this.
3350         (movsf_cc_sp64): Rename into...
3351         (movsf_cc_v9): ...this.
3352         (movdf_cc_sp64): Rename into...
3353         (movdf_cc_v9): ...this.
3354         (movtf_cc_hq_sp64): Rename into...
3355         (movtf_cc_hq_v9): ...this.
3356         (movtf_cc_sp64): Rename into...
3357         (movtf_cc_v9): ...this.  Adjust for renaming of movdf_cc_sp64.
3358
3359 2008-09-21  Diego Novillo  <dnovillo@google.com>
3360
3361         * doc/gccint.texi: Include generic.texi and gimple.texi.
3362         Re-order index.
3363         * doc/tree-ssa.texi (GENERIC): Move to generic.texi.
3364         (GIMPLE): Move to gimple.texi.
3365         (Annotations): Remove references to to stmt_ann_t and
3366         ssa_name_ann_t.
3367         (SSA Operands): Rename from 'Statement Operands'.
3368         * doc/generic.texi: New.
3369         * doc/gimple.texi: New.
3370         * Makefile.in (TEXI_GCCINT_FILES): Add generic.texi and gimple.texi.
3371         * Makefile.in (TEXI_GCCINT_FILES):
3372         * gimple.c (gimple_copy_call_skip_args): Rename from
3373         giple_copy_call_skip_args.  Update all users.
3374         * doc/gimple.texi (gimple_copy_call_skip_args): Document.
3375
3376 2008-09-21  Ira Rosen  <irar@il.ibm.com>
3377
3378         PR tree-optimization/37539
3379         * tree-vect-transform.c (vect_transform_strided_load): Save vector
3380         statement in related statement field only for the first load of the
3381         group of loads with the same data reference.
3382
3383 2008-09-20  Adam Nemet  <anemet@caviumnetworks.com>
3384
3385         * config/mips/mips.h (TUNE_OCTEON): New macro.
3386         * config/mips/mips.c (mips_issue_rate): Return 2 for Octeon.
3387         (mips_multipass_dfa_lookahead): Return 2 for Octeon.
3388         * config/mips/octeon.md: New file.
3389         * config/mips/mips.md: Include octeon.md.  Restore
3390         semi-alphabetical order of include files.
3391
3392 2008-09-20  H.J. Lu  <hongjiu.lu@intel.com>
3393
3394         PR target/37571
3395         * config/i386/i386.md (*jcc_fused_1): Removed.
3396         (*jcc_fused_2): Likewise.
3397         (*jcc_fused_3): Likewise.
3398         (*jcc_fused_4): Likewise.
3399
3400 2008-09-20  Richard Sandiford  <rdsandiford@googlemail.com>
3401
3402         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Define.
3403         (IRA_COVER_CLASSES): Refer to TARGET_IRA_COVER_CLASSES.
3404         * target.h (gcc_target): Add ira_cover_classes.
3405         * ira.c: Remove IRA_COVER_CLASSES guards.
3406         (setup_cover_and_important_classes): Use targetm.ira_cover_classes
3407         instead of IRA_COVER_CLASSES.
3408         (setup_cover_and_important_classes): Remove IRA_COVER_CLASSES guard.
3409         (setup_class_translate): Likewise.
3410         (setup_reg_class_intersect_union): Likewise.
3411         (find_reg_class_closure): Replace IRA_COVER_CLASSES guard with a
3412         test of targetm.ira_cover_classes.
3413         * opts.c (decode_options): Use targetm.ira_cover_classes instead
3414         of IRA_COVER_CLASSES.
3415         * target-def.h (TARGET_IRA_COVER_CLASSES): Define.
3416         (TARGET_INITIALIZER): Include it.
3417         * targhooks.h (default_ira_cover_classes): Declare.
3418         * targhooks.c (default_ira_cover_classes): New function.
3419
3420 2008-09-19  Bob Wilson  <bob.wilson@acm.org>
3421         
3422         * config/xtensa/xtensa.md (reload<mode>_literal): Handle MEM operands.
3423         
3424 2008-09-19  Ian Lance Taylor  <iant@google.com>
3425
3426         * varasm.c (narrowing_initializer_constant_valid_p): Return
3427         NULL_TREE if ENDTYPE is not an integer.
3428
3429 2008-09-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3430
3431         PR tree-opt/30930
3432         * tree-ssa.c (execute_update_addresses_taken): Also update
3433         DECL_GIMPLE_REG_P for vector and complex types.
3434
3435 2008-09-19  Andrew MacLeod  <amacleod@redhat.com>
3436             Jan Hubicka  <jh@suse.cz>
3437
3438         PR middle-end/37567
3439         * tree-ssa-ter.c (free_temp_expr_table): Make sure fields are actually
3440         empty before freeing them.
3441         (find_replaceable_exprs): Move asserts to free_temp_expr_table.
3442
3443 2008-09-18  Bob Wilson  <bob.wilson@acm.org>
3444
3445         * configure.ac: Add HAVE_AS_TLS check for Xtensa.
3446         * config/xtensa/predicates.md (tls_symbol_operand): New.
3447         * config/xtensa/xtensa.c (TARGET_HAVE_TLS): Define.
3448         (TARGET_CANNOT_FORCE_MEM): Define.
3449         (xtensa_tls_symbol_p): New.
3450         (xtensa_emit_move_sequence): Check for and legitimize TLS addresses.
3451         (xtensa_legitimate_address_p): Disallow constant pool TLS references.
3452         (xtensa_tls_module_base): New.
3453         (xtensa_call_tls_desc): New.
3454         (xtensa_legitimize_tls_address): New.
3455         (xtensa_legitimize_address): Handle TLS symbols.
3456         (xtensa_tls_referenced_p_1): New.
3457         (xtensa_tls_referenced_p): New.
3458         (xtensa_output_addr_const_extra): Handle UNSPEC_TPOFF and
3459         UNSPEC_DTPOFF.
3460         (XTENSA_BUILTIN_THREAD_POINTER): New.
3461         (XTENSA_BUILTIN_SET_THREAD_POINTER): New.
3462         (xtensa_init_builtins): Set NOTHROW and READONLY for umulsidi3
3463         builtin.  Add declarations for __builtin_thread_pointer and
3464         __builtin_set_thread_pointer.
3465         (xtensa_fold_builtin): Recognize new builtins.
3466         (xtensa_expand_builtin): Expand new builtins.
3467         * config/xtensa/xtensa.h (XCHAL_HAVE_THREADPTR): Define default value.
3468         (TARGET_THREADPTR): Define.
3469         (HAVE_AS_TLS): Define default value.
3470         (LEGITIMATE_CONSTANT_P): Disallow TLS references.
3471         * config/xtensa/xtensa.md (UNSPEC_TPOFF, UNSPEC_DTPOFF): New.
3472         (UNSPEC_TLS_FUNC, UNSPEC_TLS_ARG, UNSPEC_TLS_CALL, UNSPEC_TP): New.
3473         (UNSPECV_SET_TP): New.
3474         (sym_TPOFF, sym_DTPOFF): New.
3475         (load_tp, set_tp, tls_func, tls_arg, tls_call): New.
3476         * config/xtensa/xtensa-protos.h (xtensa_tls_referenced_p): Declare.
3477         * configure: Regenerated.
3478         
3479 2008-09-18  H.J. Lu  <hongjiu.lu@intel.com>
3480
3481         PR target/37394
3482         * config/ia64/ia64.c (ia64_optimization_options): Move
3483         checking and setting flag_schedule_insns_after_reload and
3484         ia64_flag_schedule_insns2 back to ...
3485         (ia64_override_options): Here.
3486
3487 2008-09-18  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3488
3489         PR rtl-opt/37451
3490         * loop-doloop.c (doloop_modify): New argument zero_extend_p and
3491         zero extend count after the correction to it is done.
3492         (doloop_optimize): Update call to doloop_modify, don't zero extend
3493         count before call.
3494
3495 2008-09-18  Martin Jambor  <mjambor@suse.cz>
3496
3497         * ipa-cp.c (ipcp_estimate_growth): Return 0 instead of false.
3498
3499         * ipa-prop.c: Correct comments.
3500         * ipa-prop.h: Likewise.
3501
3502 2008-09-18  Jan Hubicka  <jh@suse.cz>
3503
3504         PR middle-end/37448
3505         * ipa-reference.c (ipa_reference_local_vars_info_d,
3506         ipa_reference_global_vars_info_d,
3507         ipa_reference_local_vars_info_t, ipa_reference_global_vars_info_t,
3508         ipa_reference_vars_info_t): Move here from ipa-reference.h
3509         (node_duplication_hook_holder, node_removal_hook_holder): New.
3510         (get_reference_vars_info_from_cgraph): Rename to ...
3511         (get_reference_vars_info): ... this one, use cgraph uids.
3512         (get_local_reference_vars_info, get_global_reference_vars_info):
3513         Use cgraph instead of decl.
3514         (ipa_reference_get_read_local, ipa_reference_get_written_local):
3515         Remove.
3516         (ipa_reference_get_read_global, ipa_reference_get_not_read_global
3517         ipa_reference_get_written_global,
3518         ipa_reference_get_not_written_global): Use cgraph argument.
3519         (check_call): Simplify avail check.
3520         (scan_stmt_for_static_refs): Update.
3521         (propagate_bits): Update.
3522         (merge_callee_local_info): Remove.
3523         (init_function_info): Use cgraph nodes.
3524         (clean_function_local_data): Break out from ...
3525         (clean_function): ... here.
3526         (copy_local_bitmap, copy_global_bitmap): New functions.
3527         (duplicate_node_data, remove_node_data): New functions.
3528         (generate_summary): Register hooks; use visibility instead of
3529         master clones.
3530         (propafate): Use cgraph nodes; copy bitmap to each node in cycle.
3531         * ipa-reference.h (ipa_reference_local_vars_info_d,
3532         ipa_reference_global_vars_info_d,
3533         ipa_reference_local_vars_info_t, ipa_reference_global_vars_info_t,
3534         ipa_reference_vars_info_t): Move to ipa-reference.c
3535         (ipa_reference_get_read_local, ipa_reference_get_written_local):
3536         Remove.
3537         (ipa_reference_get_read_global, ipa_reference_get_written_global,
3538         ipa_reference_get_not_read_global,
3539         ipa_reference_get_not_written_global): Update prototype.
3540         * ipa-pure-const.c (funct_state_vec): Turn into VECtor.
3541         (init_state): Remove.
3542         (node_duplication_hook_holder, node_removal_hook_holder): New.
3543         (get_function_state, set_function_state): Use VECtor.
3544         (analyze_function): Check body availability.
3545         (add_new_function): Likewise.
3546         (duplicate_node_data, remove_node_data): New.
3547         (generate_summary): Register hooks; do not care about clones.
3548         (propafate): Do not care about clones; recursive functions are
3549         not looping.
3550         * ipa-utils.c (searchc, ipa_utils_reduced_inorder): Do not skip clones.
3551         * ipa-prop.c (edge_removal_hook_holder, node_removal_hook_holder,
3552         * edge_duplication_hook_holder, node_duplication_hook_holder): Make
3553         static.
3554         * tree-flow.h (function_ann_d): Remove reference_vars_info.
3555         * tree-ssa-opreands.c (add_call_clobber_ops, add_call_read_ops):
3556         Update call of ipa-reference accesors.
3557
3558 2008-09-18  Simon Baldwin  <simonb@google.com>
3559
3560         * c-opts.c (c_common_handle_option): Add handling for
3561         -Wbuiltin-macro-redefined command line option.
3562         * c.opt: Added builtin-macro-redefined option.
3563         * doc/invoke.texi (Warning Options): Add -Wbuiltin-macro-redefined
3564         documentation.
3565
3566 2008-09-18  Richard Guenther  <rguenther@suse.de>
3567
3568         PR tree-optimization/37258
3569         * tree-ssa-sccvn.c (vn_phi_compute_hash): Include the precision
3570         and signedness for integral types.
3571         (vn_phi_eq): Require compatible types.
3572
3573 2008-09-18  Jakub Jelinek  <jakub@redhat.com>
3574
3575         PR debug/34037
3576         * gimplify.c (gimplify_type_sizes): When not optimizing, ensure
3577         TYPE_MIN_VALUE and TYPE_MAX_VALUE is not is not DECL_IGNORED_P
3578         VAR_DECL.
3579         * cfgexpand.c (expand_used_vars): Keep DECL_ARTIFICIAL
3580         !DECL_IGNORED_P vars in local_decls list for instantiate_decls,
3581         ggc_free other TREE_LIST nodes from that chain.
3582         * function.c (instantiate_decls): Instantiate also DECL_RTL
3583         of vars in cfun->local_decls, free that list afterwards.
3584
3585 2008-09-18  Eric Botcazou  <ebotcazou@adacore.com>
3586
3587         * config/sparc/sol2.h (WIDEST_HARDWARE_FP_SIZE): Move to...
3588         * config/sparc/sparc.h (WIDEST_HARDWARE_FP_SIZE): ...here.
3589
3590 2008-09-18  Andrew MacLeod  <amacleod@redhat.com>
3591
3592         * tree-outof-ssa.c (eliminate_useless_phis): Fix formatting.
3593         * tree-flow-.h (struct immediate_use_iterator_d): Fix comment.
3594
3595 2008-09-18  Andrew MacLeod  <amacleod@redhat.com>
3596
3597         PR tree-optimization/37102
3598         * tree-outof-ssa.c (remove_gimple_phi_args): Remove all the PHI args
3599         from a node. Check to see if another PHI is dead.
3600         (eliminate_useless_phis): Rename from eliminate_virtual_phis and 
3601         remove real PHIs which have no uses.
3602         (rewrite_out_of_ssa): Call eliminate_useless_phis.
3603
3604 2008-09-18  Richard Guenther  <rguenther@suse.de>
3605
3606         PR middle-end/37284
3607         * tree-cfg.c (remove_useless_stmts_1): Remove
3608         GIMPLE_CHANGE_DYNAMIC_TYPE if not optimizing.
3609
3610 2008-09-18  Nick Clifton  <nickc@redhat.com>
3611
3612         * config/frv/frv.h (IRA_COVER_CLASSES): Define.
3613         (SECONDARY_INPUT_RELOAD_CLASS): Omit unused argument in call
3614         to frv_secondary_reload_class.
3615         (SECONDARY_OUTPUT_RELOAD_CLASS): Likewise.
3616         * config/frv/frv.c (TARGET_SECONDARY_RELOAD): Define.
3617         (frv_secondary_reload_class): Omit unused parameter.
3618         (frv_secondary_reload): New function.  Handle the case when
3619         secondary_reload_class() is called before the reload_(in|out)
3620         _optabs have been initialised.
3621         * config/frv/frv-protos.h (frv_secondary_reload_class): Omit
3622         unused parameter.
3623         * config/frv/frv.md: Define an exclusion set between fr550_m0
3624         and fr550_f0.
3625
3626 2008-09-18  Richard Guenther  <rguenther@suse.de>
3627
3628         PR tree-optimization/37456
3629         * tree-ssa-reassoc.c (build_and_add_sum): If the stmt we
3630         want to insert after ends a BB insert on the single fallthru
3631         outgoing edge.
3632
3633 2008-09-18  Andreas Krebbel  <krebbel1@de.ibm.com>
3634
3635         * doc/invoke.texi: Document -mhard-dfp, -mno-hard-dfp.
3636         Mention -march=z9-109, z9-ec and z10.
3637
3638 2008-09-18  Uros Bizjak  <ubizjak@gmail.com>
3639
3640         PR rtl-optimization/37544
3641         * regrename.c (maybe_mode_change): Exit early when copy_mode
3642         is narrower than orig_mode and narrower than new_mode.
3643
3644 2008-09-18  Alexander Monakov  <amonakov@ispras.ru>
3645
3646         PR middle-end/37499
3647         * sched-int.h (struct _haifa_insn_data): Remove unused field ref_count.
3648
3649         * sched-rgn.c (ref_counts): Remove.
3650         (insn_referenced): New static variable.
3651         (INSN_REF_COUNT): Remove.
3652         (sched_run_compute_dependencies): Use insn_referenced instead of
3653         INSN_REF_COUNT.
3654         (add_branch_dependences): Likewise.  Delete dead assignment.
3655
3656 2008-09-17  Adam Nemet  <anemet@caviumnetworks.com>
3657
3658         * haifa-sched.c (dep_cost_1): Recognize the producer even if the
3659         consumer is an asm.  Add comment why this is important.
3660         (choose_ready): Add comment to the "INSN_CODE (insn) >= 0 ||
3661         recog_memoized (insn) < 0" assert.  Put ENABLE_CHECKING around it.
3662
3663 2008-09-17  Joseph Myers  <joseph@codesourcery.com>
3664
3665         * expr.c (emit_group_store): Do not shift before moving via a
3666         stack slot.
3667
3668 2008-09-17  Eric Botcazou  <ebotcazou@adacore.com>
3669
3670         * varasm.c (initializer_constant_valid_p): Forbid view-conversions
3671         from aggregate to non-aggregate type if the bit pattern is not fully
3672         preserved afterwards.
3673
3674 2008-09-17  Richard Guenther  <rguenther@suse.de>
3675
3676         * tree-cfg.c (verify_types_in_gimple_assign): Rename to ...
3677         (verify_gimple_assign): ... this.  Split into ...
3678         (verify_gimple_assign_unary): ... this,
3679         (verify_gimple_assign_binary): ... that,
3680         (verify_gimple_assign_single): ... and this.
3681         (verify_types_in_gimple_stmt): Call verify_gimple_assign.
3682         Fix GIMPLE_CHANGE_DYNAMIC_TYPE handling.
3683         (verify_types_in_gimple_min_lval): Handle TARGET_MEM_REF.
3684         (verify_types_in_gimple_reference): Be forgiving with
3685         VIEW_CONVERT_EXPRs.
3686         (verify_gimple_phi): Deal with virtual operands.
3687
3688         * tree.def (PREDICT_EXPR): Change to tcc_expression.
3689
3690 2008-09-17  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3691
3692         * tree.c (get_callee_fndecl): Don't call the language hook.
3693         * langhooks.h (lang_hooks): Remove lang_get_callee_fndecl.
3694         * langhooks-def.h (LANG_HOOKS_GET_CALLEE_FNDECL): Kill.
3695         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_GET_CALLEE_FNDECL.
3696
3697 2008-09-17  Jakub Jelinek  <jakub@redhat.com>
3698
3699         * tree.c (protected_set_expr_location): Don't unnecessarily
3700         check for error_mark_node.
3701
3702 2008-09-17  Art Haas  <ahaas@impactweather.com>
3703
3704         * ipa-reference.c (analyze_function): Declare step only if
3705         ENABLE_CHECKING is defined.
3706
3707 2008-09-17  Jan Hubicka  <jh@suse.cz>
3708
3709         PR c++/18071
3710         * tree.h (DECL_INLINE): remove.
3711         (DECL_DECLARED_INLINE_P): Update docs.
3712         (DECL_NO_INLINE_WARNING_P): new.
3713         (tree_function_decl): Replace inline_flag by no_inline_warning_flag.
3714         * tree-inline.c (inlinable_function_p): Set DECL_NO_INLINE_WARNING_P.
3715
3716 2008-09-17  Jakub Jelinek  <jakub@redhat.com>
3717             Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
3718
3719         PR bootstrap/37441
3720         * dwarf2out.c (dwarf2out_do_cfi_asm) [MIPS_DEBUGGING_INFO]: Return
3721         false.
3722
3723 2008-09-17  Jan Hubicka  <jh@suse.cz>
3724
3725         * ipa-reference.c (ipa_obstack): Remove.
3726         (local_info_obstack, global_info_obstack): New.
3727         (add_static_var): We now handle variables only.
3728         (mark_address_taken, mark_load, mark_store): New functions based on ...
3729         (check_operand): ... remove.
3730         (get_asm_stmt_operands): Rename to ...
3731         (check_asm_memory_clobber): ... this. Look only for memory clobber.
3732         (scan_stmt_for_static_refs): Rewrite.
3733         (scan_op_for_static_refs): Rename to ...
3734         (scan_initializer_for_static_refs): do not look for VAR_DECL
3735         initializers; stop recursion on types and decls.
3736         (ipa_init): Use proper obstacks.
3737         (analyze_variable): Use scan_initializer_for_static_refs.
3738         (init_function_info): Use local obstack.
3739         (analyze_function): Simplify.
3740         (add_new_function): We don't need visited_nodes obstack.
3741         (generate_summary): Use proper obstacks; cleanup after propagation.
3742
3743 2008-09-17  Richard Guenther  <rguenther@suse.de>
3744
3745         PR middle-end/37385
3746         PR tree-optimization/37491
3747         * alias.c (get_alias_set): Use the canonical type.
3748         * tree-vect-transform.c (vectorizable_store): Use the type of
3749         the lhs for the vector type.  Adjust checking.
3750         (vectorizable_load): Adjust checking.
3751
3752 2008-09-16  Jakub Jelinek  <jakub@redhat.com>
3753             Adam Nemet  <anemet@caviumnetworks.com>
3754
3755         PR rtl-optimization/37483
3756         * ifcvt.c (noce_try_sign_mask): Use if_info->test_bb instead of
3757         if_info->insn_b's bb as argument to optimize_bb_for_speed_p.
3758         Rearrange code to better match the original comment.  Check
3759         t_unconditional first.  Improve comment.
3760
3761 2008-09-16  Jakub Jelinek  <jakub@redhat.com>
3762
3763         PR c/37529
3764         * gimplify.c (gimplify_expr) <case GOTO_EXPR>: If gimplification of
3765         GOTO_DESTINATION failed, don't create GIMPLE_GOTO.
3766
3767         PR c++/37530
3768         * gimplify.c (gimplify_expr) <case TRY_CATCH_EXPR>: Don't create
3769         GIMPLE_TRY if cleanup sequence is empty.
3770
3771 2008-09-16  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3772
3773         PR middle-end/37263
3774         * tree-ssa-loop-ivopts.c (determine_use_iv_cost_condition): Prefer the
3775         eliminate IV if the cost are the same.
3776
3777 2008-09-16  Richard Guenther  <rguenther@suse.de>
3778
3779         PR middle-end/37380
3780         * tree-sra.c (sra_build_assignment): Do not call the gimplifier
3781         if not necessary.
3782
3783 2008-09-16  Richard Guenther  <rguenther@suse.de>
3784
3785         PR tree-optimization/37508
3786         * tree-vrp.c (simplify_truth_ops_using_ranges): Also allow -1.
3787
3788 2008-09-15  Kaz Kojima  <kkojima@gcc.gnu.org>
3789
3790         * config/sh/sh.md (movsf_ie): Fix length for TARGET_SH2A.
3791
3792 2008-09-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3793
3794         * config/rs6000/rs6000.md (floatsidf2): Rewrite PowerPC64 case to
3795         use gen_floatdidf2 directly.
3796         (floatunssidf2): Likewise.
3797         (floatsidf_ppc64_mfpgpr): Remove.
3798         (floatsidf_ppc64): Remove.
3799         (floatunssidf_ppc64): Remove.
3800
3801 2008-09-15  Jakub Jelinek  <jakub@redhat.com>
3802
3803         * ira-color.c (finish_cost_update): Free update_cost_queue_elems
3804         rather than update_cost_queue.
3805
3806         * tree-ssa-alias.c (init_alias_info): Call bitmap_obstack_release
3807         in every call starting with the second one, instead of only when
3808         alias_bitmap_obstack.elements != NULL.
3809
3810         * tree-predcom.c (filter_suitable_components): Free all refs in
3811         act->refs vector before calling release_component.
3812         (add_ref_to_chain): Free ref if not adding it to chain->refs.
3813
3814         * tree-data-ref.c (free_subscripts): Free all subscript objects.
3815
3816         * tree-loop-linear.c (linear_transform_loops): Initialize
3817         lambda_obstack only after calling perfect_loop_nest_depth.
3818         Goto free_and_continue instead of just continue for later failures.
3819
3820         PR middle-end/37479
3821         * doc/invoke.texi: Document -fno-dwarf2-cfi-asm.
3822
3823         PR libmudflap/36397
3824         * tree-mudflap.c (mf_xform_derefs_1): Handle VIEW_CONVERT_EXPR.
3825
3826 2008-09-14  Andreas Schwab  <schwab@suse.de>
3827
3828         * tree-call-cdce.c (check_target_format): Accept Motorola formats.
3829
3830 2008-09-14  Jan Hubicka  <jh@suse.cz>
3831
3832         * invoke.texi (-fconserve-stack): Document.
3833         * opts.c (decode_options): Handle conserve_stack.
3834         * common.opt (fconvserve_stack): New.
3835
3836 2008-09-14  David Edelsohn  <edelsohn@gnu.org>
3837
3838         * config.host: Add x-aix to host_xmake_file.
3839         * config/rs6000/t-aix52: Do not override LDFLAGS.
3840         * config/rs6000/x-aix: New file.
3841
3842 2008-09-14  Andy Hutchinson  <hutchinsonandy@aim.com>
3843
3844         PR target/19636
3845         PR target/24894
3846         PR target/31644
3847         PR target/31786
3848         * config/avr/avr.c (legitimate_address_p): Fix problem where subreg
3849         is not recognized as a valid register usage. Allow REG_X to be used
3850         as a base pointer.
3851         * config/avr/avr.h (LEGITIMIZE_RELOAD_ADDRESS): Remove code that
3852         forces a reload when using a base register.
3853
3854 2008-09-14  Danny Smith  <dannysmith@users.sourceforge.net>
3855
3856         * config/i386/cygming-crtend.c (register_frame_ctor): If
3857         DEFAULT_USE_CXA_ATEXIT, register __gcc_deregister_frame
3858         directly with atexit.
3859         (deregister_frame_ctor): Rename to ...
3860         (deregister_frame_dtor): Use to call __gcc_deregister_frame
3861         if !DEFAULT_USE_CXA_ATEXIT.
3862
3863 2008-09-13  Jan Hubicka  <jh@suse.cz>
3864
3865         * cgraph.c: Include value-prof.h
3866         * Makefile.in (cgraph.o): Add value-prof.h dependency.
3867
3868 2008-09-13  Jan Hubicka  <jh@suse.cz>
3869
3870         PR middle-end/32581
3871         * tree-profile.c (add_abnormal_goto_call_edges): New function.
3872         (tree_gen_interval_profiler, tree_gen_pow2_profiler,
3873         tree_gen_one_value_profiler, tree_gen_average_profiler,
3874         tree_gen_ic_func_profiler, tree_gen_ior_profiler): Use it.
3875
3876 2008-09-13  Jan Hubicka  <jh@suse.cz>
3877
3878         * i386.c (ix86_expand_movmem, ix86_expand_movstr): Avoid processing
3879         too many bytes on misalligned blocks.
3880
3881 2008-09-13  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
3882
3883         * doc/cfg.texi: Fix some typos.
3884         * doc/extend.texi: Likewise.
3885         * doc/install.texi: Likewise.
3886         * doc/invoke.texi: Likewise.
3887         * doc/rtl.texi: Likewise.
3888         * doc/tree-ssa.texi: Likewise.
3889
3890 2008-09-13  Richard Guenther  <rguenther@suse.de>
3891
3892         PR middle-end/30141
3893         * tree-nested.c (finalize_nesting_tree_1): Generate valid
3894         gimple stores for memory rhs.
3895
3896 2008-09-13  H.J. Lu  <hongjiu.lu@intel.com>
3897
3898         PR rtl-optimization/37489
3899         * cse.c (fold_rtx): Don't return const_true_rtx for float
3900         compare if FLOAT_STORE_FLAG_VALUE is undefined.
3901
3902 2008-09-13  Jan Hubicka  <jh@suse.cz>
3903
3904         PR tree-optimization/37392
3905         * tree-inline.c (remap_gimple_stmt): Do not remap return value.
3906
3907 2008-09-13  Martin Jambor  <mjambor@suse.cz>
3908             Jan Hubicka  <jh@suse.cz>
3909
3910         * cgraph.c (free_edges): New variable.
3911         (NEXT_FREE_EDGE): New macro.
3912         (cgraph_free_edge): New function.
3913         (cgraph_remove_edge): Call cgraph_remove_edge_1.
3914         (cgraph_node_remove_callees): Likewise.
3915         (cgraph_node_remove_callers): Likewise.
3916         (cgraph_create_edge): Reuse edges from the free list.  Do not
3917         update uid if doing so.
3918         (cgraph_remove_*_hook): Add free call.
3919
3920 2008-09-13  Richard Sandiford  <rdsandiford@googlemail.com>
3921
3922         * ira-color.c (conflict_allocno_vec): Delete.
3923         (update_cost_queue_elem): New structure.
3924         (update_cost_queue): New variable.
3925         (update_cost_queue_tail): Likewise.
3926         (update_cost_queue_elems): Likewise.
3927         (allocno_update_cost_check): Delete.
3928         (initiate_cost_update): Allocate update_cost_queue_elems
3929         instead of allocno_update_cost_check.
3930         (finish_cost_update): Update the free()s accordingly.
3931         (start_update_cost): New function.
3932         (queue_update_cost): Likewise.
3933         (get_next_update_cost): Likewise.
3934         (update_copy_costs_1): Inline into...
3935         (update_copy_costs): ...here.  Use a queue instead of recursive calls.
3936         Use cover_class instead of ALLOCNO_COVER_CLASS (another_allocno),
3937         once we've established they are equal.  Don't allocate update
3938         costs if there is nothing to add to them.
3939         (update_conflict_hard_regno_costs): Remove ALLOCNO and
3940         DIVISOR arguments.  Use a queue instead of recursive calls;
3941         process all the allocnos in the initial queue, rather than
3942         a single allocno.
3943         (assign_hard_reg): Use queue_update_cost instead of
3944         conflict_allocno_vec.  Queue coalesced allocnos instead
3945         of calling update_conflict_hard_regno_costs for each one.
3946         Just call update_conflict_hard_regno_costs once for the
3947         entire queue.
3948         (ira_color): Remove conflict_allocno_vec handling.
3949
3950 2008-09-12  Sebastian Pop  <sebastian.pop@amd.com>
3951
3952         PR tree-optimization/37484
3953         * graphite.c (scop_record_loop): Use snprintf instead of sprintf.
3954         (save_var_name): Same.
3955         (initialize_cloog_names): Same.
3956         (initialize_cloog_names): Same.
3957
3958 2008-09-12  Sebastian Pop  <sebastian.pop@amd.com>
3959
3960         * tree-scalar-evolution.c (set_instantiated_value): Set
3961         instantiated_below.
3962
3963 2008-09-12  Vladimir Makarov  <vmakarov@redhat.com>
3964
3965         PR rtl-opt/37377
3966
3967         * ira-build.c (common_loop_tree_node_dominator): Remove.
3968         (copy_live_ranges_to_removed_store_destinations): New function.
3969         (regno_top_level_allocno_map): Move to top level from ...
3970         (ira_flattening): ... here.  Use
3971         copy_live_ranges_to_removed_store_destinations.
3972
3973         * ira-emit.c (generate_edge_moves): Fix a comment.
3974
3975 2008-09-12  Anatoly Sokolov  <aesok@post.ru>
3976
3977         PR target/37466
3978         * config/avr/avr.md (movsi_lreg_const peephole2): Add match_dup for
3979         scratch register after 'set' pattern.
3980
3981 2008-09-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
3982
3983         * emit-rtl.c (set_reg_attrs_from_value): Fix invalid alignment
3984         information passed to mark_reg_pointer.
3985         * explow.c (force_reg): Likewise.
3986
3987 2008-09-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
3988
3989         * config/spu/spu.c (spu_override_options): Default to -mno-safe-hints
3990         when building for the celledp architecture.
3991
3992 2008-09-12  Richard Guenther  <rguenther@suse.de>
3993
3994         * tree-vrp.c (simplify_truth_ops_using_ranges): Fix types.
3995
3996 2008-09-12  Eric Botcazou  <ebotcazou@adacore.com>
3997
3998         PR rtl-optimization/37424
3999         * ira-color.c (coalesced_pseudo_reg_slot_compare): Untie by comparing
4000         the regnos instead of the addresses.
4001
4002 2008-09-11  Janis Johnson  <janis187@us.ibm.com>
4003
4004         * ginclude/float.h (DEC_EVAL_METHOD): Correct the macro name.
4005
4006 2008-09-11  Richard Guenther  <rguenther@suse.de>
4007
4008         * tree-ssa-uncprop.c (associate_equivalences_with_edges): Avoid
4009         entering the weaker equivalence recording.
4010
4011         * tree-ssa-phiprop.c (propagate_with_phi): Fix tuplification.
4012
4013 2008-09-11  Jeff Law <law@redhat.com>
4014
4015         * reload1.c (alter_reg): Undo the BYTE_BIG_ENDIAN correction performed
4016         by assign_stack_local on the IRA path for stack slot sharing
4017         as well as the non-IRA path.
4018
4019 2008-09-11  Uros Bizjak  <ubizjak@gmail.com>
4020
4021         * config/i386/i386.h: Fix whitespace issues.
4022
4023 2008-09-11  Martin Jambor  <mjambor@suse.cz>
4024
4025         * ipa-prop.h (struct ipa_param_flags): Removed.
4026         (struct ipa_param_descriptor): New structure.
4027         (struct ipa_node_params): ipcp_lattices, param_decls and
4028         param_flags moved to ipa_param_description.
4029         (ipa_get_ith_param): Renamed to ipa_get_param, changed to access
4030         descriptors.  Renamed all users.
4031         (ipa_is_ith_param_modified): Renamed to ipa_is_param_modified,
4032         changed to access descriptors.  Renamed all users.
4033         (ipa_is_ith_param_called): Renamed to ipa_is_param_called, changed
4034         to access descriptors. Renamed all users.
4035         * ipa-cp.c (ipcp_init_cloned_node): Call
4036         ipa_initialize_node_params instead of ipa_count_formal_params and
4037         ipa_create_param_decls_array.
4038         (ipcp_analyze_node): Likewise.
4039         (ipcp_get_ith_lattice): Renamed to ipcp_get_lattice, changed to access
4040         descriptors.  Renamed all users.
4041         (ipcp_initialize_node_lattices): Remove allocation.
4042         * ipa-inline.c (inline_indirect_intraprocedural_analysis): Call
4043         ipa_initialize_node_params instead of ipa_count_formal_params and
4044         ipa_create_param_decls_array.
4045         * ipa-prop.c (ipa_create_param_decls_array): Renamed to
4046         ipa_populate_param_decls, made static, added parameter info,
4047         renamed mt to node, removed allocation, changed to use
4048         descriptors.
4049         (ipa_count_formal_params): Made static, added parameter info,
4050         renamed mt to node.
4051         (ipa_initialize_node_params): New function.
4052         (ipa_check_stmt_modifications): Changed to use descriptors.
4053         (ipa_detect_param_modifications): Removed allocation, changed to
4054         use descriptors.
4055         (ipa_note_param_call): Changed to use descriptors.
4056         (ipa_analyze_params_uses): Removed allocation.
4057         (ipa_free_node_params_substructures): Changed to use descriptors.
4058         (ipa_edge_duplication_hook): Use the unused attribute.
4059         (ipa_node_duplication_hook): Use the unused attribute, changed to
4060         use descriptors, changed to duplicate descriptors.
4061
4062         * ipa-inline.c (cgraph_mark_inline_edge): New parameter new_edges,
4063         changed all callers.  Call ipa_propagate_indirect_call_infos if doing
4064         indirect inlining.  Made static.
4065         (cgraph_decide_inlining): Freeing ipa-prop structures after inlining
4066         functions called only once.
4067         (cgraph_decide_recursive_inlining): Don't call
4068         ipa_propagate_indirect_call_infos, pass new_edges to
4069         cgraph_mark_inline_edge instead.
4070         (cgraph_decide_inlining_of_small_functions): Don't call
4071         ipa_propagate_indirect_call_infos, pass new_edges to
4072         cgraph_mark_inline_edge instead.
4073         (cgraph_decide_inlining): Don't call
4074         ipa_propagate_indirect_call_infos.
4075         * ipa-prop.c: Check that vectors are allocated.
4076
4077         * ipa-inline.c (cgraph_mark_inline_edge): Returns boolean, true
4078         iff a new cgraph edges have been created.
4079         (cgraph_decide_inlining): New variable redo_always_inline.
4080         Flattening and always_inlining loop until callgraph stabilizes.
4081         * ipa-prop.c (update_call_notes_after_inlining): Returns boolean,
4082         true iff new cgraph edges have been created.
4083         (propagate_info_to_inlined_callees): Likewise.
4084         (ipa_propagate_indirect_call_infos): Likewise.
4085
4086 2008-09-11  Richard Guenther  <rguenther@suse.de>
4087
4088         * tree-vectorizer.c (slpeel_add_loop_guard): Fix types.
4089         (set_prologue_iterations): Likewise.
4090         * tree-vect-transform.c (vect_create_addr_base_for_vector_ref):
4091         Likewise.
4092         (vect_update_init_of_dr): Likewise.
4093         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Fix
4094         type verification.
4095         * fold-const.c (fold_unary): Do not generate calculations
4096         in sub-types.
4097
4098 2008-09-11  Paolo Bonzini  <bonzini@gnu.org>
4099
4100         * dojump.c (do_jump) [BIT_AND_EXPR]: Move below.  Fall through to
4101         TRUTH_AND_EXPR for boolean (1-bit precision) expressions.
4102         (do_jump) [BIT_IOR_EXPR]: Compile as TRUTH_OR_EXPR.
4103
4104         * tree-flow.h (simplify_stmt_using_ranges): Accept a GSI, return
4105         a bool.
4106         * tree-ssa-propagate.c (substitute_and_fold): Pass a GSI to
4107         VRP's simplify_stmt_using_ranges.  Do simplify_stmt_using_ranges
4108         before finalizing the changes.
4109         * tree-vrp.c (extract_range_from_binary_expr): Add limited support
4110         for BIT_IOR_EXPR.
4111         (simplify_truth_ops_using_ranges): New.
4112         (simplify_div_or_mod_using_ranges, simplify_abs_using_ranges,
4113         simplify_cond_using_ranges, simplify_switch_using_ranges): Return
4114         whether a simplification was made.
4115         (simplify_stmt_using_ranges): Ditto, and accept a GSI.  For GS_ASSIGN,
4116         use a switch statement and also call simplify_truth_ops_using_ranges.
4117
4118 2008-09-11  Jan Hubicka  <jh@suse.cz>
4119
4120         * ggc-common.c (loc_array): Make static.
4121         * dce.c (rest_of_handle_ud_dce): Free worklist.
4122
4123 2008-09-11  Jan Hubicka  <jh@suse.cz>
4124
4125         * cgraph.c (cgraph_release_function_body): Plug memory leak on
4126         ipa_transforms_to_apply and CFG; ggc_free gimple df and struct
4127         function so we are sure we do not dangle it forever.
4128         * function.c (outer_function_chain, find_function_data): Remove.
4129         (function_context_stack): New.
4130         (push_function_context, pop_function_context): Update.
4131         * function.h (struct function): Remove pointer outer.
4132         (outer_function_chain, find_function_data): Remove.
4133         * stmt.c (force_label_rtx): Remove dead call of find_function_data.
4134
4135 2008-09-11  Jan Hubicka  <jh@suse.cz>
4136
4137         PR middle-end/37448
4138         * cgraph.c (cgraph_create_edge): Use !cgraph_edge for sanity check.
4139
4140 2008-09-11  Jan Hubicka  <jh@suse.cz>
4141
4142         * tree-ssa-pre.c (phi_translate_1): Fix memory leak
4143
4144 2008-09-11  Jan Hubicka  <jh@suse.cz>
4145
4146         * tree-ssa.c (redirect_edge_var_map_clear): Fix formatting.
4147         (free_var_map_entry): New function.
4148         (redirect_edge_var_map_destroy): Use it.
4149
4150 2008-09-11  Jan Hubicka  <jh@suse.cz>
4151
4152         PR middle-end/37448
4153         * tree-inline.c (add_lexical_block): Replace with ...
4154         (prepend_lexical_block): ... prepend at begginig.
4155         (remap_blocks): Use it and reverse later.
4156         (expand_call_inline): Use prepend_lexical_block.
4157
4158 2008-09-11  Jan Hubicka  <jh@suse.cz>
4159
4160         * gimplify.c (pop_gimplify_context): Free bind_expr_stack.
4161
4162 2008-09-11  Jan Hubicka  <jh@suse.cz>
4163
4164         * function.c (free_after_compilation): Call insn_locators_free.
4165         * cfglayout.c (insn_locators_free): New function.
4166         * rtl.h (insn_locators_free): Declare.
4167
4168 2008-09-11  Jan Hubicka  <jh@suse.cz>
4169
4170         * ifcvt.c (check_cond_move_block): Make regs argument pointer to
4171         vector pointer.
4172         (cond_move_process_if_block): Update call.
4173
4174 2008-09-11  Jan Hubicka  <jh@suse.cz>
4175
4176         * toplev.c (dump_memory_report): Call dump_vec_loc_statistics.
4177         * vec.c: Include hashtab.h
4178         (vec_descriptor, ptr_hash_entry): New structures.
4179         (vec_desc_hash, vec_ptr_map): New static variables.
4180         (hash_descriptor, eq_descriptor, hash_ptr, eq_ptr, vec_descriptor,
4181         register_overhead, free_overhead, vec_heap_free): New functions.
4182         (vec_gc_o_reserve_1): ggc_free when resizing to 0.
4183         (vec_heap_o_reserve_1): free when resizing to 0; add statistics.
4184         (cmp_statistic, add_statistics, dump_vec_loc_statistics):
4185         New functions.
4186
4187 2008-09-11  Ira Rosen  <irar@il.ibm.com>
4188
4189         PR tree-optimization/37474
4190         * tree-vect-analyze.c (vect_supported_load_permutation_p): Check the
4191         length of load permutation.
4192
4193 2008-09-11  Andreas Schwab  <schwab@suse.de>
4194
4195         * config/m68k/m68k.h (IRA_COVER_CLASSES): Define.
4196
4197 2008-09-11  Jakub Jelinek  <jakub@redhat.com>
4198
4199         PR target/37382
4200         * expmed.c (extract_low_bits): Avoid creating invalid subregs.
4201         * dse.c (find_shift_sequence): Use extract_low_bits instead of
4202         simplify_gen_subreg.
4203
4204 2008-09-11  Ira Rosen  <irar@il.ibm.com>
4205
4206         * tree-vect-transform.c (vectorizable_store): Use the rhs vector type
4207         for alias check.
4208
4209 2008-09-10  Jakub Jelinek  <jakub@redhat.com>
4210
4211         PR middle-end/37338
4212         * gimplify.c (gimplify_body): Call default_rtl_profile.
4213
4214         PR target/36904
4215         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): Return NULL
4216         instead of tok->val.node if not expanding to something else.  Handle
4217         intervening CPP_PADDING tokens.
4218         (altivec_categorize_keyword): Remove unneeded comparisons.
4219
4220 2008-09-10  Richard Guenther  <rguenther@suse.de>
4221
4222         * tree-ssa-pre.c (phi_translate_1): Fix memory leak.
4223
4224 2008-09-10  Richard Guenther  <rguenther@suse.de>
4225
4226         PR middle-end/37432
4227         * tree-inline.c (insert_init_stmt): Make sure to not
4228         insert invalid gimple stores.
4229
4230 2008-09-10  Sebastian Pop  <sebastian.pop@amd.com>
4231
4232         PR tree-optimization/37388
4233         * toplev.c (process_options): Fail and warn when graphite
4234         flags are used, but the compiler has not been configured
4235         with graphite libraries.
4236         * graphite.c (graphite_transform_loops): Remove printfs
4237         to dump_file for the case when graphite is not available.
4238
4239 2008-09-10  H.J. Lu  <hongjiu.lu@intel.com>
4240
4241         PR target/37434:
4242         * config/i386/i386.c (ix86_expand_vector_init_interleave): Force
4243         the even element into register.
4244         (ix86_expand_vector_init_general): Don't use
4245         ix86_expand_vector_init_interleave on V16QImode and V8HImode
4246         if we can't move from GPR to SSE register directly.
4247
4248 2008-09-10  Bernd Schmidt  <bernd.schmidt@analog.com>
4249
4250         * config/bfin/bfin.c (workaround_speculation): Correct algorithm to
4251         not lose track of the number of NOPs needed.  Number of NOPs needed
4252         for sync vs. loads workaround was switched; corrected.  Run second
4253         pass for all workarounds.  No NOPs needed after call insns.  Change
4254         second pass to use find_next_insn_start and find_load helpers in order
4255         to properly detect parallel insns.
4256         * config/bfin/bfin.md (cbranch_with_nops): Increase length.
4257
4258 2008-09-10  Jan Hubicka  <jh@suse.cz>
4259
4260         * value-prof.c (gimple_ic): Fix tuplification bug.
4261         * sched-deps.c (sched_insns_conditions_mutex_p): Silence unitialized
4262         var warning.
4263
4264 2008-09-10  Jakub Jelinek  <jakub@redhat.com>
4265
4266         PR tree-optimization/37353
4267         * tree-call-cdce.c (cond_dead_built_in_calls): Remove.
4268         (shrink_wrap_conditional_dead_built_in_calls): Add calls argument, use
4269         calls instead of cond_dead_built_in_calls.
4270         (tree_call_cdce): Add cond_dead_built_in_calls automatic variable,
4271         initalize the vector only before adding first entry.  Use VEC_safe_push
4272         instead of VEC_quick_push.  Pass cond_dead_built_in_calls to
4273         shrink_wrap_conditional_dead_built_in_calls call.
4274
4275 2008-09-10  Ira Rosen  <irar@il.ibm.com>
4276
4277         PR tree-optimization/37385
4278         * tree-vect-transform.c (vect_create_data_ref_ptr): Add a new
4279         argument, and use it as a vector type if not NULL.
4280         (vectorizable_store): Call vect_create_data_ref_ptr with the type of
4281         vectorized rhs.
4282         (vect_setup_realignment): Call vect_create_data_ref_ptr with
4283         additional argument.
4284         (vectorizable_load): Likewise.
4285
4286 2008-09-10  Jakub Jelinek  <jakub@redhat.com>
4287
4288         * config/i386/i386.md (SWI32): New mode iterator.
4289         (jcc_fused_1, jcc_fused_2, jcc_fused_3, jcc_fused_4): Use it instead
4290         of SWI.
4291
4292 2008-09-09  Vladimir Makarov  <vmakarov@redhat.com>
4293
4294         PR rtl-optimization/37435
4295         * caller-save.c (insert_restore, insert_save): Check the mode by
4296         reg_save_code.
4297
4298 2008-09-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4299
4300         PR other/37265
4301         * dwarf2asm.c (dw2_force_const_mem): Use unstripped symbol name for
4302         splay tree lookup.
4303         (dw2_output_indirect_constant_1): Use unstripped name in symbol
4304         reference.
4305
4306 2008-09-09  Sandra Loosemore  <sandra@codesourcery.com>
4307
4308         * doc/invoke.texi (ARM Options): Correct errors in discussion
4309         of -mfloat-abi, -mhard-float, and -msoft-float.
4310
4311 2008-09-09  Jakub Jelinek  <jakub@redhat.com>
4312             Jan Hubicka  <jh@suse.cz>
4313
4314         PR middle-end/37356
4315         * tree-inline.c (copy_bb): Insert stmt into copy_basic_block before
4316         calling gimple_regimplify_operands on it.  Iterate over all newly
4317         added statements, not just the last one.
4318         (insert_init_stmt): Insert stmt into seq first, then call
4319         gimple_regimplify_operands on it.  Don't create new gimplification
4320         context, nor find referenced vars.
4321
4322 2008-09-09  Jakub Jelinek  <jakub@redhat.com>
4323
4324         PR other/37419
4325         * ipa-prop.h (ipa_propagate_indirect_call_infos): Change last argument
4326         to pointer to vector pointer.
4327         * ipa-prop.c (ipa_propagate_indirect_call_infos,
4328         propagate_info_to_inlined_callees): Likewise.
4329         (update_call_notes_after_inlining): Likewise.  Push new indirect edge
4330         to *new_edges instead of new_edges.  Reread IPA_EDGE_REF after
4331         ipa_check_create_edge_args.
4332         * ipa-inline.c (cgraph_decide_recursive_inlining): Change last
4333         argument to pointer to vector pointer.
4334         (cgraph_decide_inlining_of_small_function): Adjust
4335         cgraph_decide_recursive_inlining and ipa_propagate_indirect_call_infos
4336         calls.
4337
4338         PR target/37438
4339         * config/i386/i386.md (zero_extendqihi2_movzbl): Enable when
4340         optimizing for size, not speed.
4341
4342         PR rtl-optimization/37408
4343         * function.c (assign_parm_find_stack_rtl): Set correct MEM_SIZE
4344         if parm is promoted.
4345
4346 2008-09-09  Sebastian Pop  <sebastian.pop@amd.com>
4347
4348         PR tree-optimization/37375
4349         * tree-scalar-evolution.c (scev_info_str): Add field
4350         instantiated_below.
4351         (new_scev_info_str, eq_scev_info, find_var_scev_info,
4352         set_scalar_evolution, get_scalar_evolution, get_instantiated_value,
4353         set_instantiated_value): Pass instantiated_below.
4354         (analyze_scalar_evolution_1, analyze_scalar_evolution): Update calls
4355         to above functions.
4356         (instantiate_scev_1, instantiate_scev): Pass a basic block above which
4357         the definitions are not instantiated.
4358
4359         * tree-scalar-evolution.h (instantiate_scev): Update declaration.
4360         (block_before_loop): New.
4361         * tree-data-ref.c (dr_analyze_indices): Update uses of
4362         instantiate_scev.
4363         * graphite.c (block_before_scop): New.
4364         (loop_affine_expr, stmt_simple_for_scop_p, harmful_stmt_in_bb): Pass a
4365         basic block, not a loop for determining the parameters.
4366         (scopdet_edge_info, build_scops_1): Do not pass outermost loop in the
4367         scop.
4368         (idx_record_params, find_params_in_bb, find_scop_parameters,
4369         build_loop_iteration_domains, add_conditions_to_domain): Update calls
4370         to instantiate_scev.
4371
4372         * Makefile.in (cfgloopmanip.o): Add missing dependency on TREE_FLOW_H.
4373
4374 2008-09-09  Vladimir Makarov  <vmakarov@redhat.com>
4375
4376         PR rtl-opt/37333
4377
4378         * ira-build.c (ira_create_allocno): Setup frequency to 0.
4379
4380         * ira-color.c (update_conflict_hard_regno_costs): Remove assert.
4381         Check zero freq and increase if necessary.
4382
4383 2008-09-09  Vladimir Makarov  <vmakarov@redhat.com>
4384
4385         * ira-conflicts.c (process_regs_for_copy): Check that the hard
4386         regno is in the right range.  Add comments.
4387
4388 2008-09-09  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
4389
4390         * Makefile.in (mips-tfile.o-warn): Don't error out on mips-tfile.c
4391         warnings.
4392         * mips-tfile.c (copy_object): Cast alloca result to int *.
4393         * mips-tdump.c (print_symbol): Cast xmalloc return values to
4394         proper types.
4395         Rename class to sclass.
4396         (read_tfile): Cast read_seek return values to proper types.
4397         Cast xcalloc return value to proper type.
4398
4399 2008-09-09  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
4400
4401         * config/sol2.h (REGISTER_TARGET_PRAGMAS): Move ...
4402         * config/i386/sol2.h (REGISTER_SUBTARGET_PRAGMAS): ... here.
4403         * config/sparc/sol2.h (REGISTER_TARGET_PRAGMAS): ... and here.
4404
4405 2008-09-09  Jan Hubicka  <jh@suse.cz>
4406
4407         * profile.c (is_edge_inconsistent): Add debug output; ignore
4408         negative count on fake edges.
4409         (is_inconsistent): Add debug output.
4410
4411 2008-09-09  Andrey Belevantsev  <abel@ispras.ru>
4412
4413         * haifa-sched.c (advance_one_cycle): Do not print '\n' before printing
4414         dump message.
4415         (choose_ready): When first insn is chosen from the ready list, also
4416         dump it.
4417
4418 2008-09-09  Andrey Belevantsev  <abel@ispras.ru>
4419
4420         PR rtl-optimization/37360
4421         * haifa-sched.c (max_issue): Do not assert that we never issue more
4422         insns than issue_rate.  Add comment.
4423
4424 2008-09-09  Richard Guenther  <rguenther@suse.de>
4425
4426         * tree-cfg.c (verify_types_in_gimple_op): Remove.
4427         (verify_types_in_gimple_call): Rename to ...
4428         (verify_gimple_call): ... this.  Enhance.
4429         (verify_types_in_gimple_cond): Remove.
4430         (verify_gimple_comparison): New function ...
4431         (verify_types_in_gimple_assign): ... split out from here.
4432         (verify_types_in_gimple_return): Rename to ...
4433         (verify_gimple_return): ... this.  Enhance.
4434         (verify_types_in_gimple_switch): Rename to ...
4435         (verify_gimple_switch): ... this.  Enhance.
4436         (verify_gimple_goto): New function.
4437         (verify_types_in_gimple_phi): Rename to ...
4438         (verify_gimple_phi): ... this.  Enhance.
4439         (verify_types_in_gimple_stmt): Adjust calls to helper functions.
4440         Fold in single-statement cases from verify_types_in_gimple_seq_2.
4441         (verify_types_in_gimple_seq_2): Remove cases handled in
4442         verify_types_in_gimple_stmt.
4443
4444 2008-09-09  Bernd Schmidt  <bernd.schmidt@analog.com>
4445
4446         * config/bfin/bfin.c (n_regs_to_save): New static variable.
4447         (push_multiple_operation, pop_multiple_operation): Set it.
4448         (workaround_rts_anomaly): New function.
4449         (workaround_speculation): New function, broken out of bfin_reorg.
4450         (bfin_reorg): Call the new functions.
4451
4452 2008-09-09  Richard Guenther  <rguenther@suse.de>
4453
4454         PR middle-end/37354
4455         PR middle-end/30165
4456         * gimplify.c (gimplify_conversion): Change conversions of
4457         non-register type to VIEW_CONVERT_EXPRs.
4458         (gimplify_addr_expr): If we need to make the operand
4459         addressable make sure to use a properly initialized
4460         temporary for that so it gets a valid gimple store.
4461
4462 2008-09-09  Aldy Hernandez  <aldyh@redhat.com>
4463
4464         * function.h (struct function): Add function_start_locus.
4465         * cfgexpand.c (gimple_expand_cfg): Use it.
4466         * c-parser.c (c_parser_declaration_or_fndef): Set it.
4467
4468 2008-09-09  Richard Guenther  <rguenther@suse.de>
4469
4470         PR tree-optimization/37433
4471         * tree-ssa-ccp.c (ccp_fold): Properly guard folding of
4472         function calls.
4473
4474 2008-09-09  Richard Guenther  <rguenther@suse.de>
4475
4476         PR tree-optimization/37387
4477         * tree-ssa-ifcombine.c (ifcombine_iforif): Convert the name
4478         and bits to a common type.
4479
4480 2008-09-09  Nick Clifton  <nickc@redhat.com>
4481
4482         * config/v850/v850.md (return): Restore frame size restriction.
4483
4484 2008-09-09  Paolo Bonzini  <bonzini@gnu.org>
4485
4486         * c-common.c (c_expand_decl): Remove.
4487         * c-common.h (anon_aggr_type_p): Remove prototype.
4488         (DECL_ANON_UNION_ELEMS): Remove.
4489         * c-objc-common.h (LANG_HOOKS_EXPAND_DECL): Remove.
4490         * c-decl.c (anon_aggr_type_p): Remove.
4491         * langhooks-def.h (LANG_HOOKS_EXPAND_DECL): Remove.
4492         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_EXPAND_DECL.
4493         * langhooks.h (struct lang_hooks): Remove expand_decl.
4494         * langhooks.c (lhd_expand_decl): Remove.
4495         * stmt.c (expand_anon_union_decl): Remove.
4496         * tree.h (expand_anon_union_decl): Remove prototype.
4497
4498 2008-08-09  Andy Hutchinson  <hutchinsonandy@aim.com>
4499
4500         PR target/36609
4501         * config/avr/avr.c (avr_reorg): Create RTL for reversed compare with
4502         zero.
4503         * config/avr/avr.md  (QISI) : Define mode iterator.
4504         (negated_tst<mode>) : Redefine as split using mode macro.
4505         (reversed_tstqi): Define insn as reversed compare with zero.
4506         (reversed_tsthi): Ditto.
4507         (reversed_tstsi): Ditto.
4508
4509 2008-09-08  Jakub Jelinek  <jakub@redhat.com>
4510
4511         PR middle-end/37393
4512         * tree-inline.c (copy_bb): When replacing a gimple_call_va_arg_pack_p
4513         call stmt by new_call, clear gimple_bb on stmt after gsi_replace.
4514
4515         PR middle-end/37414
4516         * predict.c (optimize_function_for_size_p): Don't segfault if
4517         FUN is NULL.
4518         * fold-const.c (LOGICAL_OP_NON_SHORT_CIRCUIT, fold_truthop,
4519         tree_swap_operands_p): Don't test cfun != NULL before calling
4520         optimize_function_for_s*_p.
4521
4522 2008-09-08  Eric Botcazou  <ebotcazou@adacore.com>
4523
4524         * ira-color.c (ira_reuse_stack_slot): Set slot_num on success at the
4525         end of the search.
4526
4527 2008-09-08  M R Swami Reddy <MR.Swami.Reddy@nsc.com>
4528
4529         * crx/crx.h (IRA_COVER_CLASSES): Define.
4530
4531 2008-09-08  Jakub Jelinek  <jakub@redhat.com>
4532
4533         PR middle-end/37337
4534         * tree-ssa-dom.c (optimize_stmt): Call maybe_clean_or_replace_eh_stmt
4535         even when a stmt has been gimple_modified_p, but after fold_stmt is
4536         not any longer.  Remove unneeded may_have_exposed_new_symbols
4537         initializations.
4538
4539 2008-09-08  Richard Guenther  <rguenther@suse.de>
4540
4541         PR tree-optimization/37421
4542         * tree-ssa-sccvn.c (visit_copy): Make sure to fully
4543         valueize the RHS.
4544
4545 2008-09-08  Jakub Jelinek  <jakub@redhat.com>
4546
4547         PR middle-end/37415
4548         * opts.c (common_handle_option): Handle OPT_ftree_store_ccp.
4549
4550 2008-09-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4551
4552         PR driver/37409
4553         * pa-hpux.h (LINK_SPEC): Strip -fwhole-program.
4554         * pa-hpux10.h (LINK_SPEC): Likewise.
4555         * pa-hpux11.h (LINK_SPEC): Likewise.
4556
4557 2008-09-07  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4558
4559         * pa32-regs.h (IRA_COVER_CLASSES): Define.
4560         * pa64-regs.h (IRA_COVER_CLASSES): Define.
4561
4562 2008-09-07  Helge Deller  <deller@gmx.de>
4563
4564         * pa/linux-atomic.c: New file.
4565         * pa/t-linux (LIB2FUNCS_STATIC_EXTRA): Define.
4566         * pa/t-linux64 (LIB2FUNCS_STATIC_EXTRA): Define.
4567
4568 2008-09-07  Richard Guenther  <rguenther@suse.de>
4569             Ira Rosen  <irar@il.ibm.com>
4570
4571         PR tree-optimization/36630
4572         * tree-vect-transform.c (vect_update_ivs_after_vectorizer):
4573         Call STRIP_NOPS before calling evolution_part_in_loop_num.
4574
4575 2008-09-07  Dorit Nuzman  <dorit@il.ibm.com>
4576             Ira Rosen  <irar@il.ibm.com>
4577
4578         PR tree-optimization/35642
4579         * config/rs6000/altivec.md (mulv8hi3): Implement.
4580
4581 2008-09-06  Jeff Law <law@redhat.com>
4582
4583         * h8300/h8300.h (IRA_COVER_CLASSES): Define.
4584
4585 2008-09-06  Jan Hubicka  <jh@suse.cz>
4586
4587         PR tree-optimization/14703
4588         * tree-ssa-live.c (remove_unused_scope_block_p): Remove ignored
4589         declarations.
4590         * passes.c (init_optimization_passes): Recompute inline parameters.
4591
4592 2008-09-06  Richard Sandiford  <rdsandiford@googlemail.com>
4593
4594         * config/mips/mips.c (mips_function_ok_for_sibcall): Check for
4595         DECL being null.
4596
4597 2008-09-06  Richard Sandiford  <rdsandiford@goolemail.com>
4598             Peter Fuerst  <post@pfrst.de>
4599
4600         * doc/invoke.texi: Document -mr10k-cache-barrier=.
4601         * doc/extend.texi: Document __builtin_mips_cache.
4602         * config/mips/mips-ftypes.def: Add a (VOID, SI, CVPOINTER) entry.
4603         * config/mips/mips.opt (mr10k-cache-barrier=): New option.
4604         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define
4605         __GCC_HAVE_BUILTIN_MIPS_CACHE.
4606         (TARGET_CACHE_BUILTIN, ISA_HAS_CACHE): New macros.
4607         * config/mips/mips.c (mips_r10k_cache_barrier_setting): New enum.
4608         (set_push_mips_isas): New variable.
4609         (mips_r10k_cache_barrier): New variable.
4610         (cache): New availability predicate.
4611         (mips_builtins): Add an entry for __builtin_mips_cache.
4612         (mips_build_cvpointer_type): New function.
4613         (MIPS_ATYPE_CVPOINTER): New macro.
4614         (mips_prepare_builtin_arg): Only use the insn's mode if the rtx's
4615         mode is VOIDmode.
4616         (r10k_simplified_address_p, r10k_simplify_address)
4617         (r10k_uncached_address_p, r10k_safe_address_p)
4618         (r10k_needs_protection_p_1, r10k_needs_protection_p_store)
4619         (r10k_needs_protection_p_call, r10k_needs_protection_p)
4620         (r10k_insert_cache_barriers): New functions.
4621         (mips_reorg_process_insns): Delete cache barriers after a
4622         branch-likely instruction.
4623         (mips_reorg): Call r10k_insert_cache_barriers.
4624         (mips_handle_option): Handle OPT_mr10k_cache_barrier_.
4625         * config/mips/mips.md (UNSPEC_MIPS_CACHE): New constant.
4626         (UNSPEC_R10K_CACHE_BARRIER): Likewise.
4627         (mips_cache, r10k_cache_barrier): New define_insns.
4628
4629 2008-09-06  Richard Sandiford  <rdsandiford@googlemail.com>
4630
4631         * ira-int.h (ira_zero_hard_reg_set, ira_one_hard_reg_set): Delete.
4632         * ira-color.c (setup_allocno_left_conflicts_num): Use
4633         hard_reg_set_equal_p instead of a comparison with
4634         ira_zero_hard_reg_set.
4635         * ira.c (setup_reg_subclasses): Likewise.
4636         (setup_cover_and_important_classes): Likewise.
4637         (setup_class_translate): Likewise.
4638         (setup_reg_class_intersect_union): Likewise.
4639         (ira_zero_hard_reg_set, ira_one_hard_reg_set): Delete.
4640         (ira_init_once): Don't initialize them.
4641
4642 2008-09-05  Vladimir Makarov  <vmakarov@redhat.com>
4643
4644         * doc/tm.texi (IRA_COVER_CLASSES): Fix a typo.
4645
4646 2008-09-05  Vladimir Makarov  <vmakarov@redhat.com>
4647
4648         * ira-color.c (ira_fast_allocation): Permit global allocno allocation.
4649
4650 2008-09-05  Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
4651
4652         Improved branch hints, safe hints, and scheduling.
4653
4654         * haifa-sched.c (sched_emit_insn) : Define.
4655         * sched-int.h (sched_emit_insn) : Add prototype.
4656         * doc/invoke.texi (-mdual-nops, -mhint-max-nops,
4657         -mhint-max-distance -msafe-hints) : Document.
4658         * config/spu/spu.c (spu_flag_var_tracking): New.
4659         (TARGET_SCHED_INIT_GLOBAL, TARGET_SCHED_INIT,
4660         TARGET_SCHED_REORDER, TARGET_SCHED_REORDER2,
4661         TARGET_ASM_FILE_START): Define.
4662         (TARGET_SCHED_ADJUST_PRIORITY): Remove.
4663         (STOP_HINT_P, HINTED_P, SCHED_ON_EVEN_P): Define.
4664         (spu_emit_branch_hint): Add blocks argument.
4665         (insert_branch_hints, insert_nops): Remove.
4666         (pad_bb, insert_hbrp_for_ilb_runout, insert_hbrp, in_spu_reorg,
4667         uses_ls_unit, spu_sched_init_global, spu_sched_init,
4668         spu_sched_reorder, asm_file_start): New functions.
4669         (clock_var, spu_sched_length, pipe0_clock,
4670         pipe1_clock, prev_clock_var, prev_priority,
4671         spu_ls_first, prev_ls_clock): New static variables.
4672         * config/spu/spu.h (TARGET_DEFAULT): Add MASK_SAFE_HINTS.
4673         * config/spu.md (iprefetch): Add operand, make it clobber MEM.
4674         (nopn_nv): Add a non-volatile version of nop.
4675         * config/spu/spu.opt (-mdual-nops, -mhint-max-nops,
4676         -mhint-max-distance, -msafe-hints): New options.
4677
4678 2008-09-05  Janis Johnson  <janis187@us.ibm.com>
4679             Samuel Tardieu  <sam@rfc1149.net>
4680
4681         * opts.c (decode_options): Combine nested if statements.
4682
4683         PR target/37283
4684         * opts.c (decode_options): Handle more relationships among
4685         unit-at-a-time, toplevel-reorder, and section-anchors.
4686
4687 2008-09-05  David Daney  <ddaney@avtrex.com>
4688
4689         * doc/install.texi (--enable-reduced-reflection): Document new option.
4690
4691 2008-09-05  Bob Wilson  <bob.wilson@acm.org>
4692
4693         * config/xtensa/predicates.md (nonimmed_operand, mem_operand): Use
4694         constantpool_mem_p.
4695         (constantpool_operand): New.
4696         (move_operand): Disallow sub-word modes for the constant pool.
4697         * config/xtensa/xtensa.c (TARGET_SECONDARY_RELOAD): Define.
4698         (xtensa_secondary_reload_class): Replace with....
4699         (xtensa_secondary_reload): this function.  Remove SIGN_EXTEND check.
4700         Set icode for sub-word reloads from the constant pool.
4701         * config/xtensa/xtensa.h (SECONDARY_INPUT_RELOAD_CLASS): Delete.
4702         (SECONDARY_OUTPUT_RELOAD_CLASS): Delete.
4703         * config/xtensa/xtensa.md (reload<mode>_literal): New.
4704         * config/xtensa/xtensa-protos.h: Update prototypes.
4705
4706 2008-09-05  Joseph Myers  <joseph@codesourcery.com>
4707
4708         * config/mips/mips.h (enum reg_class): Add FRAME_REGS.
4709         (REG_CLASS_NAMES): Update.
4710         (REG_CLASS_CONTENTS): Update.
4711         * config/mips/mips.c (mips_regno_to_class): Use FRAME_REGS instead
4712         of ALL_REGS for regs 77 and 78.
4713         * function.c (instantiate_virtual_regs_in_insn): Assert that
4714         return value of simplify_gen_subreg is not NULL.
4715
4716 2008-09-05  Paolo Bonzini  <bonzini@gnu.org>
4717
4718         * emit-rtl.c (gen_rtvec): Rewrite not using gen_rtvec_v.
4719         (gen_rtvec_v): Fix coding standards.
4720
4721 2008-09-04  Jan Hubicka  <jh@suse.cz>
4722
4723         * i386.c (decide_alg): Be more conservative about optimizing for size.
4724
4725 2008-09-04  Ian Lance Taylor  <iant@google.com>
4726
4727         * varasm.c (narrowing_initializer_constant_valid_p): New
4728         static function.
4729         (initializer_constant_valid_p): Call it.
4730
4731 2008-09-04  Jeff Law  <law@redhat.com>
4732
4733         * fold-const.c (native_encode_real): Fix computation of WORDS.
4734         (native_interpret_real): Likewise.
4735
4736 2008-09-04  Janis Johnson  <janis187@us.ibm.com>
4737
4738         * config/rs6000/t-rs6000: Remove target gt-rs6000.h.
4739
4740 2008-09-04  Vladimir Makarov  <vmakarov@redhat.com>
4741
4742         * ira-conflicts.c (process_regs_for_copy): Check insn to check
4743         that the cost is already taken into account in ira-costs.c
4744
4745         * ira-int.h (ira_debug_copy, ira_debug_copies): New.
4746
4747         * ira-build.c (print_copy, print_copies, ira_debug_copy,
4748         ira_debug_copies): New.
4749         (ira_bulid): Call print_copies.
4750
4751         * doc/tm.texi (IRA_COVER_CLASSES): Fix the description.
4752
4753 2008-09-04  Samuel Tardieu  <sam@rfc1149.net>
4754
4755         PR target/32783
4756         * config/rs6000/rs6000.c (optimization_options): Remove check of
4757         flag_toplevel_order.
4758
4759 2008-09-04  Adam Nemet  <anemet@caviumnetworks.com>
4760
4761         * config/mips/mips.h (ISA_HAS_SEQ_SNE): New macro.
4762         * config/mips/mips.c (mips_expand_scc): Also expand seq and sne if
4763         second operand is a reg_imm10_operand.
4764         * config/mips/mips.md (*seq_<GPR:mode><GPR2:mode>_seq,
4765         *sne_<GPR:mode><GPR2:mode>_sne): New patterns.
4766         (*seq_<GPR:mode><GPR2:mode>): Rename to
4767         *seq_zero_<GPR:mode><GPR2:mode>.  Don't match if
4768         ISA_HAS_SEQ_SNE.
4769         (*seq_<GPR:mode><GPR2:mode>_mips16): Rename to
4770         *seq_zero_<GPR:mode><GPR2:mode>_mip16.  Don't match if
4771         ISA_HAS_SEQ_SNE.
4772         (*sne_<GPR:mode><GPR2:mode>): Rename to
4773         *sne_zero_<GPR:mode><GPR2:mode>.  Don't match if
4774         ISA_HAS_SEQ_SNE.
4775
4776 2008-09-04  Adam Nemet  <anemet@caviumnetworks.com>
4777
4778         * config/mips/mips.h (ISA_HAS_EXTS): New macro.
4779         * config/mips/mips.md (*ashr_trunc<mode>): Name the pattern
4780         combining an arithmetic right shift by more than 31 and a
4781         trunction.  Don't match for out-of-range shift amounts.  Set
4782         attribute mode to <MODE>.
4783         (*lshr32_trunc<mode>): Name the pattern combining a logical right
4784         shift by 32 and and a truncation.  Set attribute mode to <MODE>.
4785         (*<optab>_trunc<mode>_exts): New pattern for truncated right
4786         shifts by less than 32.
4787         (extv): Change predicate on first operand to accept registers.
4788         Change predicate of the other operands from immediate_operand to
4789         const_int_operand.  Expand exts when source is a register.
4790         (extzv): Change predicate of the constant operands from
4791         immediate_operand to const_int_operand.
4792         (extzv<mode>): Change predicate of the constant operands from
4793         immediate_operand to const_int_operand and no constraint. Also
4794         remove mode.
4795         (*extzv_trunc<mode>_exts): New pattern.
4796
4797 2008-09-04  Adam Nemet  <anemet@caviumnetworks.com>
4798
4799         * config/mips/mips.h (ISA_HAS_CINS): New macro.
4800         * config/mips/mips-protos.h (mask_low_and_shift_p,
4801         mask_low_and_shift_len): Declare.
4802         * config/mips/mips.c (mask_low_and_shift_p,
4803         mask_low_and_shift_len): New functions.
4804         (mips_print_operand): Handle new operand prefix "m".
4805         * config/mips/mips.md (*cins<mode>): New pattern.
4806
4807 2008-09-04  Bernd Schmidt  <bernd.schmidt@analog.com>
4808
4809         * config/bfin/bfin.c (gen_one_bundle): Don't create new nops when
4810         optimizing for size.
4811
4812 2008-09-04  Richard Sandiford  <rdsandiford@googlemail.com>
4813
4814         * df-scan.c (df_get_entry_block_def_set): Add STACK_POINTER_REGNUM
4815         regardless of epilogue_completed.
4816
4817 2008-09-04  Vladimir Makarov  <vmakarov@redhat.com>
4818
4819         PR middle-end/37359
4820         * ira-lives.c (process_bb_node_lives): Check setjmp.
4821
4822 2008-09-04  Richard Sandiford  <rdsandiford@googlemail.com>
4823
4824         PR middle-end/37243
4825         * ira-build.c (form_loop_tree): Reverse BB walk.
4826         (create_bb_allocnos): Likewise.
4827         * ira-lives.c (make_regno_born_and_dead, regs_set): Delete.
4828         (mark_reg_store): Rename to...
4829         (mark_ref_live): ...this and take a df_ref argument instead of
4830         note_stores arguments.  Assert that we have a register.
4831         (mark_reg_clobber): Delete.
4832         (def_conflicts_with_inputs_p): New function.
4833         (mark_reg_conflicts): Delete.
4834         (mark_reg_death): Rename to...
4835         (mark_ref_dead): ...this and take a df_ref argument instead of
4836         a register.  Assert that we have a register.
4837         (process_bb_node_lives): Hoist frequency calculation out of
4838         instruction walk.  Convert from a forwards scan to a backwards scan.
4839         Use DF_REF_USES and DF_REF_DEFS instead of register notes and
4840         note_stores.  Remove EH_RETURN_DATA_REGNO and regs_set handling.
4841         (create_allocno_live_ranges): Don't create regs_set.
4842
4843 2008-09-04  Ian Lance Taylor  <iant@google.com>
4844
4845         * rtl.h (LABEL_REF_NONLOCAL_P): Don't check for REG_LABEL_OPERAND
4846         or REG_LABEL_TARGET.
4847         * calls.c (emit_library_call_value_1): Use MEM_P rather than
4848         comparing MODE with MEM.
4849         * gimple.c (gimple_build_predict): Cast END_PREDICTORS before
4850         comparing with GF_PREDICT_TAKEN.
4851         (gimple_get_lhs): Change code to enum gimple_code.
4852         (gimple_set_lhs): Likewise.
4853         * ifcvt.c (noce_process_if_block): Correct GET_MODE to GET_CODE.
4854         * omp-low.c (find_omp_clause): Change kind parameter to enum
4855         omp_clause_code.
4856         * tree-flow.h (find_omp_clause): Update declaration.
4857         * regrename.c (clear_dead_regs): Change kind parameter to enum
4858         reg_note.
4859         * reload1.c (eliminate_regs_1): Use REG_NOTE_KIND rather than
4860         GET_MODE.
4861         * see.c (see_get_extension_data): Change return type to enum
4862         entry_type.  Change UNKNOWN to NOT_RELEVANT, SIGN_EXTEND to
4863         SIGNED_EXTENDED_DEF, ZERO_EXTEND to ZERO_EXTENDED_DEF.
4864         (see_gen_normalized_extension): Change extension_code parameter to
4865         enum entry_type.
4866         (see_seek_pre_extension_expr): Change extension_code to enum
4867         entry_type.
4868         (see_merge_one_def_extension): Likewise.
4869         (see_handle_relevant_defs): Likewise.
4870         (see_handle_relevant_uses): Likewise.
4871         (see_analyze_one_def): Likewise.
4872         * tree-cfg.c (need_fake_edge_p): Compare gimple code with
4873         GIMPLE_ASM rather than ASM_EXPR.
4874         * tree-ssa-alias.c (is_escape_site): Compare gimple code with
4875         GIMPLE_RETURN rather than RETURN_EXPR.
4876         * tree-ssa-ccp.c (likely_value): Change code to enum gimple_code.
4877         (evaluate_stmt): Likewise.
4878         * tree-vect-analyze.c (vect_analyze_operations): Change relevance
4879         to enum vect_relevant.
4880         (vect_mark_stmts_to_be_vectorized): Change assertion to not
4881         compare gimple codes with tree codes.
4882
4883 2008-09-04  Paul Brook  <paul@codesourcery.com>
4884
4885         * config/arm/arm.c (arm_size_rtx_costs): Call cost function.
4886
4887 2008-09-04  Bernd Schmidt  <bernd.schmidt@analog.com>
4888
4889         * config/bfin/bfin.c (bfin_function_ok_for_sibcall): Restore a null
4890         pointer check lost in the recent no-unit-at-a-time patch.
4891
4892 2008-09-04  Jan Hubicka  <jh@suse.cz>
4893
4894         PR middle-end/37343
4895         * tree-switch-conversion.c (check_final_bb): Accept only IP
4896         invariants.
4897
4898 2008-09-04  Jan Hubicka  <jh@suse.cz>
4899
4900         * tree-vrp.c (vrp_evaluate_conditional_warnv_with_ops_using_ranges):
4901         Break out from ...
4902         (vrp_evaluate_conditional_warnv_with_ops): ... this one.  Add
4903         using_ranges argument.
4904         (vrp_evaluate_conditional): Avoid bogus warning for type range.
4905         (vrp_visit_cond_stmt): Update call of
4906         vrp_evaluate_conditional_warnv_with_ops
4907
4908 2008-09-04  Jan Hubicka  <jh@suse.cz>
4909
4910         PR tree-optimization/37345
4911         PR tree-optimization/37358
4912         PR tree-optimization/37357
4913         * tree.c (build_function_type_skip_args): Build distinct type copy;
4914         set TYPE_CONTEXT.
4915         (build_function_decl_skip_args): Set type of new decl not orig decl;
4916         clear DECL_VINDEX for methods turned into functions.
4917
4918 2008-09-04  Nick Clifton  <nickc@redhat.com>
4919
4920         * configure.ac (HAVE_GAS_LCOMM_WITH_ALIGNMENT): New assembler check.
4921         * configure: Regenerate.
4922         * config.in: Regenerate.
4923         * config/i386/bsd.h (ASM_OUTPUT_ALIGNED_LOCAL): Use .lcomm with an
4924         alignment field, if it is supported.
4925
4926 2008-09-04  Kai Tietz  <kai.tietz@onevision.com>
4927
4928         * config/i386/t-mingw32 (SHLIB_LC): Change order of import
4929         libraries.
4930
4931 2008-09-03  David Edelsohn  <edelsohn@gnu.org>
4932
4933         * config/rs6000/rs6000.c (processor_target_table): Do not
4934         enable VMX for POWER6.
4935
4936 2008-09-03  Anton Blanchard  <anton@samba.org>
4937
4938         * config/rs6000/rs6000.c (rs6000_split_lock_test_and_set): Do not
4939         emit memory barrier before operation.
4940
4941 2008-09-03  John David Anglin  <dave.anglin@nrc.cnrc.gc.ca>
4942
4943         PR testsuite/37325
4944         * config/pa/pa64-hpux.h (ASM_OUTPUT_EXTERNAL_REAL): Call
4945         default_elf_asm_output_external.
4946
4947 2008-09-03  Jeff Law  <law@redhat.com>
4948
4949         * h8300.c (expand_a_shift): Avoid invalid RTL sharing.
4950
4951 2008-09-03  Richard Henderson  <rth@redhat.com>
4952
4953         * config/alpha/alpha.c (alpha_split_lock_test_and_set): Move
4954         memory barrier to below the test-and-set.
4955         (alpha_split_lock_test_and_set_12): Likewise.
4956
4957 2008-09-03  Vladimir Makarov  <vmakarov@redhat.com>
4958
4959         PR rtl-opt/37243
4960
4961         * ira-int.h (ira_loop_tree_node): Rename mentioned_allocnos to
4962         all_allocnos.
4963
4964         * ira-color.c (print_loop_title): Use all_allocnos.
4965         (color_pass): Ditto.  Don't add border_allocnos.  Check that
4966         subloop allocno in the correspdoning bitmap all_allocnos.
4967
4968         * ira-emit.c (change_loop): Use all_allocnos.
4969
4970         * ira-build.c (create_loop_tree_nodes, finish_loop_tree_node): Ditto.
4971         (ira_create_allocno): Set up all_allocnos bit for the created allocno.
4972         (create_cap_allocno): Remove setting mentioned_allocnos.
4973         (create_insn_allocnos): Ditto.
4974         (remove_unnecessary_allocnos): Use all_allocnos.
4975         (check_allocno_creation): Check that allocnos are in the
4976         corresponding bitmap all_allocnos.
4977
4978 2008-09-03  Vladimir Makarov  <vmakarov@redhat.com>
4979
4980         PR rtl-opt/37243
4981
4982         * ira-conflicts.c (REG_SUBREG_P, go_through_subreg): New.
4983         (process_regs_for_copy): Process subregs.  Refine check when cost
4984         is taken into account in ira-costs.c.
4985         (process_reg_shuffles): Use REG_SUBREG_P.
4986         (add_insn_allocno_copies): Ditto.  Ignore modes.
4987
4988         * ira-color.c (conflict_allocno_vec): New.
4989         (COST_HOP_DIVISOR): New macro.
4990         (update_copy_costs_1): Use it.
4991         (update_conflict_hard_regno_costs): New function.
4992         (assign_hard_reg): Use it.
4993         (ira_color): Allocate and free conflict_allocno_vec.
4994
4995 2008-09-03  Vladimir Makarov  <vmakarov@redhat.com>
4996
4997         PR rtl-opt/37296
4998
4999         * ira-int.h (ira_sort_insn_chain): Remove.
5000
5001         * ira.c (basic_block_order_nums, chain_insn_order,
5002         chain_freq_compare, chain_bb_compare, ira_sort_insn_chain): Remove.
5003         (ira): Don't call ira_sort_insn_chain.
5004
5005         * reload1.c (reload): Don't call ira_sort_insn_chain.
5006
5007 2008-09-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5008
5009         PR middle-end/37293
5010         * cgraphunit.c (update_call_expr): Remove eh regions from statements
5011         which become non throw.
5012         (cgraph_function_versioning): Also clear DECL_WEAK.  Call
5013         update_call_expr after updating the flags on the decl.
5014
5015 2008-09-03  Jan Hubicka  <jh@suse.cz>
5016
5017         PR tree-optimization/37315
5018         * cgraph.c (cgraph_create_edge): Use gimple_has_body_p.
5019         * cgraphunit.c (verify_cgraph_node): drop gimple_body check.
5020         (cgraph_analyze_functions): Use node->analyzed
5021         (cgraph_mark_functions_to_output): Likewise.
5022         (cgraph_expand_function): All functions can be released after
5023         expanding.
5024         (cgraph_optimize): Use gimple_has_body_p.
5025         * ipa-inline.c (cgraph_clone_inlined_nodes): Use analyzed flag.
5026         (cgraph_decide_inlining_incrementally): Likewise.
5027         (inline_transform): Inline transform.
5028         * tree-inline.c (initialize_cfun): Do now shallow copy structure;
5029         copy fields needed.
5030         (inlinable_function_p): Drop gimple_body check.
5031         (expand_call_inline): Use gimple_has_body_p.
5032         * gimple.c (gimple_has_body_p): New.
5033         * gimple.h (gimple_has_body_p): Add prototype.
5034         * tree-cfg.c (execute_build_cfg): Remove gimple_body.
5035         (dump_function_to_file): Use gimple_has_body_p check.
5036
5037 2008-09-03  Jakub Jelinek  <jakub@redhat.com>
5038
5039         PR c++/37346
5040         * gimple.h (gimple_has_substatements): GIMPLE_OMP_CRITICAL has
5041         substatements.
5042         * tree-inline.c (remap_gimple_stmt): Handle GIMPLE_OMP_CRITICAL.
5043
5044 2008-09-03  Bernd Schmidt  <bernd.schmidt@analog.com>
5045
5046         From Michael Frysinger  <michael.frysinger@analog.com>
5047         * config/bfin/bfin.c (bfin_cpus[]): Add 0.1 for bf522, bf523, bf524,
5048         bf525, bf526, bf527, bf542, bf544, bf547, bf548, and bf549.  Add 0.2
5049         for bf538.
5050
5051 2008-09-03  Hari Sandanagobalane  <hariharan@picochip.com>
5052
5053         Add picoChip port.
5054         * doc/extend.texi: Document picoChip builtin functions.
5055         * doc/invoke.texi: Document picoChip options.
5056         * doc/contrib.texi: Add picoChip contribution.
5057         * doc/md.texi: Document picoChip constraints.
5058         * config.gcc: Add picochip-*-*.
5059         * config/picochip/: Add new port.
5060
5061 2008-09-03  Richard Guenther  <rguenther@suse.de>
5062
5063         PR tree-optimization/37328
5064         * tree-sra.c (sra_build_assignment): Gimplify properly.
5065         (generate_copy_inout): Take the correct stmt as definition,
5066         remove bogus assert.
5067
5068 2008-09-03  Bernd Schmidt  <bernd.schmidt@analog.com>
5069
5070         * config/bfin/bfin.c (bfin_expand_prologue): Honour no_stack_limit
5071         attributes.
5072
5073         From Michael Frysinger  <michael.frysinger@analog.com>
5074         * config/bfin/bfin.c (bfin_handle_option): Remove BF561 warning.
5075
5076 2008-09-03 Danny Smith  <dannysmith@usrs.sourceforge.net>
5077
5078         * gthr-win32.h (CONST_CAST2): Really make sure CONST_CAST2 is defined.
5079         (__gthread_setspecific): Revert 2008-08-31 change to
5080         __GTHREAD_HIDE_W32API case.  Apply it to !__GTHREAD_HIDE_W32API case.
5081
5082 2008-09-02  Aldy Hernandez  <aldyh@redhat.com>
5083
5084         * diagnostic.c (error_at): New.
5085         * toplev.h (error_at): New prototype.
5086         * c-typeck.c (build_array_ref): Call error_at instead of error.
5087         Pass location to pedwarn.
5088
5089 2008-09-02  Adam Nemet  <anemet@caviumnetworks.com>
5090
5091         * sel-sched.c (sel_hard_regno_rename_ok): Mark arguments unused.
5092
5093 2008-09-02  Jakub Jelinek  <jakub@redhat.com>
5094
5095         * dwarf2out.c (tree_add_const_value_attribute): Only handle
5096         VAR_DECL and CONST_DECL.
5097
5098 2008-09-02  H.J. Lu  <hongjiu.lu@intel.com>
5099             Jakub Jelinek  <jakub@redhat.com>
5100
5101         * config/i386/i386.c (X86_64_VARARGS_SIZE): Removed.
5102         (setup_incoming_varargs_64): Assume cum != NULL. Set/check
5103         ix86_varargs_gpr_size and ix86_varargs_fpr_size.  Use
5104         ix86_varargs_gpr_size instead of X86_64_REGPARM_MAX.
5105         Don't set ix86_save_varrargs_registers.
5106         (ix86_setup_incoming_varargs): Assume cum != NULL.
5107         (ix86_va_start): Check ix86_varargs_gpr_size and
5108         ix86_varargs_fpr_size instead of cfun->va_list_gpr_size and
5109         cfun->va_list_fpr_size, respectively.  Subtract 8*X86_64_REGPARM_MAX
5110         from frame pointer if ix86_varargs_gpr_size == 0.
5111         (ix86_compute_frame_layout): Updated.
5112         * config/i386/i386.h (ix86_save_varrargs_registers): Removed.
5113         (ix86_varargs_gpr_size): Define.
5114         (ix86_varargs_fpr_size): Likewise.
5115         (machine_function): Remove save_varrargs_registers.
5116         Add varargs_gpr_size and varargs_fpr_size.
5117
5118 2008-09-02  Jakub Jelinek  <jakub@redhat.com>
5119
5120         * config/alpha/alpha.c (va_list_skip_additions,
5121         alpha_stdarg_optimize_hook, alpha_gimplify_va_arg_1): Tuplify.
5122         (alpha_gimplify_va_arg): Call unshare_expr on second use of
5123         offset_field.
5124
5125         PR tree-optimization/36766
5126         * tree-cfg.c (gimple_purge_all_dead_eh_edges): Do nothing
5127         for already removed basic blocks.
5128
5129         PR target/36332
5130         * real.c (real_maxval): Clear a lower bit to make real_maxval
5131         match get_max_float for IBM long double format.
5132
5133 2008-09-02  Andreas Schwab  <schwab@suse.de>
5134
5135         * configure.ac: Use m4_quote to quote the expansion of m4_do.
5136         * configure: Regenerate.
5137
5138 2008-09-02  Richard Sandiford  <rdsandiford@googlemail.com>
5139
5140         * simplify-rtx.c (simplify_binary_operation_1): Check for CONST,
5141         SYMBOL_REF and LABEL_REF when applying plus_constant, instead of
5142         checking for a non-VOID CONSTANT_P.
5143
5144 2008-09-02  Jan Hubicka  <jh@suse.cz>
5145
5146         * predict.c (pass_strip_predict_hints): Avoid bugs dump file.
5147         * expmed.c (expand_divmod): Fix test of smod_pow2_cheap and
5148         sdiv_pow2_cheap
5149
5150 2008-09-02  H.J. Lu  <hongjiu.lu@intel.com>
5151
5152         * expr.c (emit_group_store): Don't assert stack temp mode size.
5153
5154 2008-09-02  Sebastian Pop  <sebastian.pop@amd.com>
5155             Tobias Grosser  <grosser@fim.uni-passau.de>
5156             Jan Sjodin  <jan.sjodin@amd.com>
5157             Harsha Jagasia  <harsha.jagasia@amd.com>
5158             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
5159             Konrad Trifunovic  <konrad.trifunovic@inria.fr>
5160             Adrien Eliche  <aeliche@isty.uvsq.fr>
5161
5162         Merge from graphite branch.
5163         * graphite.c: New.
5164         * graphite.h: New.
5165         * tree-loop-linear.c (perfect_loop_nest_depth): Export.
5166         * doc/invoke.texi (-floop-block, -floop-interchange,
5167         -floop-strip-mine): Document new flags.
5168         * tree-into-ssa.c (gimple_vec): Moved...
5169         * tree-loop-distribution.c (rdg_component): Moved...
5170         * cfgloopmanip.c: Include tree-flow.h.
5171         (update_dominators_in_loop): New.
5172         (create_empty_if_region_on_edge): New.
5173         (create_empty_loop_on_edge): New.
5174         (loopify): Use update_dominators_in_loop.
5175         * tree-pass.h (pass_graphite_transforms): Declared.
5176         * configure: Regenerate.
5177         * tree-phinodes.c (make_phi_node): Export.
5178         (add_phi_node_to_bb): New, split from create_phi_node.
5179         * tree-chrec.c (for_each_scev_op): New.
5180         * tree-chrec.h (for_each_scev_op): Declared.
5181         * tree-ssa-loop-ivopts.c (get_phi_with_result): New.
5182         (remove_statement): Call get_phi_with_result.
5183         * config.in (HAVE_cloog): Undef.
5184         * gdbinit.in (pgg): New.
5185         * timevar.def (TV_GRAPHITE_TRANSFORMS): New.
5186         * tree-ssa-loop.c (graphite_transforms): New.
5187         (gate_graphite_transforms): New.
5188         (pass_graphite_transforms): New.
5189         * configure.ac (PPLLIBS, PPLINC, CLOOGLIBS, CLOOGINC,
5190         HAVE_cloog): Defined.
5191         * tree-vectorizer.c (rename_variables_in_bb): Export.
5192         * tree-data-ref.c (dr_may_alias_p): Export.
5193         (stmt_simple_memref_p): New.
5194         (find_data_references_in_stmt): Export.
5195         (find_data_references_in_loop): Export.
5196         (create_rdg_edge_for_ddr): Initialize RDGE_RELATION.
5197         (create_rdg_edges_for_scalar): Initialize RDGE_RELATION.
5198         (create_rdg_vertices): Export.
5199         (build_empty_rdg): New.
5200         (build_rdg): Call build_empty_rdg.  Free dependence_relations.
5201         * tree-data-ref.h (rdg_component): ... here.
5202         (scop_p): New.
5203         (struct data_reference): Add a field scop.
5204         (DR_SCOP): New.
5205         (find_data_references_in_loop): Declared.
5206         (find_data_references_in_stmt): Declared.
5207         (create_rdg_vertices): Declared.
5208         (dr_may_alias_p): Declared.
5209         (stmt_simple_memref_p): Declared.
5210         (struct rdg_edge): Add a field ddr_p relation.
5211         (build_empty_rdg): Declared.
5212         * lambda.h (lambda_matrix): Declare a VEC of.
5213         (find_induction_var_from_exit_cond): Declared.
5214         (lambda_vector_compare): New.
5215         * common.opt (fgraphite, floop-strip-mine,
5216         floop-interchange, floop-block): New flags.
5217         * lambda-code.c (find_induction_var_from_exit_cond): Export.
5218         * cfgloop.c (is_loop_exit): New.
5219         * cfgloop.h (is_loop_exit): Declared.
5220         (create_empty_if_region_on_edge): Declared.
5221         (create_empty_loop_on_edge): Declared.
5222         * tree-flow.h (add_phi_node_to_bb): Declared.
5223         (make_phi_node): Declared.
5224         (rename_variables_in_bb): Declared.
5225         (perfect_loop_nest_depth): Declared.
5226         (graphite_transform_loops): Declared.
5227         * Makefile.in (cfgloopmanip.o): Depend on TREE_FLOW_H.
5228         (graphite.o-warn): Add -Wno-error.
5229         (PPLLIBS, PPLINC, CLOOGLIBS, CLOOGINC): Declared.
5230         (LIBS): Add GMPLIBS, CLOOGLIBS, PPLLIBS.
5231         (INCLUDES): Add PPLINC, CLOOGINC.
5232         (OBJS-common): Add graphite.o.
5233         (graphite.o): Add rule.
5234         * gimple.h (gimple_vec): ... here.
5235         * tree-cfg.c (print_loops): Start printing at ENTRY_BLOCK_PTR.
5236         * passes.c (init_optimization_passes): Schedule
5237         pass_graphite_transforms.
5238
5239 2008-09-02  Samuel Tardieu  <sam@rfc1149.net>
5240
5241         PR target/37283
5242         * opts.c (decode_options): Move processing of -fno-unit-at-a-time
5243         and -fno-toplevel-reorder after handle_options.
5244
5245 2008-09-02  Paul Brook  <paul@codesourcery.com>
5246
5247         * config/arm/arm.c (arm_tune_cortex_a9): Define.
5248         (arm_override_options): Set arm_tune_cortex_a9.
5249         (arm_rtx_costs_1): Make register shifts more expensive on Cortex-A9.
5250         (arm_issue_rate): Handle cortexa9.
5251         * config/arm/arm.h (arm_tune_cortex_a9): Declare.
5252         * config/arm/arm-cores.def: Add cortex-a9.
5253         * config/arm/arm-tune.md: Regenerate.
5254         * config/arm/arm.md: Include cortex-a9.md.
5255         (generic_sched, generic_vfp): Add cortexa9.
5256         * config/arm/cortex-a9.md: New file.
5257
5258 2008-09-02  Richard Guenther  <rguenther@suse.de>
5259
5260         PR tree-optimization/37327
5261         * tree-vrp.c (register_new_assert_for): Make sure to not have
5262         TREE_OVERFLOW set on the bound.
5263
5264 2008-09-02  Alexander Monakov  <amonakov@ispras.ru>
5265
5266         Fixed typo in date of the 2008-09-01 MOVE_RATIO commit.
5267
5268         * config/ia64/ia64.opt (msched-ar-data-spec): Default to 1.
5269         * config/ia64/ia64.c (ia64_set_sched_flags): Always initialize
5270         spec_info->mask.
5271
5272 2008-09-02  Victor Kaplansky  <victork@il.ibm.com>
5273
5274         * gcc/config/spu/spu.md (divdf3): Removed.
5275
5276 2008-09-02  Jakub Jelinek  <jakub@redhat.com>
5277
5278         PR tree-optimization/37095
5279         * cgraph.c (cgraph_node): When creating new cgraph node after
5280         assembler_name_hash has been populated, record it in the hash
5281         table.
5282
5283 2008-09-01  Paul Brook  <paul@codesourcery.com>
5284
5285         * doc/invoke.texi: Document -mword-relocations.
5286         * config/arm/uclinux-elf.h (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
5287         * config/arm/symbian.h (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
5288         * config/arm/vxworks.h (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
5289         * config/arm/arm.c (arm_split_constant): Use arm_emit_movpair.
5290         (arm_rtx_costs_1, arm_size_rtx_costs): Handle HIGH and LO_SUM.
5291         (arm_emit_movpair): New function.
5292         (arm_print_operand <c>): Handle sybolic addresses.
5293         * config/arm/arm.h (TARGET_USE_MOVT): Define.
5294         (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
5295         * config/arm/arm-protos.h (arm_emit_movpair): Add prototype.
5296         * config/arm/arm.opt: Add -mword-relocations.
5297         * config/arm/arm.md (movsi): Use arm_emit_movpair.
5298         (arm_movt, arm_movw): New.
5299
5300 2008-09-01  Paul Brook  <paul@codesourcery.com>
5301
5302         * config/arm/arm.c (arm_override_options): Set arm_abi earlier.
5303         Allow Interworking on ARMv4 EABI based targets.
5304         * config/arm/bpabi.h (TARGET_FIX_V4BX_SPEC): Define.
5305         (SUBTARGET_EXTRA_ASM_SPEC, LINK_SPEC): Add TARGET_FIX_V4BX_SPEC.
5306
5307 2008-09-01  Paul Brook  <paul@codesourcery.com>
5308
5309         * config/arm/thumb2.md (thumb2_negscc): Match the correct operand for
5310         optimized LT0 test.  Remove optimization for GT.
5311
5312 2008-09-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
5313
5314         * pa64-hpux.h (LIB_SPEC): Link against librt when building static
5315         openmp applications.
5316         * pa-hpux11.h (LIB_SPEC): Likewise.
5317
5318         * ira.c (setup_eliminable_regset): Only declare i if ELIMINABLE_REGS
5319         is defined.
5320
5321 2008-09-01  Jan Hubicka  <jh@suse.cz>
5322
5323         * predict.c (maybe_hot_count_p, maybe_hot_edge_p): When profile is
5324         present, use only counts; when guessed use only frequencies.
5325         (estimate_bb_frequencies): Use function_frequency.
5326         * profile.c (compute_branch_probabilities): Exit early when
5327         profile reading failed. Set profile_status.
5328         (branch_prob): Do not set profile_status.
5329
5330 2008-09-01  Aldy Hernandez  <aldyh@redhat.com>
5331
5332         * tree.c (protected_set_expr_location): New.
5333         * tree.h (protected_set_expr_location): New prototype.
5334         * c-tree.h (build_array_ref): Add argument.
5335         (parser_build_unary_op): Same.
5336         * c-typeck.c (build_indirect_ref): Handle new location argument.
5337         (build_array_ref): Same.
5338         (parser_build_unary_op): Same.
5339         * gimplify.c (gimplify_asm_expr): Set input_location before calling
5340         error.
5341         * c-omp.c (c_finish_omp_atomic): Pass location when calling
5342         build_indirect_ref.
5343         * c-common.c (finish_label_address_expr): Handle new location argument.
5344         * c-common.h (build_indirect_ref): Add argument.
5345         (finish_label_address_expr): Same.
5346         * c-parser.c (c_parser_unary_expression): Pass location to build
5347         functions.
5348         (c_parser_postfix_expression): Same.
5349
5350 2008-09-01  Paul Brook  <paul@codesourcery.com>
5351
5352         * config/arm/arm.md: Include cortex-r4f.md.
5353         (attr fpu): Update type list.
5354         (attr type): Add fcpys, ffariths, ffarithd, fadds, faddd, fconsts,
5355         fconstd, fcmps and fcmpd.
5356         (attr tune_cortexr4): Define.
5357         (attr generic_sched, attr generic_vfp): Use tune_cortexr4.
5358         * config/arm/vfp.md: Document fcpys, ffariths, ffarithd, fadds, faddd,
5359         fconsts, fconstd, fcmps and fcmpd.  Use them in insn patterns.
5360         * config/arm/arm.c (arm_issue_rate): Add cortexr4f.
5361         * config/arm/arm1020e.md (v10_ffarith, v10_farith): Use new insn types.
5362         * config/arm/cortex-a8-neon.md (cortex_a8_vfp_add_sub,
5363         cortex_a8_vfp_farith: Ditto.
5364         * config/arm/vfp11.md (vfp_ffarith, vfp_farith): Ditto.
5365         * config/arm/cortex-r4.md: Use tune_cortexr4.
5366         * config/arm/cortex-r4f.md: New file.
5367
5368 2008-09-01  Richard Guenther  <rguenther@suse.de>
5369
5370         PR tree-optimization/37305
5371         * tree-ssa-ccp.c (ccp_fold): Do not set TREE_OVERFLOW on
5372         the result of constant conversions.
5373         (fold_gimple_assign): Likewise.
5374
5375 2008-09-01  Andrey Belevantsev  <abel@ispras.ru>
5376
5377         * sel-sched-ir.c (cmp_v_in_regset_pool): Surround with
5378         #ifdef ENABLE_CHECKING.
5379
5380 2008-09-01  Andrey Belevantsev  <abel@ispras.ru>
5381
5382         * sel-sched-dump.c: Surround with #ifdef INSN_SCHEDULING.
5383         * sched-int.h (print_insn, print_pattern, print_value): Declare also
5384         when !INSN_SCHEDULING.
5385
5386 2008-09-01  Andreas Schwab  <schwab@suse.de>
5387
5388         * config/ia64/ia64.c (TARGET_ADDRESS_COST): Update.
5389
5390 2008-09-01  Paul Brook  <paul@codesourcery.com>
5391
5392         * config/arm/arm.c (arm_no_early_mul_dep): Handle multiply-subtract.
5393
5394 2008-09-01  Jan Hubicka  <jh@suse.cz>
5395
5396         * config/spu/spu.c (spu_expand_block_move) Update call of MOVE_RATIO.
5397
5398         * expr.c (MOVE_BY_PIECES_P, CLEAR_BY_PIECES_P, SET_BY_PIECES_P):
5399         Pass speed operand.
5400         * expr.h (MOVE_RATIO, CLEAR_RATIO, SET_RATIO): Update.
5401         * gimplify.c (gimplify_init_constructor): Add speed operand.
5402         * tree-sra.c (decide_block_copy): Likewise.
5403         * tree-inline.c (estimate_move_cost): Likewise.
5404         * config/alpha/alpha.h (MOVE_RATIO): Update.
5405         * config/frv/frv.c (MOVE_RATIO): Update.
5406         * config/spu/spu.h (MOVE_RATIO): Update.
5407         * config/sparc/sparc.h (MOVE_RATIO): Update.
5408         * config/i386/i386.h (MOVE_RATIO, CLEAR_RATIO): Update.
5409         * config/m68hc11/m68hc11.h (MOVE_RATIO): Update.
5410         * config/cris/cris.h (MOVE_RATIO): Update.
5411         * config/mn10300/mn10300.h (MOVE_RATIO): Update.
5412         * config/arm/arm.h (MOVE_RATIO): Update.
5413         * config/pa/pa.md: Update uses of MOVE_RATIO
5414         * config/pa/pa.h (MOVE_RATIO): Update.
5415         * config/mips/mips.h (MOVE_RATIO, MOVE_BY_PIECES,
5416         CLEAR_RATIO, SET_RATIO): Update.
5417         * config/h8300/h8300.h (MOVE_RATIO): Update.
5418         * config/v850/v850.h (MOVE_RATIO): Update.
5419         * config/bfin/bfin.h (MOVE_RATIO): Update.
5420
5421 2008-08-31  Andrey Belevantsev  <abel@ispras.ru>
5422             Dmitry Melnik  <dm@ispras.ru>
5423             Dmitry Zhurikhin  <zhur@ispras.ru>
5424             Alexander Monakov  <amonakov@ispras.ru>
5425             Maxim Kuvyrkov  <maxim@codesourcery.com>
5426
5427         * sel-sched.h, sel-sched-dump.h, sel-sched-ir.h, sel-sched.c,
5428         sel-sched-dump.c, sel-sched-ir.c: New files.
5429         * Makefile.in (OBJS-common): Add selective scheduling object files.
5430         (sel-sched.o, sel-sched-dump.o, sel-sched-ir.o): New entries.
5431         (SEL_SCHED_IR_H, SEL_SCHED_DUMP_H): New entries.
5432         (sched-vis.o): Add dependency on $(INSN_ATTR_H).
5433         * cfghooks.h (get_cfg_hooks, set_cfg_hooks): New prototypes.
5434         * cfghooks.c (get_cfg_hooks, set_cfg_hooks): New functions.
5435         (make_forwarder_block): Update loop latch if we have redirected
5436         the loop latch edge.
5437         * cfgloop.c (get_loop_body_in_custom_order): New function.
5438         * cfgloop.h (LOOPS_HAVE_FALLTHRU_PREHEADERS): New enum field.
5439         (CP_FALLTHRU_PREHEADERS): Likewise.
5440         (get_loop_body_in_custom_order): Declare.
5441         * cfgloopmanip.c (has_preds_from_loop): New.
5442         (create_preheader): Honor CP_FALLTHRU_PREHEADERS.
5443         Assert that the preheader edge will be fall thru when it is set.
5444         * common.opt (fsel-sched-bookkeeping, fsel-sched-pipelining,
5445         fsel-sched-pipelining-outer-loops, fsel-sched-renaming,
5446         fsel-sched-substitution, fselective-scheduling): New flags.
5447         * cse.c (hash_rtx_cb): New.
5448         (hash_rtx): Use it.
5449         * dbgcnt.def (sel_sched_cnt, sel_sched_region_cnt,
5450         sel_sched_insn_cnt): New counters.
5451         * final.c (compute_alignments): Export.  Free dominance
5452         info after loop_optimizer_finalize.
5453         * genattr.c (main): Output maximal_insn_latency prototype.
5454         * genautomata.c (output_default_latencies): New.
5455         Factor its code from ...
5456         (output_internal_insn_latency_func): ... here.
5457         (output_internal_maximal_insn_latency_func): New.
5458         (output_maximal_insn_latency_func): New.
5459         * hard-reg-set.h (UHOST_BITS_PER_WIDE_INT): Define unconditionally.
5460         (struct hard_reg_set_iterator): New.
5461         (hard_reg_set_iter_init, hard_reg_set_iter_set,
5462         hard_reg_set_iter_next): New functions.
5463         (EXECUTE_IF_SET_IN_HARD_REG_SET): New macro.
5464         * lists.c (remove_free_INSN_LIST_node,
5465         remove_free_EXPR_LIST_node): New functions.
5466         * loop-init.c (loop_optimizer_init): When
5467         LOOPS_HAVE_FALLTHRU_PREHEADERS, set CP_FALLTHRU_PREHEADERS when
5468         calling create_preheaders.
5469         (loop_optimizer_finalize): Do not verify flow info after reload.
5470         * recog.c (validate_replace_rtx_1): New parameter simplify.
5471         Default it to true.  Update all uses.  Factor out simplifying
5472         code to ...
5473         (simplify_while_replacing): ... this new function.
5474         (validate_replace_rtx_part,
5475         validate_replace_rtx_part_nosimplify): New.
5476         * recog.h (validate_replace_rtx_part,
5477         validate_replace_rtx_part_nosimplify): Declare.
5478         * rtl.c (rtx_equal_p_cb): New.
5479         (rtx_equal_p): Use it.
5480         * rtl.h (rtx_equal_p_cb, hash_rtx_cb): Declare.
5481         (remove_free_INSN_LIST_NODE, remove_free_EXPR_LIST_node,
5482         debug_bb_n_slim, debug_bb_slim,    print_rtl_slim): Likewise.
5483         * vecprim.h: Add a vector type for unsigned int.
5484         * haifa-sched.c: Include vecprim.h and cfgloop.h.
5485         (issue_rate, sched_verbose_param, note_list, dfa_state_size,
5486         ready_try, cycle_issued_insns, spec_info): Make global.
5487         (readyp): Initialize.
5488         (dfa_lookahead): New global variable.
5489         (old_max_uid, old_last_basic_block): Remove.
5490         (h_i_d): Make it a vector.
5491         (INSN_TICK, INTER_TICK, QUEUE_INDEX, INSN_COST): Make them work
5492         through HID macro.
5493         (after_recovery, adding_bb_to_current_region_p):
5494         New variables to handle correct insertion of the recovery code.
5495         (struct ready_list): Move declaration to sched-int.h.
5496         (rgn_n_insns): Removed.
5497         (rtx_vec_t): Move to sched-int.h.
5498         (find_insn_reg_weight): Remove.
5499         (find_insn_reg_weight1): Rename to find_insn_reg_weight.
5500         (haifa_init_h_i_d, haifa_finish_h_i_d):
5501         New functions to initialize / finalize haifa instruction data.
5502         (extend_h_i_d, init_h_i_d): Rewrite.
5503         (unlink_other_notes): Move logic to add_to_note_list.  Handle
5504         selective scheduler.
5505         (ready_lastpos, ready_element, ready_sort, reemit_notes,
5506         find_fallthru_edge): Make global, remove static prototypes.
5507         (max_issue): Make global.  Add privileged_n and state parameters.  Use
5508         them.
5509         (extend_global, extend_all): Removed.
5510         (init_before_recovery): Add new param.  Fix the handling of the case
5511         when we insert a recovery code before the EXIT which has a predecessor
5512         with a fallthrough edge to it.
5513         (create_recovery_block): Make global.  Rename to
5514         sched_create_recovery_block.  Update.
5515         (change_pattern): Rename to sched_change_pattern.  Make global.
5516         (speculate_insn): Rename to sched_speculate_insn.  Make global.
5517         Split haifa-specific functionality into ...
5518         (haifa_change_pattern): New static function.
5519         (sched_extend_bb): New static function.
5520         (sched_init_bbs): New function.
5521         (current_sched_info): Change type to struct haifa_sched_info.
5522         (insn_cost): Adjust for selective scheduling.
5523         (dep_cost_1): New function.  Move logic from ...
5524         (dep_cost): ... here.
5525         (dep_cost): Use dep_cost_1.
5526         (contributes_to_priority_p): Use sched_deps_info instead of
5527         current_sched_info.
5528         (priority): Adjust to work with selective scheduling.  Process the
5529         corner case when all dependencies don't contribute to priority.
5530         (rank_for_schedule): Use ds_weak instead of dep_weak.
5531         (advance_state): New function.  Move logic from ...
5532         (advance_one_cycle): ... here.
5533         (add_to_note_list, concat_note_lists): New functions.
5534         (rm_other_notes): Make static.  Adjust for selective scheduling.
5535         (remove_notes, restore_other_notes): New functions.
5536         (move_insn): Add two arguments.  Update assert.  Don't call
5537         reemit_notes.
5538         (choose_ready): Remove lookahead variable, use dfa_lookahead.
5539         Remove more_issue, max_points.  Move the code to initialize
5540         max_lookahead_tries to max_issue.
5541         (schedule_block): Remove rgn_n_insns1 parameter.  Don't allocate
5542         ready.  Adjust use of move_insn.  Call restore_other_notes.
5543         (luid): Remove.
5544         (sched_init, sched_finish): Move Haifa-specific initialization/
5545         finalization to ...
5546         (haifa_sched_init, haifa_sched_finish): ... respectively.
5547         New functions.
5548         (setup_sched_dump): New function.
5549         (haifa_init_only_bb): New static function.
5550         (haifa_speculate_insn): New static function.
5551         (try_ready): Use haifa_* instead of speculate_insn and change_pattern.
5552         (extend_ready, extend_all): Remove.
5553         (sched_extend_ready_list, sched_finish_ready_list): New functions.
5554         (create_check_block_twin, add_to_speculative_block): Use
5555         haifa_insns_init instead of extend_global.  Update to use new
5556         initialization functions.  Change parameter.  Factor out code from
5557         create_check_block_twin to ...
5558         (sched_create_recovery_edges) ... this new function.
5559         (add_block): Remove.
5560         (sched_scan_info): New.
5561         (extend_bb): Use sched_scan_info.
5562         (init_bb, extend_insn, init_insn, init_insns_in_bb, sched_scan): New
5563         static functions for walking through scheduling region.
5564         (sched_luids): New vector variable to replace uid_to_luid.
5565         (luids_extend_insn): New function.
5566         (sched_max_luid): New variable.
5567         (luids_init_insn): New function.
5568         (sched_init_luids, sched_finish_luids): New functions.
5569         (insn_luid): New debug function.
5570         (sched_extend_target): New function.
5571         (haifa_init_insn): New static function.
5572         (sched_init_only_bb): New hook.
5573         (sched_split_block): New hook.
5574         (sched_split_block_1): New function.
5575         (sched_create_empty_bb): New hook.
5576         (sched_create_empty_bb_1): New function.
5577         (common_sched_info, ready): New global variables.
5578         (current_sched_info_var): Remove.
5579         (move_block_after_check): Use common_sched_info.
5580         (haifa_luid_for_non_insn): New static function.
5581         (init_before_recovery): Use haifa_init_only_bb instead of add_block.
5582         (increase_insn_priority): New.
5583         * modulo-sched.c: (issue_rate): Remove static declaration.
5584         (sms_sched_info): Change type to haifa_sched_info.
5585         (sms_sched_deps_info, sms_common_sched_info): New variables.
5586         (setup_sched_infos): New.
5587         (sms_schedule): Initialize them.  Call haifa_sched_init/finish.
5588         Do not call regstat_free_calls_crossed.
5589         (sms_print_insn): Use const_rtx.
5590         * params.def (PARAM_MAX_PIPELINE_REGION_BLOCKS,
5591         PARAM_MAX_PIPELINE_REGION_INSNS, PARAM_SELSCHED_MAX_LOOKAHEAD,
5592         PARAM_SELSCHED_MAX_SCHED_TIMES, PARAM_SELSCHED_INSNS_TO_RENAME,
5593         PARAM_SCHED_MEM_TRUE_DEP_COST): New.
5594         * sched-deps.c (sched_deps_info): New.  Update all relevant uses of
5595         current_sched_info to use it.
5596         (enum reg_pending_barrier_mode): Move to sched-int.h.
5597         (h_d_i_d): New variable. Initialize to NULL.
5598         ({true, output, anti, spec, forward}_dependency_cache): Initialize
5599         to NULL.
5600         (estimate_dep_weak): Remove static declaration.
5601         (sched_has_condition_p): New function.  Adjust users of
5602         sched_get_condition to use it instead.
5603         (conditions_mutex_p): Add arguments indicating which conditions are
5604         reversed.  Use them.
5605         (sched_get_condition_with_rev): Rename from sched_get_condition.  Add
5606         argument to indicate whether returned condition is reversed.  Do not
5607         generate new rtx when condition should be reversed; indicate it by
5608         setting new argument instead.
5609         (add_dependence_list_and_free): Add deps parameter.
5610         Update all users.  Do not free dependence list when
5611         deps context is readonly.
5612         (add_insn_mem_dependence, flush_pending_lists): Adjust for readonly
5613         contexts.
5614         (remove_from_dependence_list, remove_from_both_dependence_lists): New.
5615         (remove_from_deps): New. Use the above functions.
5616         (cur_insn, can_start_lhs_rhs_p): New static variables.
5617         (add_or_update_back_dep_1): Initialize present_dep_type.
5618         (haifa_start_insn, haifa_finish_insn, haifa_note_reg_set,
5619         haifa_note_reg_clobber, haifa_note_reg_use, haifa_note_mem_dep,
5620         haifa_note_dep): New functions implementing dependence hooks for
5621         the Haifa scheduler.
5622         (note_reg_use, note_reg_set, note_reg_clobber, note_mem_dep,
5623         note_dep): New functions.
5624         (ds_to_dt, extend_deps_reg_info, maybe_extend_reg_info_p): New
5625         functions.
5626         (init_deps): Initialize last_reg_pending_barrier and deps->readonly.
5627         (free_deps): Initialize deps->reg_last.
5628         (sched_analyze_reg, sched_analyze_1, sched_analyze_2,
5629         sched_analyze_insn): Update to use dependency hooks infrastructure
5630         and readonly contexts.
5631         (deps_analyze_insn): New function.  Move part of logic from ...
5632         (sched_analyze): ... here.  Also move some logic to ...
5633         (deps_start_bb): ... here.  New function.
5634         (add_forw_dep, delete_forw_dep): Guard use of INSN_DEP_COUNT with
5635         sel_sched_p.
5636         (sched_deps_init): New function.  Move code from ...
5637         (init_dependency_caches): ... here.  Remove.
5638         (init_deps_data_vector): New.
5639         (sched_deps_finish): New function.  Move code from ...
5640         (free_dependency_caches): ... here.  Remove.
5641         (init_deps_global, finish_deps_global): Adjust for use with
5642         selective scheduling.
5643         (get_dep_weak): Move logic to ...
5644         (get_dep_weak_1): New function.
5645         (ds_merge): Move logic to ...
5646         (ds_merge_1): New static function.
5647         (ds_full_merge, ds_max_merge, ds_get_speculation_types): New functions.
5648         (ds_get_max_dep_weak): New function.
5649         * sched-ebb.c (sched_n_insns): Rename to sched_rgn_n_insns.
5650         (n_insns): Rename to rgn_n_insns.
5651         (debug_ebb_dependencies): New function.
5652         (init_ready_list): Use it.
5653         (begin_schedule_ready): Use sched_init_only_bb.
5654         (ebb_print_insn): Indicate when an insn starts a new cycle.
5655         (contributes_to_priority, compute_jump_reg_dependencies,
5656         add_remove_insn, fix_recovery_cfg): Add ebb_ prefix to function names.
5657         (add_block1): Remove to ebb_add_block.
5658         (ebb_sched_deps_info, ebb_common_sched_info): New variables.
5659         (schedule_ebb): Initialize them.  Use remove_notes instead of
5660         rm_other_notes.  Use haifa_local_init/finish.
5661         (schedule_ebbs): Use haifa_sched_init/finish.
5662         * sched-int.h: Include vecprim.h, remove rtl.h.
5663         (struct ready_list): Delete declaration.
5664         (sched_verbose_param, enum sched_pass_id_t,
5665         bb_vec_t, insn_vec_t, rtx_vec_t): New.
5666         (struct sched_scan_info_def): New structure.
5667         (sched_scan_info, sched_scan, sched_init_bbs,
5668         sched_init_luids, sched_finish_luids, sched_extend_target,
5669         haifa_init_h_i_d, haifa_finish_h_i_d): Declare.
5670         (struct common_sched_info_def): New.
5671         (common_sched_info, haifa_common_sched_info,
5672         sched_emulate_haifa_p): Declare.
5673         (sel_sched_p): New.
5674         (sched_luids): Declare.
5675         (INSN_LUID, LUID_BY_UID, SET_INSN_LUID): Declare.
5676         (sched_max_luid, insn_luid): Declare.
5677         (note_list, remove_notes, restore_other_notes, bb_note): Declare.
5678         (sched_insns_init, sched_insns_finish, xrecalloc, reemit_notes,
5679         print_insn, print_pattern, print_value, haifa_classify_insn,
5680         sel_find_rgns, sel_mark_hard_insn, dfa_state_size, advance_state,
5681         setup_sched_dump, sched_init, sched_finish,
5682         sel_insn_is_speculation_check): Export.
5683         (struct ready_list): Move from haifa-sched.c.
5684         (ready_try, ready, max_issue): Export.
5685         (ebb_compute_jump_reg_dependencies, find_fallthru_edge,
5686         sched_init_only_bb, sched_split_block, sched_split_block_1,
5687         sched_create_empty_bb, sched_create_empty_bb_1,
5688         sched_create_recovery_block, sched_create_recovery_edges): Export.
5689         (enum reg_pending_barrier_mode): Export.
5690         (struct deps): New fields `last_reg_pending_barrier' and `readonly'.
5691         (deps_t): New.
5692         (struct sched_info): Rename to haifa_sched_info.  Use const_rtx for
5693         print_insn field.  Move add_block and fix_recovery_cfg to
5694         common_sched_info_def.  Move compute_jump_reg_dependencies,
5695         use_cselib  ...
5696         (struct sched_deps_info_def): ... this new structure.
5697         (sched_deps_info): Declare.
5698         (struct spec_info_def): Remove weakness_cutoff, add
5699         data_weakness_cutoff and control_weakness_cutoff.
5700         (spec_info): Declare.
5701         (struct _haifa_deps_insn_data): Split from haifa_insn_data.  Add
5702         dep_count field.
5703         (struct haifa_insn_data): Rename to struct _haifa_insn_data.
5704         (haifa_insn_data_def, haifa_insn_data_t): New typedefs.
5705         (current_sched_info): Change type to struct haifa_sched_info.
5706         (haifa_deps_insn_data_def, haifa_deps_insn_data_t): New typedefs.
5707         (h_d_i_d): New variable.
5708         (HDID): New accessor macro.
5709         (h_i_d): Change type to VEC (haifa_insn_data_def, heap) *.
5710         (HID): New accessor macro.  Rewrite h_i_d accessor macros through HID
5711         and HDID.
5712         (IS_SPECULATION_CHECK_P): Update for selective scheduler.
5713         (enum SCHED_FLAGS): Update for selective scheduler.
5714         (enum SPEC_SCHED_FLAGS): New flag SEL_SCHED_SPEC_DONT_CHECK_CONTROL.
5715         (init_dependency_caches, free_dependency_caches): Delete declarations.
5716         (deps_analyze_insn, remove_from_deps, get_dep_weak_1,
5717         estimate_dep_weak, ds_full_merge, ds_max_merge, ds_weak,
5718         ds_get_speculation_types, ds_get_max_dep_weak, sched_deps_init,
5719         sched_deps_finish, haifa_note_reg_set, haifa_note_reg_use,
5720         haifa_note_reg_clobber, maybe_extend_reg_info_p, deps_start_bb,
5721         ds_to_dt): Export.
5722         (rm_other_notes): Delete declaration.
5723         (schedule_block): Remove one argument.
5724         (cycle_issued_insns, issue_rate, dfa_lookahead, ready_sort,
5725         ready_element, ready_lastpos, sched_extend_ready_list,
5726         sched_finish_ready_list, sched_change_pattern, sched_speculate_insn,
5727         concat_note_lists): Export.
5728         (struct region): Move from sched-rgn.h.
5729         (nr_regions, rgn_table, rgn_bb_table, block_to_bb, containing_rgn,
5730         RGN_NR_BLOCKS, RGN_BLOCKS, RGN_DONT_CALC_DEPS, RGN_HAS_REAL_EBB,
5731         BLOCK_TO_BB, CONTAINING_RGN): Export.
5732         (ebb_head, BB_TO_BLOCK, EBB_FIRST_BB, EBB_LAST_BB, INSN_BB): Likewise.
5733         (current_nr_blocks, current_blocks, target_bb): Likewise.
5734         (dep_cost_1, sched_is_disabled_for_current_region_p, sched_rgn_init,
5735         sched_rgn_finish, rgn_setup_region, sched_rgn_compute_dependencies,
5736         sched_rgn_local_init, extend_regions,
5737         rgn_make_new_region_out_of_new_block, compute_priorities,
5738         debug_rgn_dependencies, free_rgn_deps, contributes_to_priority,
5739         extend_rgns, deps_join rgn_setup_common_sched_info,
5740         rgn_setup_sched_infos, debug_regions, debug_region, dump_region_dot,
5741         dump_region_dot_file, haifa_sched_init, haifa_sched_finish): Export.
5742         (get_rgn_sched_max_insns_priority, sel_add_to_insn_priority,
5743         increase_insn_priority): Likewise.
5744         * sched-rgn.c: Include sel-sched.h.
5745         (ref_counts): New static variable.  Use it ...
5746         (INSN_REF_COUNT): ... here.  Rewrite and move closer to uses.
5747         (FED_BY_SPEC_LOAD, IS_LOAD_INSN): Rewrite to use HID accessor macro.
5748         (sched_is_disabled_for_current_region_p): Delete static declaration.
5749         (struct region): Move to sched-int.h.
5750         (nr_regions, rgn_table, rgn_bb_table, block_to_bb, containing_rgn,
5751         ebb_head): Define and initialize.
5752         (RGN_NR_BLOCKS, RGN_BLOCKS, RGN_DONT_CALC_DEPS, RGN_HAS_REAL_EBB,
5753         BLOCK_TO_BB, CONTAINING_RGN, debug_regions, extend_regions,
5754         BB_TO_BLOCK, EBB_FIRST_BB, EBB_LAST_BB): Move to
5755         sched-int.h.
5756         (find_single_block_region): Add new argument to indicate that EBB
5757         regions should be constructed.
5758         (debug_live): Delete declaration.
5759         (current_nr_blocks, current_blocks, target_bb):
5760         Remove static qualifiers.
5761         (compute_dom_prob_ps, check_live, update_live, set_spec_fed): Delete
5762         declaration.
5763         (init_regions): Delete declaration.
5764         (debug_region, bb_in_region_p, dump_region_dot_file, dump_region_dot,
5765         rgn_estimate_number_of_insns): New.
5766         (too_large): Use estimate_number_of_insns.
5767         (haifa_find_rgns): New. Move the code from ...
5768         (find_rgns): ... here.  Call either sel_find_rgns or haifa_find_rgns.
5769         (free_trg_info): New.
5770         (compute_trg_info): Allocate candidate tables here instead of ...
5771         (init_ready_list): ... here.
5772         (rgn_print_insn): Use const_rtx.
5773         (contributes_to_priority, extend_regions): Delete static declaration.
5774         (add_remove_insn, fix_recovery_cfg): Add rgn_ to function names.
5775         (add_block1): Rename to rgn_add_block.
5776         (debug_rgn_dependencies): Delete static qualifier.
5777         (new_ready): Use sched_deps_info.  Simplify.
5778         (rgn_common_sched_info, rgn_const_sched_deps_info,
5779         rgn_const_sel_sched_deps_info, rgn_sched_deps_info, rgn_sched_info):
5780         New.
5781         (region_sched_info): Rename to rgn_const_sched_info.
5782         (deps_join): New, extracted from ...
5783         (propagate_deps): ... here.
5784         (compute_block_dependences, debug_dependencies): Update for selective
5785         scheduling.
5786         (free_rgn_deps, compute_priorities): New functions.
5787         (sched_rgn_init, sched_rgn_finish, rgn_setup_region,
5788         sched_rgn_compute_dependencies): New functions.
5789         (schedule_region): Use them.
5790         (sched_rgn_local_init, sched_rgn_local_free, sched_rgn_local_finish,
5791         rgn_setup_common_sched_info, rgn_setup_sched_infos):
5792         New functions.
5793         (schedule_insns): Call new functions that were split out.
5794         (rgn_make_new_region_out_of_new_block): New.
5795         (get_rgn_sched_max_insns_priority): New.
5796         (rest_of_handle_sched, rest_of_handle_sched2): Call selective
5797         scheduling when appropriate.
5798         * sched-vis.c: Include insn-attr.h.
5799         (print_value, print_pattern): Make global.
5800         (print_rtl_slim, debug_bb_slim, debug_bb_n_slim): New functions.
5801         * target-def.h (TARGET_SCHED_ADJUST_COST_2,
5802         TARGET_SCHED_ALLOC_SCHED_CONTEXT, TARGET_SCHED_INIT_SCHED_CONTEXT,
5803         TARGET_SCHED_SET_SCHED_CONTEXT, TARGET_SCHED_CLEAR_SCHED_CONTEXT,
5804         TARGET_SCHED_FREE_SCHED_CONTEXT, TARGET_SCHED_GET_INSN_CHECKED_DS,
5805         TARGET_SCHED_GET_INSN_SPEC_DS, TARGET_SCHED_SKIP_RTX_P): New target
5806         hooks.  Initialize them to 0.
5807         (TARGET_SCHED_GEN_CHECK): Rename to TARGET_SCHED_GEN_SPEC_CHECK.
5808         * target.h (struct gcc_target): Add them.  Rename gen_check field to
5809         gen_spec_check.
5810         * flags.h (sel_sched_switch_set): Declare.
5811         * opts.c (sel_sched_switch_set): New variable.
5812         (decode_options): Unset flag_sel_sched_pipelining_outer_loops if
5813         pipelining is disabled from command line.
5814         (common_handle_option): Record whether selective scheduling is
5815         requested from command line.
5816         * doc/invoke.texi: Document new flags and parameters.
5817         * doc/tm.texi: Document new target hooks.
5818         * config/ia64/ia64.c (TARGET_SCHED_GEN_SPEC_CHECK): Define to
5819         ia64_gen_check.
5820         (dfa_state_size): Do not declare locally.
5821         * config/ia64/ia64.opt (msched-ar-data-spec): Default to 0.
5822         * config/rs6000/rs6000.c (rs6000_init_sched_context,
5823         rs6000_alloc_sched_context, rs6000_set_sched_context,
5824         rs6000_free_sched_context): New functions.
5825         (struct _rs6000_sched_context): New.
5826         (rs6000_sched_reorder2): Do not modify INSN_PRIORITY for selective
5827         scheduling.
5828         (rs6000_sched_finish): Do not run for selective scheduling.
5829
5830 2008-08-31  Jan Hubicka  <jh@suse.cz>
5831
5832         * frv.c (frv_rtx_costs): Update forward declaration.
5833         * spu.c (spu_rtx_costs): Likewise.
5834         * pdp11.c: Include df.h
5835         (pdp11_output_function_epilogue): Use df_set_regs_ever_live.
5836         * m68hc11.c (m68hc11_gen_highpart): Fix call of gen_rtx_SUBREG.
5837         (m68hc11_rtx_costs_1): Fix call of rtx_cost.
5838         * iq2000.c (iq2000_address_cost): Add speed argument.
5839         (iq2000_rtx_costs): Likewise.
5840         * mn10300.c (mn10300_address_cost_1): Remove speed argument;
5841         update call of mn10300_address_cost.
5842         * mcore.c: Include df.h
5843         (mcore_rtx_costs): Update prototype.
5844         * score3.c: Include df.h
5845         (score3_rtx_costs): Remove speed argument.
5846         * score7.c: Include df.h
5847         (score7_address_cost): Remove speed argument.
5848         * score-protos.h (score_address_cost): Update prototype.
5849         * score.c: Include df.h
5850         (score_rtx_costs): Update call of costs functions.
5851         * v850.c (v850_rtx_costs): Add bool argument.
5852
5853 2008-08-31  Hans-Peter Nilsson  <hp@axis.com>
5854
5855         * config/cris/cris.c (cris_rtx_costs): Correct call to rtx_costs.
5856
5857 2008-08-31  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
5858
5859         * gthr-win32.h (__gthread_setspecific): Use CONST_CAST2.
5860         * config/i386/gthr-win32.c (__gthread_setspecific): Same.
5861
5862 2008-08-31  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
5863
5864         * mkmap-flat.awk: Add option pe_dll.
5865         * config/i386/t-cygming (SHLIB_LINK): Support building libgcc_s.
5866         * config/i386/t-cygwin (SHLIB_LC): Add.
5867         * config/i386/t-mingw32 (SHLIB_LC): Add.
5868         * config/i386/mingw32.h (SHARED_LIBGCC_UNDEFS_SPEC): New.
5869         (SUBTARGET_EXTRA_SPECS): Use SHARED_LIBGCC_UNDEFS_SPEC.
5870         (LINK_SPEC): Support libgcc_s.
5871         (LIBGCC_SPEC): Support libgcc_s.
5872         (LIBGCC_SONAME): New.
5873
5874 2008-08-31  Jan Hubicka  <jh@suse.cz>
5875
5876         * predict.c (maybe_hot_bb_p, maybe_hot_edge_p): Previous commit
5877         mistakely had old version of patch.
5878
5879         * ipa-cp.c (ipcp_need_original_clone_p): Remove.
5880         (ipcp_estimate_growth): New.
5881         (ipcp_insert_stage): Use ipcp_estimate_growth.
5882         * profile.c (branch_prob): When reading failed, do not consider
5883         profile as read.
5884
5885 2008-08-31  Jan Hubicka  <jh@suse.cz>
5886
5887         * tree-ssa-loop-unswitch.c (tree_unswitch_single_loop): Check that
5888         loop is optimized for speed.
5889
5890 2008-08-31  Richard Guenther  <rguenther@suse.de>
5891
5892         PR middle-end/37289
5893         * fold-const.c (fold_binary): Retain conversions in folding
5894         ~A + 1 to -A.
5895
5896 2008-08-31  Jan Hubicka  <jh@suse.cz>
5897
5898         * postreload-gcse.c (eliminate_partially_redundant_loads):
5899         Use optimize_bb_for_size_p.
5900         * predict.c (maybe_hot_frequency_p): Make inline.
5901         (maybe_hot_count_p): Break out from ...
5902         (maybe_hot_bb_p): ... this one.
5903         (maybe_hot_edge_p): Simplify.
5904         * basic-block.h (probably_cold_bb_p): Remove.
5905
5906 2008-08-31  Jakub Jelinek  <jakub@redhat.com>
5907
5908         PR target/37168
5909         * config/rs6000/rs6000-protos.h (const_vector_elt_as_int): Add
5910         prototype.
5911         * config/rs6000/rs6000.c (const_vector_elt_as_int): No longer static.
5912         * config/rs6000/altivec.md (easy_vector_constant_add_self splitter):
5913         Also split V4SFmode.
5914         * config/rs6000/predicates.md (easy_vector_constant_add_self): Handle
5915         vector float modes.
5916
5917 2008-08-31  Jan Hubicka  <jh@suse.cz>
5918
5919         * predict.c (PROB_VERY_LIKELY): Make small enough so things
5920         become cold.
5921         * predict.def (PRED_NORETURN_CALL, PRED_COLD_CALL): Use it.
5922
5923 2008-08-31  Jakub Jelinek  <jakub@redhat.com>
5924
5925         PR debug/37287
5926         * dwarf2out.c (gen_namespace_die): For DECL_EXTERNAL modules don't
5927         add source coords.
5928
5929         * dwarf2out.c (native_encode_initializer): Subtract min_index for
5930         non-range array index.  Handle VIEW_CONVERT_EXPR and NON_LVALUE_EXPR.
5931
5932 2008-08-31  Jan Hubicka  <jh@suse.cz>
5933
5934         * sparc.h (BRANCH_COST): Fix macro definition.
5935         * avr.c (avr_operand_rtx_cost): Add speed argument.
5936         (avr_rtx_costs): Update calls of avr_operand_rtx_cost.
5937
5938 2008-08-31  Richard Guenther  <rguenther@suse.de>
5939
5940         * tree-cfg.c (verify_types_in_gimple_assign): Dump mismatched
5941         types instead of operands.  Re-instantiate verifying of
5942         binary expression operands.
5943
5944 2008-08-30  Jan Hubicka  <jh@suse.cz>
5945
5946         * fwprop.c (should_replace_address): Add speed attribute.
5947         (PR_OPTIMIZE_FOR_SPEED): New flag.
5948         (propagate_rtx_1): Use it.
5949         (propagate_rtx): Set it.
5950         (try_fwprop_subst): Update call of rtx_costs.
5951         (forward_propagate_and_simplify): LIkewise.
5952         * hooks.c (hook_int_rtx_bool_0): New
5953         (hook_bool_rtx_int_int_intp_false): Replace by ...
5954         (hook_bool_rtx_int_int_intp_bool_false): .. thisone.
5955         * hooks.h (hook_int_rtx_bool_0): New
5956         (hook_bool_rtx_int_int_intp_false): Replace by ...
5957         (hook_bool_rtx_int_int_intp_bool_false): .. thisone.
5958         * optabs.c (avoid_expensive_constant): UPdate call of rtx_cost.
5959         (prepare_cmp_insn): UPdate call of rtx_cost.
5960         * postreload.c (reload_cse_simplify_set): Update call of rtx_cost.
5961         (reload_cse_simplify_operands): Update call of rtx_cost.
5962         (reload_cse_move2add): call of rtx_cost.
5963         * target.h (struct gcc_target): Update rtx_costs and address_costs.
5964         * rtlanal.c (rtx_cost): Add speed argument.
5965         (address_cost): Add speed argument
5966         (default_address_cost): Likewise.
5967         (insn_rtx_cost): Likewise.
5968         * cfgloopanal.c (seq_cost): Add speed argument.
5969         (target_reg_cost, target_spill_cost): Turn to array.
5970         (init_set_costs): Update for speed.
5971         (estimate_reg_pressure_cost): Add speed argument.
5972         * auto-inc-dec.c (attempt_change): Update call of rtx_cost.
5973         * dojump.c (prefer_and_bit_test): UPdate call of rtx_cost.
5974         * tree-ssa-loop-ivopts.c (struct ivopts_data): New field speed.
5975         (seq_cost): Add speed argument.
5976         (computation_cost): Add speed arugment.
5977         (add_cost, multiply_by_const, get_address_cost): add speed argument.
5978         (force_expr_to_var_cost): Update for profile info.
5979         (force_var_cost): Likewise.
5980         (split_address_cost): Likewise.
5981         (ptr_difference_cost): Likewise.
5982         (difference_cost): Likewise.
5983         (get_computation_cost_at): Likewise.
5984         (determine_iv_cost): Likewise.
5985         (ivopts_global_cost_for_size): Likewise.
5986         (rewrite_use_address): Likewise.
5987         (tree_ssa_iv_optimize_loop): Initialize speed field.
5988         * cse.c (optimize_this_for_speed_p): New static var.
5989         (notreg_cost): Update call of rtx_cost.
5990         (cse_extended_basic_block): set optimize_this_for_speed_p.
5991         * ifcvt.c (cheap_bb_rtx_cost_p): Update call of rtx_cost.
5992         (noce_try_cmove_arith): Likewise.
5993         (noce_try_sign_mask): LIkewise.
5994         * expr.c (compress_float_constant): Update rtx_cost calls.
5995         * tree-ssa-address.c (most_expensive_mult_to_index): Add speed
5996         argument.
5997         (addr_to_parts): Likewise.
5998         (create_mem_ref): Likewise.
5999         * dse.c (find_shift_sequence): Add speed argument.
6000         (replace_read): Update call.
6001         * calls.c (precompute_register_parameters): Update call of rtx_cost.
6002         * expmed.c (sdiv_pow2_cheap, smod_pow2_cheap, zero_cost, add_cost,
6003         * neg_cost, shift_cost, shiftadd_cost,
6004         shiftsub_cost, mul_cost, sdiv_cost, udiv_cost ,mul_widen_cost,
6005         mul_highpart_cost): Increase dimension.
6006         (init_expmed): Initialize for both size and speed.
6007         (expand_shift): Use profile.
6008         (synth_mult): Use profile.
6009         (choose_mult_variant): Use profile.
6010         (expand_mult): Use profile.
6011         (expand_mult_highpart_optab): Use profile.
6012         (expand_mult_highpart): Use profile.
6013         (expand_smod_pow2): Use profile.
6014         (expand_divmod): Use profile.
6015         * simplify-rtx.c (simplify_binary_operation_1): Update call of
6016         rtx_cost.
6017         * loop-invariant.c (create_new_invariant): Use profile.
6018         (gain_for_invariant): Add speed parameter.
6019         (best_gain_for_invariant): Likewise.
6020         (find_invariants_to_move): Likewise.
6021         (move_single_loop_invariants): Set it.
6022         * target-def.h (TARGET_RTX_COSTS): Use hook.
6023         * rtl.h (rtx_cost, address_cost, insn_rtx_cost): Update prototpe.
6024         (optimize_insn_for_size_p, optimize_insn_for_speed_p): Declare.
6025         * output.h (default_address_cost): Update prototype.
6026         * combine.c (optimize_this_for_speed_p): New static var.
6027         (combine_validate_cost): Update call of rtx_cost.
6028         (combine_instructions): Set optimize_this_for_speed_p.
6029         (expand_compound_operation): Update call of rtx_cost.
6030         (make_extraction):Update call of rtx_cost.
6031         (force_to_mode):Update call of rtx_cost.
6032         (distribute_and_simplify_rtx):Update call of rtx_cost.
6033         * cfgloop.h (target_reg_cost, target_spill_cost): Turn to array.
6034         (estimate_reg_pressure_cost): Update prototype.
6035         * tree-flow.h (multiply_by_cost, create_mem_ref): Update prototype.
6036         * basic-block.h (optimize_insn_for_size_p, optimize_insn_for_speed_p):
6037         Remove.
6038         * config/alpha/alpha.c (alpha_rtx_costs): Update.
6039         (alpha_rtx_costs): Update.
6040         * config/frv/frv.c (frv_rtx_costs): Update.
6041         * config/s390/s390.c (s390_rtx_costs): Update.
6042         * config/m32c/m32c.c (m32c_memory_move_cost): Update.
6043         (m32c_rtx_costs): Update.
6044         * config/spu/spu.c (TARGET_ADDRESS_COST): Upate.
6045         (spu_rtx_costs): Update.
6046         * config/sparc/sparc.c (sparc_rtx_costs): Update.
6047         * config/m32r/m32r.c (m32r_rtx_costs): Update.
6048         * config/i386/i386.c (:ix86_address_cost): Update.
6049         (ix86_rtx_costs): Update.
6050         * config/sh/sh.c (sh_rtx_costs, sh_address_cost): Update.
6051         * config/pdp11/pdp11.c (pdp11_rtx_costs): Update.
6052         * config/avr/avr.c (avr_rtx_costs, avr_address_cost): Update.
6053         * config/crx/crx.c (crx_address_cost): Update.
6054         * config/xtensa/xtensa.c (xtensa_rtx_costs): Update.
6055         * config/stormy16/stormy16.c
6056         (xstormy16_address_cost, xstormy16_rtx_costs): Update.
6057         * config/m68hc11/m68hc11.c
6058         (m68hc11_address_cost, m68hc11_rtx_costs): Update.
6059         * config/cris/cris.c (cris_rtx_costs, cris_address_cost): Update.
6060         * config/iq2000/iq2000.c (iq2000_rtx_costs, iq2000_address_cost):
6061         Update.
6062         * config/mn10300/mn10300.c (mn10300_address_cost, mn10300_rtx_costs):
6063         Update
6064         * config/ia64/ia64.c (ia64_rtx_costs): Update.
6065         * config/m68k/m68k.c (m68k_rtx_costs): Update.
6066         * config/rs6000/rs6000.c (rs6000_rtx_costs): Update.
6067         * config/arc/arc.c (arc_rtx_costs, arc_address_cost): Update.
6068         * config/mcore/mcore.c (TARGET_ADDRESS_COST): Update.
6069         (mcore_rtx_costs): update.
6070         * config/score/score3.c (score3_rtx_costs): Update.
6071         * config/score/score7.c (score7_rtx_costs): Update.
6072         * config/score/score3.h (score3_rtx_costs):Update.
6073         * config/score/score7.h (score7_rtx_costs): Update.
6074         * config/score/score.c (score_rtx_costs): Update.
6075         * config/arm/arm.c (arm_address_cost): Update.
6076         (arm_rtx_costs_1): Update.
6077         (arm_rtx_costs_1): Update.
6078         (arm_size_rtx_costs): Update.
6079         (arm_size_rtx_costs): Update.
6080         (arm_size_rtx_costs): Update.
6081         (arm_xscale_rtx_costs): Update.
6082         (arm_thumb_address_cost): Update.
6083         * config/pa/pa.c (hppa_address_cost): Update.
6084         * config/mips/mips.c (mips_rtx_costs): Update.
6085         * config/vax/vax.c (vax_address_cost): Update.
6086         * config/h8300/h8300.c (h8300_shift_costs): Update.
6087         (h8300_rtx_costs): Update.
6088         * config/v850/v850.c (TARGET_ADDRESS_COST): Update.
6089         (v850_rtx_costs): Update.
6090         * config/mmix/mmix.c (mmix_rtx_costs, mmix_rtx_costs): Update.
6091         * config/bfin/bfin.c
6092         (bfin_address_cost): Update.
6093         (bfin_rtx_costs): Update.
6094         * stmt.c (lshift_cheap_p): Update.
6095
6096 2008-08-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6097
6098         PR middle-end/36444
6099         * expmed.c (extract_bit_field_1): Check the mode size to make
6100         sure the vector modes have the same size.
6101
6102 2008-08-29  Michael Meissner  <gnu@the-meissners.org>
6103
6104         * dojump.c (top level): Include basic-block.h to declare
6105         optimize_insn_for_speed_p
6106
6107         * Makefile.in (dodump.h): Add $(BASIC_BLOCK_H) dependency.
6108
6109         * opts.h (CL_SAVE): New option class for marking options that are
6110         target specific options usable in the target attribute.
6111         (CL_MIN_OPTION_CLASS): CL_SAVE is now the minimum option.
6112
6113         * opt-functions.awk (switch_flags): Add CL_SAVE flag so backends
6114         can easily find the target specific options that are safe to use
6115         in the attribute or pragma.
6116
6117         * attribs.c (decl_attributes): Change #pragma GCC option to
6118         #pragma GCC target, and attribute((option(...))) to
6119         attribute((target(...))).
6120
6121         * doc/extend.texi (target attribute): Change from option
6122         attribute.  Delete push/pop/reset.
6123         (#pragma GCC target): Change from #pragma GCC option.  Delete
6124         push/pop/reset.
6125         (#pragma GCC push_options): Document new pragma.
6126         (#pragma GCC pop_options): Document new pragma.
6127         (#pragma GCC reset_options): Document new pragma.
6128
6129         * targhooks.c (default_target_option_valid_attribute_p): Add
6130         warning about port not supporting target attributes.
6131         (default_target_option_pragma_parse): New function, warn about
6132         #pragma GCC target not being supported.
6133
6134         * targhooks.h (default_target_option_pragma_parse): Add
6135         declaration.
6136
6137         * tree.h (TI_CURRENT_TARGET_PRAGMA): Rename from
6138         TI_CURRENT_OPTION_PRAGMA.
6139         (current_target_pragma): Rename from current_option_pragma.
6140
6141         * target.h: (struct target_option): Delete booleans for changing
6142         the optimization level on hot/cold functions.  Change signature of
6143         pragma_parse hook to take a second tree.
6144
6145         * c-tree.h (c_builtin_function_ext_scope): Add declaration.
6146
6147         * c-decl.c (c_builtin_function_ext_scope): New function, guarantee
6148         that the declaration is done at global scope.
6149
6150         * langhooks.c (add_builtin_function_common): Move most of the code
6151         from add_builtin_function here, calling the hook passed in.
6152         (add_builtin_function): Call add_builtin_function_common with
6153         standard builtin hook.
6154         (add_builtin_function_ext_scope): New function to add builtins to
6155         global scope.
6156
6157         * langhooks.h (struct lang_hooks): Add builtin_function_ext_scope
6158         hook.
6159         (add_builtin_function_ext_scope): Add declaration.
6160
6161         * c-pragma.c (handle_pragma_target): Rename from
6162         handle_pragma_option, #pragma GCC option is now #pragma GCC
6163         target.  Move warning about port not supporting target options to
6164         default pragma parse hook.  Remove push/pop/reset from this
6165         pragma.
6166         (handle_pragma_optimize): Remove push/pop/reset from this pragma.
6167         (option_stack): Delete static variable.
6168         (optimize_stack): Ditto.
6169         (optons_stack): New stack of saved target and optimization
6170         options.
6171         (handle_pragma_push_options): New function to handle pushing both
6172         target and optimization options.
6173         (handle_pragma_pop_options): New function to handle popping both
6174         target and optimization options.
6175         (handle_pragma_reset_options): New function to handle resetting
6176         both target and optimization options to their initial state.
6177         (init_pragma): Rename handle_pragma_option to
6178         handle_pragma_target.  Add support for push_options, pop_options,
6179         and reset_options pragmas.
6180
6181         * target-def.h (TARGET_OPTION_PRAGMA_PARSE): Change default to
6182         default_target_option_pragma_parse.
6183         (TARGET_OPTION_VALID_ATTRIBUTE_P): Change default to
6184         default_target_option_valid_attribute_p.
6185         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Delete.
6186         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Ditto.
6187         (TARGET_OPTION_HOOKS): Delete the fields for whether to change
6188         optimization level on hot/cold functions.
6189
6190         * tree-inline.c (tree_can_inline_p): Disable suppressing inlining
6191         if the caller and callee have different optimization levels.
6192
6193         * c-common.c (handle_target_attribute): Rename from
6194         handle_option_attribute, attribute((option(...))) is now
6195         attribute((target(...))).  Move warning if the port does not
6196         support target attributes to the default hook.
6197         (handle_hot_attribute): Delete code to change the optimization
6198         level of hot functions.
6199         (handle_cold_attribute): Ditto.
6200
6201         * config/i386/i386-c.c (ix86_pragma_target_parse): Take a second
6202         argument that is the binary tree options to use if there are no
6203         arguments.  Call ix86_valid_target_attribute_tree instead of
6204         ix86_valid_option_attribute_tree.
6205         (ix86_pragma_target_parse): Rename from ix86_pragma_option_parse.
6206         (ix86_register_pragmas): Use ix86_pragma_target_parse instead of
6207         ix86_pragma_option_parse.
6208
6209         * config/i386/i386-protos.h (ix86_valid_target_attribute_tree):
6210         Rename from ix86_valid_option_attribute_tree.
6211
6212         * config/i386/i386.c (ix86_add_new_builtins): New function to add
6213         new builtins when the ISA changes.
6214         (ix86_valid_target_attribute_tree): Rename from
6215         ix86_valid_option_attribute_tree.  Change callers.  If the
6216         function specified optimization options, use those as the starting
6217         point before setting up the target attributes.  If the
6218         optimization options were changed in the course of setting the
6219         target attributes, record the new optimization options.
6220         (ix86_valid_target_attribute_tree_inner_p): Rename from
6221         ix86_valid_option_attribute_tree_inner_p.  Change callers.  Call
6222         ix86_add_new_builtins if the ISA changed.
6223         (ix86_valid_target_attribute_p): Rename from
6224         ix86_valid_option_attribute_p.  Change callers.
6225         (enum ix86_builtins): Add IX86_BUILTIN_PCMOV to allow both
6226         __builtin_ia32_pcmov and __builtin_ia32_pcmov_v2di to be declared
6227         as delayed builtin functions.
6228         (struct builtin_isa): New structure to record builtin functions
6229         that should be delayed until the ISA for that function is used.
6230         (ix86_builtins_isa): Change from int to struct to track builtin
6231         functions we want to declare at some point.
6232         (def_builtin): If the front end can delay defining the builtin
6233         functions, don't create builtins for ISAs not part of the default
6234         options.
6235         (def_builtin_const): Ditto.
6236         (bdesc_multi_arg): Declare __builtin_ia32_pcmov and
6237         __builtin_ia32_pcmov_v2di to be different builtin functions.
6238         (ix86_expand_builtin): Changes due to ix86_builtins_isa now being
6239         a structure instead of an int.
6240         (TARGET_OPTION_VALID_ATTRIBUTE_P): Use
6241         ix86_valid_target_attribute_p, not ix86_valid_option_attribute_p.
6242         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Delete.
6243         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Ditto.
6244
6245         * config/ia64/ia64.h
6246         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Delete.
6247         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Ditto.
6248
6249         * langhooks-def.h (LANG_HOOKS_BUILTIN_FUNCTION_EXT_SCOPE): New
6250         hook, default to being the same as LANG_HOOKS_BUILTIN_FUNCTION.
6251         (LANG_HOOKS_INITIALIZER): Add
6252         LANG_HOOKS_BUILTIN_FUNCTION_EXT_SCOPE hook.
6253
6254 2008-08-30  Kaz Kojima  <kkojima@gcc.gnu.org>
6255
6256         PR target/37270
6257         * config/sh/sh.h (LEGITIMIZE_RELOAD_ADDRESS): Generate
6258         the reload address with the index register for SFmode
6259         access with a displacement.
6260
6261 2008-08-30  Jan Hubicka  <jh@suse.cz>
6262
6263         * optabs.c (expand_abs_nojump): Update BRANCH_COST call.
6264         * fold-cost.c (LOGICAL_OP_NON_SHORT_CIRCUIT, fold_truthop): Likewise.
6265         * dojump.c (do_jump): Likewise.
6266         * ifcvt.c (MAX_CONDITIONAL_EXECUTE): Likewise.
6267         (note-if_info): Add BRANCH_COST.
6268         (noce_try_store_flag_constants, noce_try_addcc,
6269         noce_try_store_flag_mask, noce_try_cmove_arith, noce_try_cmove_arith,
6270         noce_try_cmove_arith, noce_find_if_block, find_if_case_1,
6271         find_if_case_2): Use computed branch cost.
6272         * expr.h (BRANCH_COST): Update default.
6273         * predict.c (predictable_edge_p): New function.
6274         * expmed.c (expand_smod_pow2, expand_sdiv_pow2, emit_store_flag):
6275         Update BRANCH_COST call.
6276         * basic-block.h (predictable_edge_p): Declare.
6277         * config/alpha/alpha.h (BRANCH_COST): Update.
6278         * config/frv/frv.h (BRANCH_COST): Update.
6279         * config/s390/s390.h (BRANCH_COST): Update.
6280         * config/spu/spu.h (BRANCH_COST): Update.
6281         * config/sparc/sparc.h (BRANCH_COST): Update.
6282         * config/m32r/m32r.h (BRANCH_COST): Update.
6283         * config/i386/i386.h (BRANCH_COST): Update.
6284         * config/i386/i386.c (ix86_expand_int_movcc): Update use of
6285         BRANCH_COST.
6286         * config/sh/sh.h (BRANCH_COST): Update.
6287         * config/pdp11/pdp11.h (BRANCH_COST): Update.
6288         * config/avr/avr.h (BRANCH_COST): Update.
6289         * config/crx/crx.h (BRANCH_COST): Update.
6290         * config/xtensa/xtensa.h (BRANCH_COST): Update.
6291         * config/stormy16/stormy16.h (BRANCH_COST): Update.
6292         * config/m68hc11/m68hc11.h (BRANCH_COST): Update.
6293         * config/iq2000/iq2000.h (BRANCH_COST): Update.
6294         * config/ia64/ia64.h (BRANCH_COST): Update.
6295         * config/rs6000/rs6000.h (BRANCH_COST): Update.
6296         * config/arc/arc.h (BRANCH_COST): Update.
6297         * config/score/score.h (BRANCH_COST): Update.
6298         * config/arm/arm.h (BRANCH_COST): Update.
6299         * config/pa/pa.h (BRANCH_COST): Update.
6300         * config/mips/mips.h (BRANCH_COST): Update.
6301         * config/vax/vax.h (BRANCH_COST): Update.
6302         * config/h8300/h8300.h (BRANCH_COST): Update.
6303         * params.def (PARAM_PREDICTABLE_BRANCH_OUTCOME): New.
6304         * doc/invoke.texi (predictable-branch-cost-outcome): Document.
6305         * doc/tm.texi (BRANCH_COST): Update.
6306
6307 2008-08-30  Samuel Tardieu  <sam@rfc1149.net>
6308
6309         PR target/37283
6310         * config/arm/arm.c (arm_optimization_options): Set
6311         flag_section_anchors to 2 instead of 1 to distinguish it from
6312         -fsection-anchors given explicitely on the command line.
6313
6314 2008-08-30  Richard Sandiford  <rdsandiford@googlemail.com>
6315
6316         * recog.c (split_insn): Consider attaching a REG_EQUAL note to the
6317         final insn of a split.
6318
6319 2008-08-30  Jan Hubicka  <jh@suse.cz>
6320
6321         * postreload-gcse.c (gate_handle_gcse2): Disable for functions
6322         optimized for speed.
6323         * final.c (compute_alignments): Use optimize_bb_for_size_p.
6324         * tree-call-cdce.c (gate_call_cdce): Use optimize_function_for_speed_p.
6325         * opts.c (flag_predictive_commoning_set, flag_unswitch_loops_set,
6326         flag_gcse_after_reload_set): New static vars.
6327         (common_handle_option): Enable those flags for profile-use.
6328         (decode_options): Remove optimize_size flags that are handled
6329         on higher granuality.
6330         * tree-vectorizer.c (vectorize_loops): Use
6331         optimize_loop_nest_for_speed_p.
6332         * tree-ssa-pre.c (do_pre): Use optimize_function_for_speed_p.
6333         * tree-predcom.c (tree_predictive_commoning): Use
6334         optimize_loop_for_speed_p.
6335         * varasm.c (assemble_start_function): Use
6336         optimize_function_for_speed_p.
6337         * bb-reorder.c (rest_of_handle_reorder_blocks): Likewise.
6338         * predict.c (optimize_loop_for_speed_p): Fix walk.
6339
6340 2008-08-30  Jan Hubicka  <jh@suse.cz>
6341
6342         * ipa-inline.c (cgraph_estimate_growth): Discover self recursive
6343         functions.
6344         (cgraph_decide_inlining_of_small_function): Use edge->count to detect
6345         profile presence locally.
6346
6347 2008-08-29  Joseph Myers  <joseph@codesourcery.com>
6348
6349         PR bootstrap/37086
6350         * tree-vrp.c (find_switch_asserts): Make idx volatile for GCC
6351         versions before 4.0.
6352
6353 2008-08-29  Jan Hubicka  <jh@suse.cz>
6354
6355         * tree-inline.c (insert_init_stmt): Insert sequence even when
6356         not in SSA form.
6357
6358 2008-08-29  Jeff Law  <law@redhat.com>
6359
6360         * mn10300.c (mn10300_secondary_reload_class): We need secondary
6361         reloads for AM33-2 if IN is a pseudo with an equivalent memory
6362         location and class is an FP register.
6363
6364 2008-08-29  Jan Hubicka  <jh@suse.cz>
6365
6366         * see.c (see_merge_one_def_extension): Silence used uninitialized
6367         warning.
6368         * matrix-reorg.c (check_allocation_function): Likewise.
6369         * config/i386/driver-i386.c (detect_caches_amd): Likewise.
6370
6371 2008-08-29  Jakub Jelinek  <jakub@redhat.com>
6372
6373         PR c/37261
6374         * fold-const.c (fold_binary): In (X | C1) & C2 canonicalization
6375         compute new & and | in type rather than TREE_TYPE (arg0).
6376
6377         * dwarf2out.c (fortran_common): Update comment.
6378         (gen_variable_die): Swap com_die and var_die variables in Fortran
6379         COMMON block handling code.
6380
6381         * dwarf2out.c (descr_info_loc): Handle VAR_DECL.
6382
6383         * dwarf2out.c (gen_const_die): New function.
6384         (size_of_die, value_format, output_die): Output larger
6385         dw_val_class_vec using DW_FORM_block2 or DW_FORM_block4.
6386         (native_encode_initializer): New function.
6387         (tree_add_const_value_attribute): Call it.
6388         (gen_decl_die, dwarf2out_decl): Handle CONST_DECLs if is_fortran ().
6389
6390         * dwarf2out.c (gen_formal_parameter_die, gen_variable_die): For
6391         DECL_BY_REFERENCE decls don't pass TREE_READONLY and
6392         TREE_THIS_VOLATILE to add_type_attribute.
6393
6394         * dwarf2out.c (add_subscript_info): Stop on Fortran TYPE_STRING_FLAG
6395         types.
6396         (gen_array_type_die): Emit DW_TAG_string_type for Fortran character
6397         types.
6398
6399         * dwarf2out.c (loc_by_reference): New function.
6400         (add_location_or_const_value_attribute): Use it.
6401
6402         PR fortran/23057
6403         * dwarf2out.c (gen_variable_die): Represent Fortran COMMON vars
6404         as DW_TAG_variable children of DW_TAG_common_block rather than
6405         DW_TAG_member children.  Put DW_AT_external to individual
6406         DW_TAG_variable DIEs, not to DW_TAG_common_block.
6407
6408         * dwarf2out.c (add_bound_info): If lookup_decl_die failed, try
6409         loc_descriptor_from_tree_1.
6410
6411         PR fortran/29635
6412         PR fortran/23057
6413         * debug.h (struct gcc_debug_hooks): Add NAME and CHILD
6414         arguments to imported_module_or_decl.
6415         (debug_nothing_tree_tree): Removed.
6416         (debug_nothing_tree_tree_tree_bool): New prototype.
6417         * debug.c (do_nothing_debug_hooks): Adjust.
6418         (debug_nothing_tree_tree): Removed.
6419         (debug_nothing_tree_tree_tree_bool): New function.
6420         * dwarf2out.c (is_symbol_die): Handle DW_TAG_module.
6421         (gen_variable_die): Put all common vars for the
6422         same COMMON block under one DW_TAG_common_block.
6423         (declare_in_namespace): Return new context_die, for Fortran
6424         return the module DIE instead of adding extra declarations into
6425         the namespace.
6426         (gen_type_die_with_usage): Adjust declare_in_namespace caller.
6427         (gen_namespace_die): If is_fortran (), generate DW_TAG_module
6428         instead of DW_TAG_namespace.  If DECL_EXTERNAL is set, add
6429         DW_AT_declaration.
6430         (dwarf2out_global_decl): Don't skip Fortran global vars.
6431         (gen_decl_die): Likewise.  Adjust declare_in_namespace callers.
6432         (dwarf2out_imported_module_or_decl): Add NAME and CHILD arguments.
6433         If NAME is non-NULL, add DW_AT_name.  If CHILD is non-NULL, put
6434         DW_TAG_imported_declaration as child of previous
6435         DW_TAG_imported_module.
6436         * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Adjust.
6437         * sdbout.c (sdb_debug_hooks): Likewise.
6438         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
6439
6440 2008-08-29  Jan Hubicka  <jh@suse.cz>
6441
6442         * cgraph.c (cgraph_remove_node): Do not remove nested nodes.
6443
6444         * cgraph.h (cgraph_maybe_hot_edge_p): Declare.
6445         * ipa-cp.c (n_cloning_candidates): New static variable.
6446         (ipcp_print_profile_data, ipcp_function_scale_print): Forward declare.
6447         (ipcp_print_all_lattices): Improve debug output.
6448         (ipcp_cloning_candidate_p): New function.
6449         (ipcp_initialize_node_lattices): Use it.
6450         (ipcp_init_stage): Do only analyzis here; prettier debug output.
6451         (ipcp_propagate_stage): Prettier debug output.
6452         (ipcp_iterate_stage): Initialize latices here; prettier debug output.
6453         (ipcp_print_all_structures): Remove.
6454         (ipcp_need_redirect_p): Test !n_cloning_candidates.
6455         (ipcp_insert_stage): Prettier debug output; call
6456         cgraph_remove_unreachable_nodes before propagating.
6457         (pass_ipa_cp): Schedule function removal pass.
6458         * ipa-inline.c (inline_indirect_intraprocedural_analysis): Better
6459         debug output.
6460         (cgraph_maybe_hot_edge_p): Move to ...
6461         * predict.c (cgraph_maybe_hot_edge_p) ... here.
6462         * opts.c (flag_ipa_cp_set, flag_ipa_cp_clone_set): New.
6463         (common_handle_option): Set them; enable ipa-cp when profiling.
6464         * ipa-prop.c (ipa_print_node_jump_functions): Prettier output.
6465         (ipa_print_all_jump_functions): Likewise.
6466         (ipa_print_all_tree_maps, ipa_print_node_param_flags): Remove.
6467         (ipa_print_node_params, ipa_print_all_params): New.
6468         * ipa-prop.h (ipa_print_all_tree_maps, ipa_print_node_param_flags,
6469         ipa_print_all_param_flags): Remove.
6470         (ipa_print_node_params, ipa_print_all_params): New.
6471
6472 2008-08-29  Bob Wilson  <bob.wilson@acm.org>
6473
6474         * config/xtensa/xtensa.c (xtensa_secondary_reload_class): Revert
6475         change from 2008-04-03.
6476         * config/xtensa/xtensa.h (IRA_COVER_CLASSES): Define.
6477
6478 2008-08-29  Vladimir Makarov  <vmakarov@redhat.com>
6479
6480         PR rtl-opt/37251
6481         * ira-color.c (push_allocnos_to_stack): Truncate
6482         removed_splay_allocno_vec.
6483
6484 2008-08-29  Vladimir Makarov  <vmakarov@redhat.com>
6485
6486         PR rtl-opt/37243
6487         * ira-color (ira_fast_allocation): Don't assign hard registers to
6488         global allocnos.
6489
6490 2008-08-29  Jan Hubicka  <jh@suse.cz>
6491
6492         PR middle-end/37278
6493         * predict.c (optimize_loop_nest_for_speed_p): Do not ICE
6494         for cold internal loops.
6495
6496 2008-08-29  Richard Guenther  <rguenther@suse.de>
6497
6498         * tree-ssa-structalias.c (create_variable_info_for): Do not
6499         create fields for heap vars or vars with a noalias state.
6500         For NO_ALIAS_ANYTHING variables add a self-constraint, not one
6501         from ESCAPED.
6502
6503 2008-08-29  Richard Guenther  <rguenther@suse.de>
6504
6505         * common.opt (ftree-store-ccp): Mark as preserved for
6506         backward compatibility.
6507         * doc/invoke.texi (-ftree-store-ccp): Remove documentation.
6508         * tree-pass.h (pass_store_ccp): Remove.
6509         * tree-ssa-propagate.h (struct prop_value_d): Remove mem_ref field.
6510         (first_vdef): Remove declaration.
6511         (get_value_loaded_by): Likewise.
6512         * tree-ssa-ccp.c (do_store_ccp): Remove.
6513         (get_default_value): Simplify as do_store_ccp is always false
6514         now.  Do not initialize mem_ref.
6515         (set_value_varying): Likewise.
6516         (canonicalize_float_value): Likewise.
6517         (set_lattice_value): Likewise.
6518         (likely_value): Likewise.
6519         (surely_varying_stmt_p): Likewise.
6520         (ccp_initialize): Likewise.
6521         (ccp_lattice_meet): Likewise.
6522         (ccp_visit_phi_node): Likewise.
6523         (ccp_fold): Likewise.
6524         (evaluate_stmt): Likewise.
6525         (visit_assignment): Likewise.
6526         (ccp_visit_stmt): Likewise.
6527         (execute_ssa_ccp): Fold into ...
6528         (do_ssa_ccp): ... this.
6529         (do_ssa_store_ccp): Remove.
6530         (gate_store_ccp): Likewise.
6531         (pass_store_ccp): Likewise.
6532         * tree-ssa-copy.c (copy_prop_visit_phi_node): Do not
6533         initialize mem_ref.
6534         * tree-ssa-propagate.c (first_vdef): Remove.
6535         (get_value_loaded_by): Likewise.
6536         (replace_vuses_in): Likewise.
6537         (substitute_and_fold): Do not call replace_vuses_in.
6538         * opts.c (decode_options): Do not set flag_tree_store_ccp.
6539
6540 2008-08-29  Richard Guenther  <rguenther@suse.de>
6541
6542         PR middle-end/37236
6543         * tree-ssa-structalias.c (intra_create_variable_infos): Mark
6544         PARAM_NOALIAS tags with is_heapvar.
6545         * tree-ssa-operands.c (access_can_touch_variable): Offset
6546         based tests do not apply for heapvars.  Fix offset test.
6547
6548 2008-08-29  Jan Hubicka  <jh@suse.cz>
6549
6550         * doc/invoke.texi (-fipa-cp): Enabled by default at -O2/-Os/-O3
6551         (-fipa-cp-clone): Enabled by default at -O3.
6552         * opts.c (decode_options): Enable ipa-cp at -O2, ipa-cp-clone at -O3;
6553         make ipa-cp-clone to imply ipa-cp; disable cloning at -Os.
6554
6555 2008-08-29  Jan Hubicka  <jh@suse.cz>
6556
6557         * tree.c (build_function_type_skip_args,
6558         build_function_decl_skip_args): New functions.
6559         * tree.h (build_function_type_skip_args,
6560         build_function_decl_skip_args): Declare.
6561         * gimple.c (giple_copy_call_skip_args): New function.
6562         (giple_copy_call_skip_args): Declare.
6563
6564         * cgraph.h (cgraph_function_versioning): Add skip_args arugmnet
6565         * ipa-cp.c (ipcp_node_not_modifiable_p): Rename to ...
6566         (ipcp_node_modifiable_p): ... this one; use
6567         tree_versionable_function_p.
6568         (ipcp_create_replace_map): Improve debug output.
6569         (ipcp_need_redirect_p): Return false when not clonning.
6570         (ipcp_update_callgraph): Skip args.
6571         (ipcp_insert_stage): UPdate call of !ipcp_node_modifiable_p;
6572         skip args.
6573         * cgraphunit.c (cgraph_function_versioning): Add skip_args argument.
6574         (save_inline_function_body): Update call of tree_function_versioning.
6575         * ipa-prop.c (ipa_edge_removal_hook): Do not ICE on unanalyzed nodes.
6576         * tree-inline.c (copy_arguments_for_versioning): Add skip_args
6577         argument.
6578         (tree_function_versioning): Likewise.
6579         * tree-inline.h (tree_function_versioning): Update prototype.
6580
6581 2008-08-29  Jan Hubicka  <jh@suse.cz>
6582
6583         * loop-unswitch.c (unswitch_single_loop): Use
6584         optimize_loop_for_speed_p.
6585         * tree-ssa-threadupdate.c (mark_threaded_blocks):
6586         Use optimize_function_for_size_p.
6587         * tracer.c (ignore_bb_p): Use optimize_bb_for_size_p.
6588         * postreload-gcse.c (eliminate_partially_redundant_load):
6589         Use optimize_bb_for_size_p.
6590         * value-prof.c (gimple_divmod_fixed_value_transform,
6591         gimple_mod_pow2_value_transform, gimple_mod_subtract_transform,
6592         gimple_stringops_transform): Use optimize_bb_for_size_p.
6593         * ipa-cp.c (ipcp_insert_stage): Use optimize_function_for_size_p.
6594         * final.c (compute_alignments): Use optimize_function_for_size_p.
6595         * builtins.c (fold_builtin_cabs): Use optimize_function_for_speed_p.
6596         (fold_builtin_strcpy, fold_builtin_fputs): Use
6597         optimize_function_for_size_p.
6598         * fold-const.c (tree_swap_operands_p): Use
6599         optimize_function_for_size_p.
6600         * recog.c (relax_delay_slots): Likewise.
6601         * tree-ssa-math-opts.c (replace_reciprocal):
6602         Use optimize_bb_for_speed_p.
6603         (execute_cse_reciprocals): Use optimize_bb_for_size_p.
6604         * ipa-inline.c (cgraph_decide_recursive_inlining): Use
6605         optimize_function_for_size_p.
6606         (cgraph_decide_inlining_of_small_function): Use
6607         optimize_function_for_size_p.
6608         * global.c (find_reg): Use optimize_function_for_size_p.
6609         * opts.c (decode_options): Do not clear flag_tree_ch,
6610         flag_inline_functions, flag_unswitch_loops, flag_unroll_loops,
6611         flag_unroll_all_loops and flag_prefetch_loop_arrays. Those can
6612         work it out from profile.
6613         * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely): Use
6614         optimize_loop_for_speed_p.
6615         * predict.c (optimize_bb_for_size_p, optimize_bb_for_speed_p):
6616         Constify argument.
6617         (optimize_loop_nest_for_size_p, optimize_loop_nest_for_speed_p): New.
6618         * tree-parloops.c (parallelize_loops): Use optimize_loop_for_size_p.
6619         * tree-eh.c (decide_copy_try_finally): Use
6620         optimize_function_for_size_p.
6621         * local-alloc.c (block_alloc): Pass BB pointer.
6622         (find_free_reg): Add BB pointer, use optimize_bb_for_size_p.
6623         * gcse.c (gcse_main): Use optimize_function_for_size_p.
6624         * loop-unroll.c (decide_unrolling_and_peeling):
6625         Use optimize_loop_for_size_p.
6626         (decide_peel_completely): Likewise.
6627         * tree-vect-analyze.c (vect_mark_for_runtime_alias_test): Use
6628         optimize_loop_for_size_p.
6629         (vect_enhance_data_refs_alignment): Likewise.
6630         * tree-ssa-coalesce.c (coalesce_cost): Add optimize_for_size argument.
6631         (coalesce_cost_bb, coalesce_cost_edge, create_outofssa_var_map):
6632         Update call.
6633         * cfgcleanup.c (outgoing_edges_match): Use optimize_bb_for_speed_p.
6634         (try_crossjump_bb): Use optimize_bb_for_size_p.
6635         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Use
6636         optimize_loop_for_speed_p.
6637         * bb-reorder.c (find_traces_1_round): Likewise.
6638         (copy_bb): Use optimize_bb_for_speed_p.
6639         (duplicate_computed_gotos): Likewise.
6640         * basic-block.h (optimize_loop_nest_for_size_p,
6641         optimize_loop_nest_for_speed_p): New.
6642         * stmt.c (expand_case): Use optimize_insn_for_size_p.
6643
6644 2008-08-29  Tristan Gingold  <gingold@adacore.com>
6645
6646         * gcov.c (main): Call expandargv.
6647
6648 2008-08-29  Jan Hubicka  <jh@suse.cz>
6649
6650         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Check that loop
6651         is not cold.
6652         * predict.c (optimize_bb_for_size_p, optimize_bb_for_speed_p):
6653         Constify arguments.
6654         (optimize_loop_for_size_p, optimize_loop_for_speed_p): New functions.
6655         * basic-block.h (optimize_bb_for_size_p, optimize_bb_for_speed_p):
6656         Constify.
6657         (optimize_loop_for_size_p, optimize_loop_for_speed_p): Declare.
6658
6659 2008-08-29  Jan Hubicka  <jh@suse.cz>
6660
6661         * tree-pass.h (pass_strip_predict_hints): Declare.
6662         * predict.c (strip_builtin_expect): Rename to ...
6663         (strip_predict_hints): ... this one; strip also GIMPLE_PREDICT.
6664         (tree_bb_level_predictions): Do not remove GIMPLE_PREDICT.
6665         (tree_estimate_probability): Do not strip builtin_expect.
6666         (pass_strip_predict_hints): New pass.
6667         * tree-inline.c (expand_call_inline): When inlining cold function,
6668         predict it as unlikely.
6669         * passes.c (init_optimization_passes): Add pass_strip_predict_hints.
6670
6671 2008-08-29  Richard Guenther  <rguenther@suse.de>
6672
6673         PR tree-optimization/37207
6674         * tree-vrp.c (extract_range_from_binary_expr): Also try
6675         to constant fold if only one of the operands is a constant.
6676
6677 2008-08-29  Nick Clifton  <nickc@redhat.com>
6678
6679         * config/m32r/m32r.h (LEGITIMATE_CONSTANT_P): Treat LABEL_REFs in
6680         the same way as SYMBOL_REFs.
6681
6682 2008-08-28  Bob Wilson  <bob.wilson@acm.org>
6683
6684         * config/xtensa/xtensa.md (<u>mulsidi3): Use a temporary register.
6685
6686 2008-08-28  Adam Nemet  <anemet@caviumnetworks.com>
6687
6688         * config/mips/mips.h (ISA_HAS_BBIT): New macro.
6689         * config/mips/mips.md (branch_likely): Remove const.  Fix
6690         comment formatting.
6691         (define_delay for type "branch"): Change to only apply for branch
6692         with likely variant.
6693         (define_delay for type "branch" and "branch_likely" no).  New delay
6694         definition.
6695         (equality_op): New code iterator.
6696         (bbv, bbinv): New code attributes.
6697         (*branch_bit<bbv><mode>, *branch_bit<bbv><mode>_inverted): New
6698         patterns.
6699
6700 2008-08-28  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6701             Andrew Pinski  <pinskia@gcc.gnu.org>
6702
6703         PR 18050
6704         * c-common.c (verify_tree): Fix handling of ADDR_EXPR.
6705
6706 2008-08-28  Paolo Carlini  <paolo.carlini@oracle.com>
6707
6708         * gtrh-posix.h: Fix uses of _POSIX_TIMEOUTS per the normal Posix
6709         rule that a symbolic constant must be defined and >= 0 for the
6710         corresponding facility to be present at compile-time.
6711         * gthr-posix.c: Likewise.
6712
6713 2008-08-28  Adam Nemet  <anemet@caviumnetworks.com>
6714
6715         * config/mips/mips.h (ISA_HAS_DMUL3): New macro.
6716         * config/mips/mips.md (D): New mode attribute.
6717         (mulsi3, muldi3): Merge it into ...
6718         (mul<mode>3): ... new template.  Use _mul3 ending for 3-op patterns.
6719         (muldi3_mul3): New pattern.
6720         (mulsi3_mult3): Rename to mulsi3_mul3.
6721
6722 2008-08-28  Jan Hubicka  <jh@suse.cz>
6723
6724         * expmed.c (store_bit_field_1): Be prepared for movstrict expander
6725         to fail.
6726         * predict.c (always_optimize_for_size_p): Rename to ...
6727         (optimize_function_for_size): ... this one; make extern.
6728         (optimize_function_for_speed_p): New.
6729         (optimize_bb_for_size_p, optimize_bb_for_size_p,
6730         optimize_edge_for_size_p,optimize_edge_for_size_p,
6731         optimize_insn_for_size_p, optimize_insn_for_size_p): Update.
6732         * basic-block.h (optimize_function_for_size_p,
6733         optimize_function_for_speed_p): Declare.
6734         * i386.md (optimize_size checks): Replace them by appropriate
6735         predicate.
6736         (standard_80387_constant_p, ix86_compute_frame_layout,
6737         ix86_expand_epilogue, ix86_decompose_address,
6738         print_operand, emit_i387_cw_initialization,
6739         inline_memory_move_cost, ix86_pad_returns,
6740         ix86_reorg): Replace optimize_size checks.
6741
6742 2008-08-28  Richard Sandiford  <rdsandiford@googlemail.com>
6743
6744         * rtl.h (simplify_subreg_regno): Declare.
6745         * rtlanal.c (simplify_subreg_regno): New function, split out from...
6746         * simplify-rtx.c (simplify_subreg): ...here.
6747         * reload.c (find_reloads): Use simplify_subreg_regno instead of
6748         subreg_offset_representable_p.
6749
6750 2008-08-28  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6751
6752         PR c/30949
6753         * c-typeck.c (convert_for_assignment): Give a note describing what
6754         was passed and what was expected.
6755
6756 2008-08-28  Joey Ye  <joey.ye@intel.com>
6757
6758         * doc/extend.texi: Document AVX built-in functions.
6759         * doc/invoke.texi: Document -mavx.
6760
6761 2008-08-28  H.J. Lu  <hongjiu.lu@intel.com>
6762             Joey Ye  <joey.ye@intel.com>
6763             Xuepeng Guo  <xuepeng.guo@intel.com>
6764
6765         * config.gcc (extra_headers): Add gmmintrin.h for x86 and x86-64.
6766
6767         * config/i386/cpuid.h (bit_FMA): New.
6768         (bit_XSAVE): Likewise.
6769         (bit_OSXSAVE): Likewise.
6770         (bit_AVX): Likewise.
6771
6772         * config/i386/gas.h (ASM_OUTPUT_OPCODE): Undefine before
6773         define.  Use ASM_OUTPUT_AVX_PREFIX.
6774
6775         * config/i386/gmmintrin.h: New.
6776
6777         * config/i386/i386.c (x86_64_reg_class): Add X86_64_AVX_CLASS.
6778         (OPTION_MASK_ISA_AVX_SET): New.
6779         (OPTION_MASK_ISA_FMA_SET): Likewise.
6780         (OPTION_MASK_ISA_AVX_UNSET): Likewise.
6781         (OPTION_MASK_ISA_FMA_SET): Likewise.
6782         (OPTION_MASK_ISA_SSE4_2_UNSET): Updated.
6783         (ix86_handle_option): Handle OPT_mavx and OPT_mfma.
6784         (pta_flags): Add PTA_AVX and PTA_FMA.
6785         (override_options): Handle PTA_AVX and PTA_FMA.
6786         (init_cumulative_args): Handle warn_avx.
6787         (classify_argument): Return 0 for COImode and OImode.  Return
6788         1 and X86_64_AVX_CLASS for 256bit vector types.
6789         (examine_argument): Handle X86_64_AVX_CLASS.
6790         (construct_container): Likewise.
6791         (function_arg_advance_32): Pass OImode and 256bit vector types
6792         in AVX register.
6793         (function_arg_advance_64): Take a new argument to indicate if a
6794         parameter is named.  Handle 256bit vector types.  Return
6795         immediately for unnamed 256bit vector mode parameters.
6796         (function_arg_advance): Updated.
6797         (function_arg_32): Add comments for TImode.  Handle OImode
6798         and 256bit vector types.
6799         (function_arg_64): Take a new argument to indicate if a
6800         parameter is named.  Handle 256bit vector types.  Return NULL
6801         for unnamed 256bit vector mode parameters.
6802         (function_arg): Updated.
6803         (setup_incoming_varargs_64): Support
6804         AVX encoding for *sse_prologue_save_insn.
6805         (ix86_gimplify_va_arg): Handle 256bit vector mode parameters.
6806         (standard_sse_constant_p): Return -2 for all 1s if SSE2 isn't
6807         enabled.  For all 1s in 256bit vector modes, return 3 if AVX is
6808         enabled, otherwise return -3.
6809         (standard_sse_constant_opcode): Handle AVX and 256bit vector
6810         modes.
6811         (print_reg): Support AVX registers.  Handle 'x' and 't'.
6812         Handle 'd' to duplicate the operand.
6813         (print_operand): Likewise.  Also support AVX vector compare
6814         instructions.
6815         (output_387_binary_op): Support AVX.
6816         (output_fp_compare): Likewise.
6817         (ix86_expand_vector_move_misalign): Likewise.
6818         (ix86_attr_length_vex_default): New.
6819         (ix86_builtins): Add IX86_BUILTIN_ADDPD256,
6820         IX86_BUILTIN_ADDPS256, IX86_BUILTIN_ADDSUBPD256,
6821         IX86_BUILTIN_ADDSUBPS256, IX86_BUILTIN_ANDPD256,
6822         IX86_BUILTIN_ANDPS256, IX86_BUILTIN_ANDNPD256,
6823         IX86_BUILTIN_ANDNPS256, IX86_BUILTIN_BLENDPD256,
6824         IX86_BUILTIN_BLENDPS256, IX86_BUILTIN_BLENDVPD256,
6825         IX86_BUILTIN_BLENDVPS256, IX86_BUILTIN_DIVPD256,
6826         IX86_BUILTIN_DIVPS256, IX86_BUILTIN_DPPS256,
6827         IX86_BUILTIN_HADDPD256, IX86_BUILTIN_HADDPS256,
6828         IX86_BUILTIN_HSUBPD256, IX86_BUILTIN_HSUBPS256,
6829         IX86_BUILTIN_MAXPD256, IX86_BUILTIN_MAXPS256,
6830         IX86_BUILTIN_MINPD256, IX86_BUILTIN_MINPS256,
6831         IX86_BUILTIN_MULPD256, IX86_BUILTIN_MULPS256,
6832         IX86_BUILTIN_ORPD256, IX86_BUILTIN_ORPS256,
6833         IX86_BUILTIN_SHUFPD256, IX86_BUILTIN_SHUFPS256,
6834         IX86_BUILTIN_SUBPD256, IX86_BUILTIN_SUBPS256,
6835         IX86_BUILTIN_XORPD256, IX86_BUILTIN_XORPS256,
6836         IX86_BUILTIN_CMPSD, IX86_BUILTIN_CMPSS, IX86_BUILTIN_CMPPD,
6837         IX86_BUILTIN_CMPPS, IX86_BUILTIN_CMPPD256,
6838         IX86_BUILTIN_CMPPS256, IX86_BUILTIN_CVTDQ2PD256,
6839         IX86_BUILTIN_CVTDQ2PS256, IX86_BUILTIN_CVTPD2PS256,
6840         IX86_BUILTIN_CVTPS2DQ256, IX86_BUILTIN_CVTPS2PD256,
6841         IX86_BUILTIN_CVTTPD2DQ256, IX86_BUILTIN_CVTPD2DQ256,
6842         IX86_BUILTIN_CVTTPS2DQ256, IX86_BUILTIN_EXTRACTF128PD256,
6843         IX86_BUILTIN_EXTRACTF128PS256, IX86_BUILTIN_EXTRACTF128SI256,
6844         IX86_BUILTIN_VZEROALL, IX86_BUILTIN_VZEROUPPER,
6845         IX86_BUILTIN_VZEROUPPER_REX64, IX86_BUILTIN_VPERMILVARPD,
6846         IX86_BUILTIN_VPERMILVARPS, IX86_BUILTIN_VPERMILVARPD256,
6847         IX86_BUILTIN_VPERMILVARPS256, IX86_BUILTIN_VPERMILPD,
6848         IX86_BUILTIN_VPERMILPS, IX86_BUILTIN_VPERMILPD256,
6849         IX86_BUILTIN_VPERMILPS256, IX86_BUILTIN_VPERMIL2PD,
6850         IX86_BUILTIN_VPERMIL2PS, IX86_BUILTIN_VPERMIL2PD256,
6851         IX86_BUILTIN_VPERMIL2PS256, IX86_BUILTIN_VPERM2F128PD256,
6852         IX86_BUILTIN_VPERM2F128PS256, IX86_BUILTIN_VPERM2F128SI256,
6853         IX86_BUILTIN_VBROADCASTSS, IX86_BUILTIN_VBROADCASTSD256,
6854         IX86_BUILTIN_VBROADCASTSS256, IX86_BUILTIN_VBROADCASTPD256,
6855         IX86_BUILTIN_VBROADCASTPS256, IX86_BUILTIN_VINSERTF128PD256,
6856         IX86_BUILTIN_VINSERTF128PS256, IX86_BUILTIN_VINSERTF128SI256,
6857         IX86_BUILTIN_LOADUPD256, IX86_BUILTIN_LOADUPS256,
6858         IX86_BUILTIN_STOREUPD256, IX86_BUILTIN_STOREUPS256,
6859         IX86_BUILTIN_LDDQU256, IX86_BUILTIN_LOADDQU256,
6860         IX86_BUILTIN_STOREDQU256, IX86_BUILTIN_MASKLOADPD,
6861         IX86_BUILTIN_MASKLOADPS, IX86_BUILTIN_MASKSTOREPD,
6862         IX86_BUILTIN_MASKSTOREPS, IX86_BUILTIN_MASKLOADPD256,
6863         IX86_BUILTIN_MASKLOADPS256, IX86_BUILTIN_MASKSTOREPD256,
6864         IX86_BUILTIN_MASKSTOREPS256, IX86_BUILTIN_MOVSHDUP256,
6865         IX86_BUILTIN_MOVSLDUP256, IX86_BUILTIN_MOVDDUP256,
6866         IX86_BUILTIN_SQRTPD256, IX86_BUILTIN_SQRTPS256,
6867         IX86_BUILTIN_SQRTPS_NR256, IX86_BUILTIN_RSQRTPS256,
6868         IX86_BUILTIN_RSQRTPS_NR256, IX86_BUILTIN_RCPPS256,
6869         IX86_BUILTIN_ROUNDPD256, IX86_BUILTIN_ROUNDPS256,
6870         IX86_BUILTIN_UNPCKHPD256, IX86_BUILTIN_UNPCKLPD256,
6871         IX86_BUILTIN_UNPCKHPS256, IX86_BUILTIN_UNPCKLPS256,
6872         IX86_BUILTIN_SI256_SI, IX86_BUILTIN_PS256_PS,
6873         IX86_BUILTIN_PD256_PD, IX86_BUILTIN_SI_SI256,
6874         IX86_BUILTIN_PS_PS256, IX86_BUILTIN_PD_PD256,
6875         IX86_BUILTIN_VTESTZPD, IX86_BUILTIN_VTESTCPD,
6876         IX86_BUILTIN_VTESTNZCPD, IX86_BUILTIN_VTESTZPS,
6877         IX86_BUILTIN_VTESTCPS, IX86_BUILTIN_VTESTNZCPS,
6878         IX86_BUILTIN_VTESTZPD256, IX86_BUILTIN_VTESTCPD256,
6879         IX86_BUILTIN_VTESTNZCPD256, IX86_BUILTIN_VTESTZPS256,
6880         IX86_BUILTIN_VTESTCPS256, IX86_BUILTIN_VTESTNZCPS256,
6881         IX86_BUILTIN_PTESTZ256, IX86_BUILTIN_PTESTC256,
6882         IX86_BUILTIN_PTESTNZC256, IX86_BUILTIN_MOVMSKPD256
6883         and IX86_BUILTIN_MOVMSKPS256,
6884         (ix86_special_builtin_type): Add V32QI_FTYPE_PCCHAR,
6885         V8SF_FTYPE_PCV4SF, V8SF_FTYPE_PCFLOAT, V4DF_FTYPE_PCV2DF,
6886         V4DF_FTYPE_PCDOUBLE, V8SF_FTYPE_PCV8SF_V8SF,
6887         V4DF_FTYPE_PCV4DF_V4DF, V4SF_FTYPE_PCV4SF_V4SF,
6888         V2DF_FTYPE_PCV2DF_V2DF, VOID_FTYPE_PCHAR_V32QI,
6889         VOID_FTYPE_PFLOAT_V8SF, VOID_FTYPE_PDOUBLE_V4DF,
6890         VOID_FTYPE_PV8SF_V8SF_V8SF, VOID_FTYPE_PV4DF_V4DF_V4DF,
6891         VOID_FTYPE_PV4SF_V4SF_V4SF and VOID_FTYPE_PV2DF_V2DF_V2DF,
6892         (ix86_builtin_type): Add INT_FTYPE_V8SF_V8SF_PTEST,
6893         INT_FTYPE_V4DI_V4DI_PTEST, INT_FTYPE_V4DF_V4DF_PTEST,
6894         INT_FTYPE_V4SF_V4SF_PTEST, INT_FTYPE_V2DF_V2DF_PTEST,
6895         INT_FTYPE_V8SF, INT_FTYPE_V4DF, V8SI_FTYPE_V8SF, V8SI_FTYPE_V4SI,
6896         V8SF_FTYPE_V8SF, V8SF_FTYPE_V8SI, V8SF_FTYPE_V4SF,
6897         V4SI_FTYPE_V8SI, V4SI_FTYPE_V4DF, V4DF_FTYPE_V4DF,
6898         V4DF_FTYPE_V4SI, V4DF_FTYPE_V4SF, V4DF_FTYPE_V2DF,
6899         V4SF_FTYPE_V4DF, V4SF_FTYPE_V8SF, V2DF_FTYPE_V4DF,
6900         V8SF_FTYPE_V8SF_V8SF, V8SF_FTYPE_V8SF_V8SI,
6901         V4DF_FTYPE_V4DF_V4DF, V4DF_FTYPE_V4DF_V4DI,
6902         V4SF_FTYPE_V4SF_V4SI, V2DF_FTYPE_V2DF_V2DI,
6903         V8SF_FTYPE_V8SF_INT, V4SI_FTYPE_V8SI_INT, V4SF_FTYPE_V8SF_INT,
6904         V2DF_FTYPE_V4DF_INT, V4DF_FTYPE_V4DF_INT,
6905         V8SF_FTYPE_V8SF_V8SF_V8SF, V4DF_FTYPE_V4DF_V4DF_V4DF,
6906         V8SI_FTYPE_V8SI_V8SI_INT, V8SF_FTYPE_V8SF_V8SF_INT,
6907         V4DF_FTYPE_V4DF_V4DF_INT, V4DF_FTYPE_V4DF_V2DF_INT,
6908         V8SF_FTYPE_V8SF_V8SF_V8SI_INT, V4DF_FTYPE_V4DF_V4DF_V4DI_INT,
6909         V4SF_FTYPE_V4SF_V4SF_V4SI_INT and V2DF_FTYPE_V2DF_V2DF_V2DI_INT.
6910         (bdesc_special_args): Add IX86_BUILTIN_VZEROALL,
6911         IX86_BUILTIN_VZEROUPPER. IX86_BUILTIN_VZEROUPPER_REX64,
6912         IX86_BUILTIN_VBROADCASTSS, IX86_BUILTIN_VBROADCASTSD256,
6913         IX86_BUILTIN_VBROADCASTSS256, IX86_BUILTIN_VBROADCASTPD256,
6914         IX86_BUILTIN_VBROADCASTPS256, IX86_BUILTIN_LOADUPD256,
6915         IX86_BUILTIN_LOADUPS256, IX86_BUILTIN_STOREUPD256,
6916         IX86_BUILTIN_STOREUPS256, IX86_BUILTIN_LOADDQU256,
6917         IX86_BUILTIN_STOREDQU256, IX86_BUILTIN_LDDQU256,
6918         IX86_BUILTIN_MASKLOADPD, IX86_BUILTIN_MASKLOADPS,
6919         IX86_BUILTIN_MASKLOADPD256, IX86_BUILTIN_MASKLOADPS256,
6920         IX86_BUILTIN_MASKSTOREPD, IX86_BUILTIN_MASKSTOREPS,
6921         IX86_BUILTIN_MASKSTOREPD256 and IX86_BUILTIN_MASKSTOREPS256.
6922         (ix86_builtins): Add IX86_BUILTIN_ADDPD256,
6923         IX86_BUILTIN_ADDPS256, IX86_BUILTIN_ADDSUBPD256,
6924         IX86_BUILTIN_ADDSUBPS256, IX86_BUILTIN_ANDPD256,
6925         IX86_BUILTIN_ANDPS256, IX86_BUILTIN_ANDNPD256,
6926         IX86_BUILTIN_ANDNPS256, IX86_BUILTIN_DIVPD256,
6927         IX86_BUILTIN_DIVPS256, IX86_BUILTIN_HADDPD256,
6928         IX86_BUILTIN_HSUBPS256, IX86_BUILTIN_HSUBPD256,
6929         IX86_BUILTIN_HADDPS256, IX86_BUILTIN_MAXPD256,
6930         IX86_BUILTIN_MAXPS256, IX86_BUILTIN_MINPD256,
6931         IX86_BUILTIN_MINPS256, IX86_BUILTIN_MULPD256,
6932         IX86_BUILTIN_MULPS256, IX86_BUILTIN_ORPD256,
6933         IX86_BUILTIN_ORPS256, IX86_BUILTIN_SUBPD256,
6934         IX86_BUILTIN_SUBPS256, IX86_BUILTIN_XORPD256,
6935         IX86_BUILTIN_XORPS256, IX86_BUILTIN_VPERMILVARPD,
6936         IX86_BUILTIN_VPERMILVARPS, IX86_BUILTIN_VPERMILVARPD256,
6937         IX86_BUILTIN_VPERMILVARPS256, IX86_BUILTIN_BLENDPD256,
6938         IX86_BUILTIN_BLENDPS256, IX86_BUILTIN_BLENDVPD256,
6939         IX86_BUILTIN_BLENDVPS256, IX86_BUILTIN_DPPS256,
6940         IX86_BUILTIN_SHUFPD256, IX86_BUILTIN_SHUFPS256,
6941         IX86_BUILTIN_CMPSD, IX86_BUILTIN_CMPSS, IX86_BUILTIN_CMPPD,
6942         IX86_BUILTIN_CMPPS,
6943         IX86_BUILTIN_CMPPD256,IX86_BUILTIN_CMPPS256,
6944         IX86_BUILTIN_EXTRACTF128PD256, IX86_BUILTIN_EXTRACTF128PS256,
6945         IX86_BUILTIN_EXTRACTF128SI256, IX86_BUILTIN_CVTDQ2PD256,
6946         IX86_BUILTIN_CVTDQ2PS256, IX86_BUILTIN_CVTPD2PS256,
6947         IX86_BUILTIN_CVTPS2DQ256, IX86_BUILTIN_CVTPS2PD256,
6948         IX86_BUILTIN_CVTTPD2DQ256, IX86_BUILTIN_CVTPD2DQ256,
6949         IX86_BUILTIN_CVTTPS2DQ256, IX86_BUILTIN_VPERM2F128PD256,
6950         IX86_BUILTIN_VPERM2F128PS256, IX86_BUILTIN_VPERM2F128SI256,
6951         IX86_BUILTIN_VPERMILPD, IX86_BUILTIN_VPERMILPS,
6952         IX86_BUILTIN_VPERMILPD256, IX86_BUILTIN_VPERMILPS256,
6953         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMILPS,
6954         IX86_BUILTIN_VPERMILPD256, IX86_BUILTIN_VPERMILPS256,
6955         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMIL2PS,
6956         IX86_BUILTIN_VPERMIL2PD256, IX86_BUILTIN_VPERMIL2PS256,
6957         IX86_BUILTIN_VINSERTF128PD256, IX86_BUILTIN_VINSERTF128PS256,
6958         IX86_BUILTIN_VINSERTF128SI256, IX86_BUILTIN_MOVSHDUP256,
6959         IX86_BUILTIN_MOVSLDUP256, IX86_BUILTIN_MOVDDUP256,
6960         IX86_BUILTIN_SQRTPD256, IX86_BUILTIN_SQRTPS256,
6961         IX86_BUILTIN_SQRTPS_NR256, IX86_BUILTIN_RSQRTPS256,
6962         IX86_BUILTIN_RSQRTPS_NR256, IX86_BUILTIN_RCPPS256,
6963         IX86_BUILTIN_ROUNDPD256, IX86_BUILTIN_ROUNDPS256,
6964         IX86_BUILTIN_UNPCKHPD256, IX86_BUILTIN_UNPCKLPD256,
6965         IX86_BUILTIN_UNPCKHPS256, IX86_BUILTIN_UNPCKLPS256,
6966         IX86_BUILTIN_SI256_SI, IX86_BUILTIN_PS256_PS,
6967         IX86_BUILTIN_PD256_PD, IX86_BUILTIN_SI_SI256,
6968         IX86_BUILTIN_PS_PS256, IX86_BUILTIN_PD_PD256,
6969         IX86_BUILTIN_VTESTZPD, IX86_BUILTIN_VTESTCPD,
6970         IX86_BUILTIN_VTESTNZCPD, IX86_BUILTIN_VTESTZPS,
6971         IX86_BUILTIN_VTESTCPS, IX86_BUILTIN_VTESTNZCPS,
6972         IX86_BUILTIN_VTESTZPD256, IX86_BUILTIN_VTESTCPD256,
6973         IX86_BUILTIN_VTESTNZCPD256, IX86_BUILTIN_VTESTZPS256,
6974         IX86_BUILTIN_VTESTCPS256, IX86_BUILTIN_VTESTNZCPS256,
6975         IX86_BUILTIN_PTESTZ256, IX86_BUILTIN_PTESTC256,
6976         IX86_BUILTIN_PTESTNZC256, IX86_BUILTIN_MOVMSKPD256 and
6977         IX86_BUILTIN_MOVMSKPS256.
6978         (ix86_init_mmx_sse_builtins): Support AVX builtins.
6979         (ix86_expand_args_builtin): Likewise.
6980         (ix86_expand_special_args_builtin): Likewise.
6981         (ix86_hard_regno_mode_ok): Handle AVX modes.
6982         (ix86_expand_vector_init_duplicate): Likewise.
6983         (ix86_expand_vector_init_one_nonzero): Likewise.
6984         (ix86_expand_vector_init_one_var): Likewise.
6985         (ix86_expand_vector_init_concat): Likewise.
6986         (ix86_expand_vector_init_general): Likewise.
6987         (ix86_expand_vector_set): Likewise.
6988         (ix86_vector_mode_supported_p): Likewise.
6989         (x86_extended_reg_mentioned_p): Check INSN_P before using
6990         PATTERN.
6991
6992         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
6993         OPTION_MASK_ISA_AVX and OPTION_MASK_ISA_FMA.
6994
6995         * config/i386/i386.h (TARGET_AVX): New.
6996         (TARGET_FMA): Likewise.
6997         (TARGET_CPU_CPP_BUILTINS): Handle TARGET_AVX and TARGET_FMA.
6998         (BIGGEST_ALIGNMENT): Set to 256 for TARGET_AVX.
6999         (VALID_AVX256_REG_MODE): New.
7000         (AVX256_VEC_FLOAT_MODE_P): Likewise.
7001         (AVX_FLOAT_MODE_P): Likewise.
7002         (AVX128_VEC_FLOAT_MODE_P): Likewise.
7003         (AVX256_VEC_FLOAT_MODE_P): Likewise.
7004         (AVX_VEC_FLOAT_MODE_P): Likewise.
7005         (ASM_OUTPUT_AVX_PREFIX): Likewise.
7006         (ASM_OUTPUT_OPCODE): Likewise.
7007         (UNITS_PER_SIMD_WORD): Add a FIXME for 32byte vectorizer
7008         support.
7009         (SSE_REG_MODE_P): Allow 256bit vector modes.
7010         (ix86_args): Add a warn_avx field.
7011
7012         * config/i386/i386.md (UNSPEC_PCMP): New.
7013         (UNSPEC_VPERMIL): Likewise.
7014         (UNSPEC_VPERMIL2): Likewise.
7015         (UNSPEC_VPERMIL2F128): Likewise.
7016         (UNSPEC_MASKLOAD): Likewise.
7017         (UNSPEC_MASKSTORE): Likewise.
7018         (UNSPEC_CAST): Likewise.
7019         (UNSPEC_VTESTP): Likewise.
7020         (UNSPECV_VZEROALL): Likewise.
7021         (UNSPECV_VZEROUPPER): Likewise.
7022         (XMM0_REG): Likewise.
7023         (XMM1_REG): Likewise.
7024         (XMM2_REG): Likewise.
7025         (XMM3_REG): Likewise.
7026         (XMM4_REG): Likewise.
7027         (XMM5_REG): Likewise.
7028         (XMM6_REG): Likewise.
7029         (XMM8_REG): Likewise.
7030         (XMM9_REG): Likewise.
7031         (XMM10_REG): Likewise.
7032         (XMM11_REG): Likewise.
7033         (XMM12_REG): Likewise.
7034         (XMM13_REG): Likewise.
7035         (XMM14_REG): Likewise.
7036         (XMM15_REG): Likewise.
7037         (prefix): Likewise.
7038         (prefix_vex_imm8): Likewise.
7039         (prefix_vex_w): Likewise.
7040         (length_vex): Likewise.
7041         (maxmin): Likewise.
7042         (movoi): Likewise.
7043         (*avx_ashlti3): Likewise.
7044         (*avx_lshrti3): Likewise.
7045         (*avx_setcc<mode>): Likewise.
7046         (*fop_<mode>_comm_mixed_avx): Likewise.
7047         (*fop_<mode>_comm_avx): Likewise.
7048         (*fop_<mode>_1_mixed_avx): Likewise.
7049         (*fop_<mode>_1_avx): Likewise.
7050         (*avx_<code><mode>3): Likewise.
7051         (*avx_ieee_smin<mode>3): Likewise.
7052         (*avx_ieee_smax<mode>3): Likewise.
7053         (mode): Add OI, V8SF and V4DF.
7054         (length): Support VEX prefix.
7055         (*cmpfp_i_mixed): Set prefix attribute.
7056         (*cmpfp_i_sse): Likewise.
7057         (*cmpfp_iu_mixed): Likewise.
7058         (*cmpfp_iu_sse): Likewise.
7059         (*movsi_1): Support AVX.
7060         (*movdi_2): Likewise.
7061         (*movdi_1_rex64): Likewise.
7062         (*movti_internal): Likewise.
7063         (*movti_rex64): Likewise.
7064         (*movsf_1): Likewise.
7065         (*movdf_nointeger): Likewise.
7066         (*movdf_integer_rex64): Likewise.
7067         (*movtf_internal): Likewise.
7068         (zero_extendsidi2_32): Likewise.
7069         (zero_extendsidi2_rex64): Likewise.
7070         (*extendsfdf2_mixed): Likewise.
7071         (*extendsfdf2_sse): Likewise.
7072         (*truncdfsf_fast_mixed): Likewise.
7073         (*truncdfsf_fast_sse): Likewise.
7074         (*truncdfsf_mixed): Likewise.
7075         (fix_trunc<mode>di_sse): Likewise.
7076         (fix_trunc<mode>si_sse): Likewise.
7077         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit): Likewise.
7078         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit): Likewise.
7079         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit): Likewise.
7080         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Likewise.
7081         (*rcpsf2_sse): Likewise.
7082         (*rsqrtsf2_sse): Likewise.
7083         (*sqrt<mode>2_sse): Likewise.
7084         (sse4_1_round<mode>2): Likewise.
7085         (*sse_prologue_save_insn): Disallow REX prefix for AVX.
7086         Support AVX.  Set length attribute properly for AVX.
7087
7088         * config/i386/i386-modes.def (VECTOR_MODES (INT, 32)): New.
7089         (VECTOR_MODES (FLOAT, 32)): Likewise.
7090         (VECTOR_MODE (INT, DI, 8)): Likewise.
7091         (VECTOR_MODE (INT, HI, 32)): Likewise.
7092         (VECTOR_MODE (INT, QI, 64)): Likewise.
7093         (VECTOR_MODE (FLOAT, DF, 8)): Likewise.
7094         (VECTOR_MODE (FLOAT, SF, 16)): Likewise.
7095         (VECTOR_MODE (INT, DI, 4)): Removed.
7096         (VECTOR_MODE (INT, SI, 8)): Likewise.
7097         (VECTOR_MODE (INT, HI, 16)): Likewise.
7098         (VECTOR_MODE (INT, QI, 32)): Likewise.
7099         (VECTOR_MODE (FLOAT, SF, 8)): Likewise.
7100         (INT_MODE (OI, 32)): Likewise.
7101
7102         * config/i386/i386.opt (mavx): New.
7103         (mfma): Likewise.
7104
7105         * config/i386/i386-protos.h (ix86_attr_length_vex_default): New.
7106
7107         * config/i386/mmx.md (*mov<mode>_internal_rex64): Support AVX.
7108         (*mov<mode>_internal_avx): New.
7109         (*movv2sf_internal_rex64_avx): Likewise.
7110         (*movv2sf_internal_avx): Likewise.
7111
7112         * config/i386/predicates.md (const_4_to_5_operand): New.
7113         (const_6_to_7_operand): Likewise.
7114         (const_8_to_11_operand): Likewise.
7115         (const_12_to_15_operand): Likewise.
7116         (avx_comparison_float_operator): Likewise.
7117
7118         * config/i386/sse.md (AVX256MODEI): New.
7119         (AVX256MODE): Likewise.
7120         (AVXMODEQI): Likewise.
7121         (AVXMODE): Likewise.
7122         (AVX256MODEF2P): Likewise.
7123         (AVX256MODE2P): Likewise.
7124         (AVX256MODE4P): Likewise.
7125         (AVX256MODE8P): Likewise.
7126         (AVXMODEF2P): Likewise.
7127         (AVXMODEF4P): Likewise.
7128         (AVXMODEDCVTDQ2PS): Likewise.
7129         (AVXMODEDCVTPS2DQ): Likewise.
7130         (avxvecmode): Likewise.
7131         (avxvecpsmode): Likewise.
7132         (avxhalfvecmode): Likewise.
7133         (avxscalarmode): Likewise.
7134         (avxcvtvecmode): Likewise.
7135         (avxpermvecmode): Likewise.
7136         (avxmodesuffixf2c): Likewise.
7137         (avxmodesuffixp): Likewise.
7138         (avxmodesuffixs): Likewise.
7139         (avxmodesuffix): Likewise.
7140         (vpermilbits): Likewise.
7141         (pinsrbits): Likewise.
7142         (mov<mode>): Likewise.
7143         (*mov<mode>_internal): Likewise.
7144         (push<mode>1): Likewise.
7145         (movmisalign<mode>): Likewise.
7146         (avx_movup<avxmodesuffixf2c><avxmodesuffix>): Likewise.
7147         (avx_movdqu<avxmodesuffix>): Likewise.
7148         (avx_lddqu<avxmodesuffix>): Likewise.
7149         (<plusminus_insn><mode>3): Likewise.
7150         (*avx_<plusminus_insn><mode>3): Likewise.
7151         (*avx_vm<plusminus_insn><mode>3): Likewise.
7152         (mul<mode>3): Likewise.
7153         (*avx_mul<mode>3): Likewise.
7154         (*avx_vmmul<mode>3): Likewise.
7155         (divv8sf3): Likewise.
7156         (divv4df3): Likewise.
7157         (avx_div<mode>3): Likewise.
7158         (*avx_div<mode>3): Likewise.
7159         (*avx_vmdiv<mode>3): Likewise.
7160         (avx_rcpv8sf2): Likewise.
7161         (*avx_vmrcpv4sf2): Likewise.
7162         (sqrtv8sf2): Likewise.
7163         (avx_sqrtv8sf2): Likewise.
7164         (*avx_vmsqrt<mode>2): Likewise.
7165         (rsqrtv8sf2): Likewise.
7166         (avx_rsqrtv8sf2): Likewise.
7167         (*avx_vmrsqrtv4sf2): Likewise.
7168         (<code><mode>3): Likewise.
7169         (*avx_<code><mode>3_finite): Likewise.
7170         (*avx_<code><mode>3): Likewise.
7171         (*avx_vm<code><mode>3): Likewise.
7172         (*avx_ieee_smin<mode>3): Likewise.
7173         (*avx_ieee_smax<mode>3): Likewise.
7174         (avx_addsubv8sf3): Likewise.
7175         (avx_addsubv4df3): Likewise.
7176         (*avx_addsubv4sf3): Likewise.
7177         (*avx_addsubv2df3): Likewise.
7178         (avx_h<plusminus_insn>v4df3): Likewise.
7179         (avx_h<plusminus_insn>v8sf3): Likewise.
7180         (*avx_h<plusminus_insn>v4sf3): Likewise.
7181         (*avx_h<plusminus_insn>v2df3): Likewise.
7182         (avx_cmpp<avxmodesuffixf2c><mode>3): Likewise.
7183         (avx_cmps<ssemodesuffixf2c><mode>3): Likewise.
7184         (*avx_maskcmp<mode>3): Likewise.
7185         (avx_nand<mode>3): Likewise.
7186         (*avx_<code><mode>3): Likewise.
7187         (*avx_nand<mode>3): Likewise.
7188         (*avx_<code><mode>3): Likewise.
7189         (*avx_cvtsi2ss): Likewise.
7190         (*avx_cvtsi2ssq): Likewise.
7191         (*avx_cvtsi2sd): Likewise.
7192         (*avx_cvtsi2sdq): Likewise.
7193         (*avx_cvtsd2ss): Likewise.
7194         (avx_cvtss2sd): Likewise.
7195         (avx_cvtdq2ps<avxmodesuffix>): Likewise.
7196         (avx_cvtps2dq<avxmodesuffix>): Likewise.
7197         (avx_cvttps2dq<avxmodesuffix>): Likewise.
7198         (*avx_cvtsi2sd): Likewise.
7199         (*avx_cvtsi2sdq): Likewise.
7200         (avx_cvtdq2pd256): Likewise.
7201         (avx_cvtpd2dq256): Likewise.
7202         (avx_cvttpd2dq256): Likewise.
7203         (*avx_cvtsd2ss): Likewise.
7204         (*avx_cvtss2sd): Likewise.
7205         (avx_cvtpd2ps256): Likewise.
7206         (avx_cvtps2pd256): Likewise.
7207         (*avx_movhlps): Likewise.
7208         (*avx_movlhps): Likewise.
7209         (avx_unpckhps256): Likewise.
7210         (*avx_unpckhps): Likewise.
7211         (avx_unpcklps256): Likewise.
7212         (*avx_unpcklps): Likewise.
7213         (avx_movshdup256): Likewise.
7214         (avx_movsldup256): Likewise.
7215         (avx_shufps256): Likewise.
7216         (avx_shufps256_1): Likewise.
7217         (*avx_shufps_<mode>): Likewise.
7218         (*avx_loadhps): Likewise.
7219         (*avx_storelps): Likewise.
7220         (*avx_loadlps): Likewise.
7221         (*avx_movss): Likewise.
7222         (*vec_dupv4sf_avx): Likewise.
7223         (*vec_concatv2sf_avx): Likewise.
7224         (*vec_concatv4sf_avx): Likewise.
7225         (*vec_setv4sf_0_avx): Likewise.
7226         (*vec_setv4sf_avx): Likewise.
7227         (*avx_insertps): Likewise.
7228         (avx_vextractf128<mode>): Likewise.
7229         (vec_extract_lo_<mode>): Likewise.
7230         (vec_extract_hi_<mode>): Likewise.
7231         (vec_extract_lo_<mode>): Likewise.
7232         (vec_extract_hi_<mode>): Likewise.
7233         (vec_extract_lo_v16hi): Likewise.
7234         (vec_extract_hi_v16hi): Likewise.
7235         (vec_extract_lo_v32qi): Likewise.
7236         (vec_extract_hi_v32qi): Likewise.
7237         (avx_unpckhpd256): Likewise.
7238         (*avx_unpckhpd): Likewise.
7239         (avx_movddup256): Likewise.
7240         (*avx_movddup): Likewise.
7241         (avx_unpcklpd256): Likewise.
7242         (*avx_unpcklpd): Likewise.
7243         (avx_shufpd256): Likewise.
7244         (avx_shufpd256_1): Likewise.
7245         (*avx_punpckhqdq): Likewise.
7246         (*avx_punpcklqdq): Likewise.
7247         (*avx_shufpd_<mode>): Likewise.
7248         (*avx_storehpd): Likewise.
7249         (*avx_loadhpd): Likewise.
7250         (*avx_loadlpd): Likewise.
7251         (*avx_movsd): Likewise.
7252         (*vec_concatv2df_avx): Likewise.
7253         (*avx_<plusminus_insn><mode>3): Likewise.
7254         (*avx_<plusminus_insn><mode>3): Likewise.
7255         (*avx_mulv8hi3): Likewise.
7256         (*avxv8hi3_highpart): Likewise.
7257         (*avx_umulv8hi3_highpart): Likewise.
7258         (*avx_umulv2siv2di3): Likewise.
7259         (*avx_mulv2siv2di3): Likewise.
7260         (*avx_pmaddwd): Likewise.
7261         (*avx_mulv4si3): Likewise.
7262         (*avx_ashr<mode>3): Likewise.
7263         (*avx_lshr<mode>3): Likewise.
7264         (*avx_ashl<mode>3): Likewise.
7265         (*avx_<code><mode>3): Likewise.
7266         (*avx_eq<mode>3): Likewise.
7267         (*avx_gt<mode>3): Likewise.
7268         (*avx_nand<mode>3): Likewise.
7269         (*avx_nand<mode>3): Likewise.
7270         (*avx_<code><mode>3): Likewise.
7271         (*avx_<code><mode>3): Likewise.
7272         (*avx_packsswb): Likewise.
7273         (*avx_packssdw): Likewise.
7274         (*avx_packuswb): Likewise.
7275         (*avx_punpckhbw): Likewise.
7276         (*avx_punpcklbw): Likewise.
7277         (*avx_punpckhwd): Likewise.
7278         (*avx_punpcklwd): Likewise.
7279         (*avx_punpckhdq): Likewise.
7280         (*avx_punpckldq): Likewise.
7281         (*avx_pinsr<avxmodesuffixs>): Likewise.
7282         (*avx_pinsrq): Likewise.
7283         (*avx_loadld): Likewise.
7284         (*vec_extractv2di_1_rex64_avx): Likewise.
7285         (*vec_extractv2di_1_avx): Likewise.
7286         (*vec_dupv2di_avx): Likewise.
7287         (*vec_concatv2si_avx): Likewise.
7288         (*vec_concatv4si_1_avx): Likewise.
7289         (*vec_concatv2di_avx): Likewise.
7290         (*vec_concatv2di_rex64_avx): Likewise.
7291         (*avx_uavgv16qi3): Likewise.
7292         (*avx_uavgv8hi3): Likewise.
7293         (*avx_psadbw): Likewise.
7294         (avx_movmskp<avxmodesuffixf2c>256): Likewise.
7295         (*avx_phaddwv8hi3): Likewise.
7296         (*avx_phadddv4si3): Likewise.
7297         (*avx_phaddswv8hi3): Likewise.
7298         (*avx_phsubwv8hi3): Likewise.
7299         (*avx_phsubdv4si3): Likewise.
7300         (*avx_phsubswv8hi3): Likewise.
7301         (*avx_pmaddubsw128): Likewise.
7302         (*avx_pmulhrswv8hi3): Likewise.
7303         (*avx_pshufbv16qi3): Likewise.
7304         (*avx_psign<mode>3): Likewise.
7305         (*avx_palignrti): Likewise.
7306         (avx_blendp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
7307         (avx_blendvp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
7308         (avx_dpp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
7309         (*avx_mpsadbw): Likewise.
7310         (*avx_packusdw): Likewise.
7311         (*avx_pblendvb): Likewise.
7312         (*avx_pblendw): Likewise.
7313         (avx_vtestp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
7314         (avx_ptest256): Likewise.
7315         (avx_roundp<avxmodesuffixf2c>256): Likewise.
7316         (*avx_rounds<ssemodesuffixf2c>): Likewise.
7317         (*avx_aesenc): Likewise.
7318         (*avx_aesenclast): Likewise.
7319         (*avx_aesdec): Likewise.
7320         (*avx_aesdeclast): Likewise.
7321         (avx_vzeroupper): Likewise.
7322         (avx_vzeroupper_rex64): Likewise.
7323         (avx_vpermil<mode>): Likewise.
7324         (avx_vpermilvar<mode>3): Likewise.
7325         (avx_vpermil2<mode>3): Likewise.
7326         (avx_vperm2f128<mode>3): Likewise.
7327         (avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>): Likewise.
7328         (avx_vbroadcastss256): Likewise.
7329         (avx_vbroadcastf128_p<avxmodesuffixf2c>256): Likewise.
7330         (avx_vinsertf128<mode>): Likewise.
7331         (vec_set_lo_<mode>): Likewise.
7332         (vec_set_hi_<mode>): Likewise.
7333         (vec_set_lo_<mode>): Likewise.
7334         (vec_set_hi_<mode>): Likewise.
7335         (vec_set_lo_v16hi): Likewise.
7336         (vec_set_hi_v16hi): Likewise.
7337         (vec_set_lo_v32qi): Likewise.
7338         (vec_set_hi_v32qi): Likewise.
7339         (avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
7340         (avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>): Likewise.
7341         (avx_<avxmodesuffixp><avxmodesuffix>_<avxmodesuffixp>): Likewise.
7342         (avx_<avxmodesuffixp>_<avxmodesuffixp><avxmodesuffix>): Likewise.
7343         (vec_init<mode>): Likewise.
7344         (*vec_concat<mode>_avx): Likewise.
7345         (blendbits): Support V8SF and V4DF.
7346         (sse2_movq128): Support AVX.
7347         (<sse>_movnt<mode>): Likewise.
7348         (sse2_movntv2di): Likewise.
7349         (sse_rcpv4sf2): Likewise.
7350         (sse_sqrtv4sf2): Likewise.
7351         (sse_rsqrtv4sf2): Likewise.
7352         (<sse>_comi): Likewise.
7353         (<sse>_ucomi): Likewise.
7354         (sse_cvtss2si): Likewise.
7355         (sse_cvtss2si_2): Likewise.
7356         (sse_cvtss2siq): Likewise.
7357         (sse_cvtss2siq_2): Likewise.
7358         (sse_cvttss2si): Likewise.
7359         (sse_cvttss2siq): Likewise.
7360         (sse2_cvtsd2si): Likewise.
7361         (sse2_cvtsd2si_2): Likewise.
7362         (sse2_cvtsd2siq): Likewise.
7363         (sse2_cvtsd2siq_2): Likewise.
7364         (sse2_cvttsd2si): Likewise.
7365         (sse2_cvttsd2siq): Likewise.
7366         (sse2_cvtdq2pd): Likewise.
7367         (*sse2_cvtpd2dq): Likewise.
7368         (*sse2_cvttpd2dq): Likewise.
7369         (*sse2_cvtpd2ps): Likewise.
7370         (sse2_cvtps2pd): Likewise.
7371         (sse3_movshdup): Likewise.
7372         (sse3_movsldup): Likewise.
7373         (sse_storehps): Likewise.
7374         (*sse4_1_extractps): Likewise.
7375         (sse2_storelpd): Likewise.
7376         (vec_dupv2df_sse3): Likewise.
7377         (*vec_concatv2df_sse3): Likewise.
7378         (*sse4_1_pextrb): Likewise.
7379         (*sse4_1_pextrb_memory): Likewise.
7380         (*sse2_pextrw): Likewise.
7381         (*sse4_1_pextrw_memory): Likewise.
7382         (*sse4_1_pextrd): Likewise.
7383         (*sse4_1_pextrq): Likewise.
7384         (sse2_pshufd_1): Likewise.
7385         (sse2_pshuflw_1): Likewise.
7386         (sse2_pshufhw_1): Likewise.
7387         (*sse2_storeq_rex64): Likewise.
7388         (*vec_dupv4si): Likewise.
7389         (<sse>_movmskp<ssemodesuffixf2c>): Likewise.
7390         (sse2_pmovmskb): Likewise.
7391         (*sse2_maskmovdqu): Likewise.
7392         (*sse2_maskmovdqu_rex64): Likewise.
7393         (sse_ldmxcsr): Likewise.
7394         (sse_stmxcsr): Likewise.
7395         (abs<mode>2): Likewise.
7396         (sse4_1_movntdqa): Likewise.
7397         (sse4_1_phminposuw): Likewise.
7398         (sse4_1_extendv8qiv8hi2): Likewise.
7399         (*sse4_1_extendv8qiv8hi2): Likewise.
7400         (sse4_1_extendv4qiv4si2): Likewise.
7401         (*sse4_1_extendv4qiv4si2): Likewise.
7402         (sse4_1_extendv2qiv2di2): Likewise.
7403         (*sse4_1_extendv2qiv2di2): Likewise.
7404         (sse4_1_extendv4hiv4si2): Likewise.
7405         (*sse4_1_extendv4hiv4si2): Likewise.
7406         (sse4_1_extendv2hiv2di2): Likewise.
7407         (*sse4_1_extendv2hiv2di2): Likewise.
7408         (sse4_1_extendv2siv2di2): Likewise.
7409         (*sse4_1_extendv2siv2di2): Likewise.
7410         (sse4_1_zero_extendv8qiv8hi2): Likewise.
7411         (*sse4_1_zero_extendv8qiv8hi2): Likewise.
7412         (sse4_1_zero_extendv4qiv4si2): Likewise.
7413         (*sse4_1_zero_extendv4qiv4si2): Likewise.
7414         (sse4_1_zero_extendv2qiv2di2): Likewise.
7415         (*sse4_1_zero_extendv2qiv2di2): Likewise.
7416         (sse4_1_zero_extendv4hiv4si2): Likewise.
7417         (*sse4_1_zero_extendv4hiv4si2): Likewise.
7418         (sse4_1_zero_extendv2hiv2di2): Likewise.
7419         (*sse4_1_zero_extendv2hiv2di2): Likewise.
7420         (sse4_1_zero_extendv2siv2di2): Likewise.
7421         (*sse4_1_zero_extendv2siv2di2): Likewise.
7422         (sse4_1_ptest): Likewise.
7423         (sse4_1_roundp<ssemodesuffixf2c>): Likewise.
7424         (sse4_2_pcmpestri): Likewise.
7425         (sse4_2_pcmpestrm): Likewise.
7426         (sse4_2_pcmpistri): Likewise.
7427         (sse4_2_pcmpistrm): Likewise.
7428         (aesimc): Likewise.
7429         (aeskeygenassist): Likewise.
7430
7431 2008-08-28  Uros Bizjak  <ubizjak@gmail.com>
7432
7433         * config/i386/predicates.md (vzeroall_operation): New.
7434
7435         * config/i386/sse.md (avx_vzeroall): New.
7436         (*avx_vzeroall): Likewise.
7437
7438 2008-08-28  Paul Brook  <paul@codesourcery.com>
7439             Mark Shinwell  <shinwell@codesourcery.com>
7440             Richard Earnshaw  <richard.earnshaw@arm.com>
7441
7442         * config/arm/arm.c (TARGET_MAX_ANCHOR_OFFSET): New.
7443         (TARGET_MIN_ANCHOR_OFFSET): New.
7444         (arm_override_options): Set correct anchor ranges for Thumb-1
7445         and Thumb-2 if required.
7446         (legitimize_pic_address): Handle case involving a TLS symbol
7447         reference with an addend.
7448         (arm_optimization_options): Enable section anchors at -O1 and
7449         above.
7450         * config/arm/arm.h (OPTIMIZATION_OPTIONS): New.
7451         * config/arm/arm-protos.h (arm_optimization_options): New.
7452
7453 2008-08-28  Nick Clifton  <nickc@redhat.com>
7454
7455         * config/stormy16/stormy16.h (IRA_COVER_CLASSES): Define.
7456         * config/stormy16/stormy16.md (zero_extendqihi2): Fix length
7457         attribute.
7458
7459         * config/v850/v850.h (IRA_COVER_CLASSES): Define.
7460         * config/v850/v850.md (return): Remove frame size restriction.
7461
7462         * config/mcore/mcore.h (IRA_COVER_CLASSES): Define.
7463
7464         * config/iq2000/iq2000.h (IRA_COVER_CLASSES): Define.
7465
7466         * config/fr30/fr30.h (IRA_COVER_CLASSES): Define.
7467
7468         * config/m32r/m32r.h (IRA_COVER_CLASSES): Define.
7469
7470 2008-08-28  Paul Brook  <paul@codesourcery.com>
7471
7472         * config/arm/vfp11.md: Update license notice.
7473         * config/arm/cortex-r4.md: Ditto.
7474
7475 2008-08-28  Richard Guenther  <rguenther@suse.de>
7476
7477         PR tree-optimization/37207
7478         * tree-ssa-ifcombine.c (recognize_single_bit_test): Fix
7479         tuplification bug.
7480
7481 2008-08-28  Dodji Seketeli  <dodji@redhat.com>
7482
7483         PR c++/36741
7484         * tree.c (int_fits_type_p): Don't forget unsigned integers
7485           of type sizetype which higher end word equals -1.
7486
7487 2008-08-28  Ira Rosen  <irar@il.ibm.com>
7488
7489         * target.h (struct vectorize): Add new target builtin.
7490         * tree-vectorizer.c (destroy_loop_vec_info): Call
7491         vect_free_slp_instance instead of vect_free_slp_node.
7492         * tree-vectorizer.h (enum slp_load_perm_type): New.
7493         (struct _slp_instance): Add new fields.
7494         (SLP_INSTANCE_LOAD_PERMUTATION): New.
7495         (SLP_INSTANCE_LOADS): New.
7496         (vect_free_slp_tree): Remove.
7497         (vect_free_slp_instance): Declare.
7498         (SLP_TREE_LOADS_PERM_TYPE, TARG_VEC_PERMUTE_COST): New.
7499         (vectorizable_load): Add argument.
7500         (vect_transform_slp_perm_load): New.
7501         * tree-vect-analyze.c (vect_analyze_operations): Add an argument to
7502         vectorizable_load.
7503         (vect_get_place_in_interleaving_chain): New function.
7504         (vect_free_slp_tree): Make static.
7505         (vect_free_slp_instance): New function.
7506         (vect_build_slp_tree): Add new arguments. Allow load permutations and
7507         collect the load location in the interleaving chain.
7508         (vect_supported_slp_permutation_p): New function.
7509         (vect_supported_load_permutation_p): Likewise.
7510         (vect_analyze_slp_instance): In case of loads permutation, call
7511         vect_supported_load_permutation_p to check that the permutation is
7512         supported.
7513         * target-def.h (TARGET_VECTORIZE_BUILTIN_VEC_PERM): New.
7514         * tree-vect-transform.c (vect_transform_stmt): Add new argument.
7515         (vect_create_mask_and_perm): New function.
7516         (vect_get_mask_element, vect_transform_slp_perm_load): Likewise.
7517         (vectorizable_load): Add an argument. Don't keep the created vectors
7518         statements in the node if permutation is required. Call
7519         vect_transform_slp_perm_load to generate the permutation.
7520         (vect_transform_stmt): Add new argument. Call vectorizable_load with
7521         additional argument.
7522         (vect_schedule_slp_instance): In case of loads permutation, allocate
7523         vectorized statements structure for all the related SLP nodes. Call
7524         vect_transform_stmt with addditional argument.
7525         (vect_transform_loop): Call vect_transform_stmt with correct arguments.
7526         * config/spu/spu.c (spu_builtin_vec_perm): New.
7527         (TARGET_VECTORIZE_BUILTIN_VEC_PERM): Redefine.
7528         * config/spu/spu.h (TARG_VEC_PERMUTE_COS): Define.
7529         * config/rs6000/rs6000.c (rs6000_builtin_vec_perm): New.
7530         (TARGET_VECTORIZE_BUILTIN_VEC_PERM): Redefine.
7531
7532 2008-08-28  Chris Fairles  <chris.fairles@gmail.com>
7533
7534         * gthr-posix.h (__gthread_create,  __gthread_join, __gthread_detach,
7535         __gthread_mutex_timed_lock, __gthread_recursive_mutex_timed_lock,
7536         __gthread_cond_signal, __gthread_cond_timedwait,
7537         __gthread_cond_timedwait_recursive): New functions.
7538         * gthr-posix.c (pthread_mutex_timedlock, pthread_cond_timedwait):
7539         Likewise.
7540         * gthr.h: Comment on defining __GTHREADS_CXX0X macro in conforming
7541         thread interfaces.
7542
7543 2008-08-28  Richard Guenther  <rguenther@suse.de>
7544
7545         PR middle-end/37005
7546         * fold-const.c (maybe_canonicalize_comparison_1): Require
7547         undefined overflow only for canonicalizing A +- CST cmp CST.
7548         Make sure to not generate new constants that are not inside
7549         their TYPE_MIN/MAX_VALUE range.
7550         (maybe_canonicalize_comparison): Remove undefined overflow
7551         checking from here.
7552         (fold_binary): Remove now duplicate folding.
7553
7554 2008-08-27  Paolo Carlini  <paolo.carlini@oracle.com>
7555
7556         * c-typeck.c (convert_for_assignment): Adjust WARN_FOR_ASSIGNMENT
7557         use not updated in the last change.
7558
7559 2008-08-27  Kaz Kojima  <kkojima@gcc.gnu.org>
7560
7561         * config/sh/sh.h (REG_CLASS_CONTENTS): Drop fr32 from FPUL_REGS.
7562         (IRA_COVER_CLASSES): Add FPUL_REGS.
7563
7564 2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7565
7566         PR 37217
7567         * c-common.c (conversion_warning): Check for null operands.
7568
7569 2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7570
7571         PR c/31673
7572         * c-decl.c (check_for_loop_decls): Improve error message. Give
7573         hint.
7574
7575 2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7576
7577         PR c/37186
7578         * c-typeck.c (WARN_FOR_ASSIGNMENT): Add OPT parameter.
7579         (convert_for_assignment): Pass corrent OPT_W* parameter to
7580         WARN_FOR_ASSIGNMENT.
7581
7582 2008-08-27  Paolo Carlini  <paolo.carlini@oracle.com>
7583
7584         PR c++/35321
7585         * c-common.c (fold_offsetof_1): Handle TARGET_EXPR like CALL_EXPR.
7586
7587 2008-08-27  Paul Brook  <paul@codesourcery.com>
7588
7589         * config.gcc: Loosen checks for arm uclinux eabi targets.
7590
7591 2008-08-27  Paul Brook  <paul@codesourcery.com>
7592
7593         * config/arm/t-arm-coff (LIB1ASMFUNCS): Add missing undescrore on
7594         _clzsi2.
7595         * config/arm/t-linux (LIB1ASMFUNCS): Ditto.
7596
7597 2008-08-26  Douglas Gregor  <doug.gregor@gmail.com>
7598
7599         * c-common.c (do_switch_warnings): Look through the CONST_DECLs in
7600         the enumerators of an ENUMERAL_TYPE.
7601         * dbxout.c (dbxout_type): Ditto.
7602
7603 2008-08-26  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7604
7605         PR rtl-opt/37219
7606         * fwprop.c (fwprop): Check that the loop_father is the outer loop.
7607         (fwprop_addr): Check that the loop_father is not the outer loop.
7608
7609 2008-08-26  Paul Brook  <paul@codesourcery.com>
7610
7611         * config/arm/vfp.md: Document fmul{s,d} and fmac{s,d} types.
7612         Remove documentation entry for fmul type.
7613         Use fmuls to annotate single-precision multiplication patterns,
7614         fmuld to annotate double-precision multiplication patterns,
7615         fmacs to annotate single-precision multiply-accumulate patterns
7616         and fmacd to annotate double-precision multiply-accumulate patterns.
7617         * config/arm/vfp11.md: Update reservations accordingly.
7618         * config/arm/arm.md: Note that certain values of the "type"
7619         attribute are documented in vfp.md.
7620         * config/arm/arm1020e.md: Remove out of date duplicate comment.
7621         (v10_cvt): Use new fmul types.
7622
7623 2008-08-26  Paul Brook  <paul@codesourcery.com>
7624
7625         * config/arm/vfp.md: Move pipeline description for VFP11 to...
7626         * config/arm/vfp11.md: ...here.  New.
7627         * config/arm/arm.md: Include vfp11.md.
7628
7629 2008-08-26  Hans-Peter Nilsson  <hp@axis.com>
7630
7631         * opts.c (decode_options) [!IRA_COVER_CLASSES]: Add missing
7632         parameter to inform call.
7633
7634 2008-08-26  Jeff Law  <law@redhat.com>
7635
7636         * mn10300.md (movqi, movhi): Split i->d*a case into two cases to
7637         avoid the possibility of getting DATA_OR_ADDRESS_REGS as the
7638         preferred class when copying a constant into a partial word register.
7639
7640 2008-08-26  Ben Elliston  <bje@au.ibm.com>
7641
7642         * rtlanal.c: Fix uses of "it's" with "its" where appropriate.
7643         * cp/typeck.c: Likewise.
7644         * cp/tree.c: Likewise.
7645         * gimple-low.c: Likewise.
7646         * jump.c: Likewise.
7647
7648 2008-08-26  Vladimir Makarov  <vmakarov@redhat.com>
7649
7650         * ira-build.c, ira-color.c, ira-costs.c, ira.h, ira-lives.c,
7651         ira.c, ira-conflicts.c, ira-emit.c, ira-int.h: New files.
7652
7653         * doc/passes.texi: Describe IRA.
7654
7655         * doc/tm.texi (IRA_COVER_CLASSES,
7656         IRA_HARD_REGNO_ADD_COST_MULTIPLIER): Describe the new macros.
7657
7658         * doc/invoke.texi (ira-max-loops-num): Describe the new parameter.
7659         (-fira, -fira-algorithm, -fira-coalesce, -fno-ira-move-spills,
7660         -fira-propagate-cost, -fno-ira-share-save-slots,
7661         -fno-ira-share-spill-slots, -fira-verbose): Describe new options.
7662
7663         * flags.h (ira_algorithm): New enumeration.
7664         (flag_ira_algorithm, flag_ira_verbose): New external variable
7665         declarations.
7666
7667         * postreload.c (gate_handle_postreload): Don't do post reload
7668         optimizations unless the reload is completed.
7669
7670         * reload.c (push_reload, find_dummy_reload): Use DF_LR_OUT for
7671         IRA.
7672
7673         * tree-pass.h (pass_ira): New external variable declaration.
7674
7675         * reload.h: Add 2008 to the Copyright.
7676
7677         * cfgloopanal.c: Include params.h.
7678         (estimate_reg_pressure_cost): Decrease cost for IRA optimization
7679         mode.
7680
7681         * params.h (IRA_MAX_LOOPS_NUM): New macro.
7682
7683         * toplev.c (ira.h): New include.
7684         (flag_ira_algorithm, flag_ira_verbose): New external variables.
7685         (backend_init_target): Call ira_init.
7686         (backend_init): Call ira_init_once.
7687         (finalize): Call finish_ira_once.
7688
7689         * toplev.h (flag_ira, flag_ira_coalesce, flag_ira_move_spills,
7690         flag_ira_share_save_slots, flag_ira_share_spill_slots): New
7691         external variables.
7692
7693         * regs.h (contains_reg_of_mode, move_cost, may_move_in_cost,
7694         may_move_out_cost): New external variable declarations.
7695         (move_table): New typedef.
7696
7697         * caller-save.c: Include headers output.h and ira.h.
7698         (no_caller_save_reg_set): New global variable.
7699         (save_slots_num, save_slots): New variables.
7700         (reg_save_code, reg_restore_code, add_stored_regs): Add
7701         prototypes.
7702         (init_caller_save): Set up no_caller_save_reg_set.
7703         (init_save_areas): Reset save_slots_num.
7704         (saved_hard_reg): New structure.
7705         (hard_reg_map, saved_regs_num, all_saved_regs): New variables.
7706         (initiate_saved_hard_regs, new_saved_hard_reg,
7707         finish_saved_hard_regs, saved_hard_reg_compare_func): New
7708         functions.
7709         (setup_save_areas): Add code for sharing stack slots.
7710         (all_blocks): New variable.
7711         (save_call_clobbered_regs): Process pseudo-register too.
7712         (mark_set_regs): Process pseudo-register too.
7713         (insert_one_insn): Put the insn after bb note in a empty basic
7714         block.  Add insn check.
7715
7716         * global.c (eliminable_regset): Make it external.
7717         (mark_elimination): Use DF_LR_IN for IRA.
7718         (pseudo_for_reload_consideration_p): New.
7719         (build_insn_chain): Make it external.  Don't ignore spilled
7720         pseudos for IRA.  Use pseudo_for_reload_consideration_p.
7721         (gate_handle_global_alloc): New function.
7722         (pass_global_alloc): Add the gate function.
7723
7724         * opts.c (decode_options): Set up flag_ira.  Print the warning for
7725         -fira.
7726         (common_handle_option): Process -fira-algorithm and -fira-verbose.
7727
7728         * timevar.def (TV_IRA, TV_RELOAD): New passes.
7729
7730         * regmove.c (regmove_optimize): Don't do replacement of output for
7731         IRA.
7732
7733         * hard-reg-set.h (no_caller_save_reg_set, reg_class_subclasses):
7734         New external variable declarations.
7735
7736         * local-alloc.c (update_equiv_regs): Make it external.  Return
7737         true if jump label rebuilding should be done.  Rescan new_insn for
7738         notes.
7739         (gate_handle_local_alloc): New function.
7740         (pass_local_alloc): Add the gate function.
7741
7742         * alias.c (value_addr_p, stack_addr_p): New functions.
7743         (nonoverlapping_memrefs_p): Use them for IRA.
7744
7745         * common.opt (fira, fira-algorithm, fira-coalesce,
7746         fira-move-spills, fira-share-save-slots, fira-share-spill-slots,
7747         fira-verbose): New options.
7748
7749         * regclass.c (reg_class_subclasses, contains_reg_of_mode,
7750         move_cost, may_move_in_cost, may_move_out_cost): Make the
7751         variables external.
7752         (move_table): Remove typedef.
7753         (init_move_cost): Make it external.
7754         (allocate_reg_info, resize_reg_info, setup_reg_classes): New
7755         functions.
7756
7757         * rtl.h (init_move_cost, allocate_reg_info, resize_reg_info,
7758         setup_reg_classes): New function prototypes.
7759         (eliminable_regset): New external variable declaration.
7760         (build_insn_chain, update_equiv_regs): New function prototypes.
7761
7762         * Makefile.in (IRA_INT_H): New definition.
7763         (OBJS-common): Add ira.o, ira-build.o, ira-costs.o,
7764         ira-conflicts.o, ira-color.o, ira-emit.o, and ira-lives.o.
7765         (reload1.o, toplev.o): Add dependence on ira.h.
7766         (cfgloopanal.o): Add PARAMS_H.
7767         (caller-save.o): Add dependence on output.h and ira.h.
7768         (ira.o, ira-build.o, ira-costs.o, ira-conflicts.o, ira-color.o,
7769         ira-emit.o, ira-lives.o): New entries.
7770
7771         * passes.c (pass_ira): New pass.
7772
7773         * params.def (PARAM_IRA_MAX_LOOPS_NUM): New parameter.
7774
7775         * reload1.c (ira.h): Include the header.
7776         (changed_allocation_pseudos): New bitmap.
7777         (init_reload): Initiate the bitmap.
7778         (compute_use_by_pseudos): Permits spilled registers in FROM.
7779         (temp_pseudo_reg_arr): New variable.
7780         (reload): Allocate and free temp_pseudo_reg_arr.  Sort pseudos for
7781         IRA.  Call alter_reg with the additional parameter.  Don't clear
7782         spilled_pseudos for IRA.  Restore original insn chain for IRA.
7783         Clear changed_allocation_pseudos at the end of reload.
7784         (calculate_needs_all_insns): Call IRA's mark_memory_move_deletion.
7785         (hard_regno_to_pseudo_regno): New variable.
7786         (count_pseudo): Check spilled pseudos.  Set up
7787         hard_regno_to_pseudo_regno.
7788         (count_spilled_pseudo): Check spilled pseudos. Update
7789         hard_regno_to_pseudo_regno.
7790         (find_reg): Use better_spill_reload_regno_p.  Check
7791         hard_regno_to_pseudo_regno.
7792         (alter_reg): Set up spilled_pseudos.  Add a new parameter.  Add
7793         code for IRA.
7794         (eliminate_regs_1): Use additional parameter for alter_reg.
7795         (finish_spills): Set up pseudo_previous_regs only for spilled
7796         pseudos.  Call reassign_pseudos once for all spilled pseudos, pass
7797         more arguments.  Don't clear live_throughout and dead_or_set for
7798         spilled pseudos.  Use additional parameter for alter_reg.  Call
7799         mark_allocation_change.  Set up changed_allocation_pseudos.
7800         Remove sanity check.
7801         (emit_input_reload_insns, delete_output_reload): Use additional
7802         parameter for alter_reg.  Call mark_allocation_change.
7803         (substitute, gen_reload_chain_without_interm_reg_p): New
7804         functions.
7805         (reloads_conflict): Use gen_reload_chain_without_interm_reg_p.
7806
7807         * testsuite/gcc.dg/20080410-1.c: New file.
7808
7809         * config/s390/s390.h (IRA_COVER_CLASSES,
7810         IRA_HARD_REGNO_ADD_COST_MULTIPLIER): Define.
7811
7812         * config/sparc/sparc.h (IRA_COVER_CLASSES): New macro.
7813
7814         * config/i386/i386.h (IRA_COVER_CLASSES): Ditto.
7815
7816         * config/ia64/ia64.h (IRA_COVER_CLASSES): Ditto.
7817
7818         * config/rs6000/rs6000.h (IRA_COVER_CLASSES): Ditto.
7819
7820         * config/arm/arm.h (IRA_COVER_CLASSES): Ditto.
7821
7822         * config/alpha/alpha.h (IRA_COVER_CLASSES): Ditto.
7823
7824         2008-08-24  Jeff Law  <law@redhat.com>
7825         * ira.c (setup_reg_class_intersect_union): Prefer smallest class
7826         when ignoring unavailable registers.
7827
7828         2008-08-24  Jeff Law  <law@redhat.com>
7829         * ira-color.c (coalesced_pseudo_reg_slot_compare): Check
7830         FRAME_GROWS_DOWNWARD and STACK_GROWS_DOWNWARD.
7831         * ira.c (setup_eliminable_regset): Check stack_realign_needed.
7832         * config/mn10300/mn10300.h (IRA_COVER_CLASSES): New macro.
7833
7834         2008-06-03 Steve Chamberlain <steve.chamberlain@gmail.com>
7835         * ira-build.c (allocno_range_compare_func): Stabilize sort.
7836
7837         2008-05-29 Andy Hutchinson <hutchinsonandy@aim.com>
7838         * config/avr/avr.h (IRA_COVER_CLASSES): New macro.
7839         * reload1.c (find_reg): Process registers in register allocation order.
7840
7841         2008-05-10 Richard Sandiford <rsandifo@nildram.co.uk>
7842         * toplev.c (backend_init_target): Move ira_init call from
7843         here...
7844         (lang_dependent_init_target): ...to here.
7845
7846         2008-05-10 Richard Sandiford <rsandifo@nildram.co.uk>
7847         * ira.c (setup_class_subset_and_memory_move_costs): Don't
7848         calculate memory move costs for NO_REGS.
7849
7850         2008-05-05 Kaz Kojima <kkojima@gcc.gnu.org>
7851         * ira-color.c (ira_fast_allocation): Use no_stack_reg_p only if
7852         STACK_REGS is defined.
7853
7854         2008-04-08 Andrew Pinski <andrew_pinski@playstation.sony.com>
7855         * config/spu/spu.h (IRA_COVER_CLASSES): New macro.
7856
7857         2008-04-04 Bernd Schmidt <bernd.schmidt@analog.com>
7858         * config/bfin/bfin.h (IRA_COVER_CLASSES): New macro.
7859
7860         2008-04-04 Kaz Kojima <kkojima@gcc.gnu.org>
7861         * config/sh/sh.h (IRA_COVER_CLASSES): Define.
7862         * config/sh/sh.md (movsicc_true+3): Check if emit returns a
7863         barrier.
7864
7865 2008-08-26  Victor Kaplansky  <victork@il.ibm.com>
7866             Dorit Nuzman  <dorit@il.ibm.com>
7867
7868         * gcc/config/spu/spu.md (vec_extract_evenv4si,
7869         vec_extract_evenv4sf, vec_extract_evenv8hi,
7870         vec_extract_evenv16qi, vec_extract_oddv4si,
7871         vec_extract_oddv4sf, vec_extract_oddv8hi, vec_extract_oddv16qi,
7872         vec_interleave_highv4sf, vec_interleave_lowv4sf,
7873         vec_interleave_highv4si, vec_interleave_lowv4si,
7874         vec_interleave_highv8hi, vec_interleave_lowv8hi,
7875         vec_interleave_highv16qi, vec_interleave_lowv16qi,
7876         vec_pack_trunc_v8hi, vec_pack_trunc_v4si): Implement.S
7877
7878 2008-08-25  Janis Johnson  <janis187@us.ibm.com>
7879
7880         PR target/36756
7881         * config/rs6000/rs6000.c (optimization_options): Don't default to
7882         section anchors without toplevel reorder.
7883
7884 2008-08-25  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
7885
7886         * config/spu/spu_mfcio.h (mfc_begin_critical_section): New function.
7887         (mfc_end_critical_section): Likewise.
7888
7889 2008-08-25  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
7890
7891         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Propagate
7892         all type qualifiers from element type to vector type.
7893
7894 2008-08-25  David Daney  <ddaney@avtrex.com>
7895
7896         * config/mips/mips.md (immediate_insn): Move up in file, fix
7897         comment typo, reformat.
7898         (fetchop_bit, atomic_hiqi_op memory_barrier,
7899         sync_compare_and_swap<mode>, compare_and_swap_12, sync_add<mode>,
7900         sync_<optab><mode>, sync_<optab>_12, sync_old_<optab><mode>,
7901         sync_old_<optab>_12, sync_new_<optab><mode>, sync_new_<optab>_12,
7902         sync_nand<mode>, sync_nand_12, sync_old_nand<mode>,
7903         sync_old_nand_12, sync_new_nand<mode>, sync_new_nand_12,
7904         sync_sub<mode>, sync_old_add<mode>, sync_old_sub<mode>,
7905         sync_new_add<mode>, sync_new_sub<mode>, sync_<optab><mode>,
7906         sync_old_<optab><mode>, sync_new_<optab><mode>, sync_nand<mode>,
7907         sync_old_nand<mode>, sync_new_nand<mode>,
7908         sync_lock_test_and_set<mode>, sync_lock_test_and_set<mode>,
7909         test_and_set_12): Moved to sync.md.
7910         (sync.md): Include.
7911         * config/mips/sync.md: New file.
7912
7913 2008-08-25  Richard Henderson  <rth@redhat.com>
7914
7915         * dwarf2out.c (def_cfa_1): Don't scale by DWARF_CIE_DATA_ALIGNMENT.
7916         (regsave): Likewise.
7917         (lookup_cfa_1): Don't rescale by DWARF_CIE_DATA_ALIGNMENT.
7918         (output_cfi_directive): Likewise.
7919         (div_data_align): New.
7920         (output_cfi): Use it.
7921
7922 2008-08-24  Adam Nemet  <anemet@caviumnetworks.com>
7923
7924         * config.gcc (mips64*-*-linux*): Handle mips64octeon*-*-linux*.
7925         * config/mips/mips.h (enum processor_type): Add PROCESSOR_OCTEON.
7926         (TARGET_OCTEON): New macro.
7927         (TARGET_CPU_CPP_BUILTINS): Define __OCTEON__ for Octeon.
7928         (MIPS_ISA_LEVEL_SPEC, MIPS_ARCH_FLOAT_SPEC): Handle -march=octeon.
7929         (ISA_HAS_POP): New macro.
7930         * config/mips/driver-native.c (host_detect_local_cpu): Handle
7931         Octeon.
7932         * config/mips/mips.c (mips_cpu_info_table, mips_rtx_cost_data):
7933         Handle Octeon.
7934         * config/mips/mips.md (cpu): Add octeon.
7935         (type): Add pop attribute value.
7936         (popcount<mode>2): New pattern.
7937         * doc/invoke.texi (-march=@var{arch}): Add octeon.
7938
7939 2008-08-24  Jan Hubicka  <jh@suse.cz>
7940
7941         * doc/invoke.texi (-fipa-cp-clone): New option.
7942         (-fipa-cp): Update docs.
7943         (--param ipcp-unit-growth):New.
7944         * ipa-cp.c: Include fibheap.h, params.h
7945         (ipcp_initialize_node_lattices): When not cloning, all externally
7946         visible functions are bottom.
7947         (ipcp_need_redirect_p): Accept clones.
7948         (ipcp_insert_stage): Use cost driven heuristics.
7949         (max_count, dead_nodes): New static vars.
7950         (ipcp_need_original_clone_p, ipcp_estimate_cloning_cost,
7951         ipcp_const_param_count): New functions.
7952         * common.opt (ipa-cp-clone): New command line option.
7953         * params.def (ipcp-unit-growth): New.
7954
7955 2008-08-24  Jan Hubicka  <jh@suse.cz>
7956
7957         * tree-inline.c (tree_function_versioning): Look harder
7958         for referenced vars.
7959
7960 2008-08-24  Razya Ladelsky  <razya@il.ibm.com>
7961
7962         PR tree-optimization/37185
7963         * matrix-reorg.c (transform_access_sites): Update changed stmt.
7964
7965 2008-08-23  Jan Hubicka  <jh@suse.cz>
7966
7967         * ipa-cp.c (ipcp_analyze_node): New function.
7968         (ipcp_update_cloned_node): Use it.
7969         (ipcp_init_stage): Likewise.
7970         * ipa-inline.c (function_insertion_hook_holder): New static var.
7971         (analyze_function): Break out from ....
7972         (inline_generate_summary): Here; register insertion hook.
7973         (cgraph_decide_inlining): Remove hook.
7974         (add_new_function): New function.
7975
7976 2008-08-23  Jan Hubicka  <jh@suse.cz>
7977
7978         * opts.c (decode_options): Revert accidental change enabling ipa-cp.
7979
7980 2008-08-23  Jan Hubicka  <jh@suse.cz>
7981
7982         * ipa-cp.c (constant_val_insert): Remove.
7983         (ipcp_propagate_one_const): Remove.
7984         (ipcp_create_replace_map): Always insert replacements to the map.
7985         (ipcp_insert_stage): Do not try to insert statements by hand.
7986         * tree-inline.c (insert_init_stmt): Break out from ...
7987         (setup_one_parameter): ... here; allow NULL BB pointer.
7988         (tree_function_versioning): Use setup_one_parameter to process
7989         replacement map.
7990
7991 2008-08-23  Jan Hubicka  <jh@suse.cz>
7992
7993         * tree.c (decl_address_ip_invariant_p): New function.
7994         * tree.h (decl_address_ip_invariant_p): Declare.
7995         * gimple.c (strip_invariant_refs): Break out from ...
7996         (is_gimple_invariant_address): ... here
7997         (is_gimple_ip_invariant_address): New function.
7998         (is_gimple_ip_invariant): New function.
7999         * gimple.h (is_gimple_ip_invariant_address, is_gimple_ip_invariant):
8000         Declare.
8001
8002         * ipa-cp.c (ipcp_lat_is_const): Remove handling of IPA_CONST_VALUE_REF.
8003         (ipcp_lat_is_insertable): All constants are insertable.
8004         (ipcp_lattice_from_jfunc, ipcp_print_all_lattices): Remove handling of
8005         IPA_CONST_VALUE_REF.
8006         (ipcp_initialize_node_lattices): Propagate all types of operands.
8007         (build_const_val): Do not handle IPA_CONST_VALUE_REF.
8008         (ipcp_create_replace_map): Reformat.
8009         (ipcp_need_redirect_p): Simplify.
8010         (ipcp_insert_stage): Check that argument is used before clonning.
8011         * ipa-prop.c (ipa_print_node_jump_functions): Do not handle
8012         IPA_CONST_REF.
8013         (compute_scalar_jump_functions): Simplify using is_gimple_ip_invariat.
8014         (determine_cst_member_ptr): Keep wrapping ADDR_EXPR of members.
8015         (update_call_notes_after_inlining): Expect ADDR_EXPR in operand.
8016         * ipa-prop.h (jump_func_type): Remove IPA_CONST_REF.
8017         (jump_func_type): Remove IPA_CONST_VALUE_REF.
8018         * tree-inline.c (tree_function_versioning): Add variables referenced
8019         by replacing trees.
8020
8021 2008-08-23  Jan Hubicka  <jh@suse.cz>
8022
8023         PR target/37094
8024         * i386.c (standard_80387_constant_p): Use optimize_size.
8025
8026 2008-08-23  Ira Rosen  <irar@il.ibm.com>
8027
8028         PR tree-optimization/37161
8029         * tree-vectorizer.h (vect_get_smallest_scalar_type): Declare.
8030         * tree-vect-analyze.c (vect_get_smallest_scalar_type): New function.
8031         (vect_determine_vectorization_factor): Move the scalar type
8032         retrieval to vect_get_smallest_scalar_type.
8033         (vect_build_slp_tree): Call vect_get_smallest_scalar_type to get
8034         scalar type. Remove redundant computation.
8035         * tree-vect-transform.c (vect_get_constant_vectors): Add argument.
8036         (vect_get_slp_defs): Take the type of RHS into account if
8037         necessary by calling vect_get_smallest_scalar_type. Call
8038         vect_get_constant_vectors with additional argument.
8039
8040 2008-08-23  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8041
8042         PR 35648
8043         * doc/invoke.texi (Wwrite-strings): Clarify description.
8044
8045 2008-08-23  Ira Rosen  <irar@il.ibm.com>
8046
8047         PR tree-optimization/37174
8048         * tree-vect-analyze.c (vect_get_and_check_slp_defs): Check that the
8049         def stmt is a part of the loop before accessing its stmt_vec_info.
8050
8051 2008-08-22  Anatoly Sokolov  <aesok@post.ru>
8052
8053         PR target/11259
8054         * config/avr/avr.md (UNSPEC_SWAP): New constants.
8055         (*swap): New insn pattern.
8056         (*ashlqi3): Rename from ashlqi3 insn pattern.
8057         (ashlqi3): New expanders.
8058         (*lshrqi3): Rename from lshrqi3 insn pattern.
8059         (lshrqi3): New expanders.
8060         (ashlqi3_const4, ashlqi3_const5, ashlqi3_const6, lshrqi3_const4,
8061         lshrqi3_const5, lshrqi3_const6): New splitters.
8062         (andi, ashlqi3_l_const4, ashlqi3_l_const5, ashlqi3_l_const6,
8063         lshrqi3_l_const4, lshrqi3_l_const5, lshrqi3_l_const6): Define
8064         peephole2 patterns.
8065
8066 2008-08-22  Richard Guenther  <rguenther@suse.de>
8067
8068         PR tree-optimization/37078
8069         * tree-vrp.c (extract_range_from_unary_expr): Avoid generating
8070         [+INF, +INF] ranges.
8071
8072 2008-08-22  Richard Guenther  <rguenther@suse.de>
8073
8074         PR tree-optimization/37143
8075         * tree-vect-transform.c (vect_create_cond_for_align_checks): Build
8076         a conversion statement instead of a copy.
8077
8078 2008-08-22  Uros Bizjak  <ubizjak@gmail.com>
8079
8080         PR target/37184
8081         * config/i386/i386.c (ix86_match_ccmode): Handle CCAmode,
8082         CCCmode, CCOmode and CCSmode destination modes.
8083
8084         PR target/37191
8085         * config/i386/mmx.md (*vec_extractv2sf_0): Avoid combining registers
8086         from different units in a single alternative.
8087         (*vec_extractv2sf_1): Ditto.
8088         (*vec_extractv2si_0): Ditto.
8089         (*vec_extractv2si_1): Ditto.
8090         * config/i386/sse.md (sse2_storehpd): Ditto.
8091         (sse2_storelpd): Ditto.
8092         (sse2_loadhpd): Ditto.
8093         (sse2_loadlpd): Ditto.
8094
8095         PR target/37197
8096         * config/i386/i386.md (clzsi2_abm): Fix operand 1 constraints.
8097         (popcountsi2): Ditto.
8098         (clzdi2_abm): Ditto.
8099         (popcountdi2): Ditto.
8100         (clzhi2_abm): Ditto.
8101         (popcounthi2): Ditto.
8102
8103 2008-08-22  Richard Guenther  <rguenther@suse.de>
8104
8105         PR middle-end/36548
8106         PR middle-end/37125
8107         * fold-const.c (extract_muldiv_1): Optimize (X * C1) % C2 only
8108         if the multiplication does not overflow.
8109
8110 2008-08-21  Nathan Sidwell  <nathan@codesourcery.com>
8111
8112         * c-ppoutput.c (init_pp_output): Initialize src_line to 1.
8113
8114 2008-08-21  Richard Henderson  <rth@redhat.com>
8115
8116         * configure.ac (HAVE_GAS_CFI_PERSONALITY_DIRECTIVE): Remove
8117         spurrious comma from test.
8118         * configure: Rebuild.
8119
8120 2008-08-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8121
8122         PR 30457
8123         * builtins.c (fold_builtin_next_arg): Add warning about undefined
8124         behaviour.
8125
8126 2008-08-21  Aldy Hernandez  <aldyh@redhat.com>
8127
8128         * c-tree.h (grokfield): New argument.
8129         * c-decl.c (grokfield): Handle new location argument.
8130         * c-parser.c (c_parser_struct_declaration): Pass location to grokfield.
8131
8132 2008-08-21  Richard Guenther  <rguenther@suse.de>
8133
8134         * tree-ssa-ccp.c (ccp_fold): Fold VIEW_CONVERT_EXPRs of constants.
8135
8136 2008-08-21  Jan Hubicka  <jh@suse.cz>
8137
8138         * cgraph.c (first_cgraph_function_insertion_hook): New variable.
8139         (cgraph_add_function_insertion_hook,
8140         cgraph_remove_function_insertion_hook,
8141         cgraph_call_function_insertion_hooks): New functions.
8142         * cgraph.h (cgraph_add_function_insertion_hook,
8143         cgraph_remove_function_insertion_hook,
8144         cgraph_call_function_insertion_hooks): Declare.
8145         * ipa-reference.c (function_insertion_hook_holder): New variable.
8146         (check_operand, look_for_address_of): When checking late, do not care
8147         about module bitmaps.
8148         (add_new_function): New function.
8149         (generate_summary): Register hooks; zero module bitmaps.
8150         (propagate): Unregister hooks.
8151         * ipa-pure-const.c (function_insertion_hook_holder): New variable.
8152         (add_new_function): New function.
8153         (generate_summary): Register hook.
8154         (propagate): Remove hook.
8155
8156         * ipa-cp.c (ipcp_need_redirect_p): Fix to not be constant 0.
8157
8158         * tree-pass.h (pass_ipa_cp): Make ipa_opt_pass.
8159         * ipa-cp.c (ipcp_update_cloned_node): New function.
8160         (build_const_val): Handle functions correctly; bring type logic
8161         into sync with tree-inline.c
8162         (ipcp_init_stage):  Take care of computing stuff needed by
8163         indirect inlining; update clones.
8164         (ipcp_generate_summary): Break out of ipcp_driver.
8165         (ipcp_driver): Do only execution and transformation.
8166         (pass_ipa_cp): Make IPA_PASS.
8167         * tree-ssa-ccp.c (fold_stmt_r): Check type before trying to fold
8168         offset to address.
8169         * ipa-inline.c (inline_indirect_intraprocedural_analysis): When doing
8170         ipcp, some info is already available.
8171         * ipa-prop.c (ipa_count_arguments): Grow edge lists as needed.
8172         * tree-inline.c (remap_ssa_name): Unshare expression.
8173
8174 2008-08-21  Richard Guenther  <rguenther@suse.de>
8175
8176         * tree-ssa-pre.c (insert_into_preds_of_block): Before inserting
8177         a PHI ask VN if it is already available.
8178         * tree-ssa-sccvn.h (vn_phi_lookup): Declare.
8179         * tree-ssa-sccvn.c (vn_phi_lookup): Export.
8180
8181 2008-08-21  Richard Guenther  <rguenther@suse.de>
8182
8183         PR middle-end/36817
8184         * tree-chrec.c (chrec_apply): Always call chrec_fold_plus which
8185         makes sure to produce a result of the correct type.
8186
8187 2008-08-21  Jan Hubicka  <jh@suse.cz>
8188         Backport from LTO branch:
8189
8190         2008-05-05  Kenneth Zadeck <zadeck@naturalbridge.com>
8191                     Jan Hubicka  <jh@suse.cz>
8192
8193         * ipa-pure-const.c
8194         (init_state, finish_state, set_function_state, generate_summary):
8195         New functions.
8196         (scan_stmt): Renamed from scan_function.  Changed to keep state in
8197         local static vars rather than cgraph aux field.
8198         (propagate): Renamed from static_execute. Changed to keep state in
8199         local static vars rather than cgraph aux field.
8200         (pass_ipa_pure_const): Changed from SIMPLE_IPA_PASS to IPA_PASS.
8201         * tree-pass.h (pass_ipa_pure_const): Turn into IPA_PASS.
8202
8203         2008-07-15  Kenneth Zadeck <zadeck@naturalbridge.com>
8204
8205         * tree-pass.h (pass_ipa_reference): Make into ipa_opt_pass.
8206         * ipa-reference.c (init_function_info, generate_summary,
8207         propagate): New functions.
8208         (analyze_function):  Call init_function_info.
8209         (static_execute): Stripped into generate_summary and propagate.
8210         (pass_ipa_reference): Made into ipa_opt_pass.
8211
8212 2008-08-21  Richard Guenther  <rguenther@suse.de>
8213
8214         PR tree-optimization/37181
8215         * tree-vrp.c (extract_range_from_binary_expr): Check for NULL
8216         folding result.
8217         (extract_range_from_unary_expr): Likewise.
8218
8219 2008-08-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8220
8221         * diagnostic.c (pedwarn_at): Rename as pedwarn.
8222         (pedwarn): Delete.
8223         * toplev.h (pedwarn_at): Likewise.
8224         * builtins.c: Update all calls to pedwarn.
8225         * c-lex.c: Likewise.
8226         * toplev.c: Likewise.
8227         * c-tree.h: Likewise.
8228         * c-decl.c: Likewise.
8229         * c-errors.c: Likewise.
8230         * c-typeck.c: Likewise.
8231         * c-common.c: Likewise.
8232         * c-parser.c: Likewise.
8233
8234 2008-08-20  Joseph Myers  <joseph@codesourcery.com>
8235
8236         PR target/31070
8237         * config/sparc/sparc.c (function_arg_slotno): Handle structure
8238         with MODE_VECTOR_INT mode.
8239
8240 2008-08-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8241
8242         PR middle-end/179
8243         * tree-ssa.c (warn_uninit): Do not warn for variables that can be
8244         initialized outside the current module.
8245         (warn_uninitialized_var): Ignore left-hand side when walking the
8246         trees. Ignore address expressions. Examine VUSE operands in gimple
8247         statements with a variable declaration on the right-hand side.
8248
8249 2008-08-20  Richard Sandiford  <rdsandiford@googlemail.com>
8250
8251         PR bootstrap/37155
8252         * rtlanal.c (subreg_offset_representable_p): Revert last change.
8253
8254 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8255
8256         PR 35701
8257         * c-common.c (conversion_warning): Do not warn if applying bit-and
8258         operator to unsigned constant that fits in the target type.
8259
8260 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8261
8262         PR c++/35602
8263         * c-common.c (conversion_warning): Do not warn for artificial
8264         expressions.
8265
8266 2008-08-20  Richard Guenther  <rguenther@suse.de>
8267
8268         * tree-vrp.c (op_with_constant_singleton_value_range): New function.
8269         (extract_range_from_binary_expr): Fall back to constant propagation.
8270         (extract_range_from_unary_expr): Likewise.
8271
8272 2008-08-20  Richard Guenther  <rguenther@suse.de>
8273
8274         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Do not mess
8275         with TREE_THIS_VOLATILE on shared nodes.
8276         (fold_stmt_r): Likewise.
8277
8278 2008-08-20  Jakub Jelinek  <jakub@redhat.com>
8279
8280         PR c/37171
8281         * c-parser.c (c_parser_attributes): For keywords use canonical
8282         spelling for attr_name.
8283
8284 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8285
8286         * value-prof.c (check_counter): Revert wrong call to error.
8287
8288 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8289
8290         * profile.c: Update calls to inform.
8291         * value-prof.c: Update calls to inform.
8292
8293 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8294
8295         * diagnostic.c (inform): Add an explicit location_t parameter.
8296         * toplev.h (inform): Update declaration.
8297         * builtins.c: Update all calls to inform.
8298         * c-common.c: Likewise.
8299         * c-decl.c: Likewise.
8300         * c-opts.c: Likewise.
8301         * c-pch.c: Likewise.
8302         * c-pragma.c: Likewise.
8303         * c-typeck.c: Likewise.
8304         * coverage.c: Likewise.
8305         * opts.c: Likewise.
8306         * toplev.c: Likewise.
8307         * tree-cfg.c: Likewise.
8308         * tree-ssa.c: Likewise.
8309
8310 2008-08-20  H.J. Lu  <hongjiu.lu@intel.com>
8311
8312         PR target/37169
8313         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): In
8314         V2DI mode, for SSE4.1, use movq instead of vector set if the
8315         second element is zero and inter-unit moves are OK.
8316
8317 2008-08-20  Richard Guenther  <rguenther@suse.de>
8318
8319         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): More
8320         properly handle conversion/copy chains after tuplification.
8321
8322 2008-08-20  Richard Guenther  <rguenther@suse.de>
8323
8324         * passes.c (init_optimization_passes): Move the second
8325         forwprop pass before alias computation.  Remove the second
8326         DCE pass.  Remove the first dominator and phi copy/const
8327         prop passes.
8328
8329 2008-08-20  Nick Clifton  <nickc@redhat.com>
8330
8331         * configure.ac (HAVE_GAS_CFI_DIRECTIVE): Always test for assembler
8332         support of this feature.  Do not assume that a sufficiently new
8333         assembler will support the feature regardless of the target type.
8334         (HAVE_GAS_CFI_PERSONALITY_DIRECTIVE): Likewise.
8335         * configure: Regenerate.
8336
8337 2008-08-20  Richard Guenther  <rguenther@suse.de>
8338
8339         * tree-vrp.c (found_in_subgraph): Remove.
8340         (live): New global static.
8341         (live_on_edge): New function.
8342         (blocks_visited): Remove.
8343         (register_edge_assert_for_2): Use live_on_edge.
8344         (find_conditional_asserts): Remove code dealing with
8345         found_in_subgraph.  Do not walk the CFG.
8346         (find_switch_asserts): Likewise.
8347         (find_assert_locations_1): Renamed from find_assert_locations.
8348         Move finding assert locations for conditional and switch
8349         statements first.  Update live bitmap.  Do not walk the CFG.
8350         (find_assert_locations): New function.
8351         (insert_range_assertions): Remove entry of CFG walk.
8352         Adjust call to find_assert_locations.
8353         * tree-ssa-pre.c (do_regular_insertion): Ignore critical edges
8354         that only can appear because of fake exit edges but assert we
8355         never try to insert on those.
8356         (fini_pre): Do not remove fake exit edges here...
8357         (execute_pre): ...but here, before committing edge inserts.
8358
8359 2008-08-19  Richard Guenther  <rguenther@suse.de>
8360
8361         * passes.c (init_optimization_passes): Exchange store-ccp
8362         with a ccp pass.
8363
8364 2008-08-19  Rafael Espíndola  <espindola@google.com>
8365
8366         * varasm.c (weak_decls): Move earlier in the file.
8367         (assemble_external): Add weak decls to the weak_decls list.
8368         (declare_weak): Don't add decls to the weak_decls list.
8369
8370 2008-08-19  H.J. Lu  <hongjiu.lu@intel.com>
8371
8372         PR target/37157
8373         * config/i386/sse.md (sse2_punpckhqdq, sse2_punpcklqdq): Moved
8374         before (sse2_shufpd_<mode>).
8375
8376 2008-08-19  Jakub Jelinek  <jakub@redhat.com>
8377
8378         PR debug/37156
8379         * pretty-print.c (pp_base_format): Deal with recursive BLOCK trees.
8380         * tree.c (block_nonartificial_location): Likewise.
8381
8382 2008-08-19  Richard Guenther  <rguenther@suse.de>
8383
8384         PR tree-optimization/35972
8385         PR tree-optimization/23094
8386         * tree-ssa-sccvn.h (vn_reference_lookup_pieces): Add maywalk
8387         parameter.
8388         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Properly
8389         handle MISALIGNED_INDIRECT_REF.
8390         (get_ref_from_reference_ops): New helper.
8391         (vn_reference_lookup_pieces): Walk the use-def chain using the
8392         alias-oracle if requested.
8393         * tree-ssa-pre.c (phi_translate_1): Do reference lookup with
8394         walking the use-def chain.
8395         (compute_avail): But not here.
8396         (create_component_ref_by_pieces_1): Properly handle
8397         MISALIGNED_INDIRECT_REF.
8398         (do_regular_insertion): Handle fully redundant
8399         expressions after PHI-translation also for SSA_NAME values, not
8400         only constants.  Correctly use edoubleprime for that.
8401
8402 2008-08-19  Ira Rosen  <irar@il.ibm.com>
8403
8404         * tree-vectorizer.c (supportable_widening_operation): Support
8405         multi-step conversion, return the number of steps in such conversion
8406         and the required intermediate types.
8407         (supportable_narrowing_operation): Likewise.
8408         * tree-vectorizer.h (vect_pow2): New function.
8409         (supportable_widening_operation): Change argument types.
8410         (supportable_narrowing_operation): Likewise.
8411         (vectorizable_type_promotion): Add an argument.
8412         (vectorizable_type_demotion): Likewise.
8413         * tree-vect-analyze.c (vect_analyze_operations): Call
8414         vectorizable_type_promotion and vectorizable_type_demotion with
8415         additional argument.
8416         (vect_get_and_check_slp_defs): Detect patterns.
8417         (vect_build_slp_tree): Add an argument, don't fail in case of multiple
8418         types.
8419         (vect_analyze_slp_instance): Don't fail in case of multiple types.
8420         Call vect_build_slp_tree with correct arguments. Calculate unrolling
8421         factor according to the smallest type in the loop.
8422         (vect_detect_hybrid_slp_stmts): Include statements from patterns.
8423         * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Call
8424         supportable_widening_operation with correct arguments.
8425         * tree-vect-transform.c (vect_get_slp_defs): Allocate output vector
8426         operands lists according to the number of vector statements in left
8427         or right node, if exists.
8428         (vect_gen_widened_results_half): Remove unused argument.
8429         (vectorizable_conversion): Call supportable_widening_operation,
8430         supportable_narrowing_operation, and vect_gen_widened_results_half
8431         with correct arguments.
8432         (vectorizable_assignment): Change documentation, support multiple
8433         types in SLP.
8434         (vectorizable_operation): Likewise.
8435         (vect_get_loop_based_defs): New function.
8436         (vect_create_vectorized_demotion_stmts): Likewise.
8437         (vectorizable_type_demotion): Support loop-aware SLP and general
8438         multi-step conversion. Call vect_get_loop_based_defs and
8439         vect_create_vectorized_demotion_stmts for transformation.
8440         (vect_create_vectorized_promotion_stmts): New function.
8441         (vectorizable_type_promotion): Support loop-aware SLP and general
8442         multi-step conversion. Call vect_create_vectorized_promotion_stmts
8443         for transformation.
8444         (vectorizable_store): Change documentation, support multiple
8445         types in SLP.
8446         (vectorizable_load): Likewise.
8447         (vect_transform_stmt): Pass SLP_NODE to
8448         vectorizable_type_promotion and vectorizable_type_demotion.
8449         (vect_schedule_slp_instance): Move here the calculation of number
8450         of vectorized statements for each node from...
8451         (vect_schedule_slp): ... here.
8452         (vect_transform_loop): Call vect_schedule_slp without the last
8453         argument.
8454
8455 2008-08-19  Dorit Nuzman  <dorit@il.ibm.com>
8456
8457         PR bootstrap/37152
8458         * tree-vect-transform.c (vect_create_epilog_for_reduction): Change =
8459         to == in assert statement.
8460         (vectorizable_reduction): Fix typo.
8461
8462 2008-08-18  H.J. Lu  <hongjiu.lu@intel.com>
8463
8464         PR bootstrap/37153
8465         * value-prof.c (check_counter): Dereference pointer to overall
8466         count when printing it.
8467
8468 2008-08-18  H.J. Lu  <hongjiu.lu@intel.com>
8469
8470         * profile.h: Really add it.
8471
8472 2008-08-18  H.J. Lu  <hongjiu.lu@intel.com>
8473
8474         * mcf.c: Really add it.
8475
8476 2008-08-18  Paul Yuan  <yingbo.com@gmail.com>
8477             Vinodha Ramasamy  <vinodha@google.com>
8478
8479         * cgraph.c (cgraph_edge): Handle inconsistent counts when setting
8480         count_scale.
8481         * value-prof.c (check_counter): Fix the counter if
8482         flag_profile_correction is true.
8483         (tree_divmod_fixed_value_transform, tree_mod_pow2_value_transform,
8484         tree_mod_subtract_transform):
8485         Follow check_counter parameter change.
8486         * common.opt (fprofile-correction): New option.
8487         * mcf.c: New file.
8488         * profile.h: Likewise.
8489         * profile.c (edge_info, EDGE_INFO): Moved to new file profile.h.
8490         (sum_edge_counts, is_edge_inconsistent, correct_negative_edge_counts,
8491         is_inconsistent, set_bb_counts, read_profile_edge_counts): New
8492         functions.
8493         (compute_branch_probabilities): Refactored. Invokes mcf_smooth_cfg if
8494         flag_profile_correction is set.
8495
8496 2008-08-18  Richard Sandiford  <rdsandiford@googlemail.com>
8497
8498         * rtlanal.c (subreg_offset_representable_p): Check HARD_REGNO_MODE_OK.
8499
8500 2008-08-18  Tomas Bily  <tbily@suse.cz>
8501
8502         * tree.h (IS_CONVERT_EXPR_CODE_P): Renamed to CONVERT_EXPR_CODE_P.
8503         * tree-ssa-threadedge.c (simplify_control_stmt_condition): Use
8504         CONVERT_EXPR_P.
8505         * tree-data-ref.c (split_constant_offset_1): Likewise.
8506         * tree-inline.c (estimate_operator_cost): Use CASE_CONVERT.
8507         * tree-sra.c (sra_walk_expr): Likewise.
8508         * matrix-reorg.c (ssa_accessed_in_assign_rhs): Likewise.
8509         * tree-ssa-loop-niter.c (expand_simple_operations): Likewise.
8510         * gimple.h (gimple_assign_cast_p): Use CONVERT_EXPR_CODE_P.
8511         * tree-ssa-structalias.c (find_func_aliases, find_func_aliases):
8512         Likewise.
8513         * gimple.c (gimple_assign_unary_nop_p): Likewise.
8514         * tree-vect-transform.c (vectorizable_type_demotion)
8515         (vectorizable_type_promotion): Likewise.
8516         * tree-inline.c (expand_call_inline):
8517         * tree-ssa-forwprop.c (get_prop_source_stmt, can_propagate_from)
8518         (forward_propagate_addr_expr_1, forward_propagate_comparison)
8519         (tree_ssa_forward_propagate_single_use_vars): Likewise.
8520         * expr.c (expand_expr_real_1): Likewise.
8521         * tree-ssa-dom.c (hashable_expr_equal_p, iterative_hash_hashable_expr)
8522         (gimple_assign_unary_useless_conversion_p): Likewise.
8523         * tree-stdarg.c (execute_optimize_stdarg): Likewise.
8524         * tree-ssa-ccp.c (ccp_fold, fold_gimple_assign): Likewise.
8525         * fold-const.c (fold_unary): Likewise.
8526         * tree.h (CONVERT_EXPR_P): Likewise.
8527         * tree.c (simple_cst_equal, iterative_hash_expr): Likewise.
8528         * tree-ssa-loop-im.c (rewrite_bittest): Likewise.
8529         * tree-vrp.c:
8530         (register_edge_assert_for_2, extract_range_from_unary_expr)
8531         (register_edge_assert_for_1): Likewise.
8532
8533 2008-08-18  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8534
8535         * real.h (dconst_e, dconst_third, dconst_sqrt2, dconst_e_ptr,
8536         dconst_third_ptr, dconst_sqrt2_ptr): Declare.
8537         (enum real_value_const): Delete.
8538         (get_real_const): Delete.
8539         * real.c (get_real_const): Delete.
8540         (dconst_e_ptr): Define.
8541         (dconst_third_ptr): Define.
8542         (dconst_sqrt2_ptr): Define.
8543         * builtins.c: Update all callers.
8544
8545 2008-08-18  Richard Guenther  <rguenther@suse.de>
8546
8547         * tree-ssa-reassoc.c (reassociate_bb): Properly reset the
8548         statement iterator after statement removal.
8549
8550 2008-08-18  Andreas Tobler  <a.tobler@schweiz.org>
8551
8552         * config/rs6000/driver-rs6000.c (detect_caches_freebsd): New function.
8553         (detect_processor_freebsd): Likewise.
8554         (host_detect_local_cpu): Call newly added functions for FreeBSD.
8555
8556 2008-08-18  Richard Guenther  <rguenther@suse.de>
8557
8558         * tree-cfg.c (verify_types_in_gimple_assign): Verify copies
8559         and loads have the correct types.
8560
8561 2008-08-18  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8562
8563         PR cpp/7263
8564         * c-opts.c (cpp_opts): Remove static.
8565         * c-parser.c (cpp_opts): Declare it extern.
8566         (disable_extension_diagnostics): Handle cpp options.
8567         (enable_extension_diagnostics): Likewise.
8568
8569 2008-08-18  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8570
8571         * diagnostics.c (permerror_at): Rename as permerror.
8572         (permerror): Delete.
8573         * toplev.h: Likewise.
8574
8575 2008-08-18  Richard Guenther  <rguenther@suse.de>
8576
8577         * passes.c (init_optimization_passes): Remove cleanup_cfg1,
8578         sdse1 and addressables2 passes.  Replace dce1 with cddce1.
8579         Move call_cdce before build_alias.  Move copyrename2,
8580         cunrolli and ccp2 beafore build_alias.  Re-add addressable2
8581         right after final inlining.
8582         * tree-cfg.c (build_gimple_cfg): Do not dump function here.
8583         (pass_build_cfg): But instead via TODO_dump_func.
8584
8585 2008-08-18  Richard Guenther  <rguenther@suse.de>
8586
8587         * tree-sra.c (generate_element_init_1): Deal with NULL constructor
8588         element index.
8589         (scalarize_init): If we failed to generate some initializers
8590         do not generate zeros for not instantiated members.  Instead
8591         rely on the copy out.
8592         * tree-ssa-operands.c (get_addr_dereference_operands): Warn
8593         about missing flow-sensitive alias info only if we have
8594         aliases computed.
8595
8596 2008-08-17  Nick Clifton  <nickc@redhat.com>
8597
8598         * doc/extend.texi (Function Attributes): Fix typo in description
8599         if hot function attribute.
8600
8601 2008-08-17  Daniel Jacobowitz  <dan@codesourcery.com>
8602             Richard Sandiford  <rdsandiford@googlemail.com>
8603
8604         * doc/install.texi (--with-mips-plt): Document.
8605         * doc/invoke.texi (-mplt, -mno-plt): Document.
8606         * config.gcc (mips*-*-*): Add mips-plt to supported_defaults
8607         and handle ${with_mips_plt}.
8608         * config/mips/mips.opt (mplt): New option.
8609         * config/mips/mips.h (TARGET_ABICALLS_PIC0): New macro.
8610         (TARGET_ABICALLS_PIC2): Likewise.
8611         (TARGET_GPWORD): Return false for TARGET_ABSOLUTE_ABICALLS.
8612         (OPTION_DEFAULT_SPECS): Add a mips-plt entry.
8613         (ASM_SPEC): Use !mabi=* instead of !mabi*.
8614         (MIPS_CALL): Use TARGET_ABICALLS_PIC2 instead of TARGET_ABICALLS
8615         to decide whether to output ".option picX" directives.
8616         * config/mips/linux.h (SUBTARGET_ASM_SPEC): Remove -mabi=64 handling.
8617         Pass -call_nonpic rather than -KPIC for -mplt.
8618         (BASE_DRIVER_SELF_SPECS): Remove -mplt if -mno-shared is not present
8619         on the command line.  Also remove it when -mabi=64 is used without
8620         -msym32.
8621         * config/mips/linux64.h (SUBTARGET_ASM_SPEC): Delete.
8622         * config/mips/mips.c (mips_use_pic_fn_addr_reg_p): Handle
8623         TARGET_ABICALLS_PIC0.
8624         (mips_classify_symbol): Use TARGET_ABICALLS_PIC2 instead of
8625         TARGET_ABICALLS.
8626         (mips16_build_function_stub): Only output ".option pic" directives
8627         and PIC stubs if TARGET_ABICALLS_PIC2.  Call through $25 instead of $1.
8628         (mips16_build_call_stub): Fix comment and remove redundant
8629         ".set at"/"set .noat" directives.
8630         (mips_function_rodata_section): Use the default behaviour for
8631         TARGET_ABSOLUTE_ABICALLS.
8632         (mips_file_start): Emit ".option pic0" for TARGET_ABICALLS_PIC0.
8633         (mips_global_pointer): Handle TARGET_ABICALLS_PIC0.
8634         (mips_restore_gp): Do nothing if the current function doesn't use
8635         a global pointer.
8636         (mips_expand_prologue): Only save $gp if the current function uses it.
8637         Use a normal move for TARGET_ABICALLS_PIC0.
8638         (mips_override_options): Only set flag_pic if TARGET_ABICALLS_PIC2.
8639
8640 2008-08-17  Richard Sandiford  <rdsandiford@googlemail.com>
8641
8642         * config/mips/mips.c (mips_save_reg_p): Don't short-circuit rest
8643         of function when handling GLOBAL_POINTER_REGNUM.
8644
8645 2008-08-16  Eric Botcazou  <ebotcazou@adacore.com>
8646
8647         PR ada/20548
8648         * common.opt (-fstack-check): Do not declare the variable here.
8649         (-fstack-check=): New option variant.
8650         * doc/invoke.texi (Code Gen Options): Document it.
8651         * expr.h (STACK_OLD_CHECK_PROTECT): New macro.
8652         (STACK_CHECK_PROTECT): Bump to 3 pages if DWARF-2 EH is used.
8653         (STACK_CHECK_STATIC_BUILTIN): New macro.
8654         * doc/tm.texi (Stack Checking): Document STACK_CHECK_STATIC_BUILTIN.
8655         * opts.c: Include expr.h.
8656         (common_handle_option) <OPT_fold_stack_check_>: New case.
8657         <OPT_fstack_check>: Likewise.
8658         * calls.c (initialize_argument_information): Use TYPE_SIZE_UNIT
8659         consistently in the test for variable-sized types.  Adjust for
8660         new behaviour of flag_stack_check.
8661         * explow.c: Include except.h.
8662         (allocate_dynamic_stack_space): Do not take into account
8663         STACK_CHECK_MAX_FRAME_SIZE for static builtin stack checking.
8664         * function.c (gimplify_parameters): Use DECL_SIZE_UNIT in the test
8665         for variable-sized parameters.  Treat all parameters whose size is
8666         greater than STACK_CHECK_MAX_VAR_SIZE as variable-sized if generic
8667         stack checking is enabled.
8668         * gimplify.c (gimplify_decl_expr): Treat non-static objects whose
8669         size is greater than STACK_CHECK_MAX_VAR_SIZE as variable-sized
8670         if generic stack checking is enabled.
8671         (expand_function_end): Adjust for new behaviour of flag_stack_check.
8672         * reload1.c (reload): Likewise.
8673         * stmt.c (expand_decl): Assert that all automatic variables have
8674         fixed size at this point and remove dead code.
8675         * flags.h (stack_check_type): New enumeration type.
8676         (flag_stack_check): Declare.
8677         * toplev.c (flag_stack_check): New global variable.
8678         * Makefile.in (opts.o): Add dependency on EXPR_H.
8679         (explow.o): Add dependency on except.h.
8680
8681 2008-08-16  Andy Hutchinson  <hutchinsonandy@aim.com>
8682
8683         * config/avr/avr.c (avr_override_options): Reduce value of
8684         PARAM_INLINE_CALL_COST.
8685
8686 2008-08-15  Eric Botcazou  <ebotcazou@adacore.com>
8687
8688         * expr.c (expand_expr_real_1) <VIEW_CONVERT_EXPR>: When converting
8689         to BLKmode, try to fetch an inner memory reference.  Use 'mode' in
8690         lieu of TYPE_MODE (type) throughout.
8691
8692 2008-08-15  Joseph Myers  <joseph@codesourcery.com>
8693
8694         * config/arm/arm.c (add_minipool_backward_ref): Check for
8695         8-byte-aligned entries in second case of forcing insertion after a
8696         particular entry.  Change third case to avoid inserting
8697         non-8-byte-aligned entries before 8-byte-aligned ones.
8698
8699 2008-08-15  Richard Guenther  <rguenther@suse.de>
8700
8701         * tree-ssa-ccp.c (maybe_fold_offset_to_reference): Do not
8702         strip components for unknown size accesses.
8703
8704 2008-08-15  Wolfgang Gellerich  <gellerich@de.ibm.com>
8705
8706         * config/s390/2097.md New file.
8707         * config/s390/s390.md ("z10prop" attribute): Define none,
8708         z10_super, z10_super_E1, z10_super_A1, z10_super_c,
8709         z10_super_c_E1, z10_fwd, z10_fwd_A1, z10_fwd_A3, z10_fwd_E1,
8710         z10_rec, z10_fr, z10_fr_A3, z10_fr_E1, z10_c, and z10_cobra as
8711         possible values and apply them to insns as appropriate.
8712         ("type" attribute): Removed itof and added ftrunctf,ftruncdf,
8713         ftruncsd, ftruncdd, itoftf, itofdf, itofsf, itofdd, itoftd,
8714         fdivdd, fdivtd, floaddd, floadsd, fmuldd, fmultd, fsimpdd,
8715         fsimpsd, fsimptd, fstoredd, fstoresd, ftoidfp as possible values.
8716         ("bfp" mode attribute): Removed.  Every occurence replaced
8717         with <mode>.
8718         * config/s390/s390.c (struct "z10_cost"): Updated entries.
8719         * config/s390/2084.md (insn_reservation "x_itof"): Updated
8720         type attribute.
8721
8722 2008-08-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8723
8724         PR c/28152
8725         * c-parser.c (c_lex_one_token): Do not store the canonical spelling
8726         for keywords.
8727
8728 2008-08-14  Dorit Nuzman  <dorit@il.ibm.com>
8729
8730         * tree-vect-transform.c (vect_create_epilog_for_reduction): Takes an
8731         additional argument. Support reduction when duplication is needed due
8732         to data-types of different sizes in the loop.
8733         (get_initial_def_for_induction): Fix printout.
8734         (vect_get_vec_def_for_stmt_copy): Support case where the
8735         vec_stmt_for_operand is a phi node.
8736         (vectorizable_reduction): Support reduction when duplication is needed
8737         due to data-types of different sizes in the loop.
8738         (vectorizable_call): Remove restriction to not vectorize in case we
8739         have data-types of different sizes in the loop.
8740         (vectorizable_conversion): Likewise.
8741         (vectorizable_operation): Likewise.
8742         (vectorizable_type_demotion): Likewise.
8743         (vectorizable_type_promotion): Likewise.
8744         (vectorizable_induction): Add restriction to not vectorize in case
8745         we have data-types of different sizes in the loop.
8746
8747 2008-08-14  Christophe Saout  <christophe@saout.de>
8748             Uros Bizjak  <ubizjak@gmail.com>
8749
8750         PR target/37101
8751         * config/i386/sse.md (vec_concatv2di): Remove movlps alternative.
8752         (*vec_concatv2di_rex64_sse4_1): Ditto.
8753         (*vec_concatv2di_rex64_sse): Ditto.
8754
8755 2008-08-14  Jakub Jelinek  <jakub@redhat.com>
8756
8757         PR middle-end/37103
8758         * fold-const.c (fold_widened_comparison): Do not allow
8759         sign changes that change the result even if shorter type
8760         is wider than arg1_unw's type.
8761
8762 2008-08-13  Kazu Hirata  <kazu@codesourcery.com>
8763
8764         * gcc.dg/arm-g2.c, gcc.dg/arm-mmx-1.c, gcc.dg/arm-scd42-2.c:
8765         Skip if the multilib testing specifies -march that does not
8766         agree with the one specified in the testcase.
8767
8768 2008-08-13  Joseph Myers  <joseph@codesourcery.com>
8769
8770         * config/sparc/sparc.c (emit_soft_tfmode_cvt): Explicitly sign or
8771         zero extend SImode values being converted to TFmode before passing
8772         to libcalls.
8773
8774 2008-08-13  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
8775
8776         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Predefine
8777         __PPU__ when targeting the Cell/B.E. PPU processor.
8778
8779 2008-08-13  Eric Botcazou  <ebotcazou@adacore.com>
8780
8781         * gimple.h (gimple_call_set_chain): Accept SSA variables.
8782         * tree-ssa-pre.c (create_component_ref_by_pieces_1) <CALL_EXPR>:
8783         Rematerialize the static chain, if any.
8784         * tree-ssa-sccvn.c (copy_reference_ops_from_call): Also copy the
8785         static chain.
8786
8787 2008-08-13  H.J. Lu  <hongjiu.lu@intel.com>
8788
8789         * dwarf2out.c (dwarf_stack_op_name): Remove prototype.
8790         (new_loc_descr): Likewise.
8791         (add_loc_descr): Likewise.
8792         (size_of_loc_descr): Likewise.
8793         (size_of_locs): Likewise.
8794         (output_loc_operands): Likewise.
8795         (output_loc_sequence): Likewise.
8796         (new_reg_loc_descr): New.
8797         (build_cfa_loc): Use it.
8798         (build_cfa_aligned_loc): Likewise.
8799         (one_reg_loc_descriptor): Likewise.
8800         (based_loc_descr): Likewise.
8801
8802 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8803
8804         PR 30551
8805         * doc/invoke.texi (Wmain): Update.
8806         * c-decl.c (start_decl): warn_main is only 0 or 1.
8807         (start_function): Likewise. Fix formatting.
8808         (finish_function): Delete redundant warning.
8809         * c.opt (Wmain): Add Var(warn_main) and Init(-1).
8810         * c-opts (c_common_handle_option): -Wall only has effect if
8811         warn_main is uninitialized. OPT_Wmain is automatically
8812         handled. -pedantic also enables Wmain.
8813         (c_common_post_options): Handle all logic for Wmain here.
8814         * c-common.c (warn_main): Delete.
8815         (check_main_parameter_types): Make pedwarns conditional on OPT_Wmain.
8816         * c-common.h (warn_main): Delete.
8817
8818 2008-08-13  H.J. Lu  <hongjiu.lu@intel.com>
8819
8820         PR middle-end/36701
8821         * expr.c (emit_group_store): Allocate stack temp with the
8822         largest alignment when copying from register to stack.
8823
8824 2008-08-13  Richard Guenther  <rguenther@suse.de>
8825
8826         * tree.h (maybe_fold_offset_to_address): Declare.
8827         * tree-ssa-ccp.c (surely_varying_stmt_p): Fix typo in last commit.
8828         (ccp_fold): Handle pointer conversions the same as fold_stmt.
8829         Likewise for POINTER_PLUS_EXPR.
8830         (maybe_fold_offset_to_reference): Enable disabled code.
8831         (maybe_fold_offset_to_address): New function.
8832         (fold_stmt_r): Use it.
8833         (fold_gimple_assign): Likewise.
8834         * gimplify.c (gimplify_conversion): Use maybe_fold_offset_to_address.
8835         (gimplify_expr): Likewise.
8836
8837 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8838
8839         * toplev.h (pedwarn_at): Fix declaration.
8840
8841 2008-08-13  Joseph Myers  <joseph@codesourcery.com>
8842
8843         * config/sparc/linux64.h (LINK_ARCH32_SPEC, LINK_ARCH64_SPEC,
8844         LINK_SPEC): Use %R in -Y P argument.
8845
8846 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8847
8848         PR c/15236
8849         * diagnostic.c (pedwarn_at): New.
8850         * toplev.h (pedwarn_at): Declare.
8851         * c-tree.h (build_enumerator): Update declaration.
8852         * c-decl.c (finish_enum): Update comment.
8853         (build_enumerator): Take a location parameter. Give a pedwarn but do
8854         not perform any conversion.
8855         * c-parser.c (c_parser_enum_specifier): Set correct location for
8856         enumerator.
8857
8858 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8859
8860         PR 35635
8861         * c-common.c (conversion_warning): Use a switch. Ignore boolean
8862         expressions except for conversions to signed:1 bitfields. Handle
8863         COND_EXPR with constant operands.
8864
8865 2008-08-13  Richard Guenther  <rguenther@suse.de>
8866
8867         PR tree-optimization/15255
8868         * tree-ssa-reassoc.c (linearize_expr_tree): Declare.
8869         (struct oecount_s): New struct and VEC types.
8870         (cvec): New global.
8871         (oecount_hash): New function.
8872         (oecount_eq): Likewise.
8873         (oecount_cmp): Likewise.
8874         (zero_one_operation): New function.
8875         (build_and_add_sum): Likewise.
8876         (undistribute_ops_list): Perform un-distribution of multiplication
8877         and division on the chain of summands.
8878         (should_break_up_subtract): Also break up subtracts for factors.
8879         (reassociate_bb): Delete dead visited statements.
8880         Call undistribute_ops_list.  Re-sort and optimize if it did something.
8881         * passes.c (init_optimization_passes): Move DSE before
8882         reassociation.
8883         * tree-ssa-loop-niter.c (stmt_dominates_stmt_p): Correctly handle
8884         PHI nodes.
8885
8886 2008-08-12  Janis Johnson  <janis187@us.ibm.com>
8887
8888         * doc/invoke.texi (-fipa-pta): Say the option is experimental.
8889
8890         * doc/invoke.texi: Revert unintended checkin.
8891
8892 2008-08-12  Nathan Froyd  <froydnj@codesourcery.com>
8893
8894         PR libgomp/26165
8895         * gcc.c (include_spec_function): Tweak call to find_a_file.
8896
8897 2008-08-12  Jakub Jelinek  <jakub@redhat.com>
8898
8899         PR middle-end/37014
8900         * expr.c (expand_expr_real_1): Handle TRUTH_ANDIF_EXPR
8901         and TRUTH_ORIF_EXPR.
8902         * dojump.c (do_jump): Likewise.
8903
8904         PR tree-optimization/37084
8905         * tree-inline.c (copy_bb): Call gimple_regimplify_operands
8906         if id->regimplify, don't assume stmt is a cast assignment.
8907
8908 2008-08-12  Anatoly Sokolov  <aesok@post.ru>
8909
8910         * final.c (final_scan_insn): Use app_enable/app_disable functions.
8911
8912 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
8913
8914         PR bootstrap/37097
8915         * builtins.c (do_mpfr_bessel_n): Fix copy-and-paste bug introduced
8916         by last change.
8917
8918 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
8919
8920         * defaults.h (TARGET_FLOAT_FORMAT): Remove.
8921         (UNKNOWN_FLOAT_FORMAT, IEEE_FLOAT_FORMAT, VAX_FLOAT_FORMAT): Remove.
8922
8923         * config/alpha/alpha.h (TARGET_FLOAT_FORMAT): Remove.
8924         * config/iq2000/iq2000.h (TARGET_FLOAT_FORMAT): Remove.
8925         * config/pdp11/pdp11.h (TARGET_FLOAT_FORMAT): Remove.
8926         * config/score/score.h (TARGET_FLOAT_FORMAT): Remove.
8927         * config/vax/vax.h (TARGET_FLOAT_FORMAT): Remove.
8928
8929         * doc/tm.texi (Storage Layout): Remove documentation for
8930         TARGET_FLOAT_FORMAT.
8931
8932         * simplify-rtx.c (simplify_binary_operation_1): Replace
8933         TARGET_FLOAT_FORMAT check by appropriate HONOR_... checks.
8934
8935 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
8936
8937         * real.h (struct real_format): New member has_sign_dependent_rounding.
8938         * real.c (ieee_single_format, mips_single_format, motorola_single_format,
8939         spu_single_format, ieee_double_format, mips_double_format,
8940         motorola_double_format, ieee_extended_motorola_format,
8941         ieee_extended_intel_96_format, ieee_extended_intel_128_format,
8942         ieee_extended_intel_96_round_53_format, ibm_extended_format,
8943         mips_extended_format, ieee_quad_format, mips_quad_format,
8944         vax_f_format, vax_d_format, vax_g_format): Initialize it.
8945         * config/pdp11/pdp11.c (pdp11_f_format, pdp11_d_format): Likewise.
8946
8947         * defaults.h (MODE_HAS_NANS, MODE_HAS_INFINITIES,
8948         MODE_HAS_SIGNED_ZEROS, MODE_HAS_SIGN_DEPENDENT_ROUNDING): Remove.
8949         * config/spu/spu.h (MODE_HAS_NANS, MODE_HAS_INFINITIES,
8950         MODE_HAS_SIGN_DEPENDENT_ROUNDING): Remove.
8951         (ROUND_TOWARDS_ZERO): Likewise.
8952
8953         * real.h (REAL_MODE_FORMAT): Protect MODE against macro expansion.
8954         (FLOAT_MODE_FORMAT): New macro.
8955         (REAL_MODE_FORMAT_COMPOSITE_P): Remove, replace by ...
8956         (MODE_COMPOSITE_P): ... this new macro.
8957         (MODE_HAS_NANS, MODE_HAS_INFINITIES, MODE_HAS_SIGNED_ZEROS,
8958         MODE_HAS_SIGN_DEPENDENT_ROUNDING): New macros.
8959         * machmode.h (GET_MODE_INNER): Cast result to enum machine_mode.
8960
8961         * flags.h: Include "real.h".
8962
8963         * fold-const.c (const_binop): Use MODE_COMPOSITE_P instead of
8964         REAL_MODE_FORMAT_COMPOSITE_P.
8965         * simplify-rtx.c (simplify_const_binary_operation): Likewise.
8966
8967         * doc/tm.texi (Storage Layout): Remove documentation of
8968         MODE_HAS_NANS, MODE_HAS_INFINITIES, MODE_HAS_SIGNED_ZEROS,
8969         MODE_HAS_SIGN_DEPENDENT_ROUNDING.  Update documentation of
8970         ROUND_TOWARDS_ZERO and LARGEST_EXPONENT_IS_NORMAL to clarify
8971         they only apply to libgcc2.a.
8972
8973 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
8974
8975         * config/spu/float_disf.c: New file.
8976         * config/spu/float_unsdisf.c: New file.
8977         * config/spu/t-elf (LIB2FUNCS_STATIC_EXTRA): Add them.
8978         (LIB2FUNCS_EXCLUDE): Define.
8979
8980 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
8981             Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
8982
8983         * real.h (struct real_format): New member round_towards_zero.
8984         * real.c (round_for_format): Respect fmt->round_towards_zero.
8985         (ieee_single_format, mips_single_format, motorola_single_format,
8986         spu_single_format, ieee_double_format, mips_double_format,
8987         motorola_double_format, ieee_extended_motorola_format,
8988         ieee_extended_intel_96_format, ieee_extended_intel_128_format,
8989         ieee_extended_intel_96_round_53_format, ibm_extended_format,
8990         mips_extended_format, ieee_quad_format, mips_quad_format,
8991         vax_f_format, vax_d_format, vax_g_format): Initialize it.
8992         * config/pdp11/pdp11.c (pdp11_f_format, pdp11_d_format): Likewise.
8993
8994         * builtins.s (do_mpfr_arg1): Consider round_towards_zero member of
8995         real_format to choose rounding mode when calling MPFR functions.
8996         (do_mpfr_arg2, do_mpfr_arg3, do_mpfr_sincos): Likewise.
8997         (do_mpfr_bessel_n, do_mpfr_remquo, do_mpfr_lgamma_r): Likewise.
8998
8999         * real.h (real_to_decimal_for_mode): Add prototype.
9000         * real.c (real_to_decimal_for_mode): Renames old real_to_decimal.
9001         Respect target rounding mode when generating decimal representation.
9002         (real_to_decimal): New stub for backwards compatibility.
9003         * c-cppbuiltin.c (builtin_define_with_hex_fp_value): Use
9004         real_to_decimal_for_mode instead of real_to_decimal.
9005
9006         * config/spu/spu.md ("floatdisf2", "floatunsdisf2"): New.
9007
9008 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
9009             Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
9010
9011         * real.c (spu_single_format): New variable.
9012         * real.h (spu_single_format): Declare.
9013
9014         * config/spu/spu.c (spu_override_options): Install SFmode format.
9015         (spu_split_immediate): Use integer mode to operate on pieces of
9016         floating-point values in all cases.
9017
9018         * config/spu/spu.md (UNSPEC_FLOAT_EXTEND, UNSPEC_FLOAT_TRUNCATE): New.
9019         ("extendsfdf2"): Use UNSPEC_FLOAT_EXTEND instead of FLOAT_EXTEND.
9020         ("truncdfsf2"): Use UNSPEC_FLOAT_TRUNCATE instead of FLOAT_TRUNCATE.
9021
9022 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
9023
9024         * config/spu/spu.c (spu_safe_dma): Respect TARGET_SAFE_DMA.
9025
9026 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
9027
9028         * config/spu/spu.h (DWARF_FRAME_RETURN_COLUMN): Define.
9029
9030 2008-08-12  Jakub Jelinek  <jakub@redhat.com>
9031
9032         PR c++/36688
9033         * gimplify.c (gimplify_modify_expr_rhs): Test TREE_READONLY
9034         on the VAR_DECL instead of TYPE_READONLY on its type.
9035
9036 2008-08-12  Ira Rosen  <irar@il.ibm.com>
9037
9038         * tree-vectorizer.c: Depend on langhooks.h.
9039         (supportable_widening_operation): Add two arguments. Support double
9040         type conversions.
9041         (supportable_narrowing_operation): Likewise.
9042         * tree-vectorizer.h (supportable_widening_operation): Add two
9043         arguments.
9044         (supportable_narrowing_operation): Likewise.
9045         * tree-vect-patterns.c (vect_recog_widen_mult_pattern) : Call
9046         supportable_widening_operation with correct arguments.
9047         * tree-vect-transform.c (vectorizable_conversion): Likewise.
9048         (vectorizable_type_demotion): Support double type conversions.
9049         (vectorizable_type_promotion): Likewise.
9050         * Makefile.in (tree-vectorizer.o): Depend on langhooks.h.
9051
9052 2008-08-11  Michael Matz  <matz@suse.de>
9053
9054         * i386/i386.c (override_options): Move initialisation from
9055         flag_schedule_insns_after_reload to here from ...
9056         (optimization_options): ... here.
9057
9058 2008-08-11  Jakub Jelinek  <jakub@redhat.com>
9059
9060         PR rtl-optimization/36998
9061         * dwarf2out.c (compute_barrier_args_size_1,
9062         compute_barrier_args_size): Temporarily remove assertions.
9063
9064 2008-08-10  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9065
9066         PR middle-end/20644
9067         * tree-ssa.c (struct walk_data): Add new flag
9068         warn_possibly_uninitialized.
9069         (warn_uninitialized_var): Use it.
9070         (warn_uninitialized_vars): New.
9071         (execute_early_warn_uninitialized): Call it.
9072         (execute_late_warn_uninitialized): Likewise.
9073
9074 2008-08-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9075
9076         PR middle-end/36238
9077         * reload1.c (gen_reload): Guard calls to get_secondary_mem
9078         for memory subregs.
9079
9080 2008-08-09  Jan Hubicka  <jh@suse.cz>
9081
9082         PR target/37055
9083         * optabs.c (maybe_emit_unop_insn): Remove produced code if
9084         expansion failed.
9085         (expand_fix): Be prepared for expansion to fail.
9086         (expand_sfix_optab): Remove instructions if expansion failed.
9087
9088 2008-08-09  Anatoly Sokolov  <aesok@post.ru>
9089
9090         * config/avr/avr.c (avr_mcu_types): Move the AT43USB320 device to
9091         avr31 architecture.
9092         * config/avr/avr.h (CRT_BINUTILS_SPECS): (Ditto.).
9093         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
9094
9095 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
9096
9097         * config.gcc (mips*-*-linux*, mips64*-*-linux*): Add
9098         mips/t-libgcc-mips16 to tmake_file.
9099         * config/mips/mips-protos.h (mips_call_type): New enum.
9100         (mips_pic_base_register, mips_got_load): Declare.
9101         (mips_restore_gp): Take an rtx argument.
9102         (mips_use_pic_fn_addr_reg_p): Declare.
9103         (mips_expand_call): Replace the sibcall_p argument with
9104         a mips_call_type argument.  Add a lazy_p parameter.
9105         (mips_split_call): Declare.
9106         * config/mips/mips.h (MIPS16_PIC_TEMP_REGNUM): New macro.
9107         (MIPS16_PIC_TEMP): Likewise.
9108         (reg_class): Delete M16_NA_REGS.
9109         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Update accordingly.
9110         (SYMBOL_FLAG_BIND_NOW, SYMBOL_REF_BIND_NOW_P): New macros.
9111         (mips_split_hi_p): Declare.
9112         * config/mips/mips.c (mips_split_hi_p): New array.
9113         (mips_regno_to_class): Change M16_NA_REGS entries to M16_REGS.
9114         (mips_got_symbol_type_p): New function.
9115         (mips_global_symbol_p): Check SYMBOL_REF_EXTERNAL_P.
9116         (mips16_stub_function_p): New function.
9117         (mips16_local_function_p): Likewise.
9118         (mips_use_pic_fn_addr_reg_p): Likewise.
9119         (mips_cannot_force_const_mem): Return false for HIGHs.
9120         Extend CONST_INT and symbolic handling to MIPS16, using
9121         mips_symbol_insns to check that the base symbol type is a
9122         legitimate constant.  Reject GOT-based constants if
9123         TARGET_MIPS16_PCREL_LOADS.
9124         (mips_const_insns): Check targetm.cannot_force_const_mem when
9125         decomposing a symbolic base and a large offset.
9126         (mips_emit_call_insn): Add ORIG_ADDR and ADDR parameters.
9127         When calling a function that needs $25 from MIPS16 code,
9128         move the target address into $25 separately and add a USE
9129         to the call insn.
9130         (mips16_gp_pseudo_reg): Insert the initializer immediately
9131         before the first real insn.
9132         (mips_pic_base_register, mips_got_load): New functions.
9133         (mips_split_symbol): Generalize the name of the LO_SUM_OUT
9134         parameter to LOW_OUT.  Say that it can be any valid SET_SRC
9135         when splitting a load-address operation.  Split SYMBOL_GOT_DISP
9136         constants and highs of SYMBOL_GOT_PAGE_OFST constants.
9137         (mips_call_tls_get_addr): Update the call to mips_expand_call,
9138         also passing NULL_RTX rather than const0_rtx as the aux argument.
9139         (mips_rewrite_small_data_p): Check mips_lo_relocs and mips_split_p
9140         instead of TARGET_EXPLICIT_RELOCS.
9141         (mips_ok_for_lazy_binding_p): Check SYMBOL_REF_BIND_NOW_P.
9142         (mips_load_call_address): Replace the sibcall_p argument with
9143         a mips_call_type argument.  Use mips_got_load.
9144         (mips16_local_alias): New structure.
9145         (mips16_local_aliases): New variable.
9146         (mips16_local_aliases_hash): New function.
9147         (mips16_local_aliases_eq): Likewise.
9148         (mips16_local_alias): Likewise.
9149         (mips16_stub_function): Likewise.
9150         (mips16_build_function_stub): Create a local alias for the target
9151         function.  Handle TARGET_ABICALLS.  For PIC abicalls, emit a
9152         .cpload directive and an R_MIPS_NONE relocation for the target
9153         function, then load the alias rather than the function itself.
9154         Wrap the non-PIC abicalls version in ".option pic0/.option pic2".
9155         (mips16_copy_fpr_return_value): Use mips16_stub_function and
9156         mips_expand_call.  Set SYMBOL_REF_BIND_NOW on the symbol.
9157         (mips16_build_call_stub): Replace the FN parameter with an
9158         FN_PTR parameter.  Force the address into a register if it
9159         isn't a call_insn_operand; don't rely on the caller to do this.
9160         If a call to a locally-defined and locally-binding MIPS16
9161         function must be made indirectly, redirect the call to the
9162         function's local alias.  Use mips16_stub_function_p,
9163         mips16_stub_function, mips_expand_call and use_reg.
9164         Set SYMBOL_FLAG_BIND_NOW on __mips_call_* symbols.
9165         Use explicit %hi and %lo accesses where possible.
9166         Use MIPS_CALL to generate the correct code form of a
9167         jal instruction.  Add clobbers of $18 instead of uses.
9168         Update the call to mips_emit_call_insn.
9169         (mips_expand_call): Replace the SIBCALL_P argument with a
9170         mips_call_type argument and handle the new MIPS_CALL_EPILOGUE value.
9171         Take a LAZY_P parameter.  Call mips16_build_call_stub first,
9172         allowing it to modify the call address.  Update the calls to
9173         mips_load_call_address and mips_emit_call_insn.
9174         (mips_split_call): New function.
9175         (mips_init_relocs): Clear mips_split_hi_p.  Only use %gp_rel if
9176         !TARGET_MIPS16.  Split SYMBOL_GOT_DISP, and the high parts of
9177         SYMBOL_GOT_PAGE_OFST, for MIPS16 code.
9178         (mips_global_pointer): Check mips16_cfun_returns_in_fpr_p.
9179         (mips_extra_live_on_entry): Include MIPS16_PIC_TEMP_REGNUM
9180         if TARGET_MIPS16.
9181         (mips_cprestore_slot): New function.
9182         (mips_restore_gp): Take a TEMP parameter.  Handle TARGET_MIPS16
9183         and use mips_cprestore_slot.
9184         (mips_output_function_prologue): Handle TARGET_MIPS16 for
9185         LOADGP_OLDABI.
9186         (mips_emit_loadgp): Move into MIPS16_PIC_TEMP for MIPS16,
9187         then use a copygp_mips16 instruction to set up $28.
9188         (mips_expand_prologue): Initialize the cprestore slot for MIPS16 too.
9189         (mips16_lay_out_constants): Call split_all_insns_noflow.
9190         (mips_reorg_process_insns): Explicitly set all_noreorder_p to
9191         false if TARGET_MIPS16.
9192         (mips_reorg): Don't call vr4130_align_insns if TARGET_MIPS16.
9193         (mips_output_mi_thunk): Use mips_got_symbol_type_p.  Use the
9194         mips_dangerous_for_la25_p approach for MIPS16 PIC calls too.
9195         (mips_set_mips16_mode): Always set MASK_EXPLICIT_RELOCS for
9196         MIPS16 code.  Allow MIPS16 o32 PIC.
9197         (mips_override_options): Allow MIPS16 o32 PIC.
9198         * config/mips/mips.md: Lower CONST_GP_P moves into register moves
9199         after reload if TARGET_USE_GOT.
9200         (UNSPEC_COPYGP): New constant.
9201         (length): Use a default length of 8 for MIPS16 GOT loads.
9202         (*got_disp<mode>): Check mips_split_p instead of TARGET_XGOT.
9203         (*got_page<mode>): Check mips_split_hi_p.
9204         (*got_disp<mode>, *got_page<mode>): Use mips_got_load.
9205         (unspec_got<mode>, unspec_call<mode>): New expanders.
9206         (load_got<mode>, load_call<mode>): Remove the length attributes.
9207         Use a got attribute instead of a type attribute.
9208         (copygp_mips16): New insn.
9209         (restore_gp): Add a scratch clobber and pass it to mips_restore_gp.
9210         (load_call<mode>): Use a "d" constraint instead of an "r" constraint.
9211         (sibcall, sibcall_value, call, call_value): Update the calls
9212         to mips_expand_call.
9213         (call_internal, call_value_internal): Use mips_split_call.
9214         (call_value_multiple_internal): Likewise.
9215         (call_split): Move after call_internal (the insn it is split from).
9216         (call_internal_direct, call_value_internal_direct): Turn into
9217         define_insn_and_splits.  Split if TARGET_SPLIT_CALLS.
9218         (call_direct_split, call_value_direct_split): New patterns.
9219         * config/mips/constraints.md (c): Handle TARGET_MIPS16 first
9220         and use M16_REGS instead of M16_NA_REGS.
9221         * config/mips/predicates.md (const_call_insn_operand): Replace
9222         the TARGET_ABSOLUTE_ABICALLS-based check with a more general
9223         mips_use_pic_fn_addr_reg_p check.
9224         (move_operand): Reject HIGHs if mips_split_hi_p.
9225         * config/mips/mips16.S: Assembly as empty if the ABI is not suitable.
9226         (__mips16_floatunsisf): Inline __mips16_floatsisf.
9227         (CALL_STUB_NO_RET, CALL_STUB_REG): Copy the target register to $25.
9228         * config/mips/libgcc-mips16.ver: New file.
9229         * config/mips/t-libgcc-mips16 (SHLIB_MAPFILES): Add
9230         $(srcdir)/config/mips/libgcc-mips16.ver.
9231
9232 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
9233
9234         * config/mips/mips.c (mips_unspec_address_offset): Move earlier
9235         in file.
9236         (mips_unspec_address, mips_unspec_offset_high): Likewise.
9237         (mips_ok_for_lazy_binding_p, mips_load_call_address): Likewise.
9238         (mips16_cfun_returns_in_fpr_p): Likewise.
9239
9240 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
9241
9242         * config/mips/mips.h (MASK_RETURN_ADDR): Expand commentary.
9243         * config/mips/linux-unwind.h (mips_fallback_frame_state): Add 2
9244         rather than 4 to PC.
9245
9246 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
9247
9248         * config/mips/mips.h (STATIC_CHAIN_REGNUM): Remap to $15.
9249         (FUNCTION_PROFILER): Save the static chain pointer into $2
9250         beforehand and restore it aftewards.
9251         (TRAMPOLINE_TEMPLATE): Adjust accordingly.  Load the target
9252         address directly into $25 and call the function through $25;
9253         do not clobber $3.  Pad the DImode version to cover the space
9254         left by the deleted $25 <- $3 move.
9255         (TRAMPOLINE_SIZE): Adjust the size of the SImode version after
9256         the removal of the $25 <- $3 move.
9257         (INITIALIZE_TRAMPOLINE): Update offsets accordingly.
9258         * config/mips/sdemtk.h (FUNCTION_PROFILER): As for mips.h.
9259
9260 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
9261             Daniel Jacobowitz  <dan@codesourcery.com>
9262
9263         * config/mips/mips.h (FUNCTION_NAME_ALREADY_DECLARED): Delete.
9264         * config/mips/linux.h (ASM_DECLARE_FUNCTION_NAME): Delete.
9265         (ASM_DECLARE_FUNCTION_SIZE, FUNCTION_NAME_ALREADY_DECLARED): Delete.
9266         * config/mips/mips.c (mips_start_function_definition): New function.
9267         (mips_end_function_definition): Likewise.
9268         (mips_output_function_prologue): Use mips_start_function_definition.
9269         (mips_output_function_epilogue): Use mips_end_function_definition.
9270         (build_mips16_function_stub): Use mips_start_function_definition
9271         and mips_end_function_definition.
9272         (build_mips16_call_stub): Likewise.
9273
9274 2008-08-09  Richard Guenther  <rguenther@suse.de>
9275
9276         * gimple.c (gimple_build_call_1): Deal with FUNCTION_DECL fn.
9277         * gimple.h (gimple_call_fn): Adjust comment.
9278         (gimple_call_set_fndecl): New function.
9279         (gimple_call_fndecl): Adjust for GIMPLE_CALL no
9280         longer having bare FUNCTION_DECL operand.
9281         (gimple_call_return_type): Likewise.
9282         * tree-cfg.c (verify_stmt): Verify function operand of a GIMPLE_CALL.
9283
9284         * value-prof.c (gimple_divmod_fixed_value): Do not emit labels.
9285         (gimple_mod_pow2): Likewise.
9286         (gimple_mod_subtract): Likewise.
9287         (gimple_ic): Likewise.
9288         (gimple_stringop_fixed_value): Likewise.
9289         (gimple_indirect_call_to_profile): Fix for GIMPLE_CALL no
9290         longer having bare FUNCTION_DECL operand.
9291         * ipa-cp.c (ipcp_update_callgraph): Use gimple_call_set_fndecl.
9292         * omp-low.c (optimize_omp_library_calls): Likewise.
9293         * cgraphunit.c (update_call_expr): Likewise.
9294         * tree-ssa-math-opts.c (execute_cse_reciprocals): Likewise.
9295         (execute_convert_to_rsqrt): Likewise.
9296         * cfgexpand.c (gimple_to_tree): Simplify.
9297         (release_stmt_tree): Fix for GIMPLE_CALL no longer having
9298         bare FUNCTION_DECL operand.
9299         * tree-nested.c (init_tmp_var_with_call): Use gimple_call_return_type.
9300         (convert_gimple_call): Use gimple_call_fndecl.
9301         * c-common.c (c_warn_unused_result): Likewise.
9302
9303 2008-08-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9304
9305         PR c/17880
9306         * c-typeck.c (digest_init): Call verify_sequence_points from here.
9307         (c_finish_return): Likewise.
9308         (c_start_case): Likewise.
9309         * c-common.c (warn_for_collisions_1): Use explicit location in warning.
9310         * c-parser.c (c_parser_condition): New. Call
9311         verify_sequence_points.
9312         (c_parser_paren_condition): Call c_parser_condition.
9313         (c_parser_for_statement): Call c_parser_condition.
9314
9315 2008-08-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9316
9317         PR 36901
9318         * diagnostic.def (DK_PEDWARN, DK_PERMERROR): New.
9319         * diagnostic.c (pedantic_warning_kind, permissive_error_kind):
9320         Moved from diagnostic.h
9321         (diagnostic_report_diagnostic): Return bool. Handle DK_PEDWARN and
9322         DK_PERMERROR.
9323         (emit_diagnostic): New.
9324         (warning0, pedwarn0): Delete.
9325         (warning, warning_at, pedwarn, permerror): Return bool.
9326         * diagnostic.h (pedantic_warning_kind, permissive_error_kind):
9327         Moved to diagnostic.c.
9328         (struct diagnostic_context): Use correct type for
9329         classify_diagnostic.
9330         (diagnostic_report_diagnostic): Update declaration.
9331         (emit_diagnostic): Declare.
9332         * errors.c (warning): Return bool.
9333         * errors.h (warning): Update declaration.
9334         * toplev.h (warning0, pedwarn0): Delete.
9335         (warning, warning_at, pedwarn, permerror): Return bool.
9336         * c-errors.c (pedwarn_c99, pedwarn_c90): Use DK_PEDWARN.
9337         * c-decl.c (locate_old_decl): Delete 'diag' argument. Always use
9338         inform. Update all calls.
9339         (diagnose_mismatched_decls): Check return value of warning/pedwarn
9340         before giving informative note.
9341         (implicit_decl_warning): Likewise.
9342         * c-typeck.c (build_function_call): Likewise.
9343         * tree-sssa.c (warn_uninit): Likewise.
9344         * builtins.c (gimplify_va_arg_expr): Likewise.
9345
9346 2008-08-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9347
9348         PR 7651
9349         * doc/invoke.texi (-Wextra): Move warning from here...
9350         (-Wuninitialized): ... to here.
9351
9352 2008-08-08  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9353
9354         PR 28875
9355         * flags.h (set_Wunused): Delete
9356         * toplev.c (process_options): Handle Wunused flags here.
9357         * opts.c (maybe_warn_unused_parameter): Delete.
9358         (common_handle_option): Replace set_Wunused by warn_unused.
9359         (set_Wextra): Do not handle Wunused-parameter here.
9360         (set_Wunused): Delete.
9361         * c-opts.c (c_common_handle_option): Replace set_Wunused by
9362         warn_unused.
9363         * common.opt (Wunused): Add Var and Init.
9364         (Wunused-function): Likewise.
9365         (Wunused-label): Likewise.
9366         (Wunused-parameter): Likewise.
9367         (Wunused-value): Likewise.
9368         (Wunused-variable): Likewise.
9369
9370 2008-08-08  Peter Bergner  <bergner@vnet.ibm.com>
9371
9372         * doc/invoke.texi: Add cpu_type power7.
9373         * config.in (HAVE_AS_VSX): New.
9374         * config.gcc: Add cpu_type power7.
9375         * configure.ac (HAVE_AS_VSX): Check for assembler support of the
9376         VSX instructions.
9377         * configure: Regenerate.
9378         * config/rs6000/rs6000.c (rs6000_override_options): Alias power7 to
9379         power5.
9380         * config/rs6000/rs6000.h (ASM_CPU_POWER7_SPEC): Define.
9381         (ASM_CPU_SPEC): Pass %(asm_cpu_power7) for -mcpu=power7.
9382         (EXTRA_SPECS): Add asm_cpu_power7 spec string.
9383
9384 2008-08-08  Dorit Nuzman  <dorit@il.ibm.com>
9385
9386         * tree-vect-transform.c (vectorizable_conversion): Pass the integral
9387         type to vectorize.builtin_conversion.
9388         (vectorizable_conversion): Likewise.
9389         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Always takes
9390         integral type as input.
9391         * config/rs6000/rs6000.c (rs6000_builtin_conversion): Add case for
9392         FIX_TRUNC_EXPR.
9393         (rs6000_expand_builtin): Add case for ALTIVEC_BUILTIN_VCTUXS
9394         and ALTIVEC_BUILTIN_VCTSXS.
9395         (rs6000_builtin_mul_widen_even. rs6000_builtin_mul_widen_odd): Fix
9396         formatting.
9397
9398 2008-08-08  Richard Guenther  <rguenther@suse.de>
9399
9400         * tree-ssa-ccp.c (likely_value): Calls are not all varying.
9401         (surely_varying_stmt_p): Calls are varying only if they are
9402         non-builtin and not indirect or have no result.
9403         (ccp_fold): Re-instantiate code before the tuples merge.
9404
9405 2008-08-08  Richard Guenther  <rguenther@suse.de>
9406
9407         PR tree-optimization/37056
9408         * gimple.h (gimple_assign_rhs_class): New helper function.
9409         * tree-ssa-loop-niter.c (get_val_for): Fix tuplification, handle
9410         unary operations properly.
9411
9412 2008-08-07  Jan Hubicka  <jh@suse.cz>
9413
9414         * i386.h (ix86_size_cost): Declare.
9415         (ix86_cur_cost): New function macro.
9416         * i386.md (peepholes expanding size and splitters): Predicate by
9417         optimize_insn_for_speed_p.
9418         (peepholes reduce size and splitters): Predicate by
9419         optimize_insn_for_size_p.
9420         * i386.c (ix86_size_cost): Rename from ...
9421         (size_cost): This one.
9422         (override_options): Update.
9423         (decide_alg): Likewise.
9424         (ix86_expand_clear): Use RTL profile.
9425         (ix86_pad_returns): Use RTL profile.
9426
9427 2008-08-07  Jan Hubicka  <jh@suse.cz>
9428
9429         * recog.c (split_all_insns): Set RTL profile
9430         (peephole2_optimize): Likewise.
9431         * function.c (thread_prologue_and_epilogue_insns): Likewise.
9432         * combine.c (combine_instructions): Likewise.
9433
9434 2008-08-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9435
9436         * c-common.c (c_common_reswords): Also warn about keyword "bool".
9437
9438 2008-08-07  Bob Wilson  <bob.wilson@acm.org>
9439
9440         * config/xtensa/xtensa.c (xtensa_copy_incoming_a7): Copy incoming
9441         value in a6 after the set_frame_ptr insn.
9442
9443 2008-08-07  Richard Henderson  <rth@redhat.com>
9444
9445         PR debug/37033
9446         * gcc.c (cpp_options): Pass along -g*.
9447
9448 2008-08-07  Joseph Myers  <joseph@codesourcery.com>
9449
9450         * config/arm/arm.c (output_move_neon): Update comment describing
9451         big-endian vector layout.
9452         (arm_assemble_integer): Do not handle big-endian NEON vectors
9453         specially.
9454         * config/arm/neon.md (vec_set<mode>_internal, vec_extract<mode>,
9455         neon_vget_lane<mode>_sext_internal,
9456         neon_vget_lane<mode>_zext_internal, neon_vget_lane<mode>): Adjust
9457         element indices for big-endian.
9458
9459 2008-08-07  Richard Henderson  <rth@redhat.com>
9460
9461         * configure.ac (HAVE_GAS_CFI_PERSONALITY_DIRECTIVE): New.
9462         * configure, config.in: Rebuild.
9463         * debug.h (dwarf2out_do_cfi_asm): Declare.
9464         * c-cppbuiltin.c (c_cpp_builtins): Use it.
9465         * dwarf2out.c (dwarf2out_do_cfi_asm): New.
9466         (dwarf2out_cfi_label, add_fde_cfi, output_call_frame_info,
9467         dwarf2out_begin_prologue, dwarf2out_end_epilogue): Use it.
9468
9469 2008-08-07  Joseph Myers  <joseph@codesourcery.com>
9470
9471         * config/arm/iwmmxt.md (movv8qi_internal, movv4hi_internal,
9472         movv2si_internal): Combine into mov<mode>_internal.
9473         (movv2si_internal_2): Remove.
9474
9475 2008-08-07  Jan Hubicka  <jh@suse.cz>
9476
9477         PR target/37048
9478         * i386.md (single stringop patterns): Enable unconditionally.
9479
9480 2008-08-07  H.J. Lu  <hongjiu.lu@intel.com>
9481
9482         PR target/36992
9483         * config/i386/emmintrin.h (_mm_move_epi64): Use __builtin_ia32_movq128.
9484
9485         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MOVQ128.
9486         (bdesc_args): Add IX86_BUILTIN_MOVQ128.
9487
9488         * config/i386/sse.md (sse2_movq128): New.
9489
9490         * doc/extend.texi: Document __builtin_ia32_movq128.
9491
9492 2008-08-07  Richard Guenther  <rguenther@suse.de>
9493
9494         PR middle-end/37042
9495         * tree-ssa-alias-warnings.c (nonstandard_alias_p): Ref-all
9496         pointers can access anything.
9497
9498 2008-08-06  Jan Hubicka  <jh@suse.cz>
9499
9500         * optabs.c (emit_unop_insn): Break out to ...
9501         (maybe_emit_unop_insn): ... this one.
9502         (expand_sfix_optab): Use maybe variant.
9503         * optabs.h (maybe_emit_unop_insn): Declare.
9504
9505         * i386.md (mov0 patterns): Enable by default.
9506         (FP conversion expanders): Disable expansion of code expanding
9507         sequences when instruction should be optimized for size.
9508         (single strinop patterns): Enable when optimizing for size.
9509         (string expanders): Disable expanding of code expanding sequences
9510         when optimizning instruction for size.
9511         * i386.c (ix86_expand_vector_move_misalign): Do code size optimization
9512         per BB basis.
9513         (ix86_fp_comparison_sahf_cost): Likewise.
9514         (ix86_expand_branch): Likewise.
9515         (ix86_expand_ashl_const): Likewise.
9516         (ix86_split_ashl): Likewise.
9517         (ix86_expand_strlen): Likewise.
9518         (ix86_emit_fp_unordered_jump): Likewie.
9519
9520 2008-08-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9521
9522         * c-common.c: Fix typo.
9523         (c_common_reswords): Activate more C++ keyword warnings.
9524
9525         * matrix-reorg.c (compute_offset): Avoid C++ keywords.
9526
9527 2008-08-06  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9528
9529         PR 26785
9530         * diagnostic.c (permerror_at): New.
9531         * toplev.h (permerror_at): Declare.
9532
9533 2008-08-06  Victor Kaplansky  <victork@il.ibm.com>
9534             Ira Rosen  <irar@il.ibm.com>
9535
9536         * tree-vect-transform.c (vect_model_simple_cost): Return
9537         immediately if stmt is pure SLP.
9538         (vect_model_store_cost): Ditto.
9539         (vect_model_load_cost): Ditto.
9540         (vectorizable_store): Remove PURE_SLP check before call
9541         to vect_model_store_cost.
9542         (vect_model_store_cost): When checking whether stmt describe
9543         strided access, add a check that it is not slp_node.
9544
9545 2008-08-06  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9546
9547         PR 8715
9548         * c-common.c (warn_for_sign_compare): New. Handle separately the
9549         case that 'constant' is zero.
9550         * c-typeck.c (build_binary_op): Move code to c-common.c
9551
9552 2008-08-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9553
9554         * config/alpha/alpha.c (alpha_preferred_reload_class,
9555         alpha_secondary_reload, alpha_emit_set_const_1, function_value,
9556         alpha_output_mi_thunk_osf): Avoid C++ keywords.
9557         * config/arm/arm.c (output_move_vfp, output_move_neon): Likewise.
9558         * config/arm/arm.md: Likewise.
9559         * config/avr/avr-protos.h (preferred_reload_class,
9560         test_hard_reg_class, avr_simplify_comparison_p,
9561         out_shift_with_cnt, class_max_nregs): Likewise.
9562         * config/avr/avr.c (class_max_nregs, avr_simplify_comparison_p,
9563         output_movqi, output_movhi, output_movsisf, out_shift_with_cnt,
9564         preferred_reload_class, test_hard_reg_class): Likewise.
9565         * config/bfin/bfin.c (legitimize_pic_address, hard_regno_mode_ok,
9566         bfin_memory_move_cost, bfin_secondary_reload,
9567         bfin_output_mi_thunk): Likewise.
9568         * config/crx/crx.c (crx_secondary_reload_class,
9569         crx_memory_move_cost): Likewise.
9570         * config/frv/frv-protos.h (frv_secondary_reload_class,
9571         frv_class_likely_spilled_p, frv_class_max_nregs): Likewise.
9572         * config/frv/frv.c (frv_override_options, frv_alloc_temp_reg,
9573         frv_secondary_reload_class, frv_class_likely_spilled_p,
9574         frv_class_max_nregs): Likewise.
9575         * config/h8300/h8300.c (h8300_classify_operand,
9576         h8300_unary_length, h8300_bitfield_length, h8300_asm_insn_count):
9577         Likewise.
9578         * config/i386/winnt.c (i386_pe_declare_function_type): Likewise.
9579         * config/ia64/ia64.c (ia64_preferred_reload_class,
9580         ia64_secondary_reload_class, ia64_output_mi_thunk): Likewise.
9581         * config/iq2000/iq2000.c (gen_int_relational): Likewise.
9582         * config/m32c/m32c.c (class_can_hold_mode, m32c_output_compare):
9583         Likewise.
9584         * config/m68hc11/m68hc11.c (preferred_reload_class,
9585         m68hc11_memory_move_cost): Likewise.
9586         * config/mcore/mcore.c (mcore_secondary_reload_class,
9587         mcore_reload_class): Likewise.
9588         * config/mips/mips.c (mips_hard_regno_mode_ok_p,
9589         mips_class_max_nregs, mips_cannot_change_mode_class,
9590         mips_preferred_reload_class, mips_secondary_reload_class,
9591         mips_output_mi_thunk): Likewise.
9592         * config/mmix/mmix.c (mmix_preferred_reload_class,
9593         mmix_preferred_output_reload_class, mmix_secondary_reload_class):
9594         Likewise.
9595         * config/mn10300/mn10300.c (mn10300_secondary_reload_class):
9596         Likewise.
9597         * config/pa/pa.c (pa_secondary_reload, pa_combine_instructions,
9598         pa_can_combine_p, pa_cannot_change_mode_class): Likewise.
9599         * config/pa/pa.h (LEGITIMIZE_RELOAD_ADDRESS): Likewise.
9600         * config/rs6000/rs6000.c (paired_expand_vector_init,
9601         rs6000_secondary_reload_class, rs6000_output_mi_thunk,
9602         compare_section_name, rs6000_memory_move_cost): Likewise.
9603         * config/s390/s390.c (s390_emit_compare_and_swap,
9604         s390_preferred_reload_class, s390_secondary_reload,
9605         legitimize_pic_address, legitimize_tls_address,
9606         legitimize_reload_address, s390_expand_cs_hqi, s390_expand_atomic,
9607         s390_class_max_nregs): Likewise.
9608         * config/s390/s390.h (LEGITIMIZE_RELOAD_ADDRESS): Likewise.
9609         * config/s390/s390.md: Likewise.
9610         * config/score/score-protos.h (score_secondary_reload_class,
9611         score_preferred_reload_class): Likewise.
9612         * config/score/score.c (score_preferred_reload_class,
9613         score_secondary_reload_class): Likewise.
9614         * config/score/score3.c (score3_output_mi_thunk,
9615         score3_preferred_reload_class, score3_secondary_reload_class,
9616         score3_hard_regno_mode_ok): Likewise.
9617         * config/score/score3.h (score3_preferred_reload_class,
9618         score3_secondary_reload_class): Likewise.
9619         * config/score/score7.c (score7_output_mi_thunk,
9620         score7_preferred_reload_class, score7_secondary_reload_class,
9621         score7_hard_regno_mode_ok): Likewise.
9622         * config/score/score7.h (score7_preferred_reload_class,
9623         score7_secondary_reload_class): Likewise.
9624         * config/sh/sh.c (prepare_move_operands, output_far_jump,
9625         output_branchy_insn, add_constant, gen_block_redirect,
9626         sh_insn_length_adjustment, sh_cannot_change_mode_class,
9627         sh_output_mi_thunk, replace_n_hard_rtx, sh_secondary_reload): Likewise.
9628         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
9629         * config/stormy16/stormy16.c (xstormy16_output_cbranch_hi,
9630         xstormy16_output_cbranch_si, xstormy16_secondary_reload_class,
9631         xstormy16_preferred_reload_class): Likewise.
9632         * config/xtensa/xtensa.c (xtensa_expand_compare_and_swap,
9633         xtensa_expand_atomic, override_options,
9634         xtensa_preferred_reload_class, xtensa_secondary_reload_class):
9635         Likewise.
9636         * reorg.c (try_merge_delay_insns): Likewise.
9637         * tree.c (merge_dllimport_decl_attributes): Likewise.
9638
9639         * config/frv/frv.c (frv_print_operand): Change isalpha to ISALPHA.
9640
9641 2008-08-06  Michael Matz  <matz@suse.de>
9642
9643         * Makefile.in (write_entries_to_file): Quote words.
9644         * gengtype.c: (read_input_line): Skip over leading white-space.
9645
9646 2008-08-06  Marc Gauthier  <marc@tensilica.com>
9647
9648         * config.gcc: Match more processor names for Xtensa.
9649         * configure.ac: Likewise.
9650         * doc/install.texi (Specific): Likewise.
9651         * configure: Regenerate.
9652
9653 2008-08-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9654
9655         * builtins.c (expand_builtin_profile_func): Avoid C++ keywords.
9656         * calls.c (avoid_likely_spilled_reg): Likewise.
9657         * cfgexpand.c (gimple_assign_rhs_to_tree): Likewise.
9658         * cgraph.c (cgraph_clone_edge, cgraph_clone_node): Likewise.
9659         * config/i386/i386.c (ix86_expand_special_args_builtin,
9660         ix86_secondary_reload): Likewise.
9661         * except.c (struct eh_region, gen_eh_region_catch,
9662         remove_unreachable_regions, duplicate_eh_regions,
9663         assign_filter_values, build_post_landing_pads,
9664         sjlj_find_directly_reachable_regions, remove_eh_handler,
9665         reachable_next_level, foreach_reachable_handler,
9666         can_throw_internal_1, can_throw_external_1,
9667         collect_one_action_chain): Likewise.
9668         * expr.c (expand_expr_real_1, vector_mode_valid_p): Likewise.
9669         * fold-const.c (twoval_comparison_p, eval_subst): Likewise.
9670         * function.c (update_temp_slot_address, instantiate_new_reg,
9671         instantiate_virtual_regs_in_rtx,
9672         instantiate_virtual_regs_in_insn): Likewise.
9673         * gimple.c (extract_ops_from_tree, gimple_seq_copy): Likewise.
9674         * gimplify.c (gimplify_call_expr, gimplify_init_constructor,
9675         gimplify_cleanup_point_expr): Likewise.
9676         * ipa-cp.c (ipcp_lattice_changed): Likewise.
9677         * passes.c (next_pass_1): Likewise.
9678         * print-tree.c (print_node_brief, print_node): Likewise.
9679         * profile.c (branch_prob): Likewise.
9680         * tree-dump.c (dump_register): Likewise.
9681         * tree-eh.c (replace_goto_queue_cond_clause, lower_catch):
9682         Likewise.
9683         * tree-inline.c (remap_ssa_name, remap_type_1, remap_blocks,
9684         copy_statement_list, remap_gimple_op_r, copy_tree_body_r,
9685         copy_edges_for_bb, copy_cfg_body, copy_tree_r,
9686         copy_arguments_for_versioning, copy_static_chain): Likewise.
9687         * tree-into-ssa.c (names_replaced_by, add_to_repl_tbl,
9688         add_new_name_mapping, register_new_name_mapping): Likewise.
9689         * tree-mudflap.c (mf_xform_derefs): Likewise.
9690         * tree-predcom.c (struct chain, dump_chain, replace_ref_with,
9691         get_init_expr, combine_chains): Likewise.
9692         * tree-pretty-print.c (dump_generic_node): Likewise.
9693         * tree-ssa-structalias.c (create_variable_info_for): Likewise.
9694         * tree-vrp.c (simplify_cond_using_ranges): Likewise.
9695         * tree.c (substitute_in_expr, iterative_hash_expr): Likewise.
9696         * value-prof.c (gimple_duplicate_stmt_histograms): Likewise.
9697
9698 2008-08-06  H.J. Lu  <hongjiu.lu@intel.com>
9699
9700         PR middle-end/37010
9701         * calls.c (expand_call): Use the biggest preferred stack
9702         boundary.
9703
9704 2008-08-06  Michael Matz  <matz@suse.de>
9705
9706         PR target/36613
9707         * reload.c (push_reload): Merge in,out,in_reg,out_reg members
9708         for reused reload, instead of overwriting them.
9709
9710 2008-08-06  H.J. Lu  <hongjiu.lu@intel.com>
9711
9712         PR middle-end/37009
9713         * cfgexpand.c (expand_stack_alignment): Check parm_stack_boundary
9714         for incoming stack boundary.
9715
9716         * function.c (assign_parm_find_entry_rtl): Update
9717         parm_stack_boundary.
9718
9719         * function.h (rtl_data): Add parm_stack_boundary.
9720
9721         * config/i386/i386.c (ix86_finalize_stack_realign_flags): Check
9722         parm_stack_boundary for incoming stack boundary.
9723
9724 2008-08-06  Joseph Myers  <joseph@codesourcery.com>
9725
9726         * jump.c (rtx_renumbered_equal_p): Do not call subreg_regno_offset
9727         for unrepresentable subregs or treat them as equal to other regs
9728         or subregs with the same register number.
9729
9730 2008-08-06  Aldy Hernandez  <aldyh@redhat.com>
9731
9732         PR middle-end/35432
9733         * gimplify.c (gimplify_modify_expr): Do not optimize zero-sized types
9734         if want_value.
9735
9736 2008-08-06  Jan Hubicka  <jh@suse.cz>
9737
9738         * predict.c (maybe_hot_frequency_p): When profile is absent, all
9739         frequencies might be hot.
9740
9741 2008-08-06  Andreas Krebbel  <krebbel1@de.ibm.com>
9742
9743         * reload.c (find_reloads): Force constants into literal pool
9744         also if they are wrapped in a SUBREG.
9745
9746 2008-08-06  Maxim Kuvyrkov  <maxim@codesourcery.com>
9747
9748         PR target/35659
9749         * haifa-sched.c (sched_insn_is_legitimate_for_speculation_p): Move ...
9750         * sched-deps.c (sched_insn_is_legitimate_for_speculation_p): ... here.
9751         Don't allow predicated instructions for data speculation.
9752         * sched-int.h (sched_insn_is_legitimate_for_speculation_p): Move
9753         declaration.
9754
9755 2008-08-06  Maxim Kuvyrkov  <maxim@codesourcery.com>
9756
9757         * haifa-sched.c (extend_global): Split to extend_global_data and
9758         extend_region_data.  Update all uses.
9759         (extend_all): Rename to extend_block_data.
9760
9761 2008-08-06  Maxim Kuvyrkov  <maxim@codesourcery.com>
9762
9763         * sched-rgn.c (new_ready): Check if instruction can be
9764         speculatively scheduled before attempting speculation.
9765         (debug_rgn_dependencies): Remove wrongful assert.
9766
9767 2008-08-05  Bob Wilson  <bob.wilson@acm.org>
9768
9769         * config/xtensa/t-xtensa: Remove dependency for gt-xtensa.h.
9770
9771 2008-08-05  Bob Wilson  <bob.wilson@acm.org>
9772
9773         * config/xtensa/xtensa.c (xtensa_va_start): Unshare valist.
9774         (xtensa_gimplify_va_arg_expr): Unshare valist, orig_ndx, ndx, array,
9775         va_size, and type_size.
9776
9777 2008-08-04  Jason Merrill  <jason@redhat.com>
9778
9779         PR c++/37016
9780         * tree-ssa.c (useless_type_conversion_p_1): Call langhook
9781         if TYPE_STRUCTURAL_EQUALITY_P is true for both types.
9782
9783 2008-08-05  Richard Henderson  <rth@redhat.com>
9784
9785         * configure.ac (HAVE_GAS_CFI_DIRECTIVE): Check .cfi_personality.
9786         * configure: Rebuild.
9787
9788 2008-08-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9789
9790         PR tree-opt/37024
9791         * tree-tailcall.c (process_assignment): Use gimple_assign_cast_p
9792         instead of IS_CONVERT_EXPR_CODE_P for seeing if the assignment
9793         is a conversion.
9794
9795 2008-08-05  Richard Henderson  <rth@redhat.com>
9796
9797         * Makefile.in (c-cppbuiltin.o): Depend on debug.h.
9798         * c-cppbuiltin.c (c_cpp_builtins): Define __GCC_HAVE_DWARF2_CFI_ASM.
9799         * doc/cpp.texi (__GCC_HAVE_DWARF2_CFI_ASM): Document it.
9800         * common.opt (fdwarf2-cfi-asm): New.
9801         * configure.ac (HAVE_GAS_CFI_DIRECTIVE): New.
9802         * config.in, configure: Rebuild.
9803         * dwarf2asm.c (dw2_asm_output_data_raw): New.
9804         (dw2_asm_output_data_uleb128_raw, dw2_asm_output_data_sleb128_raw):
9805         New.
9806         (dw2_force_const_mem): Externalize.
9807         * dwarf2asm.h: Update.
9808         * dwarf2out.c (dwarf2out_cfi_label): If flag_dwarf2_cfi_asm, don't
9809         generate a real label.
9810         (output_cfi_directive): New.
9811         (add_fde_cfi): If flag_dwarf2_cfi_asm, use it.
9812         (output_call_frame_info): Do nothing if flag_dwarf2_cfi_asm.
9813         (dwarf2out_begin_prologue): Emit .cfi_startproc, .cfi_personality,
9814         and .cfi_lsda.
9815         (dwarf2out_end_epilogue): Emit .cfi_endproc.
9816         (output_loc_operands_raw, output_loc_sequence_raw): New.
9817         (output_cfa_loc_raw): New.
9818
9819 2008-08-05  Paul Brook  <paul@codesourcery.com>
9820
9821         * doc/invoke.texi: Document new ARM -mfpu= and -mcpu= options.
9822         * config/arm/arm.c (all_fpus): Add vfpv3 and vfpv3-d16.
9823         (fp_model_for_fpu): Add entry for FPUTYPE_VFP3D16.
9824         (arm_file_start): Add FPUTYPE_VFP3D16.  Rename vfp3 to vfpv3.
9825         * config/arm/arm.h (TARGET_VFPD32): Define.
9826         (TARGET_VFP3): Use TARGET_VFPD32.
9827         (fputype): Add FPUTYPE_VFP3D16.
9828         (LAST_VFP_REGNUM): Use TARGET_VFPD32.
9829         * config/arm/constraints.md ("w"): Use TARGET_VFPD32.
9830         * config/arm/arm-cores.def: Add cortex-r4f.
9831         * config/arm/arm-tune.md: Regenerate.
9832
9833 2008-08-05  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
9834
9835         * config/spu_spu_mfcio.h: Wrap in extern "C" if __cplusplus.
9836         Reword some comments throughout the file.
9837
9838         (MFC_MIN_DMA_LIST_ELEMENTS): New define.
9839         (MFC_MAX_DMA_LIST_ELEMENTS): Likewise.
9840         (MFC_MIN_DMA_LIST_SIZE): Redefine in terms of
9841         MFC_MIN_DMA_LIST_ELEMENTS.
9842         (MFC_MAX_DMA_LIST_SIZE): Redefine in terms of
9843         MFC_MAX_DMA_LIST_ELEMENTS.
9844
9845         (MFC_START_ENABLE): Remove PPU-only define.
9846         (MFC_PUTS_CMD, MFC_PUTFS_CMD, MFC_PUTBS_CMD): Likewise.
9847         (MFC_GETS_CMD, MFC_GETFS_CMD, MFC_GETBS_CMD): Likewise.
9848
9849         (MFC_PUTB_CMD, MFC_PUTF_CMD): Reimplement using symbolic constants.
9850         (MFC_PUTL_CMD, MFC_PUTLB_CMD, MFC_PUTLF_CMD): Likewise.
9851         (MFC_PUTR_CMD, MFC_PUTRB_CMD, MFC_PUTRF_CMD): Likewise.
9852         (MFC_PUTRL_CMD, MFC_PUTRLB_CMD, MFC_PUTRLF_CMD): Likewise.
9853         (MFC_GETB_CMD, MFC_GETF_CMD): Likewise.
9854         (MFC_GETL_CMD, MFC_GETLB_CMD, MFC_GETLF_CMD): Likewise.
9855         (MFC_SNDSIGB_CMD, MFC_SNDSIGF_CMD): Likewise.
9856
9857         (MFC_SDCRT_CMD, MFC_SDCRTST_CMD): New defines.
9858         (MFC_SDCRZ_CMD, MFC_SDCRST_CMD, MFC_SDCRF_CMD): Likewise.
9859         (mfc_sdcrt, mfc_sdcrtst): Likewise.
9860         (mfc_sdcrz, mfc_sdcrst, mfc_sdcrf): Likewise.
9861
9862         (spu_read_machine_status): Fix typo.
9863
9864 2008-08-05  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
9865
9866         * config/spu/spu.h (CANNOT_CHANGE_MODE_CLASS): Allow (multi)word-sized
9867         SUBREG of multi-word hard register.
9868         * config/spu/spu.c (valid_subreg): Likewise.
9869         (adjust_operand): Handle SUBREGs of multi-word hard registers.
9870
9871 2008-08-04  Richard Guenther  <rguenther@suse.de>
9872
9873         * tree-ssa-loop-ivopts.c (add_iv_value_candidates): Also add
9874         the candidate with the stripped base if that base is different
9875         from the original base even for offset zero.
9876
9877 2008-08-04  Richard Guenther  <rguenther@suse.de>
9878
9879         PR middle-end/36691
9880         * tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Correctly
9881         check for no_overflow.
9882
9883 2008-08-04  Richard Guenther  <rguenther@suse.de>
9884
9885         * tree-vect-transform.c (vectorizable_call): Fix tuplification.
9886
9887 2008-08-04  Paul Brook  <paul@codesourcery.com>
9888
9889         * cofig/arm/arm.c (thumb_core_reg_alloc_order): New.
9890         (arm_order_regs_for_local_alloc): New function.
9891         * config/arm/arm-protos.h (arm_order_regs_for_local_alloc): Add
9892         prototype.
9893         * config/arm/arm.h (ORDER_REGS_FOR_LOCAL_ALLOC): Define.
9894
9895 2008-08-04  H.J. Lu  <hongjiu.lu@intel.com>
9896
9897         PR target/37012
9898         * config/i386/i386.c (ix86_expand_prologue): Use UNITS_PER_WORD
9899         instead of STACK_BOUNDARY / BITS_PER_UNIT to align stack.
9900         (ix86_expand_epilogue): Likewise.
9901
9902 2008-08-04  H.J. Lu  <hongjiu.lu@intel.com>
9903
9904         * config/i386/i386.c (ix86_compute_frame_layout): Fix a typo
9905         in comments.
9906
9907 2008-08-03  Uros Bizjak  <ubizjak@gmail.com>
9908
9909         * config/i386/mmx.md (*mov<mode>_internal_rex64): Use Yi instead of x
9910         to avoid inter-unit moves for !TARGET_INTER_UNIT_MOVES.
9911         (*movv2sf_internal_rex64): Ditto.
9912
9913 2008-08-03  Jan Hubicka  <jh@suse.cz>
9914
9915         * optabs.c (expand_binop, expand_builtin_pow, expand_builtin_powi,
9916         expand_builtin_strcat): Upse optimize_insn_for_speed predicate.
9917         * expmed.c (expand_smod_pow2): Likewise.
9918
9919 2008-08-03  Uros Bizjak  <ubizjak@gmail.com>
9920
9921         PR target/36992
9922         * config/i386/sse.md (vec_concatv2di): Add Y2 constraint to
9923         alternative 0 of operand 1.
9924         (*vec_concatv2di_rex64_sse): Ditto.
9925         (*vec_concatv2di_rex64_sse4_1): Add x constraint to alternative 0
9926         of operand 1.
9927         (*sse2_storeq_rex64): Penalize allocation of "r" registers.
9928         * config/i386/mmx.md (*mov<mode>_internal_rex64): Penalize allocation
9929         of "Y2" registers to avoid SSE <-> MMX conversions for DImode moves.
9930         (*movv2sf_internal_rex64): Ditto.
9931
9932 2008-08-02  Richard Guenther  <rguenther@suse.de>
9933
9934         PR target/35252
9935         * config/i386/sse.md (SSEMODE4S, SSEMODE2D): New mode iterators.
9936         (ssedoublesizemode): New mode attribute.
9937         (sse_shufps): Call gen_sse_shufps_v4sf.
9938         (sse_shufps_1): Macroize.
9939         (sse2_shufpd): Call gen_Sse_shufpd_v2df.
9940         (sse2_shufpd_1): Macroize.
9941         (vec_extract_odd, vec_extract_even): New expanders.
9942         (vec_interleave_highv4sf, vec_interleave_lowv4sf,
9943         vec_interleave_highv2df, vec_interleave_lowv2df): Likewise.
9944         * i386.c (ix86_expand_vector_init_one_nonzero): Call
9945         gen_sse_shufps_v4sf instead of gen_sse_shufps_1.
9946         (ix86_expand_vector_set): Likewise.
9947         (ix86_expand_reduc_v4sf): Likewise.
9948
9949 2008-08-01  Doug Kwan  <dougkwan@google.com>
9950
9951         * matrix-reorg.c: Re-enable all code.
9952         (struct malloc_call_data): Change CALL_STMT to gimple type.
9953         (collect_data_for_malloc_call): Tuplify.
9954         (struct access_site_info): Change STMT to gimple type.
9955         (struct matrix_info): Change MIN_INDIRECT_LEVEL_ESCAPE_STMT,
9956         and MALLOC_FOR_LEVEL to gimple and gimple pointer type.
9957         (struct free_info): Change STMT to gimple type.
9958         (struct matrix_access_phi_node):  Change PHI to gimple type.
9959         (get_inner_of_cast_expr): Remove.
9960         (may_flatten_matrices_1): Tuplify.
9961         (may_flatten_matrices): Ditto.
9962         (mark_min_matrix_escape_level): Ditto.
9963         (ssa_accessed_in_tree): Refactor statement RHS related code into ...
9964         (ssa_accessed_in_call_rhs): New
9965         (ssa_accessed_in_assign_rhs): New
9966         (record_access_alloc_site_info): Tuplify.
9967         (add_allocation_site): Ditto.
9968         (analyze_matrix_allocation_site): Ditto.
9969         (analyze_transpose): Ditto.
9970         (get_index_from_offset): Ditto.
9971         (update_type_size): Ditto.
9972         (analyze_accesses_for_call_expr): Tuplify and renamed into ...
9973         (analyze_accesses_for_call_stmt): New. Also handle LHS of a call.
9974         (analyze_accesses_for_phi_node): Tuplify.
9975         (analyze_accesses_for_modify_stmt): Tuplify and renamed into ...
9976         (analyze_accesses_for_assign_stmt): Remove code for handling call LHS.
9977         (analyze_matrix_accesses): Tuplify.
9978         (check_var_data): New call-back type for check_var_notmodified_p.
9979         (check_var_notmodified_p): Tuplify and use call-back struct to
9980         return statement found.
9981         (can_calculate_expr_before_stmt): Factor out statement related code
9982         into ...
9983         (can_calculate_stmt_before_stmt): New.
9984         (check_allocation_function): Tuplify.
9985         (find_sites_in_func): Ditto.
9986         (record_all_accesses_in_func): Ditto.
9987         (transform_access_sites): Ditto.
9988         (transform_allocation_sites): Ditto.
9989         (matrix_reorg): Re-enable.
9990         (gate_matrix_reorg): Re-enable.
9991
9992 2008-08-01  Jakub Jelinek  <jakub@redhat.com>
9993
9994         * dwarf2out.c (compute_barrier_args_size): Set barrier_args_size
9995         for labels for which it hasn't been set yet.  If it has been set,
9996         stop walking insns and continue with next worklist item.
9997         (dwarf2out_stack_adjust): Don't call compute_barrier_args_size
9998         if the only BARRIER is at the very end of a function.
9999
10000 2008-08-01  H.J. Lu  <hongjiu.lu@intel.com>
10001
10002         * cfgexpand.c (expand_stack_alignment): Assert that
10003         stack_realign_drap and drap_rtx must match.
10004
10005         * function.c (instantiate_new_reg): If DRAP is used to realign
10006         stack, replace virtual_incoming_args_rtx with internal arg
10007         pointer.
10008
10009 2008-08-01  Richard Guenther  <rguenther@suse.de>
10010
10011         * tree-ssa-pre.c (fini_pre): Take in_fre parameter.  Free
10012         loop information only if we initialized it.
10013         (execute_pre): Call fini_pre with in_fre.
10014         * tree-ssa-loop-ivcanon (try_unroll_loop_completely): Dump
10015         if we do not unroll because we hit max-completely-peeled-insns.
10016         Use our estimation for consistency, do allow shrinking.
10017
10018 2008-08-01  H.J. Lu  <hongjiu.lu@intel.com>
10019
10020         * config/i386/i386.c (override_options): Replace ABI_STACK_BOUNDARY
10021         with MIN_STACK_BOUNDARY.
10022         (ix86_update_stack_boundary): Likewise.
10023         (ix86_expand_prologue): Assert MIN_STACK_BOUNDARY instead of
10024         STACK_BOUNDARY.
10025
10026         * config/i386/i386.h (ABI_STACK_BOUNDARY): Renamed to ...
10027         (MIN_STACK_BOUNDARY): This.
10028
10029 2008-08-01  Richard Guenther  <rguenther@suse.de>
10030
10031         PR middle-end/36997
10032         * gimplify.c (gimplify_call_expr): Set error_mark_node on GS_ERROR.
10033
10034 2008-08-01  Richard Guenther  <rguenther@suse.de>
10035
10036         PR tree-optimization/36988
10037         * tree-ssa-ccp.c (ccp_fold): Conversions of constants only
10038         do not matter if that doesn't change volatile qualification.
10039
10040 2008-08-01  Paolo Bonzini  <bonzini@gnu.org>
10041
10042         * configure.ac: Do not generate libada-mk.  Do not subst
10043         host_cc_for_libada.
10044         * libada-mk.in: Remove.
10045         * Makefile.in: Pass TARGET_LIBGCC2_CFLAGS to libgcc.mvars.
10046         * configure: Regenerate.
10047
10048 2008-08-01  Basile Starynkevitch  <basile@starynkevitch.net>
10049
10050         * tree-pass.h: Added comment about not dumping passes with name
10051         starting with star in struct opt_pass.
10052         * passes.c (register_dump_files_1): Don't do dump for a pass with
10053         name starting with star.
10054         * doc/passes.texi (Pass manager): Mention pass names and special
10055         meaning of star prefix to avoid dump.
10056
10057 2008-07-31  Adam Nemet  <anemet@caviumnetworks.com>
10058
10059         * config.gcc (mipsisa64r2*-*-linux*): New configuration.  Set ISA
10060         to MIPS64r2.
10061         * config/mips/mips.h (GENERATE_MIPS16E): Update comment.
10062         (ISA_MIPS64R2): New macro.
10063         (TARGET_CPU_CPP_BUILTINS, MULTILIB_ISA_DEFAULT): Handle it.
10064         (ISA_HAS_64BIT_REGS, ISA_HAS_MUL3, ISA_HAS_FP_CONDMOVE,
10065         ISA_HAS_8CC, ISA_HAS_FP4, ISA_HAS_PAIRED_SINGLE,
10066         ISA_HAS_MADD_MSUB, ISA_HAS_NMADD4_NMSUB4, ISA_HAS_CLZ_CLO,
10067         ISA_HAS_ROR, ISA_HAS_PREFETCH, ISA_HAS_PREFETCHX, ISA_HAS_SEB_SEH,
10068         ISA_HAS_EXT_INS, ISA_HAS_MXHC1, ISA_HAS_HILO_INTERLOCKS,
10069         ISA_HAS_SYNCI, MIN_FPRS_PER_FMT): Return true for ISA_MIPS64R2.
10070         (MIPS_ISA_LEVEL_SPEC, ASM_SPEC, LINK_SPEC): Handle -mips64r2.
10071         (TARGET_LOONGSON_2E, TARGET_LOONGSON_2F, TARGET_LOONGSON_2EF):
10072         Move up to keep list alphabetically sorted.
10073         (TUNE_20KC, TUNE_24K, TUNE_74K, TUNE_LOONGSON_2EF): Likewise.
10074         * config/mips/mips.c (mips_cpu_info_table): Add default MIPS64r2
10075         processor.
10076         * doc/invoke.texi (MIPS Options): Add -mips64r2.
10077         (-march=@var{arch}): Add mips64r2.
10078
10079 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
10080
10081         * config/i386/darwin.h (MAIN_STACK_BOUNDARY): Define to 128.
10082
10083 2008-07-31  Steve Ellcey  <sje@cup.hp.com>
10084
10085         * expr.c (expand_assignment): Check for complete type.
10086
10087 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
10088
10089         PR debug/36977
10090         * cfgexpand.c (expand_stack_alignment): Set stack_realign_tried.
10091
10092         * dwarf2out.c (based_loc_descr): Check crtl->stack_realign_tried
10093         for stack alignment.
10094
10095         * function.h (rtl_data): Add stack_realign_tried.  Update comments.
10096
10097 2008-07-31  Kaz Kojima  <kkojima@gcc.gnu.org>
10098
10099         * config/sh/sh.c (sh_canonical_va_list_type): Remove.
10100         (TARGET_CANONICAL_VA_LIST_TYPE): Remove.
10101
10102 2008-07-31  Jakub Jelinek  <jakub@redhat.com>
10103
10104         PR rtl-optimization/36419
10105         * dwarf2out.c (barrier_args_size): New variable.
10106         (compute_barrier_args_size, compute_barrier_args_size_1): New
10107         functions.
10108         (dwarf2out_stack_adjust): For BARRIERs call compute_barrier_args_size
10109         if not called yet in the current function, use barrier_args_size
10110         array to find the new args_size value.
10111         (dwarf2out_frame_debug): Free and clear barrier_args_size.
10112
10113 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
10114
10115         PR debug/36980
10116         * dwarf2out.c (dwarf2out_frame_debug_expr): Move rule 17 before
10117         rule 19.
10118
10119 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
10120
10121         PR debug/36976
10122         * dwarf2out.c (dwarf2out_args_size_adjust): New.
10123         (dwarf2out_stack_adjust): Use it.
10124         (dwarf2out_frame_debug_expr): Likewise.
10125
10126 2008-07-31  Richard Guenther  <rguenther@suse.de>
10127
10128         PR tree-optimization/36978
10129         * tree-ssa-loop-unswitch.c (tree_may_unswitch_on): Do not fold
10130         the generated condition.
10131
10132 2008-07-31  Richard Guenther  <rguenther@suse.de>
10133
10134         * passes.c (init_optimization_passes): Always call
10135         pass_early_warn_uninitialized.
10136         * opts.c (decode_options): Do not warn about -Wuninitialized at -O0.
10137         * doc/invoke.texi (-Wuninitialized): Correct for enabling at -O0.
10138         * doc/passes.texi (Warn for uninitialized variables): Adjust.
10139
10140 2008-07-31  Jakub Jelinek  <jakub@redhat.com>
10141
10142         PR c/36970
10143         * builtins.c (maybe_emit_free_warning): New function.
10144         (expand_builtin): Process BUILT_IN_FREE even at -O0.  Call
10145         maybe_emit_free_warning for BUILT_IN_FREE.
10146
10147         PR debug/36278
10148         * dwarf2out.c (get_context_die): New function.
10149         (force_decl_die, force_type_die): Use it.
10150         (dwarf2out_imported_module_or_decl): Likewise.  If base_type_die
10151         returns NULL, force generation of DW_TAG_typedef and put that into
10152         DW_AT_import.
10153
10154         PR preprocessor/36649
10155         * c-pch.c (c_common_read_pch): Save and restore
10156         line_table->trace_includes across PCH restore.
10157
10158 2008-07-30  Eric Botcazou  <ebotcazou@adacore.com>
10159
10160         PR ada/36554
10161         * dwarf2out.c (is_subrange_type): Deal with BOOLEAN_TYPE.
10162
10163 2008-07-30  Rafael Ávila de Espíndola  <espindola@google.com>
10164
10165         PR 36974
10166         * final.c (call_from_call_insn): Handle COND_EXEC.
10167
10168 2008-07-30  H.J. Lu  <hongjiu.lu@intel.com>
10169
10170         * builtins.c (std_gimplify_va_arg_expr): Replace
10171         PREFERRED_STACK_BOUNDARY with MAX_SUPPORTED_STACK_ALIGNMENT.
10172         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
10173
10174 2008-07-30  Joey Ye  <joey.ye@intel.com>
10175             H.J. Lu  <hongjiu.lu@intel.com>
10176
10177         * builtins.c (expand_builtin_setjmp_receiver): Replace
10178         virtual_incoming_args_rtx with crtl->args.internal_arg_pointer.
10179         (expand_builtin_apply_args_1): Likewise.
10180         (expand_builtin_longjmp): Need DRAP for stack alignment.
10181         (expand_builtin_apply): Likewise.
10182
10183         * caller-save.c (setup_save_areas): Call assign_stack_local_1
10184         instead of assign_stack_local to allow alignment reduction.
10185
10186         * calls.c (emit_call_1): Need DRAP for stack alignment if
10187         return pops.
10188         (expand_call): Replace virtual_incoming_args_rtx with
10189         crtl->args.internal_arg_pointer.
10190         * stmt.c (expand_nl_goto_receiver): Likewise.
10191
10192         * cfgexpand.c (get_decl_align_unit): Estimate stack variable
10193         alignment and store to stack_alignment_estimated and
10194         max_used_stack_slot_alignment.
10195         (expand_one_var): Likewise.
10196         (expand_stack_alignment): New function.
10197         (tree_expand_cfg): Initialize max_used_stack_slot_alignment
10198         and stack_alignment_estimated fields in rtl_data.  Call
10199         expand_stack_alignment at end.
10200
10201         * defaults.h (INCOMING_STACK_BOUNDARY): New.
10202         (MAX_STACK_ALIGNMENT): Likewise.
10203         (MAX_SUPPORTED_STACK_ALIGNMENT): Likewise.
10204         (SUPPORTS_STACK_ALIGNMENT): Likewise.
10205
10206         * emit-rtl.c (gen_reg_rtx): Estimate stack alignment for
10207         stack alignment when generating virtual registers.
10208
10209         * function.c (assign_stack_local): Renamed to ...
10210         (assign_stack_local_1): This.  Add a parameter to indicate
10211         if it is OK to reduce alignment.
10212         (assign_stack_local): Use it.
10213         (instantiate_new_reg): Instantiate virtual incoming args rtx
10214         to vDRAP if stack realignment and DRAP is needed.
10215         (assign_parms): Collect parameter/return type alignment and
10216         contribute to stack_alignment_estimated.
10217         (locate_and_pad_parm): Likewise.
10218         (get_arg_pointer_save_area): Replace virtual_incoming_args_rtx
10219         with crtl->args.internal_arg_pointer.
10220
10221         * function.h (rtl_data): Add new field drap_reg,
10222         max_used_stack_slot_alignment, stack_alignment_estimated,
10223         stack_realign_needed, need_drap, stack_realign_processed and
10224         stack_realign_finalized.
10225         (stack_realign_fp): New macro.
10226         (stack_realign_drap): Likewise.
10227
10228         * global.c (compute_regsets): Frame pointer is needed when
10229         stack is realigned.  Can eliminate frame pointer when stack is
10230         realigned and dynamic realigned argument pointer isn't used.
10231
10232         * reload1.c (update_eliminables):  Frame pointer is needed
10233         when stack is realigned.
10234         (init_elim_table): Can eliminate frame pointer when stack is
10235         realigned and dynamic realigned argument pointer isn't used.
10236
10237         * rtl.h (assign_stack_local_1): Declare new funtion.
10238
10239         * target-def.h (TARGET_UPDATE_STACK_BOUNDARY): New.
10240         (TARGET_GET_DRAP_RTX): Likewise.
10241         (TARGET_CALLS): Add TARGET_UPDATE_STACK_BOUNDARY and
10242         TARGET_GET_DRAP_RTX.
10243
10244         * target.h (gcc_target): Add update_stack_boundary and get_drap_rtx.
10245
10246         * tree-vectorizer.c (vect_can_force_dr_alignment_p): Replace
10247         STACK_BOUNDARY with MAX_STACK_ALIGNMENT.
10248
10249 2008-07-30  Xuepeng Guo  <xuepeng.guo@intel.com>
10250             H.J. Lu  <hongjiu.lu@intel.com>
10251
10252         * dwarf2out.c (dw_fde_struct): Add stack_realignment, drap_reg,
10253         vdrap_reg, stack_realign and drap_reg_saved.
10254         (add_cfi): Don't allow redefining CFA when DRAP is used.
10255         (reg_save): Handle stack alignment.
10256         (dwarf2out_frame_debug_expr): Add rules 16-20 to handle stack
10257         alignment.  Don't generate DWARF information for (set fp sp)
10258         when DRAP is used.
10259         (dwarf2out_begin_prologue): Initialize drap_reg and vdrap_reg
10260         to INVALID_REGNUM.
10261         (int_loc_descriptor): Move prototype forward.  Also define if
10262         DWARF2_UNWIND_INFO is true.
10263         (output_cfa_loc): Handle DW_CFA_expression.
10264         (build_cfa_aligned_loc): New.
10265         (based_loc_descr): Update assert for stack realign.  For local
10266         variables, use sp+offset when stack is aligned without drap and
10267         fp+offset when stack is aligned with drap.  For arguments, use
10268         cfa+offset when drap is used to align stack.
10269
10270 2008-07-30  Joey Ye  <joey.ye@intel.com>
10271             H.J. Lu  <hongjiu.lu@intel.com>
10272
10273         * config/i386/i386.c (ix86_force_align_arg_pointer_string):
10274         Break long line.
10275         (ix86_gen_andsp): New.
10276         (ix86_user_incoming_stack_boundary): Likewise.
10277         (ix86_default_incoming_stack_boundary): Likewise.
10278         (ix86_incoming_stack_boundary): Likewise.
10279         (ix86_can_eliminate): Likewise.
10280         (find_drap_reg): Likewise.
10281         (ix86_update_stack_boundary): Likewise.
10282         (ix86_get_drap_rtx): Likewise.
10283         (ix86_finalize_stack_realign_flags): Likewise.
10284         (TARGET_UPDATE_STACK_BOUNDARY): Likewise.
10285         (TARGET_GET_DRAP_RTX): Likewise.
10286         (override_options): Overide option value for new options.
10287         (ix86_function_ok_for_sibcall): Remove check for
10288         force_align_arg_pointer.
10289         (ix86_handle_cconv_attribute): Likewise.
10290         (ix86_function_regparm): Likewise.
10291         (setup_incoming_varargs_64): Don't set stack_alignment_needed here.
10292         (ix86_va_start): Replace virtual_incoming_args_rtx with
10293         crtl->args.internal_arg_pointer.
10294         (ix86_select_alt_pic_regnum): Check DRAP register.
10295         (ix86_save_reg): Replace force_align_arg_pointer with drap_reg.
10296         (ix86_compute_frame_layout): Compute frame layout wrt stack
10297         realignment.
10298         (ix86_internal_arg_pointer): Just return virtual_incoming_args_rtx.
10299         (ix86_expand_prologue): Decide if stack realignment is needed
10300         and generate prologue code accordingly.
10301         (ix86_expand_epilogue): Generate epilogue code wrt stack
10302         realignment is really needed or not.
10303
10304         * config/i386/i386.h (MAIN_STACK_BOUNDARY): New.
10305         (ABI_STACK_BOUNDARY): Likewise.
10306         (PREFERRED_STACK_BOUNDARY_DEFAULT): Likewise.
10307         (STACK_REALIGN_DEFAULT): Likewise.
10308         (INCOMING_STACK_BOUNDARY): Likewise.
10309         (MAX_STACK_ALIGNMENT): Likewise.
10310         (ix86_incoming_stack_boundary): Likewise.
10311         (FORCE_PREFERRED_STACK_BOUNDARY_IN_MAIN): Removed.
10312         (REAL_PIC_OFFSET_TABLE_REGNUM): Updated to use BX_REG.
10313         (CAN_ELIMINATE): Defined with ix86_can_eliminate.
10314         (machine_function): Remove force_align_arg_pointer.
10315
10316         * config/i386/i386.md (BX_REG): New.
10317         (R13_REG): Likewise.
10318
10319         * config/i386/i386.opt (mforce_drap): New.
10320         (mincoming-stack-boundary): Likewise.
10321         (mstackrealign): Add Init(-1).
10322
10323         * config/i386/i386-protos.h (ix86_can_eliminate): New
10324
10325 2008-07-30  H.J. Lu  <hongjiu.lu@intel.com>
10326
10327         * doc/extend.texi: Update force_align_arg_pointer.
10328
10329         * doc/invoke.texi: Document -mincoming-stack-boundary.  Update
10330         -mstackrealign.
10331
10332         * doc/tm.texi (MAX_STACK_ALIGNMENT): Add macro.
10333         (INCOMING_STACK_BOUNDARY): Likewise.
10334         (TARGET_UPDATE_STACK_BOUNDARY): New target hook.
10335         (TARGET_GET_DRAP_RTX): Likewise.
10336
10337 2008-07-30  Andreas Schwab  <schwab@suse.de>
10338
10339         PR rtl-optimization/36929
10340         * dse.c (replace_inc_dec): Use emit_insn_before instead of
10341         add_insn_before and fix argument order.
10342         (replace_inc_dec_mem): Handle NULL rtx.
10343
10344 2008-07-30  Andrew Jenner  <andrew@codesourcery.com>
10345
10346         * config/arm/arm.c (arm_compute_static_chain_stack_bytes): New
10347         function.
10348         (arm_compute_initial_elimination_offset): Use it.
10349         (arm_compute_save_reg_mask): Include static chain save slot when
10350         calculating alignment.
10351         (arm_get_frame_offsets): Ditto.
10352         (thumb1_compute_save_reg_mask): Ensure we have a low register saved
10353         that we can use to decrement the stack when the stack decrement
10354         could be too big for an immediate value in a single insn.
10355         (thumb1_expand_prologue): Avoid using r12 for stack decrement.
10356
10357 2008-07-30  Richard Guenther  <rguenther@suse.de>
10358
10359         PR tree-optimization/36967
10360         * tree-predcom.c (remove_stmt): Use gimple_assign_ssa_name_copy_p.
10361         Release defs of statements we remove.
10362
10363 2008-07-30  Nathan Froyd  <froydnj@codesourcery.com>
10364
10365         * config/arm/arm.c (arm_expand_prologue): Use 0-length rtvec
10366         instead of NULL_RTVEC.
10367
10368 2008-07-30  Nathan Froyd  <froydnj@codesourcery.com>
10369
10370         PR target/35866
10371
10372         * config/rs6000/rs6000.h (SLOW_UNALIGNED_ACCESS): Add clause for
10373         vector modes.
10374
10375 2008-07-30  Rafael Ávila de Espíndola  <espindola@google.com>
10376
10377         * final.c (call_from_call_insn): New.
10378         (final_scan_insn): Call assemble_external on FUNCTION_DECLs.
10379
10380 2008-07-30  Paolo Bonzini  <bonzini@gnu.org>
10381
10382         * configure.ac: Substitute ADA_CFLAGS.
10383         * configure: Regenerate.
10384         * config.host: Remove mention of pa/x-ada and pa/x-ada-hpux10 files.
10385         * Makefile.in: Remove mention of X_* variables.
10386         * config/pa/x-ada-hpux10: Remove.
10387         * config/pa/x-ada: Remove.
10388
10389         * doc/fragments.texi: Update.
10390
10391 2008-07-30  Olivier Hainque  <hainque@adacore.com>
10392
10393         * config/mips/irix-crti.asm: .hide __gcc_init and __gcc_fini.
10394         * config/mips/iris6.h (IRIX_SUBTARGET_LINK_SPEC, irix ld): Hide
10395         __dso_handle explicitly here.
10396
10397 2008-07-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10398
10399         PR 34389
10400         * c-typeck.c (build_binary_op): Encapsulate code into...
10401         * c-common.c (shorten_binary_op): ...this new function.
10402         (conversion_warning): Use the new function. Handle non-negative
10403         constant in bitwise-and.
10404         * c-common.h (shorten_binary_op): Declare.
10405
10406 2008-07-30  Olivier Hainque  <hainque@adacore.com>
10407
10408         * scan.c (make_sstring_space): Add explicit conversions of
10409         allocator's return value.
10410         * fix-header.c (recognized_function): Likewise.
10411
10412 2008-07-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
10413
10414         * doc/cpp.texi: Update to GFDL 1.2.
10415         * doc/gcc.texi: Do not list GPL as Invariant Section.
10416         * doc/gccint.texi: Likewise.  Update copyright years.
10417         * doc/install.texi: Update copyright years.
10418
10419 2008-07-30  Alan Modra  <amodra@bigpond.net.au>
10420
10421         PR target/36955
10422         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Add
10423         a use of pic_offset_table_rtx for -msecure-plt __tls_get_addr calls.
10424
10425 2008-07-29  Jan Hubicka  <jh@suse.cz>
10426
10427         * c-decl.c (merge_decls): Do not handle DECL_INLINE.
10428         (grokdeclarator): Likewise.
10429         * langhooks.c (lhd_warn_unused_global_decl): Use
10430         DECL_DECLARED_INLINE_P.
10431         * print-tree.c (print_node): Remove DECL_INLINE check.
10432
10433 2008-07-29  Richard Guenther  <rguenther@suse.de>
10434
10435         PR tree-optimization/36945
10436         * tree-ssa-sccvn.h (copy_reference_ops_from_ref): Declare.
10437         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Export.
10438         Record invariant addresses un-decomposed.
10439         (copy_reference_ops_from_call): Record reference call
10440         arguments properly.  Simplify.
10441         * tree-ssa-pre.c (create_component_ref_by_pieces_1): New
10442         helper split out from ...
10443         (create_component_ref_by_pieces): ... here.  Simplify.
10444         Prepare for recursive invocation for call arguments.
10445         (create_expression_by_pieces): Adjust call to
10446         create_component_ref_by_pieces.
10447         (compute_avail): Process operand 2 of reference ops.
10448
10449 2008-07-29  Richard Guenther  <rguenther@suse.de>
10450
10451         * gimplify.c (gimplify_expr): Clear TREE_SIDE_EFFECTS for OBJ_TYPE_REF.
10452
10453 2008-07-29  Jakub Jelinek  <jakub@redhat.com>
10454
10455         * c-format.c (check_format_types): Revert unwanted checkin.
10456
10457 2008-07-29  Jan Hubicka  <jh@suse.cz>
10458
10459         * flags.h (flag_really_no_inline): Remove.
10460         * cgraph.c (cgraph_function_possibly_inlined_p): Simplify.
10461         * toplev.c (flag_really_no_inline): Remove.
10462         * c-cppbuiltin.c (c_cpp_builtins): Use flag_no_inline.
10463         * ipa-inline.c (cgraph_decide_inlining): Do not check flag_no_inline.
10464         (cgraph_decide_inlining_incrementally): Likewise.
10465         (compute_inline_parameters): Likewise.
10466         * opts.c (decode_options): Simplify.
10467         * c-opts.c (c_common_post_options): Do not set flag_no_inline.
10468         * common.opt (finline): Initialize to 1.
10469         * tree-inline.c (inlinable_function_p): Check flag_no_inline.
10470
10471 2008-07-29  Jan Hubicka  <jh@suse.cz>
10472
10473         * predict.c (always_optimize_for_size_p): New function.
10474         (optimize_bb_for_size_p, optimize_bb_for_speed_p,
10475         optimize_edge_for_size_p, optimize_edge_for_speed_p,
10476         optimize_insn_for_size_p, optimize_insn_for_speed_p): New global
10477         functions.
10478         (rtl_profile_for_bb, rtl_profile_for_edge, rtl_default_profile): New.
10479         * function.c (prepare_function_start): Set default profile.
10480         * function.h (rtl_data): Add maybe_hot_insn_p.
10481         * cfgexpand.c (expand_gimple_basic_block): Set RTL profile.
10482         (construct_exit_block): Likewise.
10483         (tree_expand_cfg): Likewise.
10484         * basic-block.h
10485         (optimize_bb_for_size_p, optimize_bb_for_speed_p,
10486         optimize_edge_for_size_p, optimize_edge_for_speed_p,
10487         optimize_insn_for_size_p, optimize_insn_for_speed_p): Declare.
10488         (rtl_profile_for_bb, rtl_profile_for_edge, default_rtl_profile):
10489         Declare.
10490
10491 2008-07-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10492
10493         PR 34985
10494         * c-decl.c (merge_decls): Merge USED flags.
10495
10496 2008-07-29  Kaz Kojima  <kkojima@gcc.gnu.org>
10497
10498         * config/sh/sh.c (sh_gimplify_va_arg_expr): Unshare the addr,
10499         valist, next_fp, next_fp_tmp, next_fp_limit, next_o, next_o_limit,
10500         next_stack, lab_false and lab_over trees.
10501
10502 2008-07-28  Richard Guenther  <rguenther@suse.de>
10503
10504         PR tree-optimization/36957
10505         * tree-flow.h (tree_ssa_useless_type_conversion): Remove.
10506         (useless_type_conversion_p): Remove.
10507         (types_compatible_p): Remove.
10508         * gimple.h (tree_ssa_useless_type_conversion): Declare.
10509         (useless_type_conversion_p): Declare.
10510         (types_compatible_p): Declare.
10511         (gimple_expr_type): Return the base type only if it is
10512         trivially convertible to the subtype.
10513
10514 2008-07-28  Andreas Tobler  <a.tobler@schweiz.org>
10515
10516         * configure.ac: Use the m4_do macro to concatenate the warnings into
10517         one string in ACX_PROG_CC_WARNING_OPTS,
10518         ACX_PROG_CC_WARNING_ALMOST_PEDANTIC and
10519         ACX_PROG_CC_WARNINGS_ARE_ERRORS.
10520         * configure: Regenerate.
10521
10522 2008-07-28  Richard Guenther  <rguenther@suse.de>
10523
10524         * tree-ssa-pre.c (insert_into_preds_of_block): Remove dead code.
10525         (insert_fake_stores): Remove.
10526         (realify_fake_stores): Likewise.
10527         (execute_pre): Remove dead code.
10528         * tree-ssa-structalias.c (get_constraint_for_1): Remove tcc_unary case.
10529         (find_func_aliases): Deal with it here instead.
10530         Re-enable gcc_unreachable call.
10531
10532 2008-07-28  Richard Guenther  <rguenther@suse.de>
10533
10534         Merge from gimple-tuples-branch.
10535
10536         * ChangeLog.tuples: ChangeLog from gimple-tuples-branch.
10537         * gimple.def: New file.
10538         * gsstruct.def: Likewise.
10539         * gimple-iterator.c: Likewise.
10540         * gimple-pretty-print.c: Likewise.
10541         * tree-gimple.c: Removed.  Merged into ...
10542         * gimple.c: ... here.  New file.
10543         * tree-gimple.h: Removed.  Merged into ...
10544         * gimple.h: ... here.  New file.
10545
10546         * Makefile.in: Add dependencies on GIMPLE_H and tree-iterator.h.
10547         * configure.ac: Added support for ENABLE_GIMPLE_CHECKING and the
10548         --enable-checking=gimple flag.
10549         * config.in: Likewise.
10550         * configure: Regenerated.
10551
10552         * tree-ssa-operands.h: Tuplified.
10553         * tree-vrp.c: Likewise.
10554         * tree-loop-linear.c: Likewise.
10555         * tree-into-ssa.c: Likewise.
10556         * tree-ssa-loop-im.c: Likewise.
10557         * tree-dump.c: Likewise.
10558         * tree-complex.c: Likewise.
10559         * cgraphbuild.c: Likewise.
10560         * tree-ssa-threadupdate.c: Likewise.
10561         * tree-ssa-loop-niter.c: Likewise.
10562         * tree-pretty-print.c: Likewise.
10563         * tracer.c: Likewise.
10564         * gengtype.c: Likewise.
10565         * tree-loop-distribution.c: Likewise.
10566         * tree-ssa-loop-unswitch.c: Likewise.
10567         * cgraph.c: Likewise.
10568         * cgraph.h: Likewise.
10569         * tree-ssa-loop-manip.c: Likewise.
10570         * value-prof.c: Likewise.
10571         * tree-ssa-loop-ch.c: Likewise.
10572         * tree-tailcall.c: Likewise.
10573         * value-prof.h: Likewise.
10574         * tree.c: Likewise.
10575         * tree.h: Likewise.
10576         * tree-pass.h: Likewise.
10577         * ipa-cp.c: Likewise.
10578         * tree-scalar-evolution.c: Likewise.
10579         * tree-scalar-evolution.h: Likewise.
10580         * target.h: Likewise.
10581         * lambda-mat.c: Likewise.
10582         * tree-phinodes.c: Likewise.
10583         * diagnostic.h: Likewise.
10584         * builtins.c: Likewise.
10585         * tree-ssa-alias-warnings.c: Likewise.
10586         * cfghooks.c: Likewise.
10587         * fold-const.c: Likewise.
10588         * cfghooks.h: Likewise.
10589         * omp-low.c: Likewise.
10590         * tree-ssa-dse.c: Likewise.
10591         * ipa-reference.c: Likewise.
10592         * tree-ssa-uncprop.c: Likewise.
10593         * toplev.c: Likewise.
10594         * tree-gimple.c: Likewise.
10595         * tree-gimple.h: Likewise.
10596         * tree-chrec.c: Likewise.
10597         * tree-chrec.h: Likewise.
10598         * tree-ssa-sccvn.c: Likewise.
10599         * tree-ssa-sccvn.h: Likewise.
10600         * cgraphunit.c: Likewise.
10601         * tree-ssa-copyrename.c: Likewise.
10602         * tree-ssa-ccp.c: Likewise.
10603         * tree-ssa-loop-ivopts.c: Likewise.
10604         * tree-nomudflap.c: Likewise.
10605         * tree-call-cdce.c: Likewise.
10606         * ipa-pure-const.c: Likewise.
10607         * c-format.c: Likewise.
10608         * tree-stdarg.c: Likewise.
10609         * tree-ssa-math-opts.c: Likewise.
10610         * tree-ssa-dom.c: Likewise.
10611         * tree-nrv.c: Likewise.
10612         * tree-ssa-propagate.c: Likewise.
10613         * ipa-utils.c: Likewise.
10614         * tree-ssa-propagate.h: Likewise.
10615         * tree-ssa-alias.c: Likewise.
10616         * gimple-low.c: Likewise.
10617         * tree-ssa-sink.c: Likewise.
10618         * ipa-inline.c: Likewise.
10619         * c-semantics.c: Likewise.
10620         * dwarf2out.c: Likewise.
10621         * expr.c: Likewise.
10622         * tree-ssa-loop-ivcanon.c: Likewise.
10623         * predict.c: Likewise.
10624         * tree-ssa-loop.c: Likewise.
10625         * tree-parloops.c: Likewise.
10626         * tree-ssa-address.c: Likewise.
10627         * tree-ssa-ifcombine.c: Likewise.
10628         * matrix-reorg.c: Likewise.
10629         * c-decl.c: Likewise.
10630         * tree-eh.c: Likewise.
10631         * c-pretty-print.c: Likewise.
10632         * lambda-trans.c: Likewise.
10633         * function.c: Likewise.
10634         * langhooks.c: Likewise.
10635         * ebitmap.h: Likewise.
10636         * tree-vectorizer.c: Likewise.
10637         * function.h: Likewise.
10638         * langhooks.h: Likewise.
10639         * tree-vectorizer.h: Likewise.
10640         * ipa-type-escape.c: Likewise.
10641         * ipa-type-escape.h: Likewise.
10642         * domwalk.c: Likewise.
10643         * tree-if-conv.c: Likewise.
10644         * profile.c: Likewise.
10645         * domwalk.h: Likewise.
10646         * tree-data-ref.c: Likewise.
10647         * tree-data-ref.h: Likewise.
10648         * tree-flow-inline.h: Likewise.
10649         * tree-affine.c: Likewise.
10650         * tree-vect-analyze.c: Likewise.
10651         * c-typeck.c: Likewise.
10652         * gimplify.c: Likewise.
10653         * coretypes.h: Likewise.
10654         * tree-ssa-phiopt.c: Likewise.
10655         * calls.c: Likewise.
10656         * tree-ssa-coalesce.c: Likewise.
10657         * tree.def: Likewise.
10658         * tree-dfa.c: Likewise.
10659         * except.c: Likewise.
10660         * except.h: Likewise.
10661         * cfgexpand.c: Likewise.
10662         * tree-cfgcleanup.c: Likewise.
10663         * tree-ssa-pre.c: Likewise.
10664         * tree-ssa-live.c: Likewise.
10665         * tree-sra.c: Likewise.
10666         * tree-ssa-live.h: Likewise.
10667         * tree-predcom.c: Likewise.
10668         * lambda.h: Likewise.
10669         * tree-mudflap.c: Likewise.
10670         * ipa-prop.c: Likewise.
10671         * print-tree.c: Likewise.
10672         * tree-ssa-copy.c: Likewise.
10673         * ipa-prop.h: Likewise.
10674         * tree-ssa-forwprop.c: Likewise.
10675         * ggc-page.c: Likewise.
10676         * c-omp.c: Likewise.
10677         * tree-ssa-dce.c: Likewise.
10678         * tree-vect-patterns.c: Likewise.
10679         * tree-ssa-ter.c: Likewise.
10680         * tree-nested.c: Likewise.
10681         * tree-ssa.c: Likewise.
10682         * lambda-code.c: Likewise.
10683         * tree-ssa-loop-prefetch.c: Likewise.
10684         * tree-inline.c: Likewise.
10685         * tree-inline.h: Likewise.
10686         * tree-iterator.c: Likewise.
10687         * tree-optimize.c: Likewise.
10688         * tree-ssa-phiprop.c: Likewise.
10689         * tree-vect-transform.c: Likewise.
10690         * tree-object-size.c: Likewise.
10691         * tree-outof-ssa.c: Likewise.
10692         * cfgloop.c: Likewise.
10693         * system.h: Likewise.
10694         * tree-profile.c: Likewise.
10695         * cfgloop.h: Likewise.
10696         * c-gimplify.c: Likewise.
10697         * c-common.c: Likewise.
10698         * tree-vect-generic.c: Likewise.
10699         * tree-flow.h: Likewise.
10700         * c-common.h: Likewise.
10701         * basic-block.h: Likewise.
10702         * tree-ssa-structalias.c: Likewise.
10703         * tree-switch-conversion.c: Likewise.
10704         * tree-ssa-structalias.h: Likewise.
10705         * tree-cfg.c: Likewise.
10706         * passes.c: Likewise.
10707         * ipa-struct-reorg.c: Likewise.
10708         * ipa-struct-reorg.h: Likewise.
10709         * tree-ssa-reassoc.c: Likewise.
10710         * cfgrtl.c: Likewise.
10711         * varpool.c: Likewise.
10712         * stmt.c: Likewise.
10713         * tree-ssanames.c: Likewise.
10714         * tree-ssa-threadedge.c: Likewise.
10715         * langhooks-def.h: Likewise.
10716         * tree-ssa-operands.c: Likewise.
10717         * config/alpha/alpha.c: Likewise.
10718         * config/frv/frv.c: Likewise.
10719         * config/s390/s390.c: Likewise.
10720         * config/m32c/m32c.c: Likewise.
10721         * config/m32c/m32c-protos.h: Likewise.
10722         * config/spu/spu.c: Likewise.
10723         * config/sparc/sparc.c: Likewise.
10724         * config/i386/i386.c: Likewise.
10725         * config/sh/sh.c: Likewise.
10726         * config/xtensa/xtensa.c: Likewise.
10727         * config/stormy16/stormy16.c: Likewise.
10728         * config/ia64/ia64.c: Likewise.
10729         * config/rs6000/rs6000.c: Likewise.
10730         * config/pa/pa.c: Likewise.
10731         * config/mips/mips.c: Likewise.
10732
10733 2008-07-28  Simon Baldwin  <simonb@google.com>
10734
10735         * c-pragma.c (handle_pragma_message): New function.
10736         (init_pragma): Register handle_pragma_message.
10737         * doc/extend.texi (Diagnostic Pragmas): Added #pragma message
10738         documentation.
10739
10740 2008-07-27  Victor Kaplansky  <victork@il.ibm.com>
10741
10742         PR tree-optimization/35252
10743         * tree-vect-analyze.c (vect_build_slp_tree): Make IMAGPART_EXPR and
10744         REALPART_EXPR to be considered as same load operation.
10745
10746 2008-07-27  Eric Botcazou  <ebotcazou@adacore.com>
10747
10748         PR tree-optimization/36830
10749         * tree-ssa-sccvn.c (vn_reference_op_compute_hash): Hash operand #2.
10750         (expressions_equal_p): Return false if only one operand is null.
10751
10752 2008-07-26  Gerald Pfeifer  <gerald@pfeifer.com>
10753
10754         * doc/install.texi (powerpc-*-netbsd*): Remove redundant texinfo
10755         version requirements.
10756
10757 2008-07-26  Olivier Hainque  <hainque@adacore.com>
10758
10759         * collect2.c (symkind): New enum.  Symbol kinds we care about.
10760         (is_ctor_dtor): Return symkind instead of int.  Adjust prototype,
10761         code and head comment accordingly.
10762         (scan_prog_file): Use symkind names instead of bare integers.
10763
10764 2008-07-25  Jan Hubicka  <jh@suse.cz>
10765
10766         * cgraph.c (cgraph_function_possibly_inlined_p): Do not rely on
10767         DECL_INLINE.
10768         * cgraphunit.c (record_cdtor_fn): Do not initialize DECL_INLINE
10769         (cgraph_preserve_function_body_p): Do not rely on DECL_INLINE.
10770         * dojump.c (clear_pending_stack_adjust): Likewise.
10771         * print-tree.c (print_node): Ignore DECL_INLINE.
10772         * tree-inline.c (inlinable_function_p): Likewise.
10773
10774 2008-07-25  Michael Meissner  <gnu@the-meissners.org>
10775
10776         * doc/extend.texi (hot attribute): Document that the hot attribute
10777         turns on -O3 for some ports.
10778         (cold attribute): Document that the cold attribute turns on -Os
10779         for some ports
10780
10781         * doc/tm.texi (OPTIMIZATION_OPTIONS): Update documentation to
10782         reflect function specific option support.
10783
10784         * target.h (struct target_option_hooks): Add fields to say whether
10785         the cold attribute implies -Os and the hot attribute implies -O3.
10786
10787         * target-def.h (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION):
10788         By default, do not turn on -Os for cold functions.
10789         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): By default, do
10790         not turn on -O3 for hot functions.
10791
10792         * c-common.c (handle_hot_attribute): Use target hook to determine
10793         if hot functions should enable -O3.
10794         (handle_cold_attribute): Use target hook to determine if cold
10795         functions should enable -Os.
10796
10797         * config/i386/i386.c (ix86_target_string): Add -m3dnowa support.
10798         (override_options): Move disable scheduling to
10799         optimization_options.
10800         (optimization_options): Disable scheduling here, not
10801         override_options.
10802         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Define.
10803         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Define.
10804
10805         * config/ia64/ia64.c (ia64_override_options): Move setting
10806         scheduling flags to ia64_optimization_options.
10807         (ia64_optimization_options): Disable scheduling options here, and
10808         not in ia64_override_options.
10809         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Define.
10810         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Define.
10811
10812 2008-07-25  H.J. Lu  <hongjiu.lu@intel.com>
10813
10814         PR target/36936
10815         * config/i386/i386.c (override_options): Don't clear TARGET_CMOVE.
10816
10817 2008-07-25  Martin Jambor  <mjambor@suse.cz>
10818
10819         PR tree-optimization/36926
10820         * ipa-prop.c (ipa_analyze_call_uses): Call
10821         ipa_is_ssa_with_stmt_def instead of SSA_NAME_IS_DEFAULT_DEF.
10822
10823 2008-07-25  Joseph Myers  <joseph@codesourcery.com>
10824
10825         * config/arm/iwmmxt.md (movv8qi_internal, movv4hi_internal,
10826         movv2si_internal): Add mem = reg alternative.
10827
10828 2008-07-25  Andreas Tobler  <a.tobler@schweiz.org>
10829
10830         PR bootstrap/36918
10831         * config/sparc/sparc.h (DEFAULT_PCC_STRUCT_RETURN): Define
10832         DEFAULT_PCC_STRUCT_RETURN to 127.
10833
10834 2008-07-24  Jan Hubicka  <jh@suse.cz>
10835
10836         * cgraphbuild.c (record_reference): Drop non-unit-at-a-time code.
10837         (build_cgraph_edges): Likewise.
10838         * cgraph.c (cgraph_node): Do not update assembler hash.
10839         (cgraph_remove_node): Drop non-unit-at-a-time code.
10840         * tree-pass.h (pass_O0_always_inline): Remove.
10841         * ipa-reference.c (gate_reference): Remove unit-at-a-time check.
10842         * toplev.c (process_options): Flag unit-at-a-time does not imply
10843         no section anchors.
10844         * cgraphunit.c: Update comments.
10845         (decide_is_function_needed): Drop non-unit-at-a-time mode.
10846         (cgraph_assemble_pending_functions): Remove.
10847         (cgraph_reset_node): Drop non-unit-at-a-time code.
10848         (cgraph_finalize_function): Likewise.
10849         (cgraph_analyze_function): Likewise.
10850         (cgraph_finalize_compilation_unit): Likewise.
10851         (cgraph_expand_function): Likewise.
10852         (cgraph_optimize): Likesise.
10853         (save_inline_function_body): Likewise.
10854         * ipa-pure-const.c (gate_pure_const): Drop flag_unit_at_a_time check.
10855         * tree-ssa-alias.c (maybe_be_aliased): Likewise.
10856         * ipa-inline.c: Update comments.
10857         (enum inlining_mode): remove INLINE_SPEED.
10858         (cgraph_clone_inlined_nodes): Drop unit-at-a-time check.
10859         (cgraph_mark_inline_edge): Likewise.
10860         (try_inline): Likewise.
10861         (cgraph_decide_inlining_incrementally): Likewise.
10862         (cgraph_gate_inlining): Remove.
10863         (cgraph_early_inlining): Remove flag_unit_at_a_time checks.
10864         (cgraph_gate_early_inlining): Likewise.
10865         (gate_inline_passes): Remove.
10866         (pass_inline_parameters, pass_ipa_inline): Remove gates.
10867         (cgraph_gate_O0_always_inline, cgraph_O0_always_inline,
10868         pass_O0_always_inline): Remove.
10869         * c-pch.c (c_pch_matching): Remove -funit-at-a-time.
10870         * dwarf2out.c (reference_to_unused): Remove flag_unit_at_a_time check.
10871         * opts.c (no_unit_at_a_time_default): Remove.
10872         (decode_options): Remove flag_unit_at_a_time reset and warning.
10873         * opts.h (no_unit_at_a_time_default): Remove.
10874         * c-decl.c (diagnose_mismatched_decls): Do not require inline keyword
10875         early in GNU dialect.
10876         (merge_decls): Update comment; drop unit-at-a-time check.
10877         (finish_decl): Likewise.
10878         (grok_declaration): Remove flag_inline_trees code.
10879         (finish_functions): Return on function returning non-void on all
10880         statics.
10881         * ipa-tye-escape.c (gate_type_escape_vars): Remove.
10882         * cfgexpand.c (expand_one_static_var): Remove.
10883         (expand_one_var): Remove expand_one_static_var call.
10884         (expand_used_vars_for_block): Remove flag_unit_a_time check.
10885         * c-opts.c (c_common_post_options): Remove flag_inline_trees code
10886         and flag_unit_at_a-time compatibility checks.
10887         * varasm.c (assemble_alias): Remove flag_unit_at_a_time check.
10888         * tree-inline.c (flag_inline_trees): Remove.
10889         (inlinable_function_p): Don't check it.
10890         (expand_call_inline): Remove non-unit-at-a-time code.
10891         * tree-inline.h (flag_inline_trees): Remove.
10892         * tree-optimize.c (execute_early_local_optimizations): Remove
10893         unit-at-a-time checks.
10894         (tree_rest_of_compilation): Likewise.
10895         * combine.c (setup_incoming_promotions): Likewise.
10896         * tree-profile.c (tree_gen_ic_func_profiler): Likewise.
10897         * tree-ssa-structalias.c (delete_points_to_sets): Likewise.
10898         * passes.c (pass_inline_parameters): Update comments; remove
10899         O0_alwaysinline pass.
10900         (execute_one_ipa_transform_pass): Do not reset in_gimple_form.
10901         (execute_one_pass): Likewise.
10902         * i386.c (ix86_function_regparm): Remove unit-at-a-time check.
10903         (ix86_function_sseregparm): Likewise.
10904         * arm.c (arm_function_in_section_p): Likewise.
10905         * bfin.c (bfin_load_pic_reg, bfin_function_ok_for_sibcall): Likewise.
10906         * varpool.c: Update comments.
10907         (decide_is_variable_needed): Remove unit-at-a-time checks.
10908         (varpool_finalize_decl): Likewise.
10909
10910 2008-07-24  Kaz Kojima  <kkojima@gcc.gnu.org>
10911
10912         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Set flag_omit_frame_pointer
10913         to 2 instead of -1.
10914         (OVERRIDE_OPTIONS): Check if flag_omit_frame_pointer is equal to 2.
10915
10916 2008-07-24  Kai Tietz  <kai.tietz@onevision.com>
10917
10918         * config/i386/i386.c (get_dllimport_decl): Treat user_label_prefix for
10919         imp symbol extension.
10920
10921         2008-07-23  Ian Lance Taylor  <iant@google.com>
10922
10923         * tree-vrp.c (infer_value_range): Ignore asm statements when
10924         looking for memory accesses for -fdelete-null-pointer-checks.
10925
10926 2008-07-24  Ben Elliston  <bje@au.ibm.com>
10927
10928         * config/spu/spu-c.c (__vector_keyword): New variable.
10929         (vector_keyword): Likewise.
10930         (spu_categorize_keyword): New function.
10931         (spu_macro_to_expand): Likewise.
10932         (spu_cpu_cpp_builtins): Enable context-sensitive macros if not
10933         compiling an ISO C dialect.
10934
10935 2008-07-24  Ben Elliston  <bje@au.ibm.com>
10936
10937         * config/rs6000/rs6000-c.c: Move GTY(()) markers to match
10938         conventional usage.
10939
10940 2008-07-23  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
10941
10942         * configure: Regenerate.
10943         * configure.ac: Require texinfo 4.7.
10944         * doc/install.texi: Document texinfo 4.7 requirement.
10945
10946 2008-07-23  Martin Jambor  <mjambor@suse.cz>
10947
10948         * ipa-cp.c (ipcp_print_edge_profiles): Test for node->analyzed
10949         rather than for DECL_SAVED_TREE.
10950         * ipa-prop.c: Include diagnostic.h.
10951         (ipa_check_stmt_modifications): Check LHS of GIMPLE_MODIFY_EXPRs
10952         thoroughly.
10953         (ipa_detect_param_modifications): Function rewritten from scratch.
10954         (ipa_compute_jump_functions): Changed accesses to modification flags.
10955         (ipa_free_node_params_substructures): Update flags destruction.
10956         (ipa_node_duplication_hook): Update flags duplication.
10957         (ipa_print_all_params_modified): Updated flag access.
10958         * ipa-prop.h (struct ipa_param_flags): New structure.
10959         (struct ipa_node_params): New field modification_analysis_done,
10960         modified_flags changed into param_flags.
10961         (ipa_is_ith_param_modified): Changed to use new flags.
10962         * Makefile.in (ipa-prop.o): Add $(DIAGNOSTIC_H) to dependencies.
10963
10964         * ipa-prop.c (ipa_print_all_jump_functions): Moved here from
10965         ipa-cp.c and split into two functions.
10966         (ipa_print_node_jump_functions): New function.
10967         (compute_scalar_jump_functions): New function.
10968         (type_like_member_ptr_p): New function.
10969         (compute_pass_through_member_ptrs): New function.
10970         (fill_member_ptr_cst_jump_function): New function.
10971         (determine_cst_member_ptr): New function.
10972         (compute_cst_member_ptr_arguments): New function.
10973         (ipa_compute_jump_functions): Complete rewrite.
10974         * ipa-prop.h (enum jump_func_type): Make explicit that we depend
10975         on IPA_UNKNOWN being zero. Added value IPA_CONST_MEMBER_PTR.
10976         (struct ipa_member_ptr_cst): New structure.
10977         (union jump_func_value): New field member_cst.
10978         * ipa-cp.c (ipcp_lat_is_insertable): New function.
10979         (ipcp_lattice_from_jfunc): Produces bottom lattices for unhandled
10980         jump function types.
10981         (ipcp_print_all_lattices): Slight fprintf rearrangement.
10982         (ipcp_print_all_structures): Call ipa_print_all_jump_functions
10983         instead of ipcp_print_all_jump_functions.
10984         (ipcp_insert_stage): Use ipcp_lat_is_insertable, create replace maps
10985         only for replacable scalars.
10986
10987         * doc/invoke.texi (Optimize options): Add description of
10988         -findirect-inlining.
10989         * common.opt (flag_indirect_inlining): New flag.
10990         * opts.c (decode_options): Set flag_indirect_inlining when
10991         optimize >= 3.
10992
10993         * ipa-inline.c: Include ipa-prop.h.
10994         (inline_indirect_intraprocedural_analysis): New function.
10995         (inline_generate_summary): Allocate parameter and argument info
10996         structures, call inline_indirect_intraprocedural_analysis on each
10997         node when doing indirect inlining and deallocate indirect inlining
10998         data structures in the end.
10999         * ipa-prop.c (ipa_create_param_decls_array): Return if already done.
11000         (free_all_ipa_structures_after_iinln): New function.
11001         (free_all_ipa_structures_after_ipa_cp): Checks whether iinln will be
11002         done.
11003         * Makefile.in (ipa-inline.o): Added $(IPA_PROP_H) to dependencies.
11004
11005         * cgraphbuild.c (compute_call_stmt_bb_frequency): New function.
11006         (build_cgraph_edges): Call compute_call_stmt_bb_frequency instead
11007         of computing the frequency separately.
11008         (rebuild_cgraph_edges): Call compute_call_stmt_bb_frequency instead
11009         of computing the frequency separately.
11010         * ipa-cp.c (ipcp_print_all_structures): Replace a call to
11011         ipa_print_all_param_modified with a call to ipa_print_all_param_flags.
11012         * ipa-prop.c (ipa_get_member_ptr_load_param): New function.
11013         (ipa_get_stmt_member_ptr_load_param): New function.
11014         (ipa_is_ssa_with_stmt_def): New function.
11015         (ipa_note_param_call): New function.
11016         (ipa_analyze_call_uses): New function.
11017         (ipa_analyze_stmt_uses): New function.
11018         (ipa_analyze_params_uses): New function.
11019         (ipa_free_node_params_substructures): Also free the param_calls linked
11020         list.
11021         (ipa_node_duplication_hook): Also duplicate the param_calls
11022         linked list.
11023         (ipa_print_node_param_flags): New function.
11024         (ipa_print_all_params_modified): Renamed to ipa_print_all_param_flags.
11025         (ipa_print_all_param_flags): Calls ipa_print_node_param_flags.
11026         * ipa-prop.h (struct ipa_param_flags): New field called.
11027         (struct ipa_param_call_note): New structure.
11028         (struct ipa_node_params): New fields param_calls and
11029         uses_analysis_done.
11030         (ipa_is_ith_param_called): New function.
11031         * ipa-inline.c (inline_indirect_intraprocedural_analysis): Call
11032         ipa_analyze_params_uses and dump parameter flags.
11033
11034         * ipa-inline.c (cgraph_decide_recursive_inlining): Call
11035         ipa_propagate_indirect_call_infos if performing indirect inlining,
11036         pass a new parameter new_edges to it.
11037         (add_new_edges_to_heap): New fucntion.
11038         (cgraph_decide_inlining_of_small_functions): New vector
11039         new_indirect_edges for newly found indirect edges , call
11040         ipa_propagate_indirect_call_infos after inlining.
11041         (cgraph_decide_inlining): Call ipa_propagate_indirect_call_infos after
11042         inlining if performing indirect inlining.  Call
11043         free_all_ipa_structures_after_iinln when doing so too.
11044         (inline_generate_summary): Do not call
11045         free_all_ipa_structures_after_iinln here.
11046         * ipa-prop.c (update_jump_functions_after_inlining): New function.
11047         (print_edge_addition_message): New function.
11048         (update_call_notes_after_inlining): New function.
11049         (propagate_info_to_inlined_callees): New function.
11050         (ipa_propagate_indirect_call_infos): New function.
11051         * ipa-prop.h: Include cgraph.h
11052         (struct ipa_param_call_note): Fields reordered, new field processed.
11053         * cgraph.h (cgraph_edge): Shrink loop_nest field to 31 bits, add a new
11054         flag indirect_call.
11055         * cgraphunit.c (verify_cgraph_node): Allow indirect edges not to have
11056         rediscovered call statements.
11057         * cgraph.c (cgraph_create_edge): Initialize indirect_call to zero.
11058         (dump_cgraph_node): Dump also the indirect_call flag.
11059         (cgraph_clone_edge): Copy also the indirect_call flag.
11060         * tree-inline.c (copy_bb): Do not check for fndecls from call
11061         expressions, check for edge availability when moving clones.
11062         (get_indirect_callee_fndecl): New function.
11063         (expand_call_inline): If callee declaration is not apprent from
11064         the statement, try calling get_indirect_callee_fndecl.  Do not
11065         issue warnings or call sorry when not inlinings an indirect edge.
11066         * Makefile.in (IPA_PROP_H): Added $(CGRAPH_H) to dependencies.
11067
11068         * ipa-prop.c (ipa_print_node_param_flags): Make the dump format a
11069         bit more frandly to matching.
11070         * testsuite/g++.dg/ipa/iinline-1.C: New testcase.
11071         * testsuite/gcc.dg/ipa/iinline-1.c: New testcase.
11072         * testsuite/gcc.dg/ipa/modif-1.c: New testcase.
11073
11074 2008-07-23  Michael Meissner  <gnu@the-meissners.org>
11075
11076         PR 36907
11077         * opth-gen.awk: Suppress function specific features when building
11078         target libraries.
11079         * optc-gen.awk: Ditto.
11080
11081 2008-07-23  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11082
11083         PR 35058
11084         * diagnostic.c (pedwarn): Add opt parameter.
11085         (pedwarn0): New.
11086         * c-tree.h (pedwarn_init): Add opt parameter.
11087         (pedwarn_c90): Likewise.
11088         (pedwarn_c99): Likewise.
11089         * c-errors.c (pedwarn_c99): Likewise.
11090         (pedwarn_c90): Likewise.
11091         * toplev.h (pedwarn): Update declaration.
11092         (pedwarn0): Declare.
11093         * c-lex.c: All calls to pedwarn changed.
11094         * builtins.c: All calls to pedwarn changed.
11095         * toplev.c: All calls to pedwarn changed.
11096         * c-decl.c: All calls to pedwarn changed.
11097         * c-typeck.c: All calls to pedwarn changed.
11098         * c-common.c: All calls to pedwarn changed.
11099         * c-parser.c: All calls to pedwarn changed.
11100
11101 2008-07-23  Michael Meissner  <gnu@the-meissners.org>
11102             Karthik Kumar  <karthikkumar@gmail.com>
11103
11104         * attribs.c (file scope): Include c-common.h.
11105         (decl_attributes): Add support for #pragma GCC optimize and
11106         #pragma GCC option.
11107
11108         * targhooks.c (default_can_inline_p): New function that is the
11109         default for the TARGET_CAN_INLINE_P target hook.
11110
11111         * targhooks.h (default_can_inline_p): Add declaration.
11112
11113         * tree.c (cl_optimization_node): New static tree for building
11114         OPTIMIZATION_NODE tree.
11115         (cl_target_option_node): New static tree for building
11116         TARGET_OPTION_NODE tree.
11117         (cl_option_hash_table): New hash table for hashing
11118         OPTIMIZATION_NODE and TARGET_OPTION_NODE trees.
11119         (cl_option_hash_hash): New function to provide the hash value for
11120         OPTIMIZATION_NODE and TARGET_OPTION_NODE trees.
11121         (cl_option_hash_eq): New function to provide an equality test for
11122         OPTIMIZATION_NODE and TARGET_OPTION_NODE trees.
11123         (tree_code_size): Add support for OPTIMIZATION_NODE and
11124         TARGET_OPTION_NODE trees.
11125         (tree_code_structure): Add support for OPTIMIZATION_NODE and
11126         TARGET_OPTION_NODE trees.
11127         (build_optimization_node): Build a tree that has all of the
11128         current optimization options.
11129         (build_target_option_node): Build a tree that has the target
11130         options that might be changed on a per function basis.
11131
11132         * tree.h (file scope): Include options.h.
11133         (DECL_FUNCTION_SPECIFIC_TARGET): New accessor macro.
11134         (DECL_FUNCTION_SPECIFIC_OPTIMIZATION): Ditto.
11135         (TREE_OPTIMIZATION): Ditto.
11136         (TREE_TARGET_SPECIFIC): Ditto.
11137         (struct tree_function_decl): Add fields for remembering the
11138         current optimization options and target specific options.
11139         (struct tree_optimization_option): New tree variant that remembers
11140         the optimization options.
11141         (struct tree_target_option): New tree variant that remembers the
11142         target specific flags that might change for compiling a particular
11143         function.
11144         (union tree_node): Include tree_optimization_option and
11145         tree_target_option fields.
11146         (enum tree_index): Add TI_OPTIMIZATION_DEFAULT,
11147         TI_OPTIMIZATION_CURRENT, TI_OPTIMIZATION_COLD,
11148         TI_OPTIMIZATION_HOT, TI_TARGET_OPTION_DEFAULT,
11149         TI_TARGET_OPTION_CURRENT, TI_CURRENT_OPTION_PRAGMA,
11150         TI_CURRENT_OPTIMIZE_PRAGMA entries for saving function specific
11151         optimization and target options.
11152         (optimization_default_node): New macro to refer to global_trees
11153         field.
11154         (optimization_current_node): Ditto.
11155         (optimization_cold_node): Ditto.
11156         (optimization_hot_node): Ditto.
11157         (target_option_default_node): Ditto.
11158         (target_option_current_node): Ditto.
11159         (current_option_pragma): Ditto.
11160         (current_optimize_pragma): Ditto.
11161
11162         * target.h (struct gcc_target): Add valid_option_attribute_p,
11163         target_option_save, target_option_restore, target_option_print,
11164         target_option_pragma_parse, and can_inline_p hooks.
11165
11166         * toplev.h (parse_optimize_options): Add declaration.
11167         (fast_math_flags_struct_set_p): Ditto.
11168
11169         * c-cppbuiltin.c (c_cpp_builtins_optimize_pragma): New function to
11170         adjust the current __OPTIMIZE__, etc. macros when #pragma GCC
11171         optimize is used.
11172
11173         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Call
11174         tree_can_inline_p hook to see if one function can inline another.
11175         (cgraph_decide_inlining): Ditto.
11176         (cgraph_decide_inlining_incrementally): Ditto.
11177
11178         * opts.c (decode_options): Add support for running multiple times
11179         to allow functions with different target or optimization options
11180         than was specified on the command line.
11181         (fast_math_flags_struct_set_p): New function that is similar to
11182         fast_math_flags_set_p, except it uses the values in the
11183         cl_optimization structure instead of global variables.
11184
11185         * optc-gen.awk: Add support for TargetSave to allow a back end to
11186         declare new fields that need to be saved when using function
11187         specific options.  Include flags.h and target.h in the options.c
11188         source.  Add support for Save to indicate which options can be set
11189         for individual functions.  Generate cl_optimize_save,
11190         cl_optimize_restore, cl_optimize_print, cl_target_option_save,
11191         cl_target_option_restore, cl_target_option_print functions to
11192         allow functions to use different optimization or target options.
11193
11194         * opt-functions.awk (var_type_struct): Return the type used for
11195         storing the field in a structure.
11196
11197         * opth-gen.awk: Add support for TargetSave to allow a back end to
11198         declare new fields that need to be saved when using function
11199         specific options.  Add support for Save to indicate which options
11200         can be set for individual functions.  Only generate one extern for
11201         Mask fields.  Generate cl_optimization and cl_target_option
11202         structures to remember optimization and target options.
11203
11204         * treestruct.def (TS_OPTIMIZATION): Add support for garbage
11205         collecting new tree nodes.
11206         (TS_TARGET_OPTION): Ditto.
11207
11208         * c-decl.c (merge_decls): Merge function specific target and
11209         optimization options.
11210
11211         * function.c (invoke_set_current_function_hook): If the function
11212         uses different optimization options, change the global variables
11213         to reflect this.
11214
11215         * coretypes.h (struct cl_optimization): Add forward reference.
11216         (struct cl_target_option): Ditto.
11217
11218         * c-pragma.c (option_stack): New static vector to remember the
11219         current #pragma GCC option stack.
11220         (handle_pragma_option): New function to support #pragma GCC option
11221         to change target options.
11222         (optimize_stack): New static vector to remember the current
11223         #pragma GCC optimize stack.
11224         (handle_pragma_optimize): New function to support #pragma GCC
11225         optimize to change optimization options.
11226         (init_pragma): Add support for #pragma GCC optimize and #pragma
11227         GCC option.
11228
11229         * tree.def (OPTIMIZATION_NODE): New tree code for remembering
11230         optimization options.
11231         (TARGET_OPTION_NODE): New tree code for remembering certain target
11232         options.
11233
11234         * print-tree.c (print_node): Add support for OPTIMIZATION_NODE and
11235         TARGET_OPTION_NODE trees.
11236
11237         * common.opt (-O): Add Optimization flag.
11238         (-Os): Ditto.
11239         (-fmath-errno): Ditto.
11240         (-falign-functions): Add UInteger flag to make sure flag gets full
11241         int in cl_optimization structure.
11242         (-falign-jumps): Ditto.
11243         (-falign-labels): Ditto.
11244         (-falign-loops): Ditto.
11245         (-fsched-stalled-insns): Ditto.
11246         (-fsched-stalled-insns-dep): Ditto.
11247
11248         * target-def.h (TARGET_VALID_OPTION_ATTRIBUTE_P): Add default
11249         definition.
11250         (TARGET_OPTION_SAVE): Ditto.
11251         (TARGET_OPTION_RESTORE): Ditto.
11252         (TARGET_OPTION_PRINT): Ditto.
11253         (TARGET_OPTION_PRAGMA_PARSE): Ditto.
11254         (TARGET_CAN_INLINE_P): Ditto.
11255         (TARGET_INITIALIZER): Add new hooks.
11256
11257         * tree-inline.c (tree_can_inline_p): New function to determine
11258         whether one function can inline another.  Check if the functions
11259         use compatible optimization options, and also call the backend
11260         can_inline_p hook.
11261
11262         * tree-inline.h (tree_can_inline_p): Add declaration.
11263
11264         * c-common.c (c_common_attribute): Add support for option and
11265         optimize attributes.
11266         (handle_option_attribute): Add support for the option attribute to
11267         allow the user to specify different target options for compiling a
11268         specific function.
11269         (handle_optimize_attribute): Add support for the optimize
11270         attribute to allow the user to specify different optimization
11271         options for compiling a specific function.
11272         (handle_hot_attribute): Turn on -O3 optimization for this one
11273         function if it isn't the default optimization level.
11274         (handle_cold_attribute): Turn on -Os optimization for this one
11275         function if it insn't the default optimization.
11276         (const_char_p): New const char * typedef.
11277         (optimize_args): New static vector to remember the optimization
11278         arguments.
11279         (parse_optimize_options): New function to set up the optimization
11280         arguments from either the optimize attribute or #pragma GCC optimize.
11281
11282         * c-common.h (c_cpp_builtins_optimize_pragma): Add declaration.
11283         (builtin_define_std): Ditto.
11284
11285         * config.gcc (i[3467]86-*-*): Add i386-c.o to C/C++ languages.
11286         Add t-i386 Makefile fragment to add i386-c.o and i386.o dependencies.
11287         (x86_64-*-*): Ditto.
11288
11289         * Makefile.in (TREE_H): Add options.h.
11290         (options.o): Add $(TARGET_H) $(FLAGS_H) dependencies.
11291
11292         * doc/extend.texi (option attribute): Document new attribute.
11293         (optimize attribute): Ditto.
11294         (hot attribute): Document hot attribute sets -O3.
11295         (cold attribute): Document cold attribute sets -Os.
11296         (#pragma GCC option): Document new pragma.
11297         (#pragma GCC optimize): Ditto.
11298
11299         * doc/options.texi (TargetSave): Document TargetSave syntax.
11300         (UInteger): Document UInteger must be used for certain flags.
11301         (Save): Document Save option to create target specific options
11302         that can be saved/restored on a function specific context.
11303
11304         * doc/c-tree.texi (DECL_FUNCTION_SPECIFIC_TARGET): Document new macro.
11305         (DECL_FUNCTION_SPECIFIC_OPTIMIZATION): Ditto.
11306
11307         * doc/tm.texi (TARGET_VALID_OPTION_ATTRIBUTE_P): Document new hook.
11308         (TARGET_OPTION_SAVE): Ditto.
11309         (TARGET_OPTION_RESTORE): Ditto.
11310         (TARGET_OPTION_PRINT): Ditto.
11311         (TARGET_OPTION_PRAGMA_PARSE): Ditto.
11312         (TARGET_CAN_INLINE_P): Ditto.
11313
11314         * doc/invoke.texi (-mfpmath=sse+387): Document as an alias for
11315         -mfpmath=sse,387.
11316         (-mfpmath=both): Ditto.
11317
11318 2008-07-23  Michael Meissner  <gnu@the-meissners.org>
11319             Karthik Kumar  <karthikkumar@gmail.com>
11320
11321         * config/i386/i386.h (TARGET_ABM): Move switch into ix86_isa_flags.
11322         (TARGET_POPCNT): Ditto.
11323         (TARGET_SAHF): Ditto.
11324         (TARGET_AES): Ditto.
11325         (TARGET_PCLMUL): Ditto.
11326         (TARGET_CMPXCHG16B): Ditto.
11327         (TARGET_RECIP): Move switch into target_flags.
11328         (TARGET_FUSED_MADD): Ditto.
11329         (ix86_arch_features): Make an unsigned char type.
11330         (ix86_tune_features): Ditto.
11331         (OVERRIDE_OPTIONS): Add bool argument to override_options call.
11332         (TARGET_CPU_CPP_BUILTINS): Move into ix86_target_macros.
11333         (REGISTER_TARGET_PRAGMAS): Define, call ix86_register_pragmas.
11334
11335         * config/i386/i386.opt (arch): New TargetSave field to define
11336         fields that need to be saved for function specific option support.
11337         (tune): Ditto.
11338         (fpmath): Ditto.
11339         (branch_cost): Ditto.
11340         (ix86_isa_flags_explicit): Ditto.
11341         (tune_defaulted): Ditto.
11342         (arch_specified): Ditto.
11343         (-m128-long-double): Add Save flag to save option for target
11344         specific option support.
11345         (-m80387): Ditto.
11346         (-maccumulate-outgoing-args): Ditto.
11347         (-malign-double): Ditto.
11348         (-malign-stringops): Ditto.
11349         (-mfancy-math-387): Ditto.
11350         (-mhard-float): Ditto.
11351         (-mieee-fp): Ditto.
11352         (-minline-all-stringops): Ditto.
11353         (-minline-stringops-dynamically): Ditto.
11354         (-mms-bitfields): Ditto.
11355         (-mno-align-stringops): Ditto.
11356         (-mno-fancy-math-387): Ditto.
11357         (-mno-push-args): Ditto.
11358         (-mno-red-zone): Ditto.
11359         (-mpush-args): Ditto.
11360         (-mred-zone): Ditto.
11361         (-mrtd): Ditto.
11362         (-msseregparm): Ditto.
11363         (-mstack-arg-probe): Ditto.
11364         (-m32): Ditto.
11365         (-m64): Ditto.
11366         (-mmmx): Ditto.
11367         (-m3dnow): Ditto.
11368         (-m3dnowa): Ditto.
11369         (-msse): Ditto.
11370         (-msse2): Ditto.
11371         (-msse3): Ditto.
11372         (-msse4.1): Ditto.
11373         (-msse4.2): Ditto.
11374         (-msse4): Ditto.
11375         (-mno-sse4): Ditto.
11376         (-msse4a): Ditto.
11377         (-msse5): Ditto.
11378         (-mrecip): Move flag into target_flags.
11379         (-mcld): Ditto.
11380         (-mno-fused-madd): Ditto.
11381         (-mfused-madd): Ditto.
11382         (-mabm): Move flag into ix86_isa_flags.
11383         (-mcx16): Ditto.
11384         (-mpopcnt): Ditto.
11385         (-msahf): Ditto.
11386         (-maes): Ditto.
11387         (-mpclmul): Ditto.
11388
11389         * config/i386/i386-c.c: New file for #pragma support.
11390         (ix86_target_macros_internal): New function to #define or #undef
11391         target macros based when the user uses the #pragma GCC option to
11392         change target options.
11393         (ix86_pragma_option_parse): New function to add #pragma GCC option
11394         support.
11395         (ix86_target_macros): Move defining the target macros here from
11396         TARGET_CPU_CPP_BUILTINS in i386.h.
11397         (ix86_register_pragmas): Register the #pragma GCC option hook.  If
11398         defined, initialize any subtarget #pragmas.
11399
11400         * config/i386/darwin.h (REGISTER_SUBTARGET_PRAGMAS): Rename from
11401         REGISTER_TARGET_PRAGMAS.
11402
11403         * config/i386/t-i386: New file for x86 dependencies.
11404         (i386.o): Make dependencies mirror the include files used.
11405         (i386-c.o): New file, add dependencies.
11406
11407         * config/i386/i386-protos.h (override_options): Add bool argument.
11408         (ix86_valid_option_attribute_tree): Add declaration.
11409         (ix86_target_macros): Ditto.
11410         (ix86_register_macros): Ditto.
11411
11412         * config/i386/i386.c (ix86_tune_features): Move initialization of
11413         the target masks to initial_ix86_tune_features to allow functions
11414         to have different target options.  Make type unsigned char,
11415         instead of unsigned int.
11416         (initial_ix86_tune_features): New static vector to hold processor
11417         masks for the tune variables.
11418         (ix86_arch_features): Move initialization of the target masks to
11419         initial_ix86_arch_features to allow functions to have different
11420         target options.  Make type unsigned char, instead of unsigned int.
11421         (initial_ix86_arch_features): New static vector to hold processor
11422         masks for the arch variables.
11423         (enum ix86_function_specific_strings): New enum to describe the
11424         string options used for attribute((option(...))).
11425         (ix86_target_string): New function to return a string that
11426         describes the target options.
11427         (ix86_debug_options): New function to print the current options in
11428         the debugger.
11429         (ix86_function_specific_save): New function hook to save the
11430         function specific global variables in the cl_target_option structure.
11431         (ix86_function_specific_restore): New function hook to restore the
11432         function specific variables from the cl_target_option structure to
11433         the global variables.
11434         (ix86_function_specific_print): New function hook to print the
11435         target specific options in the cl_target_option structure.
11436         (ix86_valid_option_attribute_p): New function hook to validate
11437         attribute((option(...))) arguments.
11438         (ix86_valid_option_attribute_tree): New function that is common
11439         code between attribute((option(...))) and #pragma GCC option
11440         support that parses the options and returns a tree holding the options.
11441         (ix86_valid_option_attribute_inner_p): New helper function for
11442         ix86_valid_option_attribute_tree.
11443         (ix86_can_inline_p): New function hook to decide if one function
11444         can inline another on a target specific basis.
11445         (ix86_set_current_function); New function hook to switch target
11446         options if the user used attribute((option(...))) or #pragma GCC
11447         option.
11448         (ix86_tune_defaulted): Move to static file scope from
11449         override_options.
11450         (ix86_arch_specified): Ditto.
11451         (OPTION_MASK_ISA_AES_SET): New macro for moving switches into
11452         ix86_isa_flags.
11453         (OPTION_MASK_ISA_PCLMUL_SET): Ditto.
11454         (OPTION_MASK_ISA_ABM_SET): Ditto.
11455         (OPTION_MASK_ISA_POPCNT_SET): Ditto.
11456         (OPTION_MASK_ISA_CX16_SET): Ditto.
11457         (OPTION_MASK_ISA_SAHF_SET): Ditto.
11458         (OPTION_MASK_ISA_AES_UNSET): Ditto.
11459         (OPTION_MASK_ISA_PCLMUL_UNSET): Ditto.
11460         (OPTION_MASK_ISA_ABM_UNSET): Ditto.
11461         (OPTION_MASK_ISA_POPCNT_UNSET): Ditto.
11462         (OPTION_MASK_ISA_CX16_UNSET): Ditto.
11463         (OPTION_MASK_ISA_SAHF_UNSET): Ditto.
11464         (struct ptt): Move to static file scope from override_options.
11465         (processor_target_table): Ditto.
11466         (cpu_names): Ditto.
11467         (ix86_handle_option): Add support for options that are now isa options.
11468         (override_options): Add support for declaring functions that
11469         support different target options than were specified on the
11470         command line.  Move struct ptt, processor_target_table, cpu_names,
11471         ix86_tune_defaulted, ix86_arch_specified to static file scope.
11472         Add bool argument.  Fix up error messages so the appropriate error
11473         is given for either command line or attribute.
11474         (ix86_previous_fndecl): New static to remember previous function
11475         declaration to see if we need to change target options.
11476         (ix86_builtins_isa): New array to record the ISA of each builtin
11477         function.
11478         (def_builtin): Always create the builtin function, even if the
11479         current ISA doesn't support it.
11480         (ix86_init_mmx_sse_builtins): Remove TARGET_AES and TARGET_PCLMUL
11481         tests for those builtins.
11482         (ix86_init_builtins): Remove TARGET_MMX test for calling
11483         ix86_init_mmx_sse_builtins.
11484         (ix86_expand_builtin): If the current ISA doesn't support a given
11485         builtin, signal an error.
11486         (TARGET_VALID_OPTION_ATTRIBUTE_P): Set target hook.
11487         (TARGET_SET_CURRENT_FUNCTION): Ditto.
11488         (TARGET_OPTION_SAVE): Ditto.
11489         (TARGET_OPTION_RESTORE): Ditto.
11490         (TARGET_OPTION_PRINT): Ditto.
11491         (TARGET_CAN_INLINE_P): Ditto.
11492
11493 2008-07-22  Rafael Ávila de Espíndola  <espindola@google.com>
11494
11495         * c-typeck.c (build_external_ref): Don't call assemble_external.
11496         * final.c (output_operand): Call assemble_external.
11497
11498 2008-07-21  DJ Delorie  <dj@redhat.com>
11499
11500         * config/h8300/h8300.c (h8300_hard_regno_scratch_ok): New.
11501         (TARGET_HARD_REGNO_SCRATCH_OK): Define.
11502
11503 2008-07-21  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
11504
11505         * config/spu/spu.md ("div<mode>3"): Convert into expander, move
11506         original insn and splitter contents into ...
11507         ("*div<mode>3_fast"): ... this new pattern.  Enable only if
11508         flag_unsafe_math_optimizations.  Add dummy scratch register.
11509         ("*div<mode>3_adjusted"): New insn and splitter.  Enable only if
11510         !flag_unsafe_math_optimizations.  Returns number with next
11511         highest magnitude if this is still less or equal to the true
11512         quotient in magnitude.
11513
11514 2008-07-21  Rafael Ávila de Espíndola  <espindola@google.com>
11515
11516         * Makefile.in: Replace toplev.h with TOPLEV_H.
11517         * c-decl.c (merge_decls): Don't set DECL_IN_SYSTEM_HEADER.
11518         * c-lex.c (fe_file_change): Don't set in_system_header.
11519         * c-parser.c (c_token): Remove in_system_header.
11520         (c_lex_one_token): Don't set in_system_header.
11521         (c_parser_set_source_position_from_token): Don't set in_system_header.
11522         * diagnostic.c (diagnostic_report_diagnostic): Use location from
11523         diagnostic_info.
11524         (warning_at): New.
11525         * diagnostic.h (diagnostic_report_warnings_p): Add LOC argument.
11526         * flags.h (in_system_header): Remove.
11527         * function.c (saved_in_system_header): Remove.
11528         (push_cfun): Don't set in_system_header.
11529         (pop_cfun): Don't set in_system_header.
11530         (push_struct_function): Don't set in_system_header.
11531         * input.h (expanded_location): Add sysp.
11532         (in_system_header_at): New.
11533         (in_system_header): New.
11534         * toplev.c (in_system_header): Remove.
11535         * toplev.h: Include input.h
11536         (warning_at): New.
11537         * tree-cfg.c (execute_warn_function_return): Call warning_at.
11538         * tree-ssa.c (warn_uninit): Call warning_at.
11539         (warn_uninitialized_var): Update calls to warn_uninit.
11540         (warn_uninitialized_phi): Update calls to warn_uninit.
11541         * tree.c (make_node_stat): Don't set DECL_IN_SYSTEM_HEADER.
11542         (expand_location): Initialize xloc.sysp.
11543         * tree.h (DECL_IN_SYSTEM_HEADER): Use in_system_header_at.
11544         (tree_decl_with_vis): Remove in_system_header_flag.
11545
11546 2008-07-21  Andreas Krebbel  <krebbel1@de.ibm.com>
11547
11548         PR target/36822
11549         * recog.c (asm_operand_ok): Change the order of the extra
11550         memory constraint checks.
11551
11552 2008-07-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11553
11554         PR tree-opt/36879
11555         * tree-switch-conversion.c (build_one_array): Call
11556         varpool_mark_needed_node and varpool_finalize_decl
11557         instead of assemble_variable.
11558
11559 2008-07-19  Jan Hubicka  <jh@suse.cz>
11560
11561         * cgraph.c (cgraph_add_new_function): Do early local passes.
11562         * tree-nrv.c (gate_pass_return_slot): New gate.
11563         (pass_nrv): Add the gate.
11564         * tree-ssa-coalese.c (hash_ssa_name_by_var, eq_ssa_name_by_var): New
11565         functions.
11566         (coalesce_ssa_name): Coalesce SSA names.
11567         * tree-ssa-live.c (remove_unused_locals): Be more conservative when
11568         not optimizing so unused user vars remains visible.
11569         * common.opt (flag_tree_ter): Always enable by default.
11570         * tree-ssa-ter.c: Include flags.h
11571         (is_replaceable_p): Check that locations match; when aliasing
11572         is missing be conservative about loads.
11573         * tree-optimize.c (gate_init_datastructures): Remove.
11574         (pass_init_datastructures): New.
11575         * passes.c: Reorder passes so we always go into SSA.
11576
11577 2008-07-19  Jan Hubicka  <jh@suse.cz>
11578
11579         * doc/extend.texi (flatten attribute): Remove note about
11580         unit-at-a-time.
11581         * doc/invoke.texi (--combine): Likewise.
11582         (-finline-functions-called-once): Update levels when enabled.
11583         (-funit-at-a-time): Document new behaviour.
11584         (-ftoplevel-reorder): Document that it is enabled -O0 and imply
11585         -fno-section-anchors when disabled explicitly.
11586         (inline params): They are not ignored now.
11587         (precompiled headers): Remove unit-at-a-time as being incompatible.
11588         * opts.c (decode_options): Handle unit-at-a-time as alias;
11589         imply -fno-section-anchors when toplevel reorder is disabled
11590         explicitly.
11591         * common.opt (ftoplevel-reorder): Set default value to 2.
11592         (funit-at-a-time): Set default value to 1.
11593         * config/rs6000/rs6000.c (optimization_options): Set section anchors
11594         to 2.
11595
11596 2008-07-19  Jan Hubicka  <jh@suse.cz>
11597
11598         * builtins.c (expand_builtin_int_roundingfn,
11599         expand_builtin_int_roundingfn_2): Do not take subtarget argument;
11600         it is not useful.
11601
11602 2008-07-19  Richard Guenther  <rguenther@suse.de>
11603
11604         PR bootstrap/36864
11605         * tree-ssa-sccvn.h (get_constant_value_id): Declare.
11606         * tree-ssa-sccvn.c (get_constant_value_id): New function.
11607         * tree-ssa-pre.c (get_expr_value_id): For newly created
11608         constant value-ids make sure to add the expression to its
11609         expression-set.
11610
11611 2008-07-19  Jakub Jelinek  <jakub@redhat.com>
11612
11613         PR middle-end/36877
11614         * omp-low.c (expand_omp_atomic_fetch_op): Make sure the
11615         return value of the builtin is ignored.
11616
11617 2008-07-19  Olivier Hainque  <hainque@adacore.com>
11618
11619         * doc/tm.texi (MALLOC_ABI_ALIGNMENT): New macro. Alignment, in
11620         bits, a C conformant malloc implementation has to provide.
11621         * defaults.h (MALLOC_ABI_ALIGNMENT): Default to BITS_PER_WORD.
11622
11623 2008-07-19  Joseph Myers  <joseph@codesourcery.com>
11624
11625         PR target/36780
11626         PR target/36827
11627         * reload.c (find_reloads_subreg_address): Only reload address if
11628         reloaded == 0, not for reloaded != 1.
11629
11630         Revert:
11631         2008-07-16  Joseph Myers  <joseph@codesourcery.com>
11632         * config/m32c/m32c.c (BIG_FB_ADJ): Move definition earlier.
11633         (m32c_legitimate_address_p): Handle "++rii" addresses created by
11634         m32c_legitimize_reload_address.
11635
11636         2008-07-15  Kaz Kojima  <kkojima@gcc.gnu.org>
11637         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Allow
11638         (plus (plus (reg) (const_int)) (const_int)) when reload_in_progress.
11639
11640 2008-07-19  Olivier Hainque  <hainque@adacore.com>
11641
11642         * dwarf2out.c (add_subscript_info): New explicit COLLAPSE_P
11643         argument, saying whether nested array are to be collapsed
11644         into a single array type DIE with multiple subscripts.
11645         (gen_array_type_die): Factorize comments about the MIPS_DEBUG_INFO
11646         issues, centralize the nested array types collapsing control and
11647         disable the transformation for Ada.
11648
11649 2008-07-18  Uros Bizjak  <ubizjak@gmail.com>
11650
11651         PR target/36786
11652         * config/i386/i386.md (x86_64_shift_adj_1): Rename from
11653         x86_64_shift_adj.
11654         (x86_64_shift_adj_2): New expander.
11655         (x86_64_shift_adj_3): Ditto.
11656         * config/i386/i386.c (ix86_split_ashr): Use gen_x86_64_shift_adj_3
11657         to split TImode operands.
11658         (ix86_split_ashl): Use gen_x86_64_shift_adj_2 to split TImode operands.
11659         (ix86_split_lshr): Ditto.
11660
11661 2008-07-18  Kris Van Hees  <kris.van.hees@oracle.com>
11662
11663         * c-common.c (c_stddef_cpp_builtins): Define __CHAR16_TYPE__
11664         and __CHAR32_TYPE__.
11665         * c-typeck.c (digest_init): Support char16_t and char32_t.
11666         (set_nonincremental_init_from_string): Idem.
11667
11668 2008-07-18  H.J. Lu  <hongjiu.lu@intel.com>
11669
11670         PR middle-end/36859
11671         * builtins.c (std_gimplify_va_arg_expr): Limit alignment to
11672         PREFERRED_STACK_BOUNDARY.
11673         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
11674
11675 2008-07-18  H.J. Lu  <hongjiu.lu@intel.com>
11676
11677         PR middle-end/36858
11678         * function.c (locate_and_pad_parm): Cap boundary earlier.
11679
11680 2008-07-17  Julian Brown  <julian@codesourcery.com>
11681
11682         * config/arm/arm.c (arm_cxx_determine_class_data_visibility): Make
11683         no-op for targets which don't use DLLs.
11684
11685 2008-07-17  Martin Jambor  <mjambor@suse.cz>
11686
11687         * ipa-cp.c (ipcp_print_all_lattices): New variable info, check
11688         that nodes are relevant by examining the node->analyzed flag.
11689         (ipcp_init_stage): Check which nodes are relevant, assert that the
11690         relevant ones are also required.
11691         (ipcp_propagate_stage): Check on the side arrays are properly
11692         allocated.
11693         (ipcp_print_all_jump_functions): Make sure not to touch any node
11694         that is not analyzed or an edge that does not have a corresponding
11695         entry in the on-the-side vectors.
11696         (ipcp_function_scale_print): Likewise.
11697         (ipcp_update_callgraph): Check that the node is relevant.
11698         (ipcp_insert_stage): Check that the node is relevant.  Check there is
11699         an info for every node and edge.
11700         * ipa-prop.c (ipa_init_func_list): Check the nodes are relevant.
11701         (ipa_print_all_tree_maps): Likewise and a new variable info.
11702         (ipa_print_all_params_modified): Likewise.
11703         * ipa-prop.h (ipa_edge_args_info_available_for_edge_p): New function.
11704
11705 2008-07-17  Roman Zippel <zippel@linux-m68k.org>
11706
11707         PR target/25343
11708         * config/host-linux.c (TRY_EMPTY_VM_SPACE): Define for __mc68000__.
11709
11710 2008-07-17  Paolo Bonzini  <bonzini@gnu.org>
11711
11712         PR rtl-optimization/36753
11713         * fwprop.c (use_killed_between): Don't shortcut
11714         single-definition global registers.
11715
11716 2008-07-16  Jan Hubicka  <jh@suse.cz>
11717
11718         * cgraph.h (varpool_empty_needed_queue): Declare.
11719         * cgraphunit.c (output_in_order): Mark all variables as needed;
11720         empty the queue.
11721         * varpool.c (varpool_assemble_node): Update debug queue.
11722         (varpool_assemble_pending_decls): Don't do it here.
11723         (varpool_empty_needed_queue):  New function.
11724
11725 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11726
11727         * recog.c (peephole2_optimize): Fix formatting.
11728
11729 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11730
11731         * c-pch.c (get_ident): Avoid C++ keywords.
11732         * combine-stack-adj.c (single_set_for_csa): Likewise.
11733         * final.c (asm_insn_count, final_scan_insn, alter_subreg,
11734         output_asm_insn): Likewise.
11735         * reload.c (push_secondary_reload, find_reusable_reload,
11736         push_reload, combine_reloads, find_reloads,
11737         debug_reload_to_stream): Likewise.
11738         * reload.h (struct reload): Likewise.
11739         * reload1.c (reload_reg_class_lower, find_reg, find_reload_regs,
11740         allocate_reload_reg, choose_reload_regs, emit_input_reload_insns,
11741         emit_output_reload_insns): Likewise.
11742         * targhooks.c (default_secondary_reload): Likewise.
11743         * varasm.c (section_entry_eq, object_block_entry_eq): Likewise.
11744
11745 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11746
11747         * recog.c (validate_change_1, validate_change,
11748         validate_unshare_change, validate_replace_rtx_1, struct
11749         funny_match, constrain_operands, peephole2_optimize): Avoid C++
11750         keywords.
11751         * reload.c (push_secondary_reload, secondary_reload_class,
11752         scratch_reload_class, find_valid_class, find_reusable_reload,
11753         push_reload, find_dummy_reload, find_reloads_address_1,
11754         find_reloads_address_part, find_equiv_reg): Likewise.
11755         * reload1.c (spill_failure, eliminate_regs_1, allocate_reload_reg,
11756         choose_reload_regs): Likewise.
11757         * rtlanal.c (replace_rtx, nonzero_bits1, num_sign_bit_copies1):
11758         Likewise.
11759         * rtlhooks.c (gen_lowpart_if_possible): Likewise.
11760         * sched-ebb.c (add_deps_for_risky_insns): Likewise.
11761         * sched-rgn.c (concat_INSN_LIST): Likewise.
11762         * stor-layout.c (mode_for_size, mode_for_size_tree,
11763         smallest_mode_for_size): Likewise.
11764
11765 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11766
11767         * cfg.c (dump_reg_info): Avoid C++ keywords.
11768         * dwarf2asm.c (dw2_force_const_mem,
11769         dw2_asm_output_encoded_addr_rtx): Likewise.
11770         * except.c (gen_eh_region, add_action_record, output_ttype): Likewise.
11771         * expmed.c (expand_shift): Likewise.
11772         * global.c (find_reg): Likewise.
11773         * graph.c (draw_edge): Likewise.
11774         * local-alloc.c (reg_meets_class_p, find_free_reg): Likewise.
11775         * optabs.c (expand_binop, expand_twoval_unop, expand_twoval_binop,
11776         widen_clz, widen_bswap, expand_parity, expand_unop,
11777         emit_cmp_and_jump_insn_1): Likewise.
11778         * postreload.c (reload_cse_simplify_operands): Likewise.
11779         * ra.h (add_neighbor): Likewise.
11780         * reg-stack.c (remove_regno_note, change_stack): Likewise.
11781         * regclass.c (memory_move_secondary_cost, dump_regclass, regclass,
11782         record_reg_classes, copy_cost, record_address_regs,
11783         invalid_mode_change_p): Likewise.
11784         * regrename.c (regrename_optimize, scan_rtx_reg,
11785         dump_def_use_chain, find_oldest_value_reg,
11786         replace_oldest_value_reg, copyprop_hardreg_forward_1): Likewise.
11787
11788 2008-07-16  David Edelsohn  <edelsohn@gnu.org>
11789
11790         * config/rs6000/rs6000.c (processor_target_table): Remove duplicate
11791         MASK_POWERPC64 for power4 in previous commit.
11792
11793 2008-07-16  Olivier Hainque  <hainque@adacore.com>
11794
11795         * collect2.c (scan_prog_file, COFF version): Use CONST_CAST
11796         instead of bare conversion to cast const-ness away.
11797
11798 2008-07-16  Anatoly Sokolov  <aesok@post.ru>
11799
11800         * config/xtensa/xtensa.h (FUNCTION_OUTGOING_VALUE,
11801         XTENSA_FUNCTION_VALUE, XTENSA_FUNCTION_VALUE): Remove.
11802         * config/xtensa/xtensa.c (xtensa_function_value): New function.
11803         (TARGET_FUNCTION_VALUE): Define.
11804
11805 2008-07-16  David Edelsohn  <edelsohn@gnu.org>
11806
11807         * config/rs6000/rs6000.c (processor_target_table): Add
11808         MASK_PPC_GPOPT for power4, power5, power5+, power6, and power6x.
11809
11810 2008-07-16  Joseph Myers  <joseph@codesourcery.com>
11811
11812         PR target/36827
11813         * config/m32c/m32c.c (BIG_FB_ADJ): Move definition earlier.
11814         (m32c_legitimate_address_p): Handle "++rii" addresses created by
11815         m32c_legitimize_reload_address.
11816
11817 2007-07-16  Rafael Ávila de Espíndola  <espindola@google.com>
11818
11819         * c-decl.c (merge_decls): Keep DECL_SOURCE_LOCATION and
11820         DECL_IN_SYSTEM_HEADER in sync.
11821
11822 2008-07-15  Daniel Berlin  <dberlin@dberlin.org>
11823
11824         * tree-ssa-sccvn.c (expressions_equal_p): Check type equality.
11825         * tree-ssa-pre.c (pre_expr_eq): Ditto
11826         (get_constant_for_value_id): Take a type as an argument.
11827         (fully_constant_expression): Pass in type.
11828         (find_or_generate_expression): Short circuit constant case.
11829         (create_expression_by_pieces): Remove special casing of
11830         pointer_plus.
11831         (do_regular_insertion): Short circuit constant case.
11832         (do_partial_partial_insertion): Ditto.
11833
11834 2008-07-15  Kaz Kojima  <kkojima@gcc.gnu.org>
11835
11836         PR target/36782
11837         * config/sh/sh.md (symGOT_load): Don't add REG_EQUAL note.
11838
11839 2008-07-15  Bob Wilson  <bob.wilson@acm.org>
11840
11841         * config/xtensa/libgcc-xtensa.ver: New file.
11842         * config/xtensa/t-linux (SHLIB_MAPFILES): Append libgcc-xtensa.ver.
11843
11844 2008-07-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11845
11846         * df-problems.c (df_set_note): Avoid C++ keywords.
11847         * df-scan.c (df_ref_change_reg_with_loc_1): Likewise.
11848         * dse.c (record_store, remove_useless_values): Likewise.
11849         * emit-rtl.c (gen_reg_rtx, update_reg_offset, gen_rtx_REG_offset,
11850         gen_reg_rtx_offset, operand_subword, change_address_1,
11851         change_address, adjust_address_1, offset_address,
11852         widen_memory_access, emit_copy_of_insn_after): Likewise.
11853         * explow.c (round_push, allocate_dynamic_stack_space): Likewise.
11854         * fwprop.c (should_replace_address, propagate_rtx_1,
11855         propagate_rtx, try_fwprop_subst, forward_propagate_and_simplify):
11856         Likewise.
11857         * gcse.c (cprop_jump, find_implicit_sets, bypass_block,
11858         gcse_emit_move_after, update_ld_motion_stores): Likewise.
11859         * lcm.c (compute_insert_delete, pre_edge_lcm,
11860         compute_rev_insert_delete, pre_edge_rev_lcm): Likewise.
11861         * lower-subreg.c (resolve_reg_notes): Likewise.
11862         * mode-switching.c (optimize_mode_switching): Likewise.
11863
11864 2008-07-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11865
11866         * bt-load.c (add_btr_def, migrate_btr_def,
11867         branch_target_load_optimize): Avoid C++ keywords.
11868         * caller-save.c (insert_restore, insert_save, insert_one_insn):
11869         Likewise.
11870         * combine.c (subst, simplify_set, make_extraction,
11871         make_compound_operation, known_cond, simplify_shift_const_1): Likewise.
11872         * cse.c (make_regs_eqv, merge_equiv_classes, validate_canon_reg,
11873         fold_rtx, equiv_constant, cse_insn, cse_process_notes_1): Likewise.
11874
11875 2008-07-15  Richard Guenther  <rguenther@suse.de>
11876
11877         PR middle-end/36369
11878         * c-common.c (strict_aliasing_warning): Do not warn for
11879         TYPE_REF_CAN_ALIAS_ALL pointers.
11880         (c_common_get_alias_set): may_alias types are not special.
11881         * tree.c (build_pointer_type_for_mode): Look up the may_alias
11882         attribute and set can_ref_all accordingly.
11883         (build_reference_type_for_mode): Likewise.
11884         * doc/extend.texi (may_alias): Clarify.
11885
11886 2008-07-15  Kaz Kojima  <kkojima@gcc.gnu.org>
11887
11888         PR target/36780
11889         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Allow
11890         (plus (plus (reg) (const_int)) (const_int)) when reload_in_progress.
11891
11892 2008-07-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11893
11894         PR target/31568
11895         * config/rs6000/rs6000.c (print_operand <case 'y'>): Don't use
11896         gcc_assert, instead call output_operand_lossage.
11897
11898 2008-07-15  Kai Tietz  <kai.tietz@onevision.com>
11899
11900         * builtins.c (std_canonical_va_list): Treat structure based
11901         va_list types.
11902
11903 2008-07-15  Ben Elliston  <bje@au.ibm.com>
11904
11905         * emit-rtl.c (set_mem_attributes_minus_bitpos): Improve comment.
11906
11907 2007-07-14  Rafael Ávila de Espíndola  <espindola@google.com>
11908
11909         * c-decl.c (diagnose_mismatched_decls): Don't warn if TREE_NO_WARNING
11910         is set.
11911
11912 2008-07-14  Jan Hubicka  <jh@suse.cz>
11913
11914         * i386.md (sse5 cmov pattern): Update call of ix86_sse5_valid_op_p
11915         * sse.md (sse5 patterns): Update call of ix86_sse5_valid_op_p;
11916         fix predicates and constraints.
11917         * i386.c (ix86_sse5_valid_op_p): Add commutative parameter.
11918         * i386-protos.h (ix86_sse5_valid_op_p): Update declaration.
11919
11920 2008-07-14  Doug Kwan  <dougkwan@google.com>
11921
11922         * config.gcc (arm*-*-eabi*): Include arm/eabi.h and use
11923         additional option file arm/eabi.opt.
11924         * config/arm/eabi.h (File): New configuration file for EABI targets.
11925         * config/arm/elf.h (SUBTARGET_EXTRA_SPECS): Add
11926         SUBSUBTARGET_EXTRA_SPECS.
11927         (SUBSUBTARGET_EXTRA_SPECS): Provide empty default.
11928         * config/arm/unknown-elf.h (UNKNOWN_ELF_STARTFILE_SPEC): Renamed
11929         from STARTFILE_SPEC so that it can be referenced in an override.
11930         (STARTFILE_SPEC): Use UNKNOWN_ELF_STARTFILE_SPEC.
11931         (UNKNOWN_ELF_ENDFILE_SPEC): Renamed from ENDFILE_SPEC so that it
11932         can be referenced in an override.
11933         (ENDFILE_SPEC): Use UNKNOWN_ELF_ENDFILE_SPEC.
11934         * config/arm/bpabi.h (BPABI_LINK_SPEC): Renamed from LINK_SPEC
11935         so that it can be referenced in an override.
11936         (LINK_SPEC): Use BPABI_LINK_SPEC.
11937         * config/arm/eabi.opt (File): New.
11938
11939 2008-07-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11940
11941         * Makefile.in (TARGET_DEF_H): Add targhooks.h.
11942         (FIXED_VALUE_H): New variable.
11943         (RTL_BASE_H): Use $(INPUT_H) and $(FIXED_VALUE_H) instead of
11944         input.h, fixed-value.h.
11945         (TREE_H): Use $(INPUT_H), add $(SYMTAB_H).
11946         (BASIC_BLOCK_H): Use $(BITMAP_H).
11947         (FUNCTION_H): Add varray.h.
11948         (IPA_REFERENCE_H): Use $(BITMAP_H).
11949         (CGRAPH_H): Add $(BASIC_BLOCK_H).
11950         (DF_H): Use $(BITMAP_H).
11951         (GGC_H): Add statistics.h.
11952         (INSN_ADDR_H): New.
11953         (INSN_ATTR_H): Use it.
11954         (SYSTEM_H): Add safe-ctype.h, filenames.h.
11955         (INPUT_H): New.
11956         (SYMTAB_H): Add $(OBSTACK_H).
11957         (CPP_INTERNAL_H): New.
11958         (TREE_DUMP_H): Add tree-pass.h.
11959         (TREE_FLOW_H): Use $(BITMAP_H)
11960         (PRETTY_PRINT_H): Use $(INPUT_H).
11961         (EBITMAP_H): Rename from typo-ed EBIMAP_H.
11962         (GSTAB_H): New.
11963         (BITMAP_H): New.
11964         (many object files): Fix lots of header dependencies throughout.
11965
11966 2008-07-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11967
11968         * Makefile.in (write_entries_to_file, write_entries_to_file_split):
11969         New macros.
11970         (s-gtyp-input): Use them to write tmp-gi.list.
11971         (echo_to_gi.list): Remove.
11972
11973 2008-07-14  Richard Guenther  <rguenther@suse.de>
11974
11975         * tree-ssa-sccvn.c (pre_info): Remove.
11976         (switch_to_PRE_table): Likewise.
11977         (free_scc_vn): Do not clear SSA_NAME_VALUE.  Do not free pre_info.
11978         (set_hashtable_value_ids): Do not create value-ids for the
11979         optimistic tables.
11980         (run_scc_vn): Remove double test.  Remove bogus special-case
11981         in value-number printing.
11982         * tree-ssa-sccvn.h (switch_to_PRE_table): Remove.
11983         * tree-ssa-ccp.c (get_symbol_constant_value): Do not look at
11984         SSA_NAME_VALUE.
11985         * tree-flow-inline.h (get_value_handle): Remove.
11986         * tree-flow.h (get_value_handle): Remove.
11987
11988 2008-07-14  Martin Jambor  <mjambor@suse.cz>
11989
11990         * tree-switch-conversion.c (gen_inbound_check): Make sure the type
11991         in which we generate arithmetics is not a subrange.
11992
11993 2008-07-14  Martin Jambor  <mjambor@suse.cz>
11994
11995         * Makefile.in (IPA_PROP_H): Added ipa-prop.h to IPA_PROP_H variable.
11996
11997 2008-07-14  Richard Guenther  <rguenther@suse.de>
11998
11999         * tree-ssa-pre.c (insert_into_preds_of_block): Do not call convert.
12000
12001 2008-07-14  Andreas Krebbel  <krebbel1@de.ibm.com>
12002
12003         PR target/36745
12004         * config/s390/s390.c: (s390_secondary_reload): Add a secondary
12005         reload for symbol refs moved to r0 with -fPIC.
12006         (legitimize_pic_address): Use the target register as temporary
12007         reg if possible.
12008         (emit_symbolic_move): Adjust comment.
12009         * config/s390/s390.md (reloadsi_PIC_addr, reloaddi_PIC_addr):
12010         New expanders.
12011
12012 2008-07-14  Ben Elliston  <bje@au.ibm.com>
12013
12014         * c-common.h (C_CPP_HASHNODE): New macro.
12015         * coretypes.h (struct cpp_token): Forward declare.
12016         * doc/extend.texi (PowerPC AltiVec Built-in Functions): Document
12017         the context-sensitive keyword method.
12018         * config/rs6000/rs6000-c.c (__vector_keyword, vector_keyword,
12019         __pixel_keyword, pixel_keyword, __bool_keyword, bool_keyword,
12020         expand_bool_pixel): New.
12021         (altivec_categorize_keyword): New function.
12022         (init_vector_keywords): New function.
12023         (rs6000_macro_to_expand): Likewise.
12024         (rs6000_cpu_cpp_builtins): Enable context-sensitive macros if not
12025         compiling an ISO C dialect.
12026
12027 2008-07-13  Daniel Berlin  <dberlin@dberlin.org>
12028
12029         * tree-ssa-pre.c (fully_constant_expression): Add fold_convert calls.
12030         (create_expression_by_pieces): Fix typo.
12031         (do_regular_insertion): Use debug counter here too.
12032
12033 2008-07-14  Hans-Peter Nilsson  <hp@axis.com>
12034
12035         PR target/35492.
12036         * config/cris/cris.h (CRIS_CONST_OK_FOR_LETTER_P): Renamed from
12037         CONST_OK_FOR_LETTER_P.  All port-local users changed.
12038         (CONST_OK_FOR_CONSTRAINT_P): Define; implement Kc as old K,
12039         implement Kp matching power-of-two.
12040         (CONSTRAINT_LEN): Define to match.
12041         * config/cris/cris.md: Replace all use of constraint K with Kc.
12042         ("*btst*): Use Kp for operand 0 of last alternative.
12043
12044 2008-07-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
12045
12046         PR testsuite/36440
12047         * tree-call-cdce.c (check_target_format): Accept MIPS single, double
12048         and quad formats.
12049
12050 2008-07-13  Jan Hubicka  <jh@suse.cz>
12051
12052         * tree.c (decl_assembler_name_equal): Expect assembler name of decl
12053         to be mangled too.
12054
12055 2008-07-13  Richard Guenther  <rguenther@suse.de>
12056
12057         PR middle-end/36811
12058         * langhooks.c (lhd_print_error_function): Deal with recursive
12059         BLOCK trees.
12060
12061 2008-07-12  Jan Hubicka  <jh@suse.cz>
12062
12063         * cgraph.c (assembler_name_hash): New static var.
12064         (hash_node_by_assembler_name, eq_assembler_name): New.
12065         (cgraph_node_for_asm): Use hashtable.
12066         (cgraph_remove_node): Maintain hashtable.
12067         (change_decl_assembler_name): Sanity check that names are not changing
12068         after aliasing was processed.
12069         * cgraph.h (varpoon_node): Add next GGC marker.
12070         * tree.c (decl_assembler_name_equal): Constify.
12071         (decl_assembler_name_hash): New.
12072         * tree.h (decl_assembler_name_equal): Constify.
12073         (decl_assembler_name_hash): Update.
12074
12075 2008-07-12  David Daney  <ddaney@avtrex.com>
12076
12077         * config/mips/driver-native.c (host_detect_local_cpu): Handle
12078         sb1 and r5000 cpus.
12079
12080 2008-07-12  Richard Sandiford  <rdsandiford@googlemail.com>
12081
12082         * doc/md.texi: Document the MIPS "v" constraint.
12083         * config/mips/mips.h (reg_class): Revert last change.
12084         (REG_CLASS_NAMES): Likewise.
12085         (REG_CLASS_CONTENTS): Likewise.
12086         * config/mips/mips.c (mips_regno_to_class): Likewise.
12087         * config/mips/constraints.md (v): Likewise, but add documentation.
12088         Add a comment to say that this constraint should not be used in
12089         gcc code.
12090
12091 2008-07-11  DJ Delorie  <dj@redhat.com>
12092
12093         * config/h8300/h8300.md (length): Fix branch offset limit.
12094
12095 2008-07-11  Anatoly Sokolov  <aesok@post.ru>
12096
12097         * config/avr/avr-protos.h (avr_peep2_scratch_safe): Remove prototype.
12098         * config/avr/avr.c (avr_peep2_scratch_safe): Remove.
12099         (avr_hard_regno_scratch_ok): New function.
12100         (TARGET_HARD_REGNO_SCRATCH_OK): Define.
12101         * config/avr/avr.md (all peepholes that request a scratch register):
12102         Remove avr_peep2_scratch_safe use.
12103
12104 2008-07-11  Tom Tromey  <tromey@redhat.com>
12105             Ian Lance Taylor  <iant@google.com>
12106
12107         * c-common.h (enum rid): Add RID_CXX_COMPAT_WARN.
12108         (struct c_common_resword): Define.
12109         (D_CONLY, D_CXXONLY, D_C99, D_CXX0X, D_EXT, D_EXT89): Define.
12110         (D_ASM, D_OBJC, D_CXX_OBJC, D_CXXWARN): Define.
12111         (c_common_reswords, num_c_common_reswords): Declare.
12112         * c-common.c (c_common_reswords): New global const array.
12113         (num_c_common_reswords): New const int.
12114         * c-parser.c (struct resword, reswords): Don't define.
12115         (D_C89, D_EXT, D_EXT89, D_OBJC): Don't define.
12116         (c_parse_init): Clarify mask code.  Use c_common_reswords rather
12117         than reswords.  If warning about C++ keywords, give them a special
12118         RID code.
12119         (c_lex_one_token): Warn about C++ keywords.  Call
12120         objc_is_reserved_word rather than OBJC_IS_AT_KEYWORD.
12121         (c_parser_external_declaration): Look for RID_xxx rather than
12122         RID_AT_xxx, for ObjC++ keywords which are also C++ keywords.
12123         (c_parser_statement_after_labels): Likewise.
12124         (c_parser_objc_class_instance_variables): Likewise.
12125         (c_parser_objc_class_declaration): Likewise.
12126         (c_parser_objc_try_catch_statement): Likewise.
12127         * c-decl.c (c_print_identifier): Ignore RID_CXX_COMPAT_WARN.
12128         (declspecs_add_type): Likewise.
12129
12130 2008-07-11  Angelo Graziosi  <angelo.graziosi@alice.it>
12131
12132         * ggc-page.c (alloc_page):
12133         Substituting xmalloc, xcalloc with
12134         XNEWVEC and XCNEWVAR macros which add the
12135         needed casts.
12136
12137 2008-07-11  Richard Guenther  <rguenther@suse.de>
12138
12139         PR tree-optimization/36765
12140         * tree-ssa-alias.c (compute_flow_insensitive_aliasing): Add
12141         aliases from HEAP vars to SMTs.
12142
12143 2008-07-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12144
12145         * Makefile.in (LOOSE_WARN, STRICT_WARN): Update comments.
12146         * configure.ac (loose_warn): Move -Wc++-compat from here...
12147         (strict_warn): ...to here.
12148         * configure: Regenerate.
12149
12150 2008-07-10  Joseph Myers  <joseph@codesourcery.com>
12151
12152         * config.gcc (arm-*-coff*, armel-*-coff*, h8300-*-*,
12153         i[34567]86-*-aout*, i[34567]86-*-coff*, m68k-*-aout*,
12154         m68k-*-coff*, sh-*-*, mips-sgi-irix[56]*, pdp11-*-bsd,
12155         rs6000-ibm-aix4.[12]*, powerpc-ibm-aix4.[12]*): Deprecate targets,
12156         excluding more specific h8300-*-* and sh-*-* targets.
12157
12158 2008-07-10  Daniel Berlin  <dberlin@dberlin.org>
12159
12160         * tree-ssa-pre.c (create_expression_by_pieces): Add fold_convert calls.
12161         (eliminate): Ditto.
12162         (execute_pre): Call loop_optimizer_finalize in early exit.
12163
12164 2008-07-10  Jakub Jelinek  <jakub@redhat.com>
12165
12166         PR middle-end/36790
12167         * omp-low.c (lower_omp_2): If task_shared_vars, test all DECL_P
12168         uids in the bitmap, not just VAR_DECL uids.
12169
12170         PR rtl-optimization/36419
12171         * combine-stack-adj.c (adjust_frame_related_expr): New function.
12172         (combine_stack_adjustments_for_block): Call it if needed.  Delete
12173         correct insn.
12174         * dwarf2out.c (dwarf2out_frame_debug_expr): Adjust
12175         DW_CFA_GNU_args_size if CSA pass merged some adjustments into
12176         prologue sp adjustment.
12177
12178 2008-07-10  Peter Maydell  <pmaydell@chiark.greenend.org.uk>
12179
12180         PR other/28322
12181         * opts.c (print_ignored_options): Report postponed diagnostics for
12182         unknown -Wno-* options as warnings, not errors.
12183         (postpone_unknown_option_error): Renamed to...
12184         (postpone_unknown_option_warning): ... this.
12185
12186 2008-07-09  Doug Kwan  <dougkwan@google.com>
12187
12188         Revert:
12189         2008-07-08  Doug Kwan  <dougkwan@google.com>
12190
12191         * config/arm/arm.opt (mandroid): New option.
12192         * config/arm/bpabi.h (ANDROID_LINK_SPEC): New macro.
12193         (LINK_SPEC): Enable Android specific behaviour when -mandroid is used.
12194         (CC1_SPEC): Same.
12195         (CC1PLUS_SPEC): Same.
12196         (LIB_SPEC): Same.
12197         (STARTFILE_SPEC): Same.
12198         (ENDFILE_SPEC): Same.
12199         (TARGET_BPABI_CPP_BUILTINS): Define __ANDROID__ when -mandroid is
12200         used.
12201
12202 2008-07-09  Richard Sandiford  <rdsandiford@googlemail.com>
12203
12204         PR target/35802
12205         * config/mips/mips.h (reg_class): Remove V1_REG.
12206         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Update accordingly.
12207         * config/mips/mips.c (mips_regno_to_class): Map $3 to M16_NA_REGS
12208         instead of V1_REGS.
12209         (mips_get_tp): New function.
12210         (mips_legitimize_tls_address): Use it.
12211         * config/mips/constraints.md (v): Delete.
12212         * config/mips/mips.md (TLS_GET_TP_REGNUM): New constant.
12213         (tls_get_tp_<mode>): Allow any GPR destination and clobber $3.
12214         After reload, split into a move and ...
12215         (*tls_get_tp_<mode>_split): ...this new instruction.
12216
12217 2008-07-09  David Daney  <ddaney@avtrex.com>
12218
12219         * config/mips/driver-native.c: Include coretypes.h and tm.h.
12220
12221 2008-07-09  Jakub Jelinek  <jakub@redhat.com>
12222
12223         * gimplify.c (struct gimplify_ctx): Move to tree-gimple.h.
12224         (push_gimplify_context): Don't allocate temp_htab nor c itself here.
12225         Add c argument.
12226         (pop_gimplify_context): Check c->temp_htab instead of optimize whether
12227         htab_delete should be called.  Don't free c.
12228         (lookup_tmp_var): Create temp_htab lazily.
12229         (gimplify_scan_omp_clauses, gimplify_omp_parallel, gimplify_omp_task,
12230         gimplify_body, force_gimple_operand): Adjust push_gimplify_context
12231         callers.
12232         * omp-low.c (lower_omp_sections, lower_omp_single, lower_omp_master,
12233         lower_omp_ordered, lower_omp_critical, lower_omp_for,
12234         create_task_copyfn, lower_omp_taskreg, execute_lower_omp):
12235         * tree-ssa-ccp.c (convert_to_gimple_builtin): Likewise.
12236         * tree-sra.c (generate_element_init): Likewise.
12237         * tree-mudflap.c (execute_mudflap_function_ops,
12238         execute_mudflap_function_decls): Likewise.
12239         * tree-inline.c (setup_one_parameter, optimize_inline_calls): Likewise.
12240         * tree-gimple.h (struct gimplify_ctx): New type.
12241         (push_gimplify_context): Adjust prototype.
12242
12243 2008-07-09  Daniel Berlin  <dberlin@dberlin.org>
12244
12245         * tree-ssa-pre.c (phi_translate_1): Update placement of
12246         add_to_value calls.
12247
12248 2008-07-09  Anatoly Sokolov  <aesok@post.ru>
12249
12250         * target.h (struct gcc_target): Add hard_regno_scratch_ok field.
12251         * target-def.h (TARGET_HARD_REGNO_SCRATCH_OK): New.
12252         (TARGET_INITIALIZER): Use TARGET_HARD_REGNO_SCRATCH_OK.
12253         * targhooks.c (default_hard_regno_scratch_ok): New function.
12254         * targhooks.h (default_hard_regno_scratch_ok): Declare function.
12255         * doc/tm.texi: Document TARGET_HARD_REGNO_SCRATCH_OK hook.
12256         * recog.c:  Include "target.h".
12257         (peep2_find_free_register): Add check for global regs. Add target
12258         specific check.
12259         * Makefile.in (recog.o): Depend on target.h.
12260
12261 2008-07-09  Kaz Kojima  <kkojima@gcc.gnu.org>
12262
12263         * config/sh/sh.c (sh_canonical_va_list_type): New.
12264         (TARGET_CANONICAL_VA_LIST_TYPE): Define.
12265
12266 2008-07-09  Raksit Ashok <raksit@google.com>
12267
12268         * doc/invoke.texi (Option Summary): Mention new option
12269         -Wdisallowed-function-list=...
12270         (Warning Options): Document -Wdisallowed-function-list=...
12271         * common.opt (Wdisallowed-function-list=): New flag.
12272         * flags.h (warn_disallowed_functions): External definition of new
12273         boolean warning flag.
12274         (warn_if_disallowed_function_p): Declare new function.
12275         * opts.c (warning_disallowed_functions): New static variable.
12276         (warn_disallowed_functions): New boolean warning flag.
12277         (warn_if_disallowed_function_p): New function.
12278         (add_comma_separated_to_vector): Rename
12279         add_instrument_functions_exclude_list to this.
12280         (common_handle_option): Handle new option. Rename calls to
12281         add_instrument_functions_exclude_list into calls to
12282         add_comma_separated_to_vector.
12283         * c-parser.c (c_parser_postfix_expression_after_primary): New warning
12284         based on flag warn_disallowed_functions.
12285
12286 2008-07-09  Christian Bruel  <christian.bruel@st.com>
12287
12288         * final.c (get_attr_length_1): Call get_attr_length_1 with fallback_fn
12289          instead of get_attr_length.
12290
12291 2008-07-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12292
12293         * genattrtab.c (insert_right_side, evaluate_eq_attr): Avoid C++
12294         keywords.
12295         * genemit.c (gen_insn): Likewise.
12296         * gengtype.c (note_def_vec): Likewise.
12297         * gengtype.h (note_def_vec): Likewise.
12298         * genoutput.c (struct data, output_insn_data, process_template,
12299         gen_expand, gen_split, note_constraint): Likewise.
12300         * genrecog.c (new_decision, add_to_sequence, factor_tests,
12301         make_insn_sequence): Likewise.
12302         * gensupport.c (record_insn_name): Likewise.
12303
12304 2008-07-08  Doug Kwan  <dougkwan@google.com>
12305
12306         * config/arm/arm.opt (mandroid): New option.
12307         * config/arm/bpabi.h (ANDROID_LINK_SPEC): New macro.
12308         (LINK_SPEC): Enable Android specific behaviour when -mandroid is used.
12309         (CC1_SPEC): Same.
12310         (CC1PLUS_SPEC): Same.
12311         (LIB_SPEC): Same.
12312         (STARTFILE_SPEC): Same.
12313         (ENDFILE_SPEC): Same.
12314         (TARGET_BPABI_CPP_BUILTINS): Define __ANDROID__ when -mandroid is
12315         used.
12316
12317 2008-07-08  Raksit Ashok  <raksit@google.com>
12318
12319         * expr.c (emit_block_move_via_movmem): Fix expected_align parameter.
12320         (set_storage_via_setmem): Fix expected_align parameter.
12321         * doc/invoke.texi (i386 and x86-64 Options): Add a couple of options
12322         missing from the list.
12323         * doc/md.texi (movmem): Explicitly state that expected alignment is
12324         to be expressed in bytes.
12325         (setmem): Explicitly state that expected alignment is to be expressed
12326         in bytes.
12327
12328 2008-07-08  Joseph Myers  <joseph@codesourcery.com>
12329
12330         * reload.c (find_reloads_subreg_address): Do not require validity
12331         of address in original mode before reloading address.
12332
12333 2008-07-07  Tianwei Sheng  <tianweis@google.com>
12334
12335         * df-core.c (df_remove_problem): Adjust the access to avoid out of
12336         bounds array access.
12337
12338 2008-07-08  Jakub Jelinek  <jakub@redhat.com>
12339
12340         * tree-sra.c (sra_build_assignment): Handle CONVERT_EXPR_P dst.
12341
12342 2008-07-05  Daniel Berlin  <dberlin@dberlin.org>
12343
12344         Fix PR tree-optimization/23455
12345         Fix PR tree-optimization/35286
12346         Fix PR tree-optimization/35287
12347         * Makefile.in (OBJS-common): Remove tree-vn.o.
12348         (tree-vn.o): Remove.
12349         * dbgcnt.def: Add treepre_insert debug counter.
12350         * gcc/tree-flow.h (add_to_value): Updated for other changes.
12351         (debug_value_expressions): Ditto.
12352         (print_value_expressions): Ditto.
12353         * tree-pretty-print.c (dump_generic_node): Updated for
12354         VALUE_HANDLE removal.
12355         * tree-ssa-dom.c (record_equality): Ditto.
12356         (cprop_operand): Ditto.
12357         (lookup_avail_expr): Ditto.
12358         * tree-ssa-threadedge.c
12359         (record_temporary_equivalences_from_stmts_at_dest): Ditto.
12360         (simplify_control_stmt_condition): Ditto.
12361         * tree.c (tree_code_size): Ditto.
12362         (tree_node_structure): Ditto.
12363         (iterative_hash_expr): Ditto.
12364         * tree.def: Ditto.
12365         * tree.h (VALUE_HANDLE_ID): Ditto.
12366         (VALUE_HANDLE_EXPR_SET): Ditto.
12367         (struct tree_value_handle): Ditto.
12368         (union tree_node): Ditto.
12369         * treestruct.def: Ditto.
12370         * tree-vn.c: Removed.
12371         * tree-ssa-pre.c: Rewritten entirely.
12372         * tree-ssa-sccvn.c (constant_to_value_id): New hashtable.
12373         (constant_value_ids): Ditto.
12374         (vn_nary_op_t): Moved to header.
12375         (vn_phi_t): Ditto.
12376         (vn_reference_op_t): Ditto
12377         (vn_reference_t): Ditto.
12378         (next_value_id): New variable.
12379         (VN_INFO): Add an assert.
12380         (vn_constant_eq): New function.
12381         (vn_constant_hash): Ditto.
12382         (get_or_alloc_constant_value_id): Ditto.
12383         (value_id_constant_p): Ditto.
12384         (vn_reference_compute_hash): De-staticify.
12385         (copy_reference_ops_from_ref): Don't use get_callee_fndecl.
12386         Disable some code with a FIXME.  Remove VALUE_HANDLE use.
12387         (valueize_refs): Update opcode if it changes from ssa name to constant.
12388         (vn_reference_lookup_1): Add new argument.
12389         (vn_reference_lookup):  Ditto.
12390         (vn_reference_lookup_pieces): New function.
12391         (vn_reference_insert): Add return type. Modify to deal with value ids.
12392         (vn_reference_insert_pieces):  New function.
12393         (vn_nary_op_compute_hash): De-staticify.
12394         (vn_nary_op_eq): Ditto.
12395         (vn_nary_op_lookup_pieces): New function.
12396         (vn_nary_op_lookup): Add new argument.
12397         (vn_nary_op_insert_pieces): New function.
12398         (vn_nary_op_insert): Add return type. Modify to deal with value ids.
12399         (vn_phi_insert): Ditto.
12400         (visit_unary_op): Update for callee changes.
12401         (visit_binary_op): Ditto.
12402         (visit_reference_op_load): Ditto.
12403         (visit_reference_op_store): Ditto.
12404         (init_scc_vn): Init next_value_id, constant_to_value_id and
12405         constant_value_ids.
12406         (free_scc_vn): Free them.
12407         (set_hashtable_value_ids): New function.
12408         (run_scc_vn): Use it.
12409         (get_max_value_id): New function.
12410         (get_next_value_id): Ditto.
12411         (expressions_equal_p): Moved from tree-vn.c
12412         (sort_vuses): Ditto.
12413         (sort_vuses_heap): Ditto.
12414         * tree-ssa-sccvn.h: Structures moved from tree-ssa-sccvn.c (noted
12415         above).
12416         * tree.c (iterative_hash_hashval_t): Made non-static
12417         * tree.h (iterative_hash_hashval_t): Declare it.
12418
12419 2008-07-08  Martin Jambor  <mjambor@suse.cz>
12420
12421         * ipa-cp.c (ipcp_init_cloned_node): Call ipa_check_create_node_params
12422         instead of ipa_create_node_params.
12423         (ipcp_driver): Allocate infos with ipa_check_create_node_params and
12424         ipa_check_create_edge_args, free them with
12425         free_all_ipa_structures_after_ipa_cp, call ipa_register_cgraph_hooks.
12426
12427         * ipa-prop.c: Include flags.h and tree-inline.h.
12428         (ipa_node_params_vector): New variable.
12429         (ipa_edge_args_vector): New variable.
12430         (edge_removal_hook_holder): New variable.
12431         (node_removal_hook_holder): New variable.
12432         (edge_duplication_hook_holder): New variable.
12433         (node_duplication_hook_holder): New variable.
12434         (ipa_detect_param_modifications): Check for presence of modified flags.
12435         (ipa_compute_jump_functions): Check for presence of jump functions.
12436         (ipa_free_edge_args_substructures): New function.
12437         (ipa_create_node_params): Removed.
12438         (ipa_free_all_edge_args): Changed to deallocate the on-the-side vector.
12439         (ipa_free_node_params_substructures): New function.
12440         (ipa_free_all_node_params): Changed to deallocate the on-the-side
12441         vector.
12442         (ipa_edge_removal_hook): New function.
12443         (ipa_node_removal_hook): New function.
12444         (duplicate_array): New function.
12445         (ipa_edge_duplication_hook): New function.
12446         (ipa_node_duplication_hook): New function.
12447         (ipa_register_cgraph_hooks): New function.
12448         (ipa_unregister_cgraph_hooks): New function.
12449         (free_all_ipa_structures_after_ipa_cp): New function.
12450
12451         * ipa-prop.h: Include vec.h.
12452         (ipa_node_params_t): New typedef with vector types for it.
12453         (ipa_edge_args_t):  New typedef with vector types for it.
12454         (IPA_NODE_REF): Changed to access an on-the-side vector.
12455         (IPA_EDGE_REF): Changed to access an on-the-side vector.
12456         (ipa_check_create_node_params): New function.
12457         (ipa_check_create_edge_args): New function.
12458
12459         * Makefile.in (IPA_PROP_H): New variable for ipa-prop.h.  Converted
12460         all users.
12461
12462 2008-07-07  Tom Tromey  <tromey@redhat.com>
12463
12464         * configure, config.in: Rebuilt.
12465         * configure.ac: Don't check for scandir or alphasort.
12466
12467 2008-07-07  Joseph Myers  <joseph@codesourcery.com>
12468
12469         * config/arm/arm.c (arm_init_neon_builtins): Register built-in
12470         types immediately after creating them.
12471
12472 2008-07-07  Joseph Myers  <joseph@codesourcery.com>
12473
12474         * config/arm/aout.h (DOLLARS_IN_IDENTIFIERS): Remove.
12475
12476 2008-07-07  Fernando Pereira <fernando@cs.ucla.edu>
12477
12478         * tree-ssa-structalias.c (compute_points_to_sets): Add call to
12479         dump_constraint_graph.
12480         (dump_constraint_edge): New function.
12481         (dump_constraint_graph): New function.
12482         (debug_constraint_graph): New function.
12483         (dump_constraint): Removed useless comparison.
12484         * tree-ssa-structalias.h (dump_constraint_edge): Declare.
12485         (dump_constraint_graph): Declare.
12486         (debug_constraint_graph): Declare.
12487         * tree-dump.c (struct dump_option_value_info): Declare TDF_GRAPH.
12488
12489 2008-07-07  Kai Tietz  <kai.tietz@onevision.com>
12490
12491         * config/i386/i386.c (is_va_list_char_pointer): New.
12492         (ix86_va_start): Replace compare with ms_va_list_type_node
12493         by is_va_list_char_pointer.
12494         (ix86_gimplify_va_arg): Likewise.
12495
12496 2008-07-07  Martin Jambor  <mjambor@suse.cz>
12497
12498         * cgraph.c (cgraph_edge_max_uid): New variable.
12499         (struct cgraph_edge_hook_list): New type.
12500         (struct cgraph_node_hook_list): New type.
12501         (struct cgraph_2edge_hook_list): New type.
12502         (struct cgraph_2node_hook_list): New type.
12503         (first_cgraph_edge_removal_hook): New variable.
12504         (first_cgraph_node_removal_hook): New variable.
12505         (first_cgraph_edge_duplicated_hook): New variable.
12506         (first_cgraph_node_duplicated_hook): New variable.
12507         (cgraph_add_edge_removal_hook): New function.
12508         (cgraph_remove_edge_removal_hook): New function.
12509         (cgraph_call_edge_removal_hooks):  New function.
12510         (cgraph_add_node_removal_hook):  New function.
12511         (cgraph_remove_node_removal_hook):  New function.
12512         (cgraph_call_node_removal_hooks):  New function.
12513         (cgraph_add_edge_duplication_hook):  New function.
12514         (cgraph_remove_edge_duplication_hook):  New function.
12515         (cgraph_call_edge_duplication_hooks):  New function.
12516         (cgraph_add_node_duplication_hook):  New function.
12517         (cgraph_remove_node_duplication_hook):  New function.
12518         (cgraph_call_node_duplication_hooks):  New function.
12519         (cgraph_create_edge): Assign to edge uid.
12520         (cgraph_remove_edge): Call edge removal hooks.
12521         (cgraph_node_remove_callees): Call edge removal hooks.
12522         (cgraph_node_remove_callers): Call edge removal hooks.
12523         (cgraph_remove_node): Call node removal hooks.
12524         (cgraph_clone_edge): Call edge duplication hooks.
12525         (cgraph_clone_node): Call node duplication hooks.
12526
12527         * cgraph.h (cgraph_edge): New field uid.
12528         (cgraph_edge_hook): New type.
12529         (cgraph_node_hook): New type.
12530         (cgraph_2edge_hook): New type.
12531         (cgraph_2node_hook): New type.
12532
12533 2008-07-07  Andreas Tobler  <a.tobler@schweiz.org>
12534
12535         * config.in: Regenerate.
12536
12537 2008-07-07  Vladimir Prus  <vladimir@codesourcery.com>
12538
12539         * gcc.c (print_sysroot): New.
12540         (option_map, display_help, process_command): Handle the
12541         -print-sysroot option.
12542         (main): Print the sysroot if requested.
12543         * doc/invoke.texi (Debugging Options): Document -print-sysroot.
12544
12545 2008-07-07  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
12546
12547         PR target/34780
12548         * unwind-pe.h (size_of_encoded_value): add attribute unused.
12549
12550 2008-07-07  Daniel Jacobowitz  <dan@codesourcery.com>
12551
12552         * function.c (assign_parm_remove_parallels): Check mode of entry_parm.
12553         (assign_parm_setup_block_p): Also check mode of entry_parm.
12554
12555 2008-07-07  Richard Guenther  <rguenther@suse.de>
12556
12557         * tree-ssa-structalias.h (set_used_smts): Remove.
12558         * tree-ssa-structalias.c (used_smts): Likewise.
12559         (set_used_smts): Likewise.
12560         * tree-ssa-alias.c (compute_flow_sensitive_aliasing): Remove
12561         call to set_used_smts.
12562
12563 2008-07-07  Richard Guenther  <rguenther@suse.de>
12564
12565         * tree-ssa-structalias.c (struct variable_info): Add is_full_var flag.
12566         (new_var_info): Set it to false.
12567         (solution_set_add): Correctly handle pointers outside a var and
12568         inside a field.
12569         (type_safe): Treat variables with is_full_var properly.
12570         (do_sd_constraint): Likewise.
12571         (do_ds_constraint): Likewise.
12572         (process_constraint): Remove zeroing offset for !use_field_sensitive.
12573         (get_constraint_for_ptr_offset): New function.
12574         (get_constraint_for_component_ref): For addresses at least include
12575         the last field of the variable.  Handle is_full_vars properly.
12576         (get_constraint_for_1): Factor common code, handle POINTER_PLUS_EXPR.
12577         (handle_ptr_arith): Remove.
12578         (find_func_aliases): Simplify assignment handling.
12579         (create_function_info_for): For parameter and result varinfos set
12580         is_full_var flag.
12581         (create_variable_info_for): Set is_full_var flag whenever we
12582         just created a single varinfo for a decl.
12583         (init_alias_vars): Initialize use_field_sensitive from
12584         max-fields-for-field-sensitive parameter.
12585
12586 2008-07-07  Richard Guenther  <rguenther@suse.de>
12587
12588         PR tree-optimization/36713
12589         * tree-flow-inline.h (is_call_used): New function.
12590         * tree-nrv.c (dest_safe_for_nrv_p): Use it.
12591         * tree-tailcall.c (suitable_for_tail_opt_p): Likewise.
12592         * tree-outof-ssa.c (create_temp): Set call-used flag if required.
12593
12594 2008-07-07  Maxim Kuvyrkov  <maxim@codesourcery.com>
12595
12596         * config/m68k/m68k.c (m68k_return_in_memory): Fix arguments types.
12597
12598 2008-07-07  Mark Shinwell  <shinwell@codesourcery.com>
12599
12600         * config/m68k/lb1sf68.asm: Add PIC macros for Linux targets.
12601
12602 2008-07-07  Maxim Kuvyrkov  <maxim@codesourcery.com>
12603             Nathan Sidwell  <nathan@codesourcery.com>
12604
12605         * config.gcc (m68k-*-linux*): Add with_arch.  Add sysroot-suffix.h
12606         to tm_file.  Add m68k/t-floatlib, m68k/t-linux & m68k/t-mlibs to
12607         tmake_file.
12608         * config/m68k/t-linux: New.
12609         * doc/install.texi: Document m68k-*-linux is now multilibbed by
12610         default.
12611
12612 2008-07-07  Nathan Sidwell  <nathan@codesourcery.com>
12613
12614         * config/m68k/t-cf (MULTILIB_EXTRA_OPTS): Add no-mac.
12615         * config/m68k/m68k-devices.def: Remove multilibs that only differ
12616         by MAC/EMAC.
12617
12618 2008-07-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12619
12620         * gcc.c (execute): Fix -Wc++-compat warning.
12621
12622 2008-07-06  H.J. Lu  <hongjiu.lu@intel.com>
12623
12624         PR target/36720
12625         * config/ia64/ia64.c (ia64_split_tmode): Fix typo in TImode
12626         constant for little endian.
12627
12628 2008-07-06  Richard Sandiford  <rdsandiford@googlemail.com>
12629
12630         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Check
12631         mips_base_mips16 instead of TARGET_MIPS16.
12632         (mips_base_mips16): Declare.
12633         * config/mips/mips.c (mips_base_mips16): Make global.
12634         (was_mips16_p): Remove GTY marker.
12635         (was_mips16_pch_p): New variable.
12636         (mips_set_mips16_mode): Check both was_mips16_p and was_mips16_pch_p.
12637         (mips_override_options): Force to non-MIPS16 mode initially.
12638         Do not complain about MIPS16 PIC incompatibilities here.
12639         Only allow -mgpopt if -mexplicit-relocs is in force for
12640         non-MIPS16 code.
12641
12642 2008-07-06  Andreas Tobler  <a.tobler@schweiz.org>
12643
12644         * configure.ac: Check for caddr_t, define to char * if not defined.
12645         * configure: Regenerate.
12646         * ggc-common.c (mmap_gt_pch_get_address): Fix -Wc++-compat warnings.
12647         (mmap_gt_pch_use_address): Likewise.
12648         * config/host-solaris.c (sol_gt_pch_use_address): Likewise.
12649
12650 2008-07-06  Richard Guenther  <rguenther@suse.de>
12651
12652         * tree-ssa-structalias.c (struct variable_info): Remove has_union.
12653         (new_var_info): Deal with it.
12654         (solution_set_add): Likewise.
12655         (bitpos_of_field): Make signed, fix.
12656         (struct fieldoff): Remove type and decl fields.  Make size field
12657         unsigned HOST_WIDE_INT.  Add has_unknown_size and may_have_pointers
12658         flags.
12659         (fieldoff_compare): Deal with it.
12660         (push_fields_onto_fieldstack): Remove has_union argument, glob
12661         adjacent non-pointer fields together.
12662         (create_function_info_for): Do not set has_union.
12663         (create_variable_info_for): Simplify.
12664
12665 2008-07-06  Kai Tietz  <kai.tietz@onevision.com>
12666
12667         * config.gcc (extra_headers): Add cross-stdarg.h for target
12668         x86_64-*-* and i?86-*-*.
12669         * config/i386/cross-stdarg.h: New.
12670         * builtins.c (std_fn_abi_va_list): New.
12671         (std_canonical_va_list_type): New.
12672         (stabilize_va_list): Replace va_list_type_node use by
12673         mtarget.canonical_va_list_type.
12674         (gimplify_va_arg_expr): Likewise.
12675         (expand_builtin_va_copy): Replace va_list_type_node use by
12676         mtarget.fn_abi_va_list.
12677         * tree-sra.c (is_va_list_type): New helper.
12678         (decl_can_be_decomposed_p): Replace
12679         va_list_type_node use by is_va_list_type.
12680         * tree-ssa-ccp.c (optimize_stdarg_builtin): Likewise.
12681         * tree-stdarg.c (execute_optimize_stdarg): Likewise.
12682         * c-common.c (c_common_nodes_and_builtins): Use TARGET_ENUM_VA_LIST.
12683         * config/i386/i386-protos.h (ix86_get_valist_type): New.
12684         (ix86_enum_va_list): New.
12685         * config/i386/i386.c (sysv_va_list_type_node): New.
12686         (ms_va_list_type_node): New.
12687         (ix86_function_type_abi): Remove sorry.
12688         (ix86_build_builtin_va_list_abi): New.
12689         (ix86_build_builtin_va_list): Call ix86_build_builtin_va_list_abi
12690         for 64-bit targets.
12691         (ix86_va_start): Replace va_list_type_node by sysv_va_list_type_node.
12692         (ix86_init_builtins_va_builtins_abi): New.
12693         (ix86_init_builtins): Use ix86_init_builtins_va_builtins_abi
12694         for 64-bit targets.
12695         (ix86_handle_abi_attribute): New.
12696         (attribute_spec): Add sysv_abi and ms_abi.
12697         (ix86_fn_abi_va_list): New.
12698         (ix86_canonical_va_list_type): New.
12699         (ix86_enum_va_list): New.
12700         (TARGET_FN_ABI_VA_LIST): New.
12701         (TARGET_CANONICAL_VA_LIST_TYPE): New.
12702         * config/i386/i386.h (TARGET_ENUM_VA_LIST): New.
12703         * doc/tm.texi (TARGET_FN_ABI_VA_LIST): New.
12704         (TARGET_CANONICAL_VA_LIST_TYPE): New.
12705         (TARGET_ENUM_VA_LIST): New.
12706         * expr.h (std_fn_abi_va_list): New.
12707         (std_canonical_va_list_type): New.
12708         * target-def.h (TARGET_FN_ABI_VA_LIST): New.
12709         (TARGET_CANONICAL_VA_LIST_TYPE): New.
12710         (TARGET_INITIALIZER): Add TARGET_FN_ABI_VA_LIST and
12711         TARGET_CANONICAL_VA_LIST_TYPE.
12712         * target.h (struct gcc_target): Add fn_abi_va_list hook
12713         and canonical_va_list_type hook.
12714
12715 2008-07-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
12716
12717         * fold-const.c (fold_convert_const): Treat OFFSET_TYPE the same as
12718         integral and pointer types.
12719
12720 2008-07-04  Roger Sayle  <roger@eyesopen.com>
12721
12722         * config/rs6000/host-darwin.c (darwin_rs6000_extra_signals): Cast
12723         the "void*" result of xmalloc to "char*" to fix bootstrap breakage.
12724
12725 2008-07-04  Kaz Kojima  <kkojima@gcc.gnu.org>
12726
12727         PR target/36684
12728         * config/sh/sh.h (OVERRIDE_OPTIONS): Disable -fschedule-insns for PIC.
12729
12730 2008-07-04  Jakub Jelinek  <jakub@redhat.com>
12731
12732         * tree-switch-conversion.c (build_one_array, gen_def_assigns): Use
12733         build_gimple_modify_stmt.
12734         (build_arrays, gen_inbound_check): Likewise.  Force RHS to be
12735         gimple operand.  Use fold_build* instead of build*.
12736
12737 2008-07-04  Richard Guenther  <rguenther@suse.de>
12738
12739         * tree-ssa-structalias.c (lookup_vi_for_tree): Declare.
12740         (do_sd_constraint): Handle a dereference of ESCAPED and CALLUSED
12741         properly to compute the reachability set if we do field-sensitive PTA.
12742         * invoke.texi (max-fields-for-field-sensitive): Document default.
12743         * opts.c (decode_options): Set max-fields-for-field-sensitive to
12744         100 for optimize >= 2.
12745
12746 2008-07-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12747
12748         * ggc-zone.c (lookup_page_table_if_allocated,
12749         set_page_table_entry, zone_find_object_size, alloc_small_page,
12750         alloc_large_page, ggc_free, gt_ggc_m_S, ggc_marked_p, init_ggc,
12751         new_ggc_zone, init_ggc_pch, ggc_pch_this_base, ggc_pch_read): Fix
12752         -Wc++-compat and/or -Wcast-qual warnings.
12753
12754 2008-07-04  Alan Modra  <amodra@bigpond.net.au>
12755
12756         PR target/36634
12757         * config/rs6000/rs6000.md (call, call_value): Don't arrange for
12758         pic_offset_table_rtx to be marked as used here.
12759         (call_nonlocal_sysv, call_value_nonlocal_sysv): Add split for
12760         TARGET_SECURE_PLT to "use" pic_offset_table_rtx.
12761         (call_nonlocal_sysv_secure, call_value_nonlocal_sysv_secure): New insn.
12762         (sibcall_nonlocal_sysv, sibcall_value_nonlocal_sysv): Assert
12763         !TARGET_SECURE_PLT.
12764
12765 2008-07-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12766
12767         * alloc-pool.c (hash_descriptor, eq_descriptor,
12768         alloc_pool_descriptor): Fix -Wc++-compat warnings.
12769         * bitmap.c (hash_descriptor, eq_descriptor, bitmap_descriptor):
12770         Likewise.
12771         * ggc-common.c (hash_descriptor, eq_descriptor, hash_ptr, eq_ptr,
12772         loc_descriptor, ggc_prune_ptr, ggc_free_overhead,
12773         final_cmp_statistic, cmp_statistic, dump_ggc_loc_statistics): Likewise.
12774         * varray.c (hash_descriptor, eq_descriptor, varray_descriptor):
12775         Likewise.
12776
12777 2008-07-03  Eric Botcazou  <ebotcazou@adacore.com>
12778
12779         * tree-flow.h (loop_only_exit_p): Declare.
12780         * tree-ssa-loop-niter.c (loop_only_exit_p): Make public.
12781         * tree-ssa-loop-ivopts.c (may_eliminate_iv): Reinstate direct check on
12782         the number of iterations if it is constant.  Otherwise, if this is the
12783         only possible exit of the loop, use the conservative estimate on the
12784         number of iterations of the entire loop if available.
12785
12786 2008-07-03  Richard Sandiford  <rdsandiford@googlemail.com>
12787
12788         * Makefile.in (libgcc.mvars): Add LIBGCC_SYNC and LIBGCC_SYNC_CFLAGS.
12789         * libgcc-std.ver (GCC_4.4.0): New version, inherited from GCC_4.3.0.
12790         Add synchronization functions.
12791         * config/sync.c: New file.
12792         * config/mips/t-libgcc-mips16 (LIBGCC_SYNC): Define.
12793         (LIBGCC_SYNC_CFLAGS): Likewise.
12794
12795 2008-07-03  Uros Bizjak  <ubizjak@gmail.com>
12796
12797         PR target/36710
12798         * config/i386/i386.md (mode): Add TF to "mode" attribute.
12799         (*pushtf_sse): New insn pattern.
12800         (pushtf splitters): New splitters.
12801
12802 2008-07-03  Michael Meissner  <gnu@the-meissners.org>
12803
12804         PR middle-end/35736
12805         * predict.c (build_predict_expr): Use void_type_node for the tree
12806         type, instead of NULL_TREE.
12807
12808 2008-07-03  H.J. Lu  <hongjiu.lu@intel.com>
12809
12810         * config/i386/i386.c (contains_aligned_value_p): Return true
12811         for TCmode.
12812         (ix86_data_alignment): Align TCmode to 128bits.
12813         (ix86_local_alignment): Likewise.
12814
12815 2008-07-03  Andrew Haley  <aph@redhat.com>
12816
12817         PR bootstrap/33304
12818         * vec.h (VEC_TA): New.
12819         (DEF_VEC_I, DEF_VEC_P, DEF_VEC_ALLOC_I, DEF_VEC_ALLOC_P,
12820         DEF_VEC_O, DEF_VEC_ALLOC_O: Use VEC_TA.
12821         * c-common.c (C_COMMON_FIXED_TYPES_SAT): New macro.
12822         (C_COMMON_FIXED_MODE_TYPES_SAT): New macro.
12823         (C_COMMON_FIXED_TYPES): Remove first arg.
12824         (C_COMMON_FIXED_MODE_TYPES): Likewise.
12825         * tree.c (MAKE_FIXED_TYPE_NODE): Break into two macros,
12826         MAKE_FIXED_TYPE_NODE and MAKE_FIXED_TYPE_NODE_WIDTH in order
12827         not to use empty macro arguments.
12828
12829 2008-07-02  Joseph Myers  <joseph@codesourcery.com>
12830
12831         * config/alpha/vms_tramp.asm, config/arm/crti.asm,
12832         config/arm/crtn.asm, config/bfin/crti.s, config/bfin/crtlibid.s,
12833         config/bfin/crtn.s, config/fr30/crti.asm, config/fr30/crtn.asm,
12834         config/frv/lib1funcs.asm, config/i386/sol2-c1.asm,
12835         config/i386/sol2-ci.asm, config/i386/sol2-cn.asm,
12836         config/i386/sol2-gc1.asm, config/ia64/crti.asm,
12837         config/ia64/crtn.asm, config/m68hc11/larith.asm,
12838         config/m68hc11/m68hc11-crt0.S, config/m68k/crti.s,
12839         config/m68k/crtn.s, config/mcore/crti.asm, config/mcore/crtn.asm,
12840         config/rs6000/crtresfpr.asm, config/rs6000/crtresgpr.asm,
12841         config/rs6000/crtresxfpr.asm, config/rs6000/crtresxgpr.asm,
12842         config/rs6000/crtsavfpr.asm, config/rs6000/crtsavgpr.asm,
12843         config/rs6000/crtsavres.asm, config/rs6000/e500crtres32gpr.asm,
12844         config/rs6000/e500crtres64gpr.asm,
12845         config/rs6000/e500crtres64gprctr.asm,
12846         config/rs6000/e500crtrest32gpr.asm,
12847         config/rs6000/e500crtrest64gpr.asm,
12848         config/rs6000/e500crtresx32gpr.asm,
12849         config/rs6000/e500crtresx64gpr.asm,
12850         config/rs6000/e500crtsav32gpr.asm,
12851         config/rs6000/e500crtsav64gpr.asm,
12852         config/rs6000/e500crtsav64gprctr.asm,
12853         config/rs6000/e500crtsavg32gpr.asm,
12854         config/rs6000/e500crtsavg64gpr.asm,
12855         config/rs6000/e500crtsavg64gprctr.asm, config/rs6000/eabi-ci.asm,
12856         config/rs6000/eabi-cn.asm, config/rs6000/eabi.asm,
12857         config/rs6000/sol-ci.asm, config/rs6000/sol-cn.asm,
12858         config/rs6000/tramp.asm, config/sparc/sol2-ci.asm,
12859         config/sparc/sol2-cn.asm: Remove .file directives.
12860
12861 2008-07-02  Richard Sandiford  <rdsandiford@googlemail.com>
12862
12863         * resource.c (mark_referenced_resources): Look inside
12864         UNSPEC_VOLATILEs and ASM_INPUTs.
12865
12866 2008-07-02  Ian Lance Taylor  <iant@google.com>
12867
12868         * rtlanal.c (add_reg_note): New function.
12869         * rtl.h (add_reg_note): Declare.
12870         * auto-inc-dec.c (attempt_change): Use add_reg_note.
12871         * bb-reorder.c (add_reg_crossing_jump_notes): Likewise.
12872         * builtins.c (expand_builtin_longjmp): Likewise.
12873         (expand_builtin_nonlocal_goto): Likewise.
12874         * calls.c (emit_call_1, expand_call): Likewise.
12875         * cfgexpand.c (add_reg_br_prob_note): Likewise.
12876         * cfglayout.c (fixup_reorder_chain): Likewise.
12877         * cfgrtl.c (force_nonfallthru_and_redirect): Likewise.
12878         (commit_one_edge_insertion): Likewise.
12879         * combine.c (move_deaths, distribute_notes): Likewise.
12880         * df-problems.c (df_set_note): Likewise.
12881         * emit-rtl.c (link_cc0_insns, try_split): Likewise.
12882         (set_unique_reg_note): Likewise.
12883         (emit_copy_of_insn_after): Likewise.
12884         * expr.c (expand_expr_real): Likewise.
12885         * gcse.c (add_label_notes): Likewise.
12886         * haifa-sched.c (create_check_block_twin): Likewise.
12887         * jump.c (mark_jump_label_1): Likewise.
12888         * loop-doloop.c (add_test, doloop_modify): Likewise.
12889         * loop-unswitch.c (compare_and_jump_seq): Likewise.
12890         * lower-subreg.c (move_eh_region_note): Likewise.
12891         * optabs.c (emit_libcall_block): Likewise.
12892         * predict.c (predict_insn): Likewise.
12893         (combine_predictions_for_insn): Likewise.
12894         * recog.c (peephole2_optimize): Likewise.
12895         * regmove.c (try_auto_increment): Likewise.
12896         * reg-stack.c (emit_pop_insn, move_for_stack_reg): Likewise.
12897         * reload.c (find_reloads): Likewise.
12898         * reload1.c (fixup_eh_region_note): Likewise.
12899         (reload_as_needed, add_auto_inc_notes, copy_eh_notes): Likewise.
12900         * reorg.c (delete_prior_computation): Likewise.
12901         (delete_computation, dbr_schedule): Likewise.
12902         * config/pa/pa.c (legitimize_pic_address): Likewise.
12903         * config/sh/sh.c (sh_reorg): Likewise.
12904
12905 2008-07-02  H.J. Lu  <hongjiu.lu@intel.com>
12906
12907         PR target/36669
12908         * config/libgcc-glibc.ver: Add %exclude.
12909         * config/m32r/libgcc-glibc.ver: Likwise.
12910         * config/s390/libgcc-glibc.ver: Likwise.
12911         * config/sh/libgcc-glibc.ver: Likwise.
12912         * config/sparc/libgcc-sparc-glibc.ver: Likwise.
12913
12914         * config/i386/libgcc-glibc.ver: New.
12915
12916         * config/i386/libgcc-x86_64-glibc.ver: Removed.
12917
12918 2008-07-02  H.J. Lu  <hongjiu.lu@intel.com>
12919
12920         * config.gcc: Remove i386/t-fprules-softfp64 soft-fp/t-softfp
12921         from tmake_file from i[34567]86-*-darwin*, x86_64-*-darwin*,
12922         i[34567]86-*-linux*, x86_64-*-linux*.  Add
12923         i386/t-fprules-softfp and soft-fp/t-softfp to tmake_file for
12924         i[34567]86-*-darwin*, x86_64-*-darwin*, i[34567]86-*-linux*,
12925         x86_64-*-linux*.  Add i386/t-linux to tmake_file for
12926         i[34567]86-*-linux*, x86_64-*-linux*.
12927
12928         * libgcc-std.ver: Add empty GCC_4.4.0.
12929
12930         * mkmap-symver.awk: Support multiple versions per symbol.
12931
12932         * config/i386/i386.c (ix86_init_builtins): Always define
12933         __builtin_fabsq and __builtin_copysignq with fallbacks.
12934         (ix86_expand_builtin): Emit normal call for __builtin_fabsq
12935         and __builtin_copysignq if SSE2 isn't available.
12936
12937         * config/i386/linux.h (LIBGCC2_HAS_TF_MODE): Defined.
12938         (LIBGCC2_TF_CEXT): Likwise.
12939         (TF_SIZE): Likwise.
12940
12941         * config/i386/linux64.h (LIBGCC2_HAS_TF_MODE): Defined as 1.
12942
12943         * config/i386/sfp-machine.h: Moved to libgcc.
12944
12945         * config/i386/sfp-machine.h: New.
12946         * config/i386/t-linux: Likwise.
12947
12948         * config/i386/t-darwin: Remove softfp_wrap_start and
12949         softfp_wrap_end.
12950         * config/i386/t-darwin64: Likewise.
12951
12952         * config/i386/t-fprules-softfp64: Renamed to ...
12953         * config/i386/t-fprules-softfp: This.
12954
12955         * config/i386/t-linux64: Remove SHLIB_MAPFILES, softfp_wrap_start
12956         and softfp_wrap_end.
12957
12958 2008-07-02  Jason Merrill  <jason@redhat.com>
12959
12960         * tree.c (ctor_to_list): Use FOR_EACH_CONSTRUCTOR_ELT.
12961
12962         * tree.c (ctor_to_list): New fn.
12963         * tree.h: Declare it.
12964         (CONSTRUCTOR_ELT): New macro.
12965         (CONSTRUCTOR_NELTS): New macro.
12966
12967 2008-07-02  Richard Guenther  <rguenther@suse.de>
12968
12969         * tree-ssa-structalias.c (struct variable_info): Reorder
12970         to fill padding on 64bit hosts.  Make collapsed_to an int.
12971         (get_varinfo_fc): Deal with that.
12972         (new_var_info): Likewise.
12973         (collapse_rest_of_var): Likewise.
12974
12975 2008-07-02  Joshua Sumali  <jsumali@redhat.com>
12976
12977         * doc/install.texi (--enable-java-home): Document.
12978         (--enable-aot-compile-rpm): Likewise.
12979         (--with-arch-directory): Likewise.
12980         (--with-os-directory): Likewise.
12981         (--with-origin-name): Likewise.
12982         (--with-arch-suffix): Likewise.
12983         (--with-jvm-root-dir): Likewise.
12984         (--with-jvm-jar-dir): Likewise.
12985         (--with-python-dir): Likewise.
12986
12987 2008-07-02  Richard Guenther  <rguenther@suse.de>
12988
12989         * tree-ssa-forwprop.c (can_propagate_from): Exclude loads
12990         from decls explicitly.  Merge operand checking from tuples.
12991
12992 2008-07-02  Martin Jambor  <mjambor@suse.cz>
12993
12994         * tree-switch-conversion.c: Included timevar.h which I forgot before.
12995
12996 2008-07-02  Martin Jambor  <mjambor@suse.cz>
12997
12998         * tree-switch-conversion.c: Included timevar.h
12999         (pass_convert_switch): Added a timevar id (TV_TREE_SWITCH_CONVERSION).
13000
13001         * timevar.def: Added TV_TREE_SWITCH_CONVERSION.
13002
13003 2008-07-02  Martin Jambor  <mjambor@suse.cz>
13004
13005         * tree-switch-conversion.c: Corrected various comments and
13006         whitespace issues
13007         (build_constructors): Fixed minor formatting mistakes.
13008
13009         * invoke.texi (Optimize Options): Corrected the
13010         switch-conversion-max-branch-ratio parameter.
13011
13012 2008-07-02  Mark Shinwell  <shinwell@codesourcery.com>
13013
13014         * final.c (asm_insn_count): Return zero for an empty asm body.
13015
13016 2008-07-02  Richard Guenther  <rguenther@suse.de>
13017
13018         * bitmap.h (bitmap_set_bit): Return bool.
13019         (bitmap_clear_bit): Likewise.
13020         * bitmap.c (bitmap_set_bit): Return if the bit changed.  Only
13021         write to the bitmap if it would.
13022         (bitmap_clear_bit): Likewise.
13023         * tree-ssa-structalias.c (add_implicit_graph_edge): Use
13024         bitmap_set_bit return value.
13025         (add_pred_graph_edge): Likewise.
13026         (add_graph_edge): Likewise.
13027         (do_sd_constraint): Likewise.
13028         (do_ds_constraint): Likewise.
13029
13030 2008-07-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13031
13032         * config/alpha/alpha.c (alpha_need_linkage, alpha_use_linkage):
13033         Fix -Wc++-compat and/or -Wcast-qual warnings.
13034         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration,
13035         gen_regparm_prefix): Likewise.
13036         * vmsdbgout.c (write_modbeg, lookup_filename,
13037         vmsdbgout_source_line, vmsdbgout_init): Likewise.
13038
13039 2008-07-02  Danny Smith  <dannysmith@users.sourceforge.net>
13040
13041         * config/i386/mingw32.h (TARGET_USE_JCR_SECTION): Undef to let
13042         defaults.h definition apply.
13043
13044 2008-07-01  Daniel Jacobowitz  <dan@codesourcery.com>
13045
13046         * function.c (assign_parm_remove_parallels): New.
13047         (assign_parm_setup_block_p): Do not return true for non-BLKmode
13048         PARALLELs.
13049         (assign_parm_setup_block): Do not handle them.
13050         (assign_parm_setup_reg, assign_parm_setup_stack): Call
13051         assign_parm_remove_parallels.
13052
13053 2008-07-01  Daniel Jacobowitz  <dan@codesourcery.com>
13054
13055         * c-typeck.c (convert_for_assignment): Use
13056         vector_targets_convertible_p.
13057         * c-common.c (vector_targets_convertible_p): New.
13058         * c-common.h (vector_targets_convertible_p): New prototype.
13059         * config/rs6000/rs6000.c (rs6000_is_opaque_type): Do not check
13060         opaque_p_V2SI_type_node.
13061
13062 2008-07-01  Steve Ellcey  <sje@cup.hp.com>
13063
13064         * config/ia64/ia64.c (ia64_cannot_force_const_mem): Do not allow
13065         RFmode constants.
13066
13067 2008-07-01  Uros Bizjak  <ubizjak@gmail.com>
13068
13069         * config/i386/i386.c (ix86_build_signbit_mask): Generate TImode and
13070         TFmode constants via two element DImode vector for hosts with
13071         HOST_BITS_PER_WIDE_INT < 64.
13072         (ix86_init_builtins): Define __builtin_fabsq and __builtin_copysignq
13073         also for HOST_BITS_PER_WIDE_INT < 64.
13074
13075 2008-07-01  Richard Guenther  <rguenther@suse.de>
13076
13077         PR tree-optimization/36666
13078         * tree-ssa-structalias.c (get_constraint_for_1): Declare.
13079         (get_constraint_exp_from_ssa_var): Split into ...
13080         (get_constraint_exp_for_temp): ... this ...
13081         (get_constraint_for_ssa_var): ... and that.
13082         Return constraint expressions for all touched sub-fields
13083         if the results address is not taken.
13084         (process_constraint): Remove assertion that aggregate
13085         assignments do not happen at this place.
13086         (get_constraint_for_component_ref): Add address_p argument.
13087         Return constraint expressions for all touched sub-fields
13088         if the results address is not taken.
13089         (do_deref): Use get_constraint_exp_for_temp.
13090         (get_constraint_for_1): Rename from ...
13091         (get_constraint_for): ... this.  Add the old function as wrapper.
13092         (do_structure_copy): Use get_constraint_for_1.
13093
13094 2008-07-01  Martin Jambor  <mjambor@suse.cz>
13095
13096         * Makefile.in (tree-switch-conversion.o): Add.
13097         (OBJS-common): Add tree-swtch-conversion.o.
13098         * passes.c (init_optimization_passes): Add pass_convert_switch.
13099         * tree-pass.h: (pass_convert_switch): Add.
13100         * tree-switch-conversion.c: New file.
13101         * gcc.dg/tree-ssa/cswtch.c: New testcase.
13102         * common.opt (ftree-cswtch): New option.
13103         * params.h (PARAM_SWITCH_CONVERSION_BRANCH_RATIO): New parameter.
13104         * params.def (PARAM_SWITCH_CONVERSION_BRANCH_RATIO): New parameter.
13105         * opts.c (decode_options): Set flag_tree_switch_conversion when
13106         optimization level is >= 2.
13107         * doc/invoke.texi (Optimize Options): Added description of
13108         -ftree-swtch-conversion and switch-conversion-max-branch-ratio.
13109
13110 2008-06-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13111
13112         * config/darwin-driver.c (darwin_default_min_version): Fix
13113         -Wc++-compat warnings.
13114
13115 2008-06-30  Uros Bizjak  <ubizjak@gmail.com>
13116
13117         * config/i386/i386.md (*movti_rex64): Add "!" to "r" constraint
13118         of operand 0.
13119
13120 2008-06-30  Kenneth Zadeck <zadeck@naturalbridge.com>
13121
13122         * ifcvt.c (cond_move_process_if_block): Free vectors on false return.
13123
13124 2008-06-30  Kenneth Zadeck <zadeck@naturalbridge.com>
13125
13126         PR rtl-optimization/34744
13127         * df-scan.c (df_scan_free_ref_vec, df_scan_free_mws_vec): New macros.
13128         (df_scan_free_internal): Free data structures not
13129         allocated in storage pools.
13130         (df_mw_hardreg_chain_delete_eq_uses): Use df_scan_free_mws_vec.
13131         (df_refs_add_to_chains): Use df_scan_free_ref_vec and
13132         df_scan_free_mws_vec.
13133         * dse.c (dse_step6): Free offset_map_p and offset_map_n
13134         unconditionally.
13135
13136 2008-06-30  H.J. Lu  <hongjiu.lu@intel.com>
13137
13138         * config/i386/i386.c (contains_aligned_value_p): Return true
13139         for __float128.
13140         (ix86_function_arg_boundary): Return its natural boundary
13141         for __float128.
13142         (return_in_memory_32): Don't check TDmode.
13143         (ix86_split_to_parts): Support splitting into 4 parts and
13144         support TFmode for 32bit target.
13145         (ix86_split_long_move): Support splitting into 4 parts.
13146         (bdesc_args): Enable IX86_BUILTIN_FABSQ and IX86_BUILTIN_COPYSIGNQ
13147         for SSE2.
13148         (ix86_init_mmx_sse_builtins): Move __float80 and __float128 to ...
13149         (ix86_init_builtins): Here.
13150         (ix86_scalar_mode_supported_p): Always return true for TFmode.
13151         (ix86_c_mode_for_suffix): Always return TFmode and XFmode for
13152         'q' and 'w', respectively.
13153
13154         * config/i386/i386.md (movtf): Check TARGET_SSE2 instead of
13155         TARGET_64BIT.
13156         (movtf_internal): Likewise.
13157         (<code>tf2): Likewise.
13158         (*absnegtf2_sse): Likewise.
13159         (copysign<mode>3): Likewise.
13160         (copysign<mode>3_const): Likewise.
13161         (copysign<mode>3_var): Likewise.
13162         (define_split UNSPEC_COPYSIGN): Likewise.
13163         * config/i386/sse.md (*nandtf3): Likewise.
13164         (<code>tf3): Likewise.
13165         (*<code>tf3): Likewise.
13166
13167 2008-06-30  Joey Ye  <joey.ye@intel.com>
13168             H.J. Lu  <hongjiu.lu@intel.com>
13169
13170         * global.c (compute_regsets): Set frame_pointer_needed here.
13171         * reload1.c (init_elim_table): Don't set frame_pointer_needed here.
13172
13173 2008-06-30  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
13174
13175         * doc/install.texi (specific): Expand Windows build notes.
13176
13177 2008-06-30  Ira Rosen  <irar@il.ibm.com>
13178
13179         PR tree-optimization/36648
13180         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Divide
13181         number of prolog iterations by step. Fix the comment.
13182
13183 2008-06-30  Richard Guenther  <rguenther@suse.de>
13184
13185         PR middle-end/36671
13186         * tree-ssa-structalias.c (handle_lhs_call): Add flags argument,
13187         handle calls from ECF_MALLOC functions.
13188         (handle_pure_call): ECF_MALLOC functions do not return
13189         call-used memory.
13190         (find_func_aliases): Handle all calls, adjust calls to handle_lhs_call.
13191
13192 2008-06-29  Andreas Schwab  <schwab@suse.de>
13193
13194         * config/m68k/m68k.c (print_operand): Always print a float
13195         constant in hex.
13196         * config/m68k/m68k.h (ASM_OUTPUT_FLOAT_OPERAND)
13197         (ASM_OUTPUT_DOUBLE_OPERAND, ASM_OUTPUT_LONG_DOUBLE_OPERAND):
13198         Remove macros.
13199
13200         * config/rs6000/x-linux64: Remove never used file.
13201
13202 2008-06-29  Richard Guenther  <rguenther@suse.de>
13203
13204         * tree-ssa-structalias.h (compute_points_to_sets): Adjust
13205         prototype.
13206         (struct alias_info): Move ...
13207         * tree-ssa-alias.c: ... here.
13208         (update_alias_info): Declare.
13209         (compute_may_aliases): Call it.
13210         (update_alias_info): New function.
13211         * tree-ssa-structalias.c (update_alias_info): Move ...
13212         * tree-ssa-alias.c (update_alias_info_1): ... here.
13213         * tree-ssa-structalias.c (process_constraint_1): Remove
13214         unused from_call argument.  Rename to ...
13215         (process_constraint): ... this.  Delete old wrapper.
13216         (make_constraint_to): Adjust callers.
13217         (handle_const_call): Likewise.
13218         (handle_pure_call): Likewise.
13219         (init_base_vars): Likewise.
13220         (handle_lhs_call): Likewise.  Remove unnecessary constraint.
13221         (find_func_aliases): We don't need structure copies for
13222         complex types.
13223         (make_constraint_from_anything): Remove.
13224         (create_variable_info_for): For globals make constraints
13225         from escaped, not from anything.
13226         (compute_points_to_sets): Do not call update_alias_info.
13227         (ipa_pta_execute): Use make_constraint_from.
13228
13229 2008-06-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13230
13231         * Makefile.in (CXX_COMPAT_WARN, cxx_compat_warn): Delete.
13232         (bitmap.o-warn, dominance.o-warn): New.
13233         * configure.ac (cxx_compat_warn): Delete.
13234         (loose_warn): Add -Wcast-qual and -Wc++-compat.
13235         * system.h: Remove #pragma diagnostic for -Wcast-qual and
13236         -Wc++-compat.
13237         * configure: Regenerate.
13238
13239         * optabs.c (libfunc_decl_hash, libfunc_decl_eq): Fix -Wcast-qual
13240         warnings.
13241
13242 2008-06-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13243
13244         * alloc-pool.c (create_alloc_pool): Fix -Wc++-compat warnings.
13245         * df-scan.c (df_notes_rescan): Likewise.
13246         * ggc-page.c (set_page_table_entry): Likewise.
13247         * intl.c (gcc_gettext_width): Likewise.
13248         * varasm.c (get_unnamed_section, get_noswitch_section,
13249         get_section): Likewise.
13250
13251 2008-06-28  Andrew Jenner  <andrew@codesourcery.com>
13252
13253         * regrename.c (build_def_use): Don't copy RTX.
13254
13255 2008-06-28  Sandra Loosemore  <sandra@codesourcery.com>
13256
13257         * doc/extend.texi (Variable Attributes): Use @ref instead of @xref.
13258         (Type Attributes): Fix nesting of @table and @subsection.  Adjust
13259         punctuation.  Use @ref instead of @xref.
13260         (Function Names): Remove stray @display/@end display.
13261         (C++ Attributes): Use @ref instead of @xref.
13262         (Deprecated Features): Fix punctuation around @xref.
13263         (Backwards Compatibility): Likewise.
13264         * doc/rtl.texi (Incdec): Remove stray @table/@end table.
13265
13266 2008-06-28  Joseph Myers  <joseph@codesourcery.com>
13267
13268         * config/rs6000/predicates.md (easy_fp_constant): Reject TFmode
13269         constants for E500 double.
13270
13271 2008-06-28  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
13272
13273         * doc/rtl.texi (const_vector): Document const_fixed as legitimate
13274         element type of const_vector.
13275
13276 2008-06-28  Uros Bizjak  <ubizjak@gmail.com>
13277
13278         * config/i386/i386.md (addti3, adddi3, addsi3, addhi3, addqi3):
13279         Remove FLAGS_REG clobber from expander pattern.
13280         (subti3, subdi3, subsi3, subhi3, subqi3): Ditto.
13281         (anddi3, andsi3, andhi3, andqi3): Ditto.
13282         (iordi3, iorsi3, iorhi3, iorqi3): Ditto.
13283         (xordi3, xorsi3, xorhi3, xorqi3): Ditto.
13284         (negti2, negdi2, negsi2, neghi2, negqi2): Ditto.
13285         (ashlsi3, ashlhi3, ashlqi3): Ditto.
13286         (ashrsi3, ashrhi3, ashrqi3): Ditto.
13287         (lshrsi3, lshrhi3, lshrqi3): Ditto.
13288         (rotldi3, rotlsi3, rotlhi3, rotlqi3): Ditto.
13289         (rotrdi3, rotrsi3, rotrhi3, rotrqi3): Ditto.
13290
13291 2008-06-28  Richard Guenther  <rguenther@suse.de>
13292
13293         * tree-ssa-structalias.c (callused_id, var_callused,
13294         callused_tree): Add.
13295         (handle_pure_call): New function.
13296         (find_func_aliases): Call it.
13297         (find_what_p_points_to): Handle the call-used set.
13298         (clobber_what_escaped): Likewise.
13299         (compute_call_used_vars): New function.
13300         (init_base_vars): Init the call-used variable.
13301         (do_sd_constraint): Do not propagate the solution from CALLUSED
13302         but use CALLUSED as a placeholder.
13303         (solve_graph): Likewise.
13304         * tree-flow-inline.h (gimple_call_used_vars): New function.
13305         * tree-flow.h (struct gimple_df): Add call_used_vars bitmap.
13306         (compute_call_used_vars): Declare.
13307         * tree-ssa-alias.c (set_initial_properties): Call
13308         compute_call_used_vars.
13309         (reset_alias_info): Clear call-used variables.
13310         (add_call_clobber_ops): Assert we are not called for const/pure
13311         functions.  Remove handling of them.
13312         (add_call_read_ops): Handle pure functions by adding the
13313         call-used set of variables as VUSEs.
13314         * tree-ssa.c (init_tree_ssa): Allocate call-used bitmap.
13315         (delete_tree_ssa): Free it.
13316         * tree-dfa.c (remove_referenced_var): Clear the var from the
13317         call-used bitmap.
13318
13319 2008-06-28  Kai Tietz  <kai.tietz@onevision.com>
13320
13321         * tree.c (build_varargs_function_type_list): New.
13322         (build_function_type_list_1): New.
13323         (build_function_type_list): Use build_function_type_list_1.
13324         * tree.h (build_varargs_function_type_list): New.
13325
13326 2008-06-28  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
13327
13328         PR target/34856
13329         * config/spu/spu.c (spu_builtin_splats): Do not generate
13330         invalid CONST_VECTOR expressions.
13331         (spu_expand_vector_init): Likewise.
13332
13333 2008-06-28  Richard Sandiford  <rdsandiford@googlemail.com>
13334
13335         * optabs.c (libfunc_decls): New variable.
13336         (libfunc_decl_hash, libfunc_decl_eq): New functions.
13337         (init_one_libfunc): Reuse decls and SYMBOL_REFs when asked
13338         for the same function twice.
13339
13340 2008-06-27  Uros Bizjak  <ubizjak@gmail.com>
13341
13342         * config/i386/i386.md (ashlti3, ashrti3, lshrti3): Expand using
13343         ix86_expand_binary_operator directly.
13344         (*ashlti3_1): Rename from ashlti3_1.  Use nonmemory_operand predicate
13345         for operand 2.
13346         (*ashrti3_1): Ditto.
13347         (*lshrti3_1): Ditto.
13348         (*ashlti3_2, *ashrti3_2, *lshrti3_2): Remove insn patterns.
13349         (ashlti, ashrti and lshrti splitters): Handle nonmemory operand 2
13350         using only one splitter.  Conditionaly execute splitter before or
13351         after peephole2 pass.
13352         (ashlti, ashrti and lshrti peephole2): Define peephole2 patterns.
13353         (x86_shld): Rename from x86_shld_1.  Compress operand 2 constraints.
13354         Use only one alternative in asm template.
13355         (x86_64_shld): Compress operand 2 constraints. Use only one alternative
13356         in asm template.
13357         (*ashldi3_cmp_rex64): Use const_1_to_63_operand operand predicate and
13358         "J" operand constraint for operand 2.
13359         (*ashldi3_cconly_rex64): Ditto.
13360         (*ashrdi3_cmp_rex64): Ditto.
13361         (*ashrdi3_cconly_rex64): Ditto.
13362         (*lshrdi3_cmp_rex64): Ditto.
13363         (*lshrdi3_cconly_rex64): Ditto.
13364         * config/i386/predicates.md (const_1_to_63_operand): New predicate.
13365         * config/i386/i386.md (print_operand) ['s']: Print ", " using fputs.
13366         (split_ashr, split_ashl, split_lshr): Use gen_x86_shrd instead of
13367         gen_x86_shrd_1.
13368
13369 2008-06-27  Jakub Jelinek  <jakub@redhat.com>
13370
13371         * gimplify.c (omp_is_private): Don't return true if decl is not
13372         already private on #pragma omp for or #pragma omp parallel for.
13373
13374         PR debug/36617
13375         * tree-cfg.c (struct move_stmt_d): Replace block field with
13376         orig_block and new_block fields.
13377         (move_stmt_r): Only set TREE_BLOCK to p->new_block if
13378         if it used to be NULL, p->orig_block or if p->orig_block is NULL.
13379         (move_block_to_fn): Replace vars_map and new_label_map arguments
13380         with struct move_stmt_d pointer.
13381         (replace_block_vars_by_duplicates): New function.
13382         (move_sese_region_to_fn): Add ORIG_BLOCK argument.  Adjust
13383         move_block_to_fn caller.  If ORIG_BLOCK is non-NULL, move over
13384         all subblocks of ORIG_BLOCK to the new function.  Call
13385         replace_block_vars_by_duplicates.
13386         * tree-flow.h (move_sese_region_to_fn): Adjust prototype.
13387         * omp-low.c (expand_omp_taskreg): Set TREE_USED on DECL_INITIAL
13388         BLOCK of the new function.  Adjust move_sese_region_to_fn caller.
13389         Prune vars with original DECL_CONTEXT from child_cfun->local_decls.
13390         (expand_omp): Temporarily set input_location to the location of
13391         region's controlling stmt.
13392         (lower_omp_sections, lower_omp_for): Add a BLOCK into outermost
13393         BIND_EXPR, push ctx->block_vars and gimplification vars into
13394         the BIND_EXPR and its block's BLOCK_VARS instead of directly
13395         into dest function.
13396         (lower_omp_single): Set TREE_USED on the BIND_EXPR's BLOCK if
13397         there are any BLOCK_VARS.
13398         (lower_omp_taskreg): Set BLOCK on a BIND_EXPR containing the
13399         OMP_PARALLEL or OMP_TASK stmt.
13400         (lower_omp): Save and restore input_location around the lower_omp_1
13401         call.
13402
13403 2008-06-27  Richard Guenther  <rguenther@suse.de>
13404
13405         PR tree-optimization/36400
13406         PR tree-optimization/36373
13407         PR tree-optimization/36344
13408         * tree-ssa-structalias.c (var_escaped, escaped_tree, escaped_id,
13409         var_nonlocal, nonlocal_tree, nonlocal_id): New globals
13410         (update_alias_info): Remove call clobbering code.
13411         (make_constraint_to): New helper function.
13412         (make_escape_constraint): Likewise.
13413         (handle_rhs_call): Use it on all pointer containing arguments.
13414         Also mark the static chain escaped.
13415         (handle_lhs_call): Make constraints from NONLOCAL and ESCAPED
13416         instead of ANYTHING.
13417         (make_constraint_from): New helper split out from ...
13418         (make_constraint_from_anything): ... here.
13419         (find_func_aliases): Add constraints for escape sites.
13420         (intra_create_variable_infos): Make constraints from NONLOCAL
13421         for parameters.
13422         (find_what_p_points_to): Interpret NONLOCAL and ESCAPED the same
13423         as ANYTHING.
13424         (clobber_what_p_points_to): Remove.
13425         (clobber_what_escaped): New function.
13426         (init_base_vars): Init NONLOCAL and ESCAPED.
13427         (do_sd_constraint): Do not propagate the solution from ESCAPED
13428         but use ESCAPED as a placeholder.
13429         (solve_graph): Likewise.
13430         * tree-flow.h (clobber_what_p_points_to): Remove.
13431         (clobber_what_escaped): Declare.
13432         * tree-ssa-alias.c (set_initial_properties): Call it.
13433         Remove code clobbering escaped pointers.
13434
13435 2008-06-27  Richard Sandiford  <rdsandiford@googlemail.com>
13436
13437         * function.c (allocate_struct_function): Only allocate a unique
13438         funcdef_no if the decl is nonzero.
13439
13440 2008-06-27  Richard Sandiford  <rdsandiford@googlemail.com>
13441
13442         * config/mips/mips-protos.h (mips_split_const_insns): Declare.
13443         * config/mips/mips.c (mips_split_const_insns): New function.
13444         * config/mips/mips.md (move_type): New attribute.
13445         (mode): Move attribute definition earlier in file.  Add "TI" and "TF".
13446         (dword_mode): New attribute.
13447         (type): Avoid long line.  Map "move_type"s to "type"s,
13448         choosing "multi" for doubleword moves if appropriate.
13449         Swap MTC/MFC comments to match their declaration order.
13450         (extended_mips16): Default to "yes" if "move_type" is "sll0",
13451         "type" is "branch" or "jal" is "direct".
13452         (length): Handle "extended_mips16" first.  Make the default
13453         "0" for "ghost" instructions.  Set the length from "move_type".
13454         (truncdisi2, truncdihi2, truncdiqi2): Use "move_type" instead
13455         of "type", with "sll0" for the register alternative.  Remove the
13456         "extended_mips16" attribute.
13457         (zero_extendsidi2, *clear_upper32): Use "move_type" instead
13458         of "type", with "shift_shift" for the register alternative.
13459         Remove the "length" attribute.
13460         (*extend<SHORT:mode><GPR:mode>2, *extendqihi2): Likewise.
13461         (*zero_extend<SHORT:mode><GPR:mode>2): Use "move_type" instead
13462         of "type", with "andi" for the register alternative.
13463         (*zero_extendqihi2): Likewise.
13464         (*zero_extend<SHORT:mode><GPR:mode>2_mips16e): Use a "move_type"
13465         of "andi" instead of a "type" of "arith".
13466         (*zero_extend<SHORT:mode><GPR:mode>2_mips16): Use "move_type"
13467         instead of "type".
13468         (*zero_extendqihi2_mips16, mov_<load>l, mov_<load>r, mov_<store>l)
13469         (mov_<store>r, *mov<mode>_ra): Likewise.
13470         (extendsidi2): Use "move_type" instead of "type", with "move"
13471         for the register alternative.
13472         (*extend<SHORT:mode><GPR:mode>2_mips16e): Use "move_type" instead
13473         of "type", with "signext" for the register alternative.
13474         (*extend<SHORT:mode><GPR:mode>2_se<SHORT:size>): Likewise.
13475         (*extendqihi2_mips16e, *extendqihi2_seb): Likewise.
13476         (fix_truncdfsi2_insn, fix_truncsfsi2_insn, fix_truncdfdi2)
13477         (fix_truncsfdi2, floatsidf2, floatdidf2, floatsisf2, floatdisf2)
13478         (floatdisf2, *branch_equality<mode>_mips16): Likewise.
13479         (unnamed branch insn): Likewise.
13480         (*movdi_gp32_fp64): Fold into...
13481         (*movdi_32bit): ...here.
13482         (*movdf_hardfloat_64bit, *movdf_hardfloat_32bit): Combine into...
13483         (*movdf_hardfloat): ...this new pattern.
13484         (*movdf_softfloat): Remove redundant FPR alternatives.
13485         (*movti, *movti_mips16, *movtf, *movtf_mips16): Add "mode" attributes.
13486         (*movv2sf_hardfloat_64bit, *movv2sf_hardfloat_32bit): Combine into...
13487         (*movv2sf): ...this new pattern.  Use "DF" rather than "SF" for
13488         the "move" attribute.
13489         (*movdi_32bit): Use "move_type" instead of "type" and remove the
13490         "length" attribute.  Use "fpload" and "fpstore" instead of "load"
13491         and "store" for COP loads and stores.
13492         (*movdi_32bit_mips16, *movdi_64bit, *movsi_internal, movcc)
13493         (*movhi_internal, *movhi_mips16, *movqi_internal, *movqi_mips16)
13494         (*movsf_hardfloat, *movsf_softfloat, *movsi_mips16, *movdf_hardfloat)
13495         (*movdf_softfloat, *movdf_mips16, *movti, *movti_mips16, *movtf)
13496         (*movtf_mips16, *movv2sf): Likewise.
13497         (mfhi<GPR:mode>_<HILO:mode>, mflo<GPR:mode>_<HILO:mode>)
13498         (load_low<mode>, load_high<mode>, store_word<mode>, mthc1<mode>)
13499         (mfhc1<mode>): Use "move_type" instead of "move".
13500         (*low<mode>_mips16): Use "extended_mips16" instead of "length".
13501         (loadgp_blockage): Remove the "length" attribute.
13502         (blockage, set_got_version, update_got_version): Likewise.
13503         (call_internal): Remove the "extended_mips16" attribute.
13504         (call_value_internal, call_value_multiple_internal): Likewise.
13505         * config/mips/loongson.md (mov<mode>_internal): Use "move_type"
13506         instead of "move".
13507         * config/mips/mips-dsp.md (mips_lbux, mips_lhx, mips_lwx): Remove
13508         the "length" attribute.
13509
13510 2008-06-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13511
13512         * c-format.c (handle_format_attribute): Fix -Wc++-compat and/or
13513         -Wcast-qual warnings.
13514         * c-pragma.c (dpm_eq, handle_pragma_push_macro,
13515         handle_pragma_pop_macro): Likewise.
13516         * collect2.c (resolve_lib_name): Likewise.
13517         * config/arc/arc.c (arc_init): Likewise.
13518         * config/arm/arm.c (neon_builtin_compare,
13519         locate_neon_builtin_icode): Likewise.
13520         * config/arm/pe.c (arm_mark_dllexport, arm_pe_unique_section): Likewise.
13521         * config/bfin/bfin.c (bfin_init_machine_status,
13522         bfin_optimize_loop): Likewise.
13523         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Likewise.
13524         * config/cris/cris.c (cris_init_expanders): Likewise.
13525         * config/darwin-c.c (frameworks_in_use, add_framework): Likewise.
13526         * config/darwin.c (machopic_indirection_eq,
13527         machopic_indirection_name, machopic_output_indirection): Likewise.
13528         * config/frv/frv.c (frv_init_machine_status, frv_compare_insns,
13529         frv_io_check_address, frv_io_handle_set, frv_io_handle_use_1,
13530         frv_optimize_membar): Likewise.
13531         * config/i386/cygwin.h (mingw_scan,
13532         GCC_DRIVER_HOST_INITIALIZATION): Likewise.
13533         * config/i386/cygwin1.c (mingw_scan): Likewise.
13534         * config/i386/i386.c (machopic_output_stub): Likewise.
13535         * config/i386/winnt.c (gen_stdcall_or_fastcall_suffix,
13536         i386_pe_unique_section): Likewise.
13537         * config/ia64/ia64.c (ia64_init_machine_status,
13538         ia64_h_i_d_extended, get_free_bundle_state, bundling, ia64_reorg):
13539         Likewise.
13540         * config/iq2000/iq2000.c, iq2000_init_machine_status): Likewise.
13541         * config/m68hc11/m68hc11.c (m68hc11_encode_label): Likewise.
13542         * config/m68k/m68k.c (m68k_handle_option,
13543         m68k_sched_md_init_global): Likewise.
13544         * config/mcore/mcore.c (mcore_mark_dllexport, mcore_mark_dllimport,
13545         mcore_unique_section): Likewise.
13546         * config/mips/mips.c (mips_block_move_straight,
13547         mips16_rewrite_pool_refs, mips_sim_wait_regs_2, mips_sim_record_set):
13548         Likewise.
13549         * config/mmix/mmix.c (mmix_init_machine_status,
13550         mmix_encode_section_info): Likewise.
13551         * config/pa/pa.c (pa_init_machine_status, hppa_encode_label): Likewise.
13552         * config/rs6000/rs6000.c (rs6000_init_machine_status,
13553         print_operand_address, output_toc, redefine_groups,
13554         rs6000_elf_encode_section_info, machopic_output_stub): Likewise.
13555         * config/s390/s390.c (s390_init_machine_status): Likewise.
13556         * config/score/score.c (score_block_move_straight,
13557         score_block_move_loop_body): Likewise.
13558         * config/sparc/sparc.c (sparc_init_machine_status): Likewise.
13559         * config/xtensa/xtensa.c (xtensa_init_machine_status): Likewise.
13560         * emit-rtl.c (find_auto_inc): Likewise.
13561         * gcc.c (translate_options, process_command): Likewise.
13562         * reorg.c (dbr_schedule): Likewise.
13563         * sdbout.c (sdbout_start_source_file, sdbout_init): Likewise.
13564         * xcoffout.c (xcoffout_declare_function): Likewise.
13565
13566 2008-06-27  Daniel Berlin  <dberlin@dberlin.org>
13567
13568         * tree-ssa-structalias.c (find_func_aliases): Trivial fix to get
13569         ipa-pta working again.
13570
13571 2008-06-27  David Edelsohn  <edelsohn@gnu.org>
13572
13573         * config/rs6000/t-aix52: Append large data option to LDFLAGS for
13574         genautomata.
13575
13576 2008-06-27  Edmar Wienskoski  <edmar@freescale.com>
13577
13578         * config.gcc (powerpc*-*-*): Add new core e500mc.
13579         * config/rs6000/e500mc.md: New file.
13580         * config/rs6000/rs6000.c (processor_costs): Add new costs for
13581         e500mc.
13582         (rs6000_override_options): Add e500mc case to
13583         processor_target_table. Altivec and Spe options not allowed
13584         with e500mc. Add isel instruction to e500mc by
13585         default. Initialize rs6000_cost for e500mc.
13586         (rs6000_issue_rate): Set issue rate for e500mc.
13587         * config/rs6000/rs6000.h (processor_type): Add
13588         PROCESSOR_PPCE500MC.
13589         (ASM_CPU_SPEC): Add e500mc.
13590         Set TARGET_ISEL to rs6000_isel.
13591         * config/rs6000/e500.h: Remove redefinition of TARGET_ISEL.
13592         (CHECK_E500_OPTIONS): Remove TARGET_ISEL.
13593         * config/rs6000/rs6000.md (define_attr "cpu"): Add ppce500mc.
13594         Include e500mc.md.
13595         * doc/invoke.texi: Add e500mc to list of cpus.
13596
13597 2008-06-27  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
13598
13599         PR c/34867
13600         * c-lex.c (lex_charconst): Initialize unsignedp.
13601
13602 2008-06-27  Olivier Hainque  <hainque@adacore.com>
13603
13604         * gimplify.c (gimplify_modify_expr_to_memset): Assert our
13605         documented assumptions.
13606
13607 2008-06-26  H.J. Lu  <hongjiu.lu@intel.com>
13608
13609         * dwarf2out.c: Remove trailing white spaces.  Break long line
13610         in comments.
13611
13612 2008-06-26  Richard Sandiford  <rdsandiford@googlemail.com>
13613
13614         * libfuncs.h (LTI_synchronize): New libfunc_index.
13615         (synchronize_libfunc): Declare.
13616         * builtins.c (expand_builtin_synchronize): Consider using
13617         synchronize_libfunc before falling back on an asm blockage.
13618         * config/mips/mips.c: Include libfuncs.h
13619         (mips_init_libfuncs): Initialize synchronize_libfunc for TARGET_MIPS16.
13620
13621 2008-06-26  Nathan Froyd  <froydnj@codesourcery.com>
13622
13623         * config/rs6000/rs6000.c (emit_allocate_stack): Add copy_r11
13624         parameter.  Copy stack_reg to r11 where appropriate.
13625         (no_global_regs_above): Add gpr parameter.
13626         (rs6000_stack_info): Only add padding for SPE save area if we
13627         are saving SPE GPRs and CR.
13628         (saveres_routine_syms): New variable.
13629         (FIRST_SAVRES_REGISTER, LAST_SAVRES_REGISTER, N_SAVRES_REGISTERS):
13630         Define.
13631         (rs6000_savres_routine_sym): New function.
13632         (rs6000_emit_stack_reset, rs6000_restore_saved_cr): New functions,
13633         split out of...
13634         (rs6000_emit_epilogue): ...here.  Use rs6000_use_multiple_p and
13635         rs6000_savres_strategy.  Restore GPRs out-of-line if appropriate.
13636         Tweak FPR out-of-line saving.
13637         (rs6000_make_savres_rtx): New function.
13638         (rs6000_use_multiple_p): New function.
13639         (rs6000_savres_strategy): New function.
13640         (rs6000_emit_prologue): Use rs6000_savres_strategy.  Save GPRs
13641         out-of-line if appropriate.
13642         * config/rs6000/sysv4.h (FP_SAVE_INLINE): Save FPRs out-of-line
13643         if we are optimizing for size.
13644         (GP_SAVE_INLINE): Define.
13645         (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX): Only use _l on 64-bit targets.
13646         * config/rs6000/darwin.h (GP_SAVE_INLINE): Define.
13647         * config/rs6000/aix.h (GP_SAVE_INLINE): Define.
13648         * config/rs6000/rs6000.md (*save_gpregs_<mode>): New insn.
13649         (*save_fpregs_<mode>): Add use of r11.
13650         (*restore_gpregs_<mode>): New insn.
13651         (*return_and_restore_gpregs_<mode>): New insn.
13652         (*return_and_restore_fpregs_<mode>): Adjust to clobber LR and
13653         use r11.
13654         * config/rs6000/spe.md (*save_gpregs_spe): New insn.
13655         (*restore_gpregs_spe): New insn.
13656         (*return_and_restore_gpregs_spe): New insn.
13657         * config/rs6000/predicates.md (save_world_operation): Fix check.
13658
13659 2008-06-26  Steven Bosscher  <steven@gcc.gnu.org>
13660
13661         * tree-into-ssa (insert_phi_nodes_for): 'var' must be a DECL at
13662         this point, so assert that.
13663
13664 2008-06-26  Steven Bosscher  <steven@gcc.gnu.org>
13665
13666         * cfganal.c: Include vec.h and vecprim.h.
13667         (compute_idf): Import from...
13668         * tree-into-ssa (compute_idf): ...here.
13669         * basic-block.h (compute_idf): Export.
13670
13671 2008-06-26  Joseph Myers  <joseph@codesourcery.com>
13672
13673         * c-decl.c (merge_decls): Use !current_function_decl to check for
13674         extern declaration of C99 inline function being at file scope.
13675
13676 2008-06-25  John David Anglin  <dave.anglin@gcc-cnrc.gc.ca>
13677
13678         * config.gcc (hppa[12]*-*-hpux10*): Don't use fixproto.
13679
13680 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13681
13682         * alias.c (record_alias_subset, init_alias_analysis): Fix
13683         -Wc++-compat and/or -Wcast-qual warnings.
13684         * attribs.c (lookup_attribute_spec): Likewise.
13685         * bb-reorder.c (find_traces, rotate_loop, find_traces_1_round,
13686         copy_bb, connect_traces,
13687         find_rarely_executed_basic_blocks_and_cr): Likewise.
13688         * bt-load.c (find_btr_def_group, add_btr_def, new_btr_user,
13689         note_btr_set, migrate_btr_defs): Likewise.
13690         * builtins.c (result_vector, expand_builtin_memcpy,
13691         expand_builtin_mempcpy_args, expand_builtin_strncpy,
13692         builtin_memset_read_str, expand_builtin_printf,
13693         fold_builtin_memchr, rewrite_call_expr, fold_builtin_printf):
13694         Likewise.
13695         * caller-save.c (mark_set_regs): Likewise.
13696         * calls.c (expand_call, emit_library_call_value_1): Likewise.
13697         * cgraph.c (cgraph_edge): Likewise.
13698         * combine.c (likely_spilled_retval_1): Likewise.
13699         * coverage.c (htab_counts_entry_hash, htab_counts_entry_eq,
13700         htab_counts_entry_del, get_coverage_counts): Likewise.
13701         * cselib.c (new_elt_list, new_elt_loc_list, entry_and_rtx_equal_p,
13702         new_cselib_val): Likewise.
13703         * dbgcnt.c (dbg_cnt_process_opt): Likewise.
13704         * dbxout.c (dbxout_init, dbxout_type, output_used_types_helper):
13705         Likewise.
13706         * df-core.c (df_compact_blocks): Likewise.
13707         * df-problems.c (df_grow_bb_info, df_chain_create): Likewise.
13708         * df-scan.c (df_grow_reg_info, df_ref_create,
13709         df_insn_create_insn_record, df_insn_rescan, df_notes_rescan,
13710         df_ref_compare, df_ref_create_structure, df_bb_refs_record,
13711         df_record_entry_block_defs, df_record_exit_block_uses,
13712         df_bb_verify): Likewise.
13713         * df.h (DF_REF_EXTRACT_WIDTH_CONST, DF_REF_EXTRACT_OFFSET_CONST,
13714         DF_REF_EXTRACT_MODE_CONST): New.
13715         * dominance.c (get_immediate_dominator, get_dominated_by,
13716         nearest_common_dominator, root_of_dom_tree,
13717         iterate_fix_dominators, first_dom_son, next_dom_son): Fix
13718         -Wc++-compat and/or -Wcast-qual warnings.
13719         * dse.c (clear_alias_set_lookup, get_group_info, gen_rtx_MEM,
13720         record_store, replace_read, check_mem_read_rtx, scan_insn,
13721         dse_step1, dse_record_singleton_alias_set): Likewise.
13722         * dwarf2asm.c (dw2_force_const_mem): Likewise.
13723
13724 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13725
13726         * dwarf2out.c (new_cfi, queue_reg_save, dwarf2out_begin_prologue,
13727         dwarf2out_frame_init, new_loc_descr, new_die, lookup_decl_die,
13728         lookup_decl_loc, add_var_loc_to_decl, compute_section_prefix,
13729         assign_symbol_names, htab_cu_hash, htab_cu_eq, htab_cu_del,
13730         build_abbrev_table, new_loc_list, output_comp_unit, add_arange,
13731         add_ranges_num, add_ranges_by_labels, file_info_cmp,
13732         file_name_acquire, output_file_names, add_const_value_attribute,
13733         premark_used_types_helper, file_table_eq, file_table_hash,
13734         lookup_filename, dwarf2out_var_location, dwarf2out_source_line,
13735         dwarf2out_init, file_table_relative_p): Fix -Wc++-compat and/or
13736         -Wcast-qual warnings.
13737         * ebitmap.c (ebitmap_array_grow, ebitmap_array_init,
13738         ebitmap_alloc, ebitmap_ior, ebitmap_and_compl): Likewise.
13739         * emit-rtl.c (get_mem_attrs, get_reg_attrs, gen_rtvec,
13740         gen_reg_rtx, start_sequence, init_emit): Likewise.
13741         * et-forest.c (et_new_occ, et_new_tree): Likewise.
13742         * except.c (init_eh_for_function, gen_eh_region,
13743         remove_unreachable_regions, add_ehl_entry, duplicate_eh_regions_1,
13744         arh_to_landing_pad, arh_to_label, add_action_record,
13745         add_call_site, switch_to_exception_section): Likewise.
13746         * expmed.c (synth_mult): Likewise.
13747         * expr.c (gen_group_rtx, emit_group_load, emit_group_store,
13748         store_expr): Likewise.
13749         * final.c (shorten_branches, final_scan_insn, debug_queue_symbol):
13750         Likewise.
13751         * function.c (assign_stack_temp_for_type,
13752         allocate_struct_function, match_asm_constraints_1): Likewise.
13753         * gcov-io.c (gcov_allocate): Likewise.
13754         * gcse.c (GNEW, GCNEW, GNEWVEC, GCNEWVEC, GRESIZEVEC, GNEWVAR,
13755         GCNEWVAR, GRESIZEVAR, GOBNEW, GOBNEWVAR): New.
13756         (gcse_main, alloc_gcse_mem, alloc_gcse_mem, alloc_reg_set_mem,
13757         record_one_set, insert_expr_in_table, insert_set_in_table,
13758         dump_hash_table, compute_hash_table_work, alloc_hash_table,
13759         pre_ldst_expr_hash, pre_ldst_expr_eq, find_rtx_in_ldst,
13760         reg_set_info, reg_clear_last_set): Fix -Wc++-compat and/or
13761         -Wcast-qual warnings.
13762
13763 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13764
13765         * cse.c (approx_reg_cost_1, cse_insn): Fix -Wc++-compat and/or
13766         -Wcast-qual warnings.
13767         * gcc.c (process_command): Likewise.
13768         * genattrtab.c (oballoc): Use XOBNEW.
13769         (oballocvec): Define.
13770         (attr_hash_add_rtx, attr_hash_add_string, attr_string,
13771         get_attr_value, fill_attr, make_length_attrs, gen_attr, gen_insn,
13772         gen_delay, find_attr, gen_insn_reserv, gen_bypass_1): Fix
13773         -Wc++-compat and/or -Wcast-qual warnings.
13774         * genautomata.c (XCREATENODE, XCREATENODEVEC, XCREATENODEVAR,
13775         XCOPYNODE, XCOPYNODEVEC, XCOPYNODEVAR): New.
13776         (gen_cpu_unit, gen_query_cpu_unit, gen_bypass, gen_excl_set,
13777         gen_presence_absence_set, gen_automaton, gen_regexp_el,
13778         gen_regexp_repeat, gen_regexp_allof, gen_regexp_oneof,
13779         gen_regexp_sequence, gen_reserv, gen_insn_reserv, process_excls,
13780         add_excls, process_presence_absence_names,
13781         process_presence_absence_patterns, add_presence_absence,
13782         process_regexp, add_advance_cycle_insn_decl, get_free_alt_state,
13783         get_free_state, add_arc, get_free_automata_list_el,
13784         form_reserv_sets_list, copy_insn_regexp, transform_1, transform_2,
13785         transform_3, cache_presence, create_ainsns, create_automata,
13786         create_state_ainsn_table, dfa_insn_code_enlarge,
13787         output_trans_func, output_min_issue_delay_func,
13788         output_dead_lock_func, output_reset_func,
13789         output_get_cpu_unit_code_func, output_dfa_start_func,
13790         expand_automata): Likewise.
13791         * genextract.c (gen_insn): Likewise.
13792         * gengtype-lex.l: Likewise.
13793         * gengtype.c (read_input_list, adjust_field_type,
13794         process_gc_options): Likewise.
13795         * genoutput.c (note_constraint): Likewise.
13796         * genpreds.c (mangle, add_constraint): Likewise.
13797         * genrecog.c (process_define_predicate, new_decision,
13798         add_to_sequence): Likewise.
13799         * gensupport.c (record_insn_name): Likewise.
13800
13801 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13802
13803         * config/i386/driver-i386.c (detect_caches_amd,
13804         detect_caches_intel, host_detect_local_cpu): Fix -Wc++-compat
13805         and/or -Wcast-qual warnings.
13806         *ggc-common.c (ggc_mark_roots, gt_pch_note_object,
13807         gt_pch_note_reorder, relocate_ptrs, write_pch_globals,
13808         gt_pch_save): Likewise.
13809         * ggc-page.c (push_depth, push_by_depth, alloc_anon, alloc_page,
13810         gt_ggc_m_S, clear_marks, ggc_pch_read): Likewise.
13811         * global.c (compute_regsets): Likewise.
13812         * graph.c (print_rtl_graph_with_bb, clean_graph_dump_file,
13813         finish_graph_dump_file): Likewise.
13814         * haifa-sched.c (schedule_block, extend_h_i_d, extend_ready,
13815         unlink_bb_notes): Likewise.
13816         * integrate.c (get_hard_reg_initial_val): Likewise.
13817         * ipa-prop.c (ipa_push_func_to_list): Likewise.
13818         * ipa-struct-reorg.c (gen_var_name, gen_cluster_name): Likewise.
13819         * local-alloc.c (update_equiv_regs): Likewise.
13820         * loop-invariant.c (check_invariant_table_size,
13821         hash_invariant_expr, eq_invariant_expr, find_or_insert_inv):
13822         Likewise.
13823         * loop-iv.c (check_iv_ref_table_size, analyzed_for_bivness_p,
13824         altered_reg_used, mark_altered): Likewise.
13825         * loop-unroll.c (si_info_eq, ve_info_eq, allocate_basic_variable,
13826         insert_var_expansion_initialization,
13827         combine_var_copies_in_loop_exit, apply_opt_in_copies,
13828         release_var_copies): Likewise.
13829         * matrix-reorg.c (mat_acc_phi_hash, mat_acc_phi_eq, mtt_info_eq,
13830         analyze_matrix_decl, add_allocation_site, analyze_transpose,
13831         analyze_accesses_for_phi_node, check_var_notmodified_p,
13832         check_allocation_function, find_sites_in_func,
13833         record_all_accesses_in_func, transform_access_sites,
13834         transform_allocation_sites): Likewise.
13835         * omp-low.c (new_omp_region, create_omp_child_function_name,
13836         check_omp_nesting_restrictions, check_combined_parallel,
13837         lower_omp_2, diagnose_sb_1, diagnose_sb_2): Likewise.
13838         * optabs.c (no_conflict_move_test, gen_libfunc, gen_fp_libfunc,
13839         gen_intv_fp_libfunc, gen_interclass_conv_libfunc,
13840         gen_intraclass_conv_libfunc, set_optab_libfunc, set_conv_libfunc):
13841         Likewise.
13842         * opts-common.c (prune_options): Likewise.
13843         * opts.c (add_input_filename, print_filtered_help,
13844         get_option_state): Likewise.
13845         * params.c (add_params): Likewise.
13846         * passes.c (set_pass_for_id, next_pass_1,
13847         do_per_function_toporder, pass_fini_dump_file): Likewise.
13848         * postreload.c (reload_cse_simplify_operands): Likewise.
13849         * predict.c (tree_predicted_by_p, tree_predict_edge,
13850         clear_bb_predictions, combine_predictions_for_bb): Likewise.
13851
13852 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13853
13854         * ra.h (add_neighbor): Fix -Wc++-compat and/or -Wcast-qual
13855         warnings.
13856         * recog.c (check_asm_operands, validate_change_1): Likewise.
13857         * reg-stack.c (check_asm_stack_operands, subst_asm_stack_regs,
13858         subst_asm_stack_regs): Likewise.
13859         * regclass.c (regclass, som_hash, som_eq, record_subregs_of_mode,
13860         cannot_change_mode_set_regs, invalid_mode_change_p): Likewise.
13861         * regmove.c (reg_is_remote_constant_p): Likewise.
13862         * regrename.c (regrename_optimize, scan_rtx_reg,
13863         kill_clobbered_value, kill_set_value, kill_autoinc_value):
13864         Likewise.
13865         * regstat.c (regstat_init_n_sets_and_refs, regstat_compute_ri,
13866         regstat_compute_calls_crossed): Likewise.
13867         * reload1.c (init_reload, new_insn_chain,
13868         has_nonexceptional_receiver, reload, copy_reloads,
13869         calculate_needs_all_insns, init_elim_table): Likewise.
13870         * rtl-factoring.c (compute_rtx_cost, fill_hash_bucket): Likewise.
13871         * rtl.c (shallow_copy_rtx_stat): Likewise.
13872         * rtlanal.c (parms_set): Likewise.
13873         * sbitmap.c (sbitmap_alloc, sbitmap_alloc_with_popcount,
13874         sbitmap_resize, sbitmap_vector_alloc): Likewise.
13875         * sched-ebb.c (earliest_block_with_similiar_load,
13876         add_deps_for_risky_insns): Likewise.
13877         * sched-rgn.c (find_rgns, gather_region_statistics, extend_rgns,
13878         schedule_region): Likewise.
13879         * see.c (eq_descriptor_pre_extension,
13880         hash_descriptor_pre_extension, hash_del_pre_extension,
13881         eq_descriptor_properties, hash_descriptor_properties,
13882         hash_del_properties, see_seek_pre_extension_expr,
13883         see_initialize_data_structures, see_print_register_properties,
13884         see_print_pre_extension_expr, see_delete_merged_def_extension,
13885         see_delete_unmerged_def_extension, see_emit_use_extension,
13886         see_pre_delete_extension, see_map_extension, see_commit_changes,
13887         see_analyze_merged_def_local_prop,
13888         see_analyze_merged_def_local_prop,
13889         see_analyze_unmerged_def_local_prop, see_analyze_use_local_prop,
13890         see_set_prop_merged_def, see_set_prop_unmerged_def,
13891         see_set_prop_unmerged_use, see_print_one_extension,
13892         see_merge_one_use_extension, see_merge_one_def_extension,
13893         see_store_reference_and_extension, see_update_uses_relevancy,
13894         see_update_defs_relevancy): Likewise.
13895         * statistics.c (hash_statistics_hash, hash_statistics_eq,
13896         hash_statistics_free, curr_statistics_hash): Likewise.
13897         * stmt.c (parse_output_constraint, decl_overlaps_hard_reg_set_p,
13898         expand_asm_operands, expand_return, case_bit_test_cmp,
13899         expand_case): Likewise.
13900         * stor-layout.c (start_record_layout): Likewise.
13901         * stringpool.c (ggc_alloc_string, gt_pch_n_S,
13902         gt_pch_save_stringpool): Likewise.
13903         * tree-data-ref.c (hash_stmt_vertex_info,
13904         have_similar_memory_accesses_1, ref_base_address_1): Likewise.
13905         * tree-ssa-phiopt.c (name_to_bb_hash): Likewise.
13906
13907 2008-06-25  Uros Bizjak  <ubizjak@gmail.com>
13908
13909         PR target/36627
13910         * config/i386/i386.md : Change constraints of HImode and QImode
13911         immediate operands from "i" to "n".  Change SImode "ni" constraint to
13912         "i" and SImode "rmi" constraint to "g".  Remove all constraints
13913         from const0_operand and const1_operand predicated operands.
13914         (i): Change QImode and HImode attribute from "i" to "n".
13915         (*subqi_2): Change HImode operands to QImode.
13916         (*subqi_3): Ditto.
13917
13918 2008-06-25  Olivier Hainque  <hainque@adacore.com>
13919
13920         * Makefile.in (GTFILES_H): Use | instead of ; as separator in
13921         sed substitutions.
13922
13923 2008-06-25  Richard Guenther  <rguenther@suse.de>
13924
13925         * tree-ssa-structalias.c (fieldoff_compare): Make sure to
13926         not overflow the result type.
13927
13928 2008-06-25  Richard Guenther  <rguenther@suse.de>
13929
13930         * tree-vn.c (vn_add): Handle TRUTH_*_EXPR.
13931         (vn_lookup): Likewise.
13932
13933 2008-06-25  Richard Guenther  <rguenther@suse.de>
13934
13935         PR tree-optimization/35518
13936         * fold-const.c (fold_ternary): Strip trivial BIT_FIELD_REFs.
13937         * tree-sra.c (instantiate_element): Use fold_build3 to build
13938         BIT_FIELD_REFs.
13939         (try_instantiate_multiple_fields): Likewise.
13940
13941 2008-06-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13942
13943         * config/rs6000/rs6000.md: Change all string instruction's clobber to
13944         be early clobbers.
13945
13946 2008-06-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13947
13948         * config/rs6000/rs6000.c (rs6000_emit_epilogue): Set
13949         use_backchain_to_restore_sp to true
13950         if the offset of the link register save area would go over the 32k - 1
13951         offset limit of the load
13952         instructions.
13953
13954 2008-06-25  Hans-Peter Nilsson  <hp@axis.com>
13955
13956         * doc/invoke.texi (Optimize Options) <fstrict-aliasing>: Add
13957         anchor for the type-punning blurb.  Cross-reference "Structures
13958         unions enumerations and bit-fields implementation".  Provide a
13959         cast-through-pointer example.  Make final sentence self-contained.
13960         * doc/implement-c.texi (Structures unions enumerations and
13961         bit-fields implementation): Cross-reference the type-punning blurb
13962         in the -fstrict-aliasing documentation.
13963
13964 2008-06-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13965
13966         PR middle-end/36594
13967         * builtins.c (expand_builtin_nonlocal_goto): Stabilize the address of
13968         the memory instead of the memory itself for the save area.
13969
13970 2008-06-24  Olivier Hainque  <hainque@adacore.com>
13971             Nicolas Roche  <roche@adacore.com>
13972
13973         * gengtype.c (srcdir_len): size_t instead of int.
13974         (get_file_realbasename): New function.  For F a filename, the real
13975         basename of F, with all the path components stripped.
13976         (get_file_srcdir_relative_path): New function.  For F a filename, the
13977         relative path to F from $(srcdir).
13978         (get_file_basename): Rewrite using get_file_srcdir_relative_path and
13979         get_file_realbasename.  Adjust the head comment.
13980         (get_prefix_langdir_index): New function. For F a filename, return the
13981         lang_dir_names[] relative index of the language directory that is
13982         a prefix in F.
13983         (get_file_langdir): For F a filename, return the name of the language
13984         directory where F is located.
13985         (get_file_gtfilename): New function. The gt- output file name for an
13986         input filename F.
13987         (get_output_file_with_visibility): Replace in-line computations with
13988         uses of get_file_gtfilename and get_prefix_langdir_index.
13989         * Makefile.in (GTFILES_H): Adjust to match what gengtype generates.
13990
13991 2008-06-24  Jakub Jelinek  <jakub@redhat.com>
13992
13993         PR tree-optimization/36504
13994         * tree-ssa-loop-prefetch.c (gather_memory_references_ref): Skip
13995         references without base address.
13996
13997 2008-06-23  Uros Bizjak  <ubizjak@gmail.com>
13998
13999         PR middle-end/36584
14000         * calls.c (expand_call): Increase alignment for recursive functions.
14001
14002 2008-06-23  Anatoly Sokolov  <aesok@post.ru>
14003
14004         * config/avr/avr.c (avr_function_value): Add new 'outgoing' argument.
14005         (TARGET_FUNCTION_VALUE): New define.
14006         * config/avr/avr-protos.h (avr_function_value): Remove declaration.
14007         * config/avr/avr.h (FUNCTION_VALUE): Remove.
14008
14009 2008-06-23  Uros Bizjak  <ubizjak@gmail.com>
14010
14011         * config/i386/i386.md (fmodxf3): Change sequence of move instructions.
14012         (fmod<mode>3): Ditto.
14013         (remainderxf3): Ditto.
14014         (remainder<mode>3): Ditto.
14015
14016 2008-06-23  Jakub Jelinek  <jakub@redhat.com>
14017
14018         PR target/36533
14019         * emit-rtl.c (set_reg_attrs_from_value): Do nothing if
14020         REG is a hard register.
14021
14022         PR tree-optimization/36508
14023         * tree-ssa-pre.c (compute_antic): Allow num_iterations up to
14024         499, don't check it at all in release compilers.
14025
14026 2008-06-23  Uros Bizjak  <ubizjak@gmail.com>
14027
14028         * config/i386/i386.md (*fop_<mode>_1_i387): Use SSE_FLOAT_MODE_P
14029         together with SSE_TARGET_MATH to disable insn pattern.
14030         (*fop_<MODEF:mode>_2_i387): Ditto.
14031         (*fop_<MODEF:mode>_3_i387): Ditto.
14032
14033 2008-06-22  Andy Hutchinson  <hutchinsonandy@aim.com>
14034
14035         * config/avr/avr.h (SUPPORTS_INIT_PRIORITY): Define.
14036
14037 2008-06-22  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
14038
14039         PR middle-end/34906
14040         * gimplify.c (gimplify_asm_expr): Check the return code of
14041         parse_output_constraint call, set function return and is_inout
14042         value if it failed.
14043
14044 2008-06-22  Ian Lance Taylor  <iant@google.com>
14045
14046         * c-lex.c (narrowest_unsigned_type): Change itk to int.
14047         (narrowest_signed_type): Likewise.
14048         * c-typeck.c (c_common_type): Change local variable mclass to enum
14049         mode_class, twice.
14050         (parser_build_binary_op): Compare the TREE_CODE_CLASS with
14051         tcc_comparison, not the tree code itself.
14052         * c-common.c (def_fn_type): Pass int, not an enum, to va_arg.
14053         (c_expand_expr): Cast modifier to enum expand_modifier.
14054         * c-common.h (C_RID_CODE): Add casts.
14055         (C_SET_RID_CODE): Define.
14056         * c-parser.c (c_parse_init): Use C_SET_RID_CODE.
14057         (c_lex_one_token): Add cast to avoid warning.
14058         (c_parser_objc_type_name): Rename local typename to type_name.
14059         (check_no_duplicate_clause): Change code parameter to enum
14060         omp_clause_code.
14061         (c_parser_omp_var_list_parens): Change kind parameter to enum
14062         omp_clause_code.
14063         (c_parser_omp_flush): Pass OMP_CLAUSE_ERROR, not 0, to
14064         c_parser_omp_list_var_parens.
14065         (c_parser_omp_threadprivate): Likewise.
14066         * cp/lex.c (init_reswords): Use C_SET_RID_CODE.
14067         * cp/parser.c (cp_lexer_get_preprocessor_token): Likewise.
14068         * c-format.c (NO_FMT): Define.
14069         (printf_length_specs): Use NO_FMT.
14070         (asm_fprintf_length_specs): Likewise.
14071         (gcc_diag_length_specs): Likewise.
14072         (scanf_length_specs): Likewise.
14073         (strfmon_length_specs): Likewise.
14074         (gcc_gfc_length_specs): Likewise.
14075         (printf_flag_specs): Change 0 to STD_C89.
14076         (asm_fprintf_flag_specs): Likewise.
14077         (gcc_diag_flag_specs): Likewise.
14078         (gcc_cxxdiag_flag_specs): Likewise.
14079         (scanf_flag_specs): Likewise.
14080         (strftime_flag_specs): Likewise.
14081         (strfmon_flag_specs): Likewise.
14082         (print_char_table): Likewise.
14083         (asm_fprintf_char_table): Likewise.
14084         (gcc_diag_char_table): Likewise.
14085         (gcc_tdiag_char_table): Likewise.
14086         (gcc_cdiag_char_table): Likewise.
14087         (gcc_cxxdiag_char_table): Likewise.
14088         (gcc_gfc_char_table): Likewise.
14089         (scan_char_table): Likewise.
14090         (time_char_table): Likewis.
14091         (monetary_char_table): Likewise.
14092         * c-format.h (BADLEN): Likewise.
14093
14094 2008-06-21  Ian Lance Taylor  <iant@google.com>
14095
14096         * tree.h (enum tree_code): Include all-tree.def, not tree.def.
14097         Define END_OF_BASE_TREE_CODES around inclusion.
14098         * tree.c (tree_code_type): New global array.
14099         (tree_code_length, tree_code_name): Likewise.
14100         * Makefile.in (TREE_H): Add all-tree.def, c-common.def, and
14101         $(lang_tree_files).
14102         (all-tree.def, s-alltree): New targets.
14103         (gencheck.h, s-gencheck): Remove.
14104         (tree.o): Depend upon all-tree.def.
14105         (build/gencheck.o): Remove gencheck.h dependency.
14106         (mostlyclean): Don't remove gencheck.h.
14107         * c-common.h (enum c_tree_code): Remove.
14108         * c-lang.c (tree_code_type): Remove.
14109         (tree_code_length, tree_code_name): Remove.
14110         * gencheck.c (tree_codes): Include all-tree.def, rather than
14111         tree.def, c-common.def, and gencheck.h.  Undefined DEFTREECODE
14112         after it is used.
14113         * tree-browser.c (tb_tree_codes): Include all-tree.def, rather
14114         than tree.def.
14115         * cp/cp-tree.h (enum cplus_tree_code): Remove.
14116         (operator_name_info): Size to MAX_TREE_CODES.
14117         (assignment_operator_name_info): Likewise.
14118         * cp/cp-lang.c (tree_code_type): Remove.
14119         (tree_code_length, tree_code_name): Remove.
14120         * cp/lex.c (operator_name_info): Size to MAX_TREE_CODES.
14121         (assignment_operator_name_info): Likewise.
14122         * cp/decl.c (grok_op_properties): Change LAST_CPLUS_TREE_CODE to
14123         MAX_TREE_CODES.
14124         * cp/mangle.c (write_expression): Likewise.
14125         * cp/Make-lang.in (CXX_TREE_H): Remove cp/cp-tree.def.
14126         * fortran/f95-lang.c (tree_code_type): Remove.
14127         (tree_code_length, tree_code_name): Remove.
14128         * java/java-tree.h (enum java_tree_code): Remove.
14129         * java/lang.c (tree_code_type): Remove.
14130         (tree_code_length, tree_code_name): Remove.
14131         * java/Make-lang.in (JAVA_TREE_H): Remove java/java-tree.def.
14132         * objc/objc-act.h (enum objc_tree_code): Remove.
14133         * objc/objc-lang.c (tree_code_type): Remove.
14134         (tree_code_length, tree_code_name): Remove.
14135         * objcp/objcp-lang.c (tree_code_type): Remove.
14136         (tree_code_length, tree_code_name): Remove.
14137         * ada/ada-tree.h (enum gnat_tree_code): Remove.
14138         * ada/Make-lang.in (ADA_TREE_H): Remove ada/ada-tre.def.
14139         * ada/misc.c (tree_code_type): Remove.
14140         (tree_code_length, tree_code_name): Remove.
14141
14142 2008-06-21  Bernhard Fischer  <aldot@gcc.gnu.org>
14143
14144         * tree-ssa-pre.c (fini_antic): Bitmap_sets have to be freed before
14145         the grand_bitmap_obstack.
14146
14147 2008-06-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14148
14149         * ggc.h (GGC_RESIZEVAR): New, reorder macros.
14150         * tracer.c (tail_duplicate): Fix for -Wc++-compat.
14151         * tree-affine.c (aff_combination_expand, free_name_expansion): Likewise.
14152         * tree-cfg.c (replace_by_duplicate_decl, replace_ssa_name,
14153         move_stmt_r, new_label_mapper): Likewise.
14154         * tree-complex.c (cvc_lookup): Likewise.
14155         * tree-dfa.c (create_function_ann): Likewise.
14156         * tree-dump.c (dump_register): Likewise.
14157         * tree-if-conv.c (tree_if_conversion, add_to_predicate_list,
14158         find_phi_replacement_condition): Likewise.
14159         * tree-inline.c (copy_phis_for_bb, estimate_num_insns_1,
14160         tree_function_versioning): Likewise.
14161         * tree-into-ssa.c (cmp_dfsnum): Likewise.
14162         * tree-iterator.c (tsi_link_before, tsi_link_after): Likewise.
14163         * tree-nested.c (lookup_field_for_decl, lookup_tramp_for_decl,
14164         get_nonlocal_debug_decl, convert_nonlocal_reference,
14165         convert_nonlocal_omp_clauses, get_local_debug_decl,
14166         convert_local_reference, convert_local_omp_clauses,
14167         convert_nl_goto_reference, convert_nl_goto_receiver,
14168         convert_tramp_reference, convert_call_expr): Likewise.
14169         * tree-outof-ssa.c (contains_tree_r): Likewise.
14170         * tree-parloops.c (reduction_phi, initialize_reductions,
14171         eliminate_local_variables_1, add_field_for_reduction,
14172         add_field_for_name, create_phi_for_local_result,
14173         create_call_for_reduction_1, create_loads_for_reductions,
14174         create_stores_for_reduction, create_loads_and_stores_for_name):
14175         Likewise.
14176         * tree-phinodes.c (allocate_phi_node): Likewise.
14177         * tree-predcom.c (order_drefs, execute_pred_commoning_cbck): Likewise.
14178         * tree-sra.c (sra_elt_hash, sra_elt_eq, lookup_element): Likewise.
14179         * tree-ssa-alias.c (get_mem_sym_stats_for): Likewise.
14180         * tree-ssa-coalesce.c (compare_pairs): Likewise.
14181         * tree-ssa-loop-im.c (mem_ref_in_stmt, memref_hash, memref_eq,
14182         memref_free, gather_mem_refs_stmt, vtoe_hash, vtoe_eq, vtoe_free,
14183         record_vop_access, get_vop_accesses, get_vop_stores): Likewise.
14184         * tree-ssa-loop-prefetch.c (determine_loop_nest_reuse): Likewise.
14185         * tree-ssa-sccvn.c (VN_INFO_GET, free_phi, free_reference,
14186         vn_nary_op_insert): Likewise.
14187         * tree-ssa.c (redirect_edge_var_map_add,
14188         redirect_edge_var_map_clear, redirect_edge_var_map_dup): Likewise.
14189         * tree-vectorizer.c (vectorize_loops): Likewise.
14190         * tree.c (make_node_stat, copy_node_stat, build_int_cst_wide,
14191         build_fixed, build_real, make_tree_binfo_stat, make_tree_vec_stat,
14192         tree_cons_stat, build1_stat, build_variant_type_copy,
14193         decl_init_priority_lookup, decl_fini_priority_lookup,
14194         decl_priority_info, decl_restrict_base_lookup,
14195         decl_restrict_base_insert, decl_debug_expr_lookup,
14196         decl_debug_expr_insert, decl_value_expr_lookup,
14197         decl_value_expr_insert, type_hash_eq, type_hash_lookup,
14198         type_hash_add, get_file_function_name, tree_check_failed,
14199         tree_not_check_failed, tree_range_check_failed,
14200         omp_clause_range_check_failed, build_omp_clause,
14201         build_vl_exp_stat): Likewise.
14202         * value-prof.c (gimple_histogram_value,
14203         gimple_duplicate_stmt_histograms): Likewise.
14204         * var-tracking.c (attrs_list_insert, attrs_list_copy,
14205         unshare_variable, variable_union_info_cmp_pos, variable_union,
14206         dataflow_set_different_1, dataflow_set_different_2,
14207         vt_find_locations, variable_was_changed, set_variable_part,
14208         emit_notes_for_differences_1, emit_notes_for_differences_2): Likewise.
14209         * varasm.c (prefix_name, emutls_decl, section_entry_eq,
14210         section_entry_hash, object_block_entry_eq,
14211         object_block_entry_hash, create_block_symbol,
14212         initialize_cold_section_name, default_function_rodata_section,
14213         strip_reg_name, set_user_assembler_name, const_desc_eq,
14214         build_constant_desc, output_constant_def, lookup_constant_def,
14215         const_desc_rtx_hash, const_desc_rtx_eq, const_rtx_hash_1,
14216         create_constant_pool, force_const_mem, compute_reloc_for_rtx_1,
14217         default_internal_label): Likewise.
14218         * varray.c (varray_init, varray_grow): Likewise.
14219         * vec.c (vec_gc_o_reserve_1, vec_heap_o_reserve_1): Likewise.
14220
14221 2008-06-20  Uros Bizjak  <ubizjak@gmail.com>
14222
14223         * config/i386/i386.md (*jcc_fused_1): Handle all valid compare
14224         operators for "test" insn.  Macroize insn using SWI mode macro.
14225         (*jcc_fused_2): Ditto.
14226         (*jcc_fused_3): Macroize insn using SWI mode macro.
14227         (*jcc_fused_4): Ditto.
14228
14229 2008-06-20  Bernhard Fischer  <aldot@gcc.gnu.org>
14230
14231         * tree-ssa-pre.c: Fix typo in comment.
14232         (init_antic, fini_antic): Add explicit funtions for
14233         initializing and deinitializing ANTIC and AVAIL sets.
14234         (create_expression_by_pieces): Fix typo in comment.
14235         Remove redundant set of new_stuff and use NULL_TREE instead of NULL.
14236         (execute_pre): Eventually dump details about ANTIC_IN.
14237
14238 2008-06-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14239
14240         * collect2.c (main, add_to_list): Fix for -Wc++-compat.
14241         * gcc.c (translate_options, init_spec, store_arg, read_specs,
14242         add_to_obstack, file_at_path, find_a_file, execute,
14243         add_preprocessor_option, add_assembler_option, add_linker_option,
14244         process_command, insert_wrapper, do_option_spec, do_self_spec,
14245         spec_path, do_spec_1, is_directory, main, used_arg,
14246         getenv_spec_function): Likewise.
14247         * tlink.c (symbol_hash_lookup, file_hash_lookup,
14248         demangled_hash_lookup, symbol_push, file_push, frob_extension):
14249         Likewise.
14250
14251 2008-06-19  Kenneth Zadeck <zadeck@naturalbridge.com>
14252
14253         * doc/rtl.texi: Updated subreg section.
14254
14255 2008-06-19  Jakub Jelinek  <jakub@redhat.com>
14256
14257         PR c++/36523
14258         * cgraphunit.c (cgraph_process_new_functions): Don't clear
14259         node->needed and node->reachable.
14260         * cgraphbuild.c (record_reference): Handle OMP_PARALLEL and OMP_TASK.
14261         * omp-low.c (delete_omp_context): Call finalize_task_copyfn.
14262         (expand_task_call): Don't call expand_task_copyfn.
14263         (expand_task_copyfn): Renamed to...
14264         (finalize_task_copyfn): ... this.
14265
14266 2008-06-19  Jan Hubicka  <jh@suse.cz>
14267
14268         * builtins.c (expand_builtin_nonlocal_goto): Stabilize r_sp before
14269         clobbering framepointer.
14270
14271 2008-06-19  Jan Hubicka  <jh@suse.cz>
14272
14273         * tree-optimize.c (execute_early_local_optimizations): Set
14274         cgraph_state only at first invocation.
14275
14276 2008-06-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14277
14278         * system.h (-Wc++-compat): Activate as a warning, no an error.
14279
14280 2008-06-19  Uros Bizjak  <ubizjak@gmail.com>
14281
14282         * config/i386/i386.md (*jcc_fused_1): Use ASM_COMMENT_START
14283         instead of "#" in insn asm template.
14284         (*jcc_fused_2): Ditto.
14285
14286 2008-06-19  Uros Bizjak  <ubizjak@gmail.com>
14287
14288         * config/i386/i386.h (ix86_tune_indices)
14289         [X86_TUNE_FUSE_CMP_AND_BRANCH]: New.
14290         (TARGET_FUSE_CMP_AND_BRANCH): New define.
14291         * config/i386/i386.md (*jcc_fused_1): New insn pattern
14292         (*jcc_fused_2): Ditto.
14293         * config/i386/i386.c (ix86_tune_features): Add m_CORE2 to
14294         X86_TUNE_FUSE_CMP_AND_BRANCH targets.
14295         (print operand): Handle 'E' and 'e' code.
14296
14297 2008-06-19  Anatoly Sokolov  <aesok@post.ru>
14298
14299         * config/avr/avr.c (avr_mcu_t): Add attiny13a.
14300         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
14301         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
14302
14303 2008-06-19  Bernhard Fischer  <aldot@gcc.gnu.org>
14304
14305         * cgraphunit.c (cgraph_finalize_function): Remove redundant setting of
14306         node->decl.
14307         (cgraph_expand_function): Use local copy of decl.
14308         (cgraph_expand_all_functions): Remove redundant initialization of
14309         order_pos.
14310         (cgraph_optimize): Reword internal_error message.
14311
14312 2008-06-19  Chung-Lin Tang  <ctang@marvell.com>
14313
14314         * arm-protos.h (arm_return_in_memory): Remove public
14315         arm_return_in_memory() prototype.
14316         * arm.c (arm_return_in_memory): Add static prototype, add target
14317         hook macro, change definition and comments.
14318         * arm.h (TARGET_RETURN_IN_MEMORY): Remove.
14319
14320 2008-06-19  Ben Elliston  <bje@au.ibm.com>
14321
14322         * dfp.h, dfp.c, config/dfp-bit.h, config/dfp-bit.c, real.h,
14323         real.c: Remove references to IEEE 754R.
14324         * doc/install.texi (Configuration): IEEE 754R -> IEEE 754-2008.
14325         * doc/libgcc.texi (Decimal float library routines): Likewise.
14326
14327 2008-06-18  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
14328
14329         * targhooks.h (struct gcc_target): New member unwind_word_mode.
14330         (default_unwind_word_mode): Add prototype.
14331         * targhooks.c (default_unwind_word_mode): New function.
14332         (default_eh_return_filter_mode): Return targetm.unwind_word_mode ()
14333         instead of word_mode.
14334         * target-def.h (TARGET_UNWIND_WORD_MODE): New macro.
14335         (TARGET_INITIALIZER): Use it.
14336
14337         * c-common.c (handle_mode_attribute): Support "unwind_word"
14338         mode attribute.
14339         * unwind-generic.h (_Unwind_Word, _Unwind_Sword): Use it.
14340
14341         * except.c (init_eh): Use targetm.unwind_word_mode () instead of
14342         word_mode to access SjLj_Function_Context member "data".
14343         (sjlj_emit_dispatch_table): Likewise.  Also, perform type
14344         conversion from targetm.eh_return_filter_mode () to
14345         targetm.unwind_word_mode () if they differ.
14346
14347         * builtin-types.def (BT_UNWINDWORD): New primitive type.
14348         (BT_FN_UNWINDWORD_PTR): New function type.
14349         (BT_FN_WORD_PTR): Remove.
14350         * builtins.def (BUILT_IN_EXTEND_POINTER): Use BT_FN_UNWINDWORD_PTR.
14351         * except.c (expand_builtin_extend_pointer): Convert pointer to
14352         targetm.unwind_word_mode () instead of word_mode.
14353
14354         * config/spu/spu-protos.h (spu_eh_return_filter_mode): Remove.
14355         * config/spu/spu.c (spu_eh_return_filter_mode): Remove.
14356         (spu_unwind_word_mode): New function.
14357         (TARGET_EH_RETURN_FILTER_MODE): Do not define.
14358         (TARGET_UNWIND_WORD_MODE): Define.
14359         * config/spu/t-spu-elf (TARGET_LIBGCC2_CFLAGS): Remove -D__word__=SI.
14360
14361 2008-06-18  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
14362
14363         * config/spu/spu.c (reg_align): Remove.
14364         (regno_aligned_for_load): Also accept ARG_POINTER_REGNUM.
14365         (spu_split_load): Use regno_aligned_for_load instead of reg_align.
14366         (spu_split_store): Likewise.
14367
14368 2008-06-18  Bernhard Fischer  <aldot@gcc.gnu.org>
14369
14370         * gcc/tree-vn.c: Fix typo in comment.
14371
14372 2008-06-18  Jan Hubicka  <jh@suse.cz>
14373
14374         * cgraphunit.c (cgraph_optimize): Output debug info when doing
14375         toplevel reorder too.
14376
14377 2008-06-18  Jan Hubicka  <jh@suse.cz>
14378
14379         * c-opts.c (c_common_post_options): PCH is not compatible with
14380         no-unit-at-a-time.
14381         * opts.c (handle_options): Enable unit-at-a-time at O0 along with
14382         -fno-toplevel-reorder by default now.
14383
14384 2008-06-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
14385
14386         PR documentation/30739
14387         * doc/install.texi (Prerequisites): Document dependency on awk.
14388
14389 2008-06-18  Uros Bizjak  <ubizjak@gmail.com>
14390             Ian Lance Taylor  <iant@google.com>
14391
14392         PR rtl-optimization/35604
14393         * jump.c (redirect_exp_1): Skip the condition of an IF_THEN_ELSE. We
14394         only want to change jump destinations, not eventual label comparisons.
14395
14396 2008-06-16  Jan Hubicka  <jh@suse.cz>
14397
14398         * cgraphunit.c (cgraph_expand_pending_functions): Give up at
14399         syntax errors.
14400         (cgraph_analyze_function): Likewise.
14401
14402 2008-06-16  Jan Hubicka  <jh@suse.cz>
14403
14404         * cgraph.h (cgraph_mark_if_needed): New function.
14405         * cgraphunit.c (cgraph_mark_if_needed): New function.
14406         * c-decl.c (duplicate_decl): Use it.
14407
14408 2008-06-16  Jan Hubicka  <jh@suse.cz>
14409
14410         * cgraph.c (cgraph_add_new_function): When in expansion state, do
14411         lowering.
14412
14413 2008-06-16  Jan Hubicka  <jh@suse.cz>
14414
14415         * tree-outof-ssa.c (pass_out_of_ssa): Do not depend on PROP_alias.
14416
14417 2008-06-16  Daniel Jacobowitz  <dan@codesourcery.com>
14418             Kazu Hirata  <kazu@codesourcery.com>
14419             Maxim Kuvyrkov  <maxim@codesourcery.com
14420
14421         * config.gcc (mips64el-st-linux-gnu): Use mips/st.h and mips/t-st.
14422         * config.host: Use driver-native.o and mips/x-native for mips*-linux*.
14423         * config/mips/linux.h (host_detect_local_cpu): Declare, add to
14424         EXTRA_SPEC_FUNCTIONS.
14425         (MARCH_MTUNE_NATIVE_SPECS, BASE_DRIVER_SELF_SPECS): New macros.
14426         (DRIVER_SELF_SPECS): Adjust.
14427         * config/mips/linux64.h (DRIVER_SELF_SPECS): Update.
14428         * config/mips/st.h, config/mips/t-st: New.
14429         * config/mips/driver-native.c, config/mips/x-native: New.
14430         * doc/invoke.texi (MIPS): Document 'native' value for -march and
14431         -mtune options.
14432
14433 2008-06-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
14434
14435         * config/mips/mips.h (ISA_HAS_CONDMOVE): Slice ISA_HAS_FP_CONDMOVE
14436         from it.
14437         (ISA_HAS_FP_CONDMOVE): New macro.
14438         (ISA_HAS_FP_MADD4_MSUB4, ISA_HAS_FP_MADD3_MSUB3): New macros.
14439         (ISA_HAS_NMADD_NMSUB): Rename to ISA_HAS_NMADD4_NMSUB4.
14440         (ISA_HAS_NMADD3_NMSUB3): New macro.
14441         * config/mips/mips.c (mips_rtx_costs): Update.
14442         * config/mips/mips.md (MOVECC): Don't use FP conditional moves when
14443         compiling for ST Loongson 2E/2F.
14444         (madd<mode>): Rename to madd4<mode>.  Update.
14445         (madd3<mode>): New pattern.
14446         (msub<mode>): Rename to msub4<mode>.  Update.
14447         (msub3<mode>): New pattern.
14448         (nmadd<mode>): Rename to nmadd4<mode>.  Update.
14449         (nmadd3<mode>): New pattern.
14450         (nmadd<mode>_fastmath): Rename to nmadd4<mode>_fastmath.  Update.
14451         (nmadd3<mode>_fastmath): New pattern.
14452         (nmsub<mode>): Rename to nmsub4<mode>.  Update.
14453         (nmsub3<mode>): New pattern.
14454         (nmsub<mode>_fastmath): Rename to nmsub4<mode>_fastmath.  Update.
14455         (nmsub3<mode>_fastmath): New pattern.
14456         (mov<SCALARF:mode>_on_<MOVECC:mode>, mov<mode>cc): Update.
14457
14458 2008-06-18  Steven Bosscher  <steven@gcc.gnu.org>
14459
14460         * df.h (struct df_ref): Replace 'insn' field with 'insn_info' field.
14461         (DF_REF_INSN_INFO): New.
14462         (DF_REF_INSN, DF_REF_INSN_UID): Rewrite macros using DF_REF_INSN_INFO.
14463         (DF_REF_IS_ARTIFICIAL): Artificial refs are now identified as refs
14464         with a NULL DF_REF_INSN_INFO.
14465         (DF_INSN_INFO_GET, DF_INSN_INFO_SET): Renamed from DF_INSN_GET and
14466         DF_INSN_SET.
14467         (DF_INSN_INFO_LUID, DF_INSN_INFO_DEFS, DF_INSN_INFO_USES,
14468         DF_INSN_INFO_EQ_USES): New.
14469         (DF_INSN_LUID, DF_INSN_DEFS, DF_INSN_USES, DF_INSN_EQ_USES,
14470         DF_INSN_UID_LUID, DF_INSN_UID_DEFS, DF_INSN_UID_USES,
14471         DF_INSN_UID_EQ_USES): Rewrite using DF_INSN_INFO_* macros.
14472         * df-core.c: Update comment for above changes.
14473         (df_insn_debug_regno): Use DF_INSN_INFO_GET instead of INSN_UID and
14474         DF_INSN_UID_* macros.
14475         (df_ref_debug): Check for NULL DF_REF_INSN_INFO.
14476         * df-scan.c (df_ref_record): Take a df_insn_info instead of an
14477         insn rtx.  Update all callers.
14478         (df_def_record_1, df_defs_record, df_uses_record, df_get_call_refs,
14479         df_ref_create_structure, df_insn_refs_collect): Likewise.
14480         (df_ref_equal_p): Compare DF_REF_INSN_INFO pointers for the refs.
14481         * df-problems.c (df_chain_dump): Test for non-NULL DF_REF_INSN_INFO.
14482         (df_live_bb_local_compute): Retrieve DF_INSN_INFO, use DF_INSN_INFO_*
14483         macros to access the insn refs.
14484         (df_chain_top_dump, df_chain_bottom_dump, df_byte_lr_alloc): Likewise.
14485         * fwprop.c (use_killed_between): Use DF_REF_INSN accessor macro.
14486         (all_uses_available): Retrieve DF_INSN_INFO for def_insn, and use it
14487         for accessing the refs.
14488         (try_fwprop_subst): Likewise.
14489         * ddg.c (add_cross_iteration_register_deps): Use DF_REF_INSN macro.
14490         * web.c (union_defs): Retrieve DF_INSN_INFO for def_insn, and use it
14491         for accessing the refs.
14492         * loop-invariant.c (invariant_for_use): Use DF_REF_BB macro.
14493         (check_dependencies): Use DF_INSN_INFO_GET, use DF_INSN_INFO_* macros
14494         to look at the insn refs.
14495         (record_uses): Likewise.
14496         * dce.c (deletable_insn_p): Don't tolerate artificial DEFs in this
14497         function anymore.
14498         (mark_artificial_uses): Don't mark_insn for artificial refs.
14499         (mark_reg_rependencies): Likewise.
14500
14501         * doc/rtl.texi: Remove documentation of ADDRESSOF.
14502
14503 2008-06-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
14504
14505         * configure: Regenerate.
14506
14507 2008-06-17  Eric B. Weddington  <eric.weddington@atmel.com>
14508
14509         * config/avr/avr.c (avr_mcu_t): Remove atmega32hvb.
14510         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
14511         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
14512
14513 2008-06-17  Eric B. Weddington  <eric.weddington@atmel.com>
14514
14515         * config/avr/avr.c (avr_mcu_t): Add attiny167.
14516         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
14517         * gcc/config/avr/t-avr (MULTILIB_MATCHES): Likewise.
14518
14519 2008-06-17  Eric B. Weddington  <eric.weddington@atmel.com>
14520
14521         * config/avr/avr.c (avr_mcu_t): Add atmega32u4.
14522         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
14523         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
14524
14525 2008-06-17  Bernhard Fischer  <aldot@gcc.gnu.org>
14526
14527         * tree-ssa-sccvn.c: Fix format of comments.
14528
14529 2008-06-17  Bernhard Fischer  <aldot@gcc.gnu.org>
14530
14531         * cgraph.c: Remove unneeded forward declarations of eq_node()
14532         and hash_node().
14533
14534 2008-06-17  Steven Bosscher  <steven@gcc.gnu.org>
14535
14536         * see.c (see_analyse_one_def): Do not look for REG_LIBCALL and
14537         REG_RETVAL notes.
14538         (see_update_relevancy): Likewise.
14539         * fwprop.c (try_fwprop_subst): Likewise.
14540         * rtlanal.c (noop_move_p): Likewise.
14541         * builtins.c (expand_buitlin_mathfn): Don't try to add REG_EQUAL
14542         notes to non-existing libcall blocks.
14543         * cse.c (cse_insn): Change prototype.  Don't update libcall notes.
14544         Remove orig_set.
14545         (cse_extended_basic_block): Don't track libcall and no-conflict notes.
14546         (dead_libcall_p): Remove.
14547         (delete_trivially_dead_insns): Don't use it.
14548         * web.c (union_defs): Remove comment about keeping nops.
14549         * gcse.c (hash_scan_insn): Don't take libcall pointers.
14550         (compute_hash_table_work): Don't track libcall notes.
14551         (do_local_cprop): Don't take libcall pointers.  Don't update
14552         libcall notes.
14553         (adjust_libcall_notes): Deleted.
14554         (local_cprop_pass): Remove stack for nested libcalls (which shouldn't
14555         ever have existed in the first place).
14556         (replace_store_insn): Don't try to remove libcall notes.
14557         * lower-subreg.c (move_libcall_note, move_retval_note): Deleted.
14558         (resolve_reg_notes): Don't call them.
14559         (resolve_simple_move): Likewise.
14560         (decompose_multiword_subregs): Remove block handling REG_RETVAL notes.
14561         Don't remove REG_RETVAL notes.
14562         * emit-rtl.c (try_split): Don't update libcall notes.
14563         (emit_copy_of_insn_after): Dito.
14564         * cselib.c (cselib_current_insn_in_libcall): Remove.
14565         (cselib_process_insn): Don't set/clear it.
14566         (new_elt_loc_list): Don't record it.
14567         (cselib_init): Don't initialize it.
14568         * cselib.c (struct elt_loc_list): Remove in_libcall field.
14569         * loop-invariant.c (find_invariant_insn): Don't look for libcall
14570         notes.
14571         * sched-deps.c (sched_analyze_insn): Don't group libcall blocks.
14572         (sched_analyze): Don't set up deps->libcall_block_tail_insn.
14573         (init_deps): Don't initialize it.
14574         * sched-int.h (struct deps): Rremove libcall_block_tail_insn field.
14575         * combine.c (delete_noop_moves): Don't update libcall notes.
14576         (can_combine_p): Remove now pointless #if 0 block.
14577         (try_combine): Remove another obsolete #if 0 block.
14578         (distribute_notes): Don't distribute libcall notes.
14579         * reg-notes.def (REG_LIBCALL, REG_RETVAL): Remove.
14580         * dce.c (libcall_dead_p): Remove.
14581         (delete_unmarked_insns): Don't handle libcall blocks.
14582         (preserve_libcall_for_dce): Remove.
14583         (prescan_insns_for_dce): Don't special-case libcall block insns.
14584         * reload1 (reload): Don't handle libcall notes.
14585         * doc/rtl.texi (REG_LIBCALL, REG_RETVAL, REG_LIBCALL_ID): Remove
14586         documentation.
14587
14588 2008-06-16  Eric B. Weddington  <eric.weddington@atmel.com>
14589
14590         * config/avr/avr.c (avr_mcu_t): Add atmega32c1.
14591         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
14592         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
14593
14594 2008-06-16  Eric B. Weddington  <eric.weddington@atmel.com>
14595
14596         * config/avr/avr.c (avr_mcu_t): Add atmega32m1.
14597         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
14598         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
14599
14600 2008-06-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
14601
14602         * Makefile.in (FLAGS_TO_PASS): Add $(datarootdir).
14603
14604 2008-06-16  Ira Rosen  <irar@il.ibm.com>
14605
14606         PR tree-optimization/36493
14607         * tree-vect-transform.c (vect_create_data_ref_ptr): Remove TYPE from
14608         the arguments list. Use VECTYPE to create vector pointer.
14609         (vectorizable_store): Fail if accesses through a pointer to vectype
14610         do not alias the original memory reference operands.
14611         Call vect_create_data_ref_ptr without the removed argument.
14612         (vectorizable_load): Likewise.
14613         (vect_setup_realignment): Call vect_create_data_ref_ptr without the
14614         removed argument.
14615
14616 2008-06-015  Andy Hutchinson  <hutchinsonandy@aim.com>
14617
14618         PR target/36336
14619         * config/avr/avr.h (LEGITIMIZE_RELOAD_ADDRESS): Add check for
14620         reg_equiv_constant.
14621
14622 2008-06-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
14623
14624         * config/mips/loongson2ef.md: New file.
14625         * config/mips/mips.md (UNSPEC_LOONGSON_ALU1_TURN_ENABLED_INSN)
14626         (UNSPEC_LOONGSON_ALU2_TURN_ENABLED_INSN)
14627         (UNSPEC_LOONGSON_FALU1_TURN_ENABLED_INSN)
14628         (UNSPEC_LOONGSON_FALU2_TURN_ENABLED_INSN): New constants.
14629         (define_attr "cpu"): Rename loongson2e and loongson2f to loongson_2e
14630         and loongson_2f.
14631         (loongson2ef.md): New include.
14632         * config/mips/loongson.md (vec_pack_ssat_<mode>, vec_pack_usat_<mode>)
14633         (add<mode>3, paddd, ssadd<mode>3, usadd<mode>3)
14634         (loongson_and_not_<mode>, loongson_average_<mode>, loongson_eq_<mode>)
14635         (loongson_gt_<mode>, loongson_extract_halfword)
14636         (loongson_insert_halfword_0, loongson_insert_halfword_2)
14637         (loongson_insert_halfword_3, loongson_mult_add, smax<mode>3)
14638         (umax<mode>3, smin<mode>3, umin<mode>3, loongson_move_byte_mask)
14639         (umul<mode>3_highpart, smul<mode>3_highpart, loongson_smul_lowpart)
14640         (loongson_umul_word, loongson_pasubub, reduc_uplus_<mode>)
14641         (loongson_psadbh, loongson_pshufh, loongson_psll<mode>)
14642         (loongson_psra<mode>, loongson_psrl<mode>, sub<mode>3, psubd)
14643         (sssub<mode>3, ussub<mode>3, vec_interleave_high<mode>)
14644         (vec_interleave_low<mode>): Define type attribute.
14645         * config/mips/mips.c (mips_ls2): New static variable.
14646         (mips_issue_rate): Update to handle tuning for Loongson 2E/2F.
14647         (mips_ls2_init_dfa_post_cycle_insn, mips_init_dfa_post_cycle_insn)
14648         (sched_ls2_dfa_post_advance_cycle, mips_dfa_post_advance_cycle):
14649         Implement target scheduling hooks.
14650         (mips_multipass_dfa_lookahead): Update to handle tuning for
14651         Loongson 2E/2F.
14652         (mips_sched_init): Initialize data for Loongson scheduling.
14653         (mips_ls2_variable_issue): New static function.
14654         (mips_variable_issue): Update to handle tuning for Loongson 2E/2F.
14655         Add sanity check.
14656         (TARGET_SCHED_INIT_DFA_POST_CYCLE_INSN)
14657         (TARGET_SCHED_DFA_POST_ADVANCE_CYCLE): Override target hooks.
14658         * config/mips/mips.h (TUNE_LOONGSON_2EF): New macros.
14659         (ISA_HAS_XFER_DELAY, ISA_HAS_FCMP_DELAY, ISA_HAS_HILO_INTERLOCKS):
14660         Handle ST Loongson 2E/2F cores.
14661         (CPU_UNITS_QUERY): Define macro to enable querying of DFA units.
14662
14663 2008-06-15  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
14664
14665         * omp-low.c (extract_omp_for_data): Fix comment typo.
14666         * c.opt: Fix typo.
14667
14668 2008-06-15  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
14669
14670         * doc/sourcebuild.texi (Config Fragments): Remove obsolete
14671         FIXME note about gcc/config.guess.
14672         * doc/options.texi (Option file format): Remove non-ASCII bytes.
14673         * doc/cpp.texi: Expand TABs, drop indentation outside examples.
14674         * doc/cppopts.texi: Likewise.
14675         * doc/extend.texi: Likewise.
14676         * doc/gcc.texi: Likewise.
14677         * doc/gccint.texi: Likewise.
14678         * doc/gcov.texi: Likewise.
14679         * doc/gty.texi: Likewise.
14680         * doc/hostconfig.texi: Likewise.
14681         * doc/install.texi: Likewise.
14682         * doc/invoke.texi: Likewise.
14683         * doc/loop.texi: Likewise.
14684         * doc/makefile.texi: Likewise.
14685         * doc/md.texi: Likewise.
14686         * doc/passes.texi: Likewise.
14687         * doc/tm.texi: Likewise.
14688         * doc/tree-ssa.texi: Likewise.
14689         * doc/trouble.texi: Likewise.
14690
14691 2008-06-15  Mark Shinwell  <shinwell@codesourcery.com>
14692             Nathan Sidwell  <nathan@codesourcery.com>
14693             Maxim Kuvyrkov  <maxim@codesourcery.com>
14694             Richard Sandiford  <rdsandiford@googlemail.com>
14695
14696         * config/mips/mips-modes.def: Add V8QI, V4HI and V2SI modes.
14697         * config/mips/mips-protos.h (mips_expand_vector_init): New.
14698         * config/mips/mips-ftypes.def: Add function types for Loongson-2E/2F
14699         builtins.
14700         * config/mips/mips.c (mips_split_doubleword_move): Handle new modes.
14701         (mips_hard_regno_mode_ok_p): Allow 64-bit vector modes for Loongson.
14702         (mips_vector_mode_supported_p): Add V2SImode, V4HImode and
14703         V8QImode cases.
14704         (LOONGSON_BUILTIN, LOONGSON_BUILTIN_ALIAS): New.
14705         (CODE_FOR_loongson_packsswh, CODE_FOR_loongson_packsshb,
14706         (CODE_FOR_loongson_packushb, CODE_FOR_loongson_paddw,
14707         (CODE_FOR_loongson_paddh, CODE_FOR_loongson_paddb,
14708         (CODE_FOR_loongson_paddsh, CODE_FOR_loongson_paddsb)
14709         (CODE_FOR_loongson_paddush, CODE_FOR_loongson_paddusb)
14710         (CODE_FOR_loongson_pmaxsh, CODE_FOR_loongson_pmaxub)
14711         (CODE_FOR_loongson_pminsh, CODE_FOR_loongson_pminub)
14712         (CODE_FOR_loongson_pmulhuh, CODE_FOR_loongson_pmulhh)
14713         (CODE_FOR_loongson_biadd, CODE_FOR_loongson_psubw)
14714         (CODE_FOR_loongson_psubh, CODE_FOR_loongson_psubb)
14715         (CODE_FOR_loongson_psubsh, CODE_FOR_loongson_psubsb)
14716         (CODE_FOR_loongson_psubush, CODE_FOR_loongson_psubusb)
14717         (CODE_FOR_loongson_punpckhbh, CODE_FOR_loongson_punpckhhw)
14718         (CODE_FOR_loongson_punpckhwd, CODE_FOR_loongson_punpcklbh)
14719         (CODE_FOR_loongson_punpcklhw, CODE_FOR_loongson_punpcklwd): New.
14720         (mips_builtins): Add Loongson builtins.
14721         (mips_loongson_2ef_bdesc): New.
14722         (mips_bdesc_arrays): Add mips_loongson_2ef_bdesc.
14723         (mips_builtin_vector_type): Handle unsigned versions of vector modes.
14724         (MIPS_ATYPE_UQI, MIPS_ATYPE_UDI, MIPS_ATYPE_V2SI, MIPS_ATYPE_UV2SI)
14725         (MIPS_ATYPE_V4HI, MIPS_ATYPE_UV4HI, MIPS_ATYPE_V8QI, MIPS_ATYPE_UV8QI):
14726         New.
14727         (mips_expand_vector_init): New.
14728         * config/mips/mips.h (HAVE_LOONGSON_VECTOR_MODES): New.
14729         (TARGET_CPU_CPP_BUILTINS): Define __mips_loongson_vector_rev
14730         if appropriate.
14731         * config/mips/mips.md: Add unspec numbers for Loongson
14732         builtins.  Include loongson.md.
14733         (MOVE64): Include Loongson vector modes.
14734         (SPLITF): Include Loongson vector modes.
14735         (HALFMODE): Handle Loongson vector modes.
14736         * config/mips/loongson.md: New.
14737         * config/mips/loongson.h: New.
14738         * config.gcc: Add loongson.h header for mips*-*-* targets.
14739         * doc/extend.texi (MIPS Loongson Built-in Functions): New.
14740
14741 2008-06-14  Joseph Myers  <joseph@codesourcery.com>
14742
14743         * config.gcc (arc-*-elf*, avr-*-*, fr30-*-elf, frv-*-elf,
14744         h8300-*-elf*, h8300-*-*, i[34567]86-*-elf*, x86_64-*-elf*,
14745         i[34567]86-*-aout*, i[34567]86-*-coff*, ia64*-*-elf*,
14746         iq2000*-*-elf*, m32r-*-elf*, m32rle-*-elf*, m32r-*-linux*,
14747         m32rle-*-linux*, m68hc11-*-*|m6811-*-*, m68hc12-*-*|m6812-*-*,
14748         m68k-*-coff*, mcore-*-elf, mcore-*-pe*, mipsisa64sr71k-*-elf*,
14749         mipsisa64sb1-*-elf* | mipsisa64sb1el-*-elf*, mips-*-elf* |
14750         mipsel-*-elf*, mips64-*-elf* | mips64el-*-elf*, mips64vr-*-elf* |
14751         mips64vrel-*-elf*, mips64orion-*-elf* | mips64orionel-*-elf*,
14752         mipstx39-*-elf* | mipstx39el-*-elf*, mn10300-*-*, pdp11-*-,
14753         powerpc-*-elf*, powerpcle-*-elf*, sh-*-elf* | sh[12346l]*-*-elf* |
14754         sh-*-symbianelf* | sh[12346l]*-*-symbianelf* | sh-*-linux* |
14755         sh[2346lbe]*-*-linux* | sh-*-netbsdelf* | shl*-*-netbsdelf* |
14756         sh5-*-netbsd* | sh5l*-*-netbsd* | sh64-*-netbsd* |
14757         sh64l*-*-netbsd*, sh-*-*, sparc-*-elf*, sparc64-*-elf*,
14758         v850e1-*-*, v850e-*-*, v850-*-*, xstormy16-*-elf, m32c-*-elf*):
14759         Remove use_fixproto=yes.
14760         (ia64*-*-hpux*): Remove comment about using fixproto.
14761         (m68k-*-uclinuxoldabi*, m68k-*-uclinux*): Remove use_fixproto=no.
14762
14763 2008-06-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
14764
14765         * configure.ac: Update gthr-default.h lazily, to avoid unneeded
14766         library rebuilds.
14767         * configure: Regenerate.
14768
14769 2008-06-13  Eric Botcazou  <ebotcazou@adacore.com>
14770
14771         PR middle-end/36520
14772         * builtins.c (get_memory_rtx): Test for the presence of DECL_SIZE_UNIT
14773         before evaluating it.
14774
14775 2008-06-13  Jakub Jelinek  <jakub@redhat.com>
14776
14777         PR c/36507
14778         * c-decl.c (merge_decls): Don't clear DECL_EXTERNAL for
14779         nested inline functions.
14780         (start_decl, start_function): Don't invert DECL_EXTERNAL
14781         for nested inline functions.
14782
14783 2008-06-13  Richard Sandiford  <rdsandiford@googlemail.com>
14784
14785         * config/mips/mips.md: Remove TARGET_DEBUG_D_MODE conditions from
14786         splits that must be made for correctness.
14787
14788 2008-06-13  Richard Sandiford  <rdsandiford@googlemail.com>
14789
14790         * config/mips/mips.c (BUILTIN_AVAIL_NON_MIPS16): New macro.
14791         (AVAIL_NON_MIPS16): Likewise.
14792         (mips_builtin_description): Replace target_flags with a predicate.
14793         (paired_single, sb1_paired_single, mips3d, dsp, dspr2, dsp_32)
14794         (dspr2_32): New availability predicates.
14795         (MIPS_BUILTIN): New macro.
14796         (DIRECT_BUILTIN, CMP_SCALAR_BUILTINS, CMP_PS_BUILTINS)
14797         (CMP_4S_BUILTINS, MOVTF_BUILTINS, CMP_BUILTINS)
14798         (DIRECT_NO_TARGET_BUILTIN, BPOSGE_BUILTIN): Use it.
14799         Replace the TARGET_FLAGS parameters with AVAIL parameters.
14800         (mips_ps_bdesc, mips_sb1_bdesc, mips_dsp_bdesc)
14801         (mips_dsp_32only_bdesc): Merge into...
14802         (mips_builtins): ...this new array.
14803         (mips_bdesc_map, mips_bdesc_arrays): Delete.
14804         (mips_init_builtins): Update after above changes.
14805         (mips_expand_builtin_1): Merge into...
14806         (mips_expand_builtin): ...here and update after above changes.
14807
14808 2008-06-12  Paul Brook  <paul@codesourcery.com>
14809
14810         * longlong.h (__arm__): Define count_leading_zeros.
14811         * config/arm/lib1funcs.asm (xxh, xxl, yyh, yyl): Define.
14812         (clzsi2, clzdi2): New functions.
14813         * config/arm/bpabi-v6m.S (xxh, xxl, yyh, yyl): Remove.
14814         * config/arm/bpabi.S (xxh, xxl, yyh, yyl): Remove.
14815         * config/arm/t-strongarm-elf (LIB1ASMFUNCS): Ditto.
14816         * config/arm/t-vxworks (LIB1ASMFUNCS): Ditto.
14817         * config/arm/t-pe (LIB1ASMFUNCS): Ditto.
14818         * config/arm/t-arm-elf (LIB1ASMFUNCS): Ditto.
14819         * config/arm/t-arm-coff (LIB1ASMFUNCS): Ditto.
14820         * config/arm/t-linux (LIB1ASMFUNCS): Ditto.
14821         * config/arm/t-symbian (LIB1ASMFUNCS): Ditto.
14822         * config/arm/t-wince-pe (LIB1ASMFUNCS): Ditto.
14823
14824 2008-06-12  Kazu Hirata  <kazu@codesourcery.com>
14825
14826         * config/m68k/m68k.c (m68k_tune_flags): New.
14827         (override_options): Compute m68k_tune_flags.
14828         (MULL_COST, MULW_COST): Update for various variants of CFV2.
14829         * config/m68k/m68k.h (TUNE_MAC, TUNE_EMAC): New.
14830
14831 2008-06-12  Jakub Jelinek  <jakub@redhat.com>
14832
14833         PR middle-end/36506
14834         * omp-low.c (expand_omp_sections): Initialize l2 to avoid bogus warning.
14835
14836 2008-06-12  Eric Botcazou  <ebotcazou@adacore.com>
14837
14838         * tree-inline.c (copy_body_r): Copy TREE_SIDE_EFFECTS along with
14839         TREE_THIS_VOLATILE on INDIRECT_REF nodes.
14840
14841 2008-06-12  Eric Botcazou  <ebotcazou@adacore.com>
14842
14843         * expr.c (store_field): Do a block copy from BLKmode to BLKmode-like.
14844         (get_inner_reference): Use BLKmode for byte-aligned BLKmode bitfields.
14845
14846 2008-06-12  Jakub Jelinek  <jakub@redhat.com>
14847
14848         PR middle-end/36506
14849         * omp-low.c (expand_omp_sections): Handle #pragma omp sections with
14850         reductions.
14851
14852 2008-06-12  Richard Guenther  <rguenther@suse.de>
14853
14854         PR tree-optimization/36345
14855         * tree-flow.h (struct ptr_info_def): Align escape_mask,
14856         add memory_tag_needed flag.
14857         (may_alias_p): Declare.
14858         * tree-ssa-alias.c (may_alias_p): Export.
14859         (set_initial_properties): Use memory_tag_needed flag.
14860         (update_reference_counts): Likewise.
14861         (reset_alias_info): Reset memory_tag_needed flag.
14862         (create_name_tags): Check memory_tag_needed flag.
14863         (dump_points_to_info_for): Dump it.
14864         * tree-ssa-structalias.c (struct variable_info): Remove
14865         directly_dereferenced flag.
14866         (new_var_info): Do not initialize it.
14867         (process_constraint_1): Do not set it.
14868         (update_alias_info): Set is_dereferenced flag.
14869         (set_uids_in_ptset): Use may_alias_p.
14870         (set_used_smts): Check memory_tag_needed flag.
14871         (find_what_p_points_to): Likewise.  Pass is_dereferenced flag.
14872         * tree-ssa-alias.c (verify_flow_sensitive_alias_info): Check
14873         memory_tag_needed flag.
14874         * tree-ssa-alias-warnings.c (dsa_named_for): Try to recover
14875         from broken design.
14876
14877 2008-06-12  Kai Tietz  <kai.tietz@onevision.com>
14878
14879         * config/i386/i386.c (ix86_compute_frame_layout): Disable
14880         red zone for w64 abi.
14881         (ix86_expand_prologue): Likewise.
14882         (ix86_force_to_memory): Likewise.
14883         (ix86_free_from_memory): Likewise.
14884
14885 2008-06-11  Edmar Wienskoski  <edmar@freescale.com>
14886
14887         PR target/36425
14888         * config/rs6000/rs6000.c (rs6000_override_options): Set
14889         rs6000_isel conditionally to the absence of comand line override.
14890         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
14891         Remove duplicate rs6000_isel setting.
14892         * config/rs6000/eabispe.h: Ditto.
14893
14894 2008-06-11  Richard Guenther  <rguenther@suse.de>
14895
14896         * alias.c (get_alias_set): Use the element alias-set for arrays.
14897         (record_component_aliases): For arrays and vectors do nothing.
14898         * c-common.c (strict_aliasing_warning): Handle the cases
14899         of alias set zero explicitly.
14900         * Makefile.in (dfp.o-warn): Add -Wno-error.
14901
14902 2008-06-11  Joseph Myers  <joseph@codesourcery.com>
14903
14904         * config.gcc (all_defaults): Add arch_32 arch_64 cpu_32 cpu_64
14905         tune_32 tune_64.
14906         (i[34567]86-*-* | x86_64-*-*): Add arch_32 arch_64 cpu_32 cpu_64
14907         tune_32 tune_64 to supported_defaults.  Allow values not
14908         supporting 64-bit mode for arch_32, cpu_32 and tune_32 for
14909         x86_64.  Do not override cpu_32 or cpu_64 values from target name.
14910         (i[34567]86-*-linux*, i[34567]86-*-solaris2.1[0-9]*): Only default
14911         with_cpu_64 to generic for 64-bit-supporting configurations, not
14912         with_cpu.  Remove FIXMEs.
14913         * doc/install.texi (--with-cpu-32, --with-cpu-64, --with-arch-32,
14914         --with-arch-64, --with-tune-32, --with-tune-64): Document.
14915         * config/i386/i386.h (OPT_ARCH32, OPT_ARCH64): Define.
14916         (OPTION_DEFAULT_SPECS): Add tune_32, tune_64, cpu_32, cpu_64,
14917         arch_32 and arch_64.
14918
14919 2008-06-11  Eric Botcazou  <ebotcazou@adacore.com>
14920             Olivier Hainque  <hainque@adacore.com>
14921
14922         * builtins.c (get_memory_rtx): Accept byte-addressable bitfields.
14923         Use DECL_SIZE_UNIT to retrieve the size of the field.
14924
14925 2008-06-11  Joseph Myers  <joseph@codesourcery.com>
14926
14927         * config/arm/arm.c (arm_init_neon_builtins): Move initialization
14928         with function calls after declarations.  Lay out
14929         neon_float_type_node before further use.
14930
14931 2008-06-11  Richard Guenther  <rguenther@suse.de>
14932
14933         * tree-flow.h (may_point_to_global_var): Declare.
14934         * tree-ssa-alias.c (may_point_to_global_var): New function.
14935         * tree-ssa-sink.c (is_hidden_global_store): Use it.
14936
14937 2008-06-10  Kazu Hirata  <kazu@codesourcery.com>
14938
14939         * configure.ac: Teach that fido supports .debug_line.
14940         * configure: Regenerate.
14941
14942 2008-06-10  Tom Tromey  <tromey@redhat.com>
14943
14944         * c-lex.c (fe_file_change): Pass SOURCE_LINE to start_source_file
14945         debug hook.
14946
14947 2008-06-10  Joseph Myers  <joseph@codesourcery.com>
14948
14949         * dfp.c (WORDS_BIGENDIAN): Define to 0 if not defined.
14950         (encode_decimal64, decode_decimal64, encode_decimal128,
14951         decode_decimal128): Reverse order of 32-bit parts of value if host
14952         and target endianness differ.
14953
14954 2008-06-10  Vinodha Ramasamy  <vinodha@google.com>
14955
14956         * value_prob.c (tree_divmod_fixed_value_transform): Use gcov_type.
14957         Avoid division by 0.
14958         (tree_mod_pow2_value_transform): Likewise.
14959         (tree_ic_transform): Likewise.
14960         (tree_stringops_transform): Likewise.
14961         (tree_mod_subtract_transform): Likewise.
14962         * tree-inline-c (copy_bb): Corrected int type to gcov_type.
14963         (copy_edges_for_bb): Likewise.
14964         (initialize_cfun): Likewise.
14965
14966 2008-06-10  Uros Bizjak  <ubizjak@gmail.com>
14967
14968         * config/i386/i386.md (*btdi_rex64): Change operand 1 predicate to
14969         nonmemory_operand. Add "N" operand constraint.
14970         (*btsi): Ditto.
14971         (*jcc_btdi_mask_rex64): New instruction and split pattern.
14972         (*jcc_btsi_mask): Ditto.
14973         (*jcc_btsi_mask_1): Ditto.
14974
14975 2008-06-10  Joseph Myers  <joseph@codesourcery.com>
14976
14977         * config/rs6000/rs6000.c (build_opaque_vector_type): Set
14978         TYPE_CANONICAL for copied element type.
14979
14980 2008-06-10  Uros Bizjak  <ubizjak@gmail.com>
14981
14982         PR target/36473
14983         * config/i386/i386.c (ix86_tune_features) [TUNE_USE_BT]:
14984         Add m_CORE2 and m_GENERIC.
14985         * config/i386/predicates.md (bt_comparison_operator): New predicate.
14986         * config/i386/i386.md (*btdi_rex64): New instruction pattern.
14987         (*btsi): Ditto.
14988         (*jcc_btdi_rex64): New instruction and split pattern.
14989         (*jcc_btsi): Ditto.
14990         (*jcc_btsi_1): Ditto.
14991         (*btsq): Fix Intel asm dialect operand order.
14992         (*btrq): Ditto.
14993         (*btcq): Ditto.
14994
14995 2008-06-09  Andy Hutchinson  <hutchinsonandy@aim.com>
14996
14997         PR middle-end/36447
14998         * simplify-rtx.c (simplify_subreg): Add check for shift count
14999         greater than size.
15000
15001 2008-06-09  Richard Sandiford  <rdsandiford@googlemail.com>
15002
15003         * doc/md.texi: Synchronize with later constraints.md change.
15004         * longlong.h (umul_ppmm): Replace the MIPS asm implementation
15005         with a C implementation.
15006         * config/mips/mips.c (mips_legitimize_move): Remove MFHI and
15007         MFLO handling.
15008         (mips_subword): Assume TImode for CONST_INTs if TARGET_64BIT.
15009         (mips_split_doubleword_move): Use special MTHI and MFHI instructions
15010         when moving to and from MD_REGNUM.
15011         (mips_output_move): Don't handle moves from GPRs to HI_REGNUM.
15012         Handle moves from LO_REGNUM to GPRs using MFLO, MACC or DMACC.
15013         Handle byte and halfword moves.
15014         (mips_hard_regno_mode_ok_p): Handle MD_REGS and DSP_ACC_REGS
15015         separately.
15016         * config/mips/constraints.md (h): Turn into NO_REGS.
15017         (l, x): Update documentation.
15018         * config/mips/mips.md (UNSPEC_MFHILO): Delete.
15019         (UNSPEC_MFHI, UNSPEC_MTHI, UNSPEC_SET_HILO): New.
15020         (UNSPEC_TLS_LDM, UNSPEC_TLS_GET_TP): Renumber.
15021         (HILO): New mode iterator.
15022         (MOVE128): Add TI.
15023         (any_div): New code iterator.
15024         (u): Extend code attribute to div and udiv.
15025         (*add<mode>3_mips16, *movdi_64bit_mips16, *movsi_mips16): Use
15026         d_operand in the splitters.  Remove redundant CONST_INT checks.
15027         (mulsi3_mult3, mul<mode>3_internal, mul<mode>3_r4000, *mul_acc_si)
15028         (*macc, *msac, *msac_using_macc, *macc2, *msac2, *mul_sub_si)
15029         (*muls): Remove "=h" clobbers.  Adjust peephole2s and define_splits
15030         accordingly, using normal moves instead of unspecs to move LO into
15031         a GPR.  Use d_operand and lo_operand instead of *_REG_P checks.
15032         (<u>mulsidi3): Handle expansion in C code.
15033         (<u>mulsidi3_32bit_internal): Rename to...
15034         (<u>mulsidi3_32bit): ...this.
15035         (<u>mulsidi3_32bit_r4000): Fix insn separator.
15036         (*<u>mulsidi3_64bit): Rename to...
15037         (<u>mulsidi3_64bit): ...this.  Combine DImode "=h" and "=l" clobbers
15038         into a TImode "=x" clobber.  In the split, use an UNSPEC_SET_HILO
15039         to set LO and HI to the multiplication result.  Use a normal move
15040         for MFLO and an unspec for MFHI.
15041         (*<u>mulsidi3_64bit_parts): Replace with...
15042         (<u>mulsidi3_64bit_hilo): ...this new instruction.
15043         (<su>mulsi3_highpart): Extend to TARGET_FIX_R4000.
15044         (<su>mulsi3_highpart_internal): Turn into a define_insn_and_split
15045         and extend it to TARGET_FIX_R4000.  Store the destination in a GPR
15046         instead of HI.  Split the instruction into a separate multiplication
15047         and MFHI if !TARGET_FIX_R4000.
15048         (<su>muldi3_highpart): Likewise.
15049         (<su>mulsi3_highpart_mulhi_internal): Remove the first alternative
15050         and the "=h" clobber.
15051         (*<su>mulsi3_highpart_neg_mulhi_internal): Likewise.
15052         (<u>mulditi3): New expander.
15053         (<u>mulditi3_internal, <u>mulditi3_r4000): New patterns.
15054         (madsi): Remove "=h" clobber.
15055         (divmod<mode>4, udivmod<mode>4): Turn into define_insn_and_splits.
15056         Force the modulus result to be a GPR and split the instruction into
15057         a division followed by an MFHI after reload.
15058         (<u>divmod<GPR:mode>4_hilo_<HILO:mode>): New instruction.
15059         (*lea_high64): Use d_operand in the define_peephole2.  Likewise
15060         the MIPS16 HIGH define_split.
15061         (*movdi_32bit, *movdi_gp32_fp64, *movdi_32bit_mips16): Change type
15062         of acc<->gpr moves to "multi".
15063         (*movdi_64bit): Replace the single "x" alternative with
15064         alternatives for moving into and out of "a".
15065         (*movhi_internal, *movqi_internal): Likewise.  Use mips_output_move.
15066         (*movsi_internal): Extend the "d<-A" alternative to "d<-a".
15067         (*movdi_64bit_mips16, *movsi_mips16): Add d<-a alternatives.
15068         Use d_operand in the splitters.  Remove redundant CONST_INT checks.
15069         (*movhi_mips16, *movqi_mips16): Likewise.  Use mips_output_move.
15070         (movti): New expander.
15071         (*movti, *movti_mips16): New insns.
15072         (mfhilo_<mode>, *mfhilo_<mode>, *mfhilo_<mode>_macc): Delete.
15073         (mfhi<GPR:mode>_<HILO:mode>): New pattern.
15074         (mthi<GPR:mode>_<HILO:mode>): Likewise.
15075         * config/mips/predicates.md (fpr_operand): Delete.
15076         (d_operand): New predicate.
15077
15078 2008-06-09  Michael Meissner  <michael.meissner@amd.com>
15079
15080         * config.gcc (i[34567]86-*-*): Put test in quotes to prevent
15081         failure on some Bourne shells.
15082         (x86_64-*-*): Ditto.
15083
15084 2008-06-09  Kai Tietz  <kai.tietz@onevision.com>
15085
15086         * config/i386/cygming.h (TARGET_SUBTARGET64_DEFAULT): New.
15087
15088 2008-06-09  Eric Botcazou  <ebotcazou@libertysurf.fr>
15089
15090         * doc/install.texi (*-*-solaris2*): Remove obsolete contents.
15091         (sparc-sun-solaris2*): Likewise.
15092
15093 2008-06-09  Arnaud Charlet  <charlet@adacore.com
15094
15095         * doc/install.texi: Update requirements to build the Ada compiler.
15096
15097 2008-06-08  Steven Bosscher  <stevenb.gcc@gmail.com>
15098
15099         * df-scan.c (struct df_scan_problem_data): Remove the
15100         mw_link_pool alloc pool.
15101         (df_scan_free_internal): Don't free it.
15102         (df_scan_alloc): Don't allocate it.
15103         * df.h (struct df_link): Update comment.
15104
15105 2008-06-08  Nathan Sidwell  <nathan@codesourcery.com>
15106
15107         * except.h: Correct checks for when SJLJ exceptions must be used.
15108
15109 2008-06-08  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
15110
15111         * doc/invoke.texi (Wenum-compare): Mention that it is enabled by
15112         default.
15113
15114 2008-06-08  Joseph Myers  <joseph@codesourcery.com>
15115
15116         PR tree-optimization/36218
15117         * configure.ac: Use LDFLAGS="${LDFLAGS_FOR_BUILD}" when running
15118         configure for the build system.
15119         (BUILD_LDFLAGS): Define.
15120         * configure: Regenerate.
15121         * Makefile.in (BUILD_LDFLAGS): Define to @BUILD_LDFLAGS@.
15122
15123 2008-07-08  Anatoly Sokolov  <aesok@post.ru>
15124
15125         PR target/36424
15126         * config/avr/avr.h (HARD_REGNO_RENAME_OK): Define.
15127         * config/avr/avr.c (avr_hard_regno_rename_ok): New function.
15128         * config/avr/avr-protos.h (avr_hard_regno_rename_ok): New prototype.
15129
15130 2008-06-07  Danny Smith  <dannysmith@users.sourceforge.net>
15131
15132         * config/i386/cygming.h (MAYBE_UWIN_CPP_BUILTINS): Remove.
15133
15134 2008-06-07  Joseph Myers  <joseph@codesourcery.com>
15135
15136         * config.gcc (Obsolete configurations): Remove list of
15137         configurations.
15138         (Unsupported targets list): Add *-*-linux*aout*, *-*-linux*libc1*,
15139         *-*-solaris2.[0-6], *-*-solaris2.[0-6].*, *-*-sysv*.  Remove other
15140         targets matched by those patterns.
15141         (strongarm*-*-*, ep9312*-*-*, xscale-*-*, parisc*-*-*,
15142         m680[012]0-*-*, *-*-linux*libc1*, *-*-linux*aout*,
15143         alpha*-*-unicosmk*, strongarm*-*-freebsd*, ep9312-*-elf,
15144         arm*-*-kaos*, cris-*-aout, parisc*64*-*-linux*, parisc*-*-linux*,
15145         hppa1.1-*-pro*, hppa1.1-*-osf*, hppa1.1-*-bsd*,
15146         i[34567]86-sequent-ptx4*, i[34567]86-sequent-sysv4*,
15147         i[34567]86-*-beoself*, i[34567]86-*-beos*, i[34567]86-*-sco3.2v5*,
15148         i[34567]86-*-sysv5*, i[34567]86-*-sysv4*, i[34567]86-*-uwin*,
15149         i[34567]86-*-kaos*, m68020-*-elf*, m68010-*-netbsdelf*,
15150         mips-wrs-windiss, mt-*-elf, powerpc-*-beos*, powerpc-*-chorusos*,
15151         powerpc-wrs-windiss*, powerpcle-*-sysv*, powerpc-*-kaos*,
15152         powerpcle-*-kaos*, sh*-*-kaos*, sparc-*-sysv4*, strongarm-*-elf*,
15153         strongarm-*-pe, strongarm-*-kaos*, vax-*-bsd*, vax-*-sysv*,
15154         vax-*-ultrix*, xscale-*-elf, xscale-*-coff,
15155         i[34567]86-*-linux*aout*, i[34567]86-*-linux*libc1): Remove.
15156         Make code for Solaris 7 and greater unconditional for Solaris.
15157         (ep9312-*-*, parisc1*, m680[012]0-*-*, parisc*-*-*, mt-*-*):
15158         Remove --with-* handling.
15159         * config/rs6000/sysv4.h (-mwindiss): Remove from all specs.
15160         (LIB_WINDISS_SPEC, CPP_OS_WINDISS_SPEC, STARTFILE_WINDISS_SPEC,
15161         ENDFILE_WINDISS_SPEC, LINK_START_WINDISS_SPEC,
15162         LINK_OS_WINDISS_SPEC): Remove.
15163         * config/rs6000/sysv4.opt (mwindiss): Remove.
15164         * configure.ac (strongarm*-*-*, xscale*-*-*): Remove.
15165         * configure: Regenerate.
15166         * doc/cpp.texi: Don't mention BeOS.
15167         * doc/extend.texi (interrupt): Don't mention MS1.
15168         * doc/install.texi: (i386-@var{any}-sysv, m68k-bull-sysv,
15169         m68k-hp-hpux, m68000-hp-hpux, m68000-att-sysv,
15170         alphaev5-cray-unicosmk*, xscale-*-*, i?86-*-linux*aout,
15171         i?86-*-sco3.2v5*, i?86-*-udk, m68k-hp-hpux, powerpc-*-sysv4,
15172         powerpc-*-sysv4, powerpcle-*-sysv4, *-*-sysv*, vax-dec-ultrix):
15173         Remove.
15174         * doc/invoke.texi (MT Options): Remove.
15175         (-mwindiss): Remove.
15176         (CRIS Options): Remove cris-axis-aout references.
15177         (HPPA Options): Don't mention hppa1.1-*-pro.
15178         * doc/md.texi: (MorphoTech family): Remove.
15179         * libgcc2.c: Don't handle UWIN.
15180         * config/alpha/t-unicosmk: Remove.
15181         * config/alpha/unicosmk.h: Remove.
15182         * config/arm/kaos-arm.h: Remove.
15183         * config/arm/kaos-strongarm.h: Remove.
15184         * config/arm/strongarm-coff.h: Remove.
15185         * config/arm/strongarm-elf.h: Remove.
15186         * config/arm/strongarm-pe.h: Remove.
15187         * config/arm/t-strongarm-pe: Remove.
15188         * config/arm/t-xscale-coff: Remove.
15189         * config/arm/t-xscale-elf: Remove.
15190         * config/arm/xscale-coff.h: Remove.
15191         * config/arm/xscale-elf.h: Remove.
15192         * config/chorus.h: Remove.
15193         * config/cris/aout.h: Remove.
15194         * config/cris/aout.opt: Remove.
15195         * config/cris/t-aout: Remove.
15196         * config/i386/beos-elf.h: Remove.
15197         * config/i386/kaos-i386.h: Remove.
15198         * config/i386/ptx4-i.h: Remove.
15199         * config/i386/sco5.h: Remove.
15200         * config/i386/sco5.opt: Remove.
15201         * config/i386/sysv4-cpp.h: Remove.
15202         * config/i386/sysv5.h: Remove.
15203         * config/i386/t-beos: Remove.
15204         * config/i386/t-sco5: Remove.
15205         * config/i386/t-uwin: Remove.
15206         * config/i386/uwin.asm: Remove.
15207         * config/i386/uwin.h: Remove.
15208         * config/kaos.h: Remove.
15209         * config/mips/windiss.h: Remove.
15210         * config/mt: Remove directory.
15211         * config/pa/pa-osf.h: Remove.
15212         * config/pa/pa-pro-end.h: Remove.
15213         * config/pa/t-pro: Remove.
15214         * config/ptx4.h: Remove.
15215         * config/rs6000/beos.h: Remove.
15216         * config/rs6000/kaos-ppc.h: Remove.
15217         * config/rs6000/t-beos: Remove.
15218         * config/rs6000/windiss.h: Remove.
15219         * config/sh/kaos-sh.h: Remove.
15220         * config/sol2-6.h: Remove.
15221         * config/sparc/sol26-sld.h: Remove.
15222         * config/sparc/sysv4-only.h: Remove.
15223         * config/vax/bsd.h: Remove.
15224         * config/vax/t-memfuncs: Remove.
15225         * config/vax/ultrix.h: Remove.
15226         * config/vax/vaxv.h: Remove.
15227         * config/windiss.h: Remove.
15228
15229 2008-06-06  Uros Bizjak <ubizjak@gmail.com>
15230
15231         PR rtl-optimization/36438
15232         * cse.c (fold_rtx) [ASHIFT, LSHIFTRT, ASHIFTRT]: Break out early
15233         for vector shifts with constant scalar shift operands.
15234
15235 2008-06-06  Sandip Matte  <sandip@rmicorp.com>
15236
15237         * doc/invoke.texi: Document -march=xlr.
15238         * config/mips/xlr.md: New file.
15239         * config/mips/mips.md: Include it.
15240         (cpu): Add "xlr".
15241         * config/mips/mips.h (PROCESSOR_XLR): New processor_type.
15242         * config/mips/mips.c (mips_cpu_info_table): Add an XLR entry.
15243         (mips_rtx_cost_data): Likewise.
15244
15245 2008-06-06  Nathan Froyd  <froydnj@codesourcery.com>
15246
15247         * config/rs6000/rs6000.c (rs6000_mode_dependent_address): Remove
15248         PRE_INC and PRE_DEC cases.
15249
15250 2008-06-06  Jakub Jelinek  <jakub@redhat.com>
15251
15252         PR rtl-optimization/36419
15253         * except.c (expand_resx_expr): Call do_pending_stack_adjust () before
15254         the emitting jump insn.
15255
15256         PR target/36362
15257         * gimplify.c (gimplify_expr) <case TRUTH_NOT_EXPR>: If *expr_p type
15258         is not bool, boolify the whole *expr_p and convert to the desired type.
15259
15260 2008-06-06  Jakub Jelinek  <jakub@redhat.com>
15261
15262         * c-cppbuiltin.c (c_cpp_builtins): Change _OPENMP value to 200805.
15263         * langhooks.h (struct lang_hooks_for_decls): Add omp_finish_clause.
15264         Add omp_private_outer_ref hook, add another argument to
15265         omp_clause_default_ctor hook.
15266         * langhooks-def.h (LANG_HOOKS_OMP_FINISH_CLAUSE): Define.
15267         (LANG_HOOKS_OMP_PRIVATE_OUTER_REF): Define.
15268         (LANG_HOOKS_OMP_CLAUSE_DEFAULT_CTOR): Change to
15269         hook_tree_tree_tree_tree_null.
15270         (LANG_HOOKS_DECLS): Add LANG_HOOKS_OMP_FINISH_CLAUSE and
15271         LANG_HOOKS_OMP_PRIVATE_OUTER_REF.
15272         * hooks.c (hook_tree_tree_tree_tree_null): New function.
15273         * hooks.h (hook_tree_tree_tree_tree_null): New prototype.
15274         * tree.def (OMP_TASK): New tree code.
15275         * tree.h (OMP_TASK_COPYFN, OMP_TASK_ARG_SIZE, OMP_TASK_ARG_ALIGN,
15276         OMP_CLAUSE_PRIVATE_OUTER_REF, OMP_CLAUSE_LASTPRIVATE_STMT,
15277         OMP_CLAUSE_COLLAPSE_ITERVAR, OMP_CLAUSE_COLLAPSE_COUNT,
15278         OMP_TASKREG_CHECK, OMP_TASKREG_BODY, OMP_TASKREG_CLAUSES,
15279         OMP_TASKREG_FN, OMP_TASKREG_DATA_ARG, OMP_TASK_BODY,
15280         OMP_TASK_CLAUSES, OMP_TASK_FN, OMP_TASK_DATA_ARG,
15281         OMP_CLAUSE_COLLAPSE_EXPR): Define.
15282         (enum omp_clause_default_kind): Add OMP_CLAUSE_DEFAULT_FIRSTPRIVATE.
15283         (OMP_DIRECTIVE_P): Add OMP_TASK.
15284         (OMP_CLAUSE_COLLAPSE, OMP_CLAUSE_UNTIED): New clause codes.
15285         (OMP_CLAUSE_SCHEDULE_AUTO): New schedule kind.
15286         * tree.c (omp_clause_code_name): Add OMP_CLAUSE_COLLAPSE
15287         and OMP_CLAUSE_UNTIED entries.
15288         (omp_clause_num_ops): Likewise.  Increase OMP_CLAUSE_LASTPRIVATE
15289         num_ops to 2.
15290         (walk_tree_1): Handle OMP_CLAUSE_COLLAPSE and OMP_CLAUSE_UNTIED.
15291         Walk OMP_CLAUSE_LASTPRIVATE_STMT.
15292         * tree-pretty-print.c (dump_omp_clause): Handle
15293         OMP_CLAUSE_SCHEDULE_AUTO, OMP_CLAUSE_UNTIED, OMP_CLAUSE_COLLAPSE,
15294         OMP_CLAUSE_DEFAULT_FIRSTPRIVATE.
15295         (dump_generic_node): Handle OMP_TASK and collapsed OMP_FOR loops.
15296         * c-omp.c (c_finish_omp_for): Allow pointer iterators.  Remove
15297         warning about unsigned iterators.  Change decl/init/cond/incr
15298         arguments to TREE_VECs, check arguments for all collapsed loops.
15299         (c_finish_omp_taskwait): New function.
15300         (c_split_parallel_clauses): Put OMP_CLAUSE_COLLAPSE clause to
15301         ws_clauses.
15302         * c-parser.c (c_parser_omp_for_loop): Parse collapsed loops.  Call
15303         default_function_array_conversion on init.  Add par_clauses argument.
15304         If decl is present in parallel's lastprivate clause, change it to
15305         shared and add lastprivate clause for decl to OMP_FOR_CLAUSES.
15306         Add clauses argument, on success set OMP_FOR_CLAUSES to it.  Look up
15307         collapse count in clauses.
15308         (c_parser_omp_for, c_parser_omp_parallel): Adjust
15309         c_parser_omp_for_loop callers.
15310         (OMP_FOR_CLAUSE_MASK): Add 1 << PRAGMA_OMP_CLAUSE_COLLAPSE.
15311         (c_parser_pragma): Handle PRAGMA_OMP_TASKWAIT.
15312         (c_parser_omp_clause_name): Handle collapse and untied clauses.
15313         (c_parser_omp_clause_collapse, c_parser_omp_clause_untied): New
15314         functions.
15315         (c_parser_omp_clause_schedule): Handle schedule(auto).
15316         Include correct location in the error message.
15317         (c_parser_omp_all_clauses): Handle PRAGMA_OMP_CLAUSE_COLLAPSE
15318         and PRAGMA_OMP_CLAUSE_UNTIED.
15319         (OMP_TASK_CLAUSE_MASK): Define.
15320         (c_parser_omp_task, c_parser_omp_taskwait): New functions.
15321         (c_parser_omp_construct): Handle PRAGMA_OMP_TASK.
15322         * tree-nested.c (convert_nonlocal_omp_clauses,
15323         convert_local_omp_clauses): Handle OMP_CLAUSE_LASTPRIVATE_STMT,
15324         OMP_CLAUSE_REDUCTION_INIT, OMP_CLAUSE_REDUCTION_MERGE,
15325         OMP_CLAUSE_COLLAPSE and OMP_CLAUSE_UNTIED.
15326         Don't handle TREE_STATIC or DECL_EXTERNAL VAR_DECLs in
15327         OMP_CLAUSE_DECL.
15328         (conver_nonlocal_reference, convert_local_reference,
15329         convert_call_expr): Handle OMP_TASK the same as OMP_PARALLEL.  Use
15330         OMP_TASKREG_* macros rather than OMP_PARALLEL_*.
15331         (walk_omp_for): Adjust for OMP_FOR_{INIT,COND,INCR} changes.
15332         * tree-gimple.c (is_gimple_stmt): Handle OMP_TASK.
15333         * c-tree.h (c_begin_omp_task, c_finish_omp_task): New prototypes.
15334         * c-pragma.h (PRAGMA_OMP_TASK, PRAGMA_OMP_TASKWAIT): New.
15335         (PRAGMA_OMP_CLAUSE_COLLAPSE, PRAGMA_OMP_CLAUSE_UNTIED): New.
15336         * c-typeck.c (c_begin_omp_task, c_finish_omp_task): New functions.
15337         (c_finish_omp_clauses): Handle OMP_CLAUSE_COLLAPSE and
15338         OMP_CLAUSE_UNTIED.
15339         * c-pragma.c (init_pragma): Init omp task and omp taskwait pragmas.
15340         * c-common.h (c_finish_omp_taskwait): New prototype.
15341         * gimple-low.c (lower_stmt): Handle OMP_TASK.
15342         * tree-parloops.c (create_parallel_loop): Create 1 entry
15343         vectors for OMP_FOR_{INIT,COND,INCR}.
15344         * tree-cfg.c (remove_useless_stmts_1): Handle OMP_* containers.
15345         (make_edges): Handle OMP_TASK.
15346         * tree-ssa-operands.c (get_expr_operands): Handle collapsed OMP_FOR
15347         loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.
15348         * tree-inline.c (estimate_num_insns_1): Handle OMP_TASK.
15349         * builtin-types.def (BT_PTR_ULONGLONG, BT_PTR_FN_VOID_PTR_PTR,
15350         BT_FN_BOOL_ULONGLONGPTR_ULONGLONGPTR,
15351         BT_FN_BOOL_BOOL_ULL_ULL_ULL_ULLPTR_ULLPTR,
15352         BT_FN_BOOL_BOOL_ULL_ULL_ULL_ULL_ULLPTR_ULLPTR,
15353         BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT): New.
15354         * omp-builtins.def (BUILT_IN_GOMP_TASK, BUILT_IN_GOMP_TASKWAIT,
15355         BUILT_IN_GOMP_LOOP_ULL_STATIC_START,
15356         BUILT_IN_GOMP_LOOP_ULL_DYNAMIC_START,
15357         BUILT_IN_GOMP_LOOP_ULL_GUIDED_START,
15358         BUILT_IN_GOMP_LOOP_ULL_RUNTIME_START,
15359         BUILT_IN_GOMP_LOOP_ULL_ORDERED_STATIC_START,
15360         BUILT_IN_GOMP_LOOP_ULL_ORDERED_DYNAMIC_START,
15361         BUILT_IN_GOMP_LOOP_ULL_ORDERED_GUIDED_START,
15362         BUILT_IN_GOMP_LOOP_ULL_ORDERED_RUNTIME_START,
15363         BUILT_IN_GOMP_LOOP_ULL_STATIC_NEXT,
15364         BUILT_IN_GOMP_LOOP_ULL_DYNAMIC_NEXT,
15365         BUILT_IN_GOMP_LOOP_ULL_GUIDED_NEXT,
15366         BUILT_IN_GOMP_LOOP_ULL_RUNTIME_NEXT,
15367         BUILT_IN_GOMP_LOOP_ULL_ORDERED_STATIC_NEXT,
15368         BUILT_IN_GOMP_LOOP_ULL_ORDERED_DYNAMIC_NEXT,
15369         BUILT_IN_GOMP_LOOP_ULL_ORDERED_GUIDED_NEXT,
15370         BUILT_IN_GOMP_LOOP_ULL_ORDERED_RUNTIME_NEXT): New builtins.
15371         * gimplify.c (gimplify_omp_for): Allow pointer type for decl,
15372         handle POINTER_PLUS_EXPR.  If loop counter has been replaced and
15373         original iterator is present in lastprivate clause or if
15374         collapse > 1, set OMP_CLAUSE_LASTPRIVATE_STMT.  Handle collapsed
15375         OMP_FOR loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.
15376         (gimplify_expr): Handle OMP_SECTIONS_SWITCH and OMP_TASK.
15377         (enum gimplify_omp_var_data): Add GOVD_PRIVATE_OUTER_REF.
15378         (omp_notice_variable): Set GOVD_PRIVATE_OUTER_REF if needed,
15379         if it is set, lookup var in outer contexts too.  Handle
15380         OMP_CLAUSE_DEFAULT_FIRSTPRIVATE.  Handle vars that are supposed
15381         to be implicitly determined firstprivate for task regions.
15382         (gimplify_scan_omp_clauses): Set GOVD_PRIVATE_OUTER_REF if needed,
15383         if it is set, lookup var in outer contexts too.  Set
15384         OMP_CLAUSE_PRIVATE_OUTER_REF if GOVD_PRIVATE_OUTER_REF is set.
15385         Handle OMP_CLAUSE_LASTPRIVATE_STMT, OMP_CLAUSE_COLLAPSE and
15386         OMP_CLAUSE_UNTIED.  Take region_type as last argument
15387         instead of in_parallel and in_combined_parallel.
15388         (gimplify_omp_parallel, gimplify_omp_for, gimplify_omp_workshare):
15389         Adjust callers.
15390         (gimplify_adjust_omp_clauses_1): Set OMP_CLAUSE_PRIVATE_OUTER_REF if
15391         GOVD_PRIVATE_OUTER_REF is set.  Call omp_finish_clause langhook.
15392         (new_omp_context): Set default_kind to
15393         OMP_CLAUSE_DEFAULT_UNSPECIFIED for OMP_TASK regions.
15394         (omp_region_type): New enum.
15395         (struct gimplify_omp_ctx): Remove is_parallel and is_combined_parallel
15396         fields, add region_type.
15397         (new_omp_context): Take region_type as argument instead of is_parallel
15398         and is_combined_parallel.
15399         (gimple_add_tmp_var, omp_firstprivatize_variable, omp_notice_variable,
15400         omp_is_private, omp_check_private): Adjust ctx->is_parallel and
15401         ctx->is_combined_parallel checks.
15402         (gimplify_omp_task): New function.
15403         (gimplify_adjust_omp_clauses): Handle OMP_CLAUSE_COLLAPSE and
15404         OMP_CLAUSE_UNTIED.
15405         * omp-low.c (extract_omp_for_data): Use schedule(static)
15406         for schedule(auto).  Handle pointer and unsigned iterators.
15407         Compute fd->iter_type.  Handle POINTER_PLUS_EXPR increments.
15408         Add loops argument.  Extract data for collapsed OMP_FOR loops.
15409         (expand_parallel_call): Assert sched_kind isn't auto,
15410         map runtime schedule to index 3.
15411         (struct omp_for_data_loop): New type.
15412         (struct omp_for_data): Remove v, n1, n2, step, cond_code fields.
15413         Add loop, loops, collapse and iter_type fields.
15414         (workshare_safe_to_combine_p): Disallow combined for if
15415         iter_type is unsigned long long.  Don't combine collapse > 1 loops
15416         unless all bounds and steps are constant.  Adjust extract_omp_for_data
15417         caller.
15418         (expand_omp_for_generic): Handle pointer, unsigned and long long
15419         iterators.  Handle collapsed OMP_FOR loops.  Adjust
15420         for struct omp_for_data changes.  If libgomp function doesn't return
15421         boolean_type_node, add comparison of the return value with 0.
15422         (expand_omp_for_static_nochunk, expand_omp_for_static_chunk): Handle
15423         pointer, unsigned and long long iterators.  Adjust for struct
15424         omp_for_data changes.
15425         (expand_omp_for): Assert sched_kind isn't auto, map runtime schedule
15426         to index 3.  Use GOMP_loop_ull*{start,next} if iter_type is
15427         unsigned long long.  Allocate loops array, pass it to
15428         extract_omp_for_data.  For collapse > 1 loops use always
15429         expand_omp_for_generic.
15430         (omp_context): Add sfield_map and srecord_type fields.
15431         (is_task_ctx, lookup_sfield): New functions.
15432         (use_pointer_for_field): Use is_task_ctx helper.  Change first
15433         argument's type from const_tree to tree.  Clarify comment.
15434         In OMP_TASK disallow copy-in/out sharing.
15435         (build_sender_ref): Call lookup_sfield instead of lookup_field.
15436         (install_var_field): Add mask argument.  Populate both record_type
15437         and srecord_type if needed.
15438         (delete_omp_context): Destroy sfield_map, clear DECL_ABSTRACT_ORIGIN
15439         in srecord_type.
15440         (fixup_child_record_type): Also remap FIELD_DECL's DECL_SIZE{,_UNIT}
15441         and DECL_FIELD_OFFSET.
15442         (scan_sharing_clauses): Adjust install_var_field callers.  For
15443         firstprivate clauses on explicit tasks allocate the var by value in
15444         record_type unconditionally, rather than by reference.
15445         Handle OMP_CLAUSE_PRIVATE_OUTER_REF.  Scan OMP_CLAUSE_LASTPRIVATE_STMT.
15446         Use is_taskreg_ctx instead of is_parallel_ctx.
15447         Handle OMP_CLAUSE_COLLAPSE and OMP_CLAUSE_UNTIED.
15448         (create_omp_child_function_name): Add task_copy argument, use
15449         *_omp_cpyfn* names if it is true.
15450         (create_omp_child_function): Add task_copy argument, if true create
15451         *_omp_cpyfn* helper function.
15452         (scan_omp_parallel): Adjust create_omp_child_function callers.
15453         Rename parallel_nesting_level to taskreg_nesting_level.
15454         (scan_omp_task): New function.
15455         (lower_rec_input_clauses): Don't run constructors for firstprivate
15456         explicit task vars which are initialized by *_omp_cpyfn*.
15457         Pass outer var ref to omp_clause_default_ctor hook if
15458         OMP_CLAUSE_PRIVATE_OUTER_REF or OMP_CLAUSE_LASTPRIVATE.
15459         Replace OMP_CLAUSE_REDUCTION_PLACEHOLDER decls in
15460         OMP_CLAUSE_REDUCTION_INIT.
15461         (lower_send_clauses): Clear DECL_ABSTRACT_ORIGIN if in task to
15462         avoid duplicate setting of fields.  Handle
15463         OMP_CLAUSE_PRIVATE_OUTER_REF.
15464         (lower_send_shared_vars): Use srecord_type if non-NULL.  Don't
15465         copy-out if TREE_READONLY, only copy-in.
15466         (expand_task_copyfn): New function.
15467         (expand_task_call): New function.
15468         (struct omp_taskcopy_context): New type.
15469         (task_copyfn_copy_decl, task_copyfn_remap_type, create_task_copyfn):
15470         New functions.
15471         (lower_omp_parallel): Rename to...
15472         (lower_omp_taskreg): ... this.  Use OMP_TASKREG_* macros where needed.
15473         Call create_task_copyfn if srecord_type is needed.  Adjust
15474         sender_decl type.
15475         (task_shared_vars): New variable.
15476         (check_omp_nesting_restrictions): Warn if work-sharing,
15477         barrier, master or ordered region is closely nested inside OMP_TASK.
15478         Add warnings for barrier if closely nested inside of work-sharing,
15479         ordered, or master region.
15480         (scan_omp_1): Call check_omp_nesting_restrictions even for
15481         GOMP_barrier calls.  Rename parallel_nesting_level to
15482         taskreg_nesting_level.  Handle OMP_TASK.
15483         (lower_lastprivate_clauses): Even if some lastprivate is found on a
15484         work-sharing construct, continue looking for them on parent parallel
15485         construct.
15486         (lower_omp_for_lastprivate): Add lastprivate clauses
15487         to the beginning of dlist rather than end.  Adjust for struct
15488         omp_for_data changes.
15489         (lower_omp_for): Add rec input clauses before OMP_FOR_PRE_BODY,
15490         not after it.  Handle collapsed OMP_FOR loops, adjust for
15491         OMP_FOR_{INIT,COND,INCR} changes, adjust extract_omp_for_data caller.
15492         (get_ws_args_for): Adjust extract_omp_for_data caller.
15493         (scan_omp_for): Handle collapsed OMP_FOR
15494         loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.
15495         (lower_omp_single_simple): If libgomp function doesn't return
15496         boolean_type_node, add comparison of the return value with 0.
15497         (diagnose_sb_1, diagnose_sb_2): Handle collapsed OMP_FOR
15498         loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.  Handle OMP_TASK.
15499         (parallel_nesting_level): Rename to...
15500         (taskreg_nesting_level): ... this.
15501         (is_taskreg_ctx): New function.
15502         (build_outer_var_ref, omp_copy_decl): Use is_taskreg_ctx instead
15503         of is_parallel_ctx.
15504         (execute_lower_omp): Rename parallel_nesting_level to
15505         taskreg_nesting_level.
15506         (expand_omp_parallel): Rename to...
15507         (expand_omp_taskreg): ... this.  Use OMP_TASKREG_* macros where needed.
15508         Call omp_task_call for OMP_TASK regions.
15509         (expand_omp): Adjust caller, handle OMP_TASK.
15510         (lower_omp_1): Adjust lower_omp_taskreg caller, handle OMP_TASK.
15511
15512         * bitmap.c (bitmap_default_obstack_depth): New variable.
15513         (bitmap_obstack_initialize, bitmap_obstack_release): Do nothing
15514         if argument is NULL and bitmap_default_obstack is already initialized.
15515         * ipa-struct-reorg.c (do_reorg_1): Call bitmap_obstack_release
15516         at the end.
15517         * matrix-reorg.c (matrix_reorg): Likewise.
15518
15519 2008-06-06  Uros Bizjak  <ubizjak@gmail.com>
15520
15521         * config/i386/i386.md (*indirect_jump): Macroize using P
15522         mode iterator.  Remove !TARGET_64BIT from insn constraints.
15523         (*tablejump_1): Ditto.
15524         (*indirect_jump_rex64): Remove insn pattern.
15525         (*tablejump_1_rex64): Ditto.
15526         (eh_return_<mode>): Macroize using P mode iterator from eh_return_di
15527         and eh_return_si insn patterns.
15528
15529 2008-06-06  Richard Guenther  <rguenther@suse.de>
15530
15531         * tree-ssa-structalias.c (merge_smts_into): Remove.
15532         (find_what_p_points_to): Do not bother to compute the
15533         points-to set for pt_anything pointers.
15534         * tree-ssa-operands.c (get_addr_dereference_operands): No NMT
15535         for pt_anything pointers is ok.
15536
15537 2008-06-06  Jan Hubicka  <jh@suse.cz>
15538
15539         * passes.c (execute_ipa_pass_list): Do not regenerate summaries.
15540
15541 2008-06-06  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
15542
15543         * cgraph.c: Fix typos in comments.
15544         (cgraph_availability_names): Fix string typo.
15545         * fold-const.c: Fix typos in comments.
15546         (fold_binary): Fix typo in warning.
15547         * genautomata.c: Fix typos in comments.
15548         (check_presence_pattern_sets): Fix typo in local variable.
15549         (output_description): Fix typo in output.
15550         * ggc-zone.c (ggc_pch_finish): Fix typo in error message.
15551         * hwint.h: Likewise.
15552         * matrix-reorg.c (check_allocation_function): Likewise.
15553         * omega.c (smooth_weird_equations): Likewise.
15554         * auto-inc-dec.c: Fix typos in comments.
15555         * bb-reorder.c: Likewise.
15556         * builtins.c: Likewise.
15557         * c-common.c: Likewise.
15558         * c-cppbuiltin.c: Likewise.
15559         * c-parser.c: Likewise.
15560         * c-pretty-print.c: Likewise.
15561         * cfgcleanup.c: Likewise.
15562         * cfgexpand.c: Likewise.
15563         * cfghooks.c: Likewise.
15564         * cfglayout.c: Likewise.
15565         * cfgloopmanip.c: Likewise.
15566         * cgraphunit.c: Likewise.
15567         * coverage.c: Likewise.
15568         * dbxout.c: Likewise.
15569         * df-byte-scan.c: Likewise.
15570         * df-core.c: Likewise.
15571         * df-problems.c: Likewise.
15572         * df-scan.c: Likewise.
15573         * dfp.c: Likewise.
15574         * dominance.c: Likewise.
15575         * domwalk.c: Likewise.
15576         * dse.c: Likewise.
15577         * dwarf2out.c: Likewise.
15578         * emit-rtl.c: Likewise.
15579         * et-forest.c: Likewise.
15580         * function.c: Likewise.
15581         * function.h: Likewise.
15582         * gcc.c: Likewise.
15583         * gcov-io.c: Likewise.
15584         * gcov.c: Likewise.
15585         * gcse.c: Likewise.
15586         * genattrtab.c: Likewise.
15587         * ggc-page.c: Likewise.
15588         * gimplify.c: Likewise.
15589         * gthr-lynx.h: Likewise.
15590         * haifa-sched.c: Likewise.
15591         * ipa-cp.c: Likewise.
15592         * ipa-inline.c: Likewise.
15593         * ipa-prop.h: Likewise.
15594         * ipa-pure-const.c: Likewise.
15595         * ipa-struct-reorg.c: Likewise.
15596         * ipa-struct-reorg.h: Likewise.
15597         * ipa-type-escape.c: Likewise.
15598         * ipa.c: Likewise.
15599         * loop-doloop.c: Likewise.
15600         * mips-tfile.c: Likewise.
15601         * mkmap-flat.awk: Likewise.
15602         * mkmap-symver.awk: Likewise.
15603         * modulo-sched.c: Likewise.
15604         * omp-low.c: Likewise.
15605         * optabs.c: Likewise.
15606         * optabs.h: Likewise.
15607         * opts.c: Likewise.
15608         * passes.c: Likewise.
15609         * postreload-gcse.c: Likewise.
15610         * postreload.c: Likewise.
15611         * predict.c: Likewise.
15612         * pretty-print.h: Likewise.
15613         * profile.c: Likewise.
15614         * protoize.c: Likewise.
15615         * ra-conflict.c: Likewise.
15616         * real.c: Likewise.
15617         * recog.c: Likewise.
15618         * regclass.c: Likewise.
15619         * regs.h: Likewise.
15620         * reload.c: Likewise.
15621         * rtl-error.c: Likewise.
15622         * rtlanal.c: Likewise.
15623         * scan.h: Likewise.
15624         * sched-rgn.c: Likewise.
15625         * see.c: Likewise.
15626         * stmt.c: Likewise.
15627         * target.h: Likewise.
15628         * tree-dfa.c: Likewise.
15629         * tree-eh.c: Likewise.
15630         * tree-flow-inline.h: Likewise.
15631         * tree-inline.c: Likewise.
15632         * tree-into-ssa.c: Likewise.
15633         * tree-loop-distribution.c: Likewise.
15634         * tree-nested.c: Likewise.
15635         * tree-parloops.c: Likewise.
15636         * tree-pass.h: Likewise.
15637         * tree-pretty-print.c: Likewise.
15638         * tree-profile.c: Likewise.
15639         * tree-scalar-evolution.c: Likewise.
15640         * tree-sra.c: Likewise.
15641         * tree-ssa-alias-warnings.c: Likewise.
15642         * tree-ssa-ccp.c: Likewise.
15643         * tree-ssa-coalesce.c: Likewise.
15644         * tree-ssa-dom.c: Likewise.
15645         * tree-ssa-dse.c: Likewise.
15646         * tree-ssa-forwprop.c: Likewise.
15647         * tree-ssa-live.c: Likewise.
15648         * tree-ssa-live.h: Likewise.
15649         * tree-ssa-loop-im.c: Likewise.
15650         * tree-ssa-loop-ivopts.c: Likewise.
15651         * tree-ssa-loop-niter.c: Likewise.
15652         * tree-ssa-loop-prefetch.c: Likewise.
15653         * tree-ssa-phiopt.c: Likewise.
15654         * tree-ssa-phiprop.c: Likewise.
15655         * tree-ssa-sccvn.c: Likewise.
15656         * tree-ssa-ter.c: Likewise.
15657         * tree-ssa-threadupdate.c: Likewise.
15658         * tree-ssa.c: Likewise.
15659         * tree-vect-analyze.c: Likewise.
15660         * tree-vect-transform.c: Likewise.
15661         * tree-vectorizer.c: Likewise.
15662         * tree-vn.c: Likewise.
15663         * tree-vrp.c: Likewise.
15664         * tree.c: Likewise.
15665         * tree.def: Likewise.
15666         * tree.h: Likewise.
15667         * unwind-dw2-fde.c: Likewise.
15668         * unwind.inc: Likewise.
15669         * value-prof.c: Likewise.
15670         * vmsdbgout.c: Likewise.
15671
15672 2008-06-05  David Edelsohn  <edelsohn@gnu.org>
15673
15674         * config/rs6000/xcoff.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Do not
15675         always place FP constants in the TOC for TARGET_POWERPC64.
15676         * config/rs6000/linux64.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Same.
15677
15678 2008-06-05  Joseph Myers  <joseph@codesourcery.com>
15679
15680         * config.gcc (powerpc-*-linux*spe*): Use t-dfprules.
15681         * config/rs6000/dfp.md (negdd2, absdd2, negtd2, abstd2): Do not
15682         enable for TARGET_E500_DOUBLE.
15683         (*movdd_softfloat32): Also enable for !TARGET_FPRS.
15684         * config/rs6000/rs6000.c (invalid_e500_subreg): Treat decimal
15685         floating-point modes like integer modes for E500 double.
15686         (rs6000_legitimate_offset_address_p): Likewise.
15687         (rs6000_legitimize_address): Likewise.  Do not allow REG+REG
15688         addressing for DDmode for E500 double.
15689         (rs6000_hard_regno_nregs): Do not treat decimal floating-point
15690         modes as using 64-bits of registers for E500 double.
15691         (spe_build_register_parallel): Do not handle DDmode or TDmode.
15692         (rs6000_spe_function_arg): Do not handle DDmode or TDmode
15693         specially for E500 double.
15694         (function_arg): Do not call rs6000_spe_function_arg for DDmode or
15695         TDmode for E500 double.
15696         (rs6000_gimplify_va_arg): Only handle SDmode in registers
15697         specially if TARGET_HARD_FLOAT && TARGET_FPRS.
15698         (rs6000_split_multireg_move): Do not handle TDmode specially for
15699         E500 double.
15700         (spe_func_has_64bit_regs_p): Do not treat DDmode or TDmode as
15701         using 64-bit registers for E500 double.
15702         (emit_frame_save): Do not handle DDmode specially for E500 double.
15703         (gen_frame_mem_offset): Likewise.
15704         (rs6000_function_value): Do not call spe_build_register_parallel
15705         for DDmode or TDmode.
15706         (rs6000_libcall_value): Likewise.
15707         * config/rs6000/rs6000.h (LOCAL_ALIGNMENT, MEMBER_TYPE_FORCES_BLK,
15708         DATA_ALIGNMENT, CLASS_MAX_NREGS): Do not handle DDmode specially
15709         for E500 double.
15710
15711 2008-06-04  H.J. Lu  <hongjiu.lu@intel.com>
15712
15713         * config/i386/i386.c (setup_incoming_varargs_64): Fix a typo
15714         in comments.
15715
15716 2008-06-04  Junjie Gu <jgu@tensilica.com>
15717
15718         * config/xtensa/lib2funcs.S (__xtensa_nonlocal_goto): Use unsigned
15719         comparison for frame pointers.
15720
15721 2008-06-04  Andy Hutchinson  <hutchinsonandy@aim.com>
15722
15723         PR target/27386
15724         * config/avr/avr.h (PUSH_ROUNDING): Remove.
15725
15726 2008-06-04  Andy Hutchinson  <hutchinsonandy@aim.com>
15727
15728         PR target/30243
15729         * builtins.c (expand_builtin_signbit): Don't take lowpart when
15730         register is already smaller or equal to required mode.
15731
15732 2008-06-04  Xinliang David Li  <davidxl@google.com>
15733
15734         * tree-call-cdce.c: New file.
15735         (cond_dead_built_in_calls): New static variable.
15736         (input_domain): New struct.
15737         (check_pow): New function.
15738         (check_builtin_call): Ditto.
15739         (check_target_format): Ditto.
15740         (is_call_dce_candidate): Ditto.
15741         (gen_one_condition): Ditto.
15742         (gen_conditions_for_domain): Ditto.
15743         (get_domain): Ditto.
15744         (gen_conditions_for_pow_cst_base): Ditto.
15745         (gen_conditions_for_pow_int_base): Ditto.
15746         (gen_conditions_for_pow): Ditto.
15747         (get_no_error_domain): Ditto.
15748         (gen_shrink_wrap_conditions): Ditto.
15749         (shrink_wrap_one_built_in_call): Ditto.
15750         (shink_wrap_conditional_dead_built_in_calls): Ditto.
15751         (tree_call_cdce): Ditto.
15752         (gate_call_cdce): Ditto.
15753         (pass_call_cdce): New gimple pass.
15754         * passes.c: (init_optimization_passes): New pass.
15755         * tree-pass.h: New pass declaration.
15756         * opts.c (decode_options): New flag setting.
15757         * common.opt: Add -ftree-builtin-call-dce flag.
15758         * Makefile.in: Add new source file.
15759         * tempvar.def: New tv_id.
15760         * doc/invoke.texi (-ftree-builtin-call-dce): New flag.
15761
15762 2008-06-04  Richard Guenther  <rguenther@suse.de>
15763
15764         * tree-flow-inline.h (is_global_var): Do not check TREE_STATIC on MTAGs.
15765         (is_call_clobbered): Always check var_ann->call_clobbered.
15766         (mark_call_clobbered): Always set var_ann->call_clobbered.
15767         (clear_call_clobbered): Always clear var_ann->call_clobbered.
15768         * tree-ssa-alias.c (mark_non_addressable): Use clear_call_clobbered.
15769         (reset_alias_info): Clear call clobbering info on MTAGs and
15770         globals as well.
15771         (set_pt_anything): Set pt_global_mem.
15772         (create_tag_raw): Adjust comment.
15773         (may_be_aliased): Do not check TREE_PUBLIC on MTAGs.
15774
15775 2008-06-04  Joseph Myers  <joseph@codesourcery.com>
15776             Maxim Kuvyrkov  <maxim@codesourcery.com>
15777
15778         * config/m68k/m68k.opt (mxgot): New option.
15779         * config/m68k/m68k.c (legitimize_pic_address): Handle -mxgot.
15780         (m68k_output_addr_const_extra): New.
15781         * config/m68k/m68k.h (OUTPUT_ADDR_CONST_EXTRA): New.
15782         * config/m68k/m68k-protos.h (m68k_output_addr_const_extra): Declare.
15783         * config/m68k/m68k.md (UNSPEC_GOTOFF): Define.
15784         * doc/invoke.texi (M680x0 Options): Document -mxgot.
15785
15786 2008-06-04  Richard Guenther  <rguenther@suse.de>
15787
15788         * tree-ssa-structalias.c (handle_ptr_arith): Correctly handle
15789         negative or non-representable offsets.
15790
15791 2008-06-03  H.J. Lu  <hongjiu.lu@intel.com>
15792
15793         * config/i386/i386.c (ix86_gen_leave): New.
15794         (ix86_gen_pop1): Likewise.
15795         (ix86_gen_add3): Likewise.
15796         (ix86_gen_sub3): Likewise.
15797         (ix86_gen_sub3_carry): Likewise.
15798         (ix86_gen_one_cmpl2): Likewise.
15799         (ix86_gen_monitor): Likewise.
15800         (override_options): Initialize ix86_gen_leave, ix86_gen_pop1,
15801         ix86_gen_add3, ix86_gen_sub3, ix86_gen_sub3_carry,
15802         ix86_gen_one_cmpl2 and ix86_gen_monitor.
15803         (ix86_file_end): Use mov%z0 instead of mov{q}/mov{l}.
15804         (output_set_got): Use mov%z0, pop%z0 and add%z0 instead of
15805         mov{q}/mov{l}, pop{q}/pop{l} and add{q}/add{l}.
15806         (ix86_expand_epilogue): Updated.
15807         (print_operand): Handle integer register operand for 'z'.
15808         (ix86_expand_strlensi_unroll_1): Likewise.
15809         (ix86_expand_strlen): Likewise.
15810         (ix86_expand_builtin): Likewise.
15811         (x86_output_mi_thunk): Use mov%z1 and add%z1 instead of
15812         mov{q}/mov{l} and add{q}/add{l}.
15813
15814 2008-06-03  Kai Tietz  <kai.tietz@onevision.com>
15815
15816         * config/i386/i386.md (P): New mode iterator.
15817         (SFmode push_operand splitter): Macroize DImode and SImode pushes
15818         using P mode iterator.
15819         (DFmode push_operand splitter): Ditto.
15820         (XFmode push_operand splitter): Ditto.
15821         (DFmode float_extend SFmode push_operand splitter): Ditto.
15822         (XFmode float_extend SFmode push_operand splitter): Do not generate
15823         SImode pushes for 64bit target.  Macroize Dimode and SImode
15824         pushes using P mode iterator.
15825         (XFmode float_extend DFmode push_operand splitter): Ditto.
15826
15827 2008-06-03  Kai Tietz  <kai.tietz@onevision.com>
15828
15829         * config/i386/i386-protos.h (ix86_reg_parm_stack_space): New.
15830         * config/i386/i386.h (ix86_reg_parm_stack_space): Removed prototype.
15831         * config/i386/i386.c (ix86_reg_parm_stack_space): Changed
15832         return type to int.
15833         (ix86_call_abi_override): Remove check for call_used_regs.
15834
15835 2008-06-03  Richard Guenther  <rguenther@suse.de>
15836
15837         * tree-ssa-structalias.c (find_func_aliases): Add constraints
15838         for the lhs of calls if the return type contains pointers.
15839
15840 2008-06-03  Kai Tietz  <kai.tietz@onevision.com>
15841
15842         * doc/tm.texi (OVERRIDE_ABI_FORMAT): New.
15843         * doc/extend.texi (ms_abi,sysv_abi): New attribute description.
15844         * function.c (allocate_struct_function): Use of OVERRIDE_ABI_FORMAT.
15845         * config/i386/cygming.h (TARGET_64BIT_MS_ABI): Make use
15846         of cfun and DEFAULT_ABI to deceide abi mode.
15847         (DEFAULT_ABI): New.
15848         (REG_PARM_STACK_SPACE): Removed.
15849         (OUTGOING_REG_PARM_STACK_SPACE): Removed.
15850         (STACK_BOUNDARY): Use default target to deceide stack boundary.
15851         * config/i386/i386-protos.h (ix86_cfun_abi): New.
15852         (ix86_function_abi): Likewise.
15853         (ix86_function_type_abi): Likewise.
15854         (ix86_call_abi_override): Likewise.
15855         * confid/i386/i386.md (SSE_REGPARM_MAX): Replaced by abi
15856         specific define X86_64_SSE_REGPARM_MAX/X64_SSE_REGPARM_MAX.
15857         * config/i386/i386.c (override_options): Replace TARGET_64BIT_MS_ABI.
15858         (X86_64_VARARGS_SIZE): Replace REGPARM_MAX and SSE_REGPARM_MAX by abi
15859         specific defines.
15860         (X86_64_REGPARM_MAX): New.
15861         (X86_64_SSE_REGPARM_MAX): New.
15862         (X64_REGPARM_MAX): New.
15863         (X64_SSE_REGPARM_MAX): New.
15864         (X86_32_REGPARM_MAX): New.
15865         (X86_32_SSE_REGPARM_MAX): New.
15866         (ix86_handle_cconv_attribute): Replace TARGET_64BIT_MS_ABI.
15867         (ix86_function_regparm): Handle user calling abi.
15868         (ix86_function_arg_regno_p): Replace TARGET_64BIT_MS_ABI
15869         by DEFAULT_ABI versus SYSV_ABI check.
15870         (ix86_reg_parm_stack_space): New.
15871         (ix86_function_type_abi): New.
15872         (ix86_call_abi_override): New.
15873         (ix86_function_abi): New.
15874         (ix86_cfun_abi): New.
15875         (init_cumulative_args): Call abi specific initialization.
15876         (function_arg_advance): Remove TARGET_64BIT_MS_ABI.
15877         (function_arg_64): Extend SSE_REGPARM_MAX check.
15878         (function_arg (): Remove TARGET_64BIT_MS_ABI.
15879         (ix86_pass_by_reference): Likewise.
15880         (ix86_function_value_regno_p): Likewise.
15881         (function_value_64): Replace REGPARM_MAX, and SSE_REGPARM_MAX.
15882         (ix86_function_value_1): Replace TARGET_64BIT_MS_ABI.
15883         (return_in_memory_ms_64): Replace TARGET_64BIT_MS_ABI.
15884         (ix86_build_builtin_va_list): Replace TARGET_64BIT_MS_ABI.
15885         (setup_incoming_varargs_64): Adjust regparm for call abi.
15886         (ix86_setup_incoming_varargs): Replace TARGET_64BIT_MS_ABI.
15887         (ix86_va_start): Likewise.
15888         (ix86_gimplify_va_arg): Likewise.
15889         (ix86_expand_prologue): Likewise.
15890         (output_pic_addr_const): Likewise.
15891         (ix86_init_machine_status): Initialize call_abi by DEFAULT_ABI.
15892         (x86_this_parameter): Replace TARGET_64BIT_MS_ABI.
15893         (x86_output_mi_thunk): Likewise.
15894         (x86_function_profiler): Likewise.
15895         * config/i386/i386.h (TARGET_64BIT_MS_ABI): Use ix64_cfun_abi.
15896         (SYSV_ABI, MS_ABI): New constants.
15897         (DEFAULT_ABI): New.
15898         (init_regs): Add prototype of function in regclass.c file.
15899         (OVERRIDE_ABI_FORMAT): New.
15900         (CONDITIONAL_REGISTER_USAGE): Remove TARGET_64BIT_MS_ABI part.
15901         (REG_PARM_STACK_SPACE): Use ix86_reg_parm_stack_space.
15902         (OUTGOING_REG_PARM_STACK_SPACE): New.
15903         (ix86_reg_parm_stack_space): New prototype.
15904         (CUMULATIVE_ARGS): Add call_abi member.
15905         (machine_function): Add call_abi member.
15906         * config/i386/mingw32.h (EXTRA_OS_CPP_BUILTINS): Replace
15907         TARGET_64BIT_MS_ABI by DEFAULT_ABI compare to MS_ABI.
15908
15909 2008-06-02  Andy Hutchinson  <hutchinsonandy@aim.com>
15910
15911         PR target/34879
15912         * config/avr/avr.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Redefine.
15913         (avr_builtin_setjmp_frame_value): New function.
15914         * config/avr/avr.md (nonlocal_goto_receiver): Define.
15915         (nonlocal_goto): Define.
15916
15917 2008-06-02  Richard Sandiford  <rdsandiford@googlemail.com>
15918
15919         * config/mips/mips.c (mips_emit_loadgp): Return early if
15920         there is nothing do to, otherwise emit a blockage if
15921         !TARGET_EXPLICIT_RELOCS || crtl->profile.
15922         * config/mips/mips.md (loadgp_blockage): Use SI rather than DI.
15923
15924 2008-06-02  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
15925
15926         * configure.ac: Drop unneeded backslash ending up in config.in.
15927         * acinclude.m4: Likewise.
15928         * config.in: Regenerate.
15929
15930 2008-05-26  Jan Hubicka  <jh@suse.cz>
15931
15932         * predict.c (maybe_hot_frequency_p): Break out of...
15933         (maybe_hot_bb_p): ... here.
15934         (maybe_hot_edge_p): New.
15935         * tree-ssa-coalesce.c (coalesce_cost_edge): Compute cost based on edge.
15936         * basic-block.h (maybe_hot_edge_p): Declare.
15937
15938 2008-05-31  Uros Bizjak  <ubizjak@gmail.com>
15939
15940         * config/i386/i386.md (*cmpfp_<mode>): Enable for optimize_size.
15941         (*cmpfp_<mode>_cc): Ditto.
15942         (*fp_jcc_8<mode>_387): Ditto.
15943         (*fop_<MODEF:mode>_2_i387): Ditto.
15944         (*fop_<MODEF:mode>_3_i387): Ditto.
15945         (*fop_xf_2_i387): Ditto.
15946         (*fop_xf_3_i387): Ditto.
15947
15948 2008-06-02  Tomas Bily  <tbily@suse.cz>
15949
15950         * tree-ssa-ifcombine.c (get_name_for_bit_test): Use CONVERT_EXPR_P.
15951
15952 2008-06-01  Richard Sandiford  <rdsandiford@googlemail.com>
15953
15954         * config/mips/mips.c (mips_valid_offset_p): New function.
15955         (mips_valid_lo_sum_p): Likewise.
15956         (mips_classify_address): Use them.
15957         (mips_force_address): New function.
15958         (mips_legitimize_address): Use it.
15959         * config/mips/mips.md (MOVE128): New mode iterator.
15960         (movtf): Require TARGET_64BIT.  Remove empty strings.
15961         (*movtf_internal): Rename to...
15962         (*movtf): ...this and require !TARGET_MIPS16.  Use "m" instead
15963         of "R" and use {,fp}{load,store} attributes instead of "multi".
15964         Use a separate define_split.
15965         (*movtf_mips16): New pattern.
15966
15967 2008-06-01  Richard Sandiford  <rdsandiford@googlemail.com>
15968
15969         * config/mips/mips-protos.h (mips_expand_before_return): Declare.
15970         * config/mips/mips.c (mips_expand_before_return): New function.
15971         (mips_expand_epilogue): Call it.
15972         * config/mips/mips.md (return): Turn into a define_expand.
15973         (*return): New insn.
15974
15975 2008-06-01  Richard Sandiford  <rdsandiford@googlemail.com>
15976
15977         * rtl.h (emit_clobber, gen_clobber, emit_use, gen_use): Declare.
15978         * emit-rtl.c (emit_clobber, gen_clobber, emit_use, gen_use): New
15979         functions.  Do not emit uses and clobbers of CONCATs; individually
15980         use and clobber their operands.
15981         * builtins.c (expand_builtin_setjmp_receiver): Use emit_clobber,
15982         gen_clobber, emit_use and gen_use.
15983         (expand_builtin_longjmp, expand_builtin_nonlocal_goto): Likewise.
15984         (expand_builtin_return): Likewise.
15985         * cfgbuild.c (count_basic_blocks): Likewise.
15986         * cfgrtl.c (rtl_flow_call_edges_add): Likewise.
15987         * explow.c (emit_stack_restore): Likewise.
15988         * expmed.c (extract_bit_field_1): Likewise.
15989         * expr.c (convert_move, emit_move_complex_parts): Likewise.
15990         (emit_move_multi_word, store_constructor): Likewise.
15991         * function.c (do_clobber_return_reg, do_use_return_reg): Likewise.
15992         (thread_prologue_and_epilogue_insns): Likewise.
15993         * lower-subreg.c (resolve_simple_move): Likewise.
15994         * optabs.c (widen_operand, expand_binop): Likewise.
15995         (expand_doubleword_bswap, emit_no_conflict_block): Likewise.
15996         * reload.c (find_reloads): Likewise.
15997         * reload1.c (eliminate_regs_in_insn): Likewise.
15998         * stmt.c (expand_nl_goto_receiver): Likewise.
15999         * config/alpha/alpha.md (builtin_longjmp): Likewise.
16000         * config/arc/arc.md (*movdi_insn, *movdf_insn): Likewise.
16001         * config/arm/arm.c (arm_load_pic_register): Likewise.
16002         (thumb1_expand_epilogue, thumb_set_return_address): Likewise.
16003         * config/arm/arm.md (untyped_return): Likewise.
16004         * config/arm/linux-elf.h (PROFILE_HOOK): Likewise.
16005         * config/avr/avr.c (expand_prologue): Likewise.
16006         * config/bfin/bfin.c (do_unlink): Likewise.
16007         * config/bfin/bfin.md (<optab>di3, adddi3, subdi3): Likewise.
16008         * config/cris/cris.c (cris_expand_prologue): Likewise.
16009         * config/darwin.c (machopic_indirect_data_reference): Likewise.
16010         (machopic_legitimize_pic_address): Likewise.
16011         * config/frv/frv.c (frv_frame_access, frv_expand_epilogue): Likewise.
16012         (frv_ifcvt_modify_insn, frv_expand_mdpackh_builtin): Likewise.
16013         * config/i386/i386.c (ix86_expand_vector_move_misalign): Likewise.
16014         (ix86_expand_convert_uns_didf_sse): Likewise.
16015         (ix86_expand_vector_init_general): Likewise.
16016         * config/ia64/ia64.md (eh_epilogue): Likewise.
16017         * config/iq2000/iq2000.c (iq2000_expand_epilogue): Likewise.
16018         * config/m32c/m32c.c (m32c_emit_eh_epilogue): Likewise.
16019         * config/m32r/m32r.c (m32r_reload_lr): Likewise.
16020         (config/iq2000/iq2000.c): Likewise.
16021         * config/mips/mips.md (fixuns_truncdfsi2): Likewise.
16022         (fixuns_truncdfdi2, fixuns_truncsfsi2, fixuns_truncsfdi2): Likewise.
16023         (builtin_longjmp): Likewise.
16024         * config/mn10300/mn10300.md (call, call_value): Likewise.
16025         * config/pa/pa.md (nonlocal_goto, nonlocal_longjmp): Likewise.
16026         * config/pdp11/pdp11.md (abshi2): Likewise.
16027         * config/rs6000/rs6000.c (rs6000_emit_move): Likewise.
16028         * config/s390/s390.c (s390_emit_prologue): Likewise.
16029         * config/s390/s390.md (movmem_long, setmem_long): Likewise.
16030         (cmpmem_long, extendsidi2, zero_extendsidi2, udivmoddi4): Likewise.
16031         (builtin_setjmp_receiver, restore_stack_nonlocal): Likewise.
16032         * config/sh/sh.c (prepare_move_operands): Likewise.
16033         (output_stack_adjust, sh_expand_epilogue): Likewise.
16034         (sh_set_return_address, sh_expand_t_scc): Likewise.
16035         * config/sparc/sparc.c (load_pic_register): Likewise.
16036         * config/sparc/sparc.md (untyped_return, nonlocal_goto): Likewise.
16037         * config/spu/spu.c (spu_expand_epilogue): Likewise.
16038         * config/v850/v850.c (expand_epilogue): Likewise.
16039
16040 2008-05-31  Anatoly Sokolov  <aesok@post.ru>
16041
16042         * config/avr/avr.md (UNSPECV_WRITE_SP_IRQ_ON): New constants.
16043         (UNSPECV_WRITE_SP_IRQ_OFF): (Ditto.).
16044         (movhi_sp_r_irq_off, movhi_sp_r_irq_on): New insn.
16045         * config/avr/avr.c (expand_prologue, expand_epilogue): Use
16046         movhi_sp_r_irq_off and movhi_sp_r_irq_on insns for writing to the
16047         stack pointer register.
16048         (output_movhi): Remove code for interrupt specific writing to the
16049         stack pointer register.
16050
16051 2008-05-31  Richard Guenther  <rguenther@suse.de>
16052
16053         PR tree-optimization/34244
16054         * fold-const.c (tree_expr_nonnegative_warnv_p): Do not ask VRP.
16055         (tree_expr_nonzero_warnv_p): Likewise.
16056         * tree-vrp.c (vrp_expr_computes_nonnegative): Call
16057         ssa_name_nonnegative_p.
16058         (vrp_expr_computes_nonzero): Call ssa_name_nonzero_p.
16059         (extract_range_from_unary_expr): Use vrp_expr_computes_nonzero,
16060         not tree_expr_nonzero_warnv_p.
16061
16062         PR tree-optimization/36262
16063         Revert
16064         2007-11-29  Zdenek Dvorak  <ook@ucw.cz>
16065
16066         PR tree-optimization/34244
16067         * tree-vrp.c (adjust_range_with_scev): Clear scev cache.
16068         (record_numbers_of_iterations): New function.
16069         (execute_vrp): Cache the numbers of iterations of loops.
16070         * tree-scalar-evolution.c (scev_reset_except_niters):
16071         New function.
16072         (scev_reset): Use scev_reset_except_niters.
16073         * tree-scalar-evolution.h (scev_reset_except_niters): Declare.
16074
16075 2008-05-31  Bernd Schmidt  <bernd.schmidt@analog.com>
16076
16077         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
16078         __WORKAROUND_RETS when appropriate.
16079
16080 2008-05-31  Uros Bizjak  <ubizjak@gmail.com>
16081
16082         * config/i386/i386.md (*fop_<mode>_comm_mixed): Macroize from
16083         *fop_sf_comm_mixed and *fop_df_comm_mixed insn patterns using MODEF
16084         mode iterator.
16085         (*fop_<mode>_comm_sse): Macroize from *fop_sf_comm_sse and
16086         *fop_df_comm_sse insn patterns using MODEF mode iterator.
16087         (*fop_<mode>_comm_i387): Macroize from *fop_sf_comm_i387 and
16088         *fop_df_comm_i387 insn patterns using MODEF mode iterator.
16089         (*fop_<mode>_1_mixed): Macroize from *fop_sf_1_mixed and
16090         *fop_df_1_mixed insn patterns using MODEF mode iterator.
16091         (*fop_<mode>_1_sse): Macroize from *fop_sf_1_sse and
16092         *fop_df_1_sse insn patterns using MODEF mode iterator.
16093         (*fop_<mode>_1_i387): Macroize from *fop_sf_1_i387 and
16094         *fop_df_1_i387 insn patterns using MODEF mode iterator.
16095         (*fop_<MODEF:mode>_2_i387): Macroize from *fop_sf_2<mode>_i387 and
16096         *fop_df_2<mode>_i387 insn patterns using MODEF mode iterator.
16097         (*fop_<MODEF:mode>_3_i387): Macroize from *fop_sf_3<mode>_i387 and
16098         *fop_df_3<mode>_i387 insn patterns using MODEF mode iterator.
16099         (*fop_xf_2_i387): Rename from *fop_xf_2<mode>_i387.
16100         (*fop_xf_3_i387): Rename from *fop_xf_3<mode>_i387.
16101         (*fop_xf_4_i387): Use <MODE> for mode attribute.
16102         (*fop_xf_5_i387): Ditto.
16103         (*fop_xf_6_i387): Ditto.
16104
16105 2008-05-30  Richard Guenther  <rguenther@suse.de>
16106
16107         * builtins.c (build_string_literal): Avoid generating
16108         a non-gimple_val result.
16109
16110 2008-05-30  DJ Delorie  <dj@redhat.com>
16111
16112         * exec-tool.in: Use an environment variable (private) instead of a
16113         file (shared) as a semaphore, so as to not break parallel builds.
16114
16115 2008-05-30  Steven Bosscher  <stevenb.gcc@gmail.com>
16116
16117         * optabs.c (maybe_encapsulate_block): Remove.
16118         (emit_libcall_block): Adjust accordingly.
16119         * optabs.h (maybe_encapsulate_block): Remove prototype.
16120
16121         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address):
16122         Don't use maybe_encapsulate_block.
16123
16124 2008-05-30  Steven Bosscher  <stevenb.gcc@gmail.com>
16125
16126         * config/rs6000/rs6000.c (rs6000_legitimize_address,
16127         rs6000_legitimize_reload_address, rs6000_emit_move): Make sure an
16128         rtx is a SYMBOL_REF before calling get_pool_constant.
16129
16130 2008-05-30  Eric Botcazou  <ebotcazou@adacore.com>
16131
16132         * fold-const.c (fold_unary) <CASE_CONVERT>: Add ??? comment.
16133
16134 2008-05-30  Danny Smith  <dannysmith@users.sourceforge.net>
16135
16136         * incpath.c: Use HOST_LACKS_INODE_NUMBERS conditional
16137         rather than OS names to choose INO_T_EQ definition.
16138         (DIRS_EQ) [!INO_T_EQ]: Don't worry about case in comparison.
16139         (add_path) [!INO_T_EQ]: Use lrealpath to fill canonical_name field.
16140
16141 2008-05-29  Daniel Franke  <franke.daniel@gmail.com>
16142
16143         PR target/36348
16144         * config/darwin-f.c: New.
16145         * config/t-darwin: Added rule to build darwin-f.o.
16146         * config.gcc: Defined new variable, fortran_target_objs.
16147         (*-*-darwin*): Set fortran_target_objs.
16148         * Makefile.in: Defined new variable FORTRAN_TARGET_OBJS.
16149         * configure.ac: Substitute fortran_target_objs, set FORTRAN_TARGET_OBJS.
16150         * configure: Regenerated.
16151
16152 2008-05-29  H.J. Lu  <hongjiu.lu@intel.com>
16153
16154         PR target/35771
16155         * config/i386/i386.c (ix86_function_arg_boundary): Convert to
16156         canonical type if needed.
16157
16158 2008-05-29  Eric Botcazou  <ebotcazou@adacore.com>
16159
16160         * tree-nested.c (check_for_nested_with_variably_modified): Fix typo.
16161
16162 2008-05-29  Richard Guenther  <rguenther@suse.de>
16163
16164         PR tree-optimization/36343
16165         PR tree-optimization/36346
16166         PR tree-optimization/36347
16167         * tree-flow.h (clobber_what_p_points_to): Declare.
16168         * tree-ssa-structalias.c (set_uids_in_ptset): Whether the
16169         pointed-to variable is dereferenced is irrelevant to whether
16170         the pointer can access the pointed-to variable.
16171         (clobber_what_p_points_to): New function.
16172         * tree-ssa-alias.c (set_initial_properties): Use it.
16173         * tree-ssa.c (verify_flow_sensitive_alias_info): Adjust
16174         call clobber check for NMTs.
16175
16176 2008-05-28  Seongbae Park  <seongbae.park@gmail.com>
16177
16178         * value-prof.c (tree_ic_transform): Use HOST_WIDEST_INT_PRINT_DEC
16179         for printing gcov_type.
16180
16181 2008-05-28  Seongbae Park  <seongbae.park@gmail.com>
16182
16183         * tree-ssa-propagate.c (set_rhs): Preserve the histogram
16184         and the eh region information.
16185         * value-prof.c (gimple_move_stmt_histograms): New function.
16186         * value-prof.h (gimple_move_stmt_histograms): New function declaration.
16187
16188 2008-05-28  Andreas Tobler  <a.tobler@schweiz.org>
16189
16190         * config/pa/pa.md: Remove extern frame_pointer_needed declaration.
16191
16192 2008-05-28  Seongbae Park <seongbae.park@gmail.com>
16193
16194         * value-prof.c (tree_ic_transform): Print counts.
16195         * tree-profile.c (tree_gen_ic_func_profiler):
16196         Clear __gcov_indreict_call_callee variable to avoid misattribution
16197         of the profile.
16198
16199 2008-05-28  Rafael Espíndola  <espindola@google.com>
16200
16201         * see.c (see_def_extension_not_merged): Use copy_rtx_if_shared to avoid
16202         invalid sharing.
16203
16204 2008-05-28  Richard Guenther  <rguenther@suse.de>
16205
16206         PR tree-optimization/36339
16207         * tree-ssa-alias.c (set_initial_properties): Move pt_anything
16208         and clobbering code out of the loop.
16209
16210 2008-05-28  Andreas Krebbel  <krebbel1@de.ibm.com>
16211
16212         * config/s390/constraints.md ('b', 'C', 'D', 'e'): New constraint
16213         letters defined.
16214
16215         * config/s390/s390.c (s390_compare_and_branch_condition_mask,
16216         s390_contiguous_bitmask_p, s390_symref_operand_p,
16217         s390_check_symref_alignment, s390_reload_larl_operand,
16218         s390_reload_symref_address): New functions.
16219         (s390_branch_condition_mnemonic): Support compare and branch
16220         instructions.
16221         (s390_mem_constraint): Avoid symrefs to accepted by the 'T'
16222         and 'W' constraints.
16223         (s390_secondary_reload): Add secondary reloads for unaligned
16224         symbol refs or symbol refs to floating point or QI/TI mode
16225         integer values.
16226         (legitimate_address_p): Accept symbol references as addresses.
16227         (s390_expand_insv): Use rotate and insert selected bits
16228         instruction for insv when building for z10.
16229         (print_operand_address): Handle symbol ref addresses.
16230         (print_operand): Output modifier 'c' added for signed byte values.
16231         (s390_encode_section_info): Mark symbol refs with
16232         SYMBOL_FLAG_NOT_NATURALLY_ALIGNED if appropriate.
16233
16234         * config/s390/s390.md (SIL,RRS,RIS): New instruction formats added.
16235         (length attribute): RRF, RRR have 4 byte length.
16236         (FPALL, INTALL): New mode iterators added.
16237         (*tstdi_sign, *cmpdi_ccs_sign, *cmpsi_ccs_sign,
16238         *cmp<mode>_ccs, *cmpdi_ccu_zero, *cmpdi_ccu, *cmpsi_ccu, *cmphi_ccu,
16239         *movdi_64, *movsi_zarch, *movhi, movmem<mode>, *movmem_short,
16240         *extendsidi2, *extendhidi2_extimm, *extendhisi2_extimm,
16241         *zero_extendsidi2, adddi3, *adddi3_31z, *adddi3_31, addsi3,
16242         *add<mode>3, *add<mode>3_carry1_cc, *add<mode>3_carry2_cc,
16243         *add<mode>3_cc, *add<mode>3_imm_cc, *muldi3_sign, muldi3,
16244         *mulsi3_sign, mulsi3, mulsidi3): Patterns enhanced with z10
16245         instructions.
16246         (*cmphi_ccs_z10, *cmpdi_ccs_signhi_rl, *cmpsi_ccu_zerohi_rlsi,
16247         *cmp<GPR:mode>_ccu_zerohi_rldi, *cmp_and_br_signed_<mode>,
16248         *cmp_and_br_unsigned_<mode>, reload<INTALL:mode><P:mode>_tomem_z10,
16249         reload<INTALL:mode><P:mode>_toreg_z10,
16250         reload<FPALL:mode><P:mode>_tomem_z10,
16251         reload<FPALL:mode><P:mode>_toreg_z10,
16252         reload<P:mode>_larl_odd_addend_z10, *execute_rl, *insv<mode>_z10,
16253         *insv<mode>_z10_noshift, *insv<mode>_or_z10_noshift,
16254         *zero_extendhi<mode>2_z10, *cmp_and_trap_signed_int<mode>,
16255         *cmp_and_trap_unsigned_int<mode>, prefetch): New pattern or expander
16256         definition.
16257         (movmem, clrmem, cmpmem): New splitters added.
16258
16259         * config/s390/predicates.md (larl_operand): Use
16260         SYMBOL_REF_FLAGS (op) & SYMBOL_FLAG_ALIGN1 replaced with
16261         SYMBOL_REF_ALIGN1_P.
16262         (s390_signed_integer_comparison,
16263         s390_unsigned_integer_comparison): New predicates.
16264
16265         * config/s390/s390-protos.h (s390_check_symref_alignment,
16266         s390_contiguous_bitmask_p, s390_reload_larl_operand,
16267         s390_reload_symref_address,
16268         s390_compare_and_branch_condition_mask): Prototypes added.
16269
16270         * config/s390/s390.h (TARGET_MEM_CONSTRAINT,
16271         SYMBOL_REF_ALIGN1_P, SYMBOL_FLAG_NOT_NATURALLY_ALIGNED,
16272         SYMBOL_REF_NOT_NATURALLY_ALIGNED_P): Macro definition added.
16273
16274 2008-05-28  Andreas Krebbel  <krebbel1@de.ibm.com>
16275
16276         * config/s390/s390.c (z10_cost): New cost function for z10.
16277         (s390_handle_arch_option, override_options): Support -march=z10 switch.
16278         (s390_issue_rate): Adjust issue rate for z10.
16279         * config/s390/s390.h (processor_type): Add PROCESSOR_2097_Z10.
16280         (processor_flags): Add PF_Z10.
16281         (TARGET_CPU_Z10, TARGET_Z10): New macro definitions.
16282         * config/s390/s390.md (cpu, cpu_facility attributes): Add z10.
16283         * gcc/config.gcc: Add z10.
16284
16285 2008-05-28  Richard Guenther  <rguenther@suse.de>
16286
16287         PR tree-optimization/36291
16288         * tree-flow. h (struct gimple_df): Remove var_anns member.
16289         * tree-flow-inline.h (gimple_var_anns): Remove.
16290         (var_ann): Simplify.
16291         * tree-dfa.c (create_var_ann): Simplify.
16292         (remove_referenced_var): Clear alias info from var_anns of globals.
16293         * tree-ssa.c (init_tree_ssa): Do not allocate var_anns.
16294         (delete_tree_ssa): Clear alias info from var_anns of globals.
16295         Do not free var_anns.
16296         (var_ann_eq): Remove.
16297         (var_ann_hash): Likewise.
16298
16299 2008-05-28  Mark Shinwell  <shinwell@codesourcery.com>
16300
16301         * config/mips/mips.c (mips_cpu_info_table): Add loongson2e
16302         and loongson2f entries.
16303         (mips_rtx_cost_data): Add entries for Loongson-2E/2F.
16304         * config/mips/mips.h (processor_type): Add Loongson-2E
16305         and Loongson-2F entries.
16306         (TARGET_LOONGSON_2E, TARGET_LOONGSON_2F, TARGET_LOONGSON_2EF): New.
16307         (MIPS_ISA_LEVEL_SPEC): Handle Loongson-2E/2F.
16308         * config/mips/mips.md (define_attr cpu): Add loongson2e and loongson2f.
16309         * doc/invoke.texi (MIPS Options): Document loongson2e
16310         and loongson2f processor names.
16311
16312 2008-05-27  H.J. Lu  <hongjiu.lu@intel.com>
16313
16314         PR target/35767
16315         PR target/35771
16316         * config/i386/i386.c (ix86_function_arg_boundary): Use
16317         alignment of canonical type.
16318         (ix86_expand_vector_move): Check unaligned memory access for
16319         all SSE modes.
16320
16321 2008-05-27  H.J. Lu  <hongjiu.lu@intel.com>
16322
16323         * dwarf2out.c (current_fde): Change return type to dw_fde_ref.
16324         Moved to the front of file.
16325
16326 2008-05-27  Xuepeng Guo  <xuepeng.guo@intel.com>
16327             H.J. Lu  <hongjiu.lu@intel.com>
16328
16329         * dwarf2out.c (current_fde): New.
16330         (add_cfi): Use it.
16331         (lookup_cfa:): Likewise.
16332         (dwarf2out_end_epilogue): Likewise.
16333         (dwarf2out_note_section_used): Likewise.
16334
16335 2008-05-27  Michael Matz  <matz@suse.de>
16336
16337         PR c++/27975
16338         * c.opt (Wenum-compare): New warning option.
16339         * doc/invoke.texi  (Warning Options): Document -Wenum-compare.
16340
16341 2008-05-27  Michael Matz  <matz@suse.de>
16342
16343         PR middle-end/36326
16344         * tree-gimple.c (is_gimple_mem_rhs): Remove work-around for
16345         non-BLKmode types.
16346         * tree-tailcall.c (find_tail_calls): Don't mark calls storing
16347         into memory as tail calls.
16348
16349 2008-05-27  Richard Guenther  <rguenther@suse.de>
16350
16351         PR tree-optimization/36339
16352         * tree-ssa-alias.c (set_initial_properties): Escaped pt_anything
16353         pointers cause all addressable variables to be call clobbered.
16354
16355 2008-05-27  Richard Guenther  <rguenther@suse.de>
16356
16357         PR tree-optimization/36245
16358         * tree-ssa-address.c (add_to_parts): Deal with non-pointer bases.
16359
16360 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
16361
16362         * config/s390/s390.md: Replace all occurences of the 'm'
16363         constraint with 'RT'.
16364
16365 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
16366
16367         * config/s390/s390.md ("cpu_facility", "enabled"): Attribute
16368         definitions added.
16369         ("*movdi_64dfp", "*movdi_64extimm", "*movdi_64"): Merged into
16370         "*movdi_64".
16371         ("*anddi3_extimm", "*anddi3"): Merged into "*anddi3".
16372         ("*iordi3_extimm", "*iordi3"): Merged into "*iordi3".
16373         ("*xordi3_extimm", "*xordi3"): Merged into "*xordi3".
16374
16375 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
16376
16377         * reload.c: (find_reloads): Skip alternatives according to the
16378         "enabled" attribute. Constify the constraint variable.
16379         * recog.c (get_attr_enabled): Add default implementation.
16380         (extract_insn): Set the alternative_enabled_p array
16381         in the recog_data struct.
16382         (preprocess_constraints, constrain_operands): Skip
16383         alternatives according to the "enabled" attribute
16384         * recog.h (struct recog_data): New field alternative_enabled_p.
16385         (skip_alternative): New inline function.
16386         * regclass.c: (record_operand_costs): Check the "enabled" attribute.
16387         (record_reg_classes): Skip alternative according to the
16388         "enabled" attribute.
16389
16390         * doc/md.texi: Add documention for the "enabled" attribute.
16391
16392 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
16393
16394         * defaults.h (TARGET_MEM_CONSTRAINT): New target macro added.
16395         * postreload.c (reload_cse_simplify_operands): Replace 'm'
16396         constraint with TARGET_MEM_CONSTRAINT.
16397         * recog.c (asm_operand_ok, preprocess_constraints,
16398         constrain_operands): Likewise.
16399         * regclass.c (record_reg_classes): Likewise.
16400         * reload.c (find_reloads, alternative_allows_const_pool_ref): Likewise.
16401         * reload1.c (maybe_fix_stack_asms): Likewise.
16402         * stmt.c (parse_output_constraint, parse_input_constraint): Likewise.
16403         * recog.h: Adjust comment.
16404         * genpreds.c (generic_constraint_letters): Remove 'm' constraint.
16405         * genoutput.c (note_constraint): Don't emit error for 'm' constraint.
16406         * doc/md.texi: Add a note to description of 'm' constraint.
16407         * doc/tm.texi: Document the new TARGET_MEM_CONSTRAINT macro.
16408
16409 2008-05-27  Eric Botcazou  <ebotcazou@adacore.com>
16410
16411         * tree-sra.c (sra_type_can_be_decomposed_p) <RECORD_TYPE>: Make sure
16412         that the bitfield is of integral type before testing its precision.
16413
16414 2008-05-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
16415             Sa Liu  <saliu@de.ibm.com>
16416
16417         * config/spu/spu.c (spu_init_libfuncs): Add __multi3, __divti3,
16418         __modti3, __udivti3, __umodti3 and __udivmodti4.
16419         * config/spu/t-spu-elf (LIB2FUNCS_STATIC_EXTRA): Add files
16420         that implement TImode mul and div functions.
16421         * config/spu/multi3.c: New. Implement __multi3.
16422         * config/spu/divmodti4.c: New. Implement _udivmodti4 and others.
16423         * testsuite/gcc.target/spu/muldivti3.c: New. Test TImode mul and div
16424         functions on SPU.
16425
16426 2008-05-26  Steven Bosscher  <stevenb.gcc@gmail.com>
16427
16428         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Generate
16429         new tls_gd_* and tls_ld_* insns instead of an insn sequence.
16430         * config/rs6000/rs6000.md (TLSmode, tls_abi_suffix, tls_insn_suffix,
16431         tls_sysv_suffix): New mode and mode attribute iterators.
16432         (tls_gd_32, tls_gd_64, tls_ld_32, tls_ld_64): Remove.
16433         (lts_gd_aix*, tls_gd_sysv*, tls_ld_aix*, tls_ld_sysv*): New patterns.
16434         (tls_dtprel_*, tls_dtprel_ha_*, tls_dtprel_lo_*, tls_got_dtprel_*,
16435         tls_tprel_*, tls_tprel_ha_*, tls_tprel_lo_*, tls_got_tprel_*,
16436         tls_tls_*): Merge 32 bit and 64 bit variants using aforementioned
16437         iterators.
16438
16439 2008-05-26  Eric Botcazou  <ebotcazou@adacore.com>
16440
16441         PR tree-optimization/36329
16442         * tree.h (CALL_CANNOT_INLINE_P): Add access check.
16443         * tree-gimple.h (CALL_STMT_CANNOT_INLINE_P): New macro.
16444         * cgraphbuild.c (initialize_inline_failed): Use the latter
16445         macro in lieu of the former.
16446         * ipa-inline.c (cgraph_mark_inline): Likewise.
16447         (cgraph_decide_inlining_of_small_function): Likewise.
16448         (cgraph_decide_inlining): Likewise.
16449         (cgraph_decide_inlining_incrementally): Likewise.
16450
16451 2008-05-26  Tristan Gingold  <gingold@adacore.com>
16452             Anatoly Sokolov  <aesok@post.ru>
16453
16454         * config/avr/avr.md ("call_prologue_saves"): Use hi8(gs())/lo8(gs())
16455         instead of pm_lo8/pm_hi8 to makes this call working on avr6.
16456         * config/avr/avr.c (expand_prologue): Tune "call_prologue"
16457         optimization for 'avr6' architecture.
16458
16459 2008-05-26  Andy Hutchinson  <hutchinsonandy@aim.com>
16460
16461         PR target/34932
16462         * config/avr/avr.md (*addhi3_zero_extend2): Remove.
16463
16464 2008-05-26  Richard Guenther  <rguenther@suse.de>
16465
16466         * tree-ssa-sccvn.c (expr_has_constants): Declare.
16467         (visit_reference_op_load): Initialize VN_INFO->has_constants properly.
16468
16469 2008-05-26  H.J. Lu  <hongjiu.lu@intel.com>
16470
16471         PR middle-end/36253
16472         * caller-save.c (insert_restore): Verify alignment of spill space.
16473         (insert_save): Likewise.
16474         * cfgexpand.c (LOCAL_ALIGNMENT): Removed.
16475         * defaults.h (LOCAL_ALIGNMENT): New. Provide default.
16476         (STACK_SLOT_ALIGNMENT): Likewise.
16477         * function.c (LOCAL_ALIGNMENT): Removed.
16478         (get_stack_local_alignment): New.
16479         (assign_stack_local): Use it.  Set alignment on stack slot.
16480         (assign_stack_temp_for_type): Use get_stack_local_alignment.
16481         * config/i386/i386.h (LOCAL_ALIGNMENT): Updated.
16482         (STACK_SLOT_ALIGNMENT): New.
16483         * config/i386/i386.c (ix86_local_alignment): Handle caller-save
16484         stack slot in XFmode.
16485
16486         * doc/tm.texi (STACK_SLOT_ALIGNMENT): New.
16487
16488 2008-05-26  Kai Tietz  <kai.tietz@onevision.com>
16489
16490         PR/36321
16491         * config/i386/i386.md (allocate_stack_worker_64): Make sure
16492         argument operand in rax isn't removed.
16493
16494 2008-05-26  Richard Guenther  <rguenther@suse.de>
16495
16496         PR middle-end/36300
16497         * fold-const.c (extract_muldiv_1): Use TYPE_OVERFLOW_WRAPS,
16498         not TYPE_UNSIGNED.  Use TYPE_PRECISION instead of GET_MODE_SIZE.
16499
16500 2008-05-26  Daniel Franke  <franke.daniel@gmail.com>
16501
16502         PR bootstrap/36331
16503         * c-cppbuiltin.c (define__GNUC__): Re-add definition of __GNUG__.
16504
16505 2008-05-26  Dominique Dhumieres  <dominiq@lps.ens.fr>
16506
16507         * config/darwin-c.c: Include "incpath.h" instead of "c-incpath.h".
16508         * config/t-darwin: Use "incpath.h" instead of "c-incpath.h".
16509
16510 2008-05-25  Eric Botcazou  <ebotcazou@adacore.com>
16511
16512         * tree-nested.c (convert_tramp_reference) <ADDR_EXPR>: Do not
16513         build a trampoline if we don't want one.
16514         * varasm.c (initializer_constant_valid_p) <ADDR_EXPR>: Do not
16515         return zero for nested functions if we don't want a trampoline.
16516
16517 2008-05-26  Daniel Franke  <franke.daniel@gmail.com>
16518
16519         * doc/invoke.texi: Added f77, f77-cpp-input to list of file types.
16520
16521 2008-05-26  Daniel Franke  <franke.daniel@gmail.com>
16522
16523         PR fortran/18428
16524         * c.opt: Removed undocumented option '-lang-fortran'.
16525         * c-common.h: Removed global variable 'lang_fortran'.
16526         * c-opts.c (c_common_handle_option): Removed code to handle
16527         option '-lang-fortran'. Updated includes.
16528         * c-cppbuiltin.c (c_cpp_builtins): Removed conditional
16529         definition of '__GFORTRAN__'.
16530         (define__GNUC__): Reimplemented to use BASEVER and
16531         cpp_define_formatted.
16532         (builtin_define_with_value_n): Removed.
16533         * c-incpath.h: Renamed to ...
16534         * incpath.h: ... this.
16535         * c-incpath.c: Renamed to ...
16536         * incpath.c: ... this. Updated includes.
16537         * fix-header.c: Updated includes.
16538         * Makefile.in: Replaced c-incpath.[ch] by incpath.[ch].
16539         (c-cppbuiltin.o): Added dependency on and definition of BASEVER.
16540         (OBJ-archive): Added cppdefault.o, incpath.o and prefix.o.
16541
16542 2008-05-25  Eric Botcazou  <ebotcazou@adacore.com>
16543
16544         * tree.h: Update the table of flags used on tree nodes.
16545         (TREE_NO_TRAMPOLINE): New accessor for static_flag.
16546         (SAVE_EXPR_RESOLVED_P): Use automatically-built access check.
16547         (FORCED_LABEL): Add access check.
16548         (CALL_EXPR_RETURN_SLOT_OPT): Likewise.
16549         (ASM_INPUT_P): Likewise.
16550         (ASM_VOLATILE_P): Likewise.
16551         (EH_FILTER_MUST_NOT_THROW): Access static_flag directly.
16552         (OMP_SECTION_LAST): Access private_flag directly.
16553         (OMP_RETURN_NOWAIT): Likewise.
16554         (OMP_PARALLEL_COMBINED): Likewise.
16555         (OMP_CLAUSE_PRIVATE_DEBUG): Access public_flag directly.
16556         (OMP_CLAUSE_LASTPRIVATE_FIRSTPRIVATE): Likewise.
16557         * tree-ssa-propagate.c (STMT_IN_SSA_EDGE_WORKLIST): Access
16558         deprecated_flag directly.
16559
16560 2008-05-25  H.J. Lu  <hongjiu.lu@intel.com>
16561
16562         * final.c (frame_pointer_needed): Removed.
16563         * flags.h (frame_pointer_needed): Likewise.
16564
16565         * function.h (rtl_data): Add frame_pointer_needed.
16566         (frame_pointer_needed): New.
16567
16568 2008-05-25  Arthur Loiret  <arthur.loiret@u-psud.fr>
16569
16570         * config.gcc (sh2[lbe]*-*-linux*): Allow target.
16571
16572 2008-05-25  Steven Bosscher  <stevenb.gcc@gmail.com>
16573
16574         * gcse.c (hash_scan_set): Do not pick up a REG_EQUAL value if
16575         SRC is a REG.
16576
16577 2008-05-25  Alan Modra  <amodra@bigpond.net.au>
16578
16579         * c-common.c (strip_array_types): Move function to..
16580         * tree.c: ..here.
16581         (get_inner_array_type): Delete.
16582         * c-common.h (strip_array_types): Move declaration to..
16583         * tree.h: ..here.
16584         (get_inner_array_type): Delete.
16585         * config/i386/i386.c (x86_field_alignment): Use strip_array_types.
16586         * config/rs6000/aix.h (ADJUST_FIELD_ALIGN): Likewise.
16587         * config/rs6000/linux64.h (ADJUST_FIELD_ALIGN): Likewise.
16588         * config/pa/pa.c (emit_move_sequence): Likewise.
16589
16590 2008-05-24  H.J. Lu  <hongjiu.lu@intel.com>
16591
16592         * config/i386/i386.md (*sse_prologue_save_insn): Set length
16593         attribute to 34.
16594
16595 2008-05-24  Andy Hutchinson  <hutchinsonandy@aim.com>
16596
16597         * function.c: Include target hook for nonlocal_goto frame value.
16598
16599 2008-05-24  Richard Guenther  <rguenther@suse.de>
16600
16601         * tree-dfa.c (refs_may_alias_p): Re-instantiate case that a scalar
16602         variable can be only accessed through a pointer or a union.
16603
16604 2008-05-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16605
16606         * builtins.c (fold_builtin_fpclassify): Fix spelling of FP_INFINITE.
16607         * doc/extend.texi: Likewise.
16608
16609 2008-05-23  DJ Delorie  <dj@redhat.com>
16610
16611         * config/m32c/jump.md (untyped_call): Add.
16612
16613         * config/m32c/m32c.c (m32c_return_addr_rtx): Change pointer type
16614         for A24 to PSImode.
16615         (m32c_address_cost): Detail costs for indirect offsets.
16616
16617 2008-05-23  Rafael Espíndola  <espindola@google.com>
16618
16619         * see.c (see_get_extension_data): Don't use SUBREG_REG to test
16620         if a node is a SUBREG.
16621         (see_analyze_one_def): Don't use SUBREG_REG to test if a node
16622         is a SUBREG.
16623
16624 2008-05-23  Paul Brook  <paul@codesourcery.com>
16625             Carlos O'Donell  <carlos@codesourcery.com>
16626
16627         * doc/extend.texi: Clarify use of __attribute__((naked)).
16628         * doc/tm.texi: Document TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS.
16629         * target.h (gcc_target): Add allocate_stack_slots_for_args.
16630         * function.c (use_register_for_decl): Use
16631         targetm.calls.allocate_stack_slots_for_args.
16632         * target-def.h (TARGET_CALLS): Add TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS.
16633         * config/arm/arm.c (arm_allocate_stack_slots_for_args): New function.
16634         (TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS): Define.
16635
16636 2008-05-23  Eric Botcazou  <ebotcazou@adacore.com>
16637
16638         * expr.c (highest_pow2_factor) <BIT_AND_EXPR>: New case.
16639
16640 2008-05-23  Steven Munroe  <sjmunroe@us.ibm.com>
16641
16642         * config/rs6000/darwin-ldouble.c (fmsub): Eliminate the full
16643         PACK/UNPACK between FP_SUB_Q and FD_TRUNC so that the result
16644         is only rounded once.
16645
16646 2008-05-23  Richard Guenther  <rguenther@suse.de>
16647
16648         * tree-ssa-operands.c (mark_difference_for_renaming): Use bitmap_xor.
16649
16650 2008-05-23  Uros Bizjak  <ubizjak@gmail.com>
16651             Jakub Jelinek  <jakub@redhat.com>
16652
16653         PR target/36079
16654         * configure.ac: Handle --enable-cld.
16655         * configure: Regenerated.
16656         * config.gcc: Add USE_IX86_CLD to tm_defines for x86 targets.
16657         * config/i386/i386.h (struct machine_function): Add needs_cld field.
16658         (ix86_current_function_needs_cld): New define.
16659         * config/i386/i386.md (UNSPEC_CLD): New unspec volatile constant.
16660         (cld): New isns pattern.
16661         (strmov_singleop, rep_mov, strset_singleop, rep_stos, cmpstrnqi_nz_1,
16662         cmpstrnqi_1, strlenqi_1): Set ix86_current_function_needs_cld flag.
16663         * config/i386/i386.opt (mcld): New option.
16664         * config/i386/i386.c (ix86_expand_prologue): Emit cld insn if
16665         TARGET_CLD and ix86_current_function_needs_cld.
16666         (override_options): Use -mcld by default for 32-bit code if
16667         USE_IX86_CLD.
16668
16669         * doc/install.texi (Options specification): Document --enable-cld.
16670         * doc/invoke.texi (Machine Dependent Options)
16671         [i386 and x86-64 Options]: Add -mcld option.
16672         (Intel 386 and AMD x86-64 Options): Document -mcld option.
16673
16674 2008-05-23  Kai Tietz  <kai.tietz@onevison.com>
16675         * config/i386/i386.c (return_in_memory_32): Add ATTRIBUTE_UNUSED.
16676         (return_in_memory_64): Likewise.
16677         (return_in_memory_ms_64): Likewise.
16678
16679 2008-05-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16680
16681         * builtin-types.def (BT_FN_INT_INT_INT_INT_INT_INT_VAR): New.
16682         * builtins.c (fold_builtin_fpclassify): New.
16683         (fold_builtin_varargs): Handle BUILT_IN_FPCLASSIFY.
16684         * builtins.def (BUILT_IN_FPCLASSIFY): New.
16685         * c-common.c (handle_type_generic_attribute): Adjust to accept
16686         fixed arguments before an elipsis.
16687         (check_builtin_function_arguments): Handle BUILT_IN_FPCLASSIFY.
16688         * doc/extend.texi: Document __builtin_fpclassify.
16689
16690 2008-05-22  Aldy Hernandez  <aldyh@redhat.com>
16691
16692         * omp-low.c (gate_expand_omp_ssa): Remove.
16693         (pass_expand_omp_ssa): Remove.
16694         (gate_expand_omp): Do not check for flag_openmp_ssa.
16695         * common.opt (-fopenmp-ssa): Remove.
16696         * passes.c (init_optimization_passes): Remove pass_expand_omp_ssa.
16697
16698 2008-05-22  Kaz Kojima  <kkojima@gcc.gnu.org>
16699
16700         * config/sh/sh.opt (mfixed-range): New option.
16701         * config/sh/sh-protos.h (sh_fix_range): Declare.
16702         * config/sh/sh.c (sh_fix_range): New function.
16703         * config/sh/sh.h (sh_fixed_range_str): Declare.
16704         (OVERRIDE_OPTIONS): Call sh_fix_range if sh_fixed_range_str
16705         is not empty.
16706         * doc/invoke.texi (SH Options): Document -mfixed-range.
16707
16708 2008-05-22  Kai Tietz  <kai.tietz@onevision.com>
16709
16710         * config/i386/sol2-10.h (SUBTARGET_RETURN_IN_MEMORY): Undefine
16711         it before the redeclaration.
16712
16713 2008-05-22  Anatoly Sokolov <aesok@post.ru>
16714
16715         * config/avr/avr.c (get_sequence_length): Add new function.
16716         (expand_prologue, expand_epilogue): Remove duplicate code.
16717
16718 2008-05-22  Rafael Espíndola  <espindola@google.com>
16719
16720         * see.c (see_pre_insert_extensions): Use copy_rtx to avoid invalid rtx
16721         sharing.
16722
16723 2008-05-22  H.J. Lu  <hongjiu.lu@intel.com>
16724
16725         * defaults.h (UNITS_PER_SIMD_WORD): Add scalar mode as argument.
16726         * doc/tm.texi (UNITS_PER_SIMD_WORD): Likewise.
16727
16728         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Replace
16729         UNITS_PER_SIMD_WORD with GET_MODE_SIZE (TYPE_MODE (vectype)).
16730         (vect_update_misalignment_for_peel): Likewise.
16731         (vector_alignment_reachable_p): Likewise.
16732         * tree-vect-transform.c (vectorizable_load): Likewise.
16733         * tree-vectorizer.c (vect_supportable_dr_alignment): Likewise.
16734         (get_vectype_for_scalar_type): Pass mode of scalar_type
16735         to UNITS_PER_SIMD_WORD.
16736
16737         * config/arm/arm.h (UNITS_PER_SIMD_WORD): Updated.
16738         * config/i386/i386.h (UNITS_PER_SIMD_WORD): Likewise.
16739         * config/mips/mips.h (UNITS_PER_SIMD_WORD): Likewise.
16740         * config/rs6000/rs6000.h (UNITS_PER_SIMD_WORD): Likewise.
16741         * config/sparc/sparc.h (UNITS_PER_SIMD_WORD): Likewise.
16742
16743 2008-05-22  Ira Rosen  <irar@il.ibm.com>
16744
16745         PR tree-optimization/36293
16746         * tree-vect-transform.c (vect_transform_strided_load): Don't check
16747         if the first load must be skipped because of a gap.
16748
16749 2008-05-22  Richard Guenther  <rguenther@suse.de>
16750
16751         * tree-dfa.c (refs_may_alias_p): Exit early if possible.  Handle
16752         more cases of offset disambiguation that is possible if
16753         strict-aliasing rules apply.
16754         * tree-ssa-loop-im.c (mem_refs_may_alias_p): Use refs_may_alias_p
16755         for basic offset and type-based disambiguation.
16756
16757 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
16758
16759         * config/i386/i386.c (ix86_expand_vector_init_one_var): Use
16760         ix86_expand_vector_set on V16QImode for SSE4.1.
16761
16762 2008-05-21  Tom Tromey  <tromey@redhat.com>
16763
16764         * c.opt (Wimport): Mark as undocumented.
16765         * doc/invoke.texi (Option Summary): Don't mention -Wimport or
16766         -Wno-import.
16767         (Warning Options): Likewise.
16768         * doc/cppopts.texi: Don't mention -Wimport.
16769
16770 2008-05-21  Sebastian Pop  <sebastian.pop@amd.com>
16771
16772         PR tree-optimization/36287
16773         PR tree-optimization/36286
16774         * lambda-code.c (build_access_matrix): Do not use the loop->num
16775         for computing the number of induction variables: use the loop depth
16776         instead.
16777
16778 2008-05-21  Kai Tietz  <kai.tietz@onevision.com>
16779
16780         PR/36280
16781         * config/i386/cygming.h (ASM_OUTPUT_LABELREF): Honor
16782         option -f(no-)leading-underscore.
16783
16784 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
16785
16786         * config/i386/i386.c (ix86_expand_vector_init_general): Use
16787         GET_MODE_NUNITS (mode).
16788
16789 2008-05-21  Peter Bergner  <bergner@vnet.ibm.com>
16790
16791         * doc/invoke.texi: Add cpu_type's 464 and 464fp.
16792         (-mmulhw): Add 464 to description.
16793         (-mdlmzb): Likewise.
16794         * config.gcc: Handle --with-cpu=464 and --with-cpu=464fp.
16795         * config/rs6000/rs6000.c (processor_target_table): Add 464 and
16796         464fp entries.
16797         * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add 464 and 464fp support.
16798         * config/rs6000/t-fprules (MULTILIB_MATCHES_FLOAT): Include -mcpu=464.
16799         * config/rs6000/rs6000.md: Update comments for 464.
16800
16801 2008-05-21  Janis Johnson  <janis187@us.ibm.com>
16802
16803         * doc/sourcebuild.texi (Test Directives): Add dg-xfail-run-if.
16804
16805 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
16806
16807         * config/i386/sse.md (vec_extractv4sf): Removed.
16808         (vec_extractv2df): Likewise.
16809         (vec_extractv2di): Likewise.
16810         (vec_extractv4si): Likewise.
16811         (vec_extractv8hi): Likewise.
16812         (vec_extractv16qi): Likewise.
16813         (vec_extract<mode>): New.
16814
16815 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
16816
16817         * config/i386/sse.md (vec_setv4sf): Removed.
16818         (vec_setv2df): Likewise.
16819         (vec_setv2di): Likewise.
16820         (vec_setv4si): Likewise.
16821         (vec_setv8hi): Likewise.
16822         (vec_setv16qi): Likewise.
16823         (vec_set<mode>): New.
16824
16825 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
16826
16827         * config/i386/i386.c (ix86_expand_vector_init_general): Remove
16828         goto for vec_concat and vec_interleave.
16829
16830 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
16831
16832         * config/i386/sse.md (vec_initv4sf): Removed.
16833         (vec_initv2df): Likewise.
16834         (vec_initv2di): Likewise.
16835         (vec_initv4si): Likewise.
16836         (vec_initv8hi): Likewise.
16837         (vec_initv16qi): Likewise.
16838         (vec_init<mode>): New.
16839
16840 2008-05-21  Joseph Myers  <joseph@codesourcery.com>
16841
16842         * collect2.c (find_a_file): Use IS_ABSOLUTE_PATH.
16843
16844 2008-05-21  Tom Tromey  <tromey@redhat.com>
16845
16846         * ggc-zone.c (lookup_page_table_if_allocated): New function.
16847         (zone_find_object_offset): Likewise.
16848         (gt_ggc_m_S): Likewise.
16849         (highest_bit): Likewise.
16850         * ggc-page.c (gt_ggc_m_S): New function.
16851         * stringpool.c (string_stack): Remove.
16852         (init_stringpool): Update.
16853         (ggc_alloc_string): Use ggc_alloc.
16854         (maybe_delete_ident): New function.
16855         (ggc_purge_stringpool): Likewise.
16856         (gt_ggc_m_S): Remove.
16857         * ggc-common.c (ggc_protect_identifiers): New global.
16858         (ggc_mark_roots): Call ggc_purge_stringpool.  Use
16859         ggc_protect_identifiers.
16860         * ggc.h (ggc_protect_identifiers): Declare.
16861         (gt_ggc_m_S): Update.
16862         (ggc_purge_stringpool): Declare.
16863         * toplev.c (compile_file): Set and reset ggc_protect_identifiers.
16864         * gengtype.c (write_types_process_field) <TYPE_STRING>: Remove
16865         special case.
16866         (write_root): Cast gt_ggc_m_S to gt_pointer_walker.
16867
16868 2008-05-21  David S. Miller  <davem@davemloft.net>
16869
16870         * config.gcc (sparc-*-linux*): Always include sparc/t-linux in
16871         tmake_file.
16872
16873 2008-05-21  Eric Botcazou  <ebotcazou@adacore.com>
16874
16875         * cfgexpand.c (tree_expand_cfg): Zap the EH throw statement table
16876         once finished.
16877
16878 2008-05-20  David Daney  <ddaney@avtrex.com>
16879
16880         * config/mips/mips.md (UNSPEC_SYNC_NEW_OP_12,
16881         UNSPEC_SYNC_OLD_OP_12, UNSPEC_SYNC_EXCHANGE_12): New define_constants.
16882         (UNSPEC_SYNC_EXCHANGE, UNSPEC_MEMORY_BARRIER, UNSPEC_SET_GOT_VERSION,
16883         UNSPEC_UPDATE_GOT_VERSION): Renumber.
16884         (optab, insn): Add 'plus' and 'minus' to define_code_attr.
16885         (atomic_hiqi_op): New define_code_iterator.
16886         (sync_compare_and_swap<mode>): Call mips_expand_atomic_qihi instead of
16887         mips_expand_compare_and_swap_12.
16888         (compare_and_swap_12): Use MIPS_COMPARE_AND_SWAP_12 instead of
16889         MIPS_COMPARE_AND_SWAP_12_0.  Pass argument to MIPS_COMPARE_AND_SWAP_12.
16890         (sync_<optab><mode>, sync_old_<optab><mode>,
16891         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
16892         sync_new_nand<mode>): New define_expands for HI and QI mode operands.
16893         (sync_<optab>_12, sync_old_<optab>_12, sync_new_<optab>_12,
16894         sync_nand_12, sync_old_nand_12, sync_new_nand_12): New insns.
16895         (sync_lock_test_and_set<mode>): New define_expand for HI and QI modes.
16896         (test_and_set_12): New insn.
16897         (sync_old_add<mode>, sync_new_add<mode>, sync_old_<optab><mode>,
16898         sync_new_<optab><mode>, sync_old_nand<mode>,
16899         sync_new_nand<mode>, sync_lock_test_and_set<mode>):  Add early
16900         clobber to operand 0 for SI and DI mode insns.
16901         * config/mips/mips-protos.h (mips_gen_fn_6, mips_gen_fn_5,
16902         mips_gen_fn_4): New typedefs.
16903         (mips_gen_fn_ptrs): Define new union type.
16904         (mips_expand_compare_and_swap_12): Remove declaration.
16905         (mips_expand_atomic_qihi): Declare function.
16906         * config/mips/mips.c (mips_expand_compare_and_swap_12): Rename to...
16907         (mips_expand_atomic_qihi): ... this.  Use new generator function
16908         parameter.
16909         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP_12): Add OPS parameter.
16910         (MIPS_COMPARE_AND_SWAP_12_0): Delete macro.
16911         (MIPS_COMPARE_AND_SWAP_12_ZERO_OP, MIPS_COMPARE_AND_SWAP_12_NONZERO_OP,
16912         MIPS_SYNC_OP_12, MIPS_SYNC_OP_12_NOT_NOP,
16913         MIPS_SYNC_OP_12_NOT_NOT, MIPS_SYNC_OLD_OP_12,
16914         MIPS_SYNC_OLD_OP_12_NOT_NOP, MIPS_SYNC_OLD_OP_12_NOT_NOP_REG,
16915         MIPS_SYNC_OLD_OP_12_NOT_NOT, MIPS_SYNC_OLD_OP_12_NOT_NOT_REG,
16916         MIPS_SYNC_NEW_OP_12, MIPS_SYNC_NEW_OP_12_NOT_NOP,
16917         MIPS_SYNC_NEW_OP_12_NOT_NOT, MIPS_SYNC_EXCHANGE_12,
16918         MIPS_SYNC_EXCHANGE_12_ZERO_OP, MIPS_SYNC_EXCHANGE_12_NONZERO_OP):
16919         New macros.
16920
16921 2008-05-20  H.J. Lu  <hongjiu.lu@intel.com>
16922
16923         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Add
16924         the missing break.
16925
16926 2008-05-20  Anatoly Sokolov <aesok@post.ru>
16927
16928         * config/avr/avr.h (machine_function): Add 'is_OS_main' field.
16929         * config/avr/avr.c (avr_OS_main_function_p): Add new function.
16930         (avr_attribute_table): Add 'OS_main' function attribute.
16931         (avr_regs_to_save, expand_prologue, expand_epilogue): Handle
16932         functions with 'OS_main' attribute.
16933
16934 2008-05-20  Richard Guenther  <rguenther@suse.de>
16935
16936         PR tree-optimization/35204
16937         * tree-ssa-sccvn.c (extract_and_process_scc_for_name): New
16938         helper, split out from ...
16939         (DFS): ... here.  Make the DFS walk non-recursive.
16940
16941 2008-05-20  Sebastian Pop  <sebastian.pop@amd.com>
16942             Jan Sjodin  <jan.sjodin@amd.com>
16943
16944         PR tree-optimization/36181
16945         * tree-parloops.c (loop_has_vector_phi_nodes): New.
16946         (parallelize_loops): Don't parallelize when the loop has vector
16947         phi nodes.
16948
16949 2008-05-20  Jan Sjodin  <jan.sjodin@amd.com>
16950             Sebastian Pop  <sebastian.pop@amd.com>
16951
16952         * tree-loop-linear.c (gather_interchange_stats): Look in the access
16953         matrix, and never look at the tree representation of the memory
16954         accesses.
16955         (linear_transform_loops): Computes parameters and access matrices.
16956         * tree-data-ref.c (compute_data_dependences_for_loop): Returns false
16957         when fails.
16958         (access_matrix_get_index_for_parameter): New.
16959         * tree-data-ref.h (struct access_matrix): New.
16960         (AM_LOOP_NEST_NUM, AM_NB_INDUCTION_VARS, AM_PARAMETERS, AM_MATRIX,
16961         AM_NB_PARAMETERS, AM_CONST_COLUMN_INDEX, AM_NB_COLUMNS,
16962         AM_GET_SUBSCRIPT_ACCESS_VECTOR, AM_GET_ACCESS_MATRIX_ELEMENT,
16963         am_vector_index_for_loop): New.
16964         (struct data_reference): Add field access_matrix.
16965         (DR_ACCESS_MATRIX): New.
16966         (compute_data_dependences_for_loop): Update declaration.
16967         (lambda_collect_parameters, lambda_compute_access_matrices): Declared.
16968         * lambda.h (lambda_vector_vec_p): Declared.
16969         * lambda-code.c: Depend on pointer-set.h.
16970         (lambda_collect_parameters_from_af, lambda_collect_parameters,
16971         av_for_af_base, av_for_af, build_access_matrix,
16972         lambda_compute_access_matrices): New.
16973         * Makefile.in (lambda-code.o): Depend on pointer-set.h.
16974
16975 2008-05-20  Joseph Myers  <joseph@codesourcery.com>
16976
16977         * doc/install.texi2html: Generate gcc-vers.texi in $DESTDIR not
16978         $SOURCEDIR/include.
16979
16980 2008-05-20  Jan Sjodin  <jan.sjodin@amd.com>
16981             Sebastian Pop  <sebastian.pop@amd.com>
16982
16983         PR tree-optimization/36206
16984         * tree-scalar-evolution.c: Remove enum INSERT_SUPERLOOP_CHRECS,
16985         FOLD_CONVERSIONS.
16986         (instantiate_scev_1): Rename flags to fold_conversions.
16987         Do not check for INSERT_SUPERLOOP_CHRECS, keep SSA_NAMEs defined
16988         outeside instantiation_loop.
16989         * tree-chrec.h (evolution_function_is_affine_in_loop): New.
16990         (evolution_function_is_affine_or_constant_p): Removed.
16991         * tree-data-ref.c (dr_analyze_indices): Replace resolve_mixers with
16992         instantiate_scev.
16993         (analyze_siv_subscript): Pass in the loop nest number.
16994         Call evolution_function_is_affine_in_loop instead of
16995         evolution_function_is_affine_p.
16996         (analyze_overlapping_iterations): Pass in the loop nest number.
16997
16998 2008-05-20  Jan Sjodin  <jan.sjodin@amd.com>
16999             Sebastian Pop  <sebastian.pop@amd.com>
17000
17001         PR tree-optimization/36206
17002         * tree-chrec.h (chrec_fold_op): New.
17003         * tree-data-ref.c (initialize_matrix_A): Traverse NOP_EXPR, PLUS_EXPR,
17004         and other trees.
17005
17006 2008-05-20  Nathan Sidwell  <nathan@codesourcery.com>
17007
17008         * c-incpath.c (INO_T_EQ): Do not define on non-inode systems.
17009         (DIRS_EQ): New.
17010         (remove_duplicates): Do not set inode on non-inode systems.
17011         Use DIRS_EQ.
17012
17013 2008-05-20  Sandra Loosemore  <sandra@codesourcery.com>
17014
17015         * config.gcc (tm_file): Update comments about relative pathnames.
17016
17017 2008-05-20  Richard Guenther  <rguenther@suse.de>
17018
17019         * tree-ssa-reassoc.c (fini_reassoc): Use the statistics infrastructure.
17020         * tree-ssa-sccvn.c (process_scc): Likewise.
17021         * tree-ssa-sink.c (execute_sink_code): Likewise.
17022         * tree-ssa-threadupdate.c (thread_through_all_blocks): Likewise.
17023         * tree-vrp.c (process_assert_insertions): Likewise.
17024         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Likewise.
17025         (perform_tree_ssa_dce): Likewise.
17026         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Likewise.
17027         (dump_dominator_optimization_stats): Likewise.
17028         * tree-vectorizer.c (vectorize_loops): Likewise.
17029
17030 2008-05-20  Richard Guenther  <rguenther@suse.de>
17031
17032         * tree-vn.c (vn_lookup_with_vuses): Do not use the alias oracle.
17033
17034 2008-05-20  Kai Tietz  <kai.tietz@onevision.com>
17035
17036         * config/i386/i386-protos.h (ix86_return_in_memory): Removed.
17037         (ix86_i386elf_return_in_memory): Likewise.
17038         (ix86_i386interix_return_in_memory): Likewise.
17039         * config/i386/i386-interix.h (TARGET_RETURN_IN_MEMORY): Removed.
17040         (SUBTARGET_RETURN_IN_MEMORY): New.
17041         * config/i386/i386elf.h: Likewise.
17042         * config/i386/ptx4-i.h: Likewise.
17043         * config/i386/sol2-10.h: Likewise.
17044         * config/i386/sysv4.h: Likewise.
17045         * config/i386/vx-common.h: Likewise.
17046         * config/i386/i386.h (TARGET_RETURN_IN_MEMORY): Removed.
17047         * config/i386/i386.c (ix86_return_in_memory): Made static and
17048         make use of optional SUBTARGET_RETURN_IN_MEMORY macro.
17049         (ix86_i386elf_return_in_memory): Removed.
17050         (ix86_i386interix_return_in_memory): Removed.
17051         (TARGET_RETURN_IN_MEMORY): Declared within i386.c only.
17052         * target-def.h (TARGET_RETURN_IN_MEMORY): Remove protection #ifdef.
17053
17054 2008-05-20  Alexandre Oliva  <aoliva@redhat.com>
17055
17056         * cselib.c (cselib_record_sets): Use correct mode for IF_THEN_ELSE.
17057
17058 2008-05-19  Xinliang David Li  <davidxl@google.com>
17059
17060         * tree-ssa-dce.c: Revert patches of 2008-05-17 and 2008-05-18.
17061         * opts.c: Ditto.
17062         * common.opt: Ditto.
17063         * doc/invoke.texi: Ditto.
17064
17065 2008-05-19  Eric Botcazou  <ebotcazou@adacore.com>
17066
17067         * tree.c (substitute_in_expr) <tcc_vl_exp>: Fix thinko.
17068         (substitute_placeholder_in_expr) <tcc_vl_exp>: Minor tweak.
17069
17070 2008-05-19  H.J. Lu  <hongjiu.lu@intel.com>
17071
17072         * config/i386/i386.c (ix86_expand_vector_init_concat): Change
17073         sizes of operand array from 8/4 to 4/2.
17074         (ix86_expand_vector_init_general): Change size of operand array
17075         from 32 to 16.  Remove op0, op1 and half_mode.
17076
17077 2008-05-19  H.J. Lu  <hongjiu.lu@intel.com>
17078
17079         * config/i386/i386.c (ix86_expand_vector_init_concat): New.
17080         (ix86_expand_vector_init_interleave): Likewise.
17081         (ix86_expand_vector_init_general): Use them.  Assert
17082         word_mode == SImode when n_words == 4.
17083
17084 2008-05-19  Uros Bizjak  <ubizjak@gmail.com>
17085
17086         * config/i386/i386.c (ix86_secondary_reload): New static function.
17087         (TARGET_SECONDARY_RELOAD): New define.
17088         * config/i386/i386.h (SECONDARY_OUTPUT_RELOAD_CLASS): Remove.
17089         * config/i386/i386.md (reload_outqi): Remove.
17090
17091 2008-05-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
17092
17093         PR middle-end/35509
17094         * builtins.c (mathfn_built_in_1): Renamed from mathfn_built_in.
17095         Add `implicit' parameter.  Handle BUILT_IN_SIGNBIT.
17096         (mathfn_built_in): Rewrite in terms of mathfn_built_in_1.
17097         (fold_builtin_classify): Handle BUILT_IN_ISINF_SIGN.
17098         (fold_builtin_1): Likewise.
17099         * builtins.def (BUILT_IN_ISINF_SIGN): New.
17100         c-common.c (check_builtin_function_arguments): Handle
17101         BUILT_IN_ISINF_SIGN.
17102         * doc/extend.texi: Document __builtin_isinf_sign.
17103         * fold-const.c (operand_equal_p): Handle COND_EXPR.
17104
17105 2008-05-18  Eric Botcazou  <ebotcazou@adacore.com>
17106
17107         * tree-ssa-dom.c (tree_ssa_dominator_optimize): If some blocks need
17108         EH cleanup at the end of the pass, search for those that have been
17109         turned into forwarder blocks and do the cleanup on their successor.
17110
17111 2008-05-18  Richard Guenther  <rguenther@suse.de>
17112
17113         * tree-cfg.c (verify_gimple_expr): Allow conversions from
17114         pointers to sizetype and vice versa.
17115
17116 2008-05-18 Xinliang David Li   <davidxl@google.com>
17117
17118         * gcc/tree-ssa-dce.c: Coding style fix.
17119         (check_pow): Documentation comment.
17120         (check_log): Documenation comment. Coding style fix.
17121         (is_unnecessary_except_errno_call): Ditto.
17122         (gen_conditions_for_pow): Ditto.
17123         (gen_conditions_for_log): Ditto.
17124         (gen_shrink_wrap_conditions): Ditto.
17125         (shrink_wrap_one_built_in_calls): Ditto.
17126         * gcc/doc/invoke.texi: Better documentation string.
17127         * ChangeLog: Fix wrong change log entries from
17128         May 17 checkin on function call DCE.
17129
17130 2008-05-17  Kaz Kojima  <kkojima@gcc.gnu.org>
17131
17132         * config/sh/sh.c (sh_output_mi_thunk): Update the use of init_flow.
17133
17134 2008-05-17  Kenneth Zadeck <zadeck@naturalbridge.com>
17135
17136         * doc/rtl.texi (RTL_CONST_CALL_P, RTL_PURE_CALL_P): Fixed typos.
17137         * df-problems.c (simulation routines): Fixed block comment to
17138         properly say how to add forwards scanning functions.
17139
17140 2008-05-17  Eric Botcazou  <ebotcazou@adacore.com>
17141
17142         * tree-inline.c (setup_one_parameter): Remove dead code.
17143
17144 2008-05-17  Eric Botcazou  <ebotcazou@adacore.com>
17145
17146         * fold-const.c (fold_unary) <CASE_CONVERT>: Fold the cast into
17147         a BIT_AND_EXPR only for an INTEGER_TYPE.
17148
17149 2008-05-17 Xinliang David Li   <davidxl@google.com>
17150
17151         * gcc/tree-ssa-dce.c (cond_dead_built_in_calls): New static variable.
17152         (check_pow, check_log, is_unnecessary_except_errno_call): New
17153         functions to check for eliminating math functions that are pure
17154         except for setting errno.
17155         (gen_conditions_for_pow, gen_conditionas_for_log): New functions to
17156         general condition expressions for shrink-wrapping pow/log calls.
17157         (gen_shrink_wrap_conditions): Ditto.
17158         (shrink_wrap_one_built_in_call): Ditto.
17159         (shrink_wrap_conditional_dead_built_in_calls): Ditto.
17160         (mark_operand_necessary): If debugging, output if OP is necessary.
17161         (eliminate_unnecessary_stmts): Eliminate pow, log calls that are
17162         unnecessary.
17163         * gcc/opts.c (decode_options): set flag_tree_builtin_dce to 1 when
17164         opt level >= 2.
17165         * gcc/common.opt: New user flag -ftree-builtin-dce.
17166         * gcc/doc/invoke.texi (-ftree-builtin-dce): New option.
17167
17168 2008-05-16  David S. Miller  <davem@davemloft.net>
17169
17170         * config/sparc/linux.h (NO_PROFILE_COUNTERS): Undef before overriding.
17171         * config/sparc/linux64.h (NO_PROFILE_COUNTERS): Likewise.
17172
17173 2008-05-16  Uros Bizjak  <ubizjak@gmail.com>
17174
17175         PR target/36246
17176         * config/i386/i386.h (SECONDARY_MEMORY_NEEDED_MODE): New define.
17177
17178 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
17179
17180         * ifcvt.c (dead_or_predicable): Rename
17181         df_simulate_one_insn_backwards to df_simulate_one_insn.
17182         * recog.c (peephole2_optimize): Ditto.
17183         * rtl-factoring.c (collect_pattern_seqs, clear_regs_live_in_seq):
17184         Ditto.
17185         * df.h: Rename df_simulate_one_insn_backwards to
17186         df_simulate_one_insn.  and delete df_simulate_one_insn_forwards.
17187         * df-problems.c (df_simulate_artificial_refs_at_top) Reversed
17188         scanning of defs and uses.
17189         (df_simulate_one_insn_backwards): Renamed to df_simulate_one_insn.
17190         (df_simulate_one_insn_forwards): Removed.
17191
17192 2008-05-16  Doug Kwan  <dougkwan@google.com>
17193
17194         * real.c (real_to_decimal, real_to_hexadecimal): Distinguish
17195         QNaN & SNaN.
17196         (real_from_string): Handle NaNs and Inf as approriate.
17197
17198 2008-05-16  Nathan Froyd  <froydnj@codesourcery.com>
17199
17200         * doc/gty.texi (Source Files Containing Type Information): Note
17201         that headers should appear first in the gtfiles list.
17202
17203 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
17204
17205         * tree.def (COND_EXEC): Properly documented this code.
17206
17207 2008-05-16  Diego Novillo  <dnovillo@google.com>
17208
17209         * dwarf2asm.c (dw2_assemble_integer): Clarify comment.
17210         * tree-nested.c (get_trampoline_type): Set DECL_CONTEXT for
17211         the new field.
17212
17213 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
17214
17215         * tree-ssa-dse (max_stmt_uid): Removed.
17216         (get_stmt_uid, dse_possible_dead_store_p, dse_optimize_stmt,
17217         tree_ssa_dse): Encapsulate all uses of stmt_ann->uid.
17218         * tree-ssa-sccvn.c (compare_ops, init_scc_vn): Ditto.
17219         * function.h (cfun.last_stmt_uid): New field.
17220         * tree-flow-inline.h (set_gimple_stmt_uid, gimple_stmt_uid,
17221         gimple_stmt_max_uid, set_gimple_stmt_max_uid, inc_gimple_stmt_max_uid):
17222         New functions.
17223         * tree-dfa.c (renumber_gimple_stmt_uids): New function.
17224         (create_stmt_ann): Initialize the ann->uid field.
17225         * tree-ssa-pre.c (compute_avail): Encapsulate the stmt_ann->uid
17226         with new calls.
17227         * tree-flow.h (renumber_gimple_stmt_uids): New function.
17228
17229 2008-05-16  Nathan Froyd  <froydnj@codesourcery.com>
17230
17231         * tree-flow.h (init_empty_tree_cfg_for_function): Declare.
17232         * tree-cfg.c (init_empty_tree_cfg_for_function): Define.
17233         (init_empty_tree_cfg): Call it.
17234
17235 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
17236
17237         * cfg.c (init_flow): Add argument THE_FUN.  Use it instead of cfun.
17238         Update all users.
17239
17240 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
17241
17242         * doc/invoke.text (-fdump-tree-*-verbose): New option.
17243         * tree-dump.c (dump_options): New verbose option.
17244         * tree-pretty-print.c (dump_phi_nodes, dump_generic_bb_buff):
17245         Add verbose dump.
17246         * tree-pass.h (TDF_VERBOSE): New dump flag.
17247         * print-tree.c (print_node): Added code to be able to print PHI_NODES.
17248         (tree-flow.h): Added include.
17249         * Makefile.in (print-tree.o):  Added TREE_FLOW_H.
17250
17251 2008-05-16  Bernd Schmidt  <bernd.schmidt@analog.com>
17252
17253         * config/bfin/bfin.c (bfin_discover_loops): Delete empty loops.
17254
17255         From Jie Zhang  <jie.zhang@analog.com>
17256         * config/bfin/t-bfin-elf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
17257         MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Remove mcpu=bf532-0.3,
17258         mcpu=bf561-none and mcpu=bf561-0.2.
17259         * config/bfin/t-bfin-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
17260         MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Likewise.
17261         * config/bfin/t-bfin-linux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
17262         MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Likewise.
17263         * config/bfin/bfin-protos.h (enum bfin_cpu_type): Add BFIN_CPU_UNKNOWN.
17264         * config/bfin/elf.h (STARTFILE_SPEC): Use specific CRT for BF561.
17265         (LIB_SPEC): Use proper linker script for bf561.  Error if no mcpu
17266         option.
17267         * config/bfin/bfin.c (bfin_cpu_type): Set to BFIN_CPU_UNKNOWN.
17268         (cputype_selected): Remove.
17269         (bfin_handle_option): Don't use cputype_selected.
17270         (override_options): When no mcpu option, enable all workarounds.
17271         Don't use bfin_workarounds.
17272         * config/bfin/bfin.h (DRIVER_SELF_SPECS): Don't set default
17273         processor type.
17274         (DEFAULT_CPU_TYPE): Don't define.
17275
17276 2008-05-16  Richard Guenther  <rguenther@suse.de>
17277
17278         * tree-ssa-propagate.c (substitute_and_fold): Fix stmt walking
17279         on deletion of the last stmt.
17280
17281 2008-05-15  H.J. Lu  <hongjiu.lu@intel.com>
17282
17283         * config/i386/i386.c (ix86_expand_vector_init_general): Optimize
17284         V8HImode for SSE2 and V16QImode for SSE4.1.
17285
17286 2008-05-15  Kenneth Zadeck <zadeck@naturalbridge.com>
17287
17288         * cgraph.h (compute_inline_parameters): Made public.
17289         * tree-pass.h (ipa_opt_pass): Removed function_generate_summary,
17290         variable_generate_summary, function_write_summary,
17291         variable_write_summary, variable_read_summary.  Added generate_summary,
17292         write_summary, read_summary.
17293         * cgraphunit.c (cgraph_process_new_functions): Changed call from
17294         pass_ipa_inline.function_generate_summary, to
17295         compute_inline_parameters.
17296         * ipa-inline.c (compute_inline_parameters): Made public and added
17297         node parameter.
17298         (compute_inline_parameters_for_current): New function.
17299         (pass_inline_param): Now calls compute_inline_parameters_for_current.
17300         (inline_generate_summary): Removed parameter and made to loop over
17301         all cgraph nodes.
17302         (pass_ipa_inline): Updated for new IPA_PASS structure.
17303         * passes.c (execute_ipa_summary_passes): Now is called once per
17304         pass rather than once per node*pass.
17305
17306 2008-05-15  Anatoly Sokolov <aesok@post.ru>
17307
17308         * config/avr/avr.c (avr_base_arch_macro, avr_have_movw_lpmx_p,
17309         avr_have_mul_p, avr_asm_only_p): Remove variables.
17310         (avr_override_options): Remove initialization of removed variables.
17311         (avr_file_start):  Convert removed variables to fields of
17312         'struct base_arch_s *avr_current_arch'.
17313         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): (Ditto.).
17314         (AVR_HAVE_MUL): (Ditto.).
17315         (AVR_HAVE_MOVW): (Ditto.).
17316         (AVR_HAVE_LPMX): (Ditto.).
17317         (avr_base_arch_macro, avr_have_movw_lpmx_p, avr_have_mul_p,
17318         avr_asm_only_p): Remove declaration.
17319
17320 2008-05-15  Diego Novillo  <dnovillo@google.com>
17321
17322         * config/arm/arm.c (arm_return_in_memory): Fix return type.
17323         * config/arm/arm-protos.h (arm_return_in_memory): Likewise.
17324
17325 2008-05-15  Adam Nemet  <anemet@caviumnetworks.com>
17326
17327         PR middle-end/36194
17328         * combine.c (check_conversion): Rename back to check_promoted_subreg.
17329         Don't call record_truncated_value from here.
17330         (record_truncated_value): Turn it into a for_each_rtx callback.
17331         (record_truncated_values): New function.
17332         (combine_instructions): Call note_uses with record_truncated_values.
17333         Change name of check_conversion to check_promoted_subreg.
17334
17335 2008-05-15  Janis Johnson  <janis187@us.ibm.com>
17336
17337         * doc/sourcebuild.texi: Document support for torture tests.
17338
17339 2008-05-15  Uros Bizjak  <ubizjak@gmail.com>
17340
17341         * config/i386/sse.md (*vec_concatv2sf_sse4_1): Add "m" constraint
17342         to alternative 4 of operand 2.
17343
17344 2008-05-15  Richard Guenther  <rguenther@suse.de>
17345
17346         * tree-pass.h (current_pass): Declare.
17347         (get_pass_for_id): Likewise.
17348         * passes.c (passes_by_id, passes_by_id_size): New globals.
17349         (set_pass_for_id): New function.
17350         (get_pass_for_id): Likewise.
17351         (register_one_dump_file): Use set_pass_for_id to populate passes_by_id.
17352         (execute_function_todo): Flush per function statistics.
17353         * toplev.c (compile_file): Init statistics.
17354         (general_init): Do early statistics initialization.
17355         (finalize): Finish statistics.
17356         * statistics.h (statistics_early_init): Declare.
17357         (statistics_init): Likewise.
17358         (statistics_fini): Likewise.
17359         (statistics_fini_pass): Likewise.
17360         (statistics_counter_event): Likewise.
17361         (statistics_histogram_event): Likewise.
17362         * statistics.c: New file.
17363         * Makefile.in (OBJS-common): Add statistics.o.
17364         (statistics.o): Add dependencies.
17365         * doc/invoke.texi (-fdump-statistics): Document.
17366
17367         * tree-ssa-pre.c (compute_antic): Use statistics_histogram_event.
17368         (insert): Likewise.
17369         (execute_pre): Use statistics_counter_event.
17370         * tree-ssa-propagate.c (struct prop_stats_d): Add num_dce field.
17371         (substitute_and_fold): Increment it.  Use statistics_counter_event.
17372
17373 2008-05-15  Diego Novillo  <dnovillo@google.com>
17374
17375         http://gcc.gnu.org/ml/gcc-patches/2008-05/msg00893.html
17376
17377         * treestruct.def (TS_STRUCT_FIELD_TAG): Remove.
17378         * tree-ssa-alias.c (new_type_alias): Remove references to
17379         sub-variables from comment.
17380         * tree-ssa-operands.c (swap_tree_operands): Likewise.
17381
17382 2008-05-15  H.J. Lu  <hongjiu.lu@intel.com>
17383
17384         * config/i386/sse.md (*vec_concatv2sf_sse4_1): Set prefix_extra
17385         attribute to 1 only for insertps alternative.
17386
17387 2008-05-15  Bernd Schmidt  <bernd.schmidt@analog.com>
17388
17389         * config/bfin/bfin.md (loadbytes): New pattern.
17390         * config/bfin/bfin.c (enum bfin_builtins): Add BFIN_BUILTIN_LOADBYTES.
17391         (bfin_init_builtins): Initialize it.
17392         (bdesc_1arg): Add it.
17393
17394 2008-05-15  Sa Liu  <saliu@de.ibm.com>
17395
17396         * testsuite/gfortran.dg/c_kind_int128_test1.f03: New.
17397         * testsuite/gfortran.dg/c_kind_int128_test2.f03: New.
17398         * testsuite/lib/target-supports.exp: Add
17399         check_effective_target_fortran_integer_16.
17400
17401 2008-05-15  Bernd Schmidt  <bernd.schmidt@analog.com>
17402
17403         * config/bfin/bfin.h (TARGET_RETURN_IN_MEMORY): Don't define here.
17404         * config/bfin/bfin-protos.h (bfin_return_in_memory): Don't declare.
17405         * config/bfin/bfin.c (bfin_return_in_memory): Now static.  Return bool.
17406         (TARGET_RETURN_IN_MEMORY): Define.
17407
17408 2008-05-15  Richard Guenther  <rguenther@suse.de>
17409
17410         PR middle-end/36244
17411         * tree-ssa-alias.c (new_type_alias): Do not set TREE_READONLY.
17412         * tree-flow-inline.h (unmodifiable_var_p): Memory tags never
17413         represent unmodifiable vars.
17414
17415 2008-05-15  Richard Guenther  <rguenther@suse.de>
17416
17417         * tree-dfa.c (refs_may_alias_p): Allow all kinds of
17418         INDIRECT_REF and TARGET_MEM_REF.
17419         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle
17420         TARGET_MEM_REF.
17421
17422 2008-05-15  Uros Bizjak  <ubizjak@gmail.com>
17423             H.J. Lu  <hongjiu.lu@intel.com>
17424
17425         * config/i386/sse.md (*vec_concatv2sf_sse4_1): New insn pattern.
17426         (*vec_concatv2si_sse4_1): Use vector_move_operand predicate
17427         for operand 2.  Remove pinsr{q,d} with 0x0 immediate operand from
17428         insn alternatives.  Add missing alternatives.
17429         (*vec_concatv2di_rex64_sse4_1): Likewise.
17430         (*vec_concatv2si_sse2): Use "x" register constraint instead of "Y2".
17431         (*vec_concatv2di_rex64_sse): Rename from *vec_concatv2di_rex64.
17432         Require TARGET_SSE.
17433
17434 2008-05-15  Richard Guenther  <rguenther@suse.de>
17435
17436         PR tree-optimization/36009
17437         PR tree-optimization/36204
17438         * tree-ssa-loop-im.c (tree-ssa-propagate.h): Include.
17439         (determine_invariantness_stmt): Record the loop a store is
17440         always executed in.
17441         * Makefile.in (tree-ssa-loop-im.o): Add tree-ssa-propagate.h
17442         dependency.
17443
17444 2008-05-15  Richard Guenther  <rguenther@suse.de>
17445
17446         PR tree-optimization/34330
17447         * tree-ssa-alias.c (get_smt_for): Only assert that accesses
17448         through the pointer will alias the SMT.
17449
17450 2008-05-14  Andreas Tobler  <a.tobler@schweiz.org>
17451
17452         * config/sparc/sparc.h (NO_PROFILE_COUNTERS): Define as 0.
17453
17454 2008-05-14  H.J. Lu  <hongjiu.lu@intel.com>
17455
17456         * config/i386/sse.md (*sse4_1_pinsrq): Make it 64bit only.
17457
17458 2008-05-14  Michael Meissner  <michael.meissner@amd.com>
17459             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
17460
17461         * optabs.h (optab_index): Add OTI_vashl, OTI_vlshr, OTI_vashr,
17462         OTI_vrotl, OTI_vrotr to support vector/vector shifts.
17463         (vashl_optab): New optab for vector/vector shifts.
17464         (vashr_optab): Ditto.
17465         (vlshr_optab): Ditto.
17466         (vrotl_optab): Ditto.
17467         (vrotr_optab): Ditto.
17468         (optab_subtype): New enum for optab_for_tree_code call.
17469         (optab_for_tree_code): Add enum optab_subtype argument.
17470
17471         * optabs.c (optab_for_tree_code): Take an additional argument to
17472         distinguish between a vector shift by a scalar and vector shift by
17473         a vector.  Make lshr/ashr/ashl/rotl/rotr optabs just vector
17474         shifted by a scalar.  Use vlshr/vashr/vashl/vrotl/vrotr for the
17475         vector shift by a vector.
17476         (expand_widen_pattern_expr): Pass additional argument to
17477         optab_for_tree_code.
17478
17479         * genopinit.c (optabs): Add vashr_optab, vashl_optab, vlshr_optab,
17480         vrotl_optab, vrotr_optab.
17481
17482         * expr.c (expand_expr_real_1): Update calls to
17483         optab_for_tree_code to distinguish between vector shifted by a
17484         scalar and vector shifted by a vector.
17485         * tree-vectorizer.c (supportable_widening_operation): Ditto.
17486         (supportable_narrowing_operation): Ditto.
17487         * tree-vect-analyze.c (vect_build_slp_tree): Ditto.
17488         * tree-vect-patterns.c (vect_pattern_recog_1): Ditto.
17489         * tree-vect-transform.c (vect_model_reduction_cost): Ditto.
17490         (vect_create_epilog_for_reduction): Ditto.
17491         (vectorizable_reduction): Ditto.
17492         (vectorizable_operation): Ditto.
17493         (vect_strided_store_supported): Ditto.
17494         (vect_strided_load_supported): Ditto.
17495         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
17496         * expmed.c (expand_shift): Ditto.
17497
17498         * doc/md.texi (ashl@var{m}3): Document that operand 2 is always a
17499         scalar type.
17500         (ashr@var{m}3): Ditto.
17501         (vashl@var{m}3): Document new vector/vector shift standard name.
17502         (vashr@var{m}3): Ditto.
17503         (vlshr@var{m}3): Ditto.
17504         (vrotl@var{m}3): Ditto.
17505         (vrotr@var{m}3): Ditto.
17506
17507         * config/i386/i386.md (PPERM_SRC): Move PPERM masks here from i386.c.
17508         (PPERM_INVERT): Ditto.
17509         (PPERM_REVERSE): Ditto.
17510         (PPERM_REV_INV): Ditto.
17511         (PPERM_ZERO): Ditto.
17512         (PPERM_ONES): Ditto.
17513         (PPERM_SIGN): Ditto.
17514         (PPERM_INV_SIGN): Ditto.
17515         (PPERM_SRC1): Ditto.
17516         (PPERM_SRC2): Ditto.
17517
17518         * config/i386/sse.md (mulv2di3): Add SSE5 support.
17519         (sse5_pmacsdql_mem): New SSE5 define_and_split that temporarily
17520         allows a memory operand to be the value being added, and split it
17521         to improve vectorization.
17522         (sse5_pmacsdqh_mem): Ditto.
17523         (sse5_mulv2div2di3_low): SSE5 32-bit multiply and extend function.
17524         (sse5_mulv2div2di3_high): Ditto.
17525         (vec_pack_trunc_v8hi): Add SSE5 pperm support.
17526         (vec_pack_trunc_v4si): Ditto.
17527         (vec_pack_trunc_v2di): Ditto.
17528         (sse5_pcmov_<mode>): Remove code that tried to use use
17529         andps/andnps instead of pcmov.
17530         (vec_widen_smult_hi_v4si): If we have SSE5, use the pmacsdql and
17531         pmacsdqh instructions.
17532         (vec_widen_smult_lo_v4si): Ditto.
17533
17534         * config/i386/i386.c (PPERM_SRC): Move PPERM masks to i386.md.
17535         (PPERM_INVERT): Ditto.
17536         (PPERM_REVERSE): Ditto.
17537         (PPERM_REV_INV): Ditto.
17538         (PPERM_ZERO): Ditto.
17539         (PPERM_ONES): Ditto.
17540         (PPERM_SIGN): Ditto.
17541         (PPERM_INV_SIGN): Ditto.
17542         (PPERM_SRC1): Ditto.
17543         (PPERM_SRC2): Ditto.
17544         (ix86_expand_sse_movcc): Move the SSE5 test after the if
17545         true/false tests.
17546         (ix86_expand_int_vcond): If SSE5 generate all possible integer
17547         comparisons.
17548         (ix86_sse5_valid_op_p): Allow num_memory to be negative, which
17549         says ignore whether the last reference is a memory operand.
17550
17551 2008-05-14  Michael Meissner  <michael.meissner@amd.com>
17552             Paolo Bonzini <bonzini at gnu dot org>
17553
17554         * config/rs6000/rs6000.c (bdesc_2arg): Change the names of vector
17555         shift patterns.
17556
17557         * config/rs6000/altivec.md (vashl<mode>3): Rename from ashl<mode>3.
17558         (vlshr<mode>3): Rename from vlshr<mode>3.
17559         (vashr<mode>3): Rename from vashr<mode>3.
17560         (mulv4sf3): Change the names of vector shift patterns.
17561         (mulv4si3): Ditto.
17562         (negv4sf2): Ditt.
17563
17564         * config/spu/spu.c (spu_initialize_trampoline): Rename vector
17565         shift insns.
17566
17567         * config/spu/spu-builtins.def (SI_SHLH): Rename vector shift insns.
17568         (SI_SHLHI): Ditto.
17569         (SI_SHL): Ditto.
17570         (SI_SHLI): Ditto.
17571         (SI_ROTH): Ditto.
17572         (SI_ROTHI): Ditto.
17573         (SI_ROT): Ditto.
17574         (SI_ROTI): Ditto.
17575         (SPU_RL_0): Ditto.
17576         (SPU_RL_1): Ditto.
17577         (SPU_RL_2): Ditto.
17578         (SPU_RL_3): Ditto.
17579         (SPU_RL_4): Ditto.
17580         (SPU_RL_5): Ditto.
17581         (SPU_RL_6): Ditto.
17582         (SPU_RL_7): Ditto.
17583         (SPU_SL_0): Ditto.
17584         (SPU_SL_1): Ditto.
17585         (SPU_SL_2): Ditto.
17586         (SPU_SL_3): Ditto.
17587         (SPU_SL_4): Ditto.
17588         (SPU_SL_5): Ditto.
17589         (SPU_SL_6): Ditto.
17590         (SPU_SL_7): Ditto.
17591
17592         * config/spu/spu.md (v): New iterator macro to add v for vector types.
17593         (floatunssidf2_internal): Change vector/vector shift names.
17594         (floatunsdidf2_internal): Ditto.
17595         (mulv8hi3): Ditto.
17596         (ashrdi3): Ditto.
17597         (ashrti3): Ditto.
17598         (cgt_df): Ditto.
17599         (cgt_v2df): Ditto.
17600         (dftsv): Ditto.
17601         (vashl<mode>3): Rename from ashl<mode>3.
17602         (vashr<mode>3): Rename from ashr<mode>3.
17603         (vlshr<mode>3): Rename from lshr<mode>3.
17604         (vrotl<mode>3): Rename from rotl<mode>3.
17605
17606 2008-05-14  Michael Meissner  <michael.meissner@amd.com>
17607
17608         PR target/36224
17609         * config/i386/sse.md (vec_widen_smult_hi_v4si): Delete, using unsigned
17610         multiply gives the wrong value when doing widening multiplies.
17611         (vec_widen_smult_lo_v4si): Ditto.
17612
17613 2008-05-14  Kenneth Zadeck <zadeck@naturalbridge.com>
17614
17615         * optabs.c (prepare_cmp_insn): Changed LCT_PURE_MAKE_BLOCK to
17616         LCT_PURE and LCT_CONST_MAKE_BLOCK to LCT_CONST in calls to
17617         emit_library_call_value.
17618         * builtins.c (expand_builtin_powi, expand_builtin_memcmp): Ditto.
17619         * tree.h (ECF_LIBCALL_BLOCK): Removed.
17620         * calls.c (initialize_argument_information, precompute_arguments,
17621         expand_call, emit_library_call_value_1): Remove ECF_LIBCALL_BLOCK.
17622         (precompute_arguments): Removed flags parameter.
17623         * rtl.h (LCT_CONST_MAKE_BLOCK, LCT_PURE_MAKE_BLOCK): Removed.
17624
17625 2008-05-14  Richard Guenther  <rguenther@suse.de>
17626
17627         * tree-ssa-dse.c (dse_possible_dead_store_p): Remove dead code.
17628         Make sure to register the store if the use is a PHI_NODE.
17629
17630 2008-05-14  Olivier Hainque  <hainque@adacore.com>
17631
17632         * expr.c (expand_expr_real_1) <normal_inner_ref>: Force op0 to
17633         memory if the component is to be referenced in BLKmode according
17634         to get_inner_reference.
17635
17636 2008-05-14  Adam Nemet  <anemet@caviumnetworks.com>
17637
17638         * calls.c (emit_library_call_value_1): Restore code clearing
17639         ECF_LIBCALL_BLOCK to ensure that we only call end_sequence once.
17640
17641 2008-05-14  Olivier Hainque  <hainque@adacore.com>
17642             Nicolas Roche  <roche@adacore.com>
17643
17644         * configure.ac: Add support for a "gcc_subdir" variable in
17645         config-lang.in, to denote a subdirectory where the language/GCC
17646         integration files are to be found.
17647         * configure: Regenerate.
17648
17649 2008-05-14  Ira Rosen  <irar@il.ibm.com>
17650
17651         PR tree-optimization/36098
17652         * tree-vect-analyze.c (vect_analyze_group_access): Set the gap
17653         value for the first load in the group in case of a gap.
17654         (vect_build_slp_tree): Check that there are no gaps in loads.
17655
17656 2008-05-14  Kenneth Zadeck <zadeck@naturalbridge.com>
17657
17658         * doc/rtl.texi: Removed reference to REG_NO_CONFLICT notes.
17659         * optabs.c (expand_binop, expand_absneg_bit, expand_unop,
17660         expand_copysign_bit, ): Change call to emit_no_conflict_block to
17661         emit_insn and remove unneeded code to construct extra args.
17662         (emit_no_conflict_block): Removed.
17663         * optabls.h: (emit_no_conflict_block): Removed.
17664         * cse.c (cse_extended_basic_block): Remove search for
17665         REG_NO_CONFLICT note.
17666         * global.c: Removed incorrect comment added in revision 117.
17667         * expr.c (convert_move): Change call to emit_no_conflict_block to
17668         emit_insn.
17669         * recog.c: Change comments so that they do not mention
17670         REG_NO_CONFLICT.
17671         * local_alloc.c (combine_regs): Removed last parameter.
17672         (no_conflict_p): Removed.
17673         (block_alloc): Removed note, no_conflict_combined_regno and set
17674         local vars. Removed all code to process REG_NO_CONFLICT blocks.
17675         (combine_regs): Removed already_dead and code to look for
17676         REG_NO_CONFLICT notes.
17677         * lower_subreg (remove_retval_note): Removed code to look for
17678         REG_NO_CONFLICT block.
17679         (resolve_reg_notes): Removed REG_NO_CONFLICT case.
17680         (resolve_clobber): Remove code to process libcalls that have
17681         REG_NO_CONFLICT notes.
17682         * loop_invariant.c (find_invariant_insn): Removed REG_NO_CONFLICT
17683         case.
17684         * combine.c (can_combine_p, distribute_notes):  Removed
17685         REG_NO_CONFLICT case.
17686         * config/cris/cris.md (movdi pattern): Changed emit_no_conflict_block
17687         to emit_insns.
17688         * config/mn10300/mn10300.md (absdf2, negdf2 patterns): Ditto.
17689         * config/m68k/m68k.md (negdf2, negxf2, absdf2, absxf2 patterns):
17690         Ditto.
17691         * reg-notes.def (NO_CONFLICT): Removed.
17692
17693 2008-05-14  David S. Miller  <davem@davemloft.net>
17694
17695         * config/sparc/sparc.c (sparc_profile_hook): If
17696         NO_PROFILE_COUNTERS, don't generate and pass a label into mcount.
17697         * config/sparc/linux.h (NO_PROFILE_COUNTERS): Define as 1.
17698         * config/sparc/linux64.h (NO_PROFILE_COUNTERS): Likewise.
17699
17700 2008-05-14  Andreas Krebbel  <krebbel1@de.ibm.com>
17701
17702         * cse.c (cse_cc_succs): Invoke delete_insn_and_edges.
17703
17704 2008-05-13  Uros Bizjak  <ubizjak@gmail.com>
17705
17706         PR target/36222
17707         * config/i386/i386.c (ix86_expand_vector_init_general): Rearrange op0
17708         and op1 expansion before vector concat to have less live pseudos.
17709
17710 2008-05-13  H.J. Lu  <hongjiu.lu@intel.com>
17711
17712         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Use
17713         ix86_expand_vector_set if supported.
17714
17715 2008-05-13  Diego Novillo  <dnovillo@google.com>
17716             Kenneth Zadeck  <zadeck@naturalbridge.com>
17717
17718         http://gcc.gnu.org/ml/gcc-patches/2008-05/msg00748.html
17719
17720         * tree.h (init_phinodes, fini_phinodes, release_phi_node,
17721         phinodes_print_statistics, init_ssanames, fini_ssanames,
17722         make_ssa_name, duplicate_ssa_name, duplicate_ssa_name_ptr_info,
17723         release_ssa_name, release_defs, replace_ssa_name_symbol,
17724         ssanames_print_statistics): Move ...
17725         * tree-flow.h: ... here.
17726         * tree-ssanames.c (init_ssanames): Add arguments FN and SIZE.
17727         Use FN instead of cfun.
17728         (make_ssa_name_fn): Rename from make_ssa_name.
17729         (pass_release_ssa_names): Add TODO_dump_func to finish flags.
17730         * tree-flow-inline.h (make_ssa_name): Move from
17731         tree-ssanames.c.  Convert to static inline.  Call make_ssa_name_fn.
17732         * omp-low.c (expand_omp_parallel):
17733         * tree-flow-inline.h (redirect_edge_var_map_result):
17734         * tree-ssa.c (init_tree_ssa): Add argument FN.
17735         Use it instead of cfun.  Update all users.
17736
17737 2008-05-13  Tom Tromey  <tromey@redhat.com>
17738
17739         PR preprocessor/22168:
17740         * doc/cpp.texi (Top): Update menu.
17741         (Alternatives to Wrapper #ifndef): New node.
17742         (Other Directives): Document deprecation.
17743         (Obsolete Features): Remove menu.
17744         (Assertions): Merge node into Obsolete Features.
17745         (Obsolete once-only headers): Move earlier; rename to Alternatives
17746         to Wrapper #ifndef.
17747         * doc/cppopts.texi: Update.
17748         * c.opt (Wdeprecated): Enable for C and ObjC.
17749         * doc/invoke.texi (Option Summary): Move -Wno-deprecated.
17750         (C++ Dialect Options): Move -Wno-deprecated from here to...
17751         (Warning Options): ... here.
17752
17753 2008-05-13  Richard Guenther  <rguenther@suse.de>
17754
17755         PR middle-end/36227
17756         * fold-const.c (fold_sign_changed_comparison): Do not allow
17757         changes in pointer-ness.
17758
17759 2008-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
17760
17761         PR target/24713
17762         * config/sh/sh.c (sh_expand_prologue): Don't clear
17763         RTX_FRAME_RELATED_P for push insns.
17764
17765 2008-05-12  Andy Hutchinson  <hutchinsonandy@aim.com>
17766
17767         * config/avr/avr.h (MAX_OFILE_ALIGNMENT): Define.
17768
17769 2008-05-12  Anatoly Sokolov <aesok@post.ru>
17770
17771         * config/avr/avr.h (machine_function): Add 'is_leaf' field.
17772         * config/avr/avr.c (avr_regs_to_save): Compute 'machine->is_leaf'.
17773         Use 'machine->is_leaf' instead of 'leaf_func_p'.
17774
17775 2008-05-12  H.J. Lu  <hongjiu.lu@intel.com>
17776
17777         * config/i386/sse.md (*sse_concatv4sf): Renamed to ...
17778         (*vec_concatv4sf_sse): This.
17779         (*sse2_concatv2si): Renamed to ...
17780         (*vec_concatv2si_sse2): This.
17781         (*sse1_concatv2si): Renamed to ...
17782         (*vec_concatv2si_sse): This.
17783         (*vec_concatv2di_rex): Renamed to ...
17784         (*vec_concatv2di_rex64): This.
17785         (*vec_concatv2si_sse4_1): New.
17786         (*vec_concatv2di_rex64_sse4_1): Likewise.
17787
17788 2008-05-12  Uros Bizjak  <ubizjak@gmail.com>
17789
17790         PR rtl-optimization/36111
17791         * recog.c (validate_replace_rtx_1): Unshare new RTL expression
17792         that was created for swappable operands.
17793
17794 2008-05-12  Samuel Tardieu  <sam@rfc1149.net>
17795
17796         PR ada/36001
17797         * Makefile.in: Substitute GNATMAKE and GNATBIND.
17798         * configure.ac: Add call to ACX_PROG_GNAT.
17799
17800 2008-05-11  Volker Reichelt  <v.reichelt@netcologne.de>
17801
17802         * optc-gen.awk: Fix comment typo.
17803
17804 2008-05-11  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
17805
17806         * pretty-print.c (pp_integer_with_precision): Use
17807         HOST_LONG_LONG_FORMAT.
17808
17809 2008-05-10  Kenneth Zadeck  <zadeck@naturalbridge.com>
17810
17811         * gcse.c (store_killed_in_insn): Negated call to RTL_CONST_CALL_P.
17812
17813 2008-05-10  H.J. Lu  <hongjiu.lu@intel.com>
17814
17815         * config/i386/i386.c (bdesc_ptest): Removed.
17816         (ix86_builtin_type): Add INT_FTYPE_V2DI_V2DI_PTEST.
17817         (bdesc_args): Add __builtin_ia32_ptestz128,
17818         __builtin_ia32_ptestc128 and __builtin_ia32_ptestnzc128.
17819         (ix86_init_mmx_sse_builtins): Updated.
17820         (ix86_expand_args_builtin): Handle INT_FTYPE_V2DI_V2DI_PTEST.
17821         (ix86_expand_builtin): Updated.
17822
17823 2008-05-10  Richard Sandiford  <rdsandiford@googlemail.com>
17824
17825         * tree-cfg.c (valid_fixed_convert_types_p): New function.
17826         (verify_gimple_expr): Handle FIXED_CONVERT_EXPR.
17827
17828 2008-05-10  Uros Bizjak  <ubizjak@gmail.com>
17829
17830         * value-prof.c (interesting_stringop_to_profile): Do not
17831         return early for BUILT_IN_MEMPCPY.
17832
17833 2008-05-09  H.J. Lu  <hongjiu.lu@intel.com>
17834
17835         * calls.c (expand_call): Don't use callgraph to increase
17836         preferred_stack_boundary.
17837
17838         * cgraph.h (cgraph_rtl_info): Use unsigned on
17839         preferred_incoming_stack_boundary.
17840
17841         * final.c (rest_of_clean_state): Use unsigned on
17842         preferred_stack_boundary.
17843
17844 2008-05-09  Tom Tromey  <tromey@redhat.com>
17845
17846         PR preprocessor/22231:
17847         * c-opts.c (sanitize_cpp_opts): Disallow -MG if compilation is
17848         proceeding.
17849
17850 2008-05-09  Uros Bizjak  <ubizjak@gmail.com>
17851
17852         PR tree-optimization/36129
17853         * tree-ssa-ccp.c: Include value-prof.h.
17854         (execute_fold_all_builtins): Call gimple_remove_stmt_histograms if
17855         built-in function was folded to a constant.
17856         * Makefile.in (tree-ssa-ccp.c): Depend on value-prof.h
17857
17858 2008-05-09  Jan Sjodin  <jan.sjodin@amd.com>
17859             Sebastian Pop  <sebastian.pop@amd.com>
17860
17861         * tree-scalar-evolution.c: Document instantiate_scev.
17862         (instantiate_parameters_1): Renamed instantiate_scev_1.
17863         Don't use the same loop for instantiation_loop and evolution_loop.
17864         (instantiate_scev): New.
17865         (instantiate_parameters): Moved...
17866         (resolve_mixers): Update call to instantiate_scev_1 to pass the
17867         same loop twice.  Maintains the semantics for this function.
17868         * tree-scalar-evolution.h (instantiate_scev): Declare.
17869         (instantiate_parameters): ...here.  Now static inline.
17870         * tree-data-ref.c (dr_analyze_indices): Call instantiate_scev
17871         instead of resolve_mixers.
17872
17873 2008-05-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
17874
17875         * rtl-factoring.c (collect_pattern_seqs): Fix typo.
17876
17877 2008-05-09  Tomas Bily  <tbily@suse.cz>
17878
17879         * config/pa/pa.c (reloc_needed): Use CASE_CONVERT.
17880         * tree-cfg.c (verify_expr, verify_gimple_expr): Likewise.
17881         * tree-ssa-structalias.c (get_constraint_for): Likewise.
17882         * c-common.c (c_common_truthvalue_conversion): Likewise.
17883         * tree-object-size.c (compute_object_offset): Likewise.
17884         * tree-inline.c (estimate_num_insns_1): Likewise.
17885         * varasm.c (const_hash_1, compare_constant, copy_constant)
17886         (compute_reloc_for_constant, output_addressed_constants)
17887         (initializer_constant_valid_p): Likewise.
17888         * c-omp.c (check_omp_for_incr_expr): Likewise.
17889         * gimplify.c (gimplify_expr): Likewise.
17890         * c-typeck.c (c_finish_return): Likewise.
17891         * tree-vectorizer.c (supportable_widening_operation)
17892         (supportable_narrowing_operation): Likewise.
17893         * c-pretty-print.c (pp_c_cast_expression, pp_c_expression): Likewise.
17894         * matrix-reorg.c (can_calculate_expr_before_stmt): Likewise.
17895         * expr.c (highest_pow2_factor, expand_expr_real_1): Likewise.
17896         * dwarf2out.c (loc_descriptor_from_tree_1, add_bound_info)
17897         (descr_info_loc): Likewise.
17898         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Likewise.
17899         * fold-const.c (operand_equal_p, make_range, extract_muldiv_1)
17900         (fold_unary): Likewise.
17901         * builtins.c (get_pointer_alignment): Likewise.
17902         * tree-scalar-evolution.c (interpret_rhs_modify_stmt)
17903         (instantiate_parameters_1): Likewise.
17904         * tree.c (expr_align, stabilize_reference): Likewise.
17905         * tree-pretty-print.c (dump_generic_node, op_prio): Likewise.
17906         * tree-ssa-loop-niter.c (derive_constant_upper_bound): Likewise.
17907         * convert.c (strip_float_extensions): Use CONVERT_EXPR_P.
17908         * tree-ssa-threadedge.c (simplify_control_stmt_condition): Likewise.
17909         * config/alpha/alpha.c (va_list_skip_additions): Likewise.
17910         * c-common.c (c_alignof_expr, check_function_arguments_recurse):
17911         Likewise.
17912         * tree-ssa.c (tree_ssa_useless_type_conversion): Likewise.
17913         * varasm.c (initializer_constant_valid_p, output_constant): Likewise.
17914         * tree-ssa-forwprop.c (get_prop_source_stmt, can_propagate_from)
17915         (forward_propagate_addr_expr_1, forward_propagate_addr_expr)
17916         (forward_propagate_comparison)
17917         (tree_ssa_forward_propagate_single_use_vars): Likewise.
17918         * cfgexpand.c (discover_nonconstant_array_refs_r): Likewise.
17919         * emit-rtl.c (component_ref_for_mem_expr)
17920         (set_mem_attributes_minus_bitpos): Likewise.
17921         * tree-ssa-phiopt.c (conditional_replacement): Likewise.
17922         * gimplify.c (gimplify_conversion, goa_lhs_expr_p, gimplify_expr):
17923         Likewise.
17924         * c-typeck.c (default_function_array_conversion, build_indirect_ref)
17925         (build_function_call, pointer_diff, build_compound_expr)
17926         (c_finish_return): Likewise.
17927         * tree-vect-analyze.c (vect_determine_vectorization_factor): Likewise.
17928         * matrix-reorg.c (get_inner_of_cast_expr, may_flatten_matrices_1):
17929         Likewise.
17930         * tree-ssa-ifcombine.c (recognize_single_bit_test): Likewise.
17931         * expr.c (is_aligning_offset): Likewise.
17932         * tree-ssa-alias.c (is_escape_site): Likewise.
17933         * tree-stdarg.c (va_list_counter_bump, check_va_list_escapes)
17934         (check_all_va_list_escapes): Likewise.
17935         * tree-ssa-loop-ivopts.c (determine_base_object)
17936         (determine_common_wider_type): Likewise.
17937         * dojump.c (do_jump): Likewise.
17938         * tree-ssa-sccvn.c (simplify_unary_expression): Likewise.
17939         * tree-gimple.c (is_gimple_cast): Likewise.
17940         * fold-const.c (decode_field_reference, )
17941         (fold_sign_changed_comparison, fold_unary, fold_comparison)
17942         (fold_binary): Likewise.
17943         * tree-ssa-alias-warnings.c (find_alias_site_helper)
17944         (already_warned_in_frontend_p): Likewise.
17945         * builtins.c (get_memory_rtx, fold_builtin_next_arg): Likewise.
17946         * tree.c (really_constant_p, get_unwidened): Likewise.
17947         * tree-ssa-loop-niter.c (expand_simple_operations): Likewise.
17948         * tree-ssa-loop-im.c (rewrite_bittest): Likewise.
17949         * tree-vrp.c (register_edge_assert_for_2, register_edge_assert_for_1):
17950         Likewise.
17951         * tree.h (STRIP_NOPS, STRIP_SIGN_NOPS, STRIP_TYPE_NOPS): Use
17952         CONVERT_EXPR_P.
17953         (CONVERT_EXPR_P): Define.
17954         (CASE_CONVERT): Define.
17955
17956 2008-05-08  Kenneth Zadeck  <zadeck@naturalbridge.com>
17957
17958         PR middle-end/36117
17959         * dce.c (deletable_insn_p): Do not delete calls if df_in_progress.
17960         (delete_unmarked_insns): When deleting a call, call
17961         delete_unreachable_blocks.
17962         * rtl.texi (RTL_CONST_CALL_P, RTL_PURE_CALL_P,
17963         RTL_CONST_OR_PURE_CALL_P, RTL_LOOPING_CONST_OR_PURE_CALL_P): Fixed doc.
17964
17965 2008-05-08  Richard Guenther  <rguenther@suse.de>
17966
17967         * doc/invoke.texi (-fdump-tree-salias): Remove documentation.
17968         (-ftree-salias): Likewise.
17969         (salias-max-implicit-fields): Remove param documentation.
17970         (salias-max-array-elements): Likewise.
17971         * tree-pass.h (pass_create_structure_vars): Remove.
17972         * params.h (SALIAS_MAX_IMPLICIT_FIELDS): Remove.
17973         (SALIAS_MAX_ARRAY_ELEMENTS): Likewise.
17974         * tree-ssa-alias.c (create_structure_vars): Remove.
17975         (gate_structure_vars): Likewise.
17976         (pass_create_structure_vars): Likewise.
17977         (gate_build_alias): Likewise.
17978         (pass_build_alias): Adjust to run always and dump the function.
17979         * common.opt (ftree-salias): Hide.
17980         * passes.c (init_optimization_passes): Remove
17981         pass_create_structure_vars, adjust comment.
17982         * params.def (PARAM_SALIAS_MAX_IMPLICIT_FIELDS): Remove.
17983         (PARAM_SALIAS_MAX_ARRAY_ELEMENTS): Likewise.
17984         * opts.c (decode_options): Do not set flag_tree_salias.
17985         (common_handle_option): Add OPT_ftree_salias to the backward
17986         compatibility section.
17987
17988 2008-05-08  Richard Guenther  <rguenther@suse.de>
17989
17990         * tree-flow-inline.h (var_can_have_subvars): Move ...
17991         * tree-ssa-structalias.c (var_can_have_subvars): ... here.
17992         * tree-flow.h (var_can_have_subvars): Remove.
17993         (push_fields_onto_fieldstack): Remove.
17994         (sort_fieldstack): Likewise.
17995         (struct fieldoff): Move ...
17996         * tree-ssa-structalias.c (struct fieldoff): ... here.  Remove
17997         alias_set and base_for_components fields.
17998         (sort_fieldstack): Make static.
17999         (push_fields_onto_fieldstack): Likewise.  Remove code that
18000         handles anything but RECORD_TYPEs.  Remove alias_set and
18001         base_for_components handling.
18002         (create_variable_info_for): Adjust.
18003
18004 2008-05-08  Seongbae Park  <seongbae.park@gmail.com>
18005
18006         * common.opt (Wframe-larger-than=): Shorten the help message
18007         to one line.
18008         * doc/invoke.texi (Wframe-larger-than=): Add more description.
18009
18010 2008-05-08  Rafael Espíndola  <espindola@google.com>
18011
18012         * tree-complex.c (expand_complex_div_wide): Don't create CONDs that
18013         trap.
18014         * tree-gimple.c (is_gimple_condexpr): Check that the expression doesn't
18015         trap and that both operands are gimple values.
18016         (canonicalize_cond_expr_cond): Use is_gimple_condexpr.
18017         * gcc/tree-eh.c (tree_could_trap_p): Correctly detect if a comparison
18018         is a fp operation.
18019
18020 2008-05-08  Richard Sandiford  <rsandifo@nildram.co.uk>
18021
18022         * read-rtl.c (join_c_conditions): Return the first string if the
18023         two strings are equal.
18024
18025 2008-05-08  Richard Sandiford  <rsandifo@nildram.co.uk>
18026
18027         * gensupport.h (pred_data): Add a "num_codes" field.
18028         (add_predicate_code): Declare.
18029         * gensupport.c (add_predicate_code): New function.
18030         (std_pred_table): Add an "allows_const_p" field.
18031         (std_preds): Set this field for predicates that allow RTX_CONST_OBJs.
18032         Remove the (incomplete) list of such codes from the codes field.
18033         (init_predicate_table): Use add_predicate_code.  Add all
18034         RTX_CONST_OBJs if allows_const_p is true.
18035         * genrecog.c (process_define_predicate): Use add_predicate_code.
18036
18037 2008-05-08  David Daney  <ddaney@avtrex.com>
18038             Richard Sandiford  <rsandifo@nildram.co.uk>
18039
18040         * config/mips/mips.md (mips_expand_compare_and_swap_12): Handle
18041         special case of constant zero operands.
18042         * config/mips/mips.c (mips_expand_compare_and_swap_12): Zero extend
18043         old and new values.  Special case constant zero values.
18044         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP): Skip 'sync' if compare
18045         fails.
18046         (MIPS_COMPARE_AND_SWAP_12): Handle constant zero operands.
18047         (MIPS_COMPARE_AND_SWAP_12_0): New macro.
18048
18049 2008-05-08  Paolo Bonzini  <bonzini@gnu.org>
18050
18051         PR target/36090
18052         * simplify-rtx.c (simplify_plus_minus): Create CONST of
18053         similar RTX_CONST_OBJ before CONST_INT.
18054
18055 2008-05-08  Steve Ellcey  <sje@cup.hp.com>
18056
18057         * stmt.c (expand_stack_restore): Change sa mode if needed.
18058
18059 2008-05-08  Richard Guenther  <rguenther@suse.de>
18060
18061         * config/i386/i386-protos.h (ix86_return_in_memory): Adjust
18062         return type to bool.
18063         (ix86_sol10_return_in_memory): Likewise.
18064         (ix86_i386elf_return_in_memory): Likewise.
18065         (ix86_i386interix_return_in_memory): Likewise.
18066         * config/i386/i386.c (ix86_return_in_memory): Likewise.
18067         (ix86_sol10_return_in_memory): Likewise.
18068         (ix86_i386elf_return_in_memory): Likewise.
18069         (ix86_i386interix_return_in_memory): Likewise.
18070
18071 2008-05-08  Kai Tietz  <kai.tietz@onevision.com>
18072
18073         PR bootstrap/36180
18074         * calls.c (compute_argument_block_size ): Add ATTRIBUTE_UNUSED to
18075         fndecl argument.
18076         (emit_library_call_value_1): Add ATTRIBUTE_UNUSED to variable fndecl.
18077         * target-def.h: Check that TARGET_RETURN_IN_MEMORY isn't
18078         declared in front.
18079
18080 2008-05-08  Richard Guenther  <rguenther@suse.de>
18081
18082         * tree-data-ref.c (dr_analyze_alias): Do not set DR_SUBVARS.
18083         * tree-data-ref.h (struct dr_alias): Remove subvars field.
18084         (DR_SUBVARS): Remove.
18085         * tree-dfa.c (dump_subvars_for): Remove.
18086         (debug_subvars_for): Likewise.
18087         (dump_variable): Do not dump subvars.
18088         (remove_referenced_var): Do not remove subvars.
18089         * tree-flow-inline.h (clear_call_clobbered): SFTs no longer exist.
18090         (lookup_subvars_for_var): Remove.
18091         (get_subvars_for_var): Likewise.
18092         (get_subvars_at): Likewise.
18093         (get_first_overlapping_subvar): Likewise.
18094         (overlap_subvar): Likewise.
18095         * tree-flow.h (subvar_t): Remove.
18096         (struct var_ann_d): Remove subvars field.
18097         * tree-ssa-alias.c (mark_aliases_call_clobbered): Remove queued
18098         argument.  Remove special handling of SFTs.
18099         (compute_tag_properties): Likewise.
18100         (set_initial_properties): Likewise.
18101         (compute_call_clobbered): Likewise.
18102         (count_mem_refs): Likewise.
18103         (compute_memory_partitions): Likewise.
18104         (compute_flow_insensitive_aliasing): Likewise.
18105         (setup_pointers_and_addressables): Likewise.
18106         (new_type_alias): Likewise.
18107         (struct used_part): Remove.
18108         (used_portions): Likewise.
18109         (struct used_part_map): Likewise.
18110         (used_part_map_eq): Likewise.
18111         (used_part_map_hash): Likewise.
18112         (free_used_part_map): Likewise.
18113         (up_lookup): Likewise.
18114         (up_insert): Likewise.
18115         (get_or_create_used_part_for): Likewise.
18116         (create_sft): Likewise.
18117         (create_overlap_variables_for): Likewise.
18118         (find_used_portions): Likewise.
18119         (create_structure_vars): Likewise.
18120         * tree.def (STRUCT_FIELD_TAG): Remove.
18121         * tree.h (MTAG_P): Adjust.
18122         (struct tree_memory_tag): Remove base_for_components and
18123         unpartitionable flags.
18124         (struct tree_struct_field_tag): Remove.
18125         (SFT_PARENT_VAR): Likewise.
18126         (SFT_OFFSET): Likewise.
18127         (SFT_SIZE): Likewise.
18128         (SFT_NONADDRESSABLE_P): Likewise.
18129         (SFT_ALIAS_SET): Likewise.
18130         (SFT_UNPARTITIONABLE_P): Likewise.
18131         (SFT_BASE_FOR_COMPONENTS_P): Likewise.
18132         (union tree_node): Remove sft field.
18133         * alias.c (get_alias_set): Remove special handling of SFTs.
18134         * print-tree.c (print_node): Remove handling of SFTs.
18135         * tree-dump.c (dequeue_and_dump): Likewise.
18136         * tree-into-ssa.c (mark_sym_for_renaming): Likewise.
18137         * tree-nrv.c (dest_safe_for_nrv_p): Remove special handling of SFTs.
18138         * tree-predcom.c (set_alias_info): Do not set subvars.
18139         * tree-pretty-print.c (dump_generic_node): Do not handle SFTs.
18140         * tree-ssa-loop-ivopts.c (get_ref_tag): Likewise.
18141         * tree-ssa-operands.c (access_can_touch_variable): Likewise.
18142         (add_vars_for_offset): Remove.
18143         (add_virtual_operand): Remove special handling of SFTs.
18144         (add_call_clobber_ops): Likewise.
18145         (add_call_read_ops): Likewise.
18146         (get_asm_expr_operands): Likewise.
18147         (get_modify_stmt_operands): Likewise.
18148         (get_expr_operands): Likewise.
18149         (add_to_addressable_set): Likewise.
18150         * tree-ssa.c (verify_ssa_name): Do not handle SFTs.
18151         * tree-tailcall.c (suitable_for_tail_opt_p): Likewise.
18152         * tree-vect-transform.c (vect_create_data_ref_ptr): Do not set subvars.
18153         * tree.c (init_ttree): Remove STRUCT_FIELD_TAG initialization.
18154         (tree_code_size): Remove STRUCT_FIELD_TAG handling.
18155         (tree_node_structure): Likewise.
18156         * tree-ssa-structalias.c (set_uids_in_ptset): Remove special
18157         handling of SFTs.
18158         (find_what_p_points_to): Likewise.
18159
18160 2008-05-08  Sa Liu  <saliu@de.ibm.com>
18161
18162         * config/spu/spu.md: Fixed subti3 pattern.
18163
18164 2008-05-08  Richard Guenther  <rguenther@suse.de>
18165
18166         PR middle-end/36154
18167         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Make
18168         sure to create a representative for trailing arrays for PTA.
18169
18170 2008-05-08  Richard Guenther  <rguenther@suse.de>
18171
18172         PR middle-end/36172
18173         * fold-const.c (operand_equal_p): Two objects which types
18174         differ in pointerness are not equal.
18175
18176 2008-05-08  Kai Tietz  <kai.tietz@onevision.com>
18177
18178         * calls.c (compute_argument_block_size): Add argument tree fndecl.
18179         (OUTGOING_REG_PARM_STACK_SPACE): Add function type argument.
18180         (emit_library_call_value_1): Add new variable fndecl initialized by
18181         NULL_TREE. It should be the decl type of orgfun, but this information
18182         seems not to be available here, so it uses the default calling abi.
18183         * config/arm/arm.c (arm_return_in_memory): Add fntype argumen.
18184         * config/arm/arm.h (RETURN_IN_MEMORY): Replace RETURN_IN_MEMORY
18185         by TARGET_RETURN_IN_MEMORY.
18186         * config/i386/i386-interix.h: Likewise.
18187         * config/i386/i386.h: Likewise.
18188         * config/i386/i386elf.h: Likewise.
18189         * config/i386/ptx4-i.h: Likewise.
18190         * config/i386/sol2-10.h: Likewise.
18191         * config/i386/sysv4.h: Likewise.
18192         * config/i386/vx-common.h: Likewise.
18193         * config/cris/cris.h: Removed #if 0 clause.
18194         * config/arm/arm-protos.h (arm_return_in_memory): Add fntype argument.
18195         * config/i386/i386-protos.h (ix86_return_in_memory): Add fntype
18196         argument.
18197         (ix86_sol10_return_in_memory): Likewise.
18198         (ix86_i386elf_return_in_memory): New.
18199         (ix86_i386interix_return_in_memory): New.
18200         * config/mt/mt-protos.h (mt_return_in_memory): New.
18201         * config/mt/mt.c: Likewise.
18202         * config/mt/mt.h (OUTGOING_REG_PARM_STACK_SPACE): Add FNTYPE argument.
18203         (RETURN_IN_MEMORY):  Replace by TARGET_RETURN_IN_MEMORY.
18204         * config/bfin/bfin.h: Likewise.
18205         * config/bfin/bfin-protos.h (bfin_return_in_memory): Add fntype
18206         argument.
18207         * config/bfin/bfin.c: Likewise.
18208         * config/pa/pa.h (OUTGOING_REG_PARM_STACK_SPACE): Add FNTYPE argument.
18209         * config/alpha/unicosmk.h: Likewise.
18210         * config/i386/cygming.h: Likewise.
18211         * config/iq2000/iq2000.h: Likewise.
18212         * config/mips/mips.h: Likewise.
18213         * config/mn10300/mn10300.h: Likewise.
18214         * config/rs6000/rs6000.h: Likewise.
18215         * config/score/score.h: Likewise.
18216         * config/spu/spu.h: Likewise.
18217         * config/v850/v850.h: Likewise.
18218         * defaults.h: Likewise.
18219         * doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Adjust documentation.
18220         * expr.c (emit_block_move): Adjust use of
18221         OUTGOING_REG_PARM_STACK_SPACE.
18222         * function.c (STACK_DYNAMIC_OFFSET): Adjust use of
18223         OUTGOING_REG_PARM_STACK_SPACE.
18224         * targhooks.c (default_return_in_memory): Remove RETURN_IN_MEMORY.
18225
18226 2008-05-08  Jakub Jelinek  <jakub@redhat.com>
18227
18228         * tree-parloops.c (create_parallel_loop): Set OMP_RETURN_NOWAIT
18229         on OMP_RETURN for OMP_FOR.
18230
18231         PR debug/35896
18232         * dwarf2out.c (dw_expand_expr, common_check): Removed.
18233         (fortran_common): New function.
18234         (gen_variable_die): Call fortran_common instead of common_check,
18235         adjust for it returning tree instead of rtx.  Formatting.
18236
18237 2008-05-07  Kenneth Zadeck  <zadeck@naturalbridge.com>
18238
18239         PR rtl/7335
18240         PR rtl/33826
18241         * see.c (see_copy_insn): Copy new pure const attributes for new call.
18242         * c-decl.c (merge_decls): Ditto.
18243         * postreload.c (record_opr_changes): Change CONST_OR_PURE_CALL_P
18244         to RTL_CONST_OR_PURE_CALL_P.
18245         * tree.c (define_local_buitin): Rename DECL_IS_PURE to DECL_PURE_P.
18246         Initialized DECL_LOOPING_CONST_PURE.
18247         (process_call_operands): Set tree_side_effects properly.
18248         * tree.h (TREE_READONLY_DECL_P): Removed.
18249         (DECL_IS_PURE): Renamed to DECL_PURE_P.
18250         (DECL_LOOPING_OR_CONST_P): New macro.
18251         (struct tree_function_decl): Added looping_const_or_pure_p.
18252         (ECF_*) Renumbered.
18253         (ECF_LOOPING_OR_CONST_P): New macro.
18254         * rtlanal.c (pure_const_p): Removed.
18255         * builtins.c (expand_builtin): Rename DECL_IS_PURE to DECL_PURE_P.
18256         * reorg.c (delete_prior_computation) Changed CONST_OR_PURE_CALL_P
18257         to RTL_CONST_CALL_P.
18258         * ipa-pure-const.c (pure_const_state_e): Added looping field.
18259         (check_decl, check_tree, check_call, scan_function): Initialize
18260         looping.
18261         (analyze_function): Rename DECL_IS_PURE to DECL_PURE_P.
18262         (static_execute): Set looping true for recursive functions.
18263         Undo setting state to IPA_NEITHER for recursive functions.
18264         * cse.c (cse_insn):
18265         * ifcvt.c (noce_can_store_speculate_p): Changed
18266         CONST_OR_PURE_CALL_P and pure_call_p to RTL_CONST_CALL_P or
18267         RTL_CONST_OR_PURE_CALL_P.
18268         * dse.c (scan_insn): Ditto.
18269         * local-alloc.c (validate_equiv_mem, memref_used_between_p): Ditto.
18270         * gcse.c (oprs_not_seen_p) Changed CONST_OR_PURE_CALL_P to
18271         RTL_CONST_OR_PURE_CALL_P.
18272         (store_killed_in_insn): Changed CONST_OR_PURE_CALL_P and
18273         pure_call_p to RTL_CONST_CALL_P.
18274         * gimplify.c (gimplify_call_expr): Clear side effects for
18275         non-looping pure and constant calls.
18276         * calls.c (emit_call_1): Set rtl flags from ecf flags.
18277         (flags_from_decl_or_type): Set ecf flags from decl flags.
18278         (initialize_argument_information): Turn off
18279         ECF_LOOPING_CONST_OR_PURE when turning off ECF_CONST.
18280         Change const to pure if callee_copies is true rather than just
18281         turning off const.
18282         (expand_call): Turn off ECF_LOOPING_PURE_CONST_CALL and remove old
18283         way of marking pure calls.
18284         (emit_library_call_value_1): Turn off ECF_LOOPING_PURE_CONST_CALL.
18285         Remove hack that was supposed to fix pr7335 and remove old
18286         way of marking pure calls.
18287         * emit-rtl.c (emit_copy_of_insn_after): Copy RTL_CONST_CALL_P,
18288         RTL_PURE_CALL_P, RTL_LOOPING_CONST_OR_PURE_CALL_P.
18289         * cselib.c (cselib_process_insn): Changed CONST_OR_PURE_CALL_P to
18290         RTL_CONST_OR_PURE_CALL_P.
18291         * tree-ssa-pre.c (can_value_number_call): Fixed spacing.
18292         * loop-invariant.c (find_exits, find_invariant_bb): Changed
18293         CONST_OR_PURE_CALL_P to RTL_CONST_OR_PURE_CALL_P.
18294         * sched-deps.c (schedule_analyze): Ditto.
18295         * rtl.h (struct rtx_def): Use call field, unchanging field, and
18296         return_val field of calls to represent pure and const function info.
18297         (CONST_OR_PURE_CALL_P): Deleted macro.
18298         (RTL_CONST_CALL_P, RTL_PURE_CALL_P,
18299         RTL_LOOPING_CONST_OR_PURE_CALL_P, RTL_CONST_OR_PURE_P): New macros.
18300         * tree-inline.c (copy_body_r): Changed TREE_READONLY_DECL_P to
18301         TREE_READONLY.
18302         * tree-optimize.c (execute_fixup_cfg): Added test for
18303         ECF_LOOPING_CONST_OR_PURE.
18304         * c-common.c (handle_pure_attribute): Changed DECL_IS_PURE to
18305         DECL_PURE_P.
18306         * tree-cfg.c (update_call_expr_flags): Do not clear tree side
18307         effects for looping pure or const calls.
18308         (verify_gimple_expr): Added verification code.
18309         * config/alpha/alpha.c (alpha_legitimize_address,
18310         alpha_emit_xfloating_libcall): Changed CONST_OR_PURE_CALL_P to
18311         RTL_CONST_CALL_P.
18312         * config/s390/s390.c (s390_emit_tls_call_insn): Ditto.
18313         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Ditto.
18314         * config/mips/mips.c (mips_call_tls_get_addr): Ditto.
18315         * cfgrtl.c (need_fake_edge_p): Changed CONST_OR_PURE_CALL_P to
18316         RTL_CONST_OR_PURE_CALL_P.
18317         * dce.c (deletable_insn_p): Allow non looping, non sibling, pure
18318         and const calls to be deleted.
18319
18320 2008-05-07  Uros Bizjak  <ubizjak@gmail.com>
18321
18322         PR target/35714
18323         * config/i386/mmx.md (mmx_subv2sf3): New expander.
18324         (*mmx_subv2sf3): Rename from mmx_subv2sf3 insn pattern.
18325         (*mmx_eqv2sf3): Rename from mmx_eqv2sf3 insn pattern.
18326         (mmx_eqv2sf3): New expander.  Use ix86_fixup_binary_operands_no_copy
18327         to handle nonimmediate operands.
18328         (*mmx_paddwd): Rename from mmx_paddwd insn pattern.
18329         (mmx_paddwd): New expander.  Use ix86_fixup_binary_operands_no_copy
18330         to handle nonimmediate operands.
18331         (*mmx_pmulhrwv4hi3): Rename from mmx_pmulhrwv4hi3 insn pattern.
18332         (mmx_pmulhrwv4hi3): New expander.  Use
18333         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18334         (*sse2_umulv1siv1di3): Rename from sse2_umulv1siv1di3 insn pattern.
18335         (sse2_umulv1siv1di3): New expander.  Use
18336         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18337         (*mmx_eq<mode>3): Rename from mmx_eq<mode>3 insn pattern.
18338         (mmx_eq<mode>3): New expander.  Use
18339         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18340         (*mmx_uavgv8qi3): Rename from mmx_uavgv8qi3 insn pattern.
18341         (mmx_uavgv8qi3): New expander.  Use
18342         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18343         (*mmx_uavgv4hi3): Rename from mmx_uavgv4hi3 insn pattern.
18344         (mmx_uavgv4hi3): New expander.  Use
18345         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18346
18347         * config/i386/sse.md
18348         (sse_movhlps_exp): New expander.  Use ix86_fixup_binary_operands
18349         to handle nonimmediate operands.
18350         (sse_movlhps_exp): New expander.  Use ix86_fixup_binary_operands
18351         to handle nonimmediate operands.
18352         (sse_loadhps_exp): New expander.  Use ix86_fixup_binary_operands
18353         to handle nonimmediate operands.
18354         (sse_loadlps_exp): New expander.  Use ix86_fixup_binary_operands
18355         to handle nonimmediate operands.
18356         (sse2_unpckhpd_exp): New expander.  Use
18357         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18358         (sse2_unpcklpd_exp): New expander.  Use
18359         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18360         (sse_loadhpd_exp): New expander.  Use ix86_fixup_binary_operands
18361         to handle nonimmediate operands.
18362         (sse_loadlpd): New expander.  Use ix86_fixup_binary_operands
18363         to handle nonimmediate operands.
18364         (*sse2_<plusminus_insn><mode>3): Rename from
18365         sse2_<plusminus_insn><mode>3 insn pattern.
18366         (sse2_<plusminus_insn><mode>3): New expander.  Use
18367         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18368         (*sse2_umulv2siv2di3): Rename from sse2_umulv2siv2di3 insn pattern.
18369         (sse2_umulv2siv2di3): New expander.  Use
18370         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18371         (*sse4_1_mulv2siv2di3): Rename from sse4_1_mulv2siv2di3 insn pattern.
18372         (sse4_1_mulv2siv2di3): New expander.  Use
18373         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18374         (*sse2_pmaddwd): Rename from sse2_pmaddwd insn pattern.
18375         (sse2_pmaddwd): New expander.  Use
18376         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18377         (*sse2_eq<mode>3): Rename from sse2_eq<mode>3 insn pattern.
18378         (sse2_eq<mode>3): New expander.  Use
18379         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18380         (*sse4_1_eqv2di3): Rename from sse4_1_eqv2di3 insn pattern.
18381         (sse4_1_eqv2di3): New expander.  Use
18382         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18383         (*sse2_uavgv16qi3): Rename from sse2_uavgv16qi3 insn pattern.
18384         (sse2_uavgv16qi3): New expander.  Use
18385         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18386         (*sse2_uavgv16qi3): Rename from sse2_uavgv16qi3 insn pattern.
18387         (sse2_uavgv16qi3): New expander.  Use
18388         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18389         (*sse2_uavgv8hi3): Rename from sse2_uavgv8hi3 insn pattern.
18390         (sse2_uavgv8hi3): New expander.  Use
18391         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18392         (*ssse3_pmulhrswv8hi3): Rename from ssse3_pmulhrswv8hi3 insn pattern.
18393         (ssse3_pmulhrswv8hi3): New expander.  Use
18394         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18395         (*ssse3_pmulhrswv4hi3): Rename from ssse3_pmulhrswv4hi3 insn pattern.
18396         (ssse3_pmulhrswv4hi3): New expander.  Use
18397         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18398
18399         (<sse>_vm<plusminus_insn><mode>3): Do not use ix86_binary_operator_ok.
18400         (<sse>_vmmul<mode>3): Ditto.
18401         (divv4sf3): Do not use ix86_fixup_binary_operands_no_copy.
18402         (divv2df3): Ditto.
18403         (ssse3_pmaddubsw128): Use register_operand for operand 1.
18404         (ssse3_pmaddubsw): Ditto.
18405
18406         * config/i386/i386.c (struct_builtin_description)
18407         [IX86_BUILTIN_LOADHPS]: Use CODE_FOR_sse_loadhps_exp.
18408         [IX86_BUILTIN_STOREHPS]: Use CODE_FOR_sse_loadlps_exp.
18409         [IX86_BUILTIN_LOADHPD]: Use CODE_FOR_sse2_loadhpd_exp.
18410         [IX86_BUILTIN_LOADLPD]: Use CODE_FOR_sse2_loadlpd_exp.
18411         [IX86_BUILTIN_MOVHLPS]: Use CODE_FOR_sse_movhlps_exp.
18412         [IX86_BUILTIN_MOVLHPS]: Use CODE_FOR_sse_movlhps_exp.
18413         [IX86_BUILTIN_UNPCKHPD]: Use FOR_sse2_unpckhpd_exp.
18414         [IX86_BUILTIN_UNPCKLPD]: Use FOR_sse2_unpcklpd_exp.
18415         (ix86_fixup_binary_operands): Assert that src1
18416         and src2 must have the same mode when swapped.
18417         (ix86_expand_binop_builtin): Do not use ix86_fixup_binary_operands
18418         and ix86_binary_operator_ok.  Do not force operands in registers
18419         when optimizing.
18420
18421 2008-05-07  Jan Hubicka  <jh@suse.cz>
18422
18423         * cgraph.c (dump_cgraph_node): Update.
18424         * cgraph.h (cgraph_local_info): Break out inline summary.
18425         * cgraphunit.c (cgraph_process_new_functions): Use inliner analysis
18426         hook.
18427         * ipa-inline (inline_summary): New accestor function.
18428         (cgraph_clone_inlined_nodes, cgraph_check_inline_limits,
18429         cgraph_decide_inlining, compute_inline_parameters): Update.
18430         * ipa.c (cgraph_remove_unreachable_nodes): Remove statistics.
18431
18432 2008-05-07  Maxim Kuvyrkov  <maxim@codesourcery.com>
18433
18434         Cleanup ColdFire scheduling support and add V4 pipeline model.
18435
18436         * config/m68k/m68k.md (UNSPEC_TIE): New constant.
18437         (define_attr cpu): Add cfv4 value.
18438         (define_attr type, define_attr type1): Merge into a single 'type'
18439         attribute.  Update all uses.
18440         (define_attr opx_type, define_attr opy_type, define_attr opx_access):
18441         Rearrange and update.  Rename value 'reg' to 'Rn', add value 'FPn'.
18442         Update all uses.
18443         (define_attr opx_mem, define_attr opy_mem): Remove.
18444         (define_attr op_mem): Clean up, update comment.
18445         (define_attr size): Use specific values instead of general int.
18446         (define_attr guess, define_attr split): Remove.  Update all uses.
18447         (movdf_internal, tstsi_internal, tsthi_internal, tstqi_internal,
18448         tst<mode>_68881, pushexthisi_const, movsi_const0_68000_10,
18449         movsi_const0_68040_60, movsi_const0, movsi_cf, movstrictqi_cf,
18450         zero_extendhisi2_cf, zero_extendqisi2_cfv4, cfv4_extendhisi2,
18451         68k_extendhisi2, extendqihi2, cfv4_extendqisi2, 68k_extendqisi2,
18452         floatsi<mode>2_68881, ftrunc<mode>2_68881, ftrunc<mode>2_cf,
18453         fix<mode>qi2_68881, fix<mode>hi2_68881, fix<mode>si2_68881,
18454         adddi_dishl32, addsi3_5200, add<mode>3_floatsi_68881,
18455         add<mode>3_floathi_68881, add<mode>3_floatqi_68881,
18456         add<mode>3_68881, add<mode>3_cf, subdi_dishl32, subsi3,
18457         sub<mode>3_floatsi_68881, sub<mode>3_floathi_68881,
18458         sub<mode>3_floatqi_68881, sub<mode>3_68881, sub<mode>3_cf,
18459         mulhi3, mulhisi3, mulhisisi3_s, mulsi3_68020, mulsi3_cf,
18460         umulhisi3, mulhisisi3_z, mul<mode>3_floatsi_68881,
18461         mul<mode>3_floathi_68881, mul<mode>3_floatqi_68881, fmul<mode>3_cf,
18462         div<mode>3_cf, sqrt<mode>2_cf, abs<mode>2_cf, clzsi2,
18463         one_cmplsi2_5200, subreghi1ashrdi_const32, ashrsi3, lshrsi3,
18464         bsetmemqi, bsetmemqi_ext, bclrmemqi, bclrmemqi_ext,
18465         beq, bne, bgt, blt, bordered, bunordered, buneq, bunge, bungt, bunle,
18466         bunlt, bltgt, tablejump_internal, call, non_symbolic_call_value,
18467         symbolic_call_value_jsr, symbolic_call_value_bsr, link):
18468         Update or set attributes.
18469         (stack_tie): New fake instruction.
18470
18471         * config/m68k/m68k.h (TUNE_CFV4): New macro.
18472         (m68k_sched_attr_size): Update declaration.
18473         (m68k_sched_attr_type2): Remove.
18474         (m68k_sched_address_bypass_p, m68k_sched_indexed_address_bypass_p):
18475         Declare new bypass predicates.
18476
18477         * config/m68k/m68k.c (m68k_sched_issue_rate,
18478         m68k_sched_first_cycle_multipass_dfa_lookahead): Declare hook
18479         implementations.
18480         (TARGET_SCHED_ISSUE_RATE,
18481         TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD): Override hooks.
18482         (override_options): Handle scheduling for ColdFire V4 core.
18483         (m68k_expand_prologue): Emit stack_tie.
18484         (enum attr_op_type): Split value 'OP_TYPE_REG' to 'OP_TYPE_RN' and
18485         'OP_TYPE_FPN'.  Update all uses.
18486         (sched_guess_p): Remove.
18487         (sched_address_type): Handle symbolic addresses.
18488         (sched_get_operand): New static function.
18489         (sched_operand_type): Merge into sched_attr_op_type.
18490         (sched_attr_op_type): Handle FP registers, handle quick constants,
18491         update.
18492         (m68k_sched_attr_opx_type, m68k_sched_attr_opy_type): Update.
18493         (m68k_sched_attr_size): Update.  Move logic to ...
18494         (sched_get_attr_size_int): New static function.
18495         (sched_get_opxy_mem_type): New static function.
18496         (m68k_sched_attr_op_mem): Update.
18497         (m68k_sched_attr_type2): Remove.
18498         (sched_cfv4_bypass_data): New static variable.
18499         (m68k_sched_adjust_cost): Handle ColdFire V4 bypass.
18500         (m68k_sched_issue_rate): Implement scheduler hook.
18501         (struct _sched_ib: enabled_p): New field.
18502         (m68k_sched_variable_issue): Update.  Handle V4.
18503         (SCHED_DUMP_TODO, SCHED_DUMP_DONE, SCHED_DUMP_NOTHING,
18504         sched_dump_class_func_t, sched_dump_split_class,
18505         sched_dump_dfa_guess_unit_code, sched_dump_dfa_state,
18506         sched_dump_dfa_class, m68k_sched_dump): Remove.
18507         (m68k_sched_first_cycle_multipass_dfa_lookahead): Implement scheduler
18508         hook.
18509         (m68k_sched_init_global): Remove statisctics dumping, introduce
18510         sanity check that all instructions have pipeline reservations.  Handle
18511         ColdFire V4 core.
18512         (m68k_sched_dfa_pre_advance_cycle, m68k_sched_dfa_post_advance_cycle):
18513         Handle ColdFire V4 core.
18514         (sched_mem_operand_p, sched_get_reg_operand, sched_get_mem_operand):
18515         New static functions.
18516         (m68k_sched_address_bypass_p): New bypass predicate.
18517         (sched_get_indexed_address_scale): New static function.
18518         (m68k_sched_indexed_address_bypass_p): New bypass predicate.
18519
18520         * cf.md: Update comments.
18521         (define_attr type2): Remove.  Use 'type' attribute instead.
18522         Update all uses.
18523         (cf_ib): Rename to cfv123_ib.  Update all uses.
18524         (cf_oep): Rename to cfv123_oep.  Update all uses.
18525         (cf_chr): Rename to cfv123_chr.  Update all uses.
18526         (cf_mem): Rename to cfv123_mem.  Update all uses.
18527         (cf_mac): Move to more appropriate place.
18528         (cfv123_guess): New automaton and cpu_unit.
18529         (cfv123_*, cfv12_*, cfv1_*, cfv2_*, cfv3_*): Use type attribute.
18530         Update uses of 'size' attribute.  Handle before reload scheduling.
18531         (cfv123_guess): New dummy reservation for unhandled instructions.
18532         (cfv4_*): Pipeline description of ColdFire V4 core.
18533         (ignore): New reservation to handle 'ignore' type.
18534
18535 2008-05-07  Ian Lance Taylor  <iant@google.com>
18536
18537         PR middle-end/36013
18538         * gimplify.c (find_single_pointer_decl_1): Don't look through
18539         indirections.
18540         (find_single_pointer_decl): Adjust comments.
18541
18542 2008-05-07  Jakub Jelinek  <jakub@redhat.com>
18543
18544         PR middle-end/36137
18545         * fold-const.c (fold_binary): Use STRIP_SIGN_NOPS instead of
18546         STRIP_NOPS on arguments even for MIN_EXPR and MAX_EXPR.
18547
18548         PR middle-end/36106
18549         * omp-low.c (expand_omp_atomic_pipeline): Load value using the
18550         integral type rather than floating point, then VIEW_CONVERT_EXPR
18551         to the floating point type.
18552
18553 2008-05-07  Uros Bizjak  <ubizjak@gmail.com>
18554
18555         * config/i386/i386.c (ix86_expand_copysign): Force non-zero constant
18556         TFmode op0 to register.
18557
18558 2008-05-07  Alan Modra  <amodra@bigpond.net.au>
18559
18560         * c-decl.c (grokdeclarator): Comment typo.
18561
18562 2008-05-06  Aldy Hernandez  <aldyh@redhat.com>
18563
18564         * tree-flow.h: Remove prototype for computed_goto_p.
18565         * tree-cfg.c (computed_goto_p): Make static.
18566
18567 2008-05-06  H.J. Lu  <hongjiu.lu@intel.com>
18568
18569         PR target/35657
18570         * config/i386/i386.c (contains_128bit_aligned_vector_p): Renamed to ...
18571         (contains_aligned_value_p): This.  Handle _Decimal128.
18572         (ix86_function_arg_boundary): Only align _Decimal128 to its
18573         natural boundary and handle it properly.
18574
18575 2008-05-06  Martin Jambor  <mjambor@suse.cz>
18576
18577         * ipa-cp.c (ipcp_method_orig_node): Renamed to ipcp_get_orig_node.
18578         (ipcp_method_is_cloned): Renamed to ipcp_node_is_clone
18579         (ipcp_method_set_orig_node): Removed.
18580         (ipcp_cval_get_cvalue_type): Removed.
18581         (ipcp_method_get_scale): Renamed to ipcp_get_node_scale.
18582         (ipcp_method_set_scale): Renamed to ipcp_set_node_scale.
18583         (ipcp_cval_set_cvalue_type): Removed.
18584         (ipcp_cval_get_cvalue): Removed.
18585         (ipcp_cval_set_cvalue): Removed.
18586         (ipcp_type_is_const): Renamed to ipcp_lat_is_const.
18587         (ipcp_cval_equal_cvalues): Renamed to ipcp_lats_are_equal
18588         (ipcp_lats_are_equal): Changed parameters to two ipcp_lattice's
18589         (ipcp_cval_meet): Renamed to ipa_lattice_meet
18590         (ipcp_cval_changed): Changed to use ipcp_lat_is_const
18591         (ipcp_method_cval): Renamed to ipcp_get_ith_lattice
18592         (ipcp_get_ith_lattice): Changed parameters.
18593         (ipcp_cval_compute): Renamed to ipcp_lattice_from_jfunc
18594         (ipcp_lattice_from_jfunc): Changed parameters.
18595         (ipcp_redirect): Local lattice pointer instead of lattice type variable.
18596         (ipcp_method_cval_print): Added temporary variable info.
18597         (ipcp_redirect): Removed already unused local variable caller.
18598         (ipcp_redirect): New temporary variable orig_callee_info
18599         (ipcp_redirect): Removed newly unused local variable callee.
18600         (ipcp_redirect): Removed (a bit confusing) local variable type.
18601         (ipcp_insert_stage): Added local variable info.
18602         (ipcp_cval_changed): Renamed to ipcp_lattice_changed, parameters
18603         renamed too
18604         (ipcp_formal_create): Removed.
18605         (ipcp_method_cval_set): Removed.
18606         (ipcp_propagate_stage): Renamed lattice variables.
18607         (ipcp_method_cval_set_cvalue_type): Removed.
18608         (ipcp_method_cval_print): Renamed to ipcp_print_all_lattices
18609         (ipcp_print_all_lattices): Changed printed strings to refer to
18610         lattices rather than cvals.
18611         (ipcp_method_cval_init): Renamed to ipcp_initialize_node_lattices
18612         (ipcp_propagate_const): Changed formal parameters.
18613         (build_const_val): Changed formal parameters.
18614         (ipcp_insert_stage): Removed useless variable cvalue
18615         (build_const_val): Changed formal parameters.
18616         (ipcp_method_compute_scale): Renamed to ipcp_compute_node_scale
18617         (ipcp_after_propagate): Renamed to ipcp_change_tops_to_bottom
18618         (ipcp_callsite_param_print): Renamed to ipcp_print_all_jump_functions
18619         (ipcp_profile_mt_count_print): Renamed to ipcp_print_func_profile_counts
18620         (ipcp_print_func_profile_counts): Changed string from "method" to
18621         "function"
18622         (ipcp_profile_cs_count_print): Renamed to ipcp_print_call_profile_counts
18623         (ipcp_profile_edge_print): Renamed to ipcp_print_edge_profiles
18624         (ipcp_profile_bb_print): Renamed to ipcp_print_bb_profiles
18625         (ipcp_structures_print): Renamed to ipcp_print_all_structures
18626         (ipcp_profile_print): Renamed to ipcp_print_profile_data
18627         (ipcp_lat_is_const): Changed parameters and made inline.
18628         (ipcp_replace_map_create): Renamed to ipcp_create_replace_map
18629         (ipcp_redirect): Renamed to ipcp_need_redirect_p
18630         (ipcp_need_redirect_p): Calls ipcp_lat_is_const instead of using
18631         the predicate condition directly
18632         (ipcp_propagate_stage): Added local variable args. Removed local
18633         variable callee.  (Both are mere code simplifications.)
18634         (ipcp_method_dont_insert_const): Renamed to
18635         ipcp_node_not_modifiable_p.
18636         (ipcp_node_not_modifiable_p): Made inline.
18637         (ipcp_cloned_create): Renamed to ipcp_init_cloned_node
18638         (ipcp_propagate_const): Renamed to ipcp_propagate_one_const
18639         (ipcp_print_all_lattices): Removed variable cvalue
18640         (ipcp_method_scale_print): Renamed to ipcp_function_scale_print
18641         Updated comments.
18642
18643 2008-05-06  Olivier Hainque  <hainque@adacore.com>
18644
18645         * tree-sra.c (try_instantiate_multiple_fields): Early return
18646         if field has POINTER_TYPE.
18647
18648 2008-05-06  Kai Tietz  <kai.tietz@onevision.com>
18649
18650         * config/i386/i386.c (output_set_got): Fix for x86_64 output_emit_asm
18651         by using 'q' specifier for instruction.
18652         (ix86_file_end): Replaced case TARGET_64BIT_MS_ABI by TARGET_64BIT.
18653
18654 2008-05-06  Anatoly Sokolov <aesok@post.ru>
18655
18656         * config/avr/avr.md (*sbrx_branch, *sbix_branch, *sbix_branch_tmp):
18657         Change mode of zero_extract from QImode to HImode.
18658         (sign bit tests peepholes): (Ditto.).
18659
18660 2008-05-06  Uros Bizjak  <ubizjak@gmail.com>
18661
18662         * config/i386/mmx.md: Remove double backslashes from asm templates.
18663         (*mmx_addv2sf3): Rename from mmx_addv2sf3 insn pattern.
18664         (mmx_addv2sf3): New expander.  Use ix86_fixup_binary_operands_no_copy
18665         to handle nonimmediate operands.
18666         (*mmx_mulv2sf3): Rename from mmx_mulv2sf3 insn pattern.
18667         (mmx_mulv2sf3): New expander.  Use ix86_fixup_binary_operands_no_copy
18668         to handle nonimmediate operands.
18669         (*mmx_<code>v2sf3_finite): New insn pattern.
18670         (*mmx_<code>v2sf3): Rename from mmx_<code>v2sf3 insn pattern.
18671         (mmx_<code>v2sf3): New expander.  Use
18672         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18673         (mmx_<plusminus_insn><mode>3): New expander.  Use
18674         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18675         (*mmx_<plusminus_insn><mode>3): New insn pattern.
18676         (mmx_add<mode>3): Removed.
18677         (mmx_ssadd<mode>3): Ditto.
18678         (mmx_usadd<mode>3): Ditto.
18679         (mmx_sub<mode>3): Ditto.
18680         (mmx_sssub<mode>3): Ditto.
18681         (mmx_ussub<mode>3): Ditto.
18682         (*mmx_mulv4hi3): Rename from mmx_mulv4hi3 insn pattern.
18683         (mmx_mulv4hi3): New expander.  Use ix86_fixup_binary_operands_no_copy
18684         to handle nonimmediate operands.
18685         (*mmx_smulv4hi3_highpart): Rename from mmx_smulv4hi3_highpart
18686         insn pattern.
18687         (mmx_smulv4hi3_highpart): New expander.  Use
18688         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18689         (*mmx_umulv4hi3_highpart): Rename from mmx_umulv4hi3_highpart
18690         insn pattern.
18691         (mmx_umulv4hi3_highpart): New expander.  Use
18692         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18693         (*mmx_<code>v4hi3): Rename from mmx_<code>v4hi3 insn pattern.
18694         (mmx_<code>v4hi3): New expander.  Use
18695         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18696         (*mmx_<code>v8qi3): Rename from mmx_<code>v8qi3 insn pattern.
18697         (mmx_<code>v8qi3): New expander.  Use
18698         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18699         (*mmx_<code><mode>3): Rename from mmx_<code><mode>3 insn pattern.
18700         (mmx_<code><mode>3): New expander.  Use
18701         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18702
18703 2008-05-05  Jan Hubicka  <jh@suse.cz>
18704
18705         PR tree-optimization/36118
18706         * passes.c (pass_init_dump_file): Fix dump header.
18707
18708 2008-05-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18709
18710         PR middle-end/36141
18711         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Don't create
18712         VCE for function decls.
18713
18714 2008-05-05  H.J. Lu  <hongjiu.lu@intel.com>
18715
18716         * config/i386/sse.md (sse2_<plusminus_insn><mode>3): Fix a typo.
18717
18718 2008-05-05  H.J. Lu  <hongjiu.lu@intel.com>
18719
18720         * config/i386/i386.md (sat_plusminus): New.
18721         (plusminus_insn): Likewise.
18722         (plusminus_mnemonic): Likewise.
18723         (addsub): Removed.
18724         (comm): Add ss_plus, us_plus, ss_minus and us_minus.
18725         (*<addsub><mode>3_cc_overflow): Renamed to ...
18726         (*<plusminus_insn><mode>3_cc_overflow): This.
18727         (*<addsub>si3_zext_cc_overflow): Renamed to ...
18728         (*<plusminus_insn>si3_zext_cc_overflow): This.
18729
18730         * config/i386/sse.md (<addsub><mode>3): Renamed to ...
18731         (<plusminus_insn><mode>3): This.
18732         (*<addsub><mode>3): Renamed to ...
18733         (*<plusminus_insn><mode>3): This.
18734         (<sse>_vm<addsub><mode>3): Renamed to ...
18735         (<sse>_vm<plusminus_insn><mode>3): This.
18736         (sse3_h<addsub>v4sf3): Renamed to ...
18737         (sse3_h<plusminus_insn>v4sf3): This.
18738         (sse3_h<addsub>v2df3): Renamed to ...
18739         (sse3_h<plusminus_insn>v2df3): This.
18740         (<plusminus_insn><mode>3): New.
18741         (*<plusminus_insn><mode>3): Likewise.
18742         (sse2_<plusminus_insn><mode>3): Likewise.
18743         (add<mode>): Removed.
18744         (*add<mode>3): Likewise.
18745         (sse2_ssadd<mode>3): Likewise.
18746         (sse2_usadd<mode>3): Likewise.
18747         (sub<mode>3): Likewise.
18748         (*sub<mode>3): Likewise.
18749         (sse2_sssub<mode>3): Likewise.
18750         (sse2_ussub<mode>3): Likewise.
18751
18752 2008-05-05  Benjamin Kosnik  <bkoz@redhat.com>
18753
18754         * gthr-single.h: Add in required interface elements as per gthr.h.
18755         Add stub types for __gthread_key_t, __gthread_once_t. Add defines
18756         for __GTHREAD_ONCE_INIT, __GTHREAD_RECURSIVE_MUTEX_INIT.
18757         Generalize UNUSED macro.
18758         (__gthread_once): Add.
18759         (__gthread_key_create): Add.
18760         (__gthread_key_delete): Add.
18761         (__gthread_getspecific): Add.
18762         (__gthread_setspecific): Add.
18763
18764 2008-05-05  Andrew Pinski  <Andrew.Pinski@playstation.sony.com>
18765
18766         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): If we have
18767         the same size types for the indirect reference on the rhs, then
18768         create a VCE.
18769
18770 2008-05-05  Uros Bizjak  <ubizjak@gmail.com>
18771
18772         * config/i386/i386.md
18773         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit): Use only
18774         one insn template instead of template series.
18775         (*xordi_1_rex64): Ditto.
18776         (*xordi_2_rex64): Ditto.
18777
18778 2008-05-05  Ira Rosen  <irar@il.ibm.com>
18779
18780         PR tree-optimization/36119
18781         * tree-vect-transform.c (vectorizable_assignment): Set NCOPIES to 1
18782         in case of SLP.
18783
18784 2008-06-04  Jan Hubicka  <jh@suse.cz>
18785
18786         tree-optimization/36100
18787         * tree-pass.h (pass_O0_always_inline): Declare.
18788         * ipa-inline.c (inline_transform): Remove dead code.
18789         (cgraph_gate_O0_always_inline, cgraph_O0_always_inline,
18790         pass_O0_always_inline): New.
18791         * passes.c (init_optimization_passes): Add pass_O0_always_inline.
18792
18793 2008-05-04  Kai Tietz  <kai.tietz@onevision.com>
18794
18795         * config/i386/i386.c (x86_output_mi_thunk): Use movq alternative
18796         mnemonic in this_param move for TARGET_64BIT.
18797
18798 2008-05-04  Uros Bizjak  <ubizjak@gmail.com>
18799
18800         * config/i386/i386.md (*strmovsi_1): Simplify asm alternatives.
18801         (*strmovsi_rex_1): Ditto.
18802         (*strsetsi_1): Ditto.
18803         (*strsetsi_rex_1): Ditto.
18804
18805         (add<mode>cc): Macroize expander from addqicc, addhicc, addsicc and
18806         adddicc expanders using SWI mode iterator.
18807
18808 2008-05-04  H.J. Lu  <hongjiu.lu@intel.com>
18809
18810         PR target/36121
18811         * config/i386/i386.c (ix86_expand_special_args_builtin): Remove three
18812         argument handling.
18813
18814 2008-05-04  David S. Miller  <davem@davemloft.net>
18815
18816         * config.gcc (sparc*-*-*): Always set need_64bit_hwint to yes.
18817         (sparc*-*-linux*): Use linux.h in tm_file.
18818         (sparc-*-linux*): If 'enabled_targets' is 'all', build a bi-arch
18819         compiler defaulting to 32-bit.
18820         (sparc*-*-*): Remove explicit target settings of need_64bit_hwint,
18821         no longer needed.
18822         * config/sparc/linux.h: Remove definitions now obtained
18823         properly from linux.h
18824         * config/sparc/linux64.h: Likewise.
18825         (ASM_CPU_DEFAULT_SPEC): Change this to ASM_CPU64_DEFAULT_SPEC, we
18826         don't want this setting for 32-bit builds in a biarch compiler.
18827         * doc/install.texi: Add sparc-linux to list of targets
18828         supporting --enable-targets=all.
18829
18830 2008-05-03  Andrew Pinski  <pinskia@gmail.com>
18831
18832         * Makefile.in (tree-ssa-phiprop.o): Fix dependencies.
18833
18834 2008-05-03  H.J. Lu  <hongjiu.lu@intel.com>
18835
18836         * config/i386/i386.c (ix86_builtin_type): Move V4SI_FTYPE_V4SF
18837         after V4SI_FTYPE_V8HI.
18838         (ix86_init_mmx_sse_builtins): Move case V4HI_FTYPE_V4HI after
18839         case V4SI_FTYPE_V2DF.
18840
18841 2008-05-03  Kenneth Zadeck  <zadeck@naturalbridge.com>
18842
18843         * doc/invoke.texi (max-flow-memory-locations): Removed.
18844         * params.def (PARAM_MAX_FLOW_MEMORY_LOCATIONS): Removed.
18845
18846 2008-05-03  Richard Guenther  <rguenther@suse.de>
18847
18848         PR middle-end/34973
18849         * opts.c (set_Wstrict_aliasing): Handle the turn-off case.
18850
18851 2008-05-02  David S. Miller  <davem@davemloft.net>
18852
18853         * config.gcc (need_64bit_hwint): Document libcpp dependency.
18854
18855 2008-05-02  Simon Baldwin <simonb@google.com>
18856
18857         PR bootstrap/36108
18858         * c-common.h (warn_array_subscript_range): Removed.
18859         * c-common.c (warn_array_subscript_range): Ditto.
18860         * tree-vrp.c (check_array_ref): Revert to ignoring arrays with size 2.
18861         * c-typeck.c (build_array_ref): Remove warn_array_subscript_range.
18862
18863 2008-05-02  H.J. Lu  <hongjiu.lu@intel.com>
18864
18865         * config/i386/i386.c (ix86_special_builtin_type): New.
18866         (bdesc_special_args): Likewise.
18867         (ix86_expand_special_args_builtin): Likewise.
18868         (ix86_init_mmx_sse_builtins): Updated.
18869         (ix86_expand_builtin): Updated.
18870         (ix86_expand_store_builtin): Removed.
18871         (ix86_expand_unop_builtin): Likewise.
18872
18873         * config/i386/mm3dnow.h (__v2sf): Moved to ...
18874         * config/i386/mmintrin.h (__v2sf): Here.
18875
18876         * config/i386/xmmintrin.h (_mm_loadh_pi): Replace __v2si with
18877         const __v2sf.
18878         (_mm_loadl_pi): Likewise.
18879         (_mm_storeh_pi): Replace __v2si with __v2sf.
18880         (_mm_storel_pi): Likewise.
18881
18882         * doc/extend.texi: Correct __builtin_ia32_loadhps,
18883         __builtin_ia32_loadlps, __builtin_ia32_storehps,
18884         __builtin_ia32_storelps, __builtin_ia32_loadhpd and
18885         __builtin_ia32_loadlpd.
18886
18887 2008-05-02  H.J. Lu  <hongjiu.lu@intel.com>
18888
18889         * config/i386/i386.c (ix86_builtin_type): Add FLOAT_FTYPE_FLOAT,
18890         V4SF_FTYPE_V4SF_VEC_MERGE and V2DF_FTYPE_V2DF_VEC_MERGE.
18891         (bdesc_args): Updated.  Add scalar SSE builtins with vec_merge.
18892         (ix86_init_mmx_sse_builtins): Updated.
18893         (ix86_expand_args_builtin): Likewise.
18894         (ix86_expand_builtin): Likewise.
18895         (ix86_expand_unop1_builtin): Renamed to ...
18896         (ix86_expand_unop_vec_merge_builtin): This.
18897
18898 2008-05-01  Jan Hubicka  <jh@suse.cz>
18899
18900         PR bootstrap/36100
18901         * ipa-inline.c (inline_generate_summary): Make static.
18902         (inline_transform): Do not call inlining at -O0; make static.
18903         * passes.c (execute_todo): Add sanity check.
18904         (execute_one_ipa_transform_pass): Execute proper flags.
18905
18906 2008-05-01  Eric Botcazou  <ebotcazou@adacore.com>
18907
18908         * tree.h (TYPE_NONALIASED_COMPONENT): Expand comment.
18909         (DECL_NONADDRESSABLE_P): Likewise.
18910         * alias.c (record_component_aliases): Fix comment.
18911
18912 2008-05-01  Simon Baldwin <simonb@google.com>
18913
18914         * c-common.h (warn_array_subscript_range): New function.
18915         * c-common.c (warn_array_subscript_range): Ditto.
18916         * tree-vrp.c (check_array_ref): Corrected code to agree with
18917         comment, ignoring only arrays of size 0 or size 1.
18918         * c-typeck.c (build_array_ref): Call warn_array_subscript_range.
18919
18920 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
18921
18922         * config/i386/i386.c (ix86_builtin_type): Replace
18923         DI_FTYPE_DI_DI_INT with V1DI2DI_FTYPE_V1DI_V1DI_INT.
18924         (bdesc_args): Updated.
18925         (ix86_init_mmx_sse_builtins): Likewise.
18926         (ix86_expand_args_builtin): Likewise.
18927
18928         * config/i386/tmmintrin.h (_mm_alignr_pi8): Replace long long
18929         with __v1di.
18930
18931         * doc/extend.texi: Correct __builtin_ia32_palignr.
18932
18933 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
18934
18935         PR target/36095
18936         * config/i386/i386.c (bdesc_crc32): Removed.
18937         (ix86_expand_crc32): Likewise.
18938         (ix86_builtin_type): Replace V2DI2TI_FTYPE_V2DI2TI_INT with
18939         V2DI2TI_FTYPE_V2DI_INT, V2DI2TI_FTYPE_V2DI2TI_V2DI2TI_INT with
18940         V2DI2TI_FTYPE_V2DI_V2DI_INT.  Add UINT64_FTYPE_UINT64_UINT64,
18941         UINT_FTYPE_UINT_UINT, UINT_FTYPE_UINT_USHORT and
18942         UINT_FTYPE_UINT_UCHAR.
18943         (bdesc_args): Updated. Add crc32 builtins.
18944         (ix86_init_mmx_sse_builtins): Updated.
18945         (ix86_expand_args_builtin): Updated to support subreg.
18946
18947         * doc/extend.texi: Correct __builtin_ia32_crc32di.
18948
18949 2008-05-01  Jan Hubicka  <jh@suse.cz>
18950
18951         * tree-pass.h (opt_pass): Add IPA_PASS.
18952         (varpool_node, cgraph_node): Forward declare.
18953         (ipa_opt_pass): Define.
18954         (pass_ipa_inline): Turn into ipa_opt_pass.
18955         (pass_apply_inline): Remove.
18956         * ipa-inline.c (pass_ipa_inline): Turn into ipa_opt_pass.
18957         (apply_inline): Turn into ....
18958         (inline_transform): ... this one.
18959         (inline_generate_summary): New function.
18960         (pass_apply_inline): Remove.
18961         * function.h (ipa_opt_pass): Forward declare structure; typedef;
18962         vector.
18963         (struct function): Add ipa_transforms_to_apply.
18964         * passes.c (register_one_dump_file): Work on IPA_PASS.
18965         (init_optimization_passes): Remove pass_inline_parameters and
18966         pass_apply_inline.
18967         (pass_init_dump_file, pass_fini_dump_file): Break out from ....
18968         (execute_one_pass) ... here; apply transforms when possible.
18969         (add_ipa_transform_pass, execute_ipa_summary_asses,
18970         execute_one_ipa_transform_pass): New.
18971         (execute_ipa_pass_list): Update for IPA_PASS type.
18972
18973 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
18974
18975         * config/i386/i386.c (ix86_builtin_type): Add
18976         V2DI_FTYPE_V2DI_V16QI, V2DI_FTYPE_V2DI_UINT_UINT and
18977         V2DI_FTYPE_V2DI_V2DI_UINT_UINT.
18978         (bdesc_args): Add SSE4a builtins.
18979         (ix86_init_mmx_sse_builtins): Updated.
18980         (ix86_expand_args_builtin): Likewise.
18981         (ix86_expand_builtin): Likewise.
18982
18983 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
18984
18985         * config/i386/i386.c (ix86_builtin_type): Add
18986         V8HI_FTYPE_V8HI_V8HI_COUNT, V8HI_FTYPE_V8HI_SI_COUNT,
18987         V4SI_FTYPE_V4SI_V4SI_COUNT, V4SI_FTYPE_V4SI_SI_COUNT,
18988         V4HI_FTYPE_V4HI_V4HI_COUNT, V4HI_FTYPE_V4HI_SI_COUNT,
18989         V2DI_FTYPE_V2DI_V2DI_COUNT, V2DI_FTYPE_V2DI_SI_COUNT,
18990         V2SI_FTYPE_V2SI_V2SI_COUNT, V2SI_FTYPE_V2SI_SI_COUNT,
18991         V1DI_FTYPE_V1DI_V1DI_COUNT, V1DI_FTYPE_V1DI_SI_COUNT,
18992         V8HI_FTYPE_V8HI_INT, V4SI_FTYPE_V4SI_INT, V4HI_FTYPE_V4HI_INT,
18993         V2DI2TI_FTYPE_V2DI2TI_INT, V2DI2TI_FTYPE_V2DI2TI_V2DI2TI_INT
18994         and DI_FTYPE_DI_DI_INT.
18995         (bdesc_args): Add MMX/SSE shift, shuffle and palignr builtins.
18996         (ix86_init_mmx_sse_builtins): Updated.
18997         (ix86_expand_args_builtin): Likewise.
18998         (ix86_expand_builtin): Likewise.
18999         (ix86_expand_binop_imm_builtin): Removed.
19000
19001         * doc/extend.texi: Correct __builtin_ia32_palignr128.
19002
19003 2008-04-30  Richard Guenther  <rguenther@suse.de>
19004
19005         PR tree-optimization/32921
19006         * tree-ssa-loop-im.c (mem_refs_may_alias_p): Disambiguate with TBAA.
19007
19008 2008-04-30  Richard Sandiford  <rsandifo@nildram.co.uk>
19009
19010         * config/arm/arm.c (arm_unwind_emit): Use
19011         crtl->all_throwers_are_sibcalls instead of
19012         cfun->all_throwers_are_sibcalls.
19013         (arm_output_fn_unwind): Likewise.
19014         * config/frv/frv.c (frv_stack_info): Use crtl->uses_pic_offset_table
19015         instead of cfun->uses_pic_offset_table.
19016         (frv_expand_prologue): Likewise.
19017         (frv_frame_pointer_required): Likewise.
19018         (frv_expand_fdpic_call): Likewise.
19019         (frv_emit_movsi): Likewise.
19020         * config/iq2000/iq2000.c (iq2000_expand_prologue): Use
19021         cfun->returns_pcc_struct instead of
19022         current_function_returns_pcc_struct.
19023         * config/m32c/m32c.c (need_to_save): Use crtl->calls_eh_return
19024         instead of cfun->calls_eh_return.
19025         (m32c_pushm_popm): Likewise.
19026         * config/xtensa/xtensa.h (cfun->calls_alloca): Remove bogus
19027         "extern" declaration.
19028
19029 2008-04-30  Richard Guenther  <rguenther@suse.de>
19030
19031         PR tree-optimization/21636
19032         * tree-ssa-ccp.c (ccp_fold): Handle &p->x with p being a
19033         constant address.
19034         (evaluate_stmt): Print the likely value.
19035         (ccp_visit_stmt): Avoid excessive vertical spacing.
19036
19037 2008-04-30  Rafael Espíndola  <espindola@google.com>
19038
19039         * builtins.c (fold_call_expr): Return realret.
19040         * tree-ssa-threadedge.c
19041         (record_temporary_equivalences_from_stmts_at_dest): Ignore calls to
19042         __builtin_object_size.
19043
19044 2008-04-30  Seongbae Park  <seongbae.park@gmail.com>
19045
19046         * gcc.c (wrapper_string): New variable.
19047         (insert_wrapper): New function.
19048         (execute): New option -wrapper.
19049         * doc/invoke.texi (Overall Options): New driver option -wrapper.
19050
19051 2008-04-30  Nathan Froyd  <froydnj@codesourcery.com>
19052
19053         * config/rs6000/crtresgpr.asm, config/rs6000/crtresxgpr.asm,
19054         config/rs6000/crtsavgpr.asm, config/rs6000/crtresfpr.asm,
19055         config/rs6000/crtresxfpr.asm, config/rs6000/crtsavfpr.asm: Break out
19056         from...
19057         * config/rs6000/crtsavres.asm: ...here.  Remove unneeded file.
19058         * config/rs6000/e500crtres32gpr.asm, config/rs6000/e500crtres64gpr.asm,
19059         config/rs6000/e500crtres64gprctr.asm,
19060         config/rs6000/e500crtrest32gpr.asm, config/rs6000/e500crtrest64gpr.asm,
19061         config/rs6000/e500crtresx32gpr.asm, config/rs6000/e500crtresx64gpr.asm,
19062         config/rs6000/e500crtsav32gpr.asm, config/rs6000/e500crtsav64gpr.asm,
19063         config/rs6000/e500crtsav64gprctr.asm,
19064         config/rs6000/e500crtsavg32gpr.asm, config/rs6000/e500crtsavg64gpr.asm,
19065         config/rs6000/e500crtsavg64gprctr.asm: New files.
19066         * config/rs6000/t-ppccomm: Add build rules for new files.
19067         (LIB2FUNCS_STATIC_EXTRA): Add new files.
19068         * config/rs6000/t-netbsd: Add build rules for new files.
19069         (LIB2FUNCS_STATIC_EXTRA): New variable.
19070         * config/rs6000/sysv4.h (ENDFILE_SPEC): Don't include crtsavres.o
19071         (CRTSAVRES_DEFAULT_SPEC): Likewise.
19072         * config/rs6000/netbsd.h (ENDFILE_SPEC): Likewise.
19073
19074 2008-04-30  H.J. Lu  <hongjiu.lu@intel.com>
19075
19076         * config/i386/i386.c (ix86_builtin_type): Add
19077         FLOAT128_FTYPE_FLOAT128_FLOAT128, V16QI_FTYPE_V16QI_V16QI,
19078         V16QI_FTYPE_V8HI_V8HI, V8QI_FTYPE_V8QI_V8QI,
19079         V8QI_FTYPE_V4HI_V4HI, V8HI_FTYPE_V8HI_V8HI,
19080         V8HI_FTYPE_V16QI_V16QI, V8HI_FTYPE_V4SI_V4SI,
19081         V4SI_FTYPE_V4SI_V4SI, V4SI_FTYPE_V8HI_V8HI,
19082         V4SI_FTYPE_V4SF_V4SF, V4SI_FTYPE_V2DF_V2DF,
19083         V4HI_FTYPE_V4HI_V4HI, V4HI_FTYPE_V8QI_V8QI,
19084         V4HI_FTYPE_V2SI_V2SI, V4SF_FTYPE_V4SF_V4SF,
19085         V4SF_FTYPE_V4SF_V4SF_SWAP, V4SF_FTYPE_V4SF_V2SI,
19086         V4SF_FTYPE_V4SF_V2DF, V4SF_FTYPE_V4SF_DI,
19087         V4SF_FTYPE_V4SF_SI, V2DI_FTYPE_V2DI_V2DI,
19088         V2DI_FTYPE_V16QI_V16QI, V2DI_FTYPE_V4SI_V4SI,
19089         V2DI_FTYPE_V2DF_V2DF, V2SI_FTYPE_V2SI_V2SI,
19090         V2SI_FTYPE_V4HI_V4HI, V2SI_FTYPE_V2SF_V2SF,
19091         V2DF_FTYPE_V2DF_V2DF, V2DF_FTYPE_V2DF_V2DF_SWAP,
19092         V2DF_FTYPE_V2DF_V4SF, V2DF_FTYPE_V2DF_DI,
19093         V2DF_FTYPE_V2DF_SI, V2SF_FTYPE_V2SF_V2SF,
19094         V1DI_FTYPE_V1DI_V1DI, V1DI_FTYPE_V8QI_V8QI and
19095         V1DI_FTYPE_V2SI_V2SI.
19096         (bdesc_2arg): Moved to ...
19097         (bdesc_args): Here.
19098         (ix86_init_mmx_sse_builtins): Updated.
19099         (ix86_expand_args_builtin): Updated.  Take a pointer
19100         to const struct builtin_description.  Handle comparison
19101         builtin functions.
19102         (ix86_expand_sse_compare): Take a new argument for swapping operands.
19103         (ix86_expand_builtin): Updated.
19104
19105         * config/i386/sse.md (ssse3_pmaddubswv8hi3): Renamed to ...
19106         (ssse3_pmaddubsw128): This.
19107         (ssse3_pmaddubswv4hi3): Renamed to ...
19108         (ssse3_pmaddubsw): This.
19109
19110         * doc/extend.texi (__builtin_ia32_packsswb128): Correct prototype.
19111         (__builtin_ia32_packssdw128): Likewise.
19112         (__builtin_ia32_packuswb128): Likewise.
19113         (__builtin_ia32_pmaddubsw): Likewise.
19114         (__builtin_ia32_pmaddubsw128): Likewise.
19115
19116 2008-04-30  Richard Guenther  <rguenther@suse.de>
19117
19118         PR tree-optimization/14847
19119         * tree-ssa-ifcombine.c (get_name_for_bit_test): New helper function.
19120         (recognize_bits_test): Use it.
19121         (recognize_single_bit_test): Likewise.
19122
19123 2008-04-30  Martin Jambor  <mjambor@suse.cz>
19124
19125         * ipa-cp.c (ipcp_init_stage): Calls ipa_set_called_with_variable_arg
19126         instead of setting number of formal parameters to zero.
19127         (ipcp_init_stage): Do not set the number of actual parameters to zero
19128         either.
19129         (ipcp_propagate_stage): Explicitly skipping all calls to nodes
19130         which are called with variable number of arguments.
19131         (ipcp_insert_stage): Explicitely skipping all nodes which are
19132         called with variable number of arguments.
19133         (ipcp_callsite_param_print): Skipps callsites to nodes with varaible
19134         number of parameters.
19135
19136         * ipa-prop.h (struct ipa_node_params): Added flag
19137         called_with_var_arguments
19138         (ipa_set_param_count): Added.  Changed sole setter to use it.
19139         (ipa_get_param_count): Added.  All readers of param_count
19140         converted to use it instead.
19141         (ipa_set_called_with_variable_arg): Added.
19142         (ipa_is_called_with_var_arguments): Added.
19143         (ipa_get_ith_param): Added.  All readers of param_decls converted
19144         to use it instead.
19145         (ipa_set_cs_argument_count): Added, sole writer to argument_count
19146         changed to use it.
19147         (ipa_get_cs_argument_count): Added, all readers of argument_count
19148         changed to cal it.
19149         (ipa_get_ith_jump_func): Added. Accessors of jump values changed
19150         to use it.
19151
19152         * ipa-prop.h (struct ipcp_formal): Renamed to ipcp_lattice
19153         (struct ipcp_lattice): Renamed cval_type to type
19154         (struct ipa_node_params): ipcp_cval renamed to ipcp_lattices
19155
19156         * ipa-cp.c (ipcp_cval_get_cvalue): Changed return value to tree
19157         (ipcp_cval_set_cvalue): Changed type of parameter value to tree
19158         (ipcp_insert_stage): Changed the type of variable cvalue to tree
19159         (ipcp_replace_map_create): Changed the type of parameter cvalue to tree
19160         (build_const_val): Changed the type of parameter cvalue to tree
19161         (ipcp_propagate_const): Changed the type of parameter cvalue to tree
19162         (ipcp_method_cval_set_cvalue_type): Renamed parameter cval_type1 to type
19163
19164         * ipa-prop.h (struct ipcp_formal): Replaced cvalue with tree called
19165         constant
19166
19167         * ipa-prop.c (ipa_methodlist_init): Renamed to ipa_init_func_list
19168         (ipa_methodlist_not_empty): Removed, the sole user now checks directly
19169         (ipa_add_method): Renamed to ipa_push_func_to_list
19170         (ipa_remove_method): Renamed to ipa_pop_func_from_list
19171         (ipa_callsite_param_count): Removed.
19172         (ipa_callsite_param_count_set): Removed.
19173         (ipa_callsite_param): Removed.
19174         (ipa_callsite_callee): Removed.
19175         (ipa_callsite_compute_param): Renamed to ipa_compute_jump_functions
19176         (ipa_callsite_compute_count): Renamed to ipa_count_arguments
19177         (ipa_method_formal_count): Removed.
19178         (ipa_method_formal_count_set): Removed.
19179         (ipa_method_get_tree): Removed.
19180         (ipa_method_tree_map_create): Removed.
19181         (ipa_method_compute_tree_map): Renamed to ipa_create_param_decls_array
19182         (ipa_create_param_decls_array): Creates the array itself
19183         (ipa_create_param_decls_array): Temporary variable info instead of
19184         a few dereferences.
19185         (ipa_method_formal_compute_count): Renamed to ipa_count_formal_params
19186         (ipa_method_compute_modify): Renamed to ipa_detect_param_modifications
19187         (get_type): Removed.
19188         (ipa_jf_get_info_type): Removed.
19189         (ipa_node_create): Renamed to ipa_create_node_params
19190         (ipa_free): Renamed to ipa_free_all_node_params
19191         (ipa_nodes_create): Renamed to ipa_create_all_node_params
19192         (ipa_edges_create): Renamed to ipa_create_all_edge_args
19193         (ipa_edges_free): Renamed to ipa_free_all_edge_args
19194         (ipa_nodes_free): Integrated into ipa_free_all_node_params and removed
19195         (ipa_free_all_node_params): Deallocation to jump_functions moved to
19196         ipa_free_all_edge_args
19197         (ipa_method_tree_print): Renamed to ipa_print_all_tree_maps
19198         (ipa_method_modify_print): Renamed to ipa_print_all_params_modified
19199         (ipa_create_methodlist_node): Removed.
19200         (ipa_methodlist_method): Removed.
19201         (ipa_methodlist_method_set): Removed.
19202         (ipa_methodlist_next_method): Removed.
19203         (ipa_methodlist_next_method_set): Removed.
19204         (ipa_method_is_modified): Removed.
19205         (ipa_method_modify_create): Removed.
19206         (ipa_method_modify_init): Temporary variable info instead of a few
19207         dereferences.
19208         (ipa_detect_param_modifications): Temporary variable info instead of
19209         a few dereferences.
19210         (ipa_compute_jump_functions): Temporary variable info instead of
19211         a few dereferences.
19212         (ipa_method_modify_set): Removed.
19213         (ipa_method_tree_map): Renamed to ipa_get_param_decl_index
19214         (ipa_get_param_decl_index): Now accepts struct ipa_node_params rather
19215         than craph_node as the first parameter.
19216         (ipa_method_modify_stmt): Renamed to ipa_check_stmt_modifications
19217         (ipa_method_modify_init): Removed.
19218         (ipa_compute_jump_functions): Added a temp variable instead of
19219         repeatadly dereferencing the cgraph_edge.aux pointer
19220         (ipa_callsite_param_set_type): Removed.
19221         (ipa_compute_jump_functions): i renamed to index and moved to
19222         an inner block
19223         (ipa_callsite_param_set_info_type_formal): Removed.
19224         (ipa_callsite_param_set_info_type): Removed.
19225         (ipa_callsite_param_map_create): Removed.
19226         (ipa_callsite_tree): Removed.
19227         (ipa_callsite_caller): Removed.
19228         (ipa_pop_func_from_list): return_method removed to return_func
19229
19230         * ipa-prop.h (enum cvalue_type): Renamed to ipa_lattice_type,
19231         prefixed all values with IPA_. Changed all users.
19232         (enum jump_func_type): Rnamed UNKNOWN_IPATYPE to IPA_UNKNOWN,
19233         CONST_IPATYPE to IPA_CONST, CONST_IPATYPE_REF to IPA_CONST_REF
19234         and FORMAL_IPATYPE IPA_PASS_THROUGH.
19235         (union parameter_info): Renamed to jump_func_value.
19236         (union jump_func_value): Renamed value to constant
19237         (struct ipa_jump_func): Renamed info_type to value
19238         (struct ipa_node): Renamed to ipa_node_params
19239         (struct ipa_node_params): Renamed ipa_arg_num to param_count
19240         (struct ipa_node_params): Renamed ipa_param_tree to param_decls
19241         (struct ipa_node_params): Renamed ipa_mod to modified_flags
19242         (struct ipa_edge): Renamed to ipa_edge_args
19243         (struct ipa_edge_args): Renamed ipa_param_num to argument_count
19244         (struct ipa_edge_args): Renamed ipa_param_map to jump_functions
19245         (struct ipa_methodlist): Renamed to ipa_func_list
19246         (struct ipa_func_list): method_p renamed to node, next_method
19247         renamed to next
19248         (ipa_methodlist_p): Removed, switched all users to struct pointer
19249         (IS_VALID_TREE_MAP_INDEX): Renamed to IS_VALID_JUMP_FUNC_INDEX
19250
19251 2008-04-30  Alan Modra  <amodra@bigpond.net.au>
19252
19253         * config/rs6000/rs6000.c (ALWAYS_RESTORE_ALTIVEC_BEFORE_POP): Define.
19254         (rs6000_emit_epilogue): Use backchain to restore only when we
19255         have a large frame.  Make use of frame pointer to restore if we
19256         have one.  Handle ALWAYS_RESTORE_ALTIVEC_BEFORE_POP.
19257
19258 2008-04-29  Paolo Bonzini  <bonzini@gnu.org>
19259
19260         * config/avr/avr.md (*sbrx_branch, *sbix_branch, *sbix_branch_tmp):
19261         Add mode to zero_extract.
19262         (sign bit tests peepholes): (Ditto.).
19263
19264 2008-04-29  H.J. Lu  <hongjiu.lu@intel.com>
19265
19266         * config/i386/i386.c (ix86_builtins): Replace Prescott New
19267         Instructions in comments with SSE3.
19268         (ix86_builtin_type): This.  Add FLOAT128_FTYPE_FLOAT128,
19269         INT64_FTYPE_V4SF, INT64_FTYPE_V2DF, INT_FTYPE_V16QI,
19270         INT_FTYPE_V8QI, INT_FTYPE_V4SF, INT_FTYPE_V2DF,
19271         V16QI_FTYPE_V16QI, V8HI_FTYPE_V8HI, V8HI_FTYPE_V16QI,
19272         V8QI_FTYPE_V8QI, V4SI_FTYPE_V4SI, V4SI_FTYPE_V16QI,
19273         V4SI_FTYPE_V4SF, V4SI_FTYPE_V8HI, V4SI_FTYPE_V2DF,
19274         V4HI_FTYPE_V4HI, V4SF_FTYPE_V4SF, V4SF_FTYPE_V4SI,
19275         V4SF_FTYPE_V2DF, V2DI_FTYPE_V2DI, V2DI_FTYPE_V16QI,
19276         V2DI_FTYPE_V8HI, V2DI_FTYPE_V4SI, V2DF_FTYPE_V2DF,
19277         V2DF_FTYPE_V4SI, V2DF_FTYPE_V4SF, V2DF_FTYPE_V2SI,
19278         V2SI_FTYPE_V2SI, V2SI_FTYPE_V4SF, V2SI_FTYPE_V2SF,
19279         V2SI_FTYPE_V2DF, V2SF_FTYPE_V2SF and V2SF_FTYPE_V2SI.
19280         (bdesc_sse_args): Renamed to ...
19281         (bdesc_args): This.  Add IX86_BUILTIN_PF2ID, IX86_BUILTIN_PFRCP,
19282         IX86_BUILTIN_PFRSQRT, IX86_BUILTIN_PI2FD, IX86_BUILTIN_PF2IW,
19283         IX86_BUILTIN_PSWAPDSI, IX86_BUILTIN_PSWAPDSF and
19284         IX86_BUILTIN_FABSQ.
19285         (bdesc_1arg): Moved to ...
19286         (bdesc_args): Here.
19287         (ix86_init_mmx_sse_builtins): Updated.  Replace Prescott New
19288         Instructions in comments with SSE3.
19289         (ix86_expand_sse_operands_builtin): Renamed to ...
19290         (ix86_expand_args_builtin): This.  Updated.
19291         (ix86_expand_unop1_builtin): Update comments.
19292         (ix86_expand_builtin): Updated.
19293
19294 2008-04-29  Richard Guenther  <rguenther@suse.de>
19295
19296         PR tree-optimization/36078
19297         * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely):
19298         Update virtual SSA form after cleaning up the CFG.
19299
19300 2008-04-29  Richard Guenther  <rguenther@suse.de>
19301
19302         PR middle-end/15255
19303         * fold-const.c (fold_binary): Fold (A + A) * C to A * 2*C.
19304
19305 2008-04-29  Richard Guenther  <rguenther@suse.de>
19306
19307         * tree-ssa-alias.c (finalize_ref_all_pointers): Remove.
19308         (compute_may_aliases): Do not call finalize_ref_all_pointers.
19309         (compute_flow_insensitive_aliasing): Do not treat
19310         PTR_IS_REF_ALL pointers special.
19311         (get_smt_for): Likewise.
19312         (may_alias_p): Re-structure.
19313         (is_escape_site): A ref-all pointer conversion is not an escape site.
19314         * tree-ssa-structalias.c (find_what_p_points_to): Do not treat
19315         PTR_IS_REF_ALL pointers special.
19316         * tree-ssa-structalias.h (struct alias_info): Remove
19317         ref_all_symbol_mem_tag field.
19318         (PTR_IS_REF_ALL): Remove.
19319
19320 2008-04-29  Richard Guenther  <rguenther@suse.de>
19321
19322         PR middle-end/36077
19323         * fold-const.c (extract_muldiv_1): In combining division constants
19324         make sure to never overflow.
19325
19326 2008-04-29  Nick Clifton  <nickc@redhat.com>
19327
19328         * doc/tm.texi (RETURN_ADDR_RTX): Fix typo.
19329
19330 2008-04-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
19331
19332         PR bootstrap/35169
19333         * optc-gen.awk: Work around HP-UX/IA awk bug.
19334
19335 2008-04-28  Danny Smith  <dannysmith@users.sourceforge.net>
19336
19337         * config/i386/cygming-crtend.c (register_frame_ctor): Revert my
19338         2008-04-25 commit.
19339
19340 2008-04-28  Uros Bizjak  <ubizjak@gmail.com>
19341
19342         PR target/36073
19343         * config/i386/i386.md
19344         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit):
19345         Change operand 1 predicate to nonimmediate_operand.
19346
19347 2008-04-28  Jakub Jelinek  <jakub@redhat.com>
19348
19349         PR debug/36060
19350         * dwarf2out.c (struct die_struct): Mark as chain_circular through
19351         die_sub field.
19352         * gengtype.c (walk_type, write_func_for_structure): Handle
19353         chain_circular.
19354         * doc/gty.texi: Document chain_circular.
19355
19356 2008-04-28  Richard Guenther  <rguenther@suse.de>
19357
19358         PR tree-optimization/36066
19359         * tree-vrp.c (execute_vrp): Cleanup the CFG only after finalizing
19360         SCEV and loop.
19361
19362 2008-04-28  Uros Bizjak  <ubizjak@gmail.com>
19363
19364         PR target/36064
19365         * config/i386/i386.md
19366         (floatdi<X87MODEF:mode>2_i387_with_xmm splitters):
19367         Use match_scratch instead of match_operand for operands 3 and 4.
19368
19369 2008-04-27  Richard Guenther  <rguenther@suse.de>
19370
19371         PR tree-optimization/18754
19372         PR tree-optimization/34223
19373         * tree-pass.h (pass_complete_unrolli): Declare.
19374         * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Print
19375         loop size before and after unconditionally of UL_NO_GROWTH in effect.
19376         Rewrite loop into loop closed SSA form if it is not already.
19377         (tree_unroll_loops_completely): Re-structure to iterate over
19378         innermost loops with intermediate CFG cleanups.
19379         Unroll outermost loops only if requested or the code does not grow
19380         doing so.
19381         * tree-ssa-loop.c (gate_tree_vectorize): Don't shortcut if no
19382         loops are available.
19383         (tree_vectorize): Instead do so here.
19384         (tree_complete_unroll): Also unroll outermost loops.
19385         (tree_complete_unroll_inner): New function.
19386         (gate_tree_complete_unroll_inner): Likewise.
19387         (pass_complete_unrolli): New pass.
19388         * tree-ssa-loop-manip.c (find_uses_to_rename_use): Only record
19389         uses outside of the loop.
19390         (tree_duplicate_loop_to_header_edge): Only verify loop-closed SSA
19391         form if it is available.
19392         * tree-flow.h (tree_unroll_loops_completely): Add extra parameter.
19393         * passes.c (init_optimization_passes): Schedule complete inner
19394         loop unrolling pass before the first CCP pass after final inlining.
19395
19396 2008-04-27  Nathan Sidwell  <nathan@codesourcery.com>
19397
19398         * targhooks.h (default_emutls_var_fields,
19399         default_emutls_var_init): Declare.
19400         * tree.h (DECL_THREAD_LOCAL): Compare against TLS_MODEL_REAL.
19401         * target.h (struct gcc_target): Add struct emutls member.
19402         * target-def.h (TARGET_EMUTLS_GET_ADDRESS,
19403         TARGET_EMUTLS_REGISTER_COMMON, TARGET_EMUTLS_VAR_SECTION,
19404         TARGET_EMUTLS_TMPL_SECTION, TARGET_EMUTLS_VAR_PREFIX,
19405         TARGET_EMUTLS_TMPL_PREFIX, TARGET_EMUTLS_VAR_FIELDS,
19406         TARGET_EMUTLS_VAR_INIT, TARGET_EMUTLS_DEBUG_FORM_TLS_ADDRESS,
19407         TARGET_EMUTLS_VAR_ALIGN_FIXED, TARGET_EMUTLS): New.
19408         (TARGET_INITIALIZER): Add TARGET_EMUTLS.
19409         * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS,
19410         BUILT_IN_EMUTLS_REGISTER_COMMON): Get name from targetm structure.
19411         * dwarf2out.c (loc_descriptor_from_tree_1): Check if emutls can
19412         emit debug information.
19413         * coretypes.h (tls_model): Add TLS_MODEL_EMULATED, TLS_MODEL_REAL.
19414         * varasm.c: Include targhooks.h.
19415         (emutls_object_section, emutls_tmpl_section): New.
19416         (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): Remove.
19417         (EMUTLS_SEPARATOR): New.
19418         (prefix_name): New.
19419         (get_emutls_object_name): New.
19420         (default_emutls_var_fields): New, broken out of ...
19421         (get_emutls_object_type): ... here.  Adjust to use target hooks.
19422         (get_emutls_init_templ_addr): Adjust to use target hooks.
19423         (emutls_decl): Adjust to use target hooks.
19424         (emutls_finish): Likewise.
19425         (default_emutls_var_init): New, broken out of ...
19426         (assemble_variable): ... here.  Adjust to use target hooks.
19427         * output.h (enum section_category): Add SECCAT_EMUTLS_VAR,
19428         SECCAT_EMUTLS_TMPL.
19429         * c-common.c (handle_section_attribute): Prevent overriding
19430         sections for emulated tls with special sections.
19431         * config/i386/i386.c (x86_64_elf_select_section): Add
19432         SECCAT_EMUTLS_VAR and SECCAT_EMUTLS_TMPL.
19433         (x86_64_elf_unique_section): Likewise.
19434         * config/vxworks.c: Include tree.h.
19435         (vxworks_emutls_var_fields, vxworks_emutls_var_init): New.
19436         (vxworks_override_options): Set TLS scheme.
19437         * doc/tm.texi (Emulated TLS): New node.
19438
19439 2008-04-26  Simon Baldwin <simonb@google.com>
19440
19441         PR c/35652
19442         * builtins.c (c_strlen): Suppressed multiple warnings that can occur
19443         with propagated string constants.
19444
19445 2008-04-26  Uros Bizjak  <ubizjak@gmail.com>
19446
19447         * config/i386/i386.md (fix_trunc<mode>_i387_fisttp_with_temp): Use 'X'
19448         constraint for operand 2 when operand 0 is memory operand.
19449         (fix_truncdi_i387_with_temp): : Use 'X' constraint for operand 4 when
19450         operand 0 is memory operand.
19451         (fix_trunc<mode>_i387_with_temp): Ditto.
19452         (*floatsi<mode>2_vector_mixed_with_temp): Use 'X' constraint for
19453         operand 2 when operand 1 is memory operand.
19454         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_with_temp): Ditto.
19455         (*floatsi<mode>2_vector_sse_with_temp): Ditto.
19456         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_with_temp): Ditto.
19457         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp): Ditto.
19458         (floatdi<X87MODEF:mode>2_i387_with_xmm): Use 'X' constraint for
19459         operands 2,3 and 4 when operand 1 is memory operand.
19460         (fistdi2_with_temp): Use 'X' constraint for operand 2 when operand 0
19461         is memory operand.
19462         (fistdi2_floor_with_temp): Ditto.
19463         (fist<mode>2_floor_with_temp): Ditto.
19464         (fistdi2_ceil_with_temp): Ditto.
19465         (fist<mode>2_ceil_with_temp): Ditto.
19466         (*truncdfsf_fast_mixed): Merge alternatives 0 and 1.
19467
19468 2008-04-26  David Daney  <ddaney@avtrex.com>
19469
19470         * config/mips/mips.md (UNSPEC_COMPARE_AND_SWAP_12): New
19471         unspec_volitile.
19472         (UNSPEC_SYNC_OLD_OP, UNSPEC_SYNC_NEW_OP, UNSPEC_SYNC_EXCHANGE,
19473         UNSPEC_MEMORY_BARRIER, UNSPEC_SET_GOT_VERSION,
19474         UNSPEC_UPDATE_GOT_VERSION): Renumber.
19475         (sync_compare_and_swap<mode>): New expand for QI and HI modes.
19476         (compare_and_swap_12): New insn.
19477         * config/mips/mips-protos.h (mips_expand_compare_and_swap_12): Declare.
19478         * config/mips/mips.c (mips_force_binary): New function.
19479         (mips_emit_int_order_test, mips_expand_synci_loop): Use it.
19480         (mips_expand_compare_and_swap_12): New function.
19481         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP_12): New macro.
19482
19483 2008-04-25  Jan Hubicka  <jh@suse.cz>
19484
19485         PR testsuite/35843
19486         * cfgexpand.c (pass_expand): Turn into RTL pass.
19487         * passes.c (execute_one_pass): Do pass typechecking after execution.
19488         * tree-pass.h (pass_expand): Turn into RTL pass.
19489
19490         * function.h (struct rtl_data): Move here fields
19491         accesses_prior_frames, calls_eh_return, saves_all_registers,
19492         has_nonlocal_goto, has_asm_statement, is_thunk,
19493         all_throwers_are_sibcalls, limit_stack, profile, uses_const_pool,
19494         uses_pic_offset_table, uses_eh_lsda, tail_call_emit,
19495         arg_pointer_save_area_init from struct function; turn into bool.
19496         (struct function): Move
19497         calls_eh_return, saves_all_registers, has_nonlocal_goto,
19498         has_asm_statement, is_thunk, all_throwers_are_sibcalls, limit_stack,
19499         profile, uses_const_pool, uses_pic_offset_table, uses_eh_lsda,
19500         tail_call_emit, arg_pointer_save_area_init
19501         into struct rtl_data.  Remove recursive_call_emit and gimplified flags.
19502         (current_function_returns_struct, current_function_returns_pcc_struct,
19503         current_function_calls_setjmp, current_function_calls_alloca,
19504         current_function_accesses_prior_frames,
19505         current_function_calls_eh_return, current_function_is_thunk,
19506         current_function_stdarg, current_function_profile,
19507         current_function_limit_stack, current_function_uses_pic_offset_table,
19508         current_function_uses_const_pool, current_function_has_nonlocal_label,
19509         current_function_saves_all_registers,
19510         current_function_has_nonlocal_goto,
19511         current_function_has_asm_statement): Remove accesor macros.
19512         * ra-conflict.c (global_conflicts): Update.
19513         * tree-tailcall.c (suitable_for_tail_opt_p): Update.
19514         (suitable_for_tail_call_opt_p): Update.
19515         * builtins.c (expand_builtin_return_addr): Update.
19516         (expand_builtin_setjmp_setup): Update.
19517         (expand_builtin_nonlocal_goto): Update.
19518         * final.c (final_start_function): Update.
19519         (profile_function): Update.
19520         (leaf_function_p): Update.
19521         (only_leaf_regs_used): Update.
19522         * df-scan.c (df_get_exit_block_use_set): Update.
19523         * dojump.c (clear_pending_stack_adjust): Update.
19524         * tree-stdarg.c (gate_optimize_stdarg): Update.
19525         * gimple-low.c (lower_function_body): Update.
19526         * global.c (compute_regsets): Update.
19527         (global_alloc): Update.
19528         * dwarf2out.c (dwarf2out_begin_prologue): Update.
19529         * expr.c (expand_assignment): Update.
19530         * dse.c (dse_step0): Update.
19531         (dse_step1): Update.
19532         * c-decl.c (store_parm_decls): Update.
19533         * local-alloc.c (combine_regs): Update.
19534         (find_free_reg): Update.
19535         * function.c (assign_parms_augmented_arg_list): Update.
19536         (assign_parm_find_data_types): Update.
19537         (assign_parms): Update.
19538         (allocate_struct_function): Update.
19539         (expand_function_start): Update.
19540         (expand_function_end): Update.
19541         (get_arg_pointer_save_area): Update.
19542         (thread_prologue_and_epilogue_insns): Update.
19543         (rest_of_match_asm_constraints): Update.
19544         * stor-layout.c (variable_size): Update.
19545         * gcse.c (gcse_main): Update.
19546         (bypass_jumps): Update.
19547         * gimplify.c (gimplify_function_tree): Update.
19548         * calls.c (emit_call_1): Update.
19549         (expand_call): Update.
19550         * bt-load.c (compute_defs_uses_and_gen): Update.
19551         * except.c (sjlj_assign_call_site_values): Update.
19552         (sjlj_emit_function_enter): Update.
19553         (can_throw_external): Update.
19554         (set_nothrow_function_flags): Update.
19555         (expand_builtin_unwind_init): Update.
19556         (expand_eh_return): Update.
19557         (convert_to_eh_region_ranges): Update.
19558         (output_function_exception_table): Update.
19559         * emit-rtl.c (gen_tmp_stack_mem): Update.
19560         * cfgexpand.c (expand_used_vars): Update.
19561         (tree_expand_cfg): Update.
19562         * cfgcleanup.c (rest_of_handle_jump): Update.
19563         * explow.c (allocate_dynamic_stack_space): Update.
19564         * varasm.c (assemble_start_function): Update.
19565         (force_const_mem): Update.
19566         (mark_constant_pool): Update.
19567         * tree-optimize.c (tree_rest_of_compilation): Update.
19568         * stack-ptr-mod.c (notice_stack_pointer_modification): Update.
19569         * tree-cfg.c (notice_special_calls): Update.
19570         (is_ctrl_altering_stmt): Update.
19571         (tree_can_make_abnormal_goto): Update.
19572         (tree_purge_dead_abnormal_call_edges): Update.
19573         * config/alpha/predicates.md: Update.
19574         * config/alpha/alpha.c (alpha_sa_mask): Update.
19575         (alpha_sa_size): Update.
19576         (alpha_does_function_need_gp): Update.
19577         (alpha_expand_prologue): Update.
19578         (alpha_start_function): Update.
19579         (alpha_output_function_end_prologue): Update.
19580         (alpha_expand_epilogue): Update.
19581         * config/frv/frv.c (frv_stack_info): Update.
19582         (frv_expand_epilogue): Update.
19583         * config/s390/s390.c (s390_regs_ever_clobbered): Update.
19584         (s390_register_info): Update.
19585         (s390_frame_info): Update.
19586         (s390_init_frame_layout): Update.
19587         (s390_can_eliminate): Update.
19588         (save_gprs): Update.
19589         * config/spu/spu.c (spu_split_immediate): Update.
19590         (need_to_save_reg): Update.
19591         (spu_expand_prologue): Update.
19592         (spu_expand_epilogue): Update.
19593         * config/sparc/sparc.md: Update.
19594         * config/sparc/sparc.c (eligible_for_return_delay): Update.
19595         (sparc_tls_got): Update.
19596         (legitimize_pic_address): Update.
19597         (sparc_emit_call_insn): Update.
19598         (sparc_expand_prologue): Update.
19599         (output_return): Update.
19600         (print_operand): Update.
19601         (sparc_function_ok_for_sibcall): Update.
19602         * config/sparc/sparc.h (EXIT_IGNORE_STACK): Update.
19603         * config/m32r/m32r.md: Update.
19604         * config/m32r/m32r.c (MUST_SAVE_RETURN_ADDR): Update.
19605         (m32r_compute_frame_size): Update.
19606         (m32r_expand_prologue): Update.
19607         (m32r_expand_epilogue): Update.
19608         (m32r_legitimize_pic_address): Update.
19609         * config/m32r/m32r.h (FRAME_POINTER_REQUIRED): Update.
19610         * config/i386/linux.h (SUBTARGET_FRAME_POINTER_REQUIRED): Update.
19611         * config/i386/i386.c (ix86_frame_pointer_required): Update.
19612         (gen_push): Update.
19613         (ix86_save_reg): Update.
19614         (ix86_compute_frame_layout): Update.
19615         (ix86_expand_prologue): Update.
19616         (ix86_expand_epilogue): Update.
19617         * config/sh/sh.c (output_stack_adjust): Update.
19618         (calc_live_regs): Update.
19619         (sh5_schedule_saves): Update.
19620         (sh_expand_prologue): Update.
19621         (sh_expand_epilogue): Update.
19622         (sh_setup_incoming_varargs): Update.
19623         (sh_allocate_initial_value): Update.
19624         (sh_get_pr_initial_val): Update.
19625         * config/sh/sh.h (SHMEDIA_REGS_STACK_ADJUST): Update.
19626         * config/sh/sh.md (label:): Update.
19627         * config/avr/avr.c (out_movhi_mr_r): Update.
19628         * config/crx/crx.h (enum): Update.
19629         * config/xtensa/xtensa.h (along): Update.
19630         * config/stormy16/stormy16.c Update.
19631         (xstormy16_compute_stack_layout): Update.
19632         * config/fr30/fr30.c (MUST_SAVE_RETURN_POINTER): Update.
19633         (fr30_expand_prologue): Update.
19634         * config/cris/cris.c (cris_conditional_register_usage): Update.
19635         (cris_reg_saved_in_regsave_area): Update.
19636         (cris_initial_frame_pointer_offset): Update.
19637         (cris_simple_epilogue): Update.
19638         (cris_expand_prologue): Update.
19639         (cris_expand_epilogue): Update.
19640         (cris_expand_pic_call_address): Update.
19641         (cris_asm_output_symbol_ref): Update.
19642         (cris_asm_output_label_ref): Update.
19643         * config/cris/cris.md Update.
19644         * config/iq2000/iq2000.c (compute_frame_size): Update.
19645         (iq2000_expand_epilogue): Update.
19646         * config/mt/mt.h (save_direction): Update.
19647         * config/mn10300/mn10300.c (mn10300_function_value): Update.
19648         * config/ia64/ia64.c (ia64_compute_frame_size): Update.
19649         (ia64_secondary_reload_class): Update.
19650         * config/m68k/m68k.c (m68k_save_reg): Update.
19651         (m68k_expand_prologue): Update.
19652         (m68k_expand_epilogue): Update.
19653         (legitimize_pic_address): Update.
19654         * config/rs6000/rs6000.c (rs6000_got_register): Update.
19655         (first_reg_to_save): Update.
19656         (first_altivec_reg_to_save): Update.
19657         (compute_vrsave_mask): Update.
19658         (compute_save_world_info): Update.
19659         (rs6000_stack_info): Update.
19660         (spe_func_has_64bit_regs_p): Update.
19661         (rs6000_ra_ever_killed): Update.
19662         (rs6000_emit_eh_reg_restore): Update.
19663         (rs6000_emit_allocate_stack): Update.
19664         (rs6000_emit_prologue): Update.
19665         (rs6000_emit_epilogue): Update.
19666         (rs6000_output_function_epilogue): Update.
19667         (output_profile_hook): Update.
19668         (rs6000_elf_declare_function_name): Update.
19669         * config/rs6000/rs6000.h (rs6000_args): Update.
19670         * config/rs6000/rs6000.md: Update.
19671         * config/mcore/mcore.c (mcore_expand_prolog): Update.
19672         * config/arc/arc.c (arc_output_function_epilogue): Update.
19673         * config/arc/arc.h (FRAME_POINTER_REQUIRED): Update.
19674         * config/darwin.c (machopic_function_base_name): Update.
19675         * config/score/score3.c (score3_compute_frame_size): Update.
19676         (rpush): Update.
19677         (rpop): Update.
19678         (score3_epilogue): Update.
19679         * config/score/score7.c (score7_compute_frame_size): Update.
19680         (score7_prologue): Update.
19681         (score7_epilogue): Update.
19682         * config/score/score.h (FRAME_POINTER_REQUIRED): Update.
19683         * config/arm/linux-elf.h (SUBTARGET_FRAME_POINTER_REQUIRED): Update.
19684         * config/arm/arm.c (use_return_insn): Update.
19685         (require_pic_register): Update.
19686         (arm_load_pic_register): Update.
19687         (arm_compute_save_reg0_reg12_mask): Update.
19688         (arm_compute_save_reg_mask): Update.
19689         (thumb1_compute_save_reg_mask): Update.
19690         (output_return_instruction): Update.
19691         (arm_output_function_prologue): Update.
19692         (arm_output_epilogue): Update.
19693         (arm_get_frame_offsets): Update.
19694         (arm_expand_prologue): Update.
19695         (thumb_pushpop): Update.
19696         (thumb_exit): Update.
19697         (thumb1_expand_prologue): Update.
19698         (thumb1_expand_epilogue): Update.
19699         (arm_unwind_emit): Update.
19700         (arm_output_fn_unwind): Update.
19701         * config/arm/arm.h (FRAME_POINTER_REQUIRED): Update.
19702         * config/arm/arm.md: Update.
19703         * config/pa/pa.md: Update.
19704         * config/pa/pa.c (legitimize_pic_address): Update.
19705         (compute_frame_size): Update.
19706         (hppa_expand_prologue): Update.
19707         (hppa_expand_epilogue): Update.
19708         (borx_reg_operand): Update.
19709         * config/pa/pa.h (FRAME_POINTER_REQUIRED): Update.
19710         (HARD_REGNO_RENAME_OK): Update.
19711         * config/mips/mips.c (mips_global_pointer): Update.
19712         (mips_save_reg_p): Update.
19713         (mips_compute_frame_info): Update.
19714         (mips_frame_pointer_required): Update.
19715         (mips_expand_prologue): Update.
19716         (mips_expand_epilogue): Update.
19717         (mips_can_use_return_insn): Update.
19718         (mips_reorg_process_insns): Update.
19719         * config/v850/v850.c (compute_register_save_size): Update.
19720         * config/mmix/mmix.h (FRAME_POINTER_REQUIRED): Update.
19721         * config/mmix/mmix.c (along): Update.
19722         (mmix_expand_epilogue): Update.
19723         * config/bfin/bfin.c (legitimize_pic_address): Update.
19724         (must_save_p): Update.
19725         (stack_frame_needed_p): Update.
19726         (add_to_reg): Update.
19727         (bfin_expand_prologue): Update.
19728         * stmt.c (expand_asm_operands): Update.
19729         * reload1.c (reload): Update.
19730         (init_elim_table): Update.
19731
19732 2008-04-25  Bob Wilson  <bob.wilson@acm.org>
19733
19734         * optabs.c (expand_float): Fix REG_EQUAL for UNSIGNED_FLOAT libcall.
19735
19736 2008-04-25  H.J. Lu  <hongjiu.lu@intel.com>
19737
19738         * config/i386/sse.md (mov<mode>): Replace SSEMODEI with SSEMODE.
19739         (*mov<mode>_internal): Likewise.  Support V4SF and V2DF.
19740         (mov<mode>): Removed.
19741         (*movv4sf_internal): Likewise.
19742         (*movv2df_internal): Likewise.
19743
19744 2008-04-25  Pompapathi V Gadad <Pompapathi.V.Gadad@nsc.com>
19745
19746         * config.gcc (crx-*-elf): Remove deprecation.
19747
19748 2008-04-25  Danny Smith  <dannysmith@users.sourceforge.net>
19749
19750         * config/i386/cygming-crtend.c (register_frame_ctor): Register
19751         __gcc_deregister_frame with atexit.
19752         (deregister_frame_dtor): Remove.
19753
19754 2008-04-24  Nathan Froyd  <froydnj@codesourcery.com>
19755             Nathan Sidwell  <nathan@codesourcery.com>
19756
19757         * config/rs6000/rs6000.opt (mspe): Remove Var property.
19758         (misel): Likewise.
19759         * config/rs6000/rs6000.h (rs6000_spe): Declare.
19760         (rs6000_isel): Likewise.
19761         * config/rs6000/rs6000.c (rs6000_spe): New variable.
19762         (rs6000_isel): New variable.
19763         (rs6000_handle_option): Handle OPT_mspe and OPT_misel.
19764
19765 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
19766
19767         PR c++/35758
19768         * c-common.c (handle_vector_size_attribute): Call
19769         lang_hooks.types.reconstruct_complex_type instead of
19770         reconstruct_complex_type.
19771         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Likewise.
19772         * config/spu/spu.c (spu_handle_vector_attribute): Likewise.
19773         * langhooks.h (struct lang_hooks_for_types): Add
19774         reconstruct_complex_type hook.
19775         * langhooks-def.h (LANG_HOOKS_RECONSTRUCT_COMPLEX_TYPE): Define.
19776         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add it.
19777
19778 2008-04-24  Richard Guenther  <rguenther@suse.de>
19779
19780         * c-common.h (check_builtin_function_arguments): Declare.
19781         * c-common.c (validate_nargs): New function.
19782         (check_builtin_function_arguments): Likewise.
19783         * c-typeck.c (build_function_call): Call
19784         check_builtin_function_arguments.
19785         * builtins.c (fold_builtin_classify): Remove error reporting code.
19786         (fold_builtin_unordered_cmp): Likewise.
19787         (fold_builtin_1): Likewise.
19788         (fold_builtin_n): Likewise.
19789
19790 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
19791
19792         PR tree-optimization/36008
19793         * fold-const.c (try_move_mult_to_index): If s == NULL, divide
19794         the original op1, rather than delta by step.
19795
19796 2008-04-22  Antoniu Pop  <antoniu.pop@gmail.com>
19797             Sebastian Pop  <sebastian.pop@amd.com>
19798
19799         * tree-parloops.c (take_address_of, eliminate_local_variables_1,
19800         eliminate_local_variables_stmt, eliminate_local_variables,
19801         separate_decls_in_loop_name, separate_decls_in_loop_stmt,
19802         separate_decls_in_loop, gen_parallel_loop): Make them work on a region
19803         of code delimited by two edges in the CFG.
19804         (separate_decls_in_loop_name): Renamed separate_decls_in_region_name.
19805         (separate_decls_in_loop_stmt): Renamed separate_decls_in_region_stmt.
19806         (separate_decls_in_loop): Renamed separate_decls_in_region.  Isolate
19807         the case of parallelisation of reductions.
19808         (expr_invariant_in_region_p): New.
19809
19810         * tree-flow.h (gather_blocks_in_sese_region): Declared.
19811         * tree-cfg.c (gather_blocks_in_sese_region): Extern.
19812
19813 2008-04-24  Ira Rosen  <irar@il.ibm.com>
19814             Richard Guenther  <rguenther@suse.de>
19815
19816         PR tree-optimization/36034
19817         * tree-vect-analyze.c (vect_analyze_group_access): SLP is
19818         incapable of dealing with loads with gaps.
19819
19820 2008-04-24  Rafael Espíndola  <espindola@google.com>
19821
19822         * tree-flow.h (vrp_evaluate_conditional): Change signature.
19823         * tree-ssa-propagate.c (fold_predicate_in): Update call to
19824         vrp_evaluate_conditional.
19825         * tree-vrp.c (vrp_evaluate_conditional_warnv): Remove.
19826         (vrp_evaluate_conditional): Split the cond argument.
19827         (vrp_visit_cond_stmt): Use vrp_evaluate_conditional_warnv_with_ops.
19828         (simplify_stmt_for_jump_threading): Update call to
19829         vrp_evaluate_conditional.
19830
19831 2008-04-24  Ira Rosen  <irar@il.ibm.com>
19832
19833         PR tree-optimization/35982
19834         * tree-vect-analyze.c (vect_check_interleaving): Check that the
19835         interleaved data-refs are of the same type.
19836
19837 2008-04-24  Danny Smith  <dannysmith@users.net>
19838
19839         * c-format.c (check_format_info_main): Use strncmp rather than a
19840         magic prefix to handle multichar length specs.
19841         * config/i386/msformat-c.c (format_length_info ms_printf_length_specs):
19842         Don't prefix "I64" and "I32" with '\0'.
19843
19844 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
19845
19846         PR target/36015
19847         * config/i386/i386.c (init_cumulative_args): Don't pass anything
19848         in registers for -m32 only if stdarg_p (fntype).
19849
19850 2008-04-24  Uros Bizjak  <ubizjak@gmail.com>
19851
19852         PR rtl-optimization/36006
19853         * expmed.c (store_fixed_bit_field): Copy op0 rtx before moving
19854         temp to op0 in order to avoid invalid rtx sharing.
19855
19856 2008-04-23  Paolo Bonzini  <bonzini@gnu.org>
19857
19858         * tree-cfg.c (verify_expr): Check with is_gimple_address.  Don't
19859         check TREE_INVARIANT.
19860         * tree-gimple.c (is_gimple_address): New.
19861         (is_gimple_invariant_address): Simplify using decl_address_invariant_p.
19862         * tree-gimple.h (is_gimple_address): New.
19863         * tree.h (decl_address_invariant_p): New.
19864         * tree.c (make_node_stat): Don't set TREE_INVARIANT.
19865         (build_string): Likewise.
19866         (decl_address_invariant_p): New, from is_gimple_invariant_address.
19867         (tree_invariant_p_1): Likewise.
19868         (save_expr): Use it.
19869         (tree_invariant_p): New.
19870         (skip_simple_arithmetic): Use it.
19871         (stabilize_reference_1): Use it.
19872         (recompute_tree_invariant_for_addr_expr): Don't update TREE_INVARIANT,
19873         simplify.
19874         (build1_stat): Drop code to compute TREE_INVARIANT.
19875         (build2_stat): Drop code to compute TREE_INVARIANT.
19876         (build3_stat): Drop code to compute TREE_INVARIANT.
19877         (build4_stat): Drop code to compute TREE_INVARIANT.
19878         (build5_stat): Drop code to compute TREE_INVARIANT.
19879         (build7_stat): Drop code to compute TREE_INVARIANT.
19880         (merge_dllimport_decl_attributes): Don't mention TREE_INVARIANT.
19881         * tree.h (struct tree_base): Remove invariant_flag.
19882         (TREE_INVARIANT): Remove.
19883         * builtins.c (build_string_literal): Don't set TREE_INVARIANT.
19884         (fold_builtin_expect): Check TREE_CONSTANT.
19885         * tree-ssa-ccp.c (fold_stmt_r): Adjust comment.
19886         * c-tree.h (c_expr_to_decl): Drop third parameter.
19887         * c-typeck.c (build_external_ref): Don't set TREE_INVARIANT.
19888         (build_c_cast): Don't set TREE_INVARIANT.
19889         (pop_init_level): Don't set TREE_INVARIANT.
19890         (c_objc_common_truthvalue_conversion): Don't set TREE_INVARIANT.
19891         * gimplify.c (gimplify_init_ctor_preeval): Add assertion, test
19892         TREE_CONSTANT.
19893         (gimplify_init_constructor): Don't set TREE_INVARIANT.
19894         (gimplify_addr_expr): Adjust comment.
19895         * tree-mudflap.c (mf_build_string):
19896         * print-tree.c (print_node): Don't print TREE_INVARIANT.
19897         * tree-nested.c (convert_nonlocal_reference): Adjust comment.
19898         * c-common.c (fix_string_type): Don't set TREE_INVARIANT.
19899         * langhooks-def.h (lhd_expr_to_decl): Drop third parameter.
19900         * langhooks.c (lhd_expr_to_decl): Drop third parameter.
19901         * langhooks.h (struct lang_hooks): Drop third parameter from
19902         expr_to_decl.
19903
19904 2008-04-23  Richard Guenther  <rguenther@suse.de>
19905
19906         PR tree-optimization/27799
19907         PR tree-optimization/32921
19908         PR tree-optimization/32624
19909         * tree-ssa-structalias.c (merge_smts_into): Only merge the
19910         SMTs aliases and the tag itself into the solution.
19911         * tree-ssa-alias.c (compute_flow_sensitive_aliasing): Do not
19912         merge the points-to solution back into the SMT aliases.
19913         (may_alias_p): Use alias_set_subset_of instead of
19914         aliases_conflict_p.  A pointer which points to
19915         memory with alias set zero may access any variable.
19916
19917 2008-04-23  Richard Guenther  <rguenther@suse.de>
19918
19919         * alias.c (alias_set_subset_of): Correctly handle asking
19920         if zero is a subset of an alias set with zero child.
19921         * tree-ssa-alias.c (have_common_aliases_p): Simplify logic.
19922         (compute_flow_insensitive_aliasing): Correctly walk all
19923         pointers.  Do not unnecessarily union sets.
19924
19925 2008-04-23  Richard Guenther  <rguenther@suse.de>
19926
19927         PR middle-end/36021
19928         * c-common.c (handle_alloc_size_attribute): Use type_num_arguments.
19929
19930 2008-04-22  Tomas Bily  <tbily@suse.cz>
19931
19932         * tree-cfg.c (verify_expr): Check for NON_LVALUE_EXPR as
19933         unreachable case.
19934         * tree-vrp.c (extract_range_from_unary_expr): Removed unused
19935         NON_LVALUE_EXPR.
19936         * tree-ssa-threadedge.c (simplify_control_stmt_condition): Likewise.
19937         * tree-ssa-structalias.c (get_constraint_for): Likewise.
19938         * tree-inline.c (estimate_num_insns_1): Likewise.
19939         * varasm.c (const_hash_1, compare_constant, copy_constant)
19940         (compute_reloc_for_constant, output_addressed_constants): Likewise.
19941         * emit-rtl.c (component_ref_for_mem_expr)
19942         (set_mem_attributes_minus_bitpos): Likewise.
19943         * expr.c (highest_pow2_factor, expand_expr_real_1, )
19944         (is_aligning_offset): Likewise.
19945         * dwarf2out.c (loc_descriptor_from_tree_1, add_bound_info): Likewise.
19946         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Likewise.
19947         * dojump.c (do_jump): Likewise.
19948         * builtins.c (get_pointer_alignment, get_memory_rtx)
19949         (integer_valued_real_p, fold_builtin_next_arg): Likewise.
19950         * tree-scalar-evolution.c (instantiate_parameters_1): Likewise.
19951
19952 2008-04-23  Jakub Jelinek  <jakub@redhat.com>
19953
19954         PR rtl-optimization/36017
19955         * builtins.c (expand_errno_check): Clear CALL_EXPR_TAILCALL before
19956         expanding the library call.
19957
19958 2008-04-22  Ian Lance Taylor  <iant@google.com>
19959
19960         * fold-const.c (pointer_may_wrap_p): Call int_size_in_bytes rather
19961         than size_in_bytes.
19962
19963 2008-04-22  Pat Haugen  <pthaugen@us.ibm.com>
19964
19965         * config/rs6000/rs6000.c (rs6000_register_move_cost): Increase cost
19966         of LR/CTR moves for Power6.
19967
19968 2008-04-22  Kenneth Zadeck  <zadeck@naturalbridge.com>
19969
19970         PR middle-end/36003
19971         * passes.c (init_optimization_passes): Remove
19972         pass_fast_rtl_byte_dce.
19973
19974 2008-04-22  Uros Bizjak  <ubizjak@gmail.com>
19975
19976         PR target/29096
19977         * config/i386/xmmintrin.h (_mm_cvtpi16_ps): Rearrange calls to
19978         builtin functions to generate faster code.
19979         (_mm_cvtpu16_ps): Ditto.
19980         (_mm_cvtpi32x2_ps): Ditto.
19981
19982 2008-04-22  Nick Clifton  <nickc@redhat.com>
19983
19984         * common.opt (ftree-loop-distribution): Add Optimization
19985         attribute.
19986
19987         * config/frv/frv.c (frv_stack_info): Use crtl instead of cfun.
19988         (frv_expand_builtin_va_start): Likewise.
19989
19990         * config/arm/arm.c (thumb_find_work_register): Fix location of
19991         argument register count.
19992
19993 2008-04-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
19994
19995         Support scheduling for ColdFire V1 and V3 microarchitecture.
19996         Improve scheduling of multiplication instructions.
19997
19998         * config/m68k/m68k.md (cpu): Add cfv1 and cfv3.  Rename cf_v2 to cfv1.
19999         (mac): New instruction attribute.
20000         * config/m68k/m68k.c (override_options): Handle cfv1, cfv3 and mac.
20001         (m68k_sched_mac): New variable.
20002         (m68k_sched_attr_type2, m68k_sched_md_init_global): Update.
20003         Handle cfv1 and cfv3.
20004         (max_insn_size): New static variable.
20005         (struct _sched_ib): New type.
20006         (sched_ib): New static variable.
20007         (sched_ib_size, sched_ib_filled, sched_ib_insn): Convert variables
20008         to fields of 'struct _sched_ib sched_ib'.  Update all uses.
20009         (m68k_sched_variable_issue): Add modeling of cfv3 instruction buffer.
20010         Update.
20011         (m68k_sched_md_init_global, m68k_sched_md_finish_global,
20012         m68k_sched_md_init, m68k_sched_md_finish): Handle cfv1 and cfv3.  Init
20013         new variables.  Update.
20014         (m68k_sched_dfa_pre_advance_cycle, m68k_sched_dfa_post_advance_cycle):
20015         Add modeling of cfv3 instruction buffer.  Update.
20016         * config/m68k/m68k-protos.h (m68k_sched_mac): Declare.
20017         * config/m68k/m68k.h (TUNE_CFV3): New macro.
20018         * config/m68k/cf.md: Change substrings 'cf_v2' to 'cfv12' or 'cfv123'.
20019         (cf_* reservations): Rename to cfv12 or cfv123 to indicate cores
20020         a particular reservation applies to.
20021         (type2): Reorganize attribute values.  Rename alu to alu_reg,
20022         alu_l to alu, move_l to omove.  Join move to alu.  Split mul
20023         to mul_l and mul_w.
20024         (cf_ib_*): Simplify description of instruction buffer.
20025         (cf_ib_w0, cf_ib_w4, cf_ib_w5, cf_ib_w6): Remove.
20026         (cf_mem): Split into cf_mem1 and cf_mem2.
20027         (cf_v2_move_??): Rename to cfv12_alu_??.
20028         (cf_v2_move_l_??): Rename to cfv12_omove_??.
20029         (cf_v2_mul_??): Remove reservations.
20030         (cfv12_mul_l_??, cfv12_mul_w_??, cfv12_mac_w_??, cfv12_mac_l_??,
20031         cfv12_emac_??, cfv12_emac_w_i0): New reservations.
20032         (cfv12_rts, cfv12_call, cfv12_bcc, cfv12_bra, cfv12_jmp): Move to
20033         appropriate place.
20034         (cfv3_alu_10, cfv3_omove_10, cfv3_alu_i0, cfv3_omove_i0, cfv3_alu_01,
20035         cfv3_alu_0i, cfv3_alu_11, cfv3_omove_11, cfv3_alu_i1, cfv3_omove_i1,
20036         cfv3_alu_1i, cfv3_omove_1i, cfv3_pea_11, cfv3_pea_i1, cfv3_mul_w_10,
20037         cfv3_mul_l_10, cfv3_mul_w_i0, cfv3_mac_w_10, cfv3_mac_l_10,
20038         cfv3_mac_w_i0, cfv3_emac_10, cfv3_emac_w_i0, cfv3_rts, cfv3_call,
20039         cfv3_bcc, cfv3_bra, cfv3_jmp): New reservations.
20040         (cfv3_*_1, cfv3_*_2, cfv3_*_3): New instruction reservations that are
20041         expansions of the above reservations for instructions of sizes
20042         1, 2 and 3 words.
20043
20044 2008-04-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
20045
20046         * rtl-factoring.c (collect_patterns_seqs): Handle CC0 targets.
20047
20048 2008-04-21  Adam Nemet  <anemet@caviumnetworks.com>
20049
20050         * coverage.c: Include tree-pass.h.
20051         (coverage_counter_alloc): Print da_file_name to the dump file.
20052
20053 2008-04-21  Kenneth Zadeck  <zadeck@naturalbridge.com>
20054
20055         * sbitmap.c (sbitmap_range_empty_p): New function.
20056         * sbitmap.h (sbitmap_range_empty_p): New function.
20057         * bitmap.h: Now includes obstack.h.
20058
20059 2008-04-21  Richard Sandiford  <rsandifo@nildram.co.uk>
20060             Kenneth Zadeck  <zadeck@naturalbridge.com>
20061
20062         * dbgcnt.def (ra_byte_scan): Added.
20063         * dbgcnt.c (dbg_cnt): Added code to print message to dump_file
20064         when the last hit happens for a counter.
20065         * timevar.def (TV_DF_BYTE_LR): New variable.
20066         * tree-pass.h (pass_fast_rtl_byte_dce): New pass.
20067         * passes.c (pass_fast_rtl_byte_dce): New pass.
20068         * fwprop.c (update_df): Added mode to call df_ref_create.
20069         Renamed DF_REF_WIDTH and DF_REF_OFFSET to DF_REF_EXTRACT_WIDTH and
20070         DF_REF_EXTRACT_OFFSET.
20071         * df.h (DF_BYTE_LR, DF_BYTE_LR_BB_INFO, DF_BYTE_LR_IN,
20072         DF_BYTE_LR_OUT, df_byte_lr): New macro.
20073         (df_mm): New enum.
20074         (df_ref_extract): Added mode field.
20075         (DF_REF_WIDTH, DF_REF_OFFSET) Renamed to DF_REF_EXTRACT_WIDTH and
20076         DF_REF_EXTRACT_OFFSET.
20077         (DF_REF_EXTRACT_MODE): New macro.
20078         (df_byte_lr_bb_info): New structure.
20079         (df_print_byte_regset, df_compute_accessed_bytes,
20080         df_byte_lr_add_problem, df_byte_lr_get_regno_start,
20081         df_byte_lr_get_regno_len, df_byte_lr_simulate_defs,
20082         df_byte_lr_simulate_uses,
20083         df_byte_lr_simulate_artificial_refs_at_top,
20084         df_byte_lr_simulate_artificial_refs_at_end,
20085         df_compute_accessed_bytes): New function.
20086         (df_ref_create): Add parameter.
20087         (df_byte_lr_get_bb_info): New inline function.
20088         * df-scan.c (df_ref_record, df_uses_record,
20089         df_ref_create_structure): Added mode parameter.
20090         (df_ref_create, df_notes_rescan, df_ref_record, df_def_record_1,
20091         df_defs_record, df_uses_record, df_get_conditional_uses,
20092         df_get_call_refs, df_insn_refs_collect, df_bb_refs_collect,
20093         df_entry_block_defs_collect, df_exit_block_uses_collect):
20094         Added mode parameter to calls to df_ref_record, df_uses_record,
20095         df_ref_create_structure.
20096         (df_ref_equal_p, df_ref_compare): Added test for modes.
20097         (df_ref_create_structure): Added code to set mode.  Renamed
20098         DF_REF_WIDTH and DF_REF_OFFSET to DF_REF_EXTRACT_WIDTH and
20099         DF_REF_EXTRACT_OFFSET.
20100         * df-core.c (df_print_byte_regset): New function.
20101         * df-byte-scan.c: New file.
20102         * df-problems.c (df_rd_transfer_function): Removed unnecessary
20103         calls to BITMAP_FREE.
20104         (df_byte_lr_problem_data, df_problem problem_BYTE_LR): New structure.
20105         (df_byte_lr_get_regno_start, df_byte_lr_get_regno_len,
20106         df_byte_lr_set_bb_info, df_byte_lr_free_bb_info,
20107         df_byte_lr_check_regs, df_byte_lr_expand_bitmap,
20108         df_byte_lr_alloc, df_byte_lr_reset, df_byte_lr_bb_local_compute,
20109         df_byte_lr_local_compute, df_byte_lr_init,
20110         df_byte_lr_confluence_0, df_byte_lr_confluence_n,
20111         df_byte_lr_transfer_function, df_byte_lr_free,
20112         df_byte_lr_top_dump, df_byte_lr_bottom_dump,
20113         df_byte_lr_add_problem, df_byte_lr_simulate_defs,
20114         df_byte_lr_simulate_uses,
20115         df_byte_lr_simulate_artificial_refs_at_top,
20116         df_byte_lr_simulate_artificial_refs_at_end): New function.
20117         * dce.c (byte_dce_process_block): New function.
20118         (dce_process_block): au is now passed in rather than computed
20119         locally.  Changed loops that look at artificial defs to not look
20120         for conditional or partial ones, because there never are any.
20121         (fast_dce): Now is able to drive byte_dce_process_block or
20122         dce_process_block depending on the kind of dce being done.
20123         (rest_of_handle_fast_dce): Add parameter to fast_dce.
20124         (rest_of_handle_fast_byte_dce): New function.
20125         (rtl_opt_pass pass_fast_rtl_byte_dce): New pass.
20126         * Makefile.in (df-byte-scan.o, debugcnt.o): Added dependencies.
20127
20128 2008-04-21  Daniel Franke  <franke.daniel@gmail.com>
20129
20130         PR fortran/35019
20131         * gcc.h: Added fortran options that take arguments to
20132         DEFAULT_SWITCH_TAKES_ARG and DEFAULT_WORD_SWITCH_TAKES_ARG
20133         macros.
20134
20135 2008-04-20  Eric Botcazou  <ebotcazou@adacore.com>
20136
20137         * tree-sra.c (sra_walk_expr) <VIEW_CONVERT_EXPR>: Disable
20138         scalarization if on the LHS and not a full access.
20139
20140 2008-04-20  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
20141
20142         * Makefile.in (s-gtyp-input): Remove tmp-gi.list before writing it.
20143
20144 2008-04-18  Rafael Espíndola  <espindola@google.com>
20145
20146         * tree-vrp.c (find_case_label_index): Fix the binary search.
20147         (find_case_label_range): New.
20148         (vrp_visit_switch_stmt): Use find_case_label_range.
20149         (simplify_switch_using_ranges): Use find_case_label_range.
20150
20151 2008-04-18  Eric Botcazou  <ebotcazou@adacore.com>
20152
20153         * gimplify.c (gimplify_modify_expr_rhs) <COND_EXPR>: Gimplify the LHS
20154         using the is_gimple_lvalue predicate instead of is_gimple_min_lval.
20155
20156 2008-04-18  Tom Tromey  <tromey@redhat.com>
20157
20158         PR libcpp/15500:
20159         * doc/cpp.texi (Implementation-defined behavior): Mention
20160         -finput-charset.
20161
20162 2008-04-18  Ian Lance Taylor  <iant@google.com>
20163
20164         * fold-const.c (pointer_may_wrap_p): New static function.
20165         (fold_comparison): Add another test for pointer overflow.  Use
20166         pointer_may_wrap_p to disable some false positives.
20167
20168 2008-04-18  Kris Van Hees <kris.van.hees@oracle.com>
20169
20170         * c-common.c (CHAR16_TYPE, CHAR32_TYPE): New macros.
20171         (fname_as_string): Match updated cpp_interpret_string prototype.
20172         (fix_string_type): Support char16_t* and char32_t*.
20173         (c_common_nodes_and_builtins): Add char16_t and char32_t (and
20174         derivative) nodes.  Register as builtin if C++0x.
20175         (c_parse_error): Support CPP_CHAR{16,32}.
20176         * c-common.h (RID_CHAR16, RID_CHAR32): New elements.
20177         (enum c_tree_index) <CTI_CHAR16_TYPE, CTI_SIGNED_CHAR16_TYPE,
20178         CTI_UNSIGNED_CHAR16_TYPE, CTI_CHAR32_TYPE, CTI_SIGNED_CHAR32_TYPE,
20179         CTI_UNSIGNED_CHAR32_TYPE, CTI_CHAR16_ARRAY_TYPE,
20180         CTI_CHAR32_ARRAY_TYPE>: New elements.
20181         (char16_type_node, signed_char16_type_node, unsigned_char16_type_node,
20182         char32_type_node, signed_char32_type_node, char16_array_type_node,
20183         char32_array_type_node): New defines.
20184         * c-lex.c (cb_ident): Match updated cpp_interpret_string prototype.
20185         (c_lex_with_flags): Support CPP_CHAR{16,32} and CPP_STRING{16,32}.
20186         (lex_string): Support CPP_STRING{16,32}, match updated
20187         cpp_interpret_string and cpp_interpret_string_notranslate prototypes.
20188         (lex_charconst): Support CPP_CHAR{16,32}.
20189         * c-parser.c (c_parser_postfix_expression): Support CPP_CHAR{16,32}
20190         and CPP_STRING{16,32}.
20191
20192 2008-04-18  Paolo Bonzini  <bonzini@gnu.org>
20193
20194         PR bootstrap/35457
20195         * aclocal.m4: Regenerate.
20196         * configure: Regenerate.
20197
20198 2008-04-18  Jan Hubicka  <jh@suse.cz>
20199
20200         * except.c (dw2_size_of_call_site_table,
20201         sjlj_size_of_call_site_table): Use vector API for call_site_record.
20202
20203         * cgraphbuild.c (build_cgraph_edges): Update.
20204         * tree-pass.h: Update comment.
20205         * final.c (leaf_function_p): Update.
20206         (leaf_renumber_regs): Update.
20207         (rest_of_clean_state): Update.
20208         * omp-low.c (expand_omp_parallel): Update.
20209         * ipa-reference.c (analyze_function): Update.
20210         * reorg.c (find_end_label): Update.
20211         (optimize_skip): Update.
20212         (fill_simple_delay_slots): Update.
20213         (fill_simple_delay_slots): Update.
20214         (make_return_insns): Update.
20215         (dbr_schedule): Update.
20216         * gimple-low.c (record_vars_into): Update.
20217         * cfgbuild.c (make_edges): Update.
20218         * function.c (assign_stack_local): Update.
20219         (assign_parm_adjust_stack_rtl): Update.
20220         (locate_and_pad_parm): Update.
20221         (allocate_struct_function): Do not initialize stack_alignment_needed
20222         and preferred_stack_boundary here.
20223         (stack_protect_prologue): Update.
20224         (stack_protect_epilogue): Update.
20225         (expand_function_start): Initialize stack_alignment_needed,
20226         preferred_stack_boundary and max_jumptable_ents.
20227         (expand_function_end): Update.
20228         (free_after_compilation): Do not NULLify epilogue_delay_list.
20229         * function.h (struct rtl_data): Add stack_protect_guard,
20230         stack_alignment_needed,
20231         preferred_stack_boundary, epilogue_delay_list.
20232         (struct function): Remove value_histograms, stack_alignment_needed,
20233         preferred_stack_boundary, epilogue_delay_list, max_jumptable_ents,
20234         last_label_uid,
20235         unexpanded_var_list, stack_protect_guard.
20236         (current_function_epilogue_delay_list): Remove.
20237         * ipa-type-escape.c (analyze_function): Update.
20238         * gimplify.c (pop_gimplify_context): Update comment.
20239         * calls.c (expand_call): Update.
20240         (emit_library_call_value_1): Update.
20241         * except.c (set_nothrow_function_flags): Update.
20242         * cfgexpand.c (get_decl_align_unit): Update.
20243         (create_stack_guard): Update.
20244         (estimated_stack_frame_size): Update.
20245         (expand_used_vars): Update.
20246         (tree_expand_cfg): Free histogram earliers, init expansion variables.
20247         * explow.c (allocate_dynamic_stack_space): Update.
20248         * tree-ssa-live.c (remove_unused_locals): Update.
20249         * varasm.c (mark_constant_pool): Update.
20250         * tree-inline.c (remap_decls): Update.
20251         (initialize_cfun): Update.
20252         (declare_return_variable): Update.
20253         (inline_forbidden_p): Update.
20254         (expand_call_inline): Update.
20255         (declare_inline_vars): Update.
20256         (tree_function_versioning): Update.
20257         * tree-flow.h (value_histograms): New.
20258         (VALUE_HISTOGRAMS): New macro.
20259         * basic-block.h (control_flow_graph): Add max_jumptable_ents,
20260         last_label_uid.
20261         * tree-cfg.c (set_bb_for_stmt): Update.
20262         (replace_by_duplicate_decl): Update.
20263         (move_block_to_fn): Update.
20264         (new_label_mapper): Update.
20265         (dump_function_to_file): Update.
20266         * ipa-struct-reorg.c (build_data_structure): Update.
20267         * cfgrtl.c (print_rtl_with_bb): Update.
20268         * reload1.c (reload): Update.
20269         (reload): Update.
20270         * config/i386/i386.c (setup_incoming_varargs_64,
20271         ix86_compute_frame_layout): Update.
20272         * config/arc/arc.c (arc_output_function_epilogue): Update.
20273
20274 2008-04-18  Marius Strobl <marius@FreeBSD.org>
20275
20276         * gthr-posix.h (__gthread_active_p): Use the Solaris implementation
20277         for FreeBSD as well.
20278         * gthr-posix95.h: Likewise.
20279
20280 2008-04-17  Richard Sandiford  <rsandifo@nildram.co.uk>
20281
20282         PR rtl-optimization/35838
20283         * dse.c (find_shift_sequence): Use subreg_lowpart_offset to work
20284         out the byte offset of the first subreg.
20285
20286 2008-04-17  Uros Bizjak  <ubizjak@gmail.com>
20287
20288         * config/i386/i386.md (addti3 splitter): Pass arrays of 3 operands
20289         to split_ti instead of three separate calls with single member arrays.
20290         (subti3 splitter): Ditto.
20291         (adddi3 splitter): Ditto with split_di.
20292         (subdi3 splitter): Ditto.
20293         (negti2 splitter): Pass arrays of 2 operands to split_ti instead of
20294         two separate calls with single member arrays.  Swap match_dup
20295         operands 1 and 2 to better fit into the array.
20296         (negdi2 splitter): Ditto with split_di.
20297         (movdfcc splitter):  Pass arrays of 2 operands to split_di instead of
20298         two separate calls with single member arrays.  Swap match_dup operands
20299         6 and 7 to better fit into the array.
20300
20301 2008-04-17  H.J. Lu  <hongjiu.lu@intel.com>
20302
20303         * config/i386/i386.c (sse_builtin_type): New.
20304         (bdesc_sse_args): Likewise.
20305         (bdesc_sse_3arg): Removed.
20306         (bdesc_2arg): Remove IX86_BUILTIN_AESKEYGENASSIST128.
20307         (bdesc_1arg): Remove IX86_BUILTIN_ROUNDPD and
20308         IX86_BUILTIN_ROUNDPS.
20309         (ix86_init_mmx_sse_builtins): Handle bdesc_sse_args.  Remove
20310         bdesc_sse_3arg.  Remove IX86_BUILTIN_ROUNDPD and
20311         IX86_BUILTIN_ROUNDPS.
20312         (ix86_expand_sse_4_operands_builtin): Removed.
20313         (ix86_expand_sse_operands_builtin): New.
20314         (ix86_expand_unop_builtin): Remove CODE_FOR_sse4_1_roundpd
20315         and CODE_FOR_sse4_1_roundps.
20316         (ix86_expand_builtin): Remove IX86_BUILTIN_AESKEYGENASSIST128.
20317         Handle bdesc_sse_args.  Remove bdesc_sse_3arg.
20318
20319 2008-04-17  Alan Modra  <amodra@bigpond.net.au>
20320
20321         PR target/35907
20322         * config/rs6000/rs6000.c (rs6000_emit_epilogue): Restore vr and vrsave
20323         regs before frame pop when needed.  If use_backchain_to_restore_sp
20324         then load backchain into a temp reg to restore vr and vrsave.  Add
20325         code to restore vr after frame pop if possible.
20326
20327 2008-04-17  Richard Guenther  <rguenther@suse.de>
20328
20329         * tree-vn.c (expressions_equal_p): Do not check type
20330         equality or compatibility before calling operand_equal_p.
20331         * fold-const.c (operand_equal_p): Check equivalence of
20332         integer constants before bailing out due to signedness or
20333         precision differences.
20334         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Ignore
20335         spurious differences in type qualification.  Ignore types
20336         for COMPONENT_REFs at all.
20337
20338 2008-04-17  Christian Bruel  <christian.bruel@st.com>
20339
20340         * config/sh/sh.c (expand_cbranchdi4): Use original operands for
20341         msw_skip comparison.
20342
20343 2008-04-16  Jakub Jelinek  <jakub@redhat.com>
20344
20345         PR c/35739
20346         * tree-nrv.c (tree_nrv): Don't optimize if result_type is GIMPLE
20347         reg type.
20348
20349         PR tree-optimization/35899
20350         * tree-inline.c (expand_call_inline): Use GIMPLE_STMT_OPERAND
20351         rather than TREE_OPERAND.
20352
20353 2008-04-16  Uros Bizjak  <ubizjak@gmail.com>
20354
20355         PR target/35944
20356         * config/i386/i386.md (fmodxf3): Copy operand 1 and operand 2 into
20357         temporary registers.  Change operand predicate to general_operand.
20358         (remainderxf3): Ditto.
20359
20360 2008-04-16  Richard Guenther  <rguenther@suse.de>
20361
20362         * Makefile.in (tree-affine.o): Add $(FLAGS_H) dependency.
20363         * tree-affine.c (aff_combination_expand): Look through some
20364         conversions.
20365
20366 2008-04-15  Doug Kwan  <dougkwan@google.com>
20367
20368         * dwarf2asm.c (dw2_assemble_integer): Cast to unsigned HOST_WIDE_INT
20369         for hex printing.
20370         * tree-pretty-print.c (dump_generic_node): Ditto.
20371         * final.c (output_addr_const): Ditto.
20372         * dwarf2out.c (output_cfi): Ditto.
20373         * c-pretty-print.c (pp_c_integer_constant): Ditto.
20374         * print-rtl.c (print_rtx): Ditto.
20375         * print-tree.c (print_node_brief, print_node): Ditto.
20376         * c-common.c (match_case_to_enum_1): Ditto.
20377         * sched-vis.c (print_value): Ditto.
20378         * config/i386/i386.c (print_operand): Cast to long unsigned int
20379         for hex printing.
20380
20381 2008-04-15  Danny Smith  <dannysmith@users.sourceforge.net>
20382         * libgcc2.c [L_trampoline]: Remove  unnecessary prototype for
20383         MS Windows VirtualProtect function.
20384
20385 2008-04-15  Jan Hubicka  <jh@suse.cz>
20386
20387         * gengtype.c (write_root): Param_is argument is OK.
20388         * expr.c (expand_expr_real_1): Update call of get_exception_*.
20389         * function.h: Include varray.h
20390         (rtl_eh): New stucture based on except.c one.
20391         (call_site_record): New forward declaration and vector type.
20392         * calls.c (emit_call_1): Do not call
20393         note_current_region_may_contain_throw.
20394         * except.c (eh_status): Remove cur_region, try_region since they are
20395         unused.
20396         Move filter, exc_ptr, ttype_data, ehspec_data, action_record_data and
20397         exception_handler_label_map, ehr_stackadj, ehr_handler, ehr_label,
20398         sjlj_fc, sjlj_exit_after to rth_eh in function.h.
20399         Remove call_site_data_used, call_site_data_size.
20400         Turn call_site_record into vector in function.h.
20401         (note_current_region_may_contain_throw): Remove.
20402         (get_exception_pointer, get_exception_filter): Do not take struct
20403         function argument; update.
20404         (add_ehl_entry, find_exception_handler_labels, ehspec_filter_hash,
20405         add_ttypes_entry, add_ehspec_entry, assign_filter_values,
20406         build_post_landing_pads, dw2_build_landing_pads,
20407         sjlj_assign_call_site_values, sjlj_mark_call_sites,
20408         sjlj_emit_function_enter, sjlj_emit_function_enter,
20409         sjlj_emit_function_exit, sjlj_emit_dispatch_table,
20410         sjlj_build_landing_pads, finish_eh_generation,
20411         remove_exception_handler_label, remove_eh_handler,
20412         maybe_remove_eh_handler, add_reachable_handler,
20413         reachable_handlers, expand_builtin_eh_return, expand_eh_return,
20414         add_action_record, collect_one_action_chain, add_call_site,
20415         convert_to_eh_region_ranges, sjlj_size_of_call_site_table,
20416         sjlj_output_call_site_table, output_function_exception_table,
20417         * except.h (note_current_region_may_contain_throw): Remove
20418         (get_exception_pointer, get_exception_filter): Do not take struct
20419         function argument.
20420         * Makefile.in (GTFILES): Put varargs before struct function.
20421
20422 2008-04-15  Eric Botcazou  <ebotcazou@adacore.com>
20423
20424         * tree-ssa-structalias.c (get_constraint_for_component_ref): Do not
20425         punt for STRING_CST.
20426         (get_constraint_for): Deal with STRING_CST here instead.
20427
20428 2008-04-15  Richard Guenther  <rguenther@suse.de>
20429
20430         * tree-ssa-propagate.c (substitute_and_fold): Substitute
20431         statements in a basic-block with a backward walk.  Do not
20432         substitute into dead statements but instead remove those.
20433
20434 2008-04-15  Richard Guenther  <rguenther@suse.de>
20435
20436         * params.def (PARAM_MAX_FIELDS_FOR_FIELD_SENSITIVE): Set default
20437         to zero, thus disable creation of SFTs.
20438
20439 2008-04-15  Eric Botcazou  <ebotcazou@adacore.com>
20440
20441         * tree-predcom.c (suitable_reference_p): Return false if the
20442         reference can throw.
20443
20444 2008-04-15  Jakub Jelinek  <jakub@redhat.com>
20445
20446         PR c/35751
20447         * c-decl.c (finish_decl): If extern or static var has variable
20448         size, set TREE_TYPE (decl) to error_mark_node.
20449
20450 2008-04-15  Rafael Espíndola  <espindola@google.com>
20451
20452         * fold-const.c (tree_call_nonnegative_warnv_p): Remove local
20453         variable arg1.
20454
20455 2008-04-15  Richard Guenther  <rguenther@suse.de>
20456
20457         * tree-ssa-sccvn.h (vn_reference_lookup): Adjust prototype.
20458         * tree-ssa-sccvn.c (vn_reference_lookup): New parameter maywalk.
20459         (visit_reference_op_load): Do walk vuse-vdef chains on
20460         vn_reference_lookup.
20461         (visit_reference_op_store): But do not here.
20462         * tree-vn.c (vn_lookup): Do not walk vuse-vdef chains on
20463         vn_reference_lookup.
20464         (vn_lookup_with_vuses): But do so here.
20465
20466 2008-04-14  Ian Lance Taylor  <iant@google.com>
20467
20468         * fold-const.c (fold_overflow_warning): Remove assertion.
20469
20470 2008-04-15  Ben Elliston  <bje@au.ibm.com>
20471
20472         * config/alpha/alpha.c (alpha_initialize_trampoline): Remove temp,
20473         temp1 local variables.
20474
20475 2008-04-15  Zuxy Meng  <zuxy.meng@gmail.com>
20476
20477         PR target/35661
20478         * config/i386/winnt.c (i386_pe_section_type_flags): Mark
20479         ".text.unlikely" section as executable.
20480
20481 2008-04-14  James E. Wilson  <wilson@tuliptree.org>
20482
20483         * config/ia64/ia64.c (rtx_needs_barrier): Handle
20484         UNSPEC_FR_SQRT_RECIP_APPROX_RES.
20485         * config/ia64/ia64.c (UNSPEC_FR_SQRT_RECIP_APPROX_RES): Define.
20486         (divsi3_internal, divdi3_internal_lat, divdi3_internal_thr,
20487         divsf3_internal_lat, sqrt_approx, sqrtsf2_internal_thr,
20488         divdf3_internal_lat, sqrtdf2_internal_thr, divxf3_internal_lat,
20489         divxf3_internal_thr, sqrtxf2_internal_thr, recip_approx): Use it.
20490
20491 2008-04-14  Ian Lance Taylor  <iant@google.com>
20492
20493         * flags.h (POINTER_TYPE_OVERFLOW_UNDEFINED): Define.
20494         * fold-const.c (fold_comparison): If appropriate, test
20495         POINTER_TYPE_OVERFLOW_UNDEFINED, and issue an overflow warning.
20496         (fold_binary): Test POINTER_TYPE_OVERFLOW_UNDEFINED when
20497         reassociating a pointer type.
20498         * doc/invoke.texi (Optimize Options): Document that
20499         -fstrict-overflow applies to pointer wraparound.
20500
20501 2008-04-13  Jan Hubicka  <jh@suse.cz>
20502
20503         * m32.c (m32c_pushm_popm): Use crtl->retrun_rtx.
20504
20505 2008-04-12  Andrew Pinski  <pinskia@gmail.com>
20506
20507         * config/rs6000/rs6000.c (compute_save_world_info): Set lr_save_p if
20508         we are going to "save the world".
20509
20510 2008-04-13  Hans-Peter Nilsson  <hp@axis.com>
20511
20512         * config/cris/cris.md ("*andhi_lowpart_non_v32", "*andhi_lowpart_v32")
20513         ("*andqi_lowpart_non_v32", "*andqi_lowpart_v32"): Use "+" for the
20514         operand 0 constraint, not "=".
20515
20516 2008-04-11  James E. Wilson  <wilson@tuliptree.org>
20517
20518         * system.h: Change ASSERT_CHECKING to ENABLE_ASSERT_CHECKING.
20519
20520 2008-04-11  H.J. Lu  <hongjiu.lu@intel.com>
20521
20522         * dse.c (record_store): Use HOST_BITS_PER_WIDE_INT instead
20523         of size of positions_needed * CHAR_BIT.
20524
20525 2008-04-11  H.J. Lu  <hongjiu.lu@intel.com>
20526
20527         PR middle-end/35897
20528         * dse.c (store_info): Change positions_needed to unsigned
20529         HOST_WIDE_INT.
20530         (lowpart_bitmask): New.
20531         (record_store): Cast to unsigned HOST_WIDE_INT for
20532         positions_needed.  Assert width <= size of positions_needed *
20533         CHAR_BIT.  Call lowpart_bitmask to initialize positions_needed.
20534         (check_mem_read_rtx): Use unsigned HOST_WIDE_INT on mask.  Call
20535         lowpart_bitmask to set mask.
20536
20537 2008-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
20538
20539         * config/bfin/constraints.md: New file.
20540         * config/bfin/bfin.md: Include it.
20541         (adddi3): Use satisfies_constraint functions instead of the old macros.
20542         * config/bfin/bfin.h (REG_CLASS_FROM_LETTER, CONSTRAINT_LEN,
20543         CONST_18UBIT_IMM_P, CONST_16BIT_IMM_P, CONST_16UBIT_IMM_P,
20544         CONST_7BIT_IMM_P, CONST_7NBIT_IMM_P, CONST_5UBIT_IMM_P,
20545         CONST_4BIT_IMM_P, CONST_4UBIT_IMM_P, CONST_3BIT_IMM_P,
20546         CONST_3UBIT_IMM_P, CONST_OK_FOR_K, CONST_OK_FOR_P, CONST_OK_FOR_M,
20547         CONST_OK_FOR_CONSTRAINT_P, CONST_DOUBLE_OK_FOR_LETTER,
20548         EXTRA_CONSTRAINT): Delete.
20549         * config/bfin/predicates.md (highbits_operand, reg_or_7bit_operand,
20550         reg_or_neg7bit_operand): Use satisfies_constraint functions instead
20551         of the old macros.
20552         * config/bfin/bfin.c: Include "tm-constrs.h".
20553         (bfin_secondary_reload, split_load_immediate, bfin_rtx_costs):
20554         Use satisfies_constraint functions instead of the old macros.
20555         * doc/md.texi (Blackfin Constraints): Update file name reference.
20556
20557 2008-04-11  Richard Guenther  <rguenther@suse.de>
20558
20559         PR tree-optimization/35869
20560         * tree-vrp.c (execute_vrp): Move switch statement update after
20561         jump threading.  Schedule another cfg cleanup run.
20562
20563 2008-04-11  Volker Reichelt  <v.reichelt@netcologne.de>
20564
20565         PR c/35744
20566         * attribs.c (decl_attributes): Return early on errorneous node.
20567
20568 2008-04-10  Oleg Ryjkov  <olegr@google.com>
20569
20570         * tree.h (struct tree_base): Added a new flag default_def_flag.
20571         (SSA_NAME_IS_DEFAULT_DEF): Changed to use the new flag.
20572
20573 2008-04-11  Kaz Kojima  <kkojima@gcc.gnu.org>
20574
20575         * config.gcc (need_64bit_hwint): Need 64bit hwint for sh-*-*.
20576
20577 2008-04-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
20578
20579         PR target/35768
20580         * pa.md: Define mode iterator P.  Define mode attribute dwc.
20581         (dcacheflush): Update pattern to use iterator P and attribute dwc.
20582         (icacheflush): Likewise.
20583         * pa.h (INITIALIZE_TRAMPOLINE): Use dcacheflushsi/icacheflushsi if
20584         !TARGET_64BIT, and dcacheflushdi/icacheflushdi if TARGET_64BIT.
20585
20586 2008-04-11  Ben Elliston  <bje@au.ibm.com>
20587
20588         * config/spu/spu.c (spu_init_builtins): Mark builtins as nothrow.
20589
20590 2008-04-10  Rafael Espíndola  <espindola@google.com>
20591
20592         * tree-vrp.c (extract_range_from_binary_expr): Don't handle
20593         TRUTH_ANDIF_EXPR or TRUTH_ORIF_EXPR.
20594         (extract_range_from_expr): The same.
20595
20596 2008-04-10  Adam Nemet  <anemet@caviumnetworks.com>
20597
20598         * config/mips/mips.md (GPR2): New mode iterator.
20599         (seq): Add comment.
20600         (*seq_<mode>, *seq_<mode>_mips16, *sne_<mode>, *sgt<u>_<mode>,
20601         *sgt<u>_<mode>_mips16, *sge<u>_<mode>, *slt<u>_<mode>,
20602         *slt<u>_<mode>_mips16 *sle<u>_<mode>, *sle<u>_<mode>_mips16):
20603         Rewrite these to take two modes, the mode of comparison and the
20604         mode of the destination.
20605         * config/mips/mips.c (mips_expand_scc): Instead of having
20606         paradoxical subreg as destination, expand "narrowing" scc if mode
20607         of comparison is SI and target is requested in DI mode.
20608         (mips_emit_int_order_test): Update comment.  Make mode of
20609         comparison match CMP0 rather than TARGET.  When creating inverse
20610         target use mode of TARGET.
20611
20612 2008-04-10  Adam Nemet  <anemet@caviumnetworks.com>
20613
20614         * gcov-dump.c (tag_summary): Only print summaries for the first
20615         GCOV_COUNTERS_SUMMABLE counters.
20616
20617 2008-04-10  Uros Bizjak  <ubizjak@gmail.com>
20618
20619         * config/i386/i386.md (absneg): New code iterator.
20620         (absnegprefix): New code attribute.
20621         (<code><mode>2): Macroize expander from abs<mode>2 and neg<mode>2
20622         patterns using absneg code iterator.
20623         (<code>tf2): Macroize expander from abstf2 and negtf2 patterns
20624         using absneg code iterator.
20625         (*<code><mode>2_1): Macroize insn pattern from *abs<mode>2_1 and
20626         *neg<mode>2 patterns using absneg code iterator.
20627         (*<code>extendsfdf2): Macroize insn pattern from *absextendsfdf2 and
20628         *negextendsfdf2 patterns using absneg code iterator.
20629         (*<code>extendsfxf2): Macroize insn pattern from *absextendsfxf2 and
20630         *negextendsfxf2 patterns using absneg code iterator.
20631         (*<code>extendsfdf2): Macroize insn pattern from *absextendsfdf2 and
20632         *negextendsfdf2 patterns using absneg code iterator.
20633         * config/i386/sse.md (<code><mode>2): Macroize expander from
20634         abs<mode>2 and neg<mode>2 patterns using absneg code iterator.
20635
20636 2008-04-10  Andreas Krebbel  <krebbel1@de.ibm.com>
20637
20638         * config/s390/s390.h: Remove the remains of the recent search
20639         & replace action of current_function_outgoing_args_size.
20640
20641 2008-04-10  Ira Rosen  <irar@il.ibm.com>
20642
20643         PR tree-optimization/35821
20644         * tree-vect-transform.c (vect_create_data_ref_ptr): Add check that
20645         NEW_STMT_LIST is not NULL.
20646
20647 2008-04-09  David Edelsohn  <edelsohn@gnu.org>
20648
20649         PR libstdc++/35597
20650         * toplev.c (process_options): Remove -ffunction-sections debugging
20651         warning.
20652
20653 2008-04-09  Peter Bergner  <bergner@vnet.ibm.com>
20654
20655         PR middle-end/PR28690
20656         * explow.c (break_out_memory_refs): Use simplify_gen_binary rather
20657         than gen_rtx_fmt_ee to perform more canonicalizations.
20658
20659 2008-04-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
20660
20661         PR driver/35665
20662         * collect2.c (write_c_file): Don't wrap in "#ifdef __cplusplus".
20663
20664 2008-04-09  Richard Guenther  <rguenther@suse.de>
20665
20666         * tree-cfg.c (verify_stmt): Print complete bogus stmt.
20667         (dump_function_to_file): Dump function arguments with types.
20668
20669 2008-04-08  Richard Guenther  <rguenther@suse.de>
20670
20671         * fold-const.c (fold_widened_comparison): Do not allow
20672         sign-changes that change the result.
20673
20674 2008-04-08  Janis Johnson  <janis187@us.ibm.com>
20675
20676         PR target/35839
20677         * config/rs6000/rs6000.c (rs6000_check_sdmode): Handle additional
20678         kinds of indirect references.
20679
20680 2008-04-08  David Edelsohn  <edelsohn@gnu.org>
20681
20682         * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Update
20683         GNU Fortran language string.
20684
20685 2008-04-08  Rafael Espíndola  <espindola@google.com>
20686
20687         * fold-canst.c (tree_call_nonnegative_warnv_p): New.
20688         (tree_invalid_nonnegative_warnv_p): Use tree_call_nonnegative_warnv_p.
20689         * tree.h (tree_call_nonnegative_warnv_p): New.
20690
20691 2008-04-08  Jan Hubicka  <jh@suse.cz>
20692
20693         * function.c (free_after_compilation): Clear out regno_reg_rtx
20694         pointer.
20695
20696 2008-04-08  Peter Bergner  <bergner@vnet.ibm.com>
20697
20698         Revert
20699         2008-04-07  Peter Bergner  <bergner@vnet.ibm.com>
20700
20701         PR middle-end/PR28690
20702         * rtlanal.c: (commutative_operand_precedence): Give SYMBOL_REF's the
20703         same precedence as REG_POINTER and MEM_POINTER operands.
20704
20705 2008-04-08  Richard Guenther  <rguenther@suse.de>
20706
20707         PR middle-end/35834
20708         * tree-ssa-address.c (create_mem_ref): Use POINTER_PLUS_EXPR
20709         for adding index to base.
20710
20711 2008-04-08  Kai Tietz  <kai.tietz@onevision.com>
20712
20713         * config/i386/mingw32.h (ENABLE_EXECUTE_STACK): New.
20714         (MINGW_ENABLE_EXECUTE_STACK): New.
20715         (IN_LIBGCC2): For libgcc include windows.h file for
20716         function declarations.
20717
20718 2008-04-08  Hans-Peter Nilsson  <hp@axis.com>
20719
20720         * config/cris/cris.c (cris_address_cost): For a PLUS, swap tem1
20721         and tem2 if tem1 is not a REG or MULT.
20722
20723 2008-04-08  Jan Hubicka  <jh@suse.cz>
20724
20725         * function.h (incomming_args): Break out of struct function.
20726         (function_subsections): Break out of struct function.
20727         (rtl_data): Add args, subsections fields. Break out outgoing_args_size,
20728         return_rtx and hard_reg_initial_vals from struct function.
20729         Kill inl_max_label_num.
20730         (current_function_pops_args, current_function_args_info,
20731         current_function_args_size, current_function_args_size,
20732         current_function_pretend_args_size,
20733         current_function_outgoing_args_size,
20734         current_function_internal_arg_pointer, current_function_return_rtx):
20735         Kill compatibility accestor macros.
20736         * builtins.c (expand_builtin_apply_args_1): Update.
20737         (expand_builtin_next_arg): Update.
20738         * df-scan.c (df_get_call_refs): Update.
20739         * dbxout.c (dbxout_function_end): Update.
20740         * dwarf2out.c (dwarf2out_switch_text_section): Update.
20741         (output_line_info): Update.
20742         (secname_for_decl): Update.
20743         (dwarf2out_var_location): Update.
20744         * function.c (free_after_compilation): Update.
20745         (assign_parm_find_stack_rtl): Update.
20746         (assign_parms): Update.
20747         (expand_dummy_function_end): Update.
20748         (expand_function_end): Update.
20749         * calls.c (mem_overlaps_already_clobbered_arg_p): Update.
20750         (expand_call): Update.
20751         (emit_library_call_value_1): Update.
20752         (store_one_arg): Update.
20753         * varasm.c (initialize_cold_section_name): Update.
20754         (unlikely_text_section): Update.
20755         (unlikely_text_section_p): Update.
20756         (assemble_start_function): Update.
20757         (assemble_end_function): Update.
20758         (default_section_type_flags): Update.
20759         (switch_to_section): Update.
20760         * integrate.c (set_decl_abstract_flags): Update.
20761         (get_hard_reg_initial_val): Update.
20762         (has_hard_reg_initial_val): Update.
20763         (allocate_initial_values): Update.
20764         * resource.c (init_resource_info): Update.
20765         * config/alpha/alpha.c (NUM_ARGS): Update.
20766         (direct_return): Update.
20767         (alpha_va_start): Update.
20768         (alpha_sa_size): Update.
20769         (alpha_initial_elimination_offset): Update.
20770         (alpha_expand_prologue): Update.
20771         (alpha_start_function): Update.
20772         (alpha_expand_epilogue): Update.
20773         (unicosmk_initial_elimination_offset):
20774         * config/alpha/alpha.md (call expander): Update.
20775         * config/s390/s390.c (s390_register_info): Update.
20776         (s390_register_info): Update.
20777         (s390_frame_info): Update.
20778         (s390_initial_elimination_offset): Update.
20779         (s390_build_builtin_va_list): Update.
20780         (s390_va_start): Update.
20781         * config/spu/spu.c (direct_return): Update.
20782         (spu_expand_prologue): Update.
20783         (spu_initial_elimination_offset): Update.
20784         (spu_build_builtin_va_list): Update.
20785         (spu_va_start): Update.
20786         * config/sparc/sparc.c (sparc_init_modes): Update.
20787         (sparc_compute_frame_size): Update.
20788         (function_value): Update.
20789         * config/m32r/m32r.c (m32r_compute_frame_size): Update.
20790         * config/i386/i386.md (return expander): Update.
20791         * config/i386/i386.c (ix86_va_start): Update.
20792         (ix86_can_use_return_insn_p): Update.
20793         (ix86_compute_frame_layout): Update.
20794         (ix86_expand_epilogue): Update.
20795         * config/sh/sh.c (output_stack_adjust): Update.
20796         (calc_live_regs): Update.
20797         (sh_expand_prologue): Update.
20798         (sh_builtin_saveregs): Update.
20799         (sh_va_start): Update.
20800         (initial_elimination_offset): Update.
20801         (sh_allocate_initial_value): Update.
20802         (sh_function_ok_for_sibcall): Update.
20803         (sh_get_pr_initial_val): Update.
20804         * config/sh/sh.md (return expander): Update.
20805         * config/avr/avr.c (frame_pointer_required_p): UPdate.
20806         * config/crx/crx.c (crx_compute_frame): UPdate.
20807         (crx_initial_elimination_offset): UPdate.
20808         * config/xtensa/xtensa.c (compute_frame_size): Update
20809         (xtensa_builtin_saveregs): Update.
20810         (xtensa_va_start): Update.
20811         (order_regs_for_local_alloc): Update.
20812         * config/stormy16/stormy16.c (xstormy16_compute_stack_layout): Update.
20813         (xstormy16_expand_builtin_va_start): Update.
20814         * config/fr30/fr30.c (fr30_compute_frame_size): Update.
20815         * config/m68hc11/m68hc11.md (return expanders): Update.
20816         * config/m68hc11/m68hc11.c (expand_prologue): Update.
20817         (expand_epilogue): Update.
20818         * config/cris/cris.c (cris_initial_frame_pointer_offset): Update.
20819         (cris_simple_epilogue): Update.
20820         (cris_expand_prologue): Update.
20821         (cris_expand_epilogue): Update.
20822         * config/iq2000/iq2000.c (iq2000_va_start): Update.
20823         (compute_frame_size): Update.
20824         * config/mt/mt.c (mt_compute_frame_size): Update.
20825         * config/mn10300/mn10300.c (expand_prologue): Update.
20826         (expand_epilogue): Update.
20827         (initial_offset): Update.
20828         (mn10300_builtin_saveregs):
20829         * config/mn10300/mn10300.md (return expander): Update.
20830         * config/ia64/ia64.c (ia64_compute_frame_size): Update.
20831         (ia64_initial_elimination_offset): Update.
20832         (ia64_initial_elimination_offset): Update.
20833         (ia64_expand_prologue): Update.
20834         * config/m68k/m68k.md (return expander): Update.
20835         * config/rs6000/rs6000.c (rs6000_va_start): Update.
20836         (rs6000_stack_info): Update.
20837         * config/mcore/mcore.c (layout_mcore_frame): Update.
20838         (mcore_expand_prolog): Update.
20839         * config/arc/arc.c (arc_compute_frame_size): Update.
20840         * config/score/score3.c (score3_compute_frame_size): Update.
20841         * config/score/score7.c (score7_compute_frame_size): Update.
20842         * config/arm/arm.c (use_return_insn): Update.
20843         (thumb_find_work_register): Update.
20844         (arm_compute_save_reg_mask): Update.
20845         (arm_output_function_prologue): Update.
20846         (arm_output_epilogue): Update.
20847         (arm_size_return_regs): Update.
20848         (arm_get_frame_offsets): Update.
20849         (arm_expand_prologue): Update.
20850         (thumb_exit): Update.
20851         (thumb_unexpanded_epilogue): Update.
20852         (thumb1_output_function_prologue): Update.
20853         * config/pa/pa.md (return expander): Update.
20854         * config/pa/pa.c (compute_frame_size): Update.
20855         (hppa_builtin_saveregs): Update.
20856         * config/mips/mips.c (mips_va_start): Update.
20857         (mips16_build_function_stub): Update.
20858         (mips_compute_frame_info): Update.
20859         (mips_restore_gp): Update.
20860         (mips_output_function_prologue): Update.
20861         (mips_expand_prologue): Update.
20862         * config/v850/v850.c (compute_frame_size): Update.
20863         (expand_prologue): * config/mmix/mmix.c (along): update.
20864         (mmix_initial_elimination_offset): update.
20865         (mmix_reorg): update.
20866         (mmix_use_simple_return): update.
20867         (mmix_expand_prologue): update.
20868         (mmix_expand_epilogue): Update.
20869         * config/bfin/bfin.c (bfin_initial_elimination_offset): Update.
20870         (emit_link_insn): Update.
20871
20872 2008-04-08  Anatoly Sokolov <aesok@post.ru>
20873
20874         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Define
20875         __AVR_HAVE_EIJMP_EICALL__ macro if device have EIJMP and EICALL
20876         instructions.
20877         * config/avr/avr.c (avr_mcu_types): Set AVR31 architecture for
20878         atmega103 device.
20879
20880 2008-04-07  Jan Hubicka  <jh@suse.cz>
20881
20882         * function.h (rtl): Rename to x_rtl.
20883         (crtl): New define.
20884         (return_label, naked_return_label, stack_slot_list, parm_birth_insn,
20885         frame_offset, stack_check_probe_note, arg_pointer_save_area,
20886         used_temp_slots avail_temp_slots, temp_slot_level,
20887         nonlocal_goto_handler_labels): Update accesstors.
20888         (rtl): New global variable.
20889         (struct function): Move some fileds to rtl_data.
20890         (get_arg_pointer_save_area): Update prototype.
20891         * builtins.c (expand_builtin_setjmp_receiver): Update call of
20892         get_arg_pointer_save_area.
20893         * expr.c (init_expr): Update
20894         * function.c (get_frame_size): Update
20895         (assign_stack_local): Update
20896         (expand_function_end): Update.
20897         (get_art_pointer_save_area): Update
20898         * function.h
20899         * emit-rtl.c (rtl): Declare.
20900         (regno_reg_rtx): Declare.
20901         (first_insn, last_insn, cur_insn_uid, last_location, first_label_num):
20902         Update.
20903         (gen_reg_rtx): Update.
20904         * varasm.c (n_deferred_constatns): Update accestor.
20905         (init_varasm_status): Do not allocate varasm_status.
20906         (force_const_mem, get_pool_size, output_constant_pool): Update.
20907         * stmt.c (force_label_rtx): Do not use x_ prefixes.
20908         (expand_nl_goto_receiver): Update get_arg_pointer_save_area.
20909         * m32c/m32.c (m32c_leaf_function_p, m32c_function_needs_enter): Update.
20910         * sparc/sparc.h (INIT_EXPANDERS): Update.
20911         * ia64/ia64.h (INIT_EXPANDERS): Update.
20912
20913 2008-04-07  James E. Wilson  <wilson@tuliptree.org>
20914
20915         * reload.c (push_secondary_reload): Add missing break to for loop.
20916
20917 2008-04-07  Peter Bergner  <bergner@vnet.ibm.com>
20918
20919         PR middle-end/PR28690
20920         * rtlanal.c: Update copyright years.
20921         (commutative_operand_precedence): Give SYMBOL_REF's the same precedence
20922         as REG_POINTER and MEM_POINTER operands.
20923         * emit-rtl.c (gen_reg_rtx_and_attrs): New function.
20924         (set_reg_attrs_from_value): Call mark_reg_pointer as appropriate.
20925         * rtl.h (gen_reg_rtx_and_attrs): Add prototype for new function.
20926         * gcse.c: Update copyright years.
20927         (pre_delete): Call gen_reg_rtx_and_attrs.
20928         (hoist_code): Likewise.
20929         (build_store_vectors): Likewise.
20930         (delete_store): Likewise.
20931         * loop-invariant.c (move_invariant_reg): Likewise.
20932         Update copyright years.
20933
20934 2008-04-07  Uros Bizjak  <ubizjak@gmail.com>
20935
20936         * config/i386/i386.md ("*sse_prologue_save_insn"): Use braced output
20937         control string instead of quoted.
20938
20939 2008-04-07  Kenneth Zadeck  <zadeck@naturalbridge.com>
20940
20941         * doc/rtl.texi: Rewrite of subreg section.
20942
20943 2008-04-07  Kai Tietz  <kai.tietz@onevision.com>
20944
20945         PR/35842
20946         * config/i386/i386.c (legitimize_pic_address): Add treating
20947         of dllimport SYM_REF's.
20948         (legitimize_dllimport_symbol): Add prototype.
20949
20950 2008-04-07  Eric Botcazou  <ebotcazou@adacore.com>
20951
20952         * fold-const.c (fold) <ARRAY_REF>: New case.  Try to fold constant
20953         reference in constructor with non self-referential type.
20954
20955 2008-04-07  Eric Botcazou  <ebotcazou@adacore.com>
20956
20957         Removal of Return with Depressed Stack Pointer support
20958         * tree.h (TYPE_RETURNS_STACK_DEPRESSED): Delete.
20959         (ECF_SP_DEPRESSED): Likewise.
20960         (ECF_LIBCALL_BLOCK, ECF_NOVOPS): Adjust.
20961         * calls.c (emit_call_1): Do not test ECF_SP_DEPRESSED.
20962         (flags_from_decl_or_type): Do not test TYPE_RETURNS_STACK_DEPRESSED.
20963         (expand_call): Do not test ECF_SP_DEPRESSED.
20964         * dse.c (dse_step0): Do not test TYPE_RETURNS_STACK_DEPRESSED.
20965         * function.c (keep_stack_depressed): Delete.
20966         (handle_epilogue_set): Likewise.
20967         (update_epilogue_consts): Likewise.
20968         (emit_equiv_load): Likewise.
20969         (thread_prologue_and_epilogue_insns): Remove support for Return with
20970         Depressed Stack Pointer.
20971         * print-tree.c (print_node): Do not test TYPE_RETURNS_STACK_DEPRESSED.
20972
20973 2008-04-06  Richard Guenther  <rguenther@suse.de>
20974
20975         PR tree-optimization/35400
20976         * tree-vrp.c (vrp_evaluate_conditional): Only query value-range
20977         information from SSA_NAMEs.
20978
20979 2008-04-06  Anatoly Sokolov <aesok@post.ru>
20980
20981         * config/avr/avr.h (avr_mega_p): Remove declaration.
20982         (AVR_MEGA): Remove macro.
20983         * config/avr/avr.c (avr_mega_p): Remove variable.
20984         (avr_override_options): Remove inicializion of avr_mega_p.
20985         Use AVR_HAVE_JMP_CALL instead of AVR_MEGA.
20986         (print_operand): Use AVR_HAVE_JMP_CALL instead of AVR_MEGA.
20987         (avr_jump_mode): (Ditto.).
20988         (avr_output_progmem_section_asm_op): (Ditto.).
20989         (avr_asm_init_sections): (Ditto.).
20990         (avr_asm_init_sections): (Ditto.).
20991         (avr_rtx_costs): (Ditto.).
20992         * config/avr/avr.md: (Ditto.).
20993         * config/avr/avr.h: Use '__AVR_HAVE_JMP_CALL__' instead of
20994         '__AVR_MEGA__'.
20995
20996 2008-04-06  Richard Guenther  <rguenther@suse.de>
20997
20998         PR tree-optimization/35842
20999         * tree-ssa-address.c (fixed_address_object_p): Adjust to match
21000         is_gimple_invariant_address.
21001
21002 2008-04-06  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
21003
21004         * gcc.c (default_compilers): Sync Fortran extensions list with
21005         that in fortran/lang-specs.h.
21006         * doc/invoke.texi: Likewise.
21007         * dbxout.c (get_lang_number): Use "GNU Fortran" in "GNU F95".
21008         * dwarf2out.c (gen_compile_unit_die): Likewise.
21009
21010 2008-04-06  Tom G. Christensen  <tgc@jupiterrise.com>
21011
21012         * gthr-posix95.h (__gthread_cond_wait_recursive): Add missing &.
21013
21014 2008-04-05  Uros Bizjak  <ubizjak@gmail.com>
21015
21016         PR target/12329
21017         * config/i386/i386.c (ix86_function_regparm): Error if regparm(3)
21018         attribute is used for nested functions.
21019
21020 2008-04-05  Jan Hubicka  <jh@suse.cz>
21021
21022         * emit-rtl.c (init_emit): xcalloc regno_pointer_align.
21023
21024         * tree-dump.c (dump_enable_all): Remove prototype; do not accept
21025         letter argument.
21026         (dump_files): Update.
21027         (enable_rtl_dump_file): Do not accept letter argument.
21028         * tree-pass.h (dump_file_info): Remove letter argument.
21029         * toplev.c (decode_d_option): Update -da handling.
21030         * toplev.h (enable_rtl_dump_file): Update prototype.
21031         * passes.c (register_one_dump_file): Do not accept IPA argument; work
21032         it out based on pass type.
21033         (register_dump_files_1): Likewise.
21034         (init_optimization_passes): Update register_one_dump_file calls.
21035         (execute_one_pass): Sanity check that IPA passes are called at IPA
21036         level and RTL passes at RTL level.
21037         (execute_pass_list): IPA pass can not be after or subpass of
21038         GIMPLE/RTL pass.
21039         (execute_ipa_pass_list): Handle IPA subpasses of IPA subpasses and
21040         disallov RTL subpasses of IPA subpasses.
21041
21042 2008-04-05  Ben Elliston  <bje@au.ibm.com>
21043
21044         * tree-cfg.c (need_fake_edge_p): Return false for calls to
21045         builtins that return exactly once and do not throw. Cache call to
21046         call_expr_flags.
21047
21048 2008-04-04 Andy Hutchinson <hutchinsonandy@aim.com>
21049
21050         PR rtl-optimization/34916
21051         PR middle-end/35519
21052         * combine.c (create_log_links): Do not create duplicate LOG_LINKS
21053         between instruction pairs.
21054
21055 2008-04-04  Naveen.H.S  <naveen.hs@kpitcummins.com>
21056
21057         * doc/invoke.texi: Document -mbitops for SH.
21058         * config/sh/constraints.md (K03, K12, Sbv, Sbw): New constraints.
21059         * config/sh/predicates.md (bitwise_memory_operand): New predicate.
21060         * config/sh/sh.c (print_operand): Add %t operand code.
21061         * config/sh/sh.h (GO_IF_LEGITIMATE_INDEX): Add condition for SH2A.
21062         * config/sh/sh.md (*iorsi3_compact): Fix condition for SH2A.
21063         (extendqisi2_compact): Add the alternative for SH2A 4-byte mov.b.
21064         (extendqihi2): Likewise.
21065         (movqi_i): Likewise.
21066         (insv): Use bset, bclr and bst instructions for SH2A if possible.
21067         (extv): Use bld instruction for SH2A if possible.
21068         (extzv): Likewise.
21069         (bclr_m2a, bclrmem_m2a, bset_m2a, bsetmem_m2a, bst_m2a, bld_m2a,
21070         bldsign_m2a, bld_reg, *bld_regqi, band_m2a, bandreg_m2a,
21071         bor_m2a, borreg_m2a, bxor_m2a, bxorreg_m2a): New insns.
21072         (bset.b, bclr.b): Define peepholes.
21073         * config/sh/sh.opt (mbitops): New option.
21074
21075 2008-04-04  Janis Johnson  <janis187@us.ibm.com>
21076
21077         PR target/35620
21078         * config/rs6000/rs6000.c (rs6000_check_sdmode): Handle indirect ref
21079         and view convert expression.
21080
21081 2008-04-04  Jakub Jelinek  <jakub@redhat.com>
21082
21083         PR target/35364
21084         * tree-cfg.c (remove_useless_stmts_1): Handle OMP_* containers.
21085
21086 2008-04-04  H.J. Lu  <hongjiu.lu@intel.com>
21087
21088         * config.gcc (extra_headers): Add wmmintrin.h for x86 and x86-64.
21089
21090         * config/i386/cpuid.h (bit_AES): New.
21091         (bit_PCLMUL): Likewise.
21092
21093         * config/i386/i386.c (pta_flags): Add PTA_AES and PTA_PCLMUL.
21094         (override_options): Handle PTA_AES and PTA_PCLMUL.  Enable
21095         SSE2 if AES or PCLMUL is enabled.
21096         (ix86_builtins): Add IX86_BUILTIN_AESENC128,
21097         IX86_BUILTIN_AESENCLAST128, IX86_BUILTIN_AESDEC128,
21098         IX86_BUILTIN_AESDECLAST128, IX86_BUILTIN_AESIMC128,
21099         IX86_BUILTIN_AESKEYGENASSIST128 and IX86_BUILTIN_PCLMULQDQ128.
21100         (bdesc_sse_3arg): Add IX86_BUILTIN_PCLMULQDQ128.
21101         (bdesc_2arg): Add IX86_BUILTIN_AESENC128,
21102         IX86_BUILTIN_AESENCLAST128, IX86_BUILTIN_AESDEC128,
21103         IX86_BUILTIN_AESDECLAST128 and IX86_BUILTIN_AESKEYGENASSIST128.
21104         (bdesc_1arg): Add IX86_BUILTIN_AESIMC128.
21105         (ix86_init_mmx_sse_builtins): Define __builtin_ia32_aesenc128,
21106         __builtin_ia32_aesenclast128, __builtin_ia32_aesdec128,
21107         __builtin_ia32_aesdeclast128,__builtin_ia32_aesimc128,
21108         __builtin_ia32_aeskeygenassist128 and
21109         __builtin_ia32_pclmulqdq128.
21110         * config/i386/i386.c (ix86_expand_binop_imm_builtin): New.
21111         (ix86_expand_builtin): Use it for IX86_BUILTIN_PSLLDQI128 and
21112         IX86_BUILTIN_PSRLDQI128.  Handle IX86_BUILTIN_AESKEYGENASSIST128.
21113
21114         * config/i386/i386.h (TARGET_AES): New.
21115         (TARGET_PCLMUL): Likewise.
21116         (TARGET_CPU_CPP_BUILTINS): Handle TARGET_AES and TARGET_PCLMUL.
21117
21118         * config/i386/i386.md (UNSPEC_AESENC): New.
21119         (UNSPEC_AESENCLAST): Likewise.
21120         (UNSPEC_AESDEC): Likewise.
21121         (UNSPEC_AESDECLAST): Likewise.
21122         (UNSPEC_AESIMC): Likewise.
21123         (UNSPEC_AESKEYGENASSIST): Likewise.
21124         (UNSPEC_PCLMUL): Likewise.
21125
21126         * config/i386/i386.opt (maes): New.
21127         (mpclmul): Likewise.
21128
21129         * config/i386/sse.md (aesenc): New pattern.
21130         (aesenclast): Likewise.
21131         (aesdec): Likewise.
21132         (aesdeclast): Likewise.
21133         (aesimc): Likewise.
21134         (aeskeygenassist): Likewise.
21135         (pclmulqdq): Likewise.
21136
21137         * config/i386/wmmintrin.h: New.
21138
21139         * doc/extend.texi: Document AES and PCLMUL built-in function.
21140
21141         * doc/invoke.texi: Document -maes and -mpclmul.
21142
21143 2008-04-04  Paolo Bonzini  <bonzini@gnu.org>
21144
21145         * function.c (free_after_parsing): Replace with
21146         cxx_push_function_context from C++ front-end.
21147         (allocate_struct_function): Don't call langhook.
21148         * langhooks.h (struct lang_hooks_for_functions): Delete.
21149         (struct lang_hooks): Add back missing_noreturn_ok_p here, delete
21150         member "function".
21151         * langhooks-def.h (LANG_HOOKS_MISSING_NORETURN_OK_P): Add.
21152         (LANG_HOOKS_FUNCTION_INIT, LANG_HOOKS_FUNCTION_FINAL,
21153         LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P,
21154         LANG_HOOKS_FUNCTION_INITIALIZER): Delete.
21155         (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_MISSING_NORETURN_OK_P,
21156         remove LANG_HOOKS_FUNCTION_INITIALIZER.
21157         * tree-cfg.c: Adjust call to missing_noreturn_ok_p langhook.
21158
21159         * c-objc-common.h (LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P):
21160         Rename to LANG_HOOKS_MISSING_NORETURN_OK_P.
21161
21162 2008-04-04  Jakub Jelinek  <jakub@redhat.com>
21163
21164         PR c/35440
21165         * c-pretty-print.c (pp_c_initializer_list): Handle CONSTRUCTOR
21166         for all types.
21167
21168 2008-04-04  Richard Guenther  <rguenther@suse.de>
21169
21170         PR middle-end/35823
21171         * fold-const.c (optimize_minmax_comparison): Use the correct
21172         type for the constant in the simplified comparison.
21173
21174 2008-04-04  Zuxy Meng <zuxy.meng@gmail.com>
21175
21176         * config/i386/driver-i386.c (describe_cache): Add l2_sizekb argument.
21177         Pass L2 size as "--param l2-cache-size" to the compiler.
21178         (decode_l2_cache): New function to decode L2 cache parameters using
21179         0x8000006 extended cpuid function.
21180         (detect_caches_amd): Determine parameters of L2 cache using
21181         decode_l2_caches function.
21182         (decode_caches_intel): Decode L2 cache parameters.
21183         (detect_caches_intel): Determine L2 cache parameters using
21184         decode_caches_intel and decode_l2_caches functions.
21185
21186 2008-04-03  Bob Wilson  <bob.wilson@acm.org>
21187
21188         * config/xtensa/xtensa.c (xtensa_secondary_reload_class): Use a
21189         secondary input reload for subword loads from the constant pool.
21190
21191 2008-04-03  Janis Johnson  <janis187@us.ibm.com>
21192
21193         PR target/35713
21194         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Use integer
21195           constants of the appropriate size for runtime calculations.
21196
21197         PR c/35712
21198         * dfp.c (decimal_from_decnumber): Retain trailing zeroes for
21199           decimal-float literal constant zero.
21200
21201 2008-04-03  Jakub Jelinek  <jakub@redhat.com>
21202
21203         PR c/35738
21204         * c-parser.c (c_parser_omp_atomic): Call
21205         default_function_array_conversion on the RHS.
21206
21207         PR middle-end/35818
21208         * omp-low.c (scan_sharing_clauses) <case OMP_CLAUSE_SHARED>: Don't
21209         call is_variable_sized if decl has incomplete type.
21210
21211 2008-04-03  H.J. Lu  <hongjiu.lu@intel.com>
21212
21213         * config/i386/i386-protos.h (ix86_aligned_p): Removed.
21214
21215 2008-04-03  Adam Nemet  <anemet@caviumnetworks.com>
21216
21217         * config/mips/mips.md (any_gt, any_ge, any_lt, any_le): New code
21218         iterators.
21219         (u): Add attribute values for gt, gtu, ge, geu, lt, ltu, le and leu.
21220         (sgt<u>): Merge sgt and sgtu into new expander.
21221         (sgt, sgtu): Remove expanders.
21222         (*sgt<u>_<mode>): Merge *sgt_<mode> and *sgtu_<mode> into new pattern.
21223         (*sgt_<mode>, *sgtu_<mode>): Remove patterns.
21224         (*sgt<u>_<mode>_mips16): Merge *sgt_<mode>_mips16 and
21225         *sgtu_<mode>_mips16 into new pattern.
21226         (*sgt_<mode>_mips16, *sgtu_<mode>_mips16): Remove patterns.
21227         (sge<u>): Merge sge and sgeu into new expander.
21228         (sge, sgeu): Remove expanders.
21229         (*sge<u>_<mode>): Merge *sge_<mode> and second *sge_<mode> into
21230         new pattern.
21231         (*sge_<mode>, second *sge_<mode>): Remove patterns.
21232         (slt<u>): Merge slt and sltu into new expander.
21233         (slt, sltu): Remove expanders.
21234         (*slt<u>_<mode>): Merge *slt_<mode> and *sltu_<mode> into new pattern.
21235         (*slt_<mode>, *sltu_<mode>): Remove patterns.
21236         (*slt<u>_<mode>_mips16): Merge *slt_<mode>_mips16 and
21237         *sltu_<mode>_mips16 into new pattern.
21238         (*slt_<mode>_mips16, *sltu_<mode>_mips16): Remove patterns.
21239         (sle<u>): Merge sle and sleu into new expander.
21240         (sle, sleu): Remove expanders.
21241         (*sle<u>_<mode>): Merge *sle_<mode> and *sleu_<mode> into new pattern.
21242         (*sle_<mode>, *sleu_<mode>): Remove patterns.
21243         (*sle<u>_<mode>_mips16): Merge *sle_<mode>_mips16 and
21244         *sleu_<mode>_mips16 into new pattern.
21245         (*sle_<mode>_mips16, *sleu_<mode>_mips16): Remove patterns.
21246
21247 2008-04-03  Jan Hubicka  <jh@suse.cz>
21248
21249         PR tree-optimization/35795
21250         * alpha/alpha.c (alpha_output_mi_thunk_osf): Free after compilation.
21251         * sparc/sparc.c (sparc_output_mi_thunk): Likewise.
21252         * ia64/ia64.c (ia64_output_mi_thunk): Likewise.
21253         * m68k/m68k.c (m68k_output_mi_thunk): Likewise.
21254         * score/score3.c (score3_output_mi_thunk): Likewise.
21255         * score/score7.c (score7_output_mi_thunk): Likewise.
21256         * mips/mips.c (mips_output_mi_thunk): Likewise.
21257
21258 2008-04-03  Richard Guenther  <rguenther@suse.de>
21259
21260         * tree-vrp.c (extract_range_from_unary_expr): Handle all
21261         conversions.  Simplify code.
21262
21263 2008-04-03  Kaz Kojima  <kkojima@gcc.gnu.org>
21264
21265         * config/sh/sh.c (sh_output_mi_thunk): Free cfun.
21266
21267 2008-04-03  Tom Tromey  <tromey@redhat.com>
21268             Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
21269
21270         * config/m68k/t-uclinux (generated_files): Add sysroot-suffix.h.
21271         * config/bfin/t-bfin-linux (generated_files): Add
21272         linux-sysroot-suffix.h.
21273         * doc/install.texi (Prerequisites): Require make 3.80.
21274         * doc/sourcebuild.texi (Front End Directory): Document new
21275         variable.
21276         * Makefile.in (generated_files): New variable.
21277         (ALL_HOST_OBJS): New variable.
21278         ($(ALL_HOST_OBJS)): New target.
21279
21280 2008-04-03  Paolo Bonzini  <bonzini@gnu.org>
21281
21282         * tree-inline.c (copy_generic_body, copy_decl_no_change): Export.
21283         (remap_block): Call id->transform_lang_insert_block instead
21284         of langhook.
21285         (optimize_inline_calls, unsave_expr_now, tree_function_versioning):
21286         Set id.transform_lang_insert_block to NULL.
21287         (clone_body): Move to cp/optimize.c
21288         * tree-inline.h (struct copy_body_data): Change
21289         transform_lang_insert_block to function pointer.
21290         (copy_generic_body, copy_decl_no_change): Export.
21291         * langhooks.h (struct lang_hooks_for_decls): Kill insert_block.
21292         * langhooks-def.h (LANG_HOOKS_INSERT_BLOCK): Kill.
21293         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_INSERT_BLOCK.
21294
21295         * c-tree.h (insert_block): Kill.
21296         * c-decl.c (insert_block): Kill.
21297
21298 2008-04-03  Paolo Bonzini  <bonzini@gnu.org>
21299
21300         * c-objc-common.h (LANG_HOOKS_FUNCTION_ENTER_NESTED,
21301         LANG_HOOKS_FUNCTION_LEAVE_NESTED): Delete.
21302         * c-tree.h (c_push_function_context, c_pop_function_context): Remove
21303         argument.
21304         * c-decl.c (c_push_function_context, c_pop_function_context): Remove
21305         argument, call {push,pop}_function_context from here.
21306         * c-parser.c: Use c_{push,pop}_function_context.
21307
21308         * function.c (push_function_context_to): Move meat ...
21309         (push_function_context): ... here.  Simplify.
21310         * function.c (pop_function_context_from): Move meat ...
21311         (pop_function_context): ... here.  Simplify.
21312         * langhooks.h (struct lang_hooks_for_functions): Remove enter_nested,
21313         leave_nested).
21314         * langhooks-def.h (LANG_HOOKS_FUNCTION_ENTER_NESTED,
21315         LANG_HOOKS_FUNCTION_LEAVE_NESTED): Delete.
21316         (LANG_HOOKS_FUNCTION_INITIALIZER): Delete them from here.
21317         * tree.h (push_function_context_to, pop_function_context_from): Remove.
21318
21319 2008-04-03  Ben Elliston  <bje@au.ibm.com>
21320
21321         * expmed.c (extract_force_align_mem_bit_field): Remove.
21322
21323 2008-04-03  Richard Guenther  <rguenther@suse.de>
21324
21325         PR middle-end/35800
21326         * expr.h (try_casesi): Adjust prototype.
21327         * expr.c (try_casesi): Take fallback label as extra parameter.
21328         Use that for gen_casesi if default_label is NULL.
21329         * stmt.c (expand_case): Pass fallback label to try_casesi,
21330         make sure to fill gaps with a fallback label if default_label
21331         is not present.
21332
21333 2008-04-03  Dominique d'Humières <dominiq@lps.ens.fr>
21334
21335         PR target/35801
21336         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Free cfun.
21337
21338 2008-04-03  Ben Elliston  <bje@au.ibm.com>
21339
21340         * expmed.c (extract_split_bit_field): Remove if (0) code.
21341         * tree-ssa-structalias.c (do_sd_constraint): Likewise.
21342         (do_ds_constraint): Likewise.
21343
21344 2008-04-02  Joseph Myers  <joseph@codesourcery.com>
21345
21346         * doc/cppopts.texi (-dU): Document.
21347         * c-common.h (flag_dump_macros): Update comment.
21348         * c-opts.c (handle_OPT_d): Handle -dU.
21349         * c-ppoutput.c (macro_queue, define_queue, undef_queue,
21350         dump_queued_macros, cb_used_define, cb_used_undef): New.
21351         (init_pp_output): Handle -dU.
21352         (cb_line_change): Call dump_queued_macros.
21353         * toplev.c (decode_d_option): Accept -dU as preprocessor option.
21354
21355 2008-04-02  Anatoly Sokolov <aesok@post.ru>
21356
21357         * config/avr/predicates.md (io_address_operand): New predicate.
21358         * config/avr/avr-protos.h (avr_io_address_p): Remove declaration.
21359         * config/avr/avr.c (avr_io_address_p): Remove function.
21360         (out_movqi_r_mr): Use 'io_address_operand' predicate instead of
21361         'avr_io_address_p' function.
21362         (out_movhi_r_mr): (Ditto.).
21363         (out_movqi_mr_r): (Ditto.).
21364         (out_movhi_mr_r): (Ditto.).
21365         (avr_address_cost): (Ditto.).
21366
21367 2008-04-02  Uros Bizjak  <ubizjak@gmail.com>
21368
21369         * config/i386/i386.md (*float<SSEMODEI24:mode><X87MODEF:mode>2_1):
21370         Emit gen_floatdi<X87MODEF:mode>2_i387_with_xmm for DImode values
21371         in 32bit mode when XMM registers are available to avoid store
21372         forwarding stalls.
21373         (floatdi<X87MODEF:mode>2_i387_with_xmm): New insn pattern and
21374         corresponding post-reload splitters.
21375
21376 2008-04-02  H.J. Lu  <hongjiu.lu@intel.com>
21377
21378         * config/i386/i386.c (bdesc_sse_3arg): Add __builtin_ia32_shufps
21379         and __builtin_ia32_shufpd.  Provide __builtin_ia32_roundsd and
21380         __builtin_ia32_roundss.
21381         (ix86_init_mmx_sse_builtins): Remove __builtin_ia32_shufps,
21382         __builtin_ia32_shufpd, __builtin_ia32_roundsd and
21383         __builtin_ia32_roundss.
21384         (ix86_expand_builtin): Don't handle IX86_BUILTIN_SHUFPS and
21385         IX86_BUILTIN_SHUFPD here.
21386
21387 2008-04-02  H.J. Lu  <hongjiu.lu@intel.com>
21388
21389         * config/i386/i386.md (plogic): New.
21390         (plogicprefix): Likewise.
21391
21392         * config/i386/mmx.md (mmx_<code><mode>3): New.
21393         (mmx_and<mode>3): Removed.
21394         (mmx_ior<mode>3): Likewise.
21395         (mmx_xor<mode>3): Likewise.
21396
21397         * config/i386/sse.md (<code><mode>3): New.
21398         (*<code><mode>3): Likewise.
21399         (*<code><mode>3): Likewise.
21400         (<code><mode>3): Likewise.
21401         (*sse_<code><mode>3): Likewise.
21402         (*sse2_<code><mode>3): Likewise.
21403         (<code>tf3): Likewise.
21404         (*<code>tf3): Likewise.
21405         (and<mode>3): Likewise.
21406         (*and<mode>3): Likewise.
21407         (ior<mode>3): Removed.
21408         (*ior<mode>3): Likewise.
21409         (xor<mode>3): Likewise.
21410         (*xor<mode>3): Likewise.
21411         (*and<mode>3): Likewise.
21412         (*ior<mode>3): Likewise.
21413         (*xor<mode>3): Likewise.
21414         (and<mode>3): Likewise.
21415         (*sse_and<mode>3): Likewise.
21416         (*sse2_and<mode>3): Likewise.
21417         (andtf3): Likewise.
21418         (*andtf3): Likewise.
21419         (ior<mode>3): Likewise.
21420         (*sse_ior<mode>3): Likewise.
21421         (*sse2_ior<mode>3): Likewise.
21422         (iortf3): Likewise.
21423         (*iortf3): Likewise.
21424         (xor<mode>3): Likewise.
21425         (*sse_xor<mode>3): Likewise.
21426         (*sse2_xor<mode>3): Likewise.
21427         (xortf3): Likewise.
21428         (*xortf3): Likewise.
21429
21430 2008-04-02  Richard Guenther  <rguenther@suse.de>
21431
21432         PR tree-optimization/14495
21433         PR tree-optimization/34793
21434         * tree-vrp.c (struct switch_update): New structure.
21435         (to_remove_edges, to_update_switch_stmts): New VECs.
21436         (simplify_switch_using_ranges): New function.  Remove not taken
21437         case labels and edges.
21438         (simplify_stmt_using_ranges): Call it.
21439         (identify_jump_threads): Mark edges we have queued for removal
21440         so we don't thread them.
21441         (execute_vrp): Remove edges queued for removal, update SWITCH_STMT
21442         case label vector.
21443         * tree-cfg.c (group_case_labels): Deal with missing default label.
21444         (tree_verify_flow_info): Allow missing default label.
21445         * stmt.c (emit_case_bit_tests): Deal with NULL default_label.
21446         (emit_case_nodes): Likewise.
21447         (expand_case): Do not rely on the default label to be present.
21448         * expr.c (try_casesi): Deal with NULL default_label.
21449         (do_tablejump): Likewise.
21450
21451 2008-04-02  Richard Guenther  <rguenther@suse.de>
21452
21453         PR tree-optimization/14495
21454         * tree-vrp.c (vrp_visit_cond_stmt): Do not handle
21455         SWITCH_EXPR here ...
21456         (vrp_visit_switch_stmt): ... but here (new function).
21457         (find_case_label_index): New helper function.
21458         (vrp_visit_stmt): Dispatch to vrp_visit_switch_stmt.
21459
21460 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
21461
21462         * fwprop.c: Fix ISO-C99ism.
21463
21464 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
21465
21466         PR bootstrap/35752
21467         * Makefile.in (objdir): Set it here.
21468         * configure.ac: Not here.  Find dynamic linker characteristics.
21469         * exec-tool.in: Use them.
21470         * aclocal.m4: Regenerate.
21471         * configure: Regenerate.
21472
21473 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
21474
21475         * expr.c (expand_var): Delete it.
21476         * expr.h (expand_var): Delete prototype.
21477         * function.c (expand_function_start): Use expand_decl instead.
21478         * cfgexpand.c (expand_one_static_var, expand_one_var): Don't call
21479         langhook.
21480
21481 2008-04-02  Andy Hutchinson <hutchinsonamdy@aim.com>
21482
21483         PR rtl-optimization/35542
21484         * fwprop.c (forward_propagate_and_simplify): Replace
21485         loc_reg_mentioned_in_p with reg_mentioned_p.
21486
21487 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
21488
21489         PR rtl-optimization/35281
21490         * fwprop.c (PR_CAN_APPEAR, PR_HANDLE_MEM): New.
21491         (propagate_rtx_1): Handle PR_HANDLE_MEM.
21492         (propagate_rtx): Pass PR_HANDLE_MEM if appropriate.
21493         (varying_mem_p): Move above propagate_rtx.
21494         (all_uses_available_at): Do not check MEMs.
21495
21496 2008-04-02  Rafael Espíndola  <espindola@google.com>
21497
21498         * tree-vrp.c (extract_code_and_val_from_cond): Remove.
21499         (register_edge_assert_for_2): Split the cond argument.
21500         (register_edge_assert_for_1): Adjust for the change in
21501         register_edge_assert_for_2.
21502         (register_edge_assert_for): Split the cond argument.
21503         (find_switch_asserts): Adjust for the change in
21504         register_edge_assert_for.
21505
21506 2008-04-02  Kai Tietz  <kai.tietz@onevision.com>
21507
21508         * config.gcc: Add for x86_64-*-mingw* the t-crtfm to tbuild.
21509         * config/i386/cygming.h (ASM_OUTPUT_DWARF_OFFSET): Add 8 byte
21510         offsets for 64-bit mingw.
21511         * config/i386/i386.c (ix86_pass_by_reference): Correct calling
21512         abi for x86_64-pc-mingw.
21513
21514 2008-04-02  Richard Guenther  <rguenther@suse.de>
21515
21516         * tree-vrp.c (extract_range_from_assert): Make sure to not
21517         produce range min/max with TREE_OVERFOW set.
21518         If merging a anti-range and a range keep the anti-range if
21519         the range covers all values of the type.
21520         (register_edge_assert_for_2): Only allow sign-changing
21521         conversions in detecting canonical range checks.  Also
21522         register an assert for the unsigned name if useful.
21523
21524         PR tree-optimization/35787
21525         * tree-vrp.c (vrp_val_max): New function.
21526         (vrp_val_min): Likewise.
21527         (vrp_val_is_max): Move earlier, use vrp_val_{min,max}.
21528         (vrp_val_is_min): Likewise.
21529         (supports_overflow_infinity): Use vrp_val_{min,max}.
21530         (negative_overflow_infinity): Likewise.
21531         (positive_overflow_infinity): Likewise.
21532         (is_negative_overflow_infinity): Use vrp_val_is_{min,max}.
21533         (is_positive_overflow_infinity): Likewise.
21534         (is_overflow_infinity): Likewise.
21535         (avoid_overflow_infinity): Use vrp_val_{min,max} and
21536         vrp_val_is_{min,max}.
21537         (set_and_canonicalize_value_range): Canonicalize anti-ranges
21538         to ranges if possible.  Avoid empty ranges.
21539
21540 2008-04-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
21541
21542         PR middle-end/35705
21543         * fold-const.c (get_pointer_modulus_and_residue): Return modulus 1 if
21544         the expression is a function address.
21545
21546 2008-04-01  George Helffrich  <george@gcc.gnu.org>
21547
21548         PR fortran/35154, fortran/23057
21549         * dbxout.c: Emit .stabs debug info for Fortran COMMON block
21550         variables as base symbol name + offset using N_BCOMM/N_ECOMM.
21551         (is_fortran, dbxout_common_name, dbxout_common_check): New functions.
21552         (dbxout_symbol_location): Transform N_LCSYM to N_GSYM for storage
21553         in common.
21554         (dbxout_syms): Check for COMMON-based symbol and wrap in
21555         N_BCOMM/N_ECOMM stab bracket, including as many symbols as possible
21556         in bracket for efficiency.
21557
21558         * dwarf2out.c: Emit DWARF debug info for Fortran COMMON block
21559         using DW_TAG_common_block + member offset.
21560         (add_pubname_string): New function.
21561         (dw_expand_expr): New function to find block name and offset for
21562         COMMON var.
21563         (common_check): New function to check whether symbol in Fortran COMMON.
21564         (gen_variable_die): If COMMON, use DW_TAG_common_block.
21565
21566 2008-04-01  Volker Reichelt  <v.reichelt@netcologne.de>
21567
21568         PR c/35436
21569         * c-format.c (init_dynamic_gfc_info): Ignore invalid locus type.
21570
21571 2008-04-02  Ben Elliston  <bje@au.ibm.com>
21572
21573         * config/v850/v850.md (casesi): Remove if (0) code.
21574         * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Likewise.
21575         * config/alpha/alpha.c (alpha_initialize_trampoline): Likewise.
21576
21577 2008-04-01  Uros Bizjak  <ubizjak@gmail.com>
21578
21579         * config/i386/i386.md (rex64suffix): New mode attribute.
21580         (floathi<mode>2): Disable expander for SSE math.
21581         (*floathi<mode>2_1): New insn insn_and_split pattern.
21582         (*floathi<mode>2_i387_with_temp): New macroized instruction pattern and
21583         corresponding post-reload splitters.
21584         (*floathi<mode>2_i387): New macroized insn pattern.
21585         (float<SSEMODEI24:mode><X87MODEF:mode>2): New macroized expander.
21586         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1): New macroized
21587         insn_and_split pattern.
21588         (*floatsi<mode>2_vector_mixed_with_temp, *floatsi<mode>2_vector_mixed):
21589         New macroized instruction patterns and corresponding post-reload
21590         splitters.
21591         (*floatsi<mode>2_mixed_with_temp): New macroized instruction pattern
21592         and corresponding post-reload splitters.
21593         (*floatsi<mode>2_mixed_interunit, *floatsi<mode>2_mixed_nointerunit):
21594         New macroized instruction patterns.
21595         (*floatsi<mode>2_vector_sse_with_temp, *floatsi<mode>2_vector_sse): New
21596         macroized instruction patterns and corresponding post-reload splitters.
21597         (*floatsi<mode>2_sse_with_temp): New macroized instruction pattern and
21598         corresponding post-reload splitters.
21599         (*floatsi<mode>2_sse_interunit, *floatsi<mode>2_mixed_nointerunit):
21600         New macroized instruction patterns.
21601         (*floatsi<mode>2_i387_with_temp): New macroized instruction pattern and
21602         corresponding post-reload splitters.
21603         (*floatsi<mode>2_i387): New macroized instruction patterns.
21604
21605 2008-04-01  H.J. Lu  <hongjiu.lu@intel.com>
21606
21607         * config/i386/i386.md (smaxmin): New.
21608         (umaxmin): Likewise.
21609         (maxminiprefix): Likewise.
21610         (maxminfprefix): Likewise.
21611         (<code><mode>3): Likewise.
21612         (smin<mode>3): Removed.
21613         (smax<mode>3): Likewise.
21614
21615         * config/i386/mmx.md (mmx_<code>v2sf3): New.
21616         (mmx_<code>v4hi3): Likewise.
21617         (mmx_<code>v8qi3): Likewise.
21618         (mmx_smaxv2sf3): Removed.
21619         (mmx_sminv2sf3): Likewise.
21620         (mmx_umaxv8qi3): Likewise.
21621         (mmx_smaxv4hi3): Likewise.
21622         (mmx_uminv8qi3): Likewise.
21623         (mmx_sminv4hi3): Likewise.
21624
21625         * config/i386/sse.md (<addsub><mode>3): New.
21626         (*<addsub><mode>3): Likewise.
21627         (<sse>_vm<addsub><mode>3): Likewise.
21628         (<maxmin><mode>3): Likewise.
21629         (*<maxmin><mode>3_finite): Likewise.
21630         (*<maxmin><mode>3): Likewise.
21631         (<sse>_vm<maxmin><mode>3): Likewise.
21632         (sse3_h<addsub>v4sf3): Likewise.
21633         (sse3_h<addsub>v2df3): Likewise.
21634         (<maxmin>v16qi3): Likewise.
21635         (*<maxmin>v16qi3): Likewise.
21636         (<maxmin>v8hi3): Likewise.
21637         (*<maxmin>v8hi3): Likewise.
21638         (*sse4_1_<maxmin><mode>3): Likewise.
21639         (*sse4_1_<maxmin><mode>3): Likewise.
21640         (add<mode>3): Removed.
21641         (*add<mode>3): Likewise.
21642         (<sse>_vmadd<mode>3): Likewise.
21643         (sub<mode>3): Likewise.
21644         (*sub<mode>3): Likewise.
21645         (<sse>_vmsub<mode>3): Likewise.
21646         (smin<mode>3): Likewise.
21647         (*smin<mode>3_finite): Likewise.
21648         (*smin<mode>3): Likewise.
21649         (<sse>_vmsmin<mode>3): Likewise.
21650         (smax<mode>3): Likewise.
21651         (*smax<mode>3_finite): Likewise.
21652         (*smax<mode>3): Likewise.
21653         (<sse>_vmsmax<mode>3): Likewise.
21654         (sse3_haddv4sf3): Likewise.
21655         (sse3_haddv2df3): Likewise.
21656         (sse3_hsubv4sf3): Likewise.
21657         (sse3_hsubv2df3): Likewise.
21658         (umaxv16qi3): Likewise.
21659         (*umaxv16qi3): Likewise.
21660         (smaxv8hi3): Likewise.
21661         (*smaxv8hi3): Likewise.
21662         (*sse4_1_smax<mode>3): Likewise.
21663         (*sse4_1_umax<mode>3): Likewise.
21664         (uminv16qi3): Likewise.
21665         (*uminv16qi3): Likewise.
21666         (sminv8hi3): Likewise.
21667         (*sminv8hi3): Likewise.
21668         (*sse4_1_smin<mode>3): Likewise.
21669         (*sse4_1_umin<mode>3): Likewise.
21670
21671 2008-04-01  Rafael Espíndola  <espindola@google.com>
21672
21673         * tree-cfg.c (verify_expr): remove in_phi.
21674         (verify_stmt): Don't call walk_tree with verify_expr. Use
21675         is_gimple_min_invariant instead of is_gimple_val.
21676
21677 2008-04-01  Joseph Myers  <joseph@codesourcery.com>
21678
21679         * doc/include/gpl_v3.texi: Update for manpage generation.
21680         * doc/gcc.texi, doc/gccint.texi: Include gpl_v3.texi instead of
21681         gpl.texi.
21682         * doc/sourcebuild.texi: Document gpl_v3.texi as well as gpl.texi.
21683         * Makefile.in (TEXI_GCC_FILES, TEXI_GCCINT_FILES): Include
21684         gpl_v3.texi instead of gpl.texi.
21685         (gpl.pod): New.
21686
21687 2008-04-01  Jakub Jelinek  <jakub@redhat.com>
21688
21689         PR pch/13675
21690         * c-pch.c (c_common_read_pch): On error close (fd) resp. fclose (f).
21691
21692 2008-04-01  Rafael Espíndola  <espindola@google.com>
21693
21694         * tree-vrp.c (extract_code_and_val_from_cond_with_ops): New.
21695         (extract_code_and_val_from_cond): Use
21696         extract_code_and_val_from_cond_with_ops.
21697
21698 2008-04-01  Jan Hubicka  <jh@suse.cz>
21699
21700         * function.c (free_after_compilation): Free epilogue_delay_list.
21701         (prepare_function_start): Assert that previous compilation was freed.
21702
21703 2008-04-01  Jan Hubicka  <jh@suse.cz>
21704             Jim Wilson  <wilson@tuliptree.org>
21705             Andreas Tobler <andreast@gcc.gnu.org>
21706
21707         PR middle-end/35781
21708         * m32c/m32.c (m32c_leaf_function_p, m32c_function_needs_enter): Use
21709         rtl.emit instead cfun->emit.
21710         * sparc/sparc.h (INIT_EXPANDERS): Likewise.
21711         * ia64/ia64.h (INIT_EXPANDERS): Likewise.
21712
21713 2008-04-01  Ben Elliston  <bje@au.ibm.com>
21714
21715         * doc/c-tree.texi (Function Basics): Fix grammatical error.
21716
21717 2008-03-31  Seongbae Park <seongbae.park@gmail.com>
21718
21719         * common.opt (fprofile-dir=, fprofile-use=, fprofile-generate=):
21720         New options
21721         (fprofile-use): Add var flag_profile_use
21722         * coverage.c (coverage_begin_output): Do not open a gcno file for
21723         output only if -ftest-coverage is set.
21724         Do not add getpwd() to gcda file path.
21725         (build_gcov_info): Check the new flag
21726         flag_profile_datafile_relative_path.
21727         (coverage_init): Use profile_data_prefix.
21728         Read profile counter only if flag_profile_use is set.
21729         * opts.c (common_handle_option): New option fprofile-use=,
21730         fprofile-dir=, fprofile-generate=.
21731         * toplev.c (profile_data_prefix): New variable definition.
21732         * toplev.h (profile_data_prefix): New declaration.
21733         * doc/invoke.tex (Option Summary, Optimization Options):
21734         Add new options.
21735
21736 2008-03-31  James E. Wilson  <wilson@tuliptree.org>
21737
21738         * varasm.c (output_constant_pool_1): In LABEL_REF check,
21739         use tmp consistently.
21740
21741         PR target/35695
21742         * config/ia64/div.md (recip_approx_rf): Use UNSPEC not DIV.
21743         * config/ia64/ia64.c (rtx_needs_barrier): Handle
21744         UNSPEC_FR_RECIP_APPROX_RES.
21745         * config/ia64/ia64.md (UNSPEC_FR_RECIP_APPROX_RES): Define.
21746
21747 2008-03-31  Volker Reichelt  <v.reichelt@netcologne.de>
21748
21749         PR c/35750
21750         * c-decl.c (store_parm_decls_oldstyle): Skip invalid parameters.
21751
21752 2008-03-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
21753
21754         PR middle-end/30186
21755         * fold-const.c (fold_indirect_ref_1): Support accessing non first
21756         element of the vector via a pointer.
21757
21758 2008-03-31  Ian Lance Taylor  <iant@google.com>
21759
21760         * tlink.c (scan_linker_output): Look for symbol name in single quotes.
21761
21762 2008-03-31  Jan Hubicka  <jh@suse.cz>
21763
21764         * builtins.c (expand_builtin_setjmp_receiver): Update call of
21765         get_arg_pointer_save_area.
21766         * expr.c (init_expr): Just clear out rtl.expr.
21767         * function.c (free_after_compilation): Clear out whole RTL structure.
21768         (get_func_frame_size): Merge into ...
21769         (get_frame_size): ... this one.
21770         (assign_stack_local_1): Merge into ...
21771         (assign_stack_local): ... this one.
21772         (expand_function_end): Update call of get_arg_pointer_save_area.
21773         (get_art_pointer_save_area): Remove cfun argument.
21774         * function.h (emit_status): regno_pointer_align does not need length
21775         attribute. Move x_regno_reg_rtx to ...
21776         (regno_reg_rtx): ... new global array.
21777         (reg_rtx_no, seq_stack, REGNO_POINTER_ALIGN): Update accestors.
21778         (pending_stack_adjust, inhibit_defer_pop, saveregs_value,
21779         apply_args_value, forced_labels, stack_pointer_delta):
21780         Update accestors.
21781         (struct varasm_status): Move here from varasm.c
21782         (struct rtl_data): New. Move here some fields from struct function.
21783         (return_label, naked_return_label, stack_slot_list, parm_birth_insn,
21784         frame_offset, stack_check_probe_note, arg_pointer_save_area,
21785         used_temp_slots avail_temp_slots, temp_slot_level,
21786         nonlocal_goto_handler_labels): Update accesstors.
21787         (rtl): New global variable.
21788         (struct function): Move some fileds to rtl_data.
21789         (get_arg_pointer_save_area): Update prototype.
21790         * emit-rtl.c (rtl): Declare.
21791         (regno_reg_rtx): Declare.
21792         (first_insn, last_insn, cur_insn_uid, last_location, first_label_num):
21793         Update.
21794         (gen_reg_rtx): Update.
21795         (init_virtual_regs): Do not tate emit_status argument.
21796         (init_emit): Do not allocate emit.
21797         * varasm.c (varasm_statuc): Move to function.h.
21798         (n_deferred_constatns): Update accestor.
21799         (init_varasm_status): Do not allocate varasm_status.
21800         (force_const_mem, get_pool_size, output_constant_pool): Update.
21801         * stmt.c (force_label_rtx): Do not use x_ prefixes.
21802         (expand_nl_goto_receiver): Update get_arg_pointer_save_area.
21803
21804 2008-03-31  Zdenek Dvorak  <ook@ucw.cz>
21805
21806         PR rtl-optimization/35729
21807         * loop-invariant.c (check_maybe_invariant): Disallow volatile memory
21808         references.
21809
21810 2008-03-31  H.J. Lu  <hongjiu.lu@intel.com>
21811
21812         PR target/32000
21813         * config/i386/i386.md (*movti_internal): Emit unaligned SSE
21814         load/store if memory is unaligned.
21815         (*movti_rex64): Likewise.
21816
21817         * config/i386/predicates.md (misaligned_operand): New.
21818
21819 2008-03-31  Andrew Pinski  <pinskia@gmail.com>
21820
21821         PR tree-opt/35431
21822         * tree-ssa-phiopt.c (conditional_replacement): Return early for
21823         complex types.
21824
21825 2008-03-31  Jan Beulich  <jbeulich@novell.com>
21826
21827         * config/ia64/constraints.md: Add 'j' constraint.
21828         * config/ia64/ia64.md (movsi_internal): Add addp4 case.
21829         (movdi_internal): Likewise.
21830
21831 2008-03-30  Volker Reichelt  <v.reichelt@netcologne.de>
21832
21833         PR c/35748
21834         * c-typeck.c (build_c_cast): Skip invalid fields in unions.
21835
21836 2008-03-30  H.J. Lu  <hongjiu.lu@intel.com>
21837
21838         PR target/35757
21839         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Issue
21840         proper error message for the third argument on blendpd and
21841         blendps.
21842
21843         * config/i386/sse.md (blendbits): New.
21844         (sse4_1_blendp<ssemodesuffixf2c>): Use it.
21845
21846 2008-03-30  Eric Botcazou  <ebotcazou@adacore.com>
21847
21848         * fold-const.c (fold_binary) <BIT_IOR_EXPR>: Add missing conversions.
21849
21850 2008-03-30  Richard Guenther  <rguenther@suse.de>
21851
21852         PR middle-end/31023
21853         * fold-const.c (fold_sign_changed_comparison): Do leave
21854         conversions to base-types alone.
21855
21856 2008-03-29  Andrew Pinski  <andrew_pinski@playstation.sony.com>
21857
21858         * config/rs6000/rs6000.c (rs6000_stack_info): Don't force saving of
21859         the link register if one altivec register is be saved.
21860
21861 2008-03-30  Ben Elliston  <bje@au.ibm.com>
21862
21863         * final.c (final_scan_insn): Remove if (0) code.
21864
21865 2008-03-28  Volker Reichelt  <v.reichelt@netcologne.de>
21866
21867         * c-parser.c (c_parser_next_token_is_keyword): Simplify.
21868
21869 2008-03-28  H.J. Lu  <hongjiu.lu@intel.com>
21870
21871         * config/i386/sse.md (*and<mode>3): Pass <MODE>mode instead
21872         of V4SFmode to ix86_binary_operator_ok.
21873
21874 2008-03-28  Uros Bizjak  <ubizjak@gmail.com>
21875
21876         * config/i386/i386.c (override_options): Initialize
21877         ix86_veclib_handler to ix86_veclibabi_svml when
21878         -mveclibabi=svml is used.
21879         (ix86_veclibabi_svml): New function for SVML ABI style
21880         vectorization support.
21881         * doc/invoke.texi (-mveclibabi) [svml]: Document new target option.
21882
21883 2008-03-28  Rafael Espíndola  <espindola@google.com>
21884
21885         * fold-const.c (tree_unary_nonnegative_warnv_p): Make it public.
21886         (tree_binary_nonnegative_warnv_p): Make it public.
21887         (tree_single_nonnegative_warnv_p): Make it public.
21888         (tree_invalid_nonnegative_warnv_p): Make it public.
21889         (tree_unary_nonzero_warnv_p): Make it public.
21890         (tree_binary_nonzero_warnv_p): Make it public
21891         (tree_single_nonzero_warnv_p): Make it public.
21892         * tree-vrp.c (vrp_evaluate_conditional_warnv_with_ops): New function.
21893         (extract_range_from_binary_expr): Split the expr argument.
21894         (extract_range_from_unary_expr): Split the expr argument.
21895         (extract_range_from_comparison): Split the expr argument.
21896         (extract_range_from_expr): Use the new aux functions.
21897         (vrp_evaluate_conditional_warnv): Use
21898         vrp_evaluate_conditional_warnv_with_ops.
21899         * tree.h (tree_unary_nonzero_warnv_p): Declare.
21900         (tree_binary_nonzero_warnv_p): Declare.
21901         (tree_single_nonzero_warnv_p): Declare.
21902         (tree_expr_nonzero_warnv_p): Declare.
21903         (tree_unary_nonnegative_warnv_p): Declare.
21904         (tree_binary_nonnegative_warnv_p): Declare.
21905         (tree_single_nonnegative_warnv_p): Declare.
21906         (tree_invalid_nonnegative_warnv_p): Declare.
21907
21908 2008-03-28  Richard Guenther  <rguenther@suse.de>
21909
21910         PR tree-optimization/30317
21911         PR tree-optimization/30911
21912         PR tree-optimization/34793
21913         * tree-vrp.c (set_and_canonicalize_value_range): New function.
21914         (struct assert_locus_d): New member EXPR.
21915         (register_new_assert_for): Add EXPR parameter to support
21916         ASSERT_EXPR <name, expr OP limit>.
21917         (register_edge_assert_for_1): Adjust callers.
21918         (find_assert_locations): Likewise.
21919         (process_assert_insertions_for): Build condition from expression.
21920         (extract_range_from_assert): Handle ASSERT_EXPRs
21921         of the form ASSERT_EXPR <name, expr OP limit>.
21922         (register_edge_assert_for_2): New helper registering
21923         asserts for comparisons.  Recognize range tests of the form
21924         (unsigned)i - CST1 OP CST2.
21925         (register_edge_assert_for_1): Use it.
21926         (register_edge_assert_for): Likewise.
21927         (needs_overflow_infinity): Integer sub-types
21928         do not need overflow infinities.
21929         (vrp_val_is_max): The extreme values of integer sub-types
21930         are those of the base type.
21931         (vrp_val_is_min): Likewise.
21932         * tree.def (ASSERT_EXPR): Document extra allowed conditional
21933         expressions.
21934
21935 2008-03-28  Nick Clifton  <nickc@redhat.com>
21936
21937         PR target/31110
21938         * config/mn10300/mn10300.c (mn10300_secondary_reload_class):
21939         Return GENERAL_REGS for stack adjustment reloads.
21940
21941 2008-03-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
21942
21943         PR target/31334
21944         * config/rs6000/rs6000.c (rs6000_expand_vector_init): Create a
21945         const_vector when all the vectors are constant.
21946
21947 2008-03-27  Bob Wilson  <bob.wilson@acm.org>
21948
21949         * config/xtensa/xtensa.c (gen_float_relational): Handle unordered
21950         comparisons.
21951         * config/xtensa/xtensa.md (any_cond): Add unordered comparisons.
21952         (any_scc_sf): Add uneq, unlt, unle and unordered operators.
21953         (scc_sf): New.
21954         (s<code>_sf): Use new scc_sf attribute for opcode names.
21955
21956 2008-03-27  Tom Tromey  <tromey@redhat.com>
21957
21958         * doc/sourcebuild.texi, doc/install.texi, configure, aclocal.m4,
21959         configure.ac, Makefile.in, config/t-darwin, config/m32c/t-m32c,
21960         config/spu/t-spu-elf, config/i386/t-interix,
21961         config/i386/t-cygming, config/i386/x-i386, config/i386/t-cygwin,
21962         config/i386/x-darwin, config/i386/x-mingw32,
21963         config/i386/t-netware, config/i386/x-cygwin, config/i386/t-nwld,
21964         config/sh/t-sh, config/sh/t-symbian, config/x-linux,
21965         config/t-sol2, config/x-hpux, config/x-darwin, config/ia64/t-ia64,
21966         config/x-solaris, config/t-vxworks, config/m68k/t-uclinux,
21967         config/rs6000/x-rs6000, config/rs6000/x-darwin64,
21968         config/rs6000/x-darwin, config/rs6000/t-rs6000,
21969         config/score/t-score-elf, config/arm/t-strongarm-pe,
21970         config/arm/t-pe, config/arm/t-arm, config/arm/t-wince-pe,
21971         config/v850/t-v850, config/v850/t-v850e, config/bfin/t-bfin-linux:
21972         Revert automatic dependency patch.
21973
21974 2008-03-27  H.J. Lu  <hongjiu.lu@intel.com>
21975
21976         PR target/35657
21977         * config/i386/i386.c (ix86_function_arg_boundary): Align
21978         decimal floating point to its natural boundary.
21979
21980 2008-03-27  Richard Guenther  <rguenther@suse.de>
21981
21982         PR middle-end/35716
21983         * fold-const.c (fold_comparison): Restrict distinct decl
21984         comparison folding to VAR_DECLs and PARM_DECLs.  Do not
21985         solely rely on operand_equal_p.
21986
21987 2008-03-27  Richard Guenther  <rguenther@suse.de>
21988
21989         PR c/32511
21990         * c-common.c (handle_weak_attribute): Reject combination of
21991         weak and inline.
21992
21993 2008-03-27  Richard Guenther  <rguenther@suse.de>
21994
21995         PR tree-optimization/32810
21996         * tree-ssa-ccp.c (get_symbol_constant_value): Strip useless
21997         conversions from DECL_INITIAL.
21998         (fold_const_aggregate_ref): Likewise from constructor elements.
21999
22000 2008-03-27  Zdenek Dvorak  <ook@ucw.cz>
22001
22002         * tree-affine.h (aff_combination_expand): Declare.
22003         (get_inner_reference_aff): Likewise.
22004         * tree-affine.c (aff_combination_expand): Split out from
22005         tree_to_aff_combination_expand.
22006         (get_inner_reference_aff): New function.
22007         * tree-parloops.c (loop_parallel_p): Free vectorizer info.
22008         * tree-ssa-loop-im.c: Include tree-affine.h and pointer-set.h.
22009         (struct lim_aux_data): sm_done field removed.
22010         (mem_ref_loc_p, mem_ref_locs_p): New types.
22011         (struct mem_ref): Added id, stored, accesses_in_loop,
22012         indep_loop, dep_loop, indep_ref, dep_ref fields.
22013         Removed is_stored, locs and next fields.
22014         (memory_accesses): New variable.
22015         (movement_possibility): Do not allow moving statements
22016         that store to memory.
22017         (outermost_indep_loop, simple_mem_ref_in_stmt, mem_ref_in_stmt):
22018         New functions.
22019         (determine_max_movement): For statements with memory references,
22020         find the outermost loop in that the reference is independent.
22021         (move_computations_stmt): Mark the virtual operands for renaming.
22022         (memref_free, mem_ref_alloc, mem_ref_locs_alloc, mark_ref_stored,
22023         gather_mem_refs_stmt, gather_mem_refs_in_loops, vtoe_hash, vtoe_eq,
22024         vtoe_free, record_vop_access, get_vop_accesses, get_vop_stores,
22025         add_vop_ref_mapping, create_vop_ref_mapping_loop,
22026         create_vop_ref_mapping, analyze_memory_references,
22027         cannot_overlap_p, mem_refs_may_alias_p, rewrite_mem_ref_loc,
22028         get_all_locs_in_loop, ref_always_accessed_p,
22029         refs_independent_p, record_indep_loop, ref_indep_loop_p_1,
22030         ref_indep_loop_p, can_sm_ref_p, find_refs_for_sm,
22031         store_motion_loop, store_motion): New functions.
22032         (struct vop_to_refs_elt): New type.
22033         (record_mem_ref_loc, free_mem_ref_locs, rewrite_mem_refs,
22034         memref_hash, memref_eq, hoist_memory_references): Rewritten.
22035         (schedule_sm): Replaced by...
22036         (execute_sm): ... this.
22037         (determine_lsm_ref, hoist_memory_references,
22038         loop_suitable_for_sm, gather_mem_refs_stmt, gather_mem_refs,
22039         find_more_ref_vops, free_mem_ref, free_mem_refs,
22040         determine_lsm_loop, determine_lsm): Removed.
22041         (tree_ssa_lim_finalize): Free data structures used by store motion.
22042         (tree_ssa_lim): Call analyze_memory_references.  Use
22043         store_motion instead of determine_lsm.
22044
22045 2008-03-27  Paolo Bonzini  <bonzini@gnu.org>
22046
22047         * config.cc (m68hc11, m6811, m68hc12, m6812): Add usegas.h,
22048         rename tmake_file to m68hc11/t-m68hc11.
22049         (mcore): Set inhibit_libc to true.
22050         * config.host (alpha*-dec-*vms*): Set extra_programs.
22051         (interix3*): Don't use host_xmake_file.
22052         * configure.ac: Let config.gcc override inhibit_libc.
22053         * configure: Regenerate.
22054
22055         * config/alpha/x-vms (EXTRA_PROGRAMS): Remove.
22056         * config/t-openbsd-thread: Remove commented out lines.
22057
22058         * config/x-interix: Remove.
22059
22060         * config/m68hc11/t-m68hc11-gas: Rename to...
22061         * config/m68hc11/t-m68hc11: ... this.  Remove T_CPPFLAGS.
22062
22063         * config/mcore/t-mcore: Remove T_CFLAGS.
22064         * config/mcore/t-mcore-pe: Likewise.
22065
22066 2008-03-27  Paolo Bonzini  <bonzini@gnu.org>
22067
22068         * configure.ac: Replace custom __GNU_SOURCE test with
22069         AC_USE_SYSTEM_EXTENSIONS.  Move it earlier.
22070         * aclocal.m4: Regenerate.
22071         * configure: Regenerate.
22072         * config.in: Regenerate.
22073
22074 2008-03-27  Richard Guenther  <rguenther@suse.de>
22075
22076         * fold-const.c (target.h): Include.
22077         (fold_comparison): Fold comparison of addresses of decls
22078         that bind locally or of constants.  Consolidate address folding code.
22079         * tree-vrp.c (operand_less_p): Deal with non-INTEGER_CST
22080         results from fold_binary_to_constant.
22081         (compare_values_warnv): Likewise.
22082
22083 2008-03-27  Andrew Pinski  <pinskia@gmail.com>
22084
22085         PR middle-end/35429
22086         * fold-const.c (fold_truthop): Check for integeral types when folding
22087         a == 0 && b == 0 and a != 0 || b != 0 .
22088
22089 2008-03-26  Eric Botcazou  <ebotcazou@adacore.com>
22090
22091         * tree.c (get_unwidened): Remove code fiddling with COMPONENT_REF.
22092
22093 2008-03-26  Andreas Schwab  <schwab@suse.de>
22094
22095         * doc/invoke.texi: Fix use of @item vs. @itemx.
22096
22097 2008-03-26  Tom Tromey  <tromey@redhat.com>
22098
22099         * Makefile.in (build/gensupport.o, build/print-rtl.o,
22100         build/read-rtl.o, build/rtl.o, build/gencondmd.o, build/genattr.o,
22101         build/genattrtab.o, build/genautomata.o, build/gencheck.o,
22102         build/gencodes.o, build/genconditions.o, build/genconfig.o,
22103         build/genconstants.o, build/genemit.o, build/genextract.o,
22104         build/genflags.o, build/genmddeps.o, build/genopinit.o,
22105         build/genoutput.o, build/genpeep.o, build/genrecog.o): Depend on
22106         options.h.
22107
22108 2008-03-26  Richard Guenther  <rguenther@suse.de>
22109
22110         Revert
22111         2008-03-26  Richard Guenther  <rguenther@suse.de>
22112
22113         * fold-const.c (target.h): Include.
22114         (fold_comparison): Fold comparison of addresses of two decls
22115         that bind locally.  Consolidate address folding code.
22116
22117 2008-03-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
22118
22119         * builtins.c (expand_builtin_pow, fold_builtin_cabs,
22120         fold_builtin_sqrt, fold_builtin_cbrt, fold_builtin_logarithm,
22121         fold_builtin_hypot, fold_builtin_pow): Remove uses of dconst3,
22122         dconstsqrt2, dconstthird, dconste and/or dconst10.
22123         * config/i386/i386.c (ix86_emit_swsqrtsf): Likewise.
22124         * emit-rtl.c (dconst3, dconst10, dconstm2, dconstthird,
22125         dconstsqrt2, dconste): Delete.
22126         (init_emit_once): Likewise.  Simplify initializing dconstm1.
22127         Constify variable.
22128         * real.c (get_real_const): New.
22129         * real.h (dconst3, dconst10, dconstm2, dconstthird,
22130         dconstsqrt2, dconste): Delete.
22131         (real_value_const, get_real_const): New.
22132
22133 2008-03-26  H.J. Lu  <hongjiu.lu@intel.com>
22134
22135         * config/i386/cygming.h (BIGGEST_ALIGNMENT): Removed.
22136
22137         * config/i386/i386.c (ix86_function_arg_boundary): Check
22138         BIGGEST_ALIGNMENT instead of 128.
22139         (setup_incoming_varargs_64): Likewise.
22140
22141 2008-03-26  Tom Tromey  <tromey@redhat.com>
22142
22143         * Makefile.in (DEPFILES): Add missing '/'.
22144
22145 2008-03-26  Richard Guenther  <rguenther@suse.de>
22146
22147         * fold-const.c (target.h): Include.
22148         (fold_comparison): Fold comparison of addresses of two decls
22149         that bind locally.  Consolidate address folding code.
22150
22151 2008-03-26  Nick Clifton  <nickc@redhat.com>
22152
22153         PR target/31232
22154         * config/stormy16/stormy16.c (xstormy16_legitimate_address_p): Do
22155         not allow INT+INT as a legitimate addressing mode.
22156
22157 2008-03-26  Richard Guenther  <rguenther@suse.de>
22158
22159         * tree-flow.h (widen_bitfield): Remove declaration.
22160         * tree-ssa-ccp.c (visit_assignment): Remove unneeded code.
22161         (widen_bitfield): Remove function.
22162         * tree-ssa-dom.c (record_equivalences_from_stmt): Remove unneeded
22163         code.
22164
22165 2008-03-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
22166
22167         PR target/31558
22168         * config/rs6000/rs6000-c.c (rs6000_builtin_type_compatible): Handle
22169         error_mark_node's.
22170
22171 2008-03-25  Richard Sandiford  <rsandifo@nildram.co.uk>
22172
22173         PR rtl-optimization/35232
22174         * reload1.c (reg_reloaded_call_part_clobbered): Clarify comment.
22175         (forget_old_reloads_1, forget_marked_reloads): Don't clear
22176         reg_reloaded_call_part_clobbered here.
22177         (reload_regs_reach_end_p): New function.
22178         (reload_reg_rtx_for_input): New variable.
22179         (reload_reg_rtx_for_output): Likewise.
22180         (emit_input_reload_insns): Use reloadreg rather than rl->reg_rtx
22181         when reassigning a pseudo register.  Load reloadreg from
22182         reload_reg_rtx_for_input, moving the mode and register
22183         calculation to...
22184         (do_input_reload): ...here.  Use the mode-adjusted reg_rtx
22185         instead of the original when deciding whether an input reload
22186         would be a no-op or whether an output reload can be deleted.
22187         (emit_output_reload_insns): Use the mode-adjusted reg_rtx
22188         when setting up new_spill_reg_store.  Load it from
22189         reload_reg_rtx_for_output, moving the mode and register
22190         calculation to...
22191         (do_output_reload): ...here.  Use the mode-adjusted reg_rtx
22192         instead of the original when deciding whether an output reload
22193         would be a no-op.  Do the same when modifying insn notes.
22194         Use rtx_equal_p instead of == to compare the registers.
22195         (inherit_piecemeal_p): Take a mode and two register numbers
22196         as argument.
22197         (emit_reload_insns): Clear new_spill_reg_store for every hard
22198         register in the reload register.  Remove spill registers
22199         from reg_reloaded_valid before considering whether to record
22200         inheritance information for them.  Use reload_reg_rtx_for_output
22201         instead of reg_rtx when recording output reloads.  Use
22202         reload_reg_rtx_for_input instead of reg_rtx when recording
22203         input reloads.  Set or clear reg_reloaded_call_part_clobbered
22204         at the same time as setting reg_reloaded_valid.
22205         (delete_output_reload): Add a new_reload_reg parameter and use it
22206         instead of rld[j].reg_rtx.
22207         (emit_input_reload_insns, do_input_reload, do_output_reload): Adjust
22208         calls accordingly.
22209
22210 2008-03-25  Tom Tromey  <tromey@redhat.com>
22211
22212         * Makefile.in (build/gensupport.o): Depend on insn-modes.h.
22213         (build/genattr.o): Likewise.
22214         (build/genattrtab.o): Likewise.
22215         (build/gencodes.o): Likewise.
22216         (build/genconfig.o): Likewise.
22217         (build/genconstants.o): Likewise.
22218         (build/genemit.o): Likewise.
22219         (build/genextract.o): Likewise.
22220         (build/genflags.o): Likewise.
22221
22222 2008-03-25  Bob Wilson  <bob.wilson@acm.org>
22223
22224         * config/xtensa/xtensa.c (xtensa_va_start): Use build_int_cst
22225         instead of size_int for integer types.
22226         (xtensa_gimplify_va_arg_expr): Likewise.  Convert index to sizetype
22227         to match type of MINUS_EXPR.
22228
22229 2008-03-25  Tom Tromey  <tromey@redhat.com>
22230
22231         * configure: Rebuilt.
22232         * configure.ac (BUILD_DEPMODE): Extract CCDEPMODE from temporary
22233         Makefile.
22234
22235 2008-03-25  Tom Tromey  <tromey@redhat.com>
22236
22237         * config/x-solaris (host-solaris.o): Update.
22238         * config/x-linux (host-linux.o): Update.
22239         * config/x-hpux (host-hpux.o): Update.
22240         * config/x-darwin (host-darwin.o): Update.
22241         * config/v850/t-v850e (v850-c.o): Update.
22242         * config/v850/t-v850 (v850-c.o): Update.
22243         * config/t-vxworks (vxworks.o): Update.
22244         * config/t-sol2 (sol2-c.o, sol2.o): Update.
22245         * config/t-darwin (darwin.o, darwin-c.o, darwin-driver.o): Update.
22246         * config/spu/t-spu-elf (spu-c.o): Update.
22247         (spu.o): Remove.
22248         * config/sh/t-symbian (sh-c.o): Update.
22249         (symbian.o): Update.
22250         * config/sh/t-sh (sh-c.o): Update.
22251         * config/score/t-score-elf (score7.o, score3.o): Update.
22252         * config/rs6000/x-rs6000 (driver-rs6000.o): Update.
22253         * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Update.
22254         * config/rs6000/x-darwin (host-ppc-darwin.o): Update.
22255         * config/rs6000/t-rs6000 (rs6000-c.o): Update.
22256         (rs6000.o): Remove.
22257         * config/m68k/t-uclinux (generated_files): Add sysroot-suffix.h.
22258         * config/m32c/t-m32c (m32c-pragma.o): Update.
22259         * config/ia64/t-ia64 (ia64-c.o): Update.
22260         * config/i386/x-mingw32 (host-mingw32.o): Update.
22261         * config/i386/x-i386 (driver-i386.o): Update.
22262         * config/i386/x-darwin (host-i386-darwin.o): Update.
22263         * config/i386/x-cygwin (host-cygwin.o): Update.
22264         * config/i386/t-nwld (nwld.o): Update.
22265         * config/i386/t-netware (netware.o): Update.
22266         * config/i386/t-interix (winnt.o): Update.
22267         * config/i386/t-cygwin (cygwin1.o, cygwin2.o): Update.
22268         * config/i386/t-cygming (winnt.o, winnt-cxx.o, winnt-stubs.o,
22269         msformat-c.o): Update.
22270         * config/bfin/t-bfin-linux (generated_files): Add
22271         linux-sysroot-suffix.h.
22272         * config/arm/t-wince-pe (pe.o): Update.
22273         * config/arm/t-strongarm-pe (pe.o): Update.
22274         * config/arm/t-pe (pe.o): Update.
22275         * config/arm/t-arm (arm-c.o): Update.
22276         * doc/install.texi (Prerequisites): Require make 3.80.
22277         * Makefile.in: Remove .o targets.
22278         (CCDEPMODE, DEPDIR, depcomp, BUILD_DEPMODE): New variables.
22279         (OBSTACK_H, FIBHEAP_H, PARTITION_H, MD5_H, BCONFIG_H): Remove.
22280         (simple_generated_h, simple_generated_c): Move earlier.
22281         (generated_files): New variable.
22282         (TARGET_H, MACHMODE_H, HOOKS_H, HOSTHOOKS_DEF_H, LANGHOOKS_DEF_H,
22283         TARGET_DEF_H, RTL_BASE_H, RTL_H, PARAMS_H, BUILTINS_DEF, TREE_H,
22284         BASIC_BLOCK_H, GCOV_IO_H, COVERAGE_H, DEMANGLE_H, RECOG_H,
22285         ALIAS_H, EMIT_RTL_H, FLAGS_H, FUNCTION_H, EXPR_H, OPTABS_H,
22286         REGS_H, RA_H, RESOURCE_H, SCHED_INT_H, INTEGRATE_H, CFGLAYOUT_H,
22287         CFGLOOP_H, IPA_UTILS_H, IPA_REFERENCE_H, IPA_TYPE_ESCAPE_H,
22288         CGRAPH_H, DF_H, RESOURCE_H, DDG_H, GCC_H, GGC_H, TIMEVAR_H,
22289         INSN_ATTR_H, C_COMMON_H, C_PRAGMA_H, C_TREE_H, SYSTEM_H,
22290         PREDICT_H, DECNUM_H, MKDEPS_H, SYMTAB_H, TREE_DUMP_H,
22291         TREE_GIMPLE_H, TREE_FLOW_H, TREE_SSA_LIVE_H, PRETTY_PRINT_H,
22292         DIAGNOSTIC_H, C_PRETTY_PRINT_H, SCEV_H, LAMBDA_H, TREE_DATA_REF_H,
22293         VARRAY_H, TREE_INLINE_H, REAL_H, DBGCNT_H, EBIMAP_H): Remove.
22294         (.c.o): Remove.
22295         (COMPILE.base, COMPILE): New variables.
22296         (%.o): New pattern rule.
22297         (ALL_HOST_OBJS): New variable.
22298         (xgcc$(exeext), cpp$(exeext)): Remove extra version.o.
22299         (dummy-checksum.o, cc1-checksum.o): Remove.
22300         (DRIVER_SHLIB): New variable.
22301         (DRIVER_DEFINES): Use it.
22302         (gencondmd.c): Move out of build/.
22303         (s-conditions): Update.
22304         (BUILDCOMPILE.base, BUILDCOMPILE): New variables.
22305         (ALL_BUILD_OBJS): Likewise.
22306         (build/%.o): Use BUILDCOMPILE.
22307         (build/ggc-none.o, build/ggc-none.o, build/min-insn-modes.o,
22308         build/print-rtl.o, build/read-rtl.o, build/rtl.o, build/vec.o,
22309         build/gencondmd.o, build/genattrtab.o, build/genautomata.o,
22310         build/gencheck.o, build/gencodes.o, build/genconditions.o,
22311         build/genconfig.o, build/genconstants.o, build/genemit.o,
22312         build/genextract.o, build/genflags.o, build/genmddeps.o,
22313         build/genopinit.o, build/genoutput.o, build/genpeep.o,
22314         build/genpreds.o, build/genrecog.o, build/gcov-iov.o,
22315         build/gen-protos.o, build/scan.o, build/fix-header.o,
22316         build/scan-decls.o): Simplify.
22317         (collect2.o, c-opts.o, gcc.o, gccspec.o, gcc-options.o,
22318         cppdefault.o, protoize.o, unprotoize.o, intl.o, version.o,
22319         prefix.o, toplev.o): Reduce to variable setting.
22320         (libbackend.o): Use COMPILE.  Remove most dependencies.  Move later.
22321         ($(out_object_file), gcc-options.o): New targets.
22322         ($(ALL_HOST_OBJS)): New target.  Include dependency files.
22323         * configure: Rebuilt.
22324         * configure.ac: Call ZW_CREATE_DEPDIR, ZW_PROG_COMPILER_DEPENDENCIES.
22325         * doc/sourcebuild.texi (Front End Directory): Document new variable.
22326
22327 2008-03-25  Douglas Gregor  <doug.gregor@gmail.com>
22328
22329         * c-common.c (c_sizeof_or_alignof_type): If we're not allowed to
22330         complain when we hit an error, return ERROR_MARK_NODE.
22331
22332 2008-03-25  Naveen.H.S  <naveen.hs@kpitcummins.com>
22333
22334         * config/sh/constraints.md (Pso, Psz): New constraints.
22335         * config/sh/sh.c (print_operand): Add %V and %W operand codes.
22336         * config/sh/sh.md (*andsi3_bclr, *iorsi3_bset): New insns.
22337
22338 2008-03-25  Naveen.H.S  <naveen.hs@kpitcummins.com>
22339
22340         * config/sh/sh.c (sh_expand_t_scc): Emit movrt for SH2A if possible.
22341         * config/sh/sh.md (xorsi3_movrt, movrt): New insns.
22342
22343 2008-03-25  Naveen.H.S  <naveen.hs@kpitcummins.com>
22344
22345         * config/sh/sh.md (prefetch): Add condition for SH2A target.
22346         (prefetch_sh2a): New.
22347
22348 2008-03-25  Jayant Sonar  <Jayant.sonar@kpitcummins.com>
22349             Naveen.H.S  <naveen.hs@kpitcummins.com>
22350
22351         * config/sh/constraints.md (I28): New constraint.
22352         * config/sh/sh.c (broken_move): Add support for movi20s.
22353         * config/sh/sh.md (movsi_ie): Add the alternative for movi20s.
22354
22355 2008-03-25  Anil Paranjape  <anil.paranjape@kpitcummins.com>
22356             Jayant Sonar  <Jayant.sonar@kpitcummins.com>
22357             Naveen.H.S  <naveen.hs@kpitcummins.com>
22358
22359         * config/sh/sh.c (SH_ATTRIBUTES): Define.
22360         (SYMBOL_FLAG_FUNCVEC_FUNCTION): Define.
22361         (print_operand): Handle resbank in %@ operand code.
22362         (sh_encode_section_info): New.
22363         (push_regs): Add conditions for resbank.
22364         (sh_expand_epilogue): Likewise.
22365         (sh_insert_attributes): Likewise.
22366         (sh_attribute_table): Likewise.
22367         (sh_handle_resbank_handler_attribute): New.
22368         (sh2a_handle_function_vector_handler_attribute): New.
22369         (sh2a_is_function_vector_call): New.
22370         (sh2a_get_function_vector_number): New.
22371         (sh2a_function_vector_p): New.
22372         (sh_cfun_resbank_handler_p): New.
22373         * config/sh/sh.md (calli): Emit jsr/n if possible.
22374         (calli_tbr_rel): New.
22375         (calli_pcrel): Emit jsr/n if possible.
22376         (return_i): Emit rts/n if possible.
22377         (call_valuei_tbr_rel): New.
22378         (call_valuei_pcrel): Add condition for SH2A target.
22379         (call_value): Likewise.
22380         * config/sh/sh-protos.h (sh_cfun_resbank_handler_p): Declare.
22381         (sh2a_get_function_vector_number): Likewise.
22382         (sh2a_is_function_vector_call): Likewise.
22383         * doc/extend.texi: Document TBR relative addressing of SH2A.
22384         (resbank): Add description for SH2A.
22385
22386 2008-03-24  Richard Guenther  <rguenther@suse.de>
22387
22388         PR c/22371
22389         * gimplify.c (gimplify_modify_expr): For frontend type-correct
22390         pointer assignments change conversions according to middle-end rules.
22391         (gimplify_modify_expr_rhs): Deal with NULL TARGET_EXPR_INITIAL.
22392         * configure.ac: Include type checking in yes.
22393         * configure: Regenerate.
22394
22395 2008-03-24  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
22396
22397         * diagnostic.c (diagnostic_count_diagnostic): Delete.
22398         (diagnostic_report_diagnostic): Update. Handle ICEs here.
22399
22400 2008-03-24  Nathan Sidwell  <nathan@codesourcery.com>
22401
22402         * gthr-vxworks.h (UNUSED): Define.
22403
22404 2008-03-23  H.J. Lu  <hongjiu.lu@intel.com>
22405
22406         * config/i386/i386.h (STATIC_CHAIN_REGNUM): Use R10_REG and CX_REG.
22407
22408 2008-03-23  Zuxy Meng <zuxy.meng@gmail.com>
22409
22410         * doc/extend.texi (Function Attributes): Add missing comma in the
22411         example of the "alloc_size" attribute.
22412
22413 2008-03-23  Uros Bizjak  <ubizjak@gmail.com>
22414
22415         Revert:
22416         2008-03-05  H.J. Lu  <hongjiu.lu@intel.com>
22417
22418         * config/i386/i386-modes.def: Use 4 byte alignment on DI for
22419         32bit host.
22420
22421         2008-03-19  Uros Bizjak  <ubizjak@gmail.com>
22422
22423         PR target/35496
22424         * stor-layout.c (update_alignment_for_field): Set minimum alignment
22425         of the underlying type of a MS bitfield layout to the natural
22426         alignment of the type.
22427
22428         2008-03-22  Uros Bizjak  <ubizjak@gmail.com>
22429
22430         * config/i386/i386.c (assign_386_stack_local): Align DImode slots
22431         to their natural alignment to avoid store forwarding stalls.
22432
22433 2008-03-22  Richard Guenther  <rguenther@suse.de>
22434
22435         * tree-cfg.c (verify_expr): Recurse again for invariant addresses.
22436         For PHI nodes verify the address is invariant.
22437         * tree-ssa-ccp.c (ccp_decl_initial_min_invariant): Remove.
22438         (get_symbol_constant_value): Use is_gimple_min_invariant.
22439         (maybe_fold_stmt_indirect): Likewise.
22440
22441 2008-03-22  Richard Sandiford  <rsandifo@nildram.co.uk>
22442
22443         PR rtl-optimization/33927
22444         * Makefile.in (dse.o): Depend on $(TM_P_H).
22445         * expr.h (extract_low_bits): Declare.
22446         * expmed.c (extract_low_bits): New function.
22447         * rtlhooks.c (gen_lowpart_general): Generalize SUBREG handling.
22448         * dse.c: Include tm_p.h.
22449         (find_shift_sequence): Remove the read_reg argument and return the
22450         read value.  Emit the instructions instead of returning them.
22451         Iterate on new_mode rather than calculating it each time.
22452         Check MODES_TIEABLE_P.  Use simplify_gen_subreg to convert the
22453         source to NEW_MODE and extract_low_bits to convert the shifted
22454         value to READ_MODE.
22455         (replace_read): Allow the load and store to have different mode
22456         classes.  Use extract_low_bits when SHIFT == 0.  Create the shift
22457         or extraction instructions before trying the replacement.  Update
22458         dump-file code accordingly, avoiding use of REGNO (store_info->rhs).
22459
22460 2008-03-22  Uros Bizjak  <ubizjak@gmail.com>
22461
22462         * config/i386/i386.c (assign_386_stack_local): Align DImode slots
22463         to their natural alignment to avoid store forwarding stalls.
22464
22465 2008-03-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
22466
22467         PR target/27946
22468         * config/rs6000/rs6000.md (floatdidf2): Discouraging fprs and
22469         encouraging but not allowing gprs for input;
22470         change the input constraint to !f#r.
22471         (fix_truncdfdi2): Discouraging fprs and encouraging but not allowing
22472         gprs for output;
22473         change the output constraint to !f#r.
22474
22475 2008-03-21  Uros Bizjak  <ubizjak@gmail.com>
22476
22477         PR target/13958
22478         * config/i386/i386.md ("*floatunssi<mode2>_1"): New pattern with
22479         corresponding post-reload splitters.
22480         ("floatunssi<mode>2"): Expand to unsigned_float x87 insn pattern
22481         when x87 FP math is selected.
22482         * config/i386/i386-protos.h (ix86_expand_convert_uns_sixf_sse):
22483         New function prototype.
22484         * config/i386/i386.c (ix86_expand_convert_uns_sixf_sse): New
22485         unreachable function to ease macroization of insn patterns.
22486
22487 2008-03-21  Martin Jambor  <mjambor@suse.cz>
22488
22489         * tree-data-ref.c (dump_data_dependence_relation): Avoid data
22490         reference dumps if ddr is NULL or dependence is unknown.
22491
22492 2008-03-20  Kaz Kojima  <kkojima@gcc.gnu.org>
22493
22494         * config/sh/linux-atomic.asm (ATOMIC_TEST_AND_SET): Take
22495         unsigned extension into account.
22496         (ATOMIC_COMPARE_AND_SWAP): Likewise.
22497         (ATOMIC_FETCH_AND_OP, ATOMIC_FETCH_AND_COMBOP): Likewise.
22498         Do computations on a scratch register.
22499
22500 2008-03-21  Richard Guenther  <rguenther@suse.de>
22501
22502         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
22503         Use is_gimple_min_invariant instead of TREE_INVARIANT.
22504         * tree-ssa-loop-ivopts.c (force_expr_to_var_cost): Likewise.
22505         * tree-ssa-dom.c (record_equality): Likewise.
22506         * tree-inline.c (copy_body_r): Likewise.
22507         * tree-ssa-pre.c (make_values_for_stmt): Remove test for
22508         TREE_INVARIANT.
22509
22510 2008-03-20  Kaz Kojima  <kkojima@gcc.gnu.org>
22511
22512         * config/sh/sh.c (split_branches): Pass zero to redirect_jump
22513         as 'delete_unused' argument.
22514
22515 2008-03-20  Richard Guenther  <rguenther@suse.de>
22516
22517         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove
22518         special casing of constant qualifiers.
22519         * tree-ssa.c (useless_type_conversion_p_1): Instead do not
22520         care about them in general.
22521         * tree-ssa-ccp.c (ccp_fold): Addresses are constant or not
22522         regardless of their type.
22523         (fold_stmt_r): Forcefully fold *& if we end up with that.
22524
22525 2008-03-20  Paul Brook  <paul@codesourcery.com>
22526
22527         * config.gcc (arm*-*-uclinux*): Remove duplicate arm/uclinux-elf.h.
22528         * config/arm/uclinux-eabi.h (SUBTARGET_EXTRA_LINK_SPEC): Add extra
22529         linker flags.
22530         * config/arm/bpabi.h (SUBTARGET_EXTRA_LINK_SPEC): Provide default
22531         definition.
22532         (LINK_SPEC): Use SUBTARGET_EXTRA_LINK_SPEC.
22533         * config/arm/unwind-arm.h (_Unwind_decode_target2): Add uClinux.
22534
22535 2008-03-20  Volker Reichelt  <v.reichelt@netcologne.de>
22536
22537         * common.opt (Wmudflap): New option.
22538         * tree-mudflap.c (mf_xform_derefs_1): Guard warning by OPT_Wmudflap.
22539         (mx_register_decls): Likewise.
22540         (mudflap_finish_file): Likewise.
22541         * doc/invoke.texi: Document -Wno-mudflap.
22542
22543 2008-03-20  Kai Tietz  <kai.tietz@onevision.com>
22544
22545         * c-format.c (replace_format_name_to_system_name): New.
22546         (cmp_attribs): New.
22547         (convert_format_name_to_system_name): New.
22548         (decode_format_attr): Add use of convert_format_name_to_system_name.
22549         (format_types_orig): Add gnu_ prefix to names.
22550         (check_format_info_main): Special treating of \0 escaped names for
22551         supporting multi-character format specifiers as I32, I64.
22552         (TARGET_OVERRIDES_FORMAT_ATTRIBUTES): Use of user defined attributes.
22553         (gnu_target_overrides_format_attributes): New.
22554         * c-format.h: Add structure target_ovr_attr to hold
22555         system specific formatter names.
22556         * config.gcc: Add for x86&x86_64 cygwin and mingw32 targets the
22557         msformat-c.o file to c_target_objs and cxx_target_objs.
22558         * config/i386/mingw32.h (TARGET_OVERRIDES_FORMAT_ATTRIBUTES): New.
22559         (TARGET_OVERRIDES_FORMAT_ATTRIBUTES_COUNT): New.
22560         (TARGET_N_FORMAT_TYPES): New.
22561         * config/i386/msformat-c.c: New.
22562         * config/i386/t-cygming: Add build rule for msformat-c.o.
22563         * doc/extend.texi: Add new format names gnu_* and ms_* and
22564         further details.
22565         * doc/tm.texi: (TARGET_OVERRIDES_FORMAT_ATTRIBUTES): New.
22566
22567 2008-03-20  Ira Rosen  <irar@il.ibm.com>
22568
22569         * doc/invoke.texi (-O3): Add -ftree-vectorize to the list of
22570         optimizations turned on under -O3.
22571         (ftree-vectorize): Add that the flag is turned on with -O3.
22572
22573 2008-03-20  Ben Elliston  <bje@au.ibm.com>
22574
22575         * regmove.c (try_auto_increment): Fix spelling error in comment.
22576         * final.c (final_scan_insn): Likewise.
22577
22578 2008-03-20  Uros Bizjak  <ubizjak@gmail.com>
22579
22580         PR target/14552
22581         * config/i386/mmx.md (*mov<mode>_internal_rex64"): Adjust register
22582         allocator preferences for "y" and "r" class registers.
22583         ("*mov<mode>_internal"): Ditto.
22584         ("*movv2sf_internal_rex64"): Ditto.
22585         ("*movv2sf_internal"): Ditto.
22586
22587 2008-03-19  Michael Matz  <matz@suse.de>
22588
22589         PR middle-end/35616
22590         * calls.c (expand_call): Check overlap of arguments with call
22591         address for sibcalls.
22592
22593 2008-03-19  Uros Bizjak  <ubizjak@gmail.com>
22594
22595         PR target/35496
22596         * stor-layout.c (update_alignment_for_field): Set minimum alignment
22597         of the underlying type of a MS bitfield layout to the natural
22598         alignment of the type.
22599
22600 2008-03-19  Jan Hubicka  <jh@suse.cz>
22601
22602         PR other/35094
22603         * toplev.c (decode_d_option): Handle all CPP flags.
22604         * tree-vrp.c: Update tree_pass descriptors.
22605         * regrename.c: Update tree_pass descriptors.
22606         * fwprop.c: Update tree_pass descriptors.
22607         * doc/invoke.texi: Remove documentation of dropped -d? flags.
22608         * tree-into-ssa.c: Update tree_pass descriptors.
22609         * tree-dump.c: Update tree_pass descriptors.
22610         * tree-complex.c: Update tree_pass descriptors.
22611         * tree-dump.h: Update tree_pass descriptors.
22612         * see.c: Update tree_pass descriptors.
22613         * cgraphbuild.c: Update tree_pass descriptors.
22614         * tracer.c: Update tree_pass descriptors.
22615         * tree-loop-distribution.c: Update tree_pass descriptors.
22616         * cgraph.c: Update tree_pass descriptors.
22617         * postreload-gcse.c: Update tree_pass descriptors.
22618         * postreload.c: Update tree_pass descriptors.
22619         * tree-ssa-loop-ch.c: Update tree_pass descriptors.
22620         * tree-tailcall.c: Update tree_pass descriptors.
22621         * tree-pass.h (tree_opt_pass): Rename to ...
22622         (opt_pass) ... this one; add "type" field and remove letter field.
22623         (gimple_opt_pass, rtl_opt_pass, simple_ipa_opt_pass): New.
22624         (execute_pass_list, execute_ipa_pass_list, all_passes, all_ipa_passes,
22625         all_lowering_passes): Update declaration.
22626         * ipa-cp.c: Update tree_pass descriptors.
22627         * final.c: Update tree_pass descriptors.
22628         * omp-low.c: Update tree_pass descriptors.
22629         * tree-ssa-dse.c: Update tree_pass descriptors.
22630         * ipa-reference.c: Update tree_pass descriptors.
22631         * tree-ssa-uncprop.c: Update tree_pass descriptors.
22632         * auto-inc-dec.c: Update tree_pass descriptors.
22633         * reorg.c: Update tree_pass descriptors.
22634         * cgraphunit.c: Update tree_pass descriptors.
22635         * tree-ssa-copyrename.c: Update tree_pass descriptors.
22636         * tree-ssa-ccp.c: Update tree_pass descriptors.
22637         * df-core.c: Update tree_pass descriptors.
22638         * mode-switching.c: Update tree_pass descriptors.
22639         * tree-nomudflap.c: Update tree_pass descriptors.
22640         * modulo-sched.c: Update tree_pass descriptors.
22641         * ipa-pure-const.c: Update tree_pass descriptors.
22642         * cse.c: Update tree_pass descriptors.
22643         * web.c: Update tree_pass descriptors.
22644         * tree-stdarg.c: Update tree_pass descriptors.
22645         * tree-ssa-math-opts.c: Update tree_pass descriptors.
22646         * tree-ssa-dom.c: Update tree_pass descriptors.
22647         * tree-nrv.c: Update tree_pass descriptors.
22648         * tree-ssa-alias.c: Update tree_pass descriptors.
22649         * loop-init.c: Update tree_pass descriptors.
22650         * gimple-low.c: Update tree_pass descriptors.
22651         * ipa-inline.c: Update tree_pass descriptors.
22652         * tree-ssa-sink.c: Update tree_pass descriptors.
22653         * global.c: Update tree_pass descriptors.
22654         * ifcvt.c: Update tree_pass descriptors.
22655         * jump.c: Update tree_pass descriptors.
22656         * predict.c: Update tree_pass descriptors.
22657         * tree-ssa-loop.c: Update tree_pass descriptors.
22658         * recog.c: Update tree_pass descriptors.
22659         * dse.c: Update tree_pass descriptors.
22660         * tree-ssa-ifcombine.c: Update tree_pass descriptors.
22661         * tree-eh.c: Update tree_pass descriptors.
22662         * regmove.c: Update tree_pass descriptors.
22663         * local-alloc.c
22664         * function.c: Update tree_pass descriptors.
22665         * tree-vectorizer.c: Update tree_pass descriptors.
22666         * gcse.c: Update tree_pass descriptors.
22667         * ipa-type-escape.c: Update tree_pass descriptors.
22668         * tree-if-conv.c: Update tree_pass descriptors.
22669         * init-regs.c: Update tree_pass descriptors.
22670         * ipa.c: Update tree_pass descriptors.
22671         * tree-ssa-phiopt.c: Update tree_pass descriptors.
22672         * rtl-factoring.c: Update tree_pass descriptors.
22673         * lower-subreg.c: Update tree_pass descriptors.
22674         * bt-load.c: Update tree_pass descriptors.
22675         * tree-dfa.c: Update tree_pass descriptors.
22676         * except.c: Update tree_pass descriptors.
22677         * emit-rtl.c: Update tree_pass descriptors.
22678         * cfgexpand.c: Update tree_pass descriptors.
22679         * tree-cfgcleanup.c: Update tree_pass descriptors.
22680         * cfgcleanup.c: Update tree_pass descriptors.
22681         * tree-ssa-pre.c: Update tree_pass descriptors.
22682         * tree-sra.c: Update tree_pass descriptors.
22683         * tree-mudflap.c: Update tree_pass descriptors.
22684         * tree-ssa-copy.c: Update tree_pass descriptors.
22685         * cfglayout.c: Update tree_pass descriptors.
22686         * tree-ssa-forwprop.c: Update tree_pass descriptors.
22687         * tree-ssa-dce.c: Update tree_pass descriptors.
22688         * tree-ssa.c: Update tree_pass descriptors.
22689         * regclass.c: Update tree_pass descriptors.
22690         * integrate.c: Update tree_pass descriptors.
22691         * tree-optimize.c: Update tree_pass descriptors.
22692         * tree-ssa-phiprop.c: Update tree_pass descriptors.
22693         * tree-object-size.c: Update tree_pass descriptors.
22694         * combine.c: Update tree_pass descriptors.
22695         * tree-outof-ssa.c: Update tree_pass descriptors.
22696         * bb-reorder.c: Update tree_pass descriptors.
22697         * stack-ptr-mod.c: Update tree_pass descriptors.
22698         * var-tracking.c: Update tree_pass descriptors.
22699         * tree-profile.c: Update tree_pass descriptors.
22700         * tree-vect-generic.c: Update tree_pass descriptors.
22701         * reg-stack.c: Update tree_pass descriptors.
22702         * sched-rgn.c: Update tree_pass descriptors.
22703         * tree-ssa-structalias.c: Update tree_pass descriptors.
22704         * tree-cfg.c: Update tree_pass descriptors.
22705         * passes.c (current_pass): Update declaration.
22706         (finish_optimization_passes): Update.
22707         (all_passes, all_ipa_passes, all_lowering_passes): Update declaration.
22708         (register_one_dump_file, register_dump_files_1, next_pass_1):
22709         Update arguments.
22710         (init_optimization_passes): Update handling of new types.
22711         (execute_one_pass, execute_pass_list, execute_ipa_pass_list): Update.
22712         * ipa-struct-reorg.c: Update tree_pass descriptors.
22713         * tree-ssa-reassoc.c: Update tree_pass descriptors.
22714         * combine-stack-adj.c: Update tree_pass descriptors.
22715         * cfgrtl.c: Update tree_pass descriptors.
22716         * dce.c: Update tree_pass descriptors.
22717         * tree-ssanames.c: Update tree_pass descriptors.
22718
22719 2008-03-19  Richard Guenther  <rguenther@suse.de>
22720
22721         PR middle-end/35609
22722         * tree-ssa.c (walk_data): New structure.
22723         (warn_uninitialized_var): If not always_executed warn with "maybe"
22724         instead of "is".
22725         (execute_early_warn_uninitialized): Compute post-dominators.
22726         Initialize always_executed before processing each basic block.
22727
22728 2008-03-18  Mikulas Patocka  <mikulas@artax.karlin.mff.cuni.cz>
22729
22730         PR target/35504
22731         * config/i386/i386.c (x86_this_parameter): Calculate correct location
22732         of "this" pointer when "regparm = N" or "fastcall" is in effect.
22733
22734 2008-03-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
22735
22736         * doc/include/texinfo.tex: Update to version 2008-03-17.10.
22737
22738 2008-03-18  Paolo Bonzini  <bonzini@gnu.org>
22739
22740         * expr.c (store_expr): Assume lang_hooks.reduce_bit_field_operations
22741         is true.
22742         (expand_expr_real_1) <REDUCE_BIT_FIELD>: Don't look at ignore.
22743         (expand_expr_real_1): Assume lang_hooks.reduce_bit_field_operations
22744         is true.  Add "&& !ignore" condition to reduce_bit_field.  Modify
22745         target after ignore has been set, and move there also the commputation
22746         of subtarget and original_target.
22747         * langhooks-def.h (LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS): Delete.
22748         (LANG_HOOKS_INITIALIZER): Remove it.
22749         * langhooks.h (struct lang_hooks): Remove reduce_bit_field_operations.
22750
22751 2008-03-18  Richard Guenther  <rguenther@suse.de>
22752
22753         * tree-ssa-sccvn.c (visit_reference_op_load): If the lookup
22754         found an expression with constants, note that in the VN for the lhs.
22755         * tree-ssa-pre.c (eliminate): Visit COND_EXPR statements and
22756         fold them to constants if possible.  Run cleanup_cfg if done so.
22757         (execute_pre): Return todo.
22758         (do_pre): Likewise.
22759         (execute_fre): Likewise.
22760         * tree-ssa-forwprop.c (can_propagate_from): Allow propagation
22761         of constants.
22762         (get_prop_source_stmt): Look through pointer conversions.
22763
22764 2008-03-18  Jan Hubicka  <jh@suse.cz>
22765
22766         * tree-pretty-print.c: Include predict.h.
22767         (dump_generic_node): Dump predictor.
22768         * tree.h (PREDICT_EXPR_OUTCOME, PREDICT_EXPR_PREDICTION): Update.
22769         * tree-gimple.c (is_gimple_stmt): Add PREDICT_EXPR.
22770         * gimple-low.c (lower_stmt): Likewise.
22771         * expr.c (expand_expr_real): Likewise.
22772         * predict.c (tree_bb_level_predictions): Use PREDICT_EXPRs and remove
22773         them.
22774         (build_predict_expr, build_predict_expr): New.
22775         * predict.h (predictor_name, build_predict_expr): Update.
22776         * c-typeck.c (c_finish_bc_stmt): Add prediction.
22777         * gimplify.c (gimplify_expr): Add PREDICT_EXPR.
22778         * predict.def (PRED_CONTINUE): Update hitrate.
22779         * tree.def (PREDICT_EXPR): Define.
22780         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Mark PREDICT_EXPR;
22781         do not handle BIND_EXPR.
22782         * tree-inline.c (estimate_num_insns_1): PREDICT_EXPR is free.
22783         * tree-cfg.c (verify_gimple_stmt): PREDICT_EXPR is valid.
22784         * tree-ssa-operands.c (get_expr_operands): PREDICT_EXPR takes no
22785         operands.
22786
22787 2008-03-18  Michael Matz  <matz@suse.de>
22788
22789         * gcov-io.h (__gcov_merge_ior, __gcov_fork): Mark hidden.
22790
22791 2008-03-18  Richard Guenther  <rguenther@suse.de>
22792
22793         * tree-gimple.h (is_gimple_invariant_address): Declare.
22794         (is_gimple_constant): Likewise.
22795         * tree-gimple.c (is_gimple_constant): New function.
22796         (is_gimple_invariant_address): Likewise.
22797         (is_gimple_min_invariant): Implement in terms of is_gimple_constant
22798         and is_gimple_invariant_address.
22799         * tree-ssa-loop-niter.c (expand_simple_operations): Revert
22800         previous change.
22801         * tree-data-ref.c (get_references_in_stmt): A SSA_NAME is not
22802         an addressable base.
22803
22804 2008-03-18  Jakub Jelinek  <jakub@redhat.com>
22805
22806         PR middle-end/35611
22807         * gimplify.c (gimplify_expr): Gimplify second operand of
22808         OMP_ATOMIC_LOAD.
22809
22810 2008-03-17  Richard Guenther  <rguenther@suse.de>
22811
22812         PR tree-optimization/19637
22813         * fold-const.c (fold_unary): Remove restrictions of removing
22814         intermediate pointer-conversions (P2)(P1)P0.
22815         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Recover from
22816         conversion to void pointer.
22817         (get_maxval_strlen): Handle addresses of the form &(*p)[0].
22818
22819 2008-03-16  James E. Wilson  <wilson@tuliptree.org>
22820
22821         PR debug/31510
22822         * dbxout.c (dbxout_expand_expr, case VAR_DECL): Return NULL for
22823         emulated thread local variables.
22824
22825 2008-03-16  Richard Guenther  <rguenther@suse.de>
22826
22827         PR middle-end/35607
22828         * tree-ssa-loop-niter.c (expand_simple_operations): Do not
22829         expand TREE_INVARIANT operations that are not gimple invariant.
22830
22831 2008-03-16  Hans-Peter Nilsson  <hp@axis.com>
22832
22833         * doc/extend.texi (Alignment): Say that the ABI controls
22834         the __alignof__ for non-strict-alignment targets rather
22835         than being a recommendation.
22836
22837 2008-03-15  Paul Brook  <paul@codesourcery.com>
22838
22839         * config/arm/arm.c (arm_unwind_emit): Suppress unused unwinding
22840         annotations.
22841         (arm_output_fn_unwind): Mark functions that can not be unwound.
22842
22843 2008-03-15  Paul Brook  <paul@codesourcery.com>
22844
22845         * config/arm/arm.c (arm_rtx_costs_1): Add costs for ARMv6 value
22846         extension instructions.
22847
22848 2008-03-15  Richard Guenther  <rguenther@suse.de>
22849
22850         * tree-ssa-ccp.c (ccp_fold): Also read from constant values
22851         and fold constant aggregate refs.
22852         (fold_const_aggregate_ref): Handle string constants
22853         and constructors in ARRAY_REFs.  Handle INDIRECT_REF.
22854         (evaluate_stmt): Simplify now that ccp_fold folds constant
22855         aggregate refs.
22856
22857 2008-03-15  Paul Brook  <paul@codesourcery.com>
22858
22859         * config/arm/arm.md (insv): Use gen_insv_t2 and gen_insv_zero.
22860         (extzv): Use gen_extzv_t2.
22861         (insv_t2, insv_zero, extv, extzv_t2): New patterns.
22862
22863 2008-03-15  Richard Guenther  <rguenther@suse.de>
22864
22865         * tree-ssa-ccp.c (get_symbol_constant_value): Export.
22866         (fold_const_aggregate_ref): Likewise.
22867         (get_value): Return NULL if we don't have any values.
22868         (ccp_finalize): Set const_val to NULL after freeing it.
22869         * tree-flow.h (get_symbol_constant_value): Declare.
22870         (fold_const_aggregate_ref): Likewise.
22871         * tree-ssa-sccvn.c (try_to_simplify): Use them.
22872
22873 2008-03-15  Richard Guenther  <rguenther@suse.de>
22874
22875         PR middle-end/35593
22876         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Make sure
22877         to not produce negative array indices if not allowed.  Add
22878         parameter to indicate that.
22879         (maybe_fold_offset_to_component_ref): Allow negative array
22880         indices only for the first member of a structure.
22881         (maybe_fold_offset_to_reference): Allow negative array indices.
22882         (maybe_fold_stmt_addition): Likewise.
22883
22884 2008-03-15  Bjoern Haase  <bjoern.m.haase@web.de>
22885             Anatoly Sokolov <aesok@post.ru>
22886
22887         * config/avr/avr.c (avr_arch_types): Add avr6 entry.
22888         (avr_arch): Add ARCH_AVR6.
22889         (avr_mcu_types): Add 'atmega2560' and 'atmega2561' entry.
22890         (initial_elimination_offset): Initialize and use 'avr_pc_size'
22891         instead of fixed value 2.
22892         (print_operand_address): Use gs() asm specifier instead of pm().
22893         (avr_assemble_integer): (Ditto.).
22894         (avr_output_addr_vec_elt): (Ditto.).
22895         (print_operand): Handle "!" code.
22896         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Add
22897         __AVR_3_BYTE_PC__, __AVR_2_BYTE_PC__ and __AVR_HAVE_JMP_CALL__.
22898         (AVR_HAVE_EIJMP_EICALL): Define.
22899         (AVR_3_BYTE_PC): Redefine.
22900         (AVR_2_BYTE_PC): (Ditto.).
22901         (PRINT_OPERAND_PUNCT_VALID_P): Add '!' code.
22902         (LINK_SPEC): Add atmega2560 and atmega2561.
22903         (CRT_BINUTILS_SPEC): Add atmega2560 (crtm2560.o) and atmega2561
22904         (crtm2561.o).
22905         * config/avr/avr.md (call_insn): Use eicall instead of icall
22906         for 3 byte PC devices.
22907         (call_value_insn): (Ditto.).
22908         (*tablejump_enh): Use eijmp instead of ijmp for 3 byte PC devices.
22909         (indirect_jump): Use only for for 2 byte PC devices.
22910         (*tablejump): (Ditto.).
22911         (*indirect_jump_avr6): Add insn.
22912         (*tablejump_rjmp): Don't use for 3 byte PC devices.
22913         * config/avr/libgcc.S (__prologue_saves__): Use eijmp
22914         instead of ijmp for 3 byte PC devices.
22915         (__tablejump2__): (Ditto.).
22916         * config/avr/t-avr (MULITLIB_OPTIONS): Add avr6 architecture.
22917         (MULITLIB_DIRNAMES): (Ditto.).
22918         (MULTILIB_MATCHES): Add atmega2560 and atmega2561 to list.
22919
22920 2008-03-15  Uros Bizjak  <ubizjak@gmail.com>
22921
22922         * config/i386/mmx.md ("sse2_umulv1siv2di3"): Rename from
22923         "sse2_umulsidi3".  Use V1DI mode for operand 0.
22924         ("mmx_psadbw"): Use V1DI mode for operand 0.
22925         * config/i386/i386-modes.def (V1SI): New vector mode.
22926         * config/i386/i386.c (struct builtin_description)
22927         [IX86_BUILTIN_PMULUDQ]: Use CODE_FOR_sse2_umulv1siv1di3.
22928         (v1di_ftype_v8qi_v8qi): Rename from di_ftype_v8qi_v8qi.
22929         (v1di_ftype_v2si_v2si): Rename from di_ftype_v2si_v2si.
22930         (ix86_init_mmx_sse_builtins) [__builtin_ia32_psadbw]: Use
22931         v1di_ftype_v8qi_v8qi type.
22932         [__builtin_ia32_pmuludq]: Use v1di_ftype_v2si_v2si type.
22933
22934         * doc/extend.texi (X86 Built-in Functions) [__builtin_ia32_psadbw,
22935         __builtin_ia32_pmuludq]: Fix the mode of return value.
22936
22937 2008-03-15  Richard Guenther  <rguenther@suse.de>
22938
22939         PR middle-end/35595
22940         * tree-ssa-pre.c (bitmap_find_leader): Handle expression
22941         being a PHI_NODE.
22942
22943 2008-03-14  Bob Wilson  <bob.wilson@acm.org>
22944
22945         * doc/invoke.texi (Option Summary, Xtensa Options): Document
22946         -mserialize-volatile and -mno-serialize-volatile Xtensa options.
22947         * config/xtensa/xtensa.c (print_operand): Do not emit MEMW instructions
22948         unless TARGET_SERIALIZE_VOLATILE is enabled.
22949         * config/xtensa/xtensa.md (*lsiu, *ssiu): Likewise.
22950         * config/xtensa/xtensa.h (TARGET_DEFAULT): Add MASK_SERIALIZE_VOLATILE.
22951         * config/xtensa/xtensa.opt (mserialize_volatile): New option.
22952
22953 2008-03-14  Richard Guenther  <rguenther@suse.de>
22954
22955         PR tree-optimization/34172
22956         * tree-flow.h (refs_may_alias_p): Declare.
22957         (get_single_def_stmt): Likewise.
22958         (get_single_def_stmt_from_phi): Likewise.
22959         (get_single_def_stmt_with_phi): Likewise.
22960         * tree-dfa.c (refs_may_alias_p): New function.
22961         (get_single_def_stmt): Likewise.
22962         (get_single_def_stmt_from_phi): Likewise.
22963         (get_single_def_stmt_with_phi): Likewise.
22964         * tree-ssa-sccvn.c (get_def_ref_stmt_vuses): New function.
22965         (vn_reference_lookup_1): New helper function.
22966         (vn_reference_lookup): Walk the virtual use-def chain to
22967         continue searching for a match if the def does not alias the
22968         reference we are looking for.
22969
22970 2008-03-14  David Edelsohn  <edelsohn@gnu.org>
22971
22972         * doc/install.texi (Binaries): Remove UCLA archive.  Add HVCC
22973         archive and Perzl.  Update The Written Word listing.
22974
22975 2008-03-14  Richard Guenther  <rguenther@suse.de>
22976
22977         PR tree-optimization/34043
22978         PR tree-optimization/33989
22979         * tree-ssa-pre.c (execute_pre): Allow SCCVN to do insertion
22980         when doing FRE.
22981         (bitmap_find_leader): Use extra argument to verify dominance
22982         relationship inside a basic-block.
22983         (can_PRE_operation): Add VIEW_CONVERT_EXPR.
22984         (find_leader_in_sets): Adjust.
22985         (create_component_ref_by_pieces): Take extra argument for
22986         dominance check, handle lookup failures.
22987         (find_or_generate_expression): Likewise.
22988         (create_expression_by_pieces): Likewise.
22989         (insert_into_preds_of_block): Adjust.
22990         (create_value_expr_from): If asked for, verify all operands
22991         are in the blocks AVAIL_OUT set.
22992         (make_values_for_stmt): Check for SSA_NAMEs that are life
22993         over an abnormal edge.
22994         (compute_avail): Remove such check.
22995         (do_SCCVN_insertion): New function.
22996         (eliminate): If we do not find a leader suitable for replacement
22997         insert a replacement expression from SCCVN if available.
22998         * tree-ssa-sccvn.h (run_scc_vn): Update prototype.
22999         (struct vn_ssa_aux): Add needs_insertion flag.
23000         * tree-ssa-sccvn.c (may_insert): New global flag.
23001         (copy_reference_ops_from_ref): Value-number union member access
23002         based on its size, not type and member if insertion is allowed.
23003         (visit_reference_op_load): For a weak match from union type
23004         punning lookup a view-converted value and insert a SSA_NAME
23005         for that value if that is not found.
23006         (visit_use): Make dumps shorter.  Do not disallow value numbering
23007         SSA_NAMEs that are life over an abnormal edge to constants.
23008         (free_scc_vn): Release inserted SSA_NAMEs.
23009         (run_scc_vn): New flag to specify whether insertion is allowed.
23010         Process SSA_NAMEs in forward order.
23011         * tree-ssa-loop-im.c (for_each_index): Handle invariant
23012         ADDR_EXPRs inside VIEW_CONVERT_EXPR.
23013         * fold-const.c (fold_unary): Fold VIEW_CONVERT_EXPRs from/to
23014         pointer type to/from integral types that do not change the
23015         precision to regular conversions.
23016
23017 2008-03-13  Uros Bizjak  <ubizjak@gmail.com>
23018
23019         * doc/extend.texi (X86 Built-in Functions) [__builtin_ia32_psll?,
23020         __builtin_ia32_psrl?, __builtin_ia32_psra?, __builtin_ia32_psll?i,
23021         __builtin_ia32_psrl?i, __builtin_ia32_psra?i, __builtin_ia32_psll?128,
23022         __builtin_ia32_psrl?128, __builtin_ia32_psra?128]: Fix the mode of
23023         input arguments and the mode of return value.  Built-in functions
23024         that operate on whole 64-bit MMX register now use V1DI mode.
23025
23026 2008-03-13  Alon Dayan  <alond@il.ibm.com>
23027             Olga Golovanevsky  <olga@il.ibm.com>
23028
23029         PR tree-optimization/35041
23030         * ipa-struct-reorg.c (find_pos_in_stmt_1): Add another option
23031         to locate the right position in a statement.
23032
23033 2008-03-13  Uros Bizjak  <ubizjak@gmail.com>
23034
23035         PR target/34000
23036         PR target/35553
23037         * config/i386/xmmintrin.h:  Change all static inline functions to
23038         extern inline and add __gnu_inline__ attribute.
23039         * config/i386/bmintrin.h: Ditto.
23040         * config/i386/smmintrin.h: Ditto.
23041         * config/i386/tmmintrin.h: Ditto.
23042         * config/i386/mmintrin-common.h: Ditto.
23043         * config/i386/ammintrin.h: Ditto.
23044         * config/i386/emmintrin.h: Ditto.
23045         * config/i386/pmmintrin.h: Ditto.
23046         * config/i386/mmintrin.h: Ditto.
23047         * config/i386/mm3dnow.h: Ditto.
23048
23049 2008-03-13  Jakub Jelinek  <jakub@redhat.com>
23050
23051         PR middle-end/35185
23052         * omp-low.c (lower_regimplify, init_tmp_var, save_tmp_var): Removed.
23053         (lower_omp_2): New function.
23054         (lower_omp_1, lower_omp): Rewritten.
23055
23056 2008-03-13  Danny Smith  <dannysmith@users.sourceforge.net>
23057
23058         PR 35054
23059         * doc/extend.texi (Structure-Packing Pragmas): Replace "Win32"
23060         with the phrase "Microsoft Windows compilers".
23061         (Push/Pop Macro Pragmas): New subsection. Document
23062         #pragma push_macro and pragma pop_macro.
23063
23064 2008-03-12  Paul Brook  <paul@codesourcery.com>
23065
23066         * config/arm/arm.c (output_move_double): Prefer LDRD to LDM.
23067
23068 2008-03-12  Paul Brook  <paul@codesourcery.com>
23069
23070         * config/arm/thumb2.md: Extend peephole to cover 3-arg subs.
23071         (thumb2_alusi3_short): Exclude PLUS and MINUS.
23072         (thumb2_addsi_shortim): Rename ...
23073         (thumb2_addsi_short): ... to this.  Allow register operands.
23074         (thumb2_subsi_short): New pattern.
23075         (thumb2_one_cmplsi2_short,
23076         thumb2_negsi2_short): New patterns and peepholes.
23077
23078 2008-03-12  Paul Brook  <paul@codesourcery.com>
23079
23080         * config/arm/arm.c (arm_size_rtx_costs): Use ARM costs for Thumb-2.
23081
23082 2008-03-12  Uros Bizjak  <ubizjak@gmail.com>
23083
23084         * config/i386/i386.md (int_cond): New code iterator.
23085         (fp_cond): Ditto.
23086         ("s<code>"): Macroize expander from seq, sne, sgt, sgtu, slt, sltu,
23087         sge, sgeu, sle and sleu expanders usign int_cond code iterator.
23088         ("s<code>"): Macroize expander from sunordered, sordered, suneq, sunge,
23089         sungt, sunle, sunlt and sltgt expanders usign fp_cond code iterator.
23090         ("b<code>"): Macroize expander from beq, bne, bgt, bgtu, blt, bltu,
23091         bge, bgeu, ble and bleu expanders usign int_cond code iterator.
23092         ("b<code>"): Macroize expander from bunordered, bordered, buneq, bunge,
23093         bungt, bunle, bunlt and bltgt expanders usign fp_cond code iterator.
23094
23095 2008-03-12  Paul Brook  <paul@codesourcery.com>
23096
23097         * config/arm/arm.c (use_return_insn): Use offsets->saved_regs_mask
23098         instead of {arm,thumb}_compute_save_reg_mask.
23099         (output_return_instruction): Ditto.
23100         (thumb_unexpanded_epilogue): Ditto.
23101         (thumb1_expand_prologue): Ditto.
23102         (thumb1_output_function_prologue): Ditto.
23103         (arm_set_return_address): Ditto.
23104         (thumb_set_return_address): Ditto.
23105         (arm_get_frame_offsets): Set offsets->saved_regs_mask.  Push extra
23106         regs to achieve stack alignment.
23107         (thumb1_compute_save_reg_mask): Fix compiler warning.
23108         (arm_output_epilogue): Use offsets->saved_regs_mask.
23109         Adjust stack pointer by poping call clobered registers.
23110         (arm_expand_prologue): Use offsets->saved_regs_mask.
23111         Adjust stack pointer by pushing extra registers.
23112         * config/arm.h (arm_stack_offsets): Add saved_regs_mask.
23113
23114 2008-03-12  Paolo Bonzini  <bonzini@gnu.org>
23115
23116         PR tree-opt/35422
23117         * fold-const.c (fold_unary) <NOP_EXPR>: Distribute a narrowing
23118         conversion to the operands of a multiplication.
23119
23120 2008-03-12  Richard Guenther  <rguenther@suse.de>
23121
23122         * Makefile.in (OBJS-common): Add tree-ssa-phiprop.o
23123         (tree-ssa-phiprop.o): Copy dependencies from tree-ssa-forwprop.o.
23124         * timevar.def (TV_TREE_PHIPROP): Add.
23125         * tree-ssa-phiprop.c: Split from tree-ssa-forwprop.c, added
23126         pass description.  Use TV_TREE_PHIPROP.
23127         * tree-ssa-forwprop.c: Remove phiprop code.
23128
23129 2008-03-12  Jakub Jelinek  <jakub@redhat.com>
23130
23131         PR middle-end/35549
23132         * omp-low.c (maybe_lookup_decl): Constify first argument.
23133         (use_pointer_for_field): Change last argument from bool to
23134         omp_context *.  Disallow shared copy-in/out in nested
23135         parallel if decl is shared in outer parallel too.
23136         (build_outer_var_ref, scan_sharing_clauses,
23137         lower_rec_input_clauses, lower_copyprivate_clauses,
23138         lower_send_clauses, lower_send_shared_vars): Adjust callers.
23139
23140 2008-03-12  Victor Kaplansky  <victork@il.ibm.com>
23141             Ira Rosen  <irar@il.ibm.com>
23142
23143         * tree-vectorizer.c (free_stmt_vec_info): New function.
23144         (destroy_loop_vec_info): Move code to free_stmt_vec_info().
23145         Call free_stmt_vec_info(). Free LOOP_VINFO_STRIDED_STORES..
23146         * tree-vectorizer.h (free_stmt_vec_info): Declare.
23147         * tree-vect-transform.c (vectorizable_conversion): Free
23148         vec_oprnds0 if it was allocated.
23149         (vect_permute_store_chain): Remove unused VECs.
23150         (vectorizable_store): Free VECs that are allocated in the..
23151         function.
23152         (vect_transform_strided_load, vectorizable_load): Likewise.
23153         (vect_remove_stores): Simplify the code.
23154         (vect_transform_loop): Move code to vect_remove_stores().
23155         Call vect_remove_stores() and free_stmt_vec_info().
23156
23157 2008-03-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
23158
23159         * pa.h (TARGET_LONG_PIC_SDIFF_CALL): Conditionalize define on
23160         TARGET_HPUX.  Revise comment.
23161         (TARGET_LONG_PIC_PCREL_CALL): Revise comment.
23162         * pa.c (output_call): Update for revised TARGET_LONG_PIC_SDIFF_CALL.
23163         Use sr4 variant of `be' instruction when not generating PIC code.
23164         (attr_length_call): Adjust for above change.
23165
23166 2008-03-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
23167
23168         * ipa-reference.c (static_execute): Remove module_statics_const and
23169         associated setting code.
23170
23171 2008-03-11  Uros Bizjak  <ubizjak@gmail.com>
23172
23173         PR target/35540
23174         * config/i386/i386.md (paritysi2, paritydi2): Use register_operand
23175         predicate for operand 1.
23176         (paritysi2_cmp): Use register_operand predicate for operand 2.
23177         Use earlyclobber modifier for operand 1.  Remove support for
23178         memory operands.
23179         (paritydi2_cmp): Use register_operand predicate for operand 3.
23180         Use earlyclobber modifier for operand 1.  Remove support for
23181         memory operands.
23182
23183 2008-03-11  Paul Brook  <paul@codesourcery.com>
23184             Vladimir Prus  <vladimir@codesourcery.com>
23185
23186         * config/arm/arm.c (use_return_insn): Check TARGET_APCS_FRAME.
23187         (arm_compute_save_reg0_reg12_mask): Always
23188         check if register 11 must be saved.  Always safe hard frame pointer
23189         when frame_pointer_needeed.
23190         (arm_compute_save_reg_mask): Save IP and PC
23191         only with apcs frames.
23192         (arm_output_epilogue): Adjust Thumb2 codepath to
23193         be also invoked and work for ARM non-apcs frames.
23194         (arm_expand_prologue): Don't bother saving IP
23195         for non-apcs frame, since it's not clobbered by
23196         prologue code.  Implement non-apcs frame
23197         layout.
23198
23199 2008-03-11  Paolo Bonzini  <bonzini@gnu.org>
23200
23201         PR rtl-optimization/35281
23202         * expr.c (convert_move): Use a new pseudo for the intermediate
23203         from_mode->word_mode result.
23204
23205 2008-03-11  Paolo Bonzini  <bonzini@gnu.org>
23206
23207         * langhooks-def.h (LANG_HOOKS_CLEAR_BINDING_STACK): Delete.
23208         * langhooks.h (struct lang_hooks): Delete clear_binding_stack member.
23209         * toplev.c (compile_file): Don't call it.
23210
23211 2008-03-11  Uros Bizjak  <ubizjak@gmail.com>
23212
23213         PR middle-end/35526
23214         * expr.c (store_expr): Call emit_block_move if the mode
23215         of "temp" RTX is BLKmode.
23216
23217 2008-03-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
23218             Richard Guenther  <rguenther@suse.de>
23219
23220         PR tree-optimization/31358
23221         * tree-ssa-loop-manip.c (create_iv): Call force_gimple_operand for
23222         the step with a NULL_TREE.
23223         * tree-ssa-loop-ivopts.c (find_bivs): Convert the step
23224         to sizetype if type is a pointer type.
23225         (add_candidate_1): Don't convert the base and step to
23226         the generic type if the orginal type is a pointer type.
23227         (add_iv_value_candidates): Use sizetype for the step
23228         if type is a pointer type.
23229         (cand_value_at): Likewise.
23230         * tree-ssa-address.c (add_to_parts): Use POINTER_PLUS_EXPR
23231         for pointer types.
23232         * tree-affine.c (tree_to_aff_combination <POINTER_PLUS_EXPR>):
23233         Don't convert the tem affine to the type.
23234         (add_elt_to_tree): Use sizetype for the step if a pointer.
23235         Use POINTER_PLUS_EXPR for pointers.
23236         (aff_combination_to_tree): Use sizetype for the step if a
23237         pointer.
23238
23239 2008-03-10  Vladimir Makarov  <vmakarov@redhat.com>
23240
23241         * config/i386/sse.md (ssse3_pmaddubswv8hi3, ssse3_pmaddubswv4hi3):
23242         Remove commutativity hint.
23243
23244 2008-03-10  Jakub Jelinek  <jakub@redhat.com>
23245
23246         PR c/35438
23247         PR c/35439
23248         * c-parser.c (c_parser_omp_threadprivate): Don't add vars with
23249         errorneous type.  Check that v is a VAR_DECL.
23250
23251         PR middle-end/35099
23252         * tree-cfg.c (new_label_mapper): Update cfun->last_label_uid.
23253
23254 2008-03-10  H.J. Lu  <hongjiu.lu@intel.com>
23255
23256         PR tree-optimization/35494
23257         * tree-ssa-ccp.c (get_symbol_constant_value): Check if value
23258         may be overriden at link and run time.
23259
23260 2008-03-10  Richard Guenther  <rguenther@suse.de>
23261
23262         PR tree-optimization/34677
23263         * tree-ssa-pre.c (modify_expr_node_pool): Remove.
23264         (poolify_tree): Likewise.
23265         (modify_expr_template): Likewise.
23266         (poolify_modify_stmt): Likewise.
23267         (insert_fake_stores): Handle all component-ref style stores
23268         in addition to INDIRECT_REF.  Also handle complex types.
23269         Do not poolify the inserted load.
23270         (realify_fake_stores): Do not rebuild the tree but only
23271         make it a SSA_NAME copy.
23272         (init_pre): Remove initialzation of modify_expr_template.
23273         Do not allocate modify_expr_node_pool.
23274         (fini_pre): Do not free modify_expr_node_pool.
23275
23276 2008-03-10  Paul Brook  <paul@codesourcery.com>
23277
23278         * config/arm/arm.md (UNSPEC_STACK_ALIGN, UNSPEC_PIC_OFFSET): Renumber
23279         to avoid conflicts.
23280
23281 2008-03-10  Paul Brook  <paul@codesourcery.com>
23282             Mark Shinwell  <shinwell@codesourcery.com>
23283
23284         * config/arm/cortex-r4.md: New.
23285         * config/arm/thumb2.md (divsi3, udivsi3): Annotate with
23286         insn attributes.
23287         * config/arm/arm.md: Include cortex-r4.md.
23288         (insn): Add smmls, sdiv and udiv values.
23289         (generic_sched): Don't use generic scheduling for Cortex-R4.
23290         (arm_issue_rate): New function.
23291         (TARGET_SCHED_ISSUE_RATE): Define.
23292
23293 2008-03-10  Sebastian Pop  <sebastian.pop@amd.com>
23294
23295         * doc/invoke.texi (-ftree-loop-distribution): Add an example.
23296
23297 2008-03-10  Richard Guenther  <rguenther@suse.de>
23298
23299         * tree-ssa-pre.c (get_sccvn_value): Simplify.
23300         (compute_avail): Do not add stmt uses to AVAIL_OUT.
23301
23302 2008-03-10  Paolo Bonzini  <bonzini@gnu.org>
23303
23304         * langhooks-def.h (LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS):
23305         Set default to true.
23306
23307 2008-03-09  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
23308
23309         * c.opt (Wsynth): Deprecate.
23310         * doc/invoke.texi (Option Summary, Warning Options): Document
23311         -Wno-format-contains-nul.
23312
23313 2008-03-09  Uros Bizjak  <ubizjak@gmail.com>
23314
23315         PR target/35496
23316         * config/i386/i386.c (ix86_constant_alignment): Compute alignment using
23317         ALIGN_MODE_128 for VECTOR_CST and INTEGER_CST in addition to REAL_CST.
23318
23319 2008-03-09  Ira Rosen  <irar@il.ibm.com>
23320
23321         * config/rs6000/rs6000.c (builtin_description): Rename vector
23322         left shift operations.
23323         * config/rs6000/altivec.md (UNSPEC_VSL): Remove.
23324         (altivec_vsl<VI_char>): Rename to ...
23325         (ashl<mode>3): ... new name.
23326         (mulv4sf3, mulv4si3, negv4sf2): Replace gen_altivec_vslw with
23327         gen_ashlv4si3.
23328         (absv4sf2): Convert to use ashift:V4SI instead of UNSPEC_VSL.
23329
23330 2008-03-08  Richard Guenther  <rguenther@suse.de>
23331
23332         * coverage.h (tree_coverage_counter_addr): Declare.
23333         * coverage.c (tree_coverage_counter_addr): New function.
23334         * tree-profile.c (tree_gen_edge_profiler): Unshare counter
23335         before using again.
23336         (tree_gen_pow2_profiler): Use tree_coverage_counter_addr.
23337         (tree_gen_one_value_profiler): Likewise.
23338         (tree_gen_ic_profiler): Likewise.
23339         (tree_gen_average_profiler): Likewise.
23340         (tree_gen_ior_profiler): Likewise.
23341
23342 2008-03-08  Richard Guenther  <rguenther@suse.de>
23343
23344         * tree-ssa-sccvn.h (vn_binary_op_lookup): Remove.
23345         (vn_binary_op_insert): Likewise.
23346         (vn_unary_op_lookup): Likewise.
23347         (vn_unary_op_insert): Likewise.
23348         (vn_nary_op_lookup): Declare.
23349         (vn_nary_op_insert): Likewise.
23350         * tree-ssa-sccvn.c (struct vn_tables_s): Merge unary
23351         and binary hashes, use a single obstack for unary_op_pool
23352         and binary_op_pool.
23353         (struct vn_binary_op_s, struct vn_unary_op_s): Replace with
23354         a single struct vn_nary_op_s.  Store tree code length and
23355         a variable number of operands.
23356         (struct vn_reference_op_struct): Remove unused op2.
23357         (vn_reference_op_eq): Do not compare op2.
23358         (vn_reference_op_compute_hash): Do not compute hash of op2.
23359         (vn_unary_op_hash, vn_binary_op_hash): Replace with vn_nary_op_hash.
23360         (vn_unary_op_compute_hash, vn_binary_op_compute_hash): Replace
23361         with vn_nary_op_compute_hash.
23362         (vn_unary_op_eq, vn_binary_op_eq): Replace with vn_nary_op_eq.
23363         (vn_unary_op_lookup, vn_binary_op_lookup): Replace with
23364         vn_nary_op_lookup.
23365         (vn_unary_op_insert, vn_binary_op_insert): Replace with
23366         vn_nary_op_insert.
23367         (visit_unary_op): Call nary functions.
23368         (visit_binary_op): Likewise.
23369         (process_scc): Adjust for struct vn_tables_s changes.
23370         (allocate_vn_table): Likewise.
23371         (free_vn_table): Likewise.
23372         * tree-vn.c (vn_add): Call nary functions.
23373         (vn_lookup): Likewise.
23374
23375 2008-03-08  Jakub Jelinek  <jakub@redhat.com>
23376
23377         PR target/35498
23378         * config/rs6000/rs6000.c (rs6000_expand_compare_and_swapqhi): Shift
23379         wdst back after sync_compare_and_swapqhi_internal.
23380
23381 2008-03-08  Uros Bizjak  <ubizjak@gmail.com>
23382
23383         PR target/22152
23384         * config/i386/i386-modes.def (V1DI): New vector mode.
23385         * config/i386/i386.h (VALID_MMX_REG_MODE): Add V1DImode.
23386         * config/i386/mmx.md (MMXMODEI8): New mode iterator.
23387         (MMXMODE248): Ditto.
23388         (MMXMODE): Add V1DI mode.
23389         (mmxvecsize): Change DI mode to V1DI mode.
23390         ("mov<mode>): Use MMXMODEI8 mode iterator.
23391         ("*mov<mode>_internal_rex64"): Ditto.
23392         ("*mov<mode>_internal"): Ditto.
23393         ("mmx_add<mode>3"): Ditto.  Handle V1DImode for TARGET_SSE2.
23394         ("mmx_sub<mode>3"): Ditto.
23395         ("mmx_adddi3"): Remove insn pattern.
23396         ("mmx_subdi3"): Ditto.
23397         ("mmx_ashr<mode>3"): Use SImode and "yN" constraint for operand 2.
23398         ("mmx_lshr<mode>3"): Ditto. Use MMXMODE248 mode iterator.
23399         ("mmx_ashl<mode>3"): Ditto.
23400         ("mmx_lshrdi3"): Remove insn pattern.
23401         ("mmx_ashldi3"): Ditto.
23402         * config/i386/i386.c (classify_argument): Handle V1DImode.
23403         (function_arg_advance_32): Ditto.
23404         (function_arg_32): Ditto.
23405         (struct builtin_description) [IX86_BUILTIN_PADDQ]: Use
23406         mmx_addv1di3 insn pattern.
23407         [IX86_BUILTIN_PSUBQ]: Use mmx_subv1di3 insn pattern.
23408         [IX86_BUILTIN_PSLL?, IX86_BUILTIN_PSRL?, IX86_BUILTIN_PSRA?,
23409         IX86_BUILTIN_PSLL?I, IX86_BUILTIN_PSRL?I, IX86_BUILTIN_PSRA?I,
23410         IX86_BUILTIN_PSLL?I128, IX86_BUILTIN_PSRL?I128, IX86_BUILTIN_PSRA?I128]:
23411         Remove definitions of built-in functions.
23412         (V1DI_type_node): New node.
23413         (v1di_ftype_v1di_int): Ditto.
23414         (v1di_ftype_v1di_v1di): Ditto.
23415         (v2si_ftype_v2si_si): Ditto.
23416         (v4hi_ftype_v4hi_di): Remove node.
23417         (v2si_ftype_v2si_di): Ditto.
23418         (ix86_init_mmx_sse_builtins): Handle V1DImode.
23419         (__builtin_ia32_psll?, __builtin_ia32_psrl?, __builtin_ia32_psra?):
23420         Redefine builtins using def_builtin_const with *_ftype_*_int node.
23421         (__builtin_ia32_psll?i, __builtin_ia32_psrl?i, __builtin_ia32_psra?i):
23422         Add new builtins using def_builtin_const.
23423         (ix86_expand_builtin) [IX86_BUILTIN_PSLL?, IX86_BUILTIN_PSRL?,
23424         IX86_BUILTIN_PSRA?, IX86_BUILTIN_PSLL?I, IX86_BUILTIN_PSRL?I,
23425         IX86_BUILTIN_PSRA?I]: Handle builtin definitions.
23426         * config/i386/mmintrin.h (__v1di): New typedef.
23427         (_mm_add_si64): Cast arguments to __v1di type.
23428         (_mm_sub_si64): Ditto.
23429         (_mm_sll_pi16): Cast __count to __v4hi type.
23430         (_mm_sll_pi32): Cast __count to __v2si type.
23431         (_mm_sll_si64): Cast arguments to __v1di type.
23432         (_mm_srl_pi16): Cast __count to __v4hi type.
23433         (_mm_srl_pi32): Cast __count to __v2si type.
23434         (_mm_srl_si64): Cast arguments to __v1di type.
23435         (_mm_sra_pi16): Cast __count to __v4hi type.
23436         (_mm_sra_pi32): Cast __count to __v2si type.
23437         (_mm_slli_pi16): Use __builtin_ia32_psllwi.
23438         (_mm_slli_pi32): Use __builtin_ia32_pslldi.
23439         (_mm_slli_si64): Use __builtin_ia32_psllqi. Cast __m to __v1di type.
23440         (_mm_srli_pi16): Use __builtin_ia32_psrlwi.
23441         (_mm_srli_pi32): Use __builtin_ia32_psrldi.
23442         (_mm_srli_si64): Use __builtin_ia32_psrlqi. Cast __m to __v1di type.
23443         (_mm_srai_pi16): Use __builtin_ia32_psrawi.
23444         (_mm_srai_pi32): Use __builtin_ia32_psradi.
23445         * config/i386/i386.md (UNSPEC_NOP): Remove unspec definition.
23446         * doc/extend.texi (X86 Built-in Functions) [__builtin_ia32_psll?,
23447         __builtin_ia32_psrl?, __builtin_ia32_psra?, __builtin_ia32_psll?i,
23448         __builtin_ia32_psrl?i, __builtin_ia32_psra?i]: Add new builtins.
23449
23450 2008-03-07  Joseph Myers  <joseph@codesourcery.com>
23451
23452         * doc/include/texinfo.tex: Update to version 2008-03-07.10.
23453
23454 2008-03-07  Peter Bergner  <bergner@vnet.ibm.com>
23455
23456         PR target/35373
23457         * config/rs6000/rs6000.c (rs6000_legitimize_address): Don't generate
23458         reg+const addressing for Altivec modes.  Don't generate reg+reg
23459         addressing for TFmode or TDmode quantities.
23460
23461 2008-03-07  Paolo Bonzini  <bonzini@gnu.org>
23462
23463         * c-common.c (vector_types_convertible_p): Call langhook
23464         instead of comptypes.
23465
23466 2008-03-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
23467
23468         PR tree-opt/35402
23469         * tree-ssa-ccp.c (get_symbol_constant_value): Handle
23470         integral and scalar float variables which have a
23471         NULL DECL_INITIAL.
23472
23473 2008-03-06  Nathan Froyd  <froydnj@codesourcery.com>
23474
23475         * dwarf2out.c (dwarf2out_frame_debug_expr): Consult the
23476         dwarf_register_span hook when emitting unwind information for
23477         register-to-memory saves.
23478         * config/rs6000/rs6000.c (spe_synthesize_frame): Delete.
23479         (rs6000_frame_related): Remove call to spe_synthesize_frame.
23480
23481 2008-03-06  Jakub Jelinek  <jakub@redhat.com>
23482
23483         * gimplify.c (goa_lhs_expr_p): Allow different ADDR_EXPR nodes
23484         for the same VAR_DECL.
23485
23486 2008-03-06  Tom Tromey  <tromey@redhat.com>
23487
23488         * treelang: Delete.
23489         * doc/standards.texi (Standards): Don't mention treelang.
23490         * doc/invoke.texi (Overall Options): Don't mention treelang.
23491         * doc/install.texi (Prerequisites): Don't mention bison or
23492         treelang.
23493         (Configuration): Don't mention treelang.
23494         (Building): Likewise.
23495         * doc/frontends.texi (G++ and GCC): Don't mention treelang.
23496
23497 2008-03-06  Paolo Bonzini  <bonzini@gnu.org>
23498
23499         * simplify-rtx.c (simplify_subreg): Remove useless shifts from
23500         word-extractions out of a multi-word object.
23501
23502 2008-03-06  Richard Guenther  <rguenther@suse.de>
23503
23504         * tree.def (BIT_FIELD_REF): Constrain result type and its precision.
23505         * tree-cfg.c (verify_expr): Verify BIT_FIELD_REF constraints on
23506         result type and precision.
23507         * expr.c (get_inner_reference): Set unsignedp based on the result
23508         type of BIT_FIELD_REF.
23509         * tree.h (BIT_FIELD_REF_UNSIGNED): Remove.
23510         * tree-sra.c (instantiate_element): Do not set BIT_FIELD_REF_UNSIGNED.
23511         (try_instantiate_multiple_fields): Likewise.  Use the correct type
23512         for BIT_FIELD_REF.
23513         (sra_build_assignment): Likewise.
23514         (sra_build_elt_assignment): Likewise.
23515         (sra_explode_bitfield_assignment): Likewise.
23516         * print-tree.c (print_node): Do not check BIT_FIELD_REF_UNSIGNED.
23517         * tree-vect-transform.c (vect_create_epilog_for_reduction): Do not
23518         set BIT_FIELD_REF_UNSIGNED.
23519         (vectorizable_load): Likewise.
23520
23521 2008-03-06  Andreas Krebbel  <krebbel1@de.ibm.com>
23522
23523         * cse.c (cse_extended_basic_block): Invalidate artificial defs
23524         at bb start.
23525
23526 2008-03-06  Richard Guenther  <rguenther@suse.de>
23527
23528         * alias.c (struct alias_set_entry): Move has_zero_child field
23529         to pack with alias_set.
23530
23531 2008-03-05  H.J. Lu  <hongjiu.lu@intel.com>
23532
23533         * config/i386/i386-modes.def: Use 4 byte alignment on DI for
23534         32bit host.
23535
23536 2008-03-05  Ian Lance Taylor  <iant@google.com>
23537
23538         * alias.h (alias_set_type): Change from HOST_WIDE_INT to int.
23539
23540 2008-03-05  Kenneth Zadeck  <zadeck@naturalbridge.com>
23541
23542         * fwprop.c (update_df): Support width and offset parameters of
23543         df_ref_create.
23544         * ra-conflict.c (mark_reg_store, clear_reg_in_live,
23545         global_conflicts): Change DF_REF_EXTRACT to either
23546         DF_REF_ZERO_EXTRACT or DF_REF_SIGN_EXTRACT.  Change
23547         DF_REF_STRICT_LOWER_PART to DF_REF_STRICT_LOW_PART.
23548         * df-scan.c (df_ref_record, df_defs_record,
23549         df_ref_create_structure, df_def_record_1, df_uses_record,
23550         df_get_conditional_uses, df_get_call_refs, df_insn_refs_collect,
23551         df_bb_refs_collect, df_entry_block_defs_collect,
23552         df_exit_block_uses_collect): Support new width and offset fields.
23553         (ref_extract_pool): New storage pool.
23554         (df_free_ref): New function.
23555         (df_reg_chain_unlink, df_free_collection_rec,
23556         df_sort_and_compress_refs): Call df_free_ref.
23557         (df_ref_equal_p, df_ref_compare): Compare offset and width fields
23558         of df_ref_extract.
23559         (df_ref_create_structure): Allocate df_ref_extract if offset and
23560         width fields are used.
23561         (df_def_record_1): Get offset and width from ZERO_EXTRACT.
23562         (df_uses_record): Get offset and width from ZERO_EXTRACT
23563         and SIGN_EXTRACT.
23564         * global.c (build_insn_chain): Change DF_REF_EXTRACT to either
23565         DF_REF_ZERO_EXTRACT or DF_REF_SIGN_EXTRACT.  Change
23566         DF_REF_STRICT_LOWER_PART to DF_REF_STRICT_LOW_PART.
23567         * df.h (df_ref_flags): Change DF_REF_EXTRACT to either
23568         DF_REF_ZERO_EXTRACT or DF_REF_SIGN_EXTRACT.  Change
23569         DF_REF_STRICT_LOWER_PART to DF_REF_STRICT_LOW_PART.
23570         (df_ref_extract): New structure.
23571         (DF_REF_WIDTH, DF_REF_OFFSET): New macros.
23572         (df_ref_create): Add width and offset parameters.
23573
23574 2008-03-05  Richard Guenther  <rguenther@suse.de>
23575
23576         * tree-ssa-structalias.c (get_constraint_for_component_ref):
23577         Use ranges_overlap_p.
23578         (offset_overlaps_with_access): Rename
23579         to ranges_overlap_p and move ...
23580         * tree-flow-inline.h (ranges_overlap_p): ... here.
23581
23582         * tree.h (get_inner_reference, handled_component_p): Update
23583         comments.
23584
23585         * tree.h (record_component_aliases, get_alias_set,
23586         alias_sets_conflict_p, alias_sets_must_conflict_p,
23587         objects_must_conflict_p): Move declarations ...
23588         * alias.h (record_component_aliases, get_alias_set,
23589         alias_sets_conflict_p, alias_sets_must_conflict_p,
23590         objects_must_conflict_p): ... here.
23591         Include coretypes.h.
23592         * Makefile.in (ALIAS_H): Add coretypes.h dependency.
23593
23594 2008-03-05  Aldy Hernandez  <aldyh@redhat.com>
23595
23596         * cfg.c: Include tree-flow.h.
23597         (remove_edge_raw): Call redirect_edge_var_map_clear.
23598         (redirect_edge_succ_nodup): Call redirect_edge_var_map_dup.
23599         * tree-flow-inline.h (redirect_edge_var_map_def): New.
23600         (redirect_edge_var_map_result): New.
23601         * tree-cfgcleanup.c (remove_forwarder_block_with_phi): Replace
23602         PENDING_STMT use with redirect_edge_var_map_*.
23603         * tree-ssa.c (edge_var_maps): New definition.
23604         (redirect_edge_var_map_add): New.
23605         (redirect_edge_var_map_clear): New.
23606         (redirect_edge_var_map_dup): New.
23607         (redirect_edge_var_map_vector): New.
23608         (redirect_edge_var_map_destroy): New.
23609         (ssa_redirect_edge): Replace PENDING_STMT use with
23610         redirect_edge_var_map_*.
23611         (flush_pending_stmts): Same.
23612         (delete_tree_ssa): Destroy edge var map.
23613         * tree-flow.h (struct _edge_var_map): New.
23614         Define edge_var_map vector type.
23615         Declare redirect_edge_var_map_* prototypes.
23616         * Makefile.in (cfg.o): Depend on TREE_FLOW_H.
23617         * tree-cfg.c (reinstall_phi_args): Replace
23618         PENDING_STMT use with redirect_edge_var_map_*.
23619
23620 2008-03-05  Richard Guenther  <rguenther@suse.de>
23621
23622         PR tree-optimization/35472
23623         * tree-ssa-dse.c (dse_optimize_stmt): Do not delete a store
23624         whose single use_stmt has a overlapping set of loaded and
23625         stored symbols as that use_stmt might be a noop assignment then.
23626
23627 2008-03-05  Joel Sherrill <joel.sherrill@oarcorp.com>
23628
23629         * gthr-rtems.h: Implement __gthread_mutex_destroy.
23630
23631 2008-03-05  Richard Guenther  <rguenther@suse.de>
23632
23633         PR c++/35336
23634         * tree.def (BIT_FIELD_REF): Document that operands 1 and 2
23635         should be constants.
23636         * tree-cfg.c (verify_expr): Verify it.
23637         * fold-const.c (fold_truthop): Remove code generating
23638         BIT_FIELD_REFs of structure bases.
23639         (fold_binary): Likewise.
23640         (fold_ternary): Position and size of BIT_FIELD_REFs are
23641         always host integers.
23642         (make_bit_field_ref): Remove.
23643         (optimize_bit_field_compare): Remove.
23644         (all_ones_mask_p): Remove.
23645
23646 2008-03-05  Gabor Loki  <loki@gcc.gnu.org>
23647
23648         PR gcc/33009
23649         * rtl-factoring.c (clear_regs_live_in_seq): Fix backward steps.
23650         (split_block_and_df_analyze): New. Split basic block and rebuild
23651         dataflow.
23652         (block_label_after): Use SPLIT_BLOCK_AND_DF_ANALYZE instead of
23653         SPLIT_BLOCK.
23654         (split_pattern_seq): Likewise.
23655         (erase_matching_seqs): Likewise.
23656         (split_pattern_seq): Skip return insn in case of REG_NORETURN note.
23657
23658 2008-03-04  Geoff Keating  <geoffk@apple.com>
23659
23660         * fold-const.c (tree_single_nonnegative_warnv_p): Fix mixed
23661         declaration and code.
23662         (tree_invalid_nonnegative_warnv_p): Likewise.
23663
23664 2008-03-05  Serge Belyshev  <belyshev@depni.sinp.msu.ru>
23665
23666         * doc/install.texi (Testing): Correct quoting for the RUNTESTFLAGS
23667         examples.  Truncate option-names then causing overfull hbox.
23668
23669 2008-03-04  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
23670
23671         PR target/35222
23672         * configure.ac (CONFIG_SJLJ_EXCEPTIONS): Force SJLJ exceptions
23673         on hpux10.
23674         * configure: Rebuilt.
23675
23676 2008-03-04  Rafael Espíndola  <espindola@google.com>
23677
23678         * fold-const.c (tree_simple_nonnegative_warnv_p): New.
23679         (tree_unary_nonnegative_warnv_p): New.
23680         (tree_binary_nonnegative_warnv_p): New.
23681         (tree_single_nonnegative_warnv_p): New.
23682         (tree_invalid_nonnegative_warnv_p): New.
23683         (tree_expr_nonnegative_warnv_p): Redefine in term of the new functions.
23684
23685 2008-03-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23686
23687         PR 28322
23688         * opts.c (handle_option): Postpone 'unknown option' errors only for
23689         warning options.
23690
23691 2008-03-04  H.J. Lu  <hongjiu.lu@intel.com>
23692
23693         PR target/35453
23694         * config/i386/smmintrin.h (SIDD_XXX): Renamed to ...
23695         (_SIDD_XXX): This.
23696
23697 2008-03-04  Rafael Espíndola  <espindola@google.com>
23698
23699         * fold-const.c (tree_unary_nonzero_warnv_p): New.
23700         (tree_binary_nonzero_warnv_p): New.
23701         (tree_single_nonzero_warnv_p): New.
23702         (tree_expr_nonzero_warnv_p): Redefine using the new functions.
23703
23704 2008-03-04  Uros Bizjak  <ubizjak@gmail.com>
23705
23706         PR middle-end/35456
23707         * fold-const.c (fold_cond_expr_with_comparison): Prevent
23708         transformations for modes that have signed zeros.
23709         * ifcvt.c (noce_try_abs): Ditto.
23710
23711 2008-03-04  Joseph Myers  <joseph@codesourcery.com>
23712
23713         * config/i386/i386.c (override_options): Force
23714         -maccumulate-outgoing-args on if TARGET_STACK_PROBE.
23715
23716 2008-03-04  Jan Hubicka  <jh@suse.cz>
23717
23718         PR c++/35262
23719         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Fix typo
23720         in last commit.
23721
23722 2008-03-04  Danny Smith  <dannysmith@users.sourceforge.net>
23723
23724         * config/i386/i386.md (allocate_stack_worker_32): Use  __chkstk
23725         label to probe the stack.
23726
23727 2008-03-04  Danny Smith  <dannysmith@users.sourceforge.net>
23728
23729         * gthr-win32.h [__GTHREAD_HIDE_WIN32API]
23730         (__gthr_win32_mutex_destroy): Declare.
23731         [__GTHREAD_HIDE_WIN32API] (__gthread_mutex_destroy): Use
23732         __gthr_win32_mutex_destroy.
23733         * config/i386/gthr-win32.c  (__gthr_win32_mutex_destroy): Define.
23734
23735 2008-03-03  Jan Hubicka  <jh@suse.cz>
23736
23737         PR c++/35262
23738         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Be more
23739         aggressive on inlining cold calls.
23740
23741 2008-03-03  Richard Guenther  <rguenther@suse.de>
23742
23743         * tree-ssa-sccvn.c (visit_reference_op_store): Do not insert
23744         struct copies into the expression table.
23745         (simplify_unary_expression): Handle VIEW_CONVERT_EXPR.
23746         (try_to_simplify): Likewise.
23747         * fold-const.c (fold_unary): Fold VIEW_CONVERT_EXPR of
23748         integral and pointer arguments which do not change the
23749         precision to NOP_EXPRs.
23750         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Adjust
23751         VIEW_CONVERT_EXPR case.
23752
23753 2008-03-02  Sebastian Pop  <sebastian.pop@amd.com>
23754
23755         * tree-scalar-evolution.c (instantiate_parameters_1): An SSA_NAME
23756         defined in a loop at depth 0 is invariant.
23757         * tree-chrec.c (evolution_function_is_invariant_rec_p): Ditto.
23758         * tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Should never
23759         be called at loop depth 0.
23760
23761 2008-03-02  Jakub Jelinek  <jakub@redhat.com>
23762
23763         PR driver/35420
23764         * gcc.c (process_command): Update copyright notice dates.
23765         * gcov.c (print_version): Likewise.
23766         * gcov-dump.c (print_version): Likewise.
23767         * mips-tfile.c (main): Likewise.
23768         * mips-tdump.c (main): Likewise.
23769
23770 2008-03-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23771
23772         PR 24924
23773         * c-common.c (flag_permissive): Delete.
23774         (constant_expression_warnings): Check flags first.
23775         (constant_expression_error): New.
23776         * c-common.h (flag_permissive): Delete.
23777         (constant_expression_error): Declare.
23778         * flags.h (flag_permissive): Declare. Update description.
23779         * diagnostic.c (pedwarn): Update.
23780         (permerror): New.
23781         * diagnostic.h: (pedantic_error_kind): Rename as pedantic_warning_kind.
23782         (permissive_error_kind): New.
23783         * toplev.c (flag_permissive): Define. Update description.
23784         * toplev.h (permissive_error_kind): Declare.
23785         * c-errors.c (pedwarn_c99): Use pedantic_warning_kind.
23786         (pedwarn_c90): Use pedantic_warning_kind.
23787         * c-opts.c (c_common_post_options): flag_permissive does not affect
23788         flag_pedantic_errors.
23789
23790 2008-03-02  Joseph Myers  <joseph@codesourcery.com>
23791
23792         * libgcc2.c (__addvSI3, __addvsi3, __addvDI3, __subvSI3,
23793         __subvsi3, __subvDI3, __negvSI2, __negvsi2, __negvDI2, __absvSI2,
23794         __absvsi2, __absvDI2): Use unsigned arithmetic.
23795
23796 2008-03-02  Andi Kleen  <ak@suse.de>
23797             Richard Guenther  <rguenther@suse.de>
23798
23799         * struct-equiv.c: Remove file.
23800         * cfg_cleanup.c (condjump_equiv_p): Remove.
23801         * Makefile.in (OBJS-common): Remove struct-equiv.o.
23802         (struct-equiv.o): Remove rule.
23803         * basic-block.h (struct_equiv_checkpoint, STRUCT_EQUIV_*,
23804         insns_match_p, struct_equiv_block_eq, struct_equiv_init,
23805         rtx_equiv_p, condjump_equiv_p): Remove prototypes.
23806
23807 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
23808
23809         * ifcvt.c (noce_process_if_block): Try to handle only the then
23810         block if the else block exists but isn't suitable.
23811
23812 2008-03-01  Janne Blomqvist  <jb@gcc.gnu.org>
23813
23814         PR gcc/35063
23815         * gthr-posix.h (__gthread_mutex_destroy): Remove extra declarations.
23816         * gthr-posix95.h (__gthread_mutex_destroy): Likewise. Note this fixes
23817         regression from previous patch.
23818
23819 2008-03-01  Janne Blomqvist  <jb@gcc.gnu.org>
23820
23821         PR gcc/35063
23822         * gthr.h: Add __gthread_mutex_destroy as a function that must be
23823         implemented.
23824         * gthr-vxworks.h (__gthread_mutex_destroy): Null implementation.
23825         * gthr-single.h (__gthread_mutex_destroy): Likewise.
23826         * gthr-rtems.h (__gthread_mutex_destroy): Likewise.
23827         * gthr-mipssde.h (__gthread_mutex_destroy): Likewise.
23828         * gthr-nks.h (__gthread_mutex_destroy): Likewise.
23829         * gthr-solaris.h (__gthread_mutex_destroy): Call mutex_destroy.
23830         * gthr-win32.h (__GTHREAD_MUTEX_DESTROY_FUNCTION): Remove.
23831         (__gthread_mutex_destroy_function): Rename to
23832         __gthread_mutex_destroy.
23833         * gthr-dce.h (__gthread_mutex_destroy): Call
23834         pthread_mutex_destroy.
23835         * gthr-tpf.h (__gthread_mutex_destroy): Likewise.
23836         * gthr-posix.h (__gthread_mutex_destroy): Likewise.
23837         * gthr-posix95.h (__gthread_mutex_destroy): Likewise.
23838
23839 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
23840
23841         * df-scan.c (df_ref_chain_change_bb): Simplify.
23842         (df_insn_change_bb): Add new_bb argument.  Simplify.  Call
23843         set_block_for_insn if there's any change.
23844         * df.h ((df_insn_change_bb): Fix prototype.
23845         * cfgrtl.c (update_bb_for_insn_chain): Pass bb to
23846         df_insn_change_bb, don't call set_block_for_insn.
23847         * emit-rtl.c (reorder_insns): Likewise.
23848         * haifa-sched.c (move_insn): Likewise.
23849
23850 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
23851
23852         * rtlanal.c (loc_mentioned_in_p): Test XVECEXPs correctly.
23853
23854 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
23855
23856         * tree-flow-inline.h (next_readonly_imm_use): Return
23857         NULL_USE_OPERAND_P after the end.
23858
23859 2008-03-01  Richard Guenther  <rguenther@suse.de>
23860
23861         PR tree-optimization/35411
23862         * tree-sra.c (sra_build_assignment): Split conversion to
23863         final type to a separate statement if we are not assigning
23864         to a register.
23865
23866 2008-02-29  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
23867
23868         * fold-const.c (fold_convertible_p): Correct the logic to follow
23869         that in fold_convert().
23870
23871 2008-02-29  Douglas Gregor  <doug.gregor@gmail.com>
23872
23873         PR c++/35315
23874         * tree-inline.c (build_duplicate_type): When we make a
23875         duplicate type, make it unique in the canonical types system.
23876
23877 2008-02-29  Tom Tromey  <tromey@redhat.com>
23878
23879         * toplev.c (input_file_stack, input_file_stack_tick, fs_p,
23880         input_file_stack_history, input_file_stack_restored): Remove.
23881         (push_srcloc, pop_srcloc, restore_input_file_stack): Likewise.
23882         * input.h (struct file_stack): Remove.
23883         (push_srcloc, pop_srcloc, restore_input_file_stack): Likewise.
23884         (input_file_stack, input_file_stack_tick, INPUT_FILE_STACK_BITS):
23885         Likewise.
23886         * diagnostic.h (struct diagnostic_context) <last_module>: Change
23887         type.
23888         (diagnostic_last_module_changed): Add 'map' argument.
23889         (diagnostic_set_last_function): Likewise.
23890         * diagnostic.c (undiagnostic_report_current_module): Iterate using
23891         line map, not input_file_stack.
23892         * c-lex.c (fe_file_change): Don't use push_srcloc or pop_srcloc.
23893
23894 2008-02-29  Paul Brook  <paul@codesourcery.com>
23895
23896         * config/arm/arm.md (arm_addsi3): Add r/k/n alternative.
23897
23898 2008-02-29  Paul Brook  <paul@codesourcery.com>
23899
23900         * config/arm/ieee754-df.S (muldf3): Use RET macros.
23901
23902 2008-02-29  Richard Guenther  <rguenther@suse.de>
23903
23904         * tree-ssa-pre.c (get_sccvn_value): Create missing VNs via
23905         vn_lookup_or_add.
23906         * tree-ssa-sccnv.c (visit_reference_op_store): Use the rhs
23907         value for comparing for a store match.
23908         (simplify_unary_expression): Do nothing for SSA_NAMEs.
23909         (try_to_simplify): Do not do a full-blown reference lookup.
23910
23911 2008-02-29  Kaz Kojima  <kkojima@gcc.gnu.org>
23912
23913         * config/sh/sh.c (sh_scalar_mode_supported_p): New function.
23914         (TARGET_SCALAR_MODE_SUPPORTED_P): Define.
23915
23916         * config/sh/sh.h (OVERRIDE_OPTIONS): Don't warn for profiling.
23917
23918 2008-02-29  Sebastian Pop  <sebastian.pop@amd.com>
23919
23920         * tree-loop-linear.c (try_interchange_loops): Compare memory access
23921         strides against cache sizes.
23922
23923 2008-02-29  Kaz Kojima  <kkojima@gcc.gnu.org>
23924
23925         * config/sh/sh.c (sh_secondary_reload): Handle loading a float
23926         constant to fpul.
23927
23928 2008-02-28  Richard Sandiford  <rsandifo@nildram.co.uk>
23929
23930         * simplify-rtx.c (simplify_unary_operation_1): Extend the handling
23931         of SUBREG_PROMOTED_VAR_P to cope with cases where the extended value
23932         is smaller than the original promoted value.
23933         (simplify_subreg): If OP is a SUBREG, try to preserve its
23934         SUBREG_PROMOTED_VAR_P information.
23935
23936 2008-02-28  Steven Bosscher  <stevenb.gcc@gmail.com>
23937
23938         * tree-ssa-sccvn (vn_ssa_aux_obstack): New obstack.
23939         (VN_INFO_GET): Allocate new objects on the obstack.
23940         (init_scc_vn): Initialize the obstack.  Use XDELETE instead of free
23941         for rpo_numbers_temp, for consistency.
23942         (free_scc_vn): Free the obstack.
23943
23944 2008-02-28  Sebastian Pop  <sebastian.pop@amd.com>
23945
23946         * doc/invoke.texi: Document -ftree-loop-distribution.
23947         * tree-loop-distribution.c: New.
23948         * tree-pass.h (pass_loop_distribution): New.
23949         * graphds.h (struct graph): Add htab_t indices.
23950         * timevar.def (TV_TREE_LOOP_DISTRIBUTION): New.
23951         * tree-vectorizer.c (rename_variables_in_loop): Extern.
23952         (slpeel_tree_duplicate_loop_to_edge_cfg): Init PENDING_STMT to NULL.
23953         * tree-vectorizer.h (tree_duplicate_loop_on_edge): Declared.
23954         * tree-data-ref.c (debug_data_dependence_relations): New.
23955         (dump_data_dependence_relation): Also print data references.
23956         (free_data_ref): Extern.
23957         (same_access_functions): Moved...
23958         (find_vertex_for_stmt): Renamed rdg_vertex_for_stmt.
23959         (dump_rdg_vertex, debug_rdg_vertex, dump_rdg_component,
23960         debug_rdg_component, dump_rdg, debug_rdg, dot_rdg_1, dot_rdg,
23961         struct rdg_vertex_info, rdg_vertex_for_stmt): New.
23962         (create_rdg_edge_for_ddr, create_rdg_vertices): Cleaned up.
23963         (stmts_from_loop): Skip LABEL_EXPR.
23964         (hash_stmt_vertex_info, eq_stmt_vertex_info, hash_stmt_vertex_del):
23965         New.
23966         (build_rdg): Initialize rdg->indices htab.
23967         (free_rdg, stores_from_loop, ref_base_address,
23968         rdg_defs_used_in_other_loops_p, have_similar_memory_accesses,
23969         have_similar_memory_accesses_1, ref_base_address_1,
23970         remove_similar_memory_refs): New.
23971         * tree-data-ref.h: Depend on tree-chrec.h.
23972         (debug_data_dependence_relations, free_data_ref): Declared.
23973         (same_access_functions): ... here.
23974         (ddr_is_anti_dependent, ddrs_have_anti_deps, ddr_dependence_level):
23975         New.
23976         (struct rdg_vertex): Add has_mem_write and has_mem_reads.
23977         (RDGV_HAS_MEM_WRITE, RDGV_HAS_MEM_READS, RDG_STMT,
23978         RDG_MEM_WRITE_STMT, RDG_MEM_READS_STMT): New.
23979         (dump_rdg_vertex, debug_rdg_vertex, dump_rdg_component,
23980         debug_rdg_component, dump_rdg, debug_rdg, dot_rdg,
23981         rdg_vertex_for_stmt): Declared.
23982         (struct rdg_edge): Add level.
23983         (RDGE_LEVEL): New.
23984         (free_rdg, stores_from_loop, remove_similar_memory_refs,
23985         rdg_defs_used_in_other_loops_p, have_similar_memory_accesses):
23986         Declared.
23987         (rdg_has_similar_memory_accesses): New.
23988         * tree-vect-analyze.c: Remove unused static decls.
23989         * lambda.h (dependence_level): New.
23990         * common.opt (ftree-loop-distribution): New.
23991         * tree-flow.h (mark_virtual_ops_in_bb,
23992         slpeel_tree_duplicate_loop_to_edge_cfg,
23993         rename_variables_in_loop): Declared.
23994         * Makefile.in (TREE_DATA_REF_H): Depend on tree-chrec.h.
23995         (OBJS-common): Add tree-loop-distribution.o.
23996         (tree-loop-distribution.o): New rule.
23997         * tree-cfg.c (mark_virtual_ops_in_bb): New.
23998         (mark_virtual_ops_in_region): Use mark_virtual_ops_in_bb.
23999         * passes.c (init_optimization_passes): Schedule pass_loop_distribution.
24000
24001 2008-02-28  Joseph Myers  <joseph@codesourcery.com>
24002
24003         PR target/33963
24004         * tree.c (handle_dll_attribute): Disallow TYPE_DECLs for types
24005         other than structures and unions.
24006
24007 2008-02-28  Richard Guenther  <rguenther@suse.de>
24008
24009         Revert:
24010         2008-02-26  Richard Guenther  <rguenther@suse.de>
24011
24012         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
24013         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
24014         (lookup_decl_from_uid): Declare.
24015         (remove_decl_from_map): Likewise.
24016         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
24017         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
24018         (decl_for_uid_map): New global hashtable mapping DECL_UID
24019         to the decl tree.
24020         (init_ttree): Allocate it.
24021         (insert_decl_to_uid_decl_map): New helper function.
24022         (make_node_stat): Insert new decls into the map.
24023         (copy_node_stat): Likewise.
24024         (lookup_decl_from_uid): New function.
24025         (remove_decl_from_map): Likewise.
24026         (print_decl_for_uid_map_statistics): New helper.
24027         (dump_tree_statistics): Call it.
24028
24029         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
24030         (referenced_var_iterator): Adjust.
24031         (FOR_EACH_REFERENCED_VAR): Adjust.
24032         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
24033         (num_referenced_vars): Adjust.
24034         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
24035         (first_referenced_var): Remove.
24036         (end_referenced_vars_p): Likewise.
24037         (next_referenced_var): Likewise.
24038         (referenced_var_iterator_set): New helper function.
24039         * tree-dfa.c (referenced_var_lookup): Adjust.
24040         (referenced_var_check_and_insert): Likewise.
24041         (remove_referenced_var): Likewise.
24042         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
24043         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
24044         (verify_call_clobbering): Likewise.
24045         (verify_memory_partitions): Likewise.
24046         (init_tree_ssa): Allocate bitmap instead of hashtable for
24047         referenced_vars.
24048         (delete_tree_ssa): Adjust.
24049         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
24050         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
24051         (compute_tag_properties): Likewise.
24052         (set_initial_properties): Likewise.
24053         (find_partition_for): Likewise.
24054         (update_reference_counts): Likewise.
24055         (dump_may_aliases_for): Likewise.
24056         * tree-ssa-operands.c (add_virtual_operand): Likewise.
24057         (add_call_clobber_ops): Likewise.
24058         (add_call_read_ops): Likewise.
24059         (get_asm_expr_operands): Likewise.
24060         * tree-into-ssa.c (dump_decl_set): Likewise.
24061         (update_ssa): Likewise.
24062         * tree-sra.c (scan_function): Likewise.
24063         (decide_instantiations): Likewise.
24064         (scalarize_parms): Likewise.
24065         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
24066         (dsa_named_for): Likewise.
24067         * tree-ssa-structalias.c (update_alias_info): Likewise.
24068         (merge_smts_into): Likewise.
24069
24070 2008-02-27  David Daney  <ddaney@avtrex.com>
24071
24072         PR target/34409
24073         * config/mips/iris.h (MIPS_DEBUGGING_INFO): Define.
24074         * config/mips/openbsd.h (MIPS_DEBUGGING_INFO): Same.
24075         * config/mips/sde.h (MIPS_DEBUGGING_INFO): Remove undef.
24076         * config/mips/vxworks.h (MIPS_DEBUGGING_INFO): Same.
24077         * config/mips/mips.h (MIPS_DEBUGGING_INFO): Remove define.
24078
24079 2008-02-27  Uros Bizjak  <ubizjak@gmail.com>
24080
24081         PR target/25477
24082         * config/darwin-ppc-ldouble-patch.def (BUILT_IN_NANL): Add.
24083         (BUILT_IN_NEXTTOWARD): Remove.
24084         (BUILT_IN_NEXTTOWARDF): Ditto.
24085         * config/darwin.c (darwin_patch_builtin): Use ACONCAT instead of
24086         alloca/strcpy/strcat.  Remove commented-out code.  Fix whitespace.
24087
24088 2008-02-27  Tom Tromey  <tromey@redhat.com>
24089
24090         * tree-dump.c (dequeue_and_dump) <FUNCTION_DECL>: Check
24091         DECL_SAVED_TREE, not DECL_LANG_SPECIFIC, when dumping body.
24092
24093 2008-02-27  Jan Beulich  <jbeulich@novell.com>
24094
24095         * c-decl.c (merge_decls): Use DECL_USER_ALIGN() on olddecl to
24096         update the respective field on newdecl.
24097
24098 2008-02-27  Revital Eres  <eres@il.ibm.com>
24099
24100         PR rtl-optimization/34999
24101         * bb-reorder.c (add_labels_and_missing_jumps): Do not handle
24102         crossing edges that ends with a call insn.
24103         (fix_up_fall_thru_edges): Handle crossing edges that ends with a
24104         call insn and clear the EDGE_CROSSING flag of the crossing edge
24105         when fixing fallthru edges.
24106
24107 2008-02-27  Richard Guenther  <rguenther@suse.de>
24108
24109         PR middle-end/35390
24110         * fold-const.c (fold_unary): Return the correct argument,
24111         converted to the result type.
24112
24113 2008-02-27  Richard Guenther  <rguenther@suse.de>
24114
24115         PR middle-end/34971
24116         * expr.c (expand_expr_real_1): Assert on rotates that operate
24117         on partial modes.
24118         * fold-const.c (fold_binary): Use the types precision, not the
24119         bitsize of the mode if folding rotate expressions.  Build rotates
24120         only for full modes.
24121
24122 2008-02-27  Jakub Jelinek  <jakub@redhat.com>
24123
24124         * c-ppoutput.c (scan_translation_unit): Handle CPP_PRAGMA
24125         and CPP_PRAGMA_EOL.
24126         * c-pragma.c (pragma_ns_name): New typedef.
24127         (registered_pp_pragmas): New variable.
24128         (c_pp_lookup_pragma): New function.
24129         (c_register_pragma_1): If flag_preprocess_only, do nothing
24130         for non-expanded pragmas, for expanded ones push pragma's
24131         namespace and name into registered_pp_pragmas vector.
24132         (c_invoke_pragma_handler): Register OpenMP pragmas even when
24133         flag_preprocess_only, don't register GCC pch_preprocess
24134         pragma if flag_preprocess_only.
24135         * c-opts.c (c_common_init): Call init_pragma even if
24136         flag_preprocess_only.
24137         * c-pragma.c (c_pp_lookup_pragma): New prototype.
24138         * config/darwin.h (DARWIN_REGISTER_TARGET_PRAGMAS): Don't call
24139         cpp_register_pragma if flag_preprocess_only.
24140
24141 2008-02-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
24142
24143         PR c/28800
24144         * c-parser.c (c_parser_translation_unit): Warn for empty
24145         translation unit, not empty source file.
24146
24147 2008-02-26  Paul Brook  <paul@codesourcery.com>
24148
24149         * config/arm/arm.c (thumb_set_frame_pointer): Ensure SP is first
24150         operand for Thumb-2.
24151         * config/arm/arm.h (reg_class): Add CORE_REGS.
24152         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Ditto.
24153         (BASE_REG_CLASS): Use CORE_REGS.
24154         (PREFERRED_RELOAD_CLASS): Add STACK_REG.
24155         (REGNO_MODE_OK_FOR_REG_BASE_P): Use REGNO_MODE_OK_FOR_BASE_P.
24156         (REGNO_OK_FOR_INDEX_P): Exclude SP.
24157         (ARM_REG_OK_FOR_INDEX_P): Always define.  Use
24158         ARM_REGNO_OK_FOR_INDEX_P.
24159         (ARM_PRINT_OPERAND_ADDRESS): Swap operands for [reg, sp].
24160         * config/arm/arm.md (arm_addsi3, thumb1_addsi3, arm_subsi3_insn,
24161         arm_movsi_insn, thumb1_movsi_insni, stack_tie): Add "k" alternatives.
24162         (ldm/stm peepholes): Ditto.
24163         * config/arm/thumb2.md (thumb2_movdi): Add "k" alternatives.
24164         * config/arm/vfp.md (arm_movsi_vfp, thumb2_movsi_vfp): Ditto.
24165         * config/arm/iwmmxt.md (iwmmxt_movsi_insn): Ditto.
24166         * config/arm/constraints.md: Enable "k" constraint on ARM.
24167
24168 2008-02-27  Ben Elliston  <bje@au.ibm.com>
24169
24170         * config/rs6000/rs6000.c: Annotate cache line size field in all
24171         instances of struct processor_costs.
24172
24173 2008-02-26  David Edelsohn  <edelsohn@gnu.org>
24174
24175         * dbgcnt.def (cfg_cleanup, cprop1, cprop2, dce_fast, dce_ud, dse1,
24176         dse2, gcse, if_conversion, if_after_combine, if_after_reload,
24177         jump_bypass): New counters.
24178         * cfgcleanup.c (cleanup_cfg): Add dbg_cnt.
24179         * dce.c (gate_ud_dce): Same.
24180         (gate_fast_dce): Same.
24181         * dse.c (gate_dse1): New function.
24182         (gate_dse2): New function.
24183         (gate_dse): Merge results of new gate functions.
24184         * gcse.c (gcse_main): Bracket cprop1 and cprop2 with dbg_cnt.
24185         (gate_handle_jump_bypass): Add dbg_cnt.
24186         (gate_handle_gcse): Add dbg_cnt.
24187         * ifcvt.c (gate_handle_if_conversion): Same.
24188         (gate_handle_if_after_combine): Same.
24189         (gate_handle_if_after_reload): Same.
24190         * Makefile.in: Add DBGCNT_H to cfgcleanup.o and ifcvt.o.
24191
24192 2008-02-26  Edmar Wienskoski  <edmar@freescale.com>
24193
24194         * config/rs6000/rs6000.c (processor_costs): Update e300 cache
24195         line sizes.
24196         * doc/invoke.texi: Add e300c2 and e300c3 to list of cpus.
24197
24198 2008-02-26  Jason Merrill  <jason@redhat.com>
24199
24200         PR c++/35315
24201         * attribs.c (decl_attributes): Leave ATTR_FLAG_TYPE_IN_PLACE
24202         alone if it's the naming decl for the type's main variant.
24203
24204 2008-02-26  Tom Tromey  <tromey@redhat.com>
24205
24206         * system.h (USE_MAPPED_LOCATION): Poison.
24207         * Makefile.in (GTFILES): Put CPP_ID_DATA_H first.
24208         * tree-cfg.c (make_cond_expr_edges): Remove old location code.
24209         (make_goto_expr_edges): Likewise.
24210         (remove_bb): Likewise.
24211         (execute_warn_function_return): Likewise.
24212         * basic-block.h (struct edge_def) <goto_locus>: Change type to
24213         location_t.
24214         * c-common.c (fname_decl): Remove old location code.
24215         * tree-vect-transform.c (vect_finish_stmt_generation): Remove old
24216         location code.
24217         * rtl.h (ASM_OPERANDS_SOURCE_LOCATION): Remove old-location
24218         variant.
24219         (ASM_INPUT_SOURCE_LOCATION): Likewise.
24220         (gen_rtx_ASM_INPUT): Likewise.
24221         (gen_rtx_ASM_INPUT_loc): Likewise.
24222         (get_rtx_asm_OPERANDS): Remove.
24223         * cfglayout.c (insn_locators_alloc): Remove old location code.
24224         (set_curr_insn_source_location): Likewise.
24225         (curr_insn_locator): Likewise.
24226         * print-tree.c (print_node): Remove old location code.
24227         * tree-mudflap.c (mf_varname_tree): Remove old location code.
24228         (mf_file_function_line_tree): Remove test of USE_MAPPED_LOCATION.
24229         * cfgexpand.c (expand_gimple_cond_expr): Don't use
24230         location_from_locus.
24231         (construct_exit_block): Remove old location code.
24232         * emit-rtl.c (force_next_line_note): Remove old location code.
24233         * profile.c (branch_prob): Remove old location code.
24234         * tree-vectorizer.h (LOC, UNKNOWN_LOC, EXPR_LOC, LOC_FILE,
24235         LOC_LINE): Remove old-location variants.
24236         * langhooks.c (lhd_print_error_function): Remove old location
24237         code.
24238         * configure, config.in: Rebuilt.
24239         * configure.ac (--enable-mapped-location): Remove.
24240         * c-decl.c (c_init_decl_processing): Remove old location code.
24241         (finish_function): Likewise.
24242         * recog.c (decode_asm_operands): Remove old location code.
24243         * c-pch.c (c_common_read_pch): Remove old location code.
24244         * rtl.def (ASM_INPUT, ASM_OPERANDS): Remove old location
24245         variants.
24246         * gimple-low.c (lower_function_body): Remove old location code.
24247         * toplev.c (unknown_location): Remove.
24248         (push_srcloc): Remove old-location variant.
24249         (process_options): Remove old location code.
24250         (lang_dependent_init): Likewise.
24251         * input.h (UNKNOWN_LOCATION): Move definition.
24252         (location_t): Undeprecate.
24253         (source_locus): Remove.
24254         (location_from_locus): Remove.
24255         (struct location_s): Remove.
24256         Remove all old-location code.
24257         (input_line, input_filename): Remove.
24258         * final.c (final_scan_insn): Remove old location code.
24259         * diagnostic.c (diagnostic_build_prefix): Remove
24260         USE_MAPPED_LOCATION test.
24261         * tree.h (gimple_stmt) <locus>: Now a location_t.
24262         (tree_exp) <locus>: Likewise.
24263         (DECL_IS_BUILTIN): Remove old-location variant.
24264         (annotate_with_file_line, annotate_with_locus): Likewise.
24265         (expr_locus, set_expr_locus): Update.
24266         * tree.c (build1_stat): Remove old location code.
24267         (last_annotated_node): Remove.
24268         (annotate_with_file_line): Remove old-location variant.
24269         (annotate_with_locus): Likewise.
24270         (expr_location): Remove old location code.
24271         (set_expr_location): Likewise.
24272         (expr_has_location): Likewise.
24273         (expr_locus): Likewise.
24274         (set_expr_locus): Likewise.
24275         (expr_filename): Don't use location_from_locus.
24276         (expr_lineno): Likewise.
24277         * rtl-error.c (location_for_asm): Remove old location code.
24278         * c-lex.c (cb_line_change): Remove old location code.
24279         (fe_file_change): Likewise.
24280         (cb_def_pragma): Likewise.
24281         (c_lex_with_flags): Likewise.
24282         * gengtype.c (do_typedef): Don't special-case location types.
24283         (define_location_structures): Remove.
24284         (main): Don't call define_location_structures.
24285         * tree-pretty-print.c (dump_implicit_edges): Remove old location
24286         code.
24287
24288 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24289
24290         PR 26264
24291         * builtins.def (BUILT_IN_STDARG_START): Remove.
24292         * builtins.c (expand_builtin): Remove BUILT_IN_STDARG_START.
24293         * tree-stdarg.c (execute_optimize_stdarg): Likewise.
24294         * tree-inline.c (inline_forbidden_p_1): Likewise.
24295
24296 2008-02-26  Richard Guenther  <rguenther@suse.de>
24297
24298         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
24299         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
24300         (lookup_decl_from_uid): Declare.
24301         (remove_decl_from_map): Likewise.
24302         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
24303         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
24304         (decl_for_uid_map): New global hashtable mapping DECL_UID
24305         to the decl tree.
24306         (init_ttree): Allocate it.
24307         (insert_decl_to_uid_decl_map): New helper function.
24308         (make_node_stat): Insert new decls into the map.
24309         (copy_node_stat): Likewise.
24310         (lookup_decl_from_uid): New function.
24311         (remove_decl_from_map): Likewise.
24312         (print_decl_for_uid_map_statistics): New helper.
24313         (dump_tree_statistics): Call it.
24314
24315         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
24316         (referenced_var_iterator): Adjust.
24317         (FOR_EACH_REFERENCED_VAR): Adjust.
24318         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
24319         (num_referenced_vars): Adjust.
24320         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
24321         (first_referenced_var): Remove.
24322         (end_referenced_vars_p): Likewise.
24323         (next_referenced_var): Likewise.
24324         (referenced_var_iterator_set): New helper function.
24325         * tree-dfa.c (referenced_var_lookup): Adjust.
24326         (referenced_var_check_and_insert): Likewise.
24327         (remove_referenced_var): Likewise.
24328         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
24329         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
24330         (verify_call_clobbering): Likewise.
24331         (verify_memory_partitions): Likewise.
24332         (init_tree_ssa): Allocate bitmap instead of hashtable for
24333         referenced_vars.
24334         (delete_tree_ssa): Adjust.
24335         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
24336         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
24337         (compute_tag_properties): Likewise.
24338         (set_initial_properties): Likewise.
24339         (find_partition_for): Likewise.
24340         (update_reference_counts): Likewise.
24341         (dump_may_aliases_for): Likewise.
24342         * tree-ssa-operands.c (add_virtual_operand): Likewise.
24343         (add_call_clobber_ops): Likewise.
24344         (add_call_read_ops): Likewise.
24345         (get_asm_expr_operands): Likewise.
24346         * tree-into-ssa.c (dump_decl_set): Likewise.
24347         (update_ssa): Likewise.
24348         * tree-sra.c (scan_function): Likewise.
24349         (decide_instantiations): Likewise.
24350         (scalarize_parms): Likewise.
24351         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
24352         (dsa_named_for): Likewise.
24353         * tree-ssa-structalias.c (update_alias_info): Likewise.
24354         (merge_smts_into): Likewise.
24355
24356 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24357
24358         PR 34351
24359         * doc/invoke.texi (-Wall): Add -Wvolatile-register-var.
24360         * c-opts.c (c_common_handle_option): Wall enables
24361         Wvolatile-register-var.
24362         * common.opt: Move Wvolatile-register-var to...
24363         * c.opt: ...here.
24364
24365 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24366
24367         * common.opt (Wlarger-than=): New.
24368         * doc/invoke.texi (Warning Options): Replace -Wlarger-than- with
24369         -Wlarger-than=.
24370         * opts.c (common_handle_option): Handle -Wlarger-than=.
24371         * optc-gen.awk: Likewise.
24372         * opth-gen.awk: Likewise.
24373         * stor-layout.c (layout_decl): Use -Wlarger-than= for warning.
24374         * tree-optimize.c (tree_rest_of_compilation): Likewise.
24375
24376 2008-02-26  Manuel Lopez-Ibanez <manu@gcc.gnu.org>
24377
24378         * c-common.c (match_case_to_enum_1): Add appropriate
24379         OPT_W* parameter to warning.
24380         (c_do_switch_warnings): Likewise.
24381         * c-typeck.c (warning_init): Add one more parameter following
24382         'warning' function.
24383         (push_init_level): Update call to warning_init.
24384         (pop_init_level): Likewise.
24385         (add_pending_init): Likewise.
24386         (output_init_element: Likewise.
24387
24388 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24389
24390         PR 28322
24391         * toplev.c (toplev_main): If there are warnings or error, print
24392         errors for ignored options.
24393         * opts.c (ignored_options): New static variable.
24394         (postpone_unknown_option_error): New.
24395         (print_ignored_options): New.
24396         (handle_option): Postpone errors for unknown -Wno-* options.
24397         * opts.h (print_ignored_options): Declare.
24398
24399 2008-02-25  Richard Sandiford  <rsandifo@nildram.co.uk>
24400
24401         * config/mips/mips.md (loadgp_blockage, blockage): Change type
24402         to "ghost".
24403
24404 2008-02-25  Richard Guenther  <rguenther@suse.de>
24405
24406         Revert:
24407         2008-02-25  Richard Guenther  <rguenther@suse.de>
24408
24409         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
24410         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
24411         (lookup_decl_from_uid): Declare.
24412         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
24413         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
24414         (decl_for_uid_map): New global hashtable mapping DECL_UID
24415         to the decl tree.
24416         (init_ttree): Allocate it.
24417         (insert_decl_to_uid_decl_map): New helper function.
24418         (make_node_stat): Insert new decls into the map.
24419         (copy_node_stat): Likewise.
24420         (lookup_decl_from_uid): New function.
24421         (print_decl_for_uid_map_statistics): New helper.
24422         (dump_tree_statistics): Call it.
24423
24424         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
24425         (referenced_var_iterator): Adjust.
24426         (FOR_EACH_REFERENCED_VAR): Adjust.
24427         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
24428         (num_referenced_vars): Adjust.
24429         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
24430         (first_referenced_var): Remove.
24431         (end_referenced_vars_p): Likewise.
24432         (next_referenced_var): Likewise.
24433         (referenced_var_iterator_set): New helper function.
24434         * tree-dfa.c (referenced_var_lookup): Adjust.
24435         (referenced_var_check_and_insert): Likewise.
24436         (remove_referenced_var): Likewise.
24437         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
24438         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
24439         (verify_call_clobbering): Likewise.
24440         (verify_memory_partitions): Likewise.
24441         (init_tree_ssa): Allocate bitmap instead of hashtable for
24442         referenced_vars.
24443         (delete_tree_ssa): Adjust.
24444         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
24445         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
24446         (compute_tag_properties): Likewise.
24447         (set_initial_properties): Likewise.
24448         (find_partition_for): Likewise.
24449         (update_reference_counts): Likewise.
24450         (dump_may_aliases_for): Likewise.
24451         * tree-ssa-operands.c (add_virtual_operand): Likewise.
24452         (add_call_clobber_ops): Likewise.
24453         (add_call_read_ops): Likewise.
24454         (get_asm_expr_operands): Likewise.
24455         * tree-into-ssa.c (dump_decl_set): Likewise.
24456         (update_ssa): Likewise.
24457         * tree-sra.c (scan_function): Likewise.
24458         (decide_instantiations): Likewise.
24459         (scalarize_parms): Likewise.
24460         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
24461         (dsa_named_for): Likewise.
24462         * tree-ssa-structalias.c (update_alias_info): Likewise.
24463         (merge_smts_into): Likewise.
24464
24465 2008-02-25  Janne Blomqvist  <jb@gcc.gnu.org>
24466
24467         PR fortran/29549
24468         * doc/invoke.texi (-fcx-limited-range): Document new option.
24469         * toplev.c (process_options): Handle -fcx-fortran-rules.
24470         * common.opt: Add documentation for -fcx-fortran-rules.
24471
24472 2008-02-25  Janne Blomqvist  <jb@gcc.gnu.org>
24473
24474         PR c/35162
24475         * doc/invoke.texi (-fcx-limited-range): Correct to be in line with
24476         actual behaviour and C99.
24477
24478 2008-02-26  Ben Elliston  <bje@au.ibm.com>
24479
24480         * config/rs6000/rs6000.h (ASM_CPU_POWER5_SPEC): Define.
24481         (ASM_CPU_POWER6_SPEC): Likewise.
24482         (ASM_CPU_SPEC): Pass %(asm_cpu_power5) for -mcpu=power5.
24483         Likewise, pass %(asm_cpu_power6) for -mcpu=power6.
24484         (EXTRA_SPECS): Add asm_cpu_power5, asm_cpu_power6 spec strings.
24485
24486 2008-02-25  Richard Guenther  <rguenther@suse.de>
24487
24488         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
24489         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
24490         (lookup_decl_from_uid): Declare.
24491         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
24492         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
24493         (decl_for_uid_map): New global hashtable mapping DECL_UID
24494         to the decl tree.
24495         (init_ttree): Allocate it.
24496         (insert_decl_to_uid_decl_map): New helper function.
24497         (make_node_stat): Insert new decls into the map.
24498         (copy_node_stat): Likewise.
24499         (lookup_decl_from_uid): New function.
24500         (print_decl_for_uid_map_statistics): New helper.
24501         (dump_tree_statistics): Call it.
24502
24503         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
24504         (referenced_var_iterator): Adjust.
24505         (FOR_EACH_REFERENCED_VAR): Adjust.
24506         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
24507         (num_referenced_vars): Adjust.
24508         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
24509         (first_referenced_var): Remove.
24510         (end_referenced_vars_p): Likewise.
24511         (next_referenced_var): Likewise.
24512         (referenced_var_iterator_set): New helper function.
24513         * tree-dfa.c (referenced_var_lookup): Adjust.
24514         (referenced_var_check_and_insert): Likewise.
24515         (remove_referenced_var): Likewise.
24516         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
24517         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
24518         (verify_call_clobbering): Likewise.
24519         (verify_memory_partitions): Likewise.
24520         (init_tree_ssa): Allocate bitmap instead of hashtable for
24521         referenced_vars.
24522         (delete_tree_ssa): Adjust.
24523         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
24524         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
24525         (compute_tag_properties): Likewise.
24526         (set_initial_properties): Likewise.
24527         (find_partition_for): Likewise.
24528         (update_reference_counts): Likewise.
24529         (dump_may_aliases_for): Likewise.
24530         * tree-ssa-operands.c (add_virtual_operand): Likewise.
24531         (add_call_clobber_ops): Likewise.
24532         (add_call_read_ops): Likewise.
24533         (get_asm_expr_operands): Likewise.
24534         * tree-into-ssa.c (dump_decl_set): Likewise.
24535         (update_ssa): Likewise.
24536         * tree-sra.c (scan_function): Likewise.
24537         (decide_instantiations): Likewise.
24538         (scalarize_parms): Likewise.
24539         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
24540         (dsa_named_for): Likewise.
24541         * tree-ssa-structalias.c (update_alias_info): Likewise.
24542         (merge_smts_into): Likewise.
24543
24544 2008-02-25  Andreas Krebbel  <krebbel1@de.ibm.com>
24545
24546         PR target/35258
24547         * cse.c (cse_insn): Avoid creation of overlapping MEMs.
24548         * alias.c (nonoverlapping_memrefs_p): Export for use in other modules.
24549         * alias.h (nonoverlapping_memrefs_p): Likewise.
24550
24551 2008-02-25  Jan Beulich  <jbeulich@novell.com>
24552
24553         * Makefile.in: Also prefix uses of crt0.o and mcrt0.o with $(T).
24554         * config/i386/netware-libgcc.exp: Add __bswap?i2,
24555         __emultls_get_address, __emultls_register_common,
24556         __floatundi?f, and _Unwind_GetIPInfo.
24557         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration):
24558         Sync with config/i386/winnt.c:gen_stdcall_or_fastcall_suffix().
24559         (gen_regparm_prefix): Likewise.
24560         (i386_nlm_encode_section_info): Sync with
24561         config/i386/winnt.c:i386_pe_encode_section_info().
24562         (i386_nlm_maybe_mangle_decl_assembler_name): New.
24563         i386_nlm_mangle_decl_assembler_name): New.
24564         (netware_override_options): New.
24565         * config/i386/netware.h (netware_override_options): Declare.
24566         (OVERRIDE_OPTIONS): Re-define to netware_override_options.
24567         (i386_nlm_mangle_decl_assembler_name): Declare.
24568         (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Define.
24569
24570 2008-02-25  Ben Elliston  <bje@au.ibm.com>
24571
24572         PR other/32948
24573         * c-decl.c (grokdeclarator): Remove unused local variables
24574         `typedef_type' and `type_as_written'.
24575         * bb-reorder.c
24576         (find_rarely_executed_basic_blocks_and_crossing_edges): Remove
24577         unused local variable `has_hot_blocks'.
24578         (fix_crossing_conditional_branches): Remove unused local variable
24579         `prev_bb'.
24580
24581 2008-02-25  Uros Bizjak  <ubizjak@gmail.com>
24582
24583         PR middle-end/19984
24584         * builtins.def (BUILT_IN_NAN): Define as c99 builtin
24585         using DEF_C99_BUILTIN.
24586         (BUILT_IN_NANF): Ditto.
24587         (BUILT_IN_NANL): Ditto.
24588
24589 2008-02-25  Ayal Zaks  <zaks@il.ibm.com>
24590             Revital Eres  <eres@il.ibm.com>
24591
24592         * modulo-sched.c (calculate_must_precede_follow): Address TODO
24593         regarding the order of two dependent insns in the same row.
24594
24595 2008-02-25  Eric Botcazou  <ebotcazou@adacore.com>
24596
24597         * stor-layout.c (layout_decl): Do not bump the alignment of a
24598         bit-field to more than byte alignment if it is packed.
24599
24600 2008-02-24  David Edelsohn  <edelsohn@gnu.org>
24601
24602         * config/rs6000/rs6000.c (processor_costs): Add cache costs for
24603         e300c2 and e300c3.
24604
24605 2008-02-24  Diego Novillo  <dnovillo@google.com>
24606
24607         http://gcc.gnu.org/ml/gcc-patches/2008-02/msg01094.html
24608
24609         PR 33738
24610         * tree-vrp.c (vrp_evaluate_conditional): With
24611         -Wtype-limits, emit a warning when comparing against a
24612         constant outside the natural range of OP0's type.
24613         * c.opt (Wtype-limits): Move ...
24614         * common.opt (Wtype-limits): ... here.
24615
24616 2008-02-24  Edmar Wienskoski  <edmar@freescale.com>
24617
24618         * config.gcc (powerpc*-*-*): Add new cores e300c2 and e300c3.
24619         * config/rs6000/e300c2c3.md: New file.
24620         * config/rs6000/rs6000.c (processor_costs): Add new costs for
24621         e300c2 and e300c3.
24622         (rs6000_override_options): Add e300c2 and e300c3 cases to
24623         processor_target_table. Do not allow usage of Altivec or Spe
24624         with e300 cores. Initialize rs6000_cost for e300c2 and e300c3.
24625         (rs6000_issue_rate): Set issue rate for e300c2 and e300c3.
24626         * config/rs6000/rs6000.h (processor_type): Add
24627         PROCESSOR_PPCE300C2 and PROCESSOR_PPCE300C3.
24628         (ASM_CPU_SPEC): Add e300c2 and e300c3.
24629         * config/rs6000/rs6000.md (define_attr "cpu"): Add ppce300c2
24630         and ppce300c3. Include e300c2c3.md.
24631
24632 2008-02-23  David Edelsohn  <edelsohn@gnu.org>
24633
24634         * config/rs6000/rs6000.h (CONSTANT_ALIGNMENT): Use STRICT_ALIGNMENT
24635         instead of TARGET_STRICT_ALIGN.
24636
24637 2008-02-23  Joseph Myers  <joseph@codesourcery.com>
24638
24639         * explow.c (memory_address): Assert that the generated address is
24640         valid.
24641
24642 2008-02-23  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
24643
24644         PR target/25477
24645         * config/darwin-protos.h: Add darwin_patch_builtins prototype.
24646         * config/darwin-ppc-ldouble-patch.def: New file.
24647         * config/rs6000/darwin.h (SUBTARGET_INIT_BUILTINS): New macro.
24648         * config/rs6000/rs6000.c (rs6000_init_builtins): Call
24649         SUBTARGET_INIT_BUILTINS if defined.
24650         * config/darwin.c (darwin_patch_builtin, darwin_patch_builtins):
24651         New functions.
24652
24653 2008-02-23  Andrew Pinski  <andrew_pinski@playstation.sony.com>
24654
24655         PR rtl-opt/33512
24656         * simplify-rtx.c (simplify_binary_operation_1): Add simplification
24657         of (and X (ior (not X) Y) and (and (ior (not X) Y) X).
24658
24659 2008-02-23  Andrew Pinski  <andrew_pinski@playstation.sony.com>
24660
24661         PR pch/35027
24662         * c-pch.c (c_common_valid_pch): Make the "too short to be a PCH
24663         file" warning condtional on -Winvalid-PCH.
24664
24665 2008-02-23  Daniel Jacobowitz  <dan@codesourcery.com>
24666
24667         * expmed.c (extract_bit_field): Always use adjust_address for MEM.
24668
24669 2008-02-23  Uros Bizjak  <ubizjak@gmail.com>
24670
24671         PR target/22076
24672         PR target/34256
24673         * config/i386/mmx.md (*mov<mode>_internal_rex64): Use "!y" to
24674         prevent reload from using MMX registers.
24675         (*mov<mode>_internal): Ditto.
24676         (*movv2sf_internal_rex64): Ditto.
24677         (*movv2sf_internal): Ditto.
24678
24679 2008-02-23  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
24680
24681         PR documentation/31569
24682         * doc/install.texi2html: Use makeinfo --no-number-sections.
24683
24684 2008-02-22  Nathan Froyd  <froydnj@codesourcery.com>
24685
24686         * config/rs6000/rs6000.c (rs6000_legitimize_address): Check to
24687         ensure that we can address an entire entity > 8 bytes.  Don't
24688         generate reg+reg addressing for such data.
24689
24690 2008-02-22  Nathan Froyd  <froydnj@codesourcery.com>
24691
24692         * config/rs6000/rs6000.h (CONSTANT_ALIGNMENT): Don't overalign
24693         strings when optimizing for size, unless the target cares about
24694         alignment.
24695
24696 2008-02-22  Tom Tromey  <tromey@redhat.com>
24697
24698         * regclass.c (current_pass): Remove declaration.
24699
24700 2008-02-22  Anatoly Sokolov <aesok@post.ru>
24701
24702         * config/avr/libgcc.S (__RAMPZ__): Define.
24703         (__do_copy_data): Add for devices with 128KB code memory.
24704
24705 2008-02-22  Nathan Froyd  <froydnj@codesourcery.com>
24706
24707         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
24708         Use spe_abi.
24709         * config/rs6000/eabispe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Likewise.
24710
24711 2008-02-22  Hans-Peter Nilsson  <hp@axis.com>
24712
24713         * config/cris/cris.h (REG_CLASS_FROM_LETTER): Recognize 'b' for
24714         GENNONACR_REGS.
24715
24716 2008-02-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
24717
24718         PR c/19999
24719         * c-typeck.c (build_binary_op): Warn about floating point
24720         comparisons if FLOAT_TYPE_P, not only for REAL_TYPE.
24721
24722 2008-02-21  Janis Johnson  <janis187@us.ibm.com>
24723
24724         PR target/34526
24725         * config/rs6000/rs6000.c (rs6000_altivec_abi): Clarify comment.
24726         (rs6000_explicit_options): Split abi into spe_abi and altivec_abi,
24727         add vrsave.
24728         (rs6000_override_options): Set altivec_abi as default, not override,
24729         for 64-bit GNU/Linux; for 32-bit GNU/Linux default to altivec_abi for
24730         TARGET_ALTIVEC; default to TARGET_ALTIVEC_VRSAVE when AltiVec ABI
24731         is used; use new member spe_abi.
24732         (rs6000_handle_option): Set rs6000_explicit_options.vrsave; use
24733         spe_abi and altivec_abi.
24734
24735 2008-02-22  Tomas Bily  <tbily@suse.cz>
24736
24737         * tree-vectorizer.c (vect_is_simple_reduction): Fix comment typo.
24738
24739 2008-02-21  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
24740
24741         PR bootstrap/35273
24742         * config.build (build_file_translate): Set to `CMD //c' only if
24743         it works.
24744         * Makefile.in (build_file_translate): Improve comment.
24745
24746 2008-02-21  Jan Hubicka  <jh@suse.cz>
24747
24748         * predict.def (PRED_TREE_OPCODE_POSITIVE, PRED_TREE_OPCODE_NONEQUAL,
24749         PRED_TREE_OPCODE_POSITIVE, PRED_TREE_OPCODE_NONEQUAL, PRED_CALL,
24750         PRED_TREE_EARLY_RETURN, PRED_NULL_RETURN): Update.
24751
24752 2008-02-21  Michael Matz  <matz@suse.de>
24753
24754         PR target/35264
24755         * config/i386/i386.c (ix86_expand_branch): Add missing breaks.
24756
24757 2008-02-21  Uros Bizjak  <ubizjak@gmail.com>
24758
24759         * config/i386/i386.md (mov<mode>cc): Macroize expander from movsfcc,
24760         movdfcc and movxfcc using X87MODEF mode iterator and SSE_FLOAT_MODE_P
24761         as insn constraint.
24762         * config/i386/sse.md (<sse>_movup<ssemodesuffixf2c>): Macroize insn
24763         from sse_movups adn sse2_movupd using SSEMODEF2P mode iterator and
24764         SSE_VEC_FLOAT_MODE_P as insn constraint.
24765         (<sse>_movmskp<ssemodesuffixf2c>): Ditto from similar patterns.
24766         (sse4a_movnt<mode>): Macroize insn from sse4a_movntsf and
24767         sse4a_movntdf using MODEF mode iterator.
24768         (sse4a_vmmovnt<mode>): Macroize insn form sse4a_vmmovntv2df and
24769         sse4a_vmmovntv4sf using SSEMODEF2P mode iterator.
24770         (sse4_1_blendp<ssemodesuffixf2c>): Ditto from similar patterns.
24771         (sse4_1_blendvp<ssemodesuffixf2c>): Ditto.
24772         (sse4_1_dpp<ssemodesuffixf2c>): Ditto.
24773         (sse4_1_roundp<ssemodesuffixf2c>): Ditto.
24774         (sse4_1_rounds<ssemodesuffixf2c>): Ditto.
24775
24776 2008-02-21  Richard Guenther  <rguenther@suse.de>
24777
24778         * tree.def (PAREN_EXPR): New tree code.
24779         * fold-const.c (fold_unary): Remove PAREN_EXPR around constants
24780         and PAREN_EXPR.
24781         * tree-pretty-print.c (dump_generic_node): Handle PAREN_EXPR.
24782         * expr.c (expand_expr_real_1): Likewise.
24783         * tree-inline.c (estimate_num_insns_1): Likewise.
24784         * tree-complex.c (expand_complex_move): Likewise.
24785         * tree-vectorizer.c (vect_is_simple_use): Treat PAREN_EXPR (x)
24786         as plain x.
24787
24788 2008-02-20  Kaz Kojima  <kkojima@gcc.gnu.org>
24789
24790         PR target/35225
24791         * config/sh/sh.c (find_barrier): Don't go past 'from' argument.
24792
24793 2008-02-20  Kaz Kojima  <kkojima@gcc.gnu.org>
24794
24795         PR target/35190
24796         * config/sh/sh.md (jump_compact): Disable for crossing jumps.
24797
24798         * config/sh/sh.c (find_barrier): Don't go past
24799         NOTE_INSN_SWITCH_TEXT_SECTIONS note.
24800
24801 2008-02-20  DJ Delorie  <dj@redhat.com>
24802
24803         * config/h8300/h8300.md (insv): Force source operand to be a register.
24804
24805         * config/h8300/h8300.c (h8300_expand_epilogue): Emit return insn
24806         as a jump, not as a plain insn.
24807
24808 2008-02-20  Seongbae Park <seongbae.park@gmail.com>
24809
24810         * doc/invoke.texi (Warning Options): Add new option
24811         -Wframe-larger-than=.
24812         (-Wframe-larger-than): Document.
24813
24814         * flags.h (warn_frame_larger_than, frame_larger_than_size):
24815         Add declarations for new option variables.
24816
24817         * final.c (final_start_function): Check the frame size
24818         before emission and issue a Wframe-larger-than warning.
24819
24820         * opts.c (warn_frame_larger_than, frame_larger_than_size):
24821         Add definitions for new option variables.
24822         (common_handle_option): Handle new option OPT_Wframe_larger_than_.
24823
24824         * common.opt (Wframe-larger-than=): New option.
24825
24826 2008-02-20  Uros Bizjak  <ubizjak@gmail.com>
24827
24828         * config/i386/sse.md (<sse>_vmmul<mode>3): Fix typo in asm template.
24829         (<sse>_div<mode>3): Ditto.
24830         (<sse>_vmdiv<mode>3): Ditto.
24831         (<sse>_vmsqrt<mode>2): Ditto.
24832         (*smax<mode>3): Ditto.
24833         (sse5_frcz<mode>2): Ditto.
24834         (sse5_vmfrcz<mode>2): Ditto.  Use TARGET_SSE5 instead of TARGET_ROUND
24835         as insn constraint.
24836
24837 2008-02-20  Richard Guenther  <rguenther@suse.de>
24838
24839         PR middle-end/35265
24840         * builtins.c (validate_arg): If we want an INTEGER_TYPE,
24841         be happy with INTEGRAL_TYPE_P.
24842
24843 2008-02-20  Richard Guenther  <rguenther@suse.de>
24844
24845         * fold-const.c (split_tree): Associate floatig-point expressions
24846         if flag_associative_math is set.
24847
24848 2008-02-20  Richard Guenther  <rguenther@suse.de>
24849
24850         * tree.h (fold_real_zero_addition_p): Declare.
24851         * fold-const.c (fold_real_zero_addition_p): Export.
24852         * tree-ssa-reassoc.c (eliminate_using_constants): Also handle
24853         floating-point operations with zero and one.
24854
24855 2008-02-20  Paolo Bonzini  <bonzini@gnu.org>
24856
24857         * doc/install.texi: Correct references to CFLAGS, replacing them
24858         with BOOT_CFLAGS.  Document flags used during bootstrap for
24859         target libraries.
24860
24861 2008-02-20  Uros Bizjak  <ubizjak@gmail.com>
24862
24863         * config/i386/i386.h (SSE_VEC_FLOAT_MODE_P): New define.
24864         * config/i386/i386.md (*sse_setcc<mode>): Macroize from *sse_setccsf
24865         and *sse_setccdf using MODEF mode iterator and SSE_FLOAT_MODE_P as
24866         insn constraint.
24867         (smin<mode>3): Ditto from similar patterns.
24868         (smax<mode>3): Ditto.
24869         (*ieee_smin<mode>3): Ditto.
24870         (*ieee_smax<mode>3): Ditto.
24871         * config/i386/sse.md (sse): New mode attribute.
24872         (mov<mode>): Macroize expander from movv4sf and movv2df using
24873         SSEMODEF2P mode iterator.
24874         (<sse>_movnt<mode>): Ditto from similar patterns. Use
24875         SSE_VEC_FLOAT_MODE_P as insn constraint.
24876         (storent<mode>): Ditto.
24877         (storent<mode>): Macroize expander from storentsf and storentdf using
24878         MODEF mode iterator.
24879         (neg<mode>2): Macroize from negv4sf2 and negv2df2 using SSEMODEF2P
24880         mode iterator and SSE_VEC_FLOAT_MODE_P as insn constraint.
24881         (abs<mode>2): Ditto from similar patterns.
24882         (add<mode>3, *add<mode>3, <sse>_vmadd<mode>3): Ditto.
24883         (sub<mode>3, *sub<mode>3, <sse>_vmsub<mode>3): Ditto.
24884         (<sse>_div<mode>3, <sse>_vmdiv<mode>3): Ditto.
24885         (<sse>_vmsqrt<mode>2): Ditto.
24886         (smin<mode>3, *smin<mode>3_finite, *smin<mode>3)
24887         (<sse>_vmsmin<mode>3, *ieee_smin<mode>3): Ditto.
24888         (smax<mode>3, *smax<mode>3_finite, *smax<mode>3)
24889         (<sse>_vmsmax<mode>3, *ieee_smax<mode>3): Ditto.
24890         (<sse>_maskcmp<mode>3): Macroize from sse_maskcmpv4sf3,
24891         sse_maskcmpsf3, sse2_maskcmpv2df3 and sse2_maskcmpdf3 using SSEMODEF4
24892         mode iterator. Use SSE_FLOAT_MODE_P with SSE_VEC_FLOAT_MODE_P as
24893         insn constraint.
24894         (<sse>_comi): Macroize from sse_comi and sse2_comi using MODEF mode
24895         iterator and SSE_FLOAT_MODE_P as insn constraint.
24896         (<sse>_ucomi): Ditto from similar patterns.
24897         (<sse>_vmmaskcmp<mode>3): Macroize from sse_vmmaskcmpv4sf3 and
24898         sse2_vmmaskcmpv2df3 using SSEMODEF2P mode iterator and
24899         SSE_VEC_FLOAT_MODE_P as insn constraint.
24900         (vcond<mode>): Ditto from similar patterns.
24901         (and<mode>3, *and<mode>3): Ditto.
24902         (<sse>_nand<mode>3): Ditto.
24903         (ior<mode>3, *ior<mode>3): Ditto.
24904         (xor<mode>3, *xor<mode>3): Ditto.
24905         (*and<mode>3): Macroize from *andsf3 and *anddf3 using MODEF mode
24906         iterator and SSE_FLOAT_MODE_P as insn constraint.
24907         (*nand<mode>3): Ditto from similar patterns.
24908         (*ior<mode>3): Ditto.
24909         (*xor<mode>3): Ditto.
24910
24911 2008-02-20  Ira Rosen  <irar@il.ibm.com>
24912
24913         * config/spu/spu.md (vec_unpacku_hi_v8hi, vec_unpacku_lo_v8hi,
24914         vec_unpacks_hi_v8hi, vec_unpacks_lo_v8hi, vec_unpacku_hi_v16qi,
24915         vec_unpacku_lo_v16qi, vec_unpacks_lo_v16qi): Implement.
24916
24917 2008-02-19  Jan Hubicka  <jh@suse.cz>
24918
24919         * predict.c (tree_bb_level_predictions): Remove variable next
24920         mistakely introduced by previous commit.
24921
24922 2008-02-19  Jan Hubicka  <jh@suse.cz>
24923
24924         * predict.c (predict_paths_leading_to): Rewrite.
24925         (predict_paths_for_bb): New.
24926         (tree_bb_level_predictions): Update call of predict_paths_leading_to.
24927
24928 2008-02-19  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
24929
24930         PR bootstrap/35218
24931         * Makefile.in (build_file_translate): New.
24932         (gcc-vers.texi): Use it for translating $(abs_srcdir).
24933         * config.build (build_file_translate): Set to `CMD //c' on MinGW.
24934         * configure.ac (build_file_translate): Substitute it.
24935         * configure: Regenerate.
24936
24937 2008-02-19  Jan Hubicka  <jh@suse.cz>
24938
24939         PR rtl-optimization/34408
24940         * see.c (see_def_extension_not_merged): Copy subreg so we don't have
24941         invalid sharing.
24942
24943 2008-02-19  Jan Hubicka  <jh@suse.cz>
24944
24945         PR middle-end/28779
24946         * tree-inline.c (estimate_num_insns_1): Fix counting of cost of
24947         call_expr.
24948
24949 2008-02-19  H.J. Lu  <hongjiu.lu@intel.com>
24950
24951         PR Ada/35186
24952         * config/i386/i386-modes.def: Revert the last DI alignment
24953         change until Ada people can look into it.
24954
24955 2008-02-19  Nick Clifton  <nickc@redhat.com>
24956
24957         * opts.c (print_specific_help): Fix typo in --help text.
24958
24959 2008-02-19  Jakub Jelinek  <jakub@redhat.com>
24960
24961         PR target/35239
24962         * config/i386/cpuid.h (__cpuid, __get_cpuid_max): Use special
24963         32-bit inline asm without asm alternatives for host GCC < 3.0.
24964
24965 2008-02-19  Richard Guenther  <rguenther@suse.de>
24966
24967         PR tree-optimization/34989
24968         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Re-structure.
24969         Allow propagation to INDIRECT_REF if we can simplify only.
24970
24971 2008-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24972
24973         * c-common.c (warn_for_collisions_1): Use appropriate option when
24974         warning.
24975
24976 2008-02-19  Nick Clifton  <nickc@redhat.com>
24977
24978         PR other/31349
24979         * opts.c (undocumented_msg): Leave blank unless checking is enabled.
24980         (handle_options): Fix indentation.
24981         (print_filtered_help): If no language-specific options were
24982         displayed tell the user how to list all the options supported by
24983         the language's front-end.
24984         (print_specific_help): Fix indentation and remove duplicate line.
24985         (common_handle_option): Handle the -v option.
24986         For --help enable the display of undocumented options if the -v
24987         switch has been included on the command line.
24988         For --help= check for overlaps in the arguments between the option
24989         classes and the language names and issue a warning when they
24990         cannot be disambiguated.
24991         * c.opt (v): Pass on to the common option handler.
24992
24993 2008-02-19  Revital Eres  <eres@il.ibm.com>
24994
24995         * modulo-sched.c (sms_schedule): Change dump message when
24996         create_ddg function fails.
24997         (try_scheduling_node_in_cycle): Rename row to cycle.
24998         (print_partial_schedule): Rename CYCLE to ROW.
24999
25000 2008-02-19  Christian Bruel  <christian.bruel@st.com>
25001             Zdenek Dvorak  <ook@ucw.cz>
25002
25003         * tree-ssa-loop-ivopts.c (may_be_unaligned_p): Check step alignment.
25004
25005 2008-02-19  Uros Bizjak  <ubizjak@gmail.com>
25006
25007         PR target/33555
25008         * config/i386/i386.md (*x86_movsicc_0_m1_se): New insn pattern.
25009         (*x86_movdicc_0_m1_se): Ditto.
25010
25011 2008-02-19  Uros Bizjak  <ubizjak@gmail.com>
25012
25013         * config/i386/sfp-machine.h (__gcc_CMPtype): New typedef.
25014         (CMPtype): Define as __gcc_CMPtype.
25015         * config/rs6000/sfp-machine.h (__gcc_CMPtype): New typedef.
25016         (CMPtype): Define as __gcc_CMPtype.
25017
25018 2008-02-19  Hans-Peter Nilsson  <hp@axis.com>
25019
25020         Support valgrind 3.3 for --enable-checking=valgrind.
25021         * system.h: Consolidate ENABLE_VALGRIND_CHECKING-dependent defines
25022         here.
25023         [!VALGRIND_MAKE_MEM_NOACCESS]: Define as VALGRIND_MAKE_NOACCESS.
25024         [!VALGRIND_MAKE_MEM_DEFINED]: Define as VALGRIND_MAKE_READABLE.
25025         [!VALGRIND_MAKE_MEM_UNDEFINED]: Define as VALGRIND_MAKE_WRITABLE.
25026         * ggc-common.c: Remove ENABLE_VALGRIND_CHECKING-dependent defines.
25027         Replace use of VALGRIND_MAKE_READABLE, VALGRIND_MAKE_WRITABLE, and
25028         VALGRIND_MAKE_NOACCESS with VALGRIND_MAKE_MEM_DEFINED,
25029         VALGRIND_MAKE_MEM_UNDEFINED, and VALGRIND_MAKE_MEM_NOACCESS
25030         respectively.
25031         * ggc-zone.c: Similar.
25032         * ggc-page.c: Similar.
25033
25034 2008-02-19  Paul Brook  <paul@codesourcery.com>
25035
25036         PR target/35071
25037         * config/arm/ieee754-df.S: Fix do_it typo.
25038         * config/arm/ieee754-sf.S: Fix do_it typo.
25039
25040 2008-02-18  H.J. Lu  <hongjiu.lu@intel.com>
25041
25042         PR target/35189
25043         * config/i386/i386.c (OPTION_MASK_ISA_MMX_SET): New.
25044         (OPTION_MASK_ISA_3DNOW_SET): Likewise.
25045         (OPTION_MASK_ISA_SSE_SET): Likewise.
25046         (OPTION_MASK_ISA_SSE2_SET): Likewise.
25047         (OPTION_MASK_ISA_SSE3_SET): Likewise.
25048         (OPTION_MASK_ISA_SSSE3_SET): Likewise.
25049         (OPTION_MASK_ISA_SSE4_1_SET): Likewise.
25050         (OPTION_MASK_ISA_SSE4_2_SET): Likewise.
25051         (OPTION_MASK_ISA_SSE4_SET): Likewise.
25052         (OPTION_MASK_ISA_SSE4A_SET): Likewise.
25053         (OPTION_MASK_ISA_SSE5_SET): Likewise.
25054         (OPTION_MASK_ISA_3DNOW_A_UNSET): Likewise.
25055         (OPTION_MASK_ISA_MMX_UNSET): Updated.
25056         (OPTION_MASK_ISA_3DNOW_UNSET): Updated.
25057         (OPTION_MASK_ISA_SSE_UNSET): Likewise.
25058         (OPTION_MASK_ISA_SSE3_UNSET): Likewise.
25059         (OPTION_MASK_ISA_SSSE3_UNSET): Likewise.
25060         (OPTION_MASK_ISA_SSE4_1_UNSET): Likewise.
25061         (OPTION_MASK_ISA_SSE4_2_UNSET): Likewise.
25062         (OPTION_MASK_ISA_SSE4A_UNSET): Likewise.
25063         (OPTION_MASK_ISA_SSE5_UNSET): Likewise.
25064         (OPTION_MASK_ISA_SSE4): Removed.
25065         (ix86_handle_option): Turn on bits in ix86_isa_flags and
25066         ix86_isa_flags_explicit with OPTION_MASK_ISA_XXX_SET for -mXXX.
25067         (override_options): Don't turn on implied SSE/MMX bits in
25068         ix86_isa_flags.
25069
25070 2008-02-18  H.J. Lu  <hongjiu.lu@intel.com>
25071
25072         * config/i386/i386-modes.def: Use 4 byte alignment on DI for
25073         32bit host.
25074
25075 2008-02-18  Joey Ye  <joey.ye@intel.com>
25076
25077         PR middle-end/34921
25078         * tree-nested.c (insert_field_into_struct): Set type alignment
25079         to field alignment if the former is less than the latter.
25080
25081 2008-02-18  Jakub Jelinek  <jakub@redhat.com>
25082
25083         * BASE-VER: Set to 4.4.0.
25084
25085 2008-02-17 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
25086
25087         * doc/c-tree.texi: Use @dots{} and @enddots{} where appropriate.
25088         * doc/cfg.texi: Likewise.
25089         * doc/extend.texi: Likewise.
25090         * doc/gty.texi: Likewise.
25091         * doc/invoke.texi: Likewise.
25092         * doc/loop.texi: Likewise.
25093         * doc/md.texi: Likewise.
25094         * doc/passes.texi: Likewise.
25095         * doc/rtl.texi: Likewise.
25096         * doc/sourcebuild.texi: Likewise.
25097         * doc/tm.texi: Likewise.
25098         * doc/tree-ssa.texi: Likewise.
25099
25100 2008-02-17  Richard Guenther  <rguenther@suse.de>
25101
25102         PR middle-end/35227
25103         * tree-complex.c (init_parameter_lattice_values): Handle parameters
25104         without default definition.
25105
25106 2008-02-17  Richard Guenther  <rguenther@suse.de>
25107
25108         PR tree-optimization/35231
25109         * tree-vrp.c (register_edge_assert_for): Do not assume A == 0
25110         if A | B != 1.
25111
25112 2008-02-17  Uros Bizjak  <ubizjak@gmail.com>
25113
25114         Revert:
25115         2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
25116         * config/i386/sfp-machine.h (CMPtype): Define as typedef using
25117         libgcc_cmp_return mode.
25118
25119 2008-02-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25120
25121         PR c/28368
25122         * doc/invoke.texi (-std): Clarify description of -std= and -ansi.
25123
25124 2008-02-16  Ralf Corsepius  <ralf.corsepius@rtems.org>
25125
25126         * config/m68k/t-rtems (M68K_MLIB_CPU): Add 5208, 5307, 5407, 5475
25127         multilibs.
25128
25129 2008-02-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
25130
25131         * doc/c-tree.texi: Use `@.' where appropriate.
25132         * doc/extend.texi: Likewise.
25133         * doc/install.texi: Likewise.
25134         * doc/invoke.texi: Likewise.
25135         * doc/loop.texi: Likewise.
25136         * doc/makefile.texi: Likewise.
25137         * doc/md.texi: Likewise.
25138         * doc/passes.texi: Likewise.
25139         * doc/standards.texi: Likewise.
25140         * doc/tm.texi: Likewise.
25141
25142 2008-02-15  Jakub Jelinek  <jakub@redhat.com>
25143
25144         PR middle-end/35196
25145         * omp-low.c (expand_omp_for_generic): Don't initialize fd->v
25146         in entry_bb.
25147         (expand_omp_for_static_nochunk): Initialize fd->v in seq_start_bb
25148         rather than in entry_bb.
25149
25150 2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
25151
25152         * config/i386/sfp-machine.h (CMPtype): Define as typedef using
25153         libgcc_cmp_return mode.
25154
25155 2008-02-15  Jakub Jelinek  <jakub@redhat.com>
25156
25157         PR middle-end/35130
25158         * tree-nested.c (convert_call_expr): Put FRAME.* vars into
25159         OMP_CLAUSE_SHARED rather than OMP_CLAUSE_FIRSTPRIVATE clause.
25160
25161 2008-02-15  Richard Guenther  <rguenther@suse.de>
25162             Zdenek Dvorak  <ook@ucw.cz>
25163
25164         PR tree-optimization/35164
25165         * tree-flow.h (stmt_references_abnormal_ssa_name): Declare.
25166         * tree-dfa.c (stmt_references_abnormal_ssa_name): New function.
25167         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
25168         Only propagate addresses which do not have abnormal SSA_NAMEs
25169         in their operands.
25170
25171 2008-02-15  Joseph Myers  <joseph@codesourcery.com>
25172
25173         PR target/35088
25174         * config/m68k/m68k.h (DWARF_CIE_DATA_ALIGNMENT): Define.
25175
25176 2008-02-15  Jan Hubicka  <jh@suse.cz>
25177
25178         PR middle-end/35149
25179         * ipa.c (cgraph_remove_unreachable_nodes): Clear local.inlinable flag.
25180
25181 2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
25182
25183         PR middle-end/34621
25184         * function.c (pad_to_arg_alignment): Remove test for STACK_BOUNDARY
25185         when calculating alignment_pad.
25186
25187 2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
25188
25189         * config/i386/i386.h (CLEAR_RATIO): Use MIN macro.
25190         (WIDEST_HARDWARE_FP_SIZE): Use LONG_DOUBLE_TYPE_SIZE define.
25191         * config/i386/darwin.h (PREFERRED_STACK_BOUNDARY): Use MAX macro
25192         and STACK_BOUNDARY define.
25193
25194 2008-02-14  Danny Smith  <dannysmith@users.sourceforge.net>
25195
25196         PR preprocessor/35061
25197         * c-pragma.c (handle_pragma_pop_macro): Check that
25198         pushed_macro_table has been allocated.
25199
25200 2008-02-14  Eric Botcazou  <ebotcazou@adacore.com>
25201
25202         PR middle-end/35136
25203         * gimplify.c (force_gimple_operand_bsi): Revert 2008-02-12 change.
25204         (force_gimple_operand): Likewise.
25205         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Add new cases
25206         for TARGET_MEM_REF and CONVERT_EXPR/NON_LVALUE_EXPR/NOP_EXPR.
25207         Also recurse on the operand for regular VIEW_CONVERT_EXPRs.
25208         (find_interesting_uses_address): Check addressability and alignment
25209         of the base expression only after substituting bases of IVs into it.
25210
25211 2008-02-14  Michael Matz  <matz@suse.de>
25212
25213         PR target/34930
25214         * function.c (instantiate_virtual_regs_in_insn): Reload address
25215         before falling back to reloading the whole operand.
25216
25217 2008-02-14  Andreas Krebbel  <krebbel1@de.ibm.com>
25218
25219         * config/s390/s390.c (s390_mainpool_start): Emit the pool
25220         before the first section switch note.
25221
25222 2008-02-14 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
25223
25224         * doc/bugreport.texi: Update copyright years.
25225         * doc/c-tree.texi: Likewise.
25226         * doc/cfg.texi: Likewise.
25227         * doc/cpp.texi: Likewise.
25228         * doc/cppinternals.texi: Likewise.
25229         * doc/fragments.texi: Likewise.
25230         * doc/frontends.texi: Likewise.
25231         * doc/gcc.texi: Likewise.
25232         * doc/gty.texi: Likewise.
25233         * doc/hostconfig.texi: Likewise.
25234         * doc/implement-c.texi: Likewise.
25235         * doc/libgcc.texi: Likewise.
25236         * doc/loop.texi: Likewise.
25237         * doc/makefile.texi: Likewise.
25238         * doc/options.texi: Likewise.
25239         * doc/passes.texi: Likewise.
25240         * doc/rtl.texi: Likewise.
25241         * doc/sourcebuild.texi: Likewise.
25242         * doc/standards.texi: Likewise.
25243         * doc/tree-ssa.texi: Likewise.
25244         * doc/trouble.texi: Likewise.
25245
25246         * doc/extend.texi: Use @: or add comma where appropriate.
25247         * doc/invoke.texi: Likewise.
25248         * doc/tm.texi: Likewise.
25249
25250 2008-02-14  Alan Modra  <amodra@bigpond.net.au>
25251
25252         PR target/34393
25253         * config/rs6000/rs6000.md (restore_stack_block): Force operands[1]
25254         to a reg.
25255
25256 2008-02-14  Jesper Nilsson  <jesper.nilsson@axis.com>
25257
25258         * doc/md.texi (clz, ctz): Add reference.
25259         * doc/rtl.texi (clz, ctz): Likewise.
25260
25261 2008-02-13  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
25262
25263         PR other/35148
25264         * Makefile.in (gcc-vers.texi): Use abs_srcdir for the value of
25265         srcdir.
25266
25267 2008-02-13  Andreas Krebbel  <krebbel1@de.ibm.com>
25268
25269         * config/s390/s390.c (struct constant_pool): New field
25270         emit_pool_after added.
25271         (s390_mainpool_start): Set the emit_pool_after flag according
25272         to the section switch notes.
25273         (s390_mainpool_finish): Consider emit_pool_after when emitting
25274         the literal pool at the end of the function.
25275         (s390_chunkify_start): Force literal pool splits at section
25276         switch notes.
25277
25278 2008-02-13  Michael Matz  <matz@suse.de>
25279
25280         PR debug/35065
25281         * var-tracking.c (clobber_variable_part): Correctly traverse the
25282         list.
25283
25284 2008-02-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25285
25286         PR 29673
25287         * doc/invoke.texi (Debugging Options): Remove -fdump-tree-inlined.
25288         Add -fdump-ipa-inline.
25289         * tree-dump.c (dump_files): Remove tree-inlined dump.
25290         * tree-pass.h (tree_dump_index): Remove TDI_inlined.
25291
25292 2008-02-12  Richard Guenther  <rguenther@suse.de>
25293
25294         PR tree-optimization/35171
25295         * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Deal with
25296         default defs.
25297
25298 2008-02-12  Richard Guenther  <rguenther@suse.de>
25299
25300         PR middle-end/35163
25301         * fold-const.c (fold_widened_comparison): Use get_unwidened in
25302         value-preserving mode.  Disallow final truncation.
25303
25304 2008-02-12  Eric Botcazou  <ebotcazou@adacore.com>
25305
25306         PR middle-end/35136
25307         * gimplify.c (force_gimple_operand_bsi): Move SSA renaming
25308         code from here to...
25309         (force_gimple_operand): ...here.
25310
25311 2008-02-12  Jakub Jelinek  <jakub@redhat.com>
25312
25313         PR c++/35144
25314         * tree-sra.c (sra_build_assignment): fold_convert SRC if copying
25315         non-compatible pointers.
25316         (generate_element_copy): If SRC and DST are RECORD_TYPEs with
25317         different FIELD_DECLs, try harder by comparing field offsets, sizes
25318         and types.
25319
25320         PR inline-asm/35160
25321         * function.c (match_asm_constraints_1): Don't replace the same input
25322         multiple times.
25323
25324 2008-02-12  Anatoly Sokolov <aesok@post.ru>
25325
25326         * config/avr/avr.h (AVR_HAVE_RAMPZ): Define.
25327         * config/avr/avr.c (expand_prologue): Save RAMPZ register.
25328         (expand_epilogue): Restore RAMPZ register.
25329         * config/avr/avr.md (RAMPZ_ADDR): New constant.
25330
25331 2008-02-11  Kai Tietz  <kai.tietz@onevision.com>
25332
25333         * config/i386/cygwin.asm: (__alloca): Correct calling
25334         convention and alignment.
25335         (__chkstk): Force 8 byte stack alignment.
25336
25337 2008-02-11  Uros Bizjak  <ubizjak@gmail.com>
25338             Richard Guenther  <rguenther@suse.de>
25339
25340         PR tree-optimization/33992
25341         * tree-ssa-loop-im.c (rewrite_bittest): Fixup the type of
25342         the zero we compare against.
25343
25344 2008-02-10  Danny Smith  <dannysmith@users.sourceforge.net>
25345
25346         PR libfortran/35063
25347         * gthr-win32.h (__gthread_mutex_destroy_function): New function
25348         to CloseHandle after unlocking to prevent accumulation of handle
25349         count.
25350
25351 2008-02-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
25352
25353         PR middle_end/34150
25354         * pa.c (legitimize_pic_address): Add REG_EQUAL note on sets with a
25355         pic_label_operand source.  Similarly, add a REG_LABEL_OPERAND note
25356         and update LABEL_NUSES during and after reload.
25357
25358 2008-02-08  Steven Bosscher  <stevenb.gcc@gmail.com>
25359
25360         PR middle-end/34627
25361         * combine.c (simplify_if_then_else): Make sure the comparison is
25362         against const0_rtx when simplifying to (abs x) or (neg (abs X)).
25363
25364 2008-02-08  Richard Sandiford  <rsandifo@nildram.co.uk>
25365
25366         PR bootstrap/35051
25367         * double-int.h: Don't include gmp.h for GENERATOR_FILEs.
25368         (mpz_set_double_int, mpz_get_double_int): Hide from GENERATOR_FILEs.
25369         * real.h: Don't include gmp.h or mpfr.h for GENERATOR_FILEs.
25370         (real_from_mpfr, mpfr_from_real): Hide from GENERATOR_FILEs.
25371         * tree.h (get_type_static_bounds): Likewise.
25372
25373 2008-02-08  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
25374
25375         * doc/invoke.texi (Option Summary, C++ Dialect Options)
25376         (Objective-C and Objective-C++ Dialect Options, Warning Options):
25377         Make -Wfoo language annotations match what the compiler outputs.
25378
25379 2008-02-08  Sa Liu  <saliu@de.ibm.com>
25380
25381         * config/spu/spu-builtins.def: Fixed wrong parameter type in spu
25382         intrinsics spu_convts, spu_convtu, spu_convtf.
25383
25384 2008-02-08  Hans-Peter Nilsson  <hp@axis.com>
25385
25386         * doc/extend.texi (Function Attributes) <noinline>: Mention
25387         asm ("") as method to keep calls.
25388
25389 2008-02-07  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25390
25391         PR other/32754
25392         * doc/options.texi (Options): Replace references to opts.sh with
25393         optc-gen.awk.
25394         * opts-common.c: Likewise.
25395         * optc-gen.awk: Likewise.
25396
25397 2008-02-07  Andreas Krebbel  <krebbel1@de.ibm.com>
25398
25399         * config/s390/s390.h (FUNCTION_ARG_REGNO_P): Fix fprs for 64 bit.
25400
25401 2008-02-07  Richard Henderson  <rth@redhat.com>
25402
25403         PR rtl-opt/33410
25404         * config/alpha/alpha.c (alpha_emit_xfloating_compare): Use an
25405         EXPR_LIST for the REG_EQUAL instead of a comparison with a
25406         funny mode.
25407
25408 2008-02-07  Uros Bizjak  <ubizjak@gmail.com>
25409
25410         PR tree-optimization/35085
25411         * tree-ssa-reassoc.c (rewrite_expr_tree): Enable destructive update
25412         for operand entry oe2 in addition to operand entry oe3 in order to
25413         expose more opportunities for vectorizer sum reduction.
25414
25415 2008-02-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
25416
25417         PR other/35107
25418         * Makefile.in (LIBS): Remove $(GMPLIBS).
25419         (cc1-dummy, cc1): Add $(GMPLIBS).
25420
25421 2008-02-06  Jan Hubicka  <jh@suse.cz>
25422
25423         PR target/23322
25424         * i386.md (moddf_integer): Do not produce partial memory stalls for
25425         targets where it hurts.
25426
25427 2008-02-06  Uros Bizjak  <ubizjak@gmail.com>
25428
25429         PR target/35083
25430         * optabs.c (expand_float): Do not check for decimal modes when
25431         expanding unsigned integer through signed conversion.
25432
25433 2008-02-06  Nick Clifton  <nickc@redhat.com>
25434
25435         * config/stormy16/stormy16.md (eqbranchsi): Replace a match_dup
25436         inside the clobber with a match_operand and duplicated operand
25437         number in the constraint.
25438         (ineqbranchsi): Delete redundant comment.
25439
25440 2008-02-06  Ralf Corsepius  <ralf.corsepius@rtems.org>
25441
25442         * config/arm/rtems-elf.h (TARGET_OS_CPP_BUILTINS): Add
25443         builtin_define ("__USE_INIT_FINI__").
25444         * config/h8300/t-rtems (MULTILIB_OPTION,MULTILIB_DIRNAMES): Add
25445         -msx multilibs.
25446         * gthr-rtems.h: Remove __GTHREAD_MUTEX_INIT.
25447
25448 2008-02-06  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
25449
25450         PR documentation/30330
25451         * doc/invoke.texi (C++ Dialect Options)
25452         (Objective-C and Objective-C++ Dialect Options, Warning Options):
25453         For each warning option -Wfoo that allows -Wno-foo, ensure both
25454         -Wfoo and -Wno-foo are listed in the option index.  Fix index
25455         entry of -Wswitch-default, index -Wnormalized= including the
25456         `=', and -Wlarger-than-@var{len} including @var{len}.
25457
25458 2008-02-05  Uros Bizjak  <ubizjak@gmail.com>
25459
25460         * config/i386/i386.md (floatunssisf2): Use
25461         ix86_expand_convert_uns_sisf_sse also for TARGET_SSE.
25462         (floatunssi<mode>2): Rename from floatunssisf2 and floatunssidf2.
25463         Macroize expander using MODEF mode iterator.
25464
25465 2008-02-05  Diego Novillo  <dnovillo@google.com>
25466
25467         http://gcc.gnu.org/ml/gcc-patches/2008-02/msg00140.html
25468
25469         PR 33738
25470         * tree-vrp.c (vrp_evaluate_conditional): Revert fix for PR 33738.
25471
25472 2008-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
25473
25474         PR other/35070
25475         * toplev.c (print_version): Honor `indent' for GMP/MPFR warnings.
25476
25477 2008-02-05  H.J. Lu  <hongjiu.lu@intel.com>
25478
25479         PR target/35084
25480         * config/i386/i386.c (ix86_function_sseregparm): Add an arg
25481         to indicate if a message should be generated.
25482         (init_cumulative_args): Updated.
25483         (function_value_32): Likewise.
25484
25485 2008-02-05  Joseph Myers  <joseph@codesourcery.com>
25486
25487         * doc/include/texinfo.tex: Update to version 2008-02-04.16.
25488
25489 2008-02-05  Uros Bizjak  <ubizjak@gmail.com>
25490
25491         PR target/35083
25492         * config/i386/i386.md (floatunsisf2): Enable for TARGET_SSE_MATH only.
25493         Call ix86_expand_convert_uns_sisf_sse for TARGET_SSE2.
25494
25495 2008-02-04  Diego Novillo  <dnovillo@google.com>
25496
25497         http://gcc.gnu.org/ml/gcc-patches/2008-02/msg00110.html
25498
25499         PR 33738
25500         * tree-vrp.c (vrp_evaluate_conditional): With
25501         -Wtype-limits, emit a warning when comparing against a
25502         constant outside the natural range of OP0's type.
25503
25504 2008-02-04  Richard Guenther  <rguenther@suse.de>
25505
25506         PR middle-end/33631
25507         * expr.c (count_type_elements): Give for unions instead of
25508         guessing.
25509
25510 2008-02-04  Richard Guenther  <rguenther@suse.de>
25511
25512         PR middle-end/35043
25513         * gimplify.c (gimplify_init_ctor_eval): Convert array indices
25514         to TYPE_DOMAINs base type instead of using bitsizetype here.
25515
25516 2008-02-03  Jason Merrill  <jason@redhat.com>
25517
25518         * print-tree.c (print_node) [CONSTRUCTOR]: Print elements.
25519
25520 2008-02-04  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
25521
25522         PR other/29972
25523         * doc/invoke.texi (C++ Dialect Options, Optimize Options)
25524         (HPPA Options, i386 and x86-64 Options, IA-64 Options)
25525         (RS/6000 and PowerPC Options): Fix typos and markup.
25526         * doc/passes.texi (Tree-SSA passes): Likewise.
25527
25528 2008-02-02  Michael Matz  <matz@suse.de>
25529
25530         PR target/35045
25531         * postreload-gcse.c (record_last_reg_set_info_regno): Renamed
25532         from record_last_reg_set_info.
25533         (record_last_reg_set_info): Take an RTX argument, iterate over all
25534         constituent hardregs.
25535         (record_last_set_info, record_opr_changes): Change calls to
25536         new signature or to record_last_reg_set_info_regno.
25537
25538 2008-02-02  Gerald Pfeifer  <gerald@pfeifer.com>
25539
25540         * doc/extend.texi (X86 Built-in Functions): Fix grammar.
25541
25542 2008-02-01  Hans-Peter Nilsson  <hp@axis.com>
25543
25544         PR rtl-optimization/34773
25545         * reg-notes.def (EQUAL): Mention significance of combination of
25546         REG_EQUAL and REG_RETVAL.
25547         * fwprop.c (try_fwprop_subst): Don't add REG_EQUAL to an
25548         insn that has a REG_RETVAL.
25549
25550 2008-02-01  Roger Sayle  <roger@eyesopen.com>
25551
25552         PR bootstrap/33781
25553         * configure.ac (--enable-fixed-point): Disable unless explicitly
25554         requested on IRIX.
25555         * configure: Regenerate.
25556
25557 2008-02-01  Richard Guenther  <rguenther@suse.de>
25558
25559         PR other/35042
25560         * invoke.texi (-finline-limit): Remove no longer true parts
25561         of the documentation.  Note that there is no default value.
25562
25563 2008-02-01  Andrew Pinski  <pinskia@gmail.com>
25564             Mark Mitchell  <mark@codesourcery.com>
25565             Ben Elliston  <bje@au.ibm.com>
25566
25567         PR c/29326
25568         * doc/extend.texi (Other Builtins): Document.
25569
25570 2008-01-31  Tom Browder <tom.browder@gmail.com>
25571
25572         * doc/c-tree.texi (Types): Fix grammar.
25573         (Expression trees): Ditto.
25574         * doc/passes.texi (Tree-SSA passes): Ditto.
25575
25576         * doc/configterms.texi (Configure Terms): Fix typo.
25577         * doc/cpp.texi (Common Predefined Macros): Ditto.
25578         * doc/md.texi (Machine Constraints): Ditto.
25579
25580         * doc/makefile.texi (Makefile): Add comma.
25581
25582 2008-01-31  Tom Browder  <tom.browder@gmail.com>
25583             Gerald Pfeifer  <gerald@pfeifer.com>
25584
25585         * doc/sourcebuild.texi (Front End): Remove references to CVS
25586         and CVSROOT/modules.
25587         (Texinfo Manuals): Replace reference to CVS by one to SVN.
25588         (Back End): Remove reference to CVS.
25589
25590 2008-01-31  Richard Sandiford  <rsandifo@nildram.co.uk>
25591
25592         PR target/34900
25593         * config/mips/mips.c (gen_load_const_gp): New function, taking a
25594         comment from...
25595         (mips16_gp_pseudo_reg): ...here.
25596         * config/mips/mips.md (load_const_gp): Replace with...
25597         (load_const_gp_<mode>): ...this :P-based insn.
25598
25599 2008-01-31  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25600
25601         * doc/invoke.texi (-ansi): Mention explicitly corresponding -std=
25602         options. Minor fixes.
25603         (-std): Move reference to standards closer to where language
25604         standards are first mentioned.
25605
25606 2008-01-31  Richard Sandiford  <rsandifo@nildram.co.uk>
25607
25608         PR rtl-optimization/34995
25609         * reload.c (alternative_allows_const_pool_ref): Take an rtx
25610         parameter and return a bool.  If the rtx parameter is nonnull,
25611         check that it satisfies an EXTRA_MEMORY_CONSTRAINT.
25612         (find_reloads): Update call accordingly.  Pass the new operand
25613         if it needed no address reloads, otherwise pass null.
25614
25615 2008-01-30  Richard Henderson  <rth@redhat.com>
25616
25617         PR c/34993
25618         * tree.c (build_type_attribute_qual_variant): Skip TYPE_DOMAIN
25619         for unbounded arrays.
25620
25621 2008-01-30  Silvius Rus  <rus@google.com>
25622
25623         * config/i386/xmmintrin.h (_mm_prefetch): Add const to first arg.
25624
25625 2008-01-30  Jan Hubicka  <jh@suse.cz>
25626
25627         PR target/34982
25628         * i386.c (init_cumulative_args): Use real function declaration when
25629         calling locally.
25630
25631 2008-01-30  Richard Sandiford  <rsandifo@nildram.co.uk>
25632
25633         PR rtl-optimization/34998
25634         * global.c (build_insn_chain): Treat non-subreg_lowpart
25635         SUBREGs of pseudos as clobbering all the words covered by the
25636         SUBREG, not just all the bytes.
25637         * ra-conflict.c (clear_reg_in_live): Likewise.  Take the
25638         original df_ref rather than an extract parameter.
25639         (global_conflicts): Update call accordingly.
25640
25641 2008-01-30  Andreas Krebbel  <krebbel1@de.ibm.com>
25642
25643         * config/s390/fixdfdi.h (__fixunstfdi, __fixtfdi): Rearrange
25644         the overflow check to make it easier to read.
25645         (__fixtfdi): Change the type of the ll member in union
25646         long_double to UDItype_x.
25647
25648 2008-01-30  Jakub Jelinek  <jakub@redhat.com>
25649
25650         PR middle-end/34969
25651         * cgraph.h (cgraph_update_edges_for_call_stmt): New prototype.
25652         * cgraph.c (cgraph_update_edges_for_call_stmt): New function.
25653         * tree-inline.c (fold_marked_statements): Call
25654         cgraph_update_edges_for_call_stmt if folding a call statement.
25655         * cgraphunit.c (verify_cgraph_node): Set cfun to this_cfun for
25656         debug_generic_stmt calls, reset it back afterwards.
25657
25658         PR c/35017
25659         * c-decl.c (start_decl): Don't pedwarn about TREE_READONLY
25660         static decls.
25661         * c-typeck.c (build_external_ref): Don't pedwarn about
25662         static vars in current function's scope.
25663
25664 2008-01-29  Joseph Myers  <joseph@codesourcery.com>
25665
25666         * config.gcc (i[34567]86-*-nto-qnx*): Remove deprecation.
25667
25668 2008-01-29  Bernhard Fischer  <aldot@gcc.gnu.org>
25669
25670         PR c/35002
25671         * ipa-struct-reorg.c: Fix spelling.
25672         * params.def: Ditto.
25673
25674 2008-01-29  Richard Guenther  <rguenther@suse.de>
25675
25676         PR middle-end/35006
25677         * tree-inline.h (struct copy_body_data): Add remapping_type_depth
25678         field.
25679         * tree-inline.c (remap_type): Increment remapping_type_depth
25680         around remapping types.
25681         (copy_body_r): Only add referenced variables if they are referenced
25682         from code, not types.
25683
25684 2008-01-29  Douglas Gregor  <doug.gregor@gmail.com>
25685
25686         PR c++/34055
25687         PR c++/34103
25688         PR c++/34219
25689         PR c++/34606
25690         PR c++/34753
25691         PR c++/34754
25692         PR c++/34755
25693         PR c++/34919
25694         PR c++/34961
25695         * c-pretty-print.c (pp_c_type_qualifier_list): Don't try to print
25696         qualifiers for an ERROR_MARK_NODE or a NULL_TREE.
25697
25698 2008-01-28  Andy Hutchinson   <hutchinsonandy@netscape.net>
25699
25700         PR target/34412
25701         * config/avr/avr.c (expand_prologue): Use correct QI mode frame
25702         pointer for tiny stack.
25703
25704 2008-01-28  Bernhard Fischer  <aldot@gcc.gnu.org>
25705
25706         * doc/tree-ssa.texi: Add cindex PHI nodes and improve wording.
25707
25708 2008-01-28  Bernhard Fischer  <aldot@gcc.gnu.org>
25709
25710         * config/vx-common.h: Fix typo in comment.
25711
25712 2008-01-28  Ian Lance Taylor  <iant@google.com>
25713
25714         PR c++/34862
25715         PR c++/33407
25716         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Don't
25717         coalesce pointers if they have different DECL_NO_TBAA_P values.
25718         * tree-ssa-copy.c (may_propagate_copy): Don't propagate copies
25719         between variables with different DECL_NO_TBAA_P values.
25720
25721 2008-01-28  Nathan Froyd  <froydnj@codesourcery.com>
25722
25723         PR 31535
25724         * config/rs6000/rs6000.c (small_data_operand): Vectors and floats
25725         are not legitimate small data references on SPE targets.
25726
25727 2008-01-28  David Daney  <ddaney@avtrex.com>
25728
25729         * doc/install.texi (mips-*-*): Recommend binutils 2.18.
25730
25731 2008-01-28  David Daney  <ddaney@avtrex.com>
25732
25733         * doc/install.texi (--disable-libgcj-bc):  Reword documentation.
25734
25735 2008-01-27  Joseph Myers  <joseph@codesourcery.com>
25736
25737         * config.gcc (strongarm*-*, ep9312*-*, xscale*-*, parisc*-*,
25738         m680[012]0-*, *-*-beos*, *-*-kaos*, *-*-linux*aout*,
25739         *-*-linux*libc1*, *-*-solaris2.[0-6], *-*-solaris2.[0-6].*,
25740         *-*-sysv*, *-*-windiss*, alpha*-*-unicosmk*, cris-*-aout,
25741         hppa1.1-*-pro*, hppa1.1-*-osf*, hppa1.1-*-bsd*,
25742         i[34567]86-sequent-ptx4*, i[34567]86-*-nto-qnx*,
25743         i[34567]86-*-sco3.2v5*, i[34567]86-*-uwin*, powerpc-*-chorusos*,
25744         vax-*-bsd*, vax-*-ultrix*): Mark obsolete.
25745
25746 2008-01-27  Bernhard Fischer  <aldot@gcc.gnu.org>
25747
25748         * basic-block.h (condjump_equiv_p): Fix comment.
25749
25750 2008-01-27  Bernhard Fischer  <aldot@gcc.gnu.org>
25751
25752         * tree-pretty-print.c (print_generic_decl, print_generic_stmt,
25753         print_generic_stmt_indented): Fix comment.
25754
25755 2008-01-27  Bernhard Fischer  <aldot@gcc.gnu.org>
25756
25757         * configure.ac (__stack_chk_fail): Add detecion for availability
25758         of SSP in uClibc by checking if __UCLIBC_HAS_SSP__ is defined.
25759         * configure: Regenerate.
25760
25761 2008-01-26  Maxim Kuvyrkov  <maxim@codesourcery.com>
25762
25763         PR middle-end/34688
25764         * final.c (output_addr_const): Handle TRUNCATE.
25765
25766 2008-01-26  Zdenek Dvorak  <ook@ucw.cz>
25767
25768         PR target/34711
25769         * tree-ssa-loop-ivopts.c (comp_cost): New type.
25770         (zero_cost, infinite_cost): New constants.
25771         (struct cost_pair): Change type of cost to comp_cost.
25772         (struct iv_ca): Change type of cand_use_cost and cost to comp_cost.
25773         (new_cost, add_costs, sub_costs, compare_costs, infinite_cost_p):
25774         New functions.
25775         (set_use_iv_cost, force_expr_to_var_cost, force_var_cost,
25776         split_address_cost, ptr_difference_cost, difference_cost,
25777         get_computation_cost_at, get_computation_cost,
25778         determine_use_iv_cost_generic, determine_use_iv_cost_address,
25779         determine_use_iv_cost_condition, determine_use_iv_costs,
25780         cheaper_cost_pair, iv_ca_recount_cost, iv_ca_set_no_cp,
25781         iv_ca_set_cp, iv_ca_cost, iv_ca_new, iv_ca_dump, iv_ca_extend,
25782         iv_ca_narrow, iv_ca_prune, try_improve_iv_set, find_optimal_iv_set):
25783         Change type of cost to comp_cost.
25784         (determine_iv_cost): Increase cost of non-original ivs, instead
25785         of decreasing the cost of original ones.
25786         (get_address_cost): Indicate the complexity of the addressing mode
25787         in comp_cost.
25788         (try_add_cand_for): Prefer using ivs not specific to some object.
25789         * tree-flow.h (force_expr_to_var_cost): Declaration removed.
25790
25791 2008-01-26  Peter Bergner  <bergner@vnet.ibm.com>
25792             Janis Johnson  <janis187@us.ibm.com>
25793
25794         PR target/34814
25795         * doc/tm.texi (TARGET_EXPAND_TO_RTL_HOOK): Document.
25796         (TARGET_INSTANTIATE_DECLS): Likewise.
25797         * target.h (expand_to_rtl_hook): New target hook.
25798         (instantiate_decls): Likewise.
25799         * function.c (instantiate_decl): Make non-static.  Rename to...
25800         (instantiate_decl_rtl): ... this.
25801         (instantiate_expr): Use instantiate_decl_rtl.
25802         (instantiate_decls_1): Likewise.
25803         (instantiate_decls): Likewise.
25804         (instantiate_virtual_regs: Call new instantiate_decls taget hook.
25805         * function.h (instantiate_decl_rtl): Add prototype.
25806         * cfgexpand.c (target.h): New include.
25807         (tree_expand_cfg): Call new expand_to_rtl_hook target hook.
25808         * target-def.h (TARGET_EXPAND_TO_RTL_HOOK): New define.
25809         (TARGET_INSTANTIATE_DECLS): Likewise.
25810         (TARGET_INITIALIZER): New target hooks added.
25811         * config/rs6000/rs6000-protos.h (rs6000_secondary_memory_needed_rtx):
25812         New prototype.
25813         * config/rs6000/rs6000.c (tree-flow.h): New include.
25814         (machine_function): Add sdmode_stack_slot field.
25815         (rs6000_alloc_sdmode_stack_slot): New function.
25816         (rs6000_instantiate_decls): Likewise.
25817         (rs6000_secondary_memory_needed_rtx): Likewise.
25818         (rs6000_check_sdmode): Likewise.
25819         (TARGET_EXPAND_TO_RTL_HOOK): Target macro defined.
25820         (TARGET_INSTANTIATE_DECLS): Likewise.
25821         (rs6000_hard_regno_mode_ok): Allow SDmode.
25822         (num_insns_constant): Likewise.  Handle _Decimal32 constants.
25823         (rs6000_emit_move): Handle SDmode.
25824         (function_arg_advance): Likewise.
25825         (function_arg): Likewise.
25826         (rs6000_gimplify_va_arg): Likewise.  Add special handling of
25827         SDmode var args for 32-bit compiles.
25828         (rs6000_secondary_reload_class): Handle SDmode.
25829         (rs6000_output_function_epilogue): Likewise.
25830         (rs6000_function_value): Simplify if statement.
25831         (rs6000_libcall_value): Likewise.
25832         * config/rs6000/rs6000.h (SLOW_UNALIGNED_ACCESS): Handle SDmode.
25833         (SECONDARY_MEMORY_NEEDED_RTX): Add define.
25834         * config/rs6000/dfp.md (movsd): New define_expand and splitter.
25835         (movsd_hardfloat): New define_insn.
25836         (movsd_softfloat): Likewise.
25837         (movsd_store): Likewise.
25838         (movsd_load): Likewise.
25839         (extendsddd2): Likewise.
25840         (extendsdtd2): Likewise.
25841         (truncddsd2): Likewise.
25842         (movdd_hardfloat64): Fixup comment.
25843         (UNSPEC_MOVSD_LOAD): New constant.
25844         (UNSPEC_MOVSD_STORE): Likewise.
25845
25846 2008-01-26  Jakub Jelinek  <jakub@redhat.com>
25847
25848         PR c++/34965
25849         * c-pretty-print.c (pp_c_exclusive_or_expression): Handle
25850         TRUTH_XOR_EXPR.
25851         (pp_c_logical_and_expression): Handle TRUTH_AND_EXPR.
25852         (pp_c_logical_or_expression): Handle TRUTH_OR_EXPR.
25853         (pp_c_expression): Handle TRUTH_AND_EXPR, TRUTH_OR_EXPR
25854         and TRUTH_XOR_EXPR.
25855
25856 2008-01-26  David Edelsohn  <edelsohn@gnu.org>
25857
25858         PR target/34794
25859         * config.gcc: Separate AIX 5.3 from AIX 6.1.
25860         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
25861         __LONGDOUBLE128 too.
25862         * config/rs6000/aix61.h: New file.
25863
25864 2008-01-26  Richard Sandiford  <rsandifo@nildram.co.uk>
25865
25866         PR rtl-optimization/34959
25867         * optabs.c (expand_unop): In libcall notes, give ffs, clz, ctz,
25868         popcount and parity rtxes the same mode as their operand.
25869         Truncate or extend the result to the return value's mode
25870         if necessary.
25871
25872 2008-01-26  Richard Sandiford  <rsandifo@nildram.co.uk>
25873
25874         PR target/34981
25875         * config/mips/mips-protos.h (mips_expand_call): Return an rtx.
25876         * config/mips/mips.h (FIRST_PSEUDO_REGISTER): Rename FAKE_CALL_REGNO
25877         to GOT_VERSION_REGNUM.
25878         (CALL_REALLY_USED_REGISTERS): Set the GOT_VERSION_REGNUM entry to 0.
25879         (EPILOGUE_USES): Include GOT_VERSION_REGNUM if TARGET_USE_GOT.
25880         * config/mips/mips.c (mips_emit_call_insn): New function.
25881         (mips_call_tls_get_addr): Call mips_expand_call directly.
25882         (mips16_copy_fpr_return_value): Use mips_emit_call_insn rather than
25883         emit_call_insn.
25884         (mips16_build_call_stub): Likewise.  Return the call insn or null.
25885         (mips_expand_call): Update the call to mips16_build_call_stub
25886         accordingly and a remove redundant condition.  Assert that MIPS16
25887         stubs do not use lazy binding.  Use mips_emit_call_insn and return
25888         the call insn.
25889         (mips_extra_live_on_entry): Include GOT_VERSION_REGNUM if
25890         TARGET_USE_GOT.
25891         (mips_hard_regno_mode_ok_p): Allow SImode for GOT_VERSION_REGNUM.
25892         (mips_avoid_hazard): Remove hazard_set handling.
25893         * config/mips/mips.md (UNSPEC_EH_RECEIVER): Rename to...
25894         (UNSPEC_RESTORE_GP): ...this.
25895         (UNSPEC_SET_GOT_VERSION, UNSPEC_UPDATE_GOT_VERSION): New constants.
25896         (FAKE_CALL_REGNO): Rename to...
25897         (GOT_VERSION_REGNUM): ...this.
25898         (type): Add "ghost" value.  Add an associated insn reservation.
25899         (hazard_set): Remove.
25900         (exception_receiver): Rename to...
25901         (restore_gp): ...this and update the unspec identifier accordingly.
25902         (exception_receiver, nonlocal_got_receiver): New expanders.
25903         (load_call<mode>): Use GOT_VERSION_REGNUM.  Don't set
25904         FAKE_CALL_REGNO.  Remove hazard_set attribute.
25905         (set_got_version, update_got_version): New patterns.
25906
25907 2008-01-26  Danny Smith  <dannysmith@users.sourceforge.net>
25908
25909         PR target/34970
25910         * config/i386/cygming.h (ASM_OUTPUT_LABELREF): Define.
25911
25912 2008-01-25  Joseph Myers  <joseph@codesourcery.com>
25913
25914         PR other/31955
25915         * doc/install.texi2html: Generate gcc-vers.texi.
25916
25917 2008-01-25  DJ Delorie  <dj@redhat.com>
25918
25919         * config/m32c/m32c.h (ASM_PREFERRED_EH_DATA_FORMAT): Define.
25920
25921 2008-01-25  Joseph Myers  <joseph@codesourcery.com>
25922
25923         * config/c4x: Remove directory.
25924         * config.gcc (crx-*, mt-*): Mark obsolete.
25925         (c4x-*, tic4x-*, c4x-*-rtems*, tic4x-*-rtems*, c4x-*, tic4x-*,
25926         h8300-*-rtemscoff*, ns32k-*-netbsdelf*, ns32k-*-netbsd*,
25927         sh-*-rtemscoff*): Remove cases.
25928         * defaults.h (C4X_FLOAT_FORMAT): Remove.
25929         * real.c (encode_c4x_single, decode_c4x_single,
25930         encode_c4x_extended, decode_c4x_extended, c4x_single_format,
25931         c4x_extended_format): Remove.
25932         * real.h (c4x_single_format, c4x_extended_format): Remove.
25933         * doc/extend.texi (interrupt, naked): Remove mention of attributes
25934         on C4x.
25935         (Pragmas): Remove comment about c4x pragmas.
25936         * doc/install.texi (c4x): Remove target-specific instructions.
25937         * doc/invoke.texi (TMS320C3x/C4x Options): Remove.
25938         * doc/md.texi (Machine Constraints): Remove C4x documentation.
25939         * doc/tm.texi (MEMBER_TYPE_FORCES_BLK, c_register_pragma): Do not
25940         refer to C4x source files as examples.
25941         (C4X_FLOAT_FORMAT): Remove documentation.
25942
25943 2008-01-25  Bernd Schmidt  <bernd.schmidt@analog.com>
25944
25945         * config/bfin/bfin.c (override_options): Reorder tests so that
25946         flag_pic gets enabled for -msep-data.
25947
25948 2008-01-25  Richard Guenther  <rguenther@suse.de>
25949
25950         PR middle-end/32244
25951         * expr.c (expand_expr_real_1): Reduce result of LSHIFT_EXPR
25952         to its bitfield precision if required.
25953
25954 2008-01-25  Jakub Jelinek  <jakub@redhat.com>
25955
25956         PR middle-end/33880
25957         * tree-nested.c (walk_omp_for): New function.
25958         (convert_nonlocal_reference, convert_local_reference): Call
25959         walk_omp_for on OMP_FOR.
25960         (convert_call_expr): Call walk_body on OMP_FOR's
25961         OMP_FOR_PRE_INIT_BODY.
25962
25963 2008-01-25  Richard Guenther  <rguenther@suse.de>
25964
25965         PR tree-optimization/34966
25966         * tree-ssa-math-opts.c (execute_cse_sincos_1): For all but
25967         default defs and PHI_NODEs we have to insert after the
25968         defining statement.
25969
25970 2008-01-24  Nick Clifton  <nickc@redhat.com>
25971
25972         * config/stormy16/stormy16-lib2.c (MIN_UNITS_PER_WORD):
25973         Provide a default definition.
25974         (LIBGCC2_UNITS_PER_WORD): Likewise.
25975
25976         * config/stormy16/stormy16.c: Include df.h for the prototype
25977         for df_regs_ever_live_p.
25978         (xstormy16_expand_builtin_va_start): Convert the stack offset
25979         into a component_ref and then use POINTER_PLUS_EXPR to add it
25980         to the incoming_virtual_args_rtx.
25981         (xstormy16_gimplify_va_arg_expr): Rename to
25982         xstormy16_gimplify_va_arg_expr.
25983         Use POINTER_PLUS_EXPR when performing pointer arithmetic.
25984         (TARGET_GIMPLIFY_VA_ARG_EXPR): Use renamed
25985         xstormy16_gimplify_va_arg_expr.
25986         Fix up some formatting issues.
25987
25988         * config/stormy16/stormy16.c: (xstormy16_carry_plus_operand):
25989         Move to predicates.md.
25990         (xs_hi_general_operand): Likewise.
25991         (xs_hi_nonmemory_operand): Likewise.
25992         * config/stormy16/predicates.md:
25993         (xstormy16_carry_plus_operand): New predicate.
25994         (xs_hi_general_operand): New predicate.
25995         (xs_hi_nonmemory_operand): New predicate.
25996         * config/stormy16/stormy16-protos.h:
25997         (xstormy16_carry_plus_operand): Delete prototype.
25998         (xs_hi_general_operand): Likewise.
25999         (xs_hi_nonmemory_operand): Likewise.
26000
26001         * config/storm16/stormy16.md (addhi3): Remove earlyclobber
26002         modifiers as they are no longer needed and they can trigger
26003         reload spill failures.
26004
26005         * config/storm16/stormy16.md (ineqbranchsi): Replace match_dup
26006         with a match_operand in order to help reload.
26007
26008         * config/storm16/stormy16.md (movhi_internal): Replace 'r'
26009         constraint with 'e' for the 8th alternative as this version of
26010         the mov.w instruction only accepts the lower 8 registers.
26011
26012 2008-01-25  Uros Bizjak  <ubizjak@gmail.com>
26013
26014         PR target/34856
26015         * simplifx-rtx.c (simplify_const_binary_operation) [VEC_CONCAT]:
26016         Consider only CONST_INT, CONST_DOUBLE and CONST_FIXED as constant
26017         vector elements.
26018
26019 2008-01-25  Jakub Jelinek  <jakub@redhat.com>
26020
26021         PR middle-end/33333
26022         * gimplify.c (gimplify_omp_for): Gimplify OMP_FOR_PRE_BODY.
26023
26024 2008-01-25  Golovanevsky Olga  <olga@il.ibm.com>
26025
26026         * ipa-struct-reorg.c (remove_str_allocs_in_func, remove_str_allocs):
26027         New functions.
26028         (remove_structure): Update allocations list before removing structure.
26029
26030 2008-01-25  Golovanevsky Olga  <olga@il.ibm.com>
26031
26032         * ipa-struct-reorg.c (is_safe_cond_expr,
26033         create_new_stmts_for_cond_expr): Use integer_zerop function,
26034         that recognize not only zero-pointer, but zero-integer too.
26035
26036 2008-01-25  Ben Elliston  <bje@au.ibm.com>
26037
26038         PR other/22232
26039         * fixproto: Escape "." in sed expression that strips leading "./".
26040
26041 2008-01-24  H.J. Lu  <hongjiu.lu@intel.com>
26042
26043         PR driver/34904
26044         * gcc.c (SWITCH_OK): Removed.
26045         (SWITCH_LIVE): Changed to bit.
26046         (SWITCH_FALSE): Likewise.
26047         (SWITCH_IGNORE): Likewise.
26048         (switchstr): Change live_cond to unsigned int.
26049         (process_command): Replace SWITCH_OK with 0.
26050         (do_self_spec): Likewise.
26051         (set_collect_gcc_options): Check the SWITCH_IGNORE bit.
26052         (give_switch): Likewise.
26053         (used_arg): Likewise.
26054         (do_spec_1): Set the SWITCH_IGNORE bit.
26055         (check_live_switch): Check both SWITCH_LIVE and SWITCH_FALSE
26056         bits.  Set the SWITCH_LIVE bit.
26057
26058 2008-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
26059
26060         * config/s390/s390.h (MOVE_RATIO): Define new target macro.
26061
26062 2008-01-24  Richard Sandiford  <rsandifo@nildram.co.uk>
26063
26064         PR tree-optimization/34472
26065         * ipa-struct-reorg.c (safe_cond_expr_check): Change the DATA
26066         parameter to a "bool *" and set *DATA to false if there is
26067         an unsafe access.  Do not delete the structure here.
26068         (check_cond_exprs): Delete it here instead.
26069         (check_cond_exprs, exclude_cold_structs): Do not increase
26070         I when removing a structure.
26071
26072 2008-01-24  Uros Bizjak  <ubizjak@gmail.com>
26073
26074         PR target/34856
26075         * config/i386/i386.c (ix86_expand_vector_init): Consider only
26076         CONST_INT, CONST_DOUBLE and CONST_FIXED as constant vector elements.
26077
26078 2008-01-24  Jakub Jakub Jelinek  <jakub@redhat.com>
26079
26080         PR middle-end/34934
26081         * tree-stdarg.c (reachable_at_most_once): Use VEC vector instead of
26082         a fixed vector for stack.
26083
26084 2008-01-24  Ben Elliston  <bje@au.ibm.com>
26085
26086         PR c++/25701
26087         * doc/gcc.texi (Software development): Add a direntry for g++.
26088
26089 2008-01-23  Hans-Peter Nilsson  <hp@axis.com>
26090
26091         * config/cris/cris.h (CC1PLUS_SPEC, OPTIMIZATION_OPTIONS): Drop
26092         stale and straggling -fforce-addr comments above.
26093
26094         * config/cris/cris.h (CRIS_SUBTARGET_VERSION, TARGET_VERSION): Don't
26095         define.
26096         * config/cris/linux.h (CRIS_SUBTARGET_VERSION): Don't define.
26097         * config/cris/aout.h (CRIS_SUBTARGET_VERSION): Don't define.
26098
26099 2008-01-23  Michael Matz  <matz@suse.de>
26100
26101         PR debug/34895
26102         * dwarf2out.c (force_type_die): Use modified_type_die instead of
26103         gen_type_die.
26104
26105 2008-01-23  Andreas Krebbel  <krebbel1@de.ibm.com>
26106
26107         * ipa-struct-reorg.c (create_new_malloc): Use pointer type as
26108         malloc result type.
26109
26110 2008-01-23 Anatoly Sokolov <aesok@post.ru>
26111
26112         * config/avr/avr.c (avr_current_arch): New variable.
26113         (avr_arch_types): Add 'avr31' and 'avr51' entries.
26114         (avr_arch): Add 'ARCH_AVR31' and 'ARCH_AVR51'.
26115         (avr_mcu_types): Add 'avr31' and 'avr51' architectures.
26116         (avr_override_options): Init 'avr_current_arch'.
26117         (base_arch_s): Move from here...
26118         * config/avr/avr.h (base_arch_s): ... here. Add new members
26119         'have_elpm', 'have_elpmx', 'have_eijmp_eicall', 'reserved'. Rename
26120         'mega' to 'have_jmp_call'.
26121         (TARGET_CPU_CPP_BUILTINS): Define "__AVR_HAVE_JMP_CALL__",
26122         "__AVR_HAVE_RAMPZ__", "__AVR_HAVE_ELPM__" and "__AVR_HAVE_ELPMX__"
26123         macros.
26124         (LINK_SPEC, CRT_BINUTILS_SPECS, ASM_SPEC): Add 'avr31' and 'avr51'
26125         architectures.
26126         * config/avr/t-avr (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
26127         MULTILIB_MATCHES): Ditto.
26128
26129 2008-01-23  Richard Guenther  <rguenther@suse.de>
26130
26131         PR middle-end/31529
26132         * cgraphunit.c (cgraph_reset_node): Always mark the node
26133         not reachable if it is not queued already.
26134
26135 2008-01-23  Bernd Schmidt  <bernd.schmidt@analog.com>
26136
26137         * config/bfin/bfin-protos.h (WA_RETS, ENABLE_WA_RETS): New macros.
26138         * config/bfin/bfin.c (bfin_cpus): Add WA_RETS everywhere.
26139         (cputype_selected): New static variable.
26140         (bfin_handle_option): Set it if -mcpu is used.
26141         (override_option): Select default set of workarounds if no cpu type
26142         selected on the command line.
26143         (workaround_rts_anomaly): Only run if ENABLE_WA_RETS.
26144
26145         From  Michael Frysinger  <michael.frysinger@analog.com>
26146         * config/bfin/bfin-protos.h (enum bfin_cpu_type): Add
26147         BFIN_CPU_BF547, BFIN_CPU_BF523, BFIN_CPU_BF524, and BFIN_CPU_BF526.
26148
26149         * config/bfin/elf.h (LIB_SPEC): Use proper linker script
26150         for bf547, bf523, bf524, and bf526.
26151         * config/bfin/bfin.c (bfin_cpus[]): Add bf547,  bf523, bf524, and
26152         bf526.
26153         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
26154         __ADSPBF523__ for bf523, __ADSPBF524__ for bf524,
26155         __ADSPBF526__ for bf526, __ADSPBF52x__ for all three, as well as
26156         __ADSPBF547__ and __ADSPBF54x__ for bf547.
26157         * doc/invoke.texi (Blackfin Options): Document that
26158         -mcpu now accept bf547, bf523, bf524, and bf526.
26159
26160 2008-01-22  Eric Botcazou  <ebotcazou@adacore.com>
26161
26162         PR rtl-optimization/34628
26163         * combine.c (try_combine): Stop and undo after the first combination
26164         if an autoincrement side-effect on the first insn has effectively
26165         been lost.
26166
26167 2008-01-22  David Edelsohn  <edelsohn@gnu.org>
26168
26169         PR target/34529
26170         * config/rs6000/rs6000.c (rs6000_legitimate_offset_address_p):
26171         Offset addresses are not valid for Altivec or paired float modes.
26172
26173 2008-01-22  Jakub Jelinek  <jakub@redhat.com>
26174
26175         PR c++/34607
26176         * c-parser.c (c_parser_omp_for_loop): Don't call c_finish_omp_for
26177         if DECL_INITIAL (decl) is error_mark_node.
26178
26179         PR c++/34914
26180         * c-common.c (handle_vector_size_attribute): Only allow
26181         integral, scalar float and fixed point types.  Handle OFFSET_TYPE
26182         the same way as pointer, array etc. types.
26183         * tree.c (reconstruct_complex_type): Handle OFFSET_TYPE.
26184
26185         PR c++/34917
26186         * tree.c (build_type_attribute_qual_variant): Call
26187         build_qualified_type if attributes are equal, but quals are not.
26188
26189 2008-01-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26190
26191         PR 32102
26192         * doc/invoke.texi (-Wall): -Wall enables -Wstrict-overflow=1.
26193         * flags.h (warn_strict_aliasing): Remove.
26194         (warn_strict_overflow): Remove.
26195         * opts.c (warn_strict_aliasing): Remove.
26196         (warn_strict_overflow): Remove.
26197         * c-opts.c (c_common_handle_option): -Wall only sets
26198         -Wstrict-aliasing or -Wstrict-overflow if they are uninitialized.
26199         (c_common_post_options): Give default values to -Wstrict-aliasing
26200         and -Wstrict-overflow if they are uninitialized.
26201         * common.opt (Wstrict-aliasing): Specify Var and Init.
26202         (Wstrict-overflow): Likewise.
26203
26204 2008-01-22  Kenneth Zadeck  <zadeck@naturalbridge.com>
26205
26206         PR rtl-optimization/26854
26207         PR rtl-optimization/34400
26208         PR rtl-optimization/34884
26209         * ddg.c (create_ddg_dep_from_intra_loop_link): Use
26210         DF_RD->gen.
26211         * df.h (df_changeable_flags.DF_RD_NO_TRIM): Deleted
26212         (df_rd_bb_info.expanded_lr_out): Deleted
26213         * loop_invariant.c (find_defs): Deleted DF_RD_NO_TRIM flag.
26214         * loop_iv.c (iv_analysis_loop_init): Ditto.  * df-problems.c
26215         (df_rd_free_bb_info, df_rd_alloc, df_rd_confluence_n,
26216         df_rd_bb_local_compute, df_rd_transfer_function, df_rd_free):
26217         Removed code to allocate, initialize or free expanded_lr_out.
26218         (df_rd_bb_local_compute_process_def): Restructured to make more
26219         understandable.
26220         (df_rd_confluence_n): Removed code to no apply invalidate_by_call
26221         sets if the sets are being trimmed.
26222
26223 2008-01-22  H.J. Lu  <hongjiu.lu@intel.com>
26224
26225         PR bootstrap/32287
26226         * configure.ac (ld_vers): Support GNU linker version xx.xx.*
26227         (as_vers): Likewise.
26228         * configure: Regenerated.
26229
26230 2008-01-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26231
26232         PR middle-end/33092
26233         * tree-pass.h (pass_build_alias): New pass.
26234         * tree-ssa-alias.c (gate_build_alias): New.
26235         (pass_build_alias): New.
26236         * passes.c (init_optimization_passes): Add pass_build_alias after
26237         pass_create_structure_vars.
26238
26239 2008-01-22  Wolfgang Gellerich  <gellerich@de.ibm.com>
26240
26241         * config/s390/s390.h (S390_TDC_POSITIVE_NORMALIZED_NUMBER):
26242         Renamed to S390_TDC_POSITIVE_NORMALIZED_BFP_NUMBER.
26243         (S390_TDC_NEGATIVE_NORMALIZED_NUMBER): Renamed to
26244         S390_TDC_NEGATIVE_NORMALIZED_BFP_NUMBER.
26245         (S390_TDC_POSITIVE_DENORMALIZED_NUMBER): Renamed to
26246         S390_TDC_POSITIVE_DENORMALIZED_BFP_NUMBER.
26247         (S390_TDC_NEGATIVE_DENORMALIZED_NUMBER): Renamed to
26248         S390_TDC_NEGATIVE_DENORMALIZED_BFP_NUMBER.
26249         (S390_TDC_POSITIVE_NORMALIZED_BFP_NUMBER): New constant.
26250         (S390_TDC_NEGATIVE_NORMALIZED_BFP_NUMBER): New constant.
26251         (S390_TDC_POSITIVE_DENORMALIZED_BFP_NUMBER): New constant.
26252         (S390_TDC_NEGATIVE_DENORMALIZED_BFP_NUMBER): New constant.
26253         * config/s390/s390.md (FP_ALL): New mode iterator.
26254         (_d): New mode attribute.
26255         ("*signbit<mode>2>"): Changed mode of first operand.
26256         ("isinf<mode>2"): Changed mode of first operand.
26257         ("*TDC_insn"): Adaptation for DFP modes.
26258
26259 2008-01-22  Ben Elliston  <bje@au.ibm.com>
26260
26261         * tree.c (check_qualified_type): Improve function description.
26262
26263 2008-01-21  Jason Merrill  <jason@redhat.com>
26264
26265         PR c++/34196
26266         * tree.h (TRY_CATCH_IS_CLEANUP): New macro.
26267         * tree-eh.c (honor_protect_cleanup_actions): Strip TRY_CATCH_EXPR
26268         if it is set.
26269
26270 2008-01-21  DJ Delorie  <dj@redhat.com>
26271
26272         * doc/tm.texi (HARD_REGNO_NREGS): Note that this macro must not
26273         return zero.
26274
26275 2008-01-21  Richard Guenther  <rguenther@suse.de>
26276
26277         PR middle-end/34856
26278         * tree-cfg.c (verify_expr): Allow all invariant expressions
26279         instead of just constant class ones as reference argument.
26280         * tree-ssa-loop-im.c (for_each_index): Handle CONSTRUCTOR
26281         like any other constant.
26282         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise.
26283
26284 2008-01-21  H.J. Lu  <hongjiu.lu@intel.com>
26285
26286         * regmove.c (fixup_match_1): Update call crossed frequencies.
26287
26288 2008-01-21  Richard Guenther  <rguenther@suse.de>
26289
26290         PR c/34885
26291         * tree-inline.c (setup_one_parameter): Deal with mismatched
26292         types using a VIEW_CONVERT_EXPR.
26293
26294 2008-01-21  Alon Dayan  <alond@il.ibm.com>
26295             Olga Golovanevsky  <olga@il.ibm.com>
26296
26297         PR tree-optimization/34701
26298         * ipa-struct-reorg.c (gen_size): Fix the malloc parameter calculation
26299         when the structure size is not a power of 2.
26300
26301 2008-01-20  Kenneth Zadeck  <zadeck@naturalbridge.com>
26302
26303         * doc/install.texi: Add doc for --enable-checking=df.
26304
26305 2008-01-20  Kaz Kojima  <kkojima@gcc.gnu.org>
26306
26307         PR rtl-optimization/34808
26308         * emit-rtl.c (try_split): Handle REG_RETVAL notes.
26309
26310 2008-01-20  Richard Sandiford  <rsandifo@nildram.co.uk>
26311
26312         * global.c (find_reg): Only compute EH_RETURN_DATA_REGNO once per
26313         input.
26314
26315 2008-01-19  Kenneth Zadeck  <zadeck@naturalbridge.com>
26316
26317         PR rtl-optimization/26854
26318         PR rtl-optimization/34400
26319         * ddg.c (create_ddg_dep_from_intra_loop_link): Do not use
26320         DF_RD->gen.
26321         * df.h (df_changeable_flags.DF_RD_NO_TRIM): New.
26322         (df_rd_bb_info.expanded_lr_out): New.
26323         * loop_invariant.c (find_defs): Added DF_RD_NO_TRIM flag.
26324         * loop_iv.c (iv_analysis_loop_init): Ditto.
26325         * df-problems.c (df_rd_free_bb_info, df_rd_alloc, df_rd_confluence_n,
26326         df_rd_bb_local_compute, df_rd_transfer_function, df_rd_free):
26327         Added code to allocate, initialize or free expanded_lr_out.
26328         (df_rd_bb_local_compute_process_def): Restructured to make
26329         more understandable.
26330         (df_rd_confluence_n): Add code to do nothing with fake edges and
26331         code to no apply invalidate_by_call sets if the sets are being trimmed.
26332         (df_lr_local_finalize): Renamed to df_lr_finalize.
26333         (df_live_local_finalize): Renamed to df_live_finalize.
26334
26335 2008-01-20  Richard Sandiford  <rsandifo@nildram.co.uk>
26336
26337         PR target/34831
26338         * config/mips/mips.md (div<mode>3): Use <recip_condition> when
26339         deciding whether to use reciprocal instructions.
26340
26341 2008-01-19  Uros Bizjak  <ubizjak@gmail.com>
26342
26343         * dwarf2out.c (dwarf2out_switch_text_section): Do not call
26344         dwarf2out_note_section_used if cold_text_section is NULL.
26345
26346 2008-01-19  Jakub Jelinek  <jakub@redhat.com>
26347
26348         PR gcov-profile/34610
26349         * tree-cfg.c (make_edges): Mark both outgoing edges from
26350         OMP_CONTINUE and from OMP_FOR as EDGE_ABNORMAL.
26351         * omp-low.c (expand_omp_for): Clear EDGE_ABNORMAL bits
26352         from OMP_FOR and OMP_CONTINUE outgoing edges.
26353
26354         * tree-profile.c (tree_profiling): Return early if
26355         cfun->after_tree_profile != 0.  Set cfun->after_tree_profile
26356         at the end.
26357         * omp-low.c (expand_omp_parallel): Copy after_tree_profile
26358         from cfun to child_cfun.
26359         * function.h (struct function): Add after_tree_profile bit.
26360
26361 2008-01-19 Anatoly Sokolov <aesok@post.ru>
26362
26363         * config/avr/avr.S (_exit): Disable interrupt.
26364
26365 2008-01-18  Kenneth Zadeck  <zadeck@naturalbridge.com>
26366             Steven Bosscher  <stevenb.gcc@gmail.com>
26367
26368         PR rtl-optimization/26854
26369         PR rtl-optimization/34400
26370         * df-problems.c (df_live_scratch): New scratch bitmap.
26371         (df_live_alloc): Allocate df_live_scratch when doing df_live.
26372         (df_live_reset): Clear the proper bitmaps.
26373         (df_live_bb_local_compute): Only process the artificial defs once
26374         since the order is not important.
26375         (df_live_init): Init the df_live sets only with the variables
26376         found live by df_lr.
26377         (df_live_transfer_function): Use the df_lr sets to prune the
26378         df_live sets as they are being computed.
26379         (df_live_free): Free df_live_scratch.
26380
26381 2008-01-18  Ian Lance Taylor  <iant@google.com>
26382
26383         * common.opt: Add fmerge-debug-strings.
26384         * dwarf2out.c (DEBUG_STR_SECTION_FLAGS): Test
26385         flag_merge_debug_strings rather than flag_merge_constants.
26386         * doc/invoke.texi (Option Summary): Mention
26387         -fmerge-debug-strings.
26388         (Debugging Options): Document -fmerge-debug-strings.
26389
26390 2008-01-18  Ian Lance Taylor  <iant@google.com>
26391
26392         PR c++/33407
26393         * tree.h (DECL_IS_OPERATOR_NEW): Define.
26394         (struct tree_function_decl): Add new field operator_new_flag.
26395         * tree-inline.c (expand_call_inline): When inlining a call to
26396         operator new, force the return value to go into a variable, and
26397         set DECL_NO_TBAA_P on that variable.
26398         * c-decl.c (merge_decls): Merge DECL_IS_OPERATOR_NEW flag.
26399
26400 2008-01-18  Uros Bizjak  <ubizjak@gmail.com>
26401
26402         PR debug/34484
26403         * dwarf2out.c (dwarf2out_switch_text_section): Do not guard with
26404         DWARF2_DEBUGGING_INFO.
26405         (dwarf2out_note_section_used): Ditto.  Add prototype.
26406         (have_multiple_function_sections, text_section_used,
26407         cold_text_section_used, *cold_text_sections): Move declarations
26408         before their uses.
26409
26410 2008-01-17  Bob Wilson  <bob.wilson@acm.org>
26411
26412         * config/xtensa/unwind-dw2-xtensa.h (_Unwind_FrameState): Remove pc
26413         field and add signal_ra.
26414         * config/xtensa/unwind-dw2-xtensa.c (uw_frame_state_for): Remove
26415         assignments to frame state pc.  Move end of stack check after
26416         MD_FALLBACK_FRAME_STATE_FOR.
26417         (uw_update_context_1): Use frame state signal_regs if set, instead
26418         of checking signal_frame flag.
26419         (uw_update_context): Use frame state signal_ra if set.
26420         * config/xtensa/linux.h (MD_UNWIND_SUPPORT): Define.
26421         * config/xtensa/linux-unwind.h: New file.
26422
26423 2008-01-18  Bernhard Fischer  <aldot@gcc.gnu.org>
26424
26425         * modulo-sched.c (get_sched_window): Fix comment typo.
26426
26427 2008-01-17  Andrew MacLeod  <amacleod@redhat.com>
26428
26429         PR tree-optimization/34648
26430         * tree-ssa-sccvn.c (visit_use): Expressions which can throw are varying.
26431
26432 2008-01-17  Anatoly Sokolov <aesok@post.ru>
26433
26434         * config/avr/avr.h (LINK_SPEC): Support -mrelax and -mpmem-wrap-around.
26435         * config/avr/avr.opt (mrelax, mpmem-wrap-around): Add.
26436
26437 2008-01-17  Seongbae Park  <seongbae.park@gmail.com>
26438
26439         PR rtl-optimization/34400
26440         * df-core.c (df_worklist_dataflow_overeager,
26441         df_worklist_dataflow_doublequeue): New functions.
26442         (df_worklist_dataflow): Two different worklist solvers.
26443         * params.def (PARAM_DF_DOUBLE_QUEUE_THRESHOLD_FACTOR):
26444         New param.
26445
26446 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
26447
26448         PR testsuite/34821
26449         * doc/invoke.texi: Document the dependence on pthread for fopenmp
26450         and ftree-parallelize-loops.
26451
26452 2008-01-17  Mircea Namolaru  <namolaru@il.ibm.com>
26453
26454         PR rtl-optimization/34826
26455         * loop-doloop (doloop_modify): Update the REG_BR_PROB note.
26456
26457 2008-01-17  Andreas Krebbel  <krebbel1@de.ibm.com>
26458
26459         * global.c (find_reg): Mark the eh regs as used if necessary.
26460         * ra-conflict.c (global_conflicts): Set no_eh_reg flag.
26461         * ra.h (struct allocno): no_eh_reg field added.  Changed
26462         no_stack_reg type to bitfield.
26463
26464 2008-01-17  Eric Botcazou  <ebotcazou@adacore.com>
26465
26466         * tree.c (substitute_in_expr): Add missing 'break'.
26467
26468 2008-01-17  Richard Guenther  <rguenther@suse.de>
26469
26470         PR tree-optimization/34825
26471         * tree-ssa-math-opts.c (is_division_by): Do not recognize
26472         x / x as division to handle.
26473
26474 2008-01-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
26475
26476         * pa64-hpux.h (LIB_SPEC): Add "-lpthread" in shared links if "-mt" or
26477         "-pthread" is specified.
26478         * pa-hpux11.h (LIB_SPEC): Likewise.
26479
26480 2008-01-16  Janis Johnson  <janis187@us.ibm.com>
26481             Peter Bergner  <bergner@vnet.ibm.com>
26482
26483         PR rtl-optimization/33796
26484         * sparseset.c (sparseset_alloc): Use xcalloc rather than xmalloc.
26485
26486 2008-01-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
26487
26488         PR libgfortran/34699
26489         * pa-hpux.h (LINK_SPEC): Only search /lib/pa1.1 and /usr/lib/pa1.1 on
26490         static links.
26491         * pa-hpux10.h (LINK_SPEC): Likewise.
26492         * pa-hpux11.h (LINK_SPEC): Don't search /lib/pa1.1 and /usr/lib/pa1.1.
26493
26494 2008-01-16  Richard Guenther  <rguenther@suse.de>
26495
26496         PR middle-end/32628
26497         * fold-const.c (fold_convert_const_int_from_int): Do not
26498         set overflow if that occured only because of a sign extension
26499         change when converting from/to a sizetype with the same
26500         precision and signedness.
26501
26502 2008-01-16  Uros Bizjak  <ubizjak@gmail.com>
26503
26504         PR debug/34249
26505         * dwarf2out.c (output_call_frame_info): Move output of FDE initial
26506         location address to the correct place.  Update copyright year.
26507
26508 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
26509
26510         * lambda-code.c (lambda_transform_legal_p): Handle the case of
26511         no dependences in the dependence_relations vector.
26512
26513 2008-01-16  Jan Hubicka  <jh@suse.cz>
26514
26515         PR rtl-optimization/31396
26516         * regstat.c (regstat_bb_compute_ri): Compute FREQ_CALLS_CROSSED.
26517         * cfg.c (dump_reg_info): Print it.
26518         * regs.h (struct reg_info_t): add freq_calls_crossed.
26519         (REG_FREQ_CALLS_CROSSED): New macro.
26520         * global.c (global_alloc): Compute freq_calls_crossed for allocno.
26521         (find_reg): Update call of CALLER_SAVE_PROFITABLE.
26522         * regmove.c (optimize_reg_copy_1, optimize_reg_copy_2, fixup_match_2,
26523         regmove_optimize): Update call crossed frequencies.
26524         * local-alloc.c (struct qty): Add freq_calls_crossed.
26525         (alloc_qty): Copute freq_calls_crossed.
26526         (update_equiv_regs, combine_regs): Update REG_FREQ_CALLS_CROSSED.
26527         (find_free_reg): Update call of CALLER_SAVE_PROFITABLE.
26528         * ra.h (struct allocno): Add freq_calls_crossed.
26529
26530 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
26531
26532         * gcc.c (LINK_COMMAND_SPEC): Add includes and link options for
26533         libgomp when compiling with ftree-parallelize-loops.
26534         (GOMP_SELF_SPECS): Add -pthread for ftree-parallelize-loops.
26535
26536 2008-01-16  Richard Guenther  <rguenther@suse.de>
26537
26538         PR tree-optimization/34769
26539         * tree-data-ref.c (initialize_matrix_A): Revert fix for PR34458.
26540         * tree.c (int_cst_value): Instead make this function more
26541         permissive in what it accepts as valid input.  Document this
26542         function always sign-extends the value.
26543
26544 2008-01-16  Jakub Jelinek  <jakub@redhat.com>
26545             Richard Guenther  <rguenther@suse.de>
26546
26547         PR c/34668
26548         * gimplify.c (fold_indirect_ref_rhs): Rename to ...
26549         (gimple_fold_indirect_ref_rhs): ... this.
26550         (gimple_fold_indirect_ref): New function with foldings
26551         that preserve lvalueness.
26552         (gimplify_modify_expr_rhs): Call gimple_fold_indirect_ref_rhs.
26553         * tree-flow.h (gimple_fold_indirect_ref): Declare.
26554         * tree-inline.c (copy_body_r): Use gimple_fold_indirect_ref
26555         to fold an INDIRECT_REF, fall back to the old use of
26556         fold_indirect_ref_1.
26557
26558 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
26559
26560         * tree-data-ref.c (subscript_dependence_tester_1): Call
26561         free_conflict_function.
26562         (compute_self_dependence): Same.
26563
26564 2008-01-16  Uros Bizjak  <ubizjak@gmail.com>
26565
26566         PR debug/34249
26567         * debug.h (dwarf2out_switch_text_section): Move declaration from ...
26568         * dwarf2out.c (dwarf2out_switch_text_section): ... here.  Make
26569         function global.
26570         * final.c (final_scan_insn) [NOTE_INSN_SWITCH_TEXT_SECTIONS]:
26571         Depending on dwarf2out_do_frame, call dwarf2out_switch_text_section
26572         for DWARF2_UNWIND_INFO targets.
26573
26574 2008-01-16  Richard Guenther  <rguenther@suse.de>
26575
26576         PR c/34768
26577         * c-typeck.c (common_pointer_type): Do not merge inconsistent
26578         type qualifiers for function types.
26579
26580 2008-01-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
26581
26582         * tree-parloops.c (gen_parallel_loop): Fix ommision of declaration for
26583         loop_iterator li from previous commit.
26584
26585 2008-01-15  Sebastian Pop  <sebastian.pop@amd.com>
26586
26587         * tree-parloops.c (gen_parallel_loop): Free loop bound estimations.
26588
26589 2008-01-12  Sebastian Pop  <sebastian.pop@amd.com>
26590
26591         * tree-parloops.c (loop_has_blocks_with_irreducible_flag): New.
26592         (parallelize_loops): Don't parallelize irreducible components.
26593
26594 2008-01-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26595
26596         PR c++/24924
26597         * c-opts (c_common_post_options): Do not enable CPP
26598         flag_pedantic_errors by default.
26599
26600 2008-01-14  Eric Botcazou  <ebotcazou@adacore.com>
26601
26602         PR rtl-optimization/31944
26603         * cse.c (remove_pseudo_from_table): New function.
26604         (merge_equiv_classes): Use above function to remove pseudo-registers.
26605         (invalidate): Likewise.
26606
26607 2008-01-13  Richard Guenther  <rguenther@suse.de>
26608
26609         PR middle-end/34601
26610         * emit-rtl.c (set_reg_attrs_for_decl_rtl): Use DECL_MODE
26611         instead of TYPE_MODE to deal with calls from expand_one_error_var.
26612
26613 2008-01-13  Uros Bizjak  <ubizjak@gmail.com>
26614
26615         * gcse.c (cprop_jump): Call validate_unshare_change instead of
26616         validate_change to unshare the source of the PC set.
26617
26618 2008-01-12  Jan Hubicka  <jh@suse.cz>
26619
26620         PR middle-end/32135
26621         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Do not construct
26622         references above array bounds.  This might trigger bounds checks for
26623         pointers to arrays.
26624
26625 2008-01-12  Sebastian Pop  <sebastian.pop@amd.com>
26626
26627         * tree-ssa-ter.c (free_temp_expr_table): Free num_in_part and
26628         new_replaceable_dependencies.
26629
26630 2008-01-12  Doug Kwan  <dougkwan@google.com>
26631
26632         * c-decl.c: (grokdeclarator): Use OPT_Wignored_qualifiers
26633         instead of OPT_Wreturn_type in warning due to ignored return type
26634         qualifiers.
26635         * c-opt.c (c_common_post_option): Add -Wignored-qualifiers to
26636         options included in -Wextra.
26637         * c.opt: New option -Wignored_qualifiers.
26638         * doc/invoke.texi (Warning Options, -Wextra): Add new option
26639         -Wignore_qualifiers.
26640         (-Wignored-qualifiers): Document.
26641         (-Wreturn-type): Remove description of functionality now handled
26642         by -Wignored-qualifiers.
26643
26644 2008-01-12  Eric Botcazou  <ebotcazou@adacore.com>
26645
26646         PR ada/33788
26647         * fold-const.c (fold_unary) <VIEW_CONVERT_EXPR>: Fold an existing
26648         NOP_EXPR if it is between integral types with the same precision.
26649
26650 2008-01-12  Jan Hubicka  <jh@suse.cz>
26651
26652         PR other/28023
26653         * invoke.texi (max-inline-recursive-depth): Fix default value.
26654
26655 2008-01-12  Zdenek Dvorak  <ook@ucw.cz>
26656
26657         * tree-parloops.c (transform_to_exit_first_loop): Cast nit to the
26658         correct type.
26659
26660 2008-01-11  Bob Wilson  <bob.wilson@acm.org>
26661
26662         * config/xtensa/xtensa.c (override_options): Set flag_shlib.
26663
26664 2008-01-11  James E. Wilson  <wilson@specifix.com>
26665
26666         PR target/26015
26667         * config/vax/elf.h (FRAME_POINTER_CFA_OFFSET): Define.
26668
26669 2008-01-11  Anatoly Sokolov <aesok@post.ru>
26670
26671         * config/avr/avr.c (expand_prologue, expand_epilogue): Don't
26672         save/restore frame pointer register and don't use 'call-prologues'
26673         optimization in function with "OS_task" attribute.
26674
26675 2008-01-11  Eric Botcazou  <ebotcazou@adacore.com>
26676
26677         PR middle-end/31309
26678         * expr.c (copy_blkmode_from_reg): Use a mode suited to the size
26679         when copying to memory.
26680
26681 2008-01-11  Steven Bosscher  <stevenb.gcc@gmail.com>
26682
26683         PR rtl-optimization/30905
26684         * cfgcleanup.c: Include dce.h
26685         (crossjumps_occured): New global variable.
26686         (try_crossjump_bb): Exit loop after finding a fallthru edge.
26687         If something changed, set crossjumps_occured to true.
26688         (try_optimize_cfg): Clear crossjumps_occured at the beginning.
26689         Don't add/remove fake edges to exit here...
26690         (cleanup_cfg): ...but do it here, when crossjumping.
26691         Run a fast DCE when successful crossjumps occured in the latest
26692         iteration of try_optimize_cfg.
26693
26694 2008-01-11  Richard Guenther  <rguenther@suse.de>
26695
26696         * tree-ssa-sccvn.c (struct vn_binary_op_s): Move hashcode near opcode.
26697         (struct vn_unary_op_s): Likewise.
26698         (vn_reference_insert): Free old reference on hash collision.
26699
26700 2008-01-10  Raksit Ashok  <raksit@google.com>
26701
26702         PR rtl-optimization/27971
26703         * combine.c (find_split_point): Split PLUS expressions which are
26704         inside a MEM rtx, and whose first operand is complex.
26705
26706 2008-01-10  DJ Delorie  <dj@redhat.com>
26707
26708         * config/m32c/m32c.c (m32c_hard_regno_nregs_1): Renamed from...
26709         (m32c_hard_regno_nregs): ...this, which is now a wrapper.
26710         (m32c_hard_regno_ok): Call the underlying function.
26711
26712 2008-01-10  Richard Guenther  <rguenther@suse.de>
26713
26714         PR middle-end/34683
26715         * tree-cfg.c (tree_merge_blocks): Do not go through the
26716         full-blown folding and stmt updating path if we just deal
26717         with virtual operands.
26718         * tree-ssa-copy.c (may_propagate_copy): Do not short-cut
26719         test for abnormal SSA_NAMEs.
26720
26721 2008-01-10  Andreas Krebbel  <krebbel1@de.ibm.com>
26722
26723         PR middle-end/34641
26724         * reload.c (push_reload): Add assertions.  All constants from
26725         reg_equiv_constant should have been used for replacing the respective
26726         pseudo earlier.
26727         (find_reloads_address): Invoke find_reloads_address_part for
26728         constant taken from the reg_equiv_constant array.
26729
26730 2008-01-10  Steven Bosscher  <stevenb.gcc@gmail.com>
26731
26732         * tree-ssa-sccvn.h (struct vn_ssa_aux): Make the most accessed
26733         field (valnum) the first in the struct.  Replace bools with
26734         unit bit fields.
26735
26736 2008-01-10  Richard Guenther  <rguenther@suse.de>
26737
26738         PR tree-optimization/34651
26739         * tree-sra.c (sra_build_assignment): Sanitize.  Use the correct
26740         types and ordering for masking and converting.
26741
26742 2008-01-09  Sebastian Pop  <sebastian.pop@amd.com>
26743
26744         PR tree-optimization/34017
26745         * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Generate code
26746         also for PHI_NODE expressions.
26747
26748 2008-01-09  Jan Hubicka  <jh@suse.cz>
26749
26750         PR tree-optimization/34708
26751         * tree-inline.c (estimate_num_insns_1): Compute cost of SWITCH_EXPR
26752         based on number of case labels.
26753         (init_inline_once): Remove switch_cost.
26754         * tree-inline.h (eni_weights_d): Remove switch_cost.
26755
26756 2008-01-09  Richard Guenther  <rguenther@suse.de>
26757         Andrew Pinski  <andrew_pinski@playstation.sony.com>
26758
26759         PR middle-end/30132
26760         * gimplify.c (gimplify_cond_expr): Do not create an addressable
26761         temporary if an rvalue is ok or an lvalue is not required.
26762
26763 2008-01-09  Richard Guenther  <rguenther@suse.de>
26764
26765         PR middle-end/34458
26766         * tree-data-ref.c (initialize_matrix_A): Use tree_low_cst,
26767         adjust return type.
26768
26769 2008-01-09  Richard Guenther  <rguenther@suse.de>
26770
26771         PR middle-end/34679
26772         * tree.c (host_integerp): Check for sizetype only if the
26773         type is an integer type.
26774
26775 2008-01-09  Steven Bosscher  <stevenb.gcc@gmail.com>
26776
26777         PR debug/26364
26778         * opts.c (decode_options): Disable inlining of functions called
26779         once if not in unit-at-a-time mode.
26780
26781 2008-01-09  Alexandre Oliva  <aoliva@redhat.com>
26782
26783         * Makefile.in (dse.o): Remove duplicate $(RECOG_H) dependency.
26784
26785 2008-01-08  Richard Guenther  <rguenther@suse.de>
26786
26787         PR middle-end/31863
26788         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Bail
26789         out early if the result will be unused.
26790
26791 2008-01-08  Uros Bizjak  <ubizjak@gmail.com>
26792
26793         PR target/34709
26794         Revert:
26795
26796         2008-01-05  Uros Bizjak  <ubizjak@gmail.com>
26797         * config/i386/i386.c (ix86_builtin_reciprocal): Remove check
26798         for TARGET_RECIP.
26799
26800 2008-01-08  Jan Sjodin  <jan.sjodin@amd.com>
26801
26802         * config/i386/i386.c (k8_cost, amdfam10_cost): Branch costs
26803         for vectorization tuned.
26804
26805 2008-01-08  Richard Guenther  <rguenther@suse.de>
26806
26807         PR tree-optimization/34683
26808         * tree-ssa-operands.c (operand_build_cmp): Export.
26809         * tree-ssa-operands.h (operand_build_cmp): Declare.
26810         * tree-vn.c (vuses_compare): Remove.
26811         (sort_vuses): Use operand_build_cmp.
26812         (sort_vuses_heap): Likewise.
26813         * tree-ssa-sccvn.c (vuses_to_vec): Use VEC_reserve, not VEC_alloc
26814         to re-use old VEC if available.  Do not sort already sorted VUSEs.
26815         (vdefs_to_vec): Do not sort already sorted VDEFs.
26816
26817 2008-01-08  Jakub Jelinek  <jakub@redhat.com>
26818
26819         PR middle-end/34694
26820         * omp-low.c (copy_var_decl): Copy also DECL_SOURCE_LOCATION.
26821
26822 2008-01-08  Uros Bizjak  <ubizjak@gmail.com>
26823
26824         PR target/34702
26825         * doc/invoke.texi (i386 and x86-64 Options) [mrecip]: Document
26826         limitations of reciprocal sequences on x86 targets.
26827
26828 2008-01-08  Richard Guenther  <rguenther@suse.de>
26829
26830         PR tree-optimization/34683
26831         * tree-flow-inline.h (var_ann): Remove overzealous asserts.
26832
26833 2008-01-07  Jakub Jelinek  <jakub@redhat.com>
26834
26835         PR target/34622
26836         * config/darwin.c (darwin_mergeable_string_section): Don't use
26837         .cstring if int_size_in_bytes != TREE_STRING_LENGTH.
26838
26839 2008-01-07  Uros Bizjak  <ubizjak@gmail.com>
26840
26841         PR target/34682
26842         * config/i386/i386.md (neg<mode>2): Rename from negsf2, negdf2 and
26843         negxf2.  Macroize expander using X87MODEF mode iterator.  Change
26844         predicates of op0 and op1 to register_operand.
26845         (abs<mode>2): Rename from abssf2, absdf2 and negxf2.  Macroize
26846         expander using X87MODEF mode iterator.  Change predicates of
26847         op0 and op1 to register_operand.
26848         ("*absneg<mode>2_mixed", "*absneg<mode>2_sse"): Rename from
26849         corresponding patterns and macroize using MODEF macro.  Change
26850         predicates of op0 and op1 to register_operand and remove
26851         "m" constraint. Disparage "r" alternative with "!".
26852         ("*absneg<mode>2_i387"): Rename from corresponding patterns and
26853         macroize using X87MODEF macro.  Change predicates of op0 and op1
26854         to register_operand and remove "m" constraint.  Disparage "r"
26855         alternative with "!".
26856         (absneg splitter with memory operands): Remove.
26857         ("*neg<mode>2_1", "*abs<mode>2_1"): Rename from corresponding
26858         patterns and macroize using X87MODEF mode iterator.
26859         * config/i386/sse.md (negv4sf2, absv4sf2, neg2vdf2, absv2df2):
26860         Change predicate of op1 to register_operand.
26861         * config/i386/i386.c (ix86_expand_fp_absneg_operator): Remove support
26862         for memory operands.
26863
26864 2008-01-07  Nathan Froyd  <froydnj@codesourcery.com>
26865
26866         * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add clause for mcpu=8548.
26867
26868 2008-01-07  Richard Guenther  <rguenther@suse.de>
26869
26870         * basic-block.h (struct edge_def): Pair dest_idx with goto_locus
26871         fields.
26872
26873 2008-01-07  Richard Guenther  <rguenther@suse.de>
26874
26875         PR tree-optimization/34683
26876         * tree-ssa-sccvn.c (vuses_to_vec): Pre-allocate the vector of
26877         VOPs of the needed size to save memory.  Use VEC_quick_push
26878         to save compile-time.
26879         (vdefs_to_vec): Likewise.
26880
26881 2008-01-07  Sa Liu  <saliu@de.ibm.com>
26882
26883         * config/spu/spu.md (divdf3): Genetate inline code for double
26884         division.  The implementation doesn't handle INF or NAN, therefore it
26885         only applies when -ffinite-math-only is given.
26886
26887 2008-01-06  Paolo Carlini  <pcarlini@suse.de>
26888
26889         PR libstdc++/34680
26890         * c-cppbuiltin.c (c_cpp_builtins): Define __GXX_RTTI, if appropriate.
26891         * doc/cpp.texi ([Common Predefined Macros]): Document.
26892
26893 2008-01-06  Uros Bizjak  <ubizjak@gmail.com>
26894
26895         * config/i386/i386.c (ix86_emit_swsqrtsf): Use negative constants in
26896         order to use commutative addition instead of subtraction.
26897
26898 2008-01-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
26899             Mircea Namolaru  <namolaru@il.ibm.com>
26900             Vladimir Yanovsky  <yanov@il.ibm.com>
26901             Revital Eres  <eres@il.ibm.com>
26902
26903         PR tree-optimization/34263
26904         * tree-outof-ssa.c (process_single_block_loop_latch,
26905         contains_tree_r): New functions.
26906         (analyze_edges_for_bb): Call process_single_block_loop_latch
26907         function to empty single-basic-block latch block if possible.
26908
26909 2008-01-05  Uros Bizjak  <ubizjak@gmail.com>
26910
26911         * config/i386/i386.c (ix86_builtin_reciprocal): Remove check
26912         for TARGET_RECIP.
26913         (ix86_emit_swsqrtsf): Do not filter out infinity for rsqrt expansion.
26914
26915 2008-01-05  Richard Sandiford  <rsandifo@nildram.co.uk>
26916
26917         * c-omp.c (check_omp_for_incr_expr): Handle CONVERT_EXPR.
26918
26919 2008-01-05  Richard Sandiford  <rsandifo@nildram.co.uk>
26920
26921         * config/mips/mips.c (mips_in_small_data_p): Reinstate size > 0 check.
26922
26923 2008-01-05  Jakub Jelinek  <jakub@redhat.com>
26924
26925         PR tree-optimization/34618
26926         * tree-outof-ssa.c (create_temp): Copy over DECL_GIMPLE_REG_P
26927         flag from T.
26928
26929 2008-01-05  Uros Bizjak  <ubizjak@gmail.com>
26930
26931         PR target/34673
26932         * config/i386/i386.c (ix86_emit_swsqrtsf): Swap input operands
26933         in the call to gen_rtx_NE.  Remove unneeded VECTOR_MODE_P check.
26934         Update copyright year.
26935
26936         * config/i386/i386.md (rsqrtsf2): Enable for TARGET_SSE_MATH.
26937         Update copyright year.
26938         * config/i386/sse.md (rsqrtv4sf2): Ditto. Unconditionally expand
26939         using NR fixup.
26940
26941 2008-01-05  Zhouyi Zhou  <zhouzhouyi@FreeBSD.org>
26942
26943         * tree-vrp.c (find_conditional_asserts): Remove redundant check that
26944         edge does not point to current bb before changing need_assert.
26945
26946 2008-01-04  Richard Guenther  <rguenther@suse.de>
26947
26948         PR middle-end/34029
26949         * tree-cfg.c (verify_expr): Do not look inside ADDR_EXPRs
26950         for verifying purposes if they are is_gimple_min_invariant.
26951
26952 2008-01-04  Aldy Hernandez  <aldyh@redhat.com>
26953
26954         PR tree-optimization/34448
26955         PR tree-optimization/34465
26956         * gimplify.c (gimplify_init_constructor): Add new parameter
26957         notify_temp_creation.  Use it.
26958         (gimplify_modify_expr_rhs): Take volatiles into account when
26959         optimizing constructors.
26960         Do not optimize constructors if gimplify_init_constructor will dump to
26961         memory.
26962         * gcc.dg/tree-ssa/pr32901.c: Tests const volatiles.
26963         * gcc.c-torture/compile/pr34448.c: New.
26964
26965 2008-01-04  Jakub Jelinek  <jakub@redhat.com>
26966
26967         PR gcov-profile/34609
26968         * tree-inline.c (declare_return_variable): Set TREE_ADDRESSABLE on
26969         return_slot if result is TREE_ADDRESSABLE.
26970
26971 2008-01-04  Richard Sandiford  <rsandifo@nildram.co.uk>
26972
26973         * config/mips/mips.md (sqrt_condition): Tweak comment.
26974         (recip_condition): Likewise.  Require TARGET_FLOAT64 for DFmode.
26975
26976 2008-01-03  Tom Tromey  <tromey@redhat.com>
26977
26978         PR c/34457
26979         * c-common.c (c_type_hash): Handle VLAs.
26980
26981 2008-01-03  Jan Hubicka  <jh@suse.cz>
26982
26983         PR tree-optimization/31081
26984         * tree-inline.c (remap_ssa_name): Initialize uninitialized SSA vars to
26985         0 when inlining and not inlining to first basic block.
26986         (remap_decl): When var is initialized to 0, don't set default_def.
26987         (expand_call_inline): Set entry_bb.
26988         * tree-inline.h (copy_body_data): Add entry_bb.
26989
26990 2008-01-03  Jakub Jelinek  <jakub@redhat.com>
26991
26992         PR c++/34619
26993         * cgraphunit.c (cgraph_build_static_cdtor): set_cfun back to NULL
26994         before returning.
26995
26996         PR tree-optimization/29484
26997         * tree-inline.c (inline_forbidden_p_2): New function.
26998         (inline_forbidden_p): Disallow inlining if some static var
26999         has an address of a local LABEL_DECL in its initializer.
27000         * doc/extend.texi (Labels as Values): Document &&foo behaviour
27001         vs. inlining.
27002
27003 2008-01-03  Sebastian Pop  <sebastian.pop@amd.com>
27004
27005         PR tree-optimization/34635
27006         * tree-data-ref.c (add_other_self_distances): Make sure that the
27007         evolution step is constant.
27008
27009 2008-01-03  Jakub Jelinek  <jakub@redhat.com>
27010
27011         PR middle-end/34608
27012         * omp-low.c (expand_omp_parallel): Purge dead EH edges in the child fn.
27013
27014 2008-01-02  Richard Sandiford  <rsandifo@nildram.co.uk>
27015
27016         * tree-sra.c (scalarize_init): Insert the generate_element_init
27017         statements after the generate_element_zero statements.
27018
27019 2008-01-02  Richard Guenther  <rguenther@suse.de>
27020
27021         PR middle-end/34093
27022         PR middle-end/31976
27023         * tree-ssa-operands.c (ssa_operand_alloc): Also allocate a buffer
27024         for very large number of operands instead of ICEing.
27025
27026 2008-01-02  Arthur Norman <acn1@cam.ac.uk>
27027
27028         PR target/34013
27029         * config/i386/i386.c (ix86_expand_prologue): Save red-zone
27030         while stack probing.
27031
27032 2008-01-01  Douglas Gregor  <doug.gregor@gmail.com>
27033
27034         * c-opts.c (sanitize_cpp_opts): Don't warn about "long long" when
27035         in C++0x mode.
27036
27037 2008-01-01  Volker Reichelt  <v.reichelt@netcologne.de>
27038
27039         PR libmudflap/26442
27040         * tree-mudflap.c (mx_register_decls): Guard warning by
27041         !DECL_ARTIFICIAL check.
27042
27043 2008-01-01  Jakub Jelinek  <jakub@redhat.com>
27044
27045         * config/i386/sse.md (sse5_pperm, sse5_pperm_pack_v2di_v4si,
27046         sse5_pperm_pack_v4si_v8hi, sse5_pperm_pack_v8hi_v16qi,
27047         sse5_perm<mode>): Fix constraints.