OSDN Git Service

a2949209d0499465db7727828bc3aae780b892d6
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2007-07-04  Richard Guenther  <rguenther@suse.de>
2
3         PR tree-optimization/32482
4         * tree-ssa-ifcombine.c (recognize_single_bit_test): Use the
5         original ssa name if we didn't find a shift expression.
6         Fix shift constant for bit zero test.
7
8 2007-07-04  Richard Sandiford  <richard@codesourcery.com>
9
10         * config/sh/lib1funcs.asm (ic_invalidate): Align constant pool.
11
12 2007-07-04  Richard Sandiford  <richard@codesourcery.com>
13
14         * config.gcc (arm-wrs-vxworks): Don't include svr4.h.
15         * config/vxworks.h (PTRDIFF_TYPE, SIZE_TYPE, TARGET_POSIX_IO): Define.
16         * config/arm/vxworks.h (ASM_SPEC): Delete.
17         (SUBTARGET_EXTRA_ASM_SPEC): Define.
18
19 2007-07-04  Sebastian Pop  <sebpop@gmail.com>
20
21         * tree-data-ref.h (data_dependence_relation): New flag reversed_p.
22         (DDR_REVERSED_P): New.
23         * tree-data-ref.c (initialize_data_dependence_relation,
24         build_classic_dist_vector): Set DDR_REVERSED_P.
25
26 2007-07-04  Sebastian Pop  <sebpop@gmail.com>
27
28         PR middle-end/32457
29         * tree-data-ref.c (analyze_siv_subscript_cst_affine,
30         compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
31         init_omega_for_ddr_1): Use non conservative number of iterations
32         estimations.
33         (analyze_subscript_affine_affine): Use HOST_WIDE_INT instead of int.
34         (analyze_siv_subscript): Remove FIXME and reinitialization of 
35         last_conflicts to chrec_dont_know.
36         * testsuite/gfortran.dg/vect/pr32457.f90: New.
37
38 2007-07-04  Douglas Gregor  <doug.gregor@gmail.com>
39
40         * tree.c (maybe_canonicalize_argtypes): Improve description.
41
42 2007-07-04  Douglas Gregor  <doug.gregor@gmail.com>
43
44         * tree.c (maybe_canonicalize_argtypes): New.
45         (build_function_type): Set canonical type.
46         (build_method_type_directly): Ditto.
47         (reconstruct_complex_type): Rebuild the METHOD_TYPE node
48         properly.
49
50 2007-07-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
51
52         * tree-ssa-loop-ivopts.c (strip_offset_1): Treat POINTER_PLUS_EXPR
53         like PLUS_EXPR.
54         (rewrite_use_nonlinear_expr): Likewise.
55
56 2007-07-03  Seongbae Park  <seongbae.park@gmail.com>
57
58         * rtl.def (UNSPEC, USE, CLOBBER): More comments.
59
60 2007-07-04  Ben Elliston  <bje@au.ibm.com>
61
62         * dwarf2out.c: Move DWARF2 abbreviation glossary closer to the top
63         of this file.
64
65         * c-objc-common.c (c_types_compatible_p): Fix indentation.
66
67         * doc/tm.texi (Run-time Target): Capitalise "CPU".
68         (Exception Handling): Likewise.
69
70 2007-07-03  Jan Hubicka  <jh@suse.cz>
71
72         * ifcvt.c (find_cond_trap): Avoid invalid RTL sharing.
73
74 2007-07-03  Eric Christopher  <echristo@apple.com>
75
76         * doc/cppopts.texi: Add conflicting option note to -dM.
77         * doc/invoke.texi: Add note about possible conflicts with
78         -E for -dCHARS and note that -dM will not produce
79         any results if there is no machine dependent reorg.
80         
81 2007-07-03  Geoffrey Keating  <geoffk@apple.com>
82
83         * tree.h (DECL_ALIGN): Back out previous change.
84
85 2007-07-03  Joseph Myers  <joseph@codesourcery.com>
86
87         * configure.ac: Test for .dtprelword support on MIPS.
88         * configure, config.in: Regenerate.
89         * config/mips/mips.c (mips_output_dwarf_dtprel): New.
90         (TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
91
92 2007-07-03  Julian Brown  <julian@codesourcery.com>
93
94         * config.gcc (with_fpu): Allow --with-fpu=vfp3.
95         * config/arm/aout.h (REGISTER_NAMES): Add D16-D31.
96         * config/arm/aof.h (REGISTER_NAMES): Add D16-D31.
97         * config/arm/arm.c (FL_VFPV3): New flag for VFPv3 processor
98         capability.
99         (all_fpus): Add FPUTYPE_VFP3.
100         (fp_model_for_fpu): Add VFPv3 field.
101         (arm_rtx_costs_1): Give cost to VFPv3 constants.
102         (vfp3_const_double_index): New function. Return integer index of
103         VFPv3 constant suitable for fconst[sd] insns, or -1 if constant
104         isn't suitable.
105         (vfp3_const_double_rtx): New function. True if VFPv3 is enabled
106         and argument represents a valid RTX for a VFPv3 constant.
107         (vfp_output_fldmd): Split fldmd with > 16 registers in the list into
108         two instructions.
109         (vfp_emit_fstmd): Similar, for fstmd.
110         (arm_print_operand): Implement new code 'G' for VFPv3 floating-point
111         constants, represented as integer indices.
112         (arm_hard_regno_mode_ok): Use VFP_REGNO_OK_FOR_SINGLE,
113         VFP_REGNO_OK_FOR_DOUBLE macros.
114         (arm_regno_class): Handle VFPv3 d0-d7, low, high register split.
115         (arm_file_start): Set float-abi attribute for VFPv3, and output
116         correct ".fpu" assembler directive.
117         (arm_dbx_register_numbering): Add FIXME.
118         * config/arm/arm.h (TARGET_VFP3): New macro. Target supports VFPv3.
119         (fputype): Add FPUTYPE_VFP3.
120         (FIXED_REGISTERS): Add 32 registers for D16-D31.
121         (CALL_USED_REGISTERS): Likewise.
122         (CONDITIONAL_REGISTER_USAGE): Add note about conditional definition
123         of LAST_VFP_REGNUM. Make D16-D31 caller-saved, if present.
124         (LAST_VFP_REGNUM): Extend available VFP registers for VFPv3.
125         (D7_VFP_REGNUM): New.
126         (LAST_LO_VFP_REGNUM, FIRST_HI_VFP_REGNUM, LAST_HI_VFP_REGNUM)
127         (VFP_REGNO_OK_FOR_SINGLE, VFP_REGNO_OK_FOR_SINGLE)
128         (VFP_REGNO_OK_FOR_DOUBLE): Define new macros.
129         (FIRST_PSEUDO_REGISTER): Shift up to 128 to accommodate VFPv3.
130         (REG_ALLOC_ORDER): Adjust for VFPv3.
131         (reg_class): Add VFP_D0_D7_REGS, VFP_LO_REGS, VFP_HI_REGS.
132         (REG_CLASS_NAMES): Add entries corresponding to VFP_D0_D7_REGS,
133         VFP_LO_REGS, VFP_HI_REGS.
134         (REG_CLASS_CONTENTS): Likewise. Extend contents for VFP_REGS.
135         (IS_VFP_CLASS): Define macro.
136         (SECONDARY_OUTPUT_RELOAD_CLASS, SECONDARY_INPUT_RELOAD_CLASS): Use
137         IS_VFP_CLASS.
138         (REGISTER_MOVE_COST): Likewise.
139         * config/arm/arm-protos.h (vfp3_const_double_rtx): Add prototype.
140         * config/arm/vfp.md (VFPCC_REGNUM): Redefine as 127.
141         (*arm_movsi_vfp, *thumb2_movsi_vfp, *movsfcc_vfp)
142         (*thumb2_movsfcc_vfp, *abssf2_vfp, *negsf2_vfp, *addsf3_vfp)
143         (*subsf3_vfp, *divsf_vfp, *mulsf_vfp, *mulsf3negsf_vfp)
144         (*mulsf3addsf_vfp, *mulsf3subsf_vfp, *mulsf3negsfaddsf_vfp)
145         (*extendsfdf2_vfp, *truncdfsf2_vfp, *truncsisf2_vfp)
146         (*truncsidf2_vfp, fixuns_truncsfsi2, fixuns_truncdfsi2)
147         (*floatsisf2_vfp, *floatsidf2_vfp, floatunssisf2)
148         (floatunssidf2, *sqrtsf2_vfp, *cmpsf_split_vfp)
149         (*cmpsf_trap_split_vfp, *cmpsf_vfp, *cmpsf_trap_vfp): Use 't'
150         where appropriate for single-word registers.
151         (*movsf_vfp, *thumb2_movsf_vfp, *movdf_vfp, *thumb2_movdf_vfp):
152         As above. Fix type attributes.
153         * config/arm/constraints.md (register_contraint "t"): Define.
154         (register_constraint "w"): Change to D0-D15, or D0-D31 for
155         VFPv3/NEON.
156         (register_constraint "x"): Define.
157         (constraint "Dv"): Define.
158
159 2007-07-03  Geoffrey Keating  <geoffk@apple.com>
160
161         * tree.h (DECL_ALIGN): Prevent use on a FUNCTION_DECL.
162
163 2007-07-03  Tom Tromey  <tromey@redhat.com>
164
165         * c-parser.c (objc_pq_context): Removed.
166         (objc_need_raw_identifier): Likewise.
167         (c_parser) <objc_pq_context>: New field.
168         <objc_need_raw_identifier>: Likewise.
169         (OBJC_NEED_RAW_IDENTIFIER): Removed.
170         (c_lex_one_token): Update.
171         (c_parser_objc_protocol_definition): Update.
172         (c_parser_objc_method_definition): Update.
173         (c_parser_objc_methodproto): Update.
174         (c_parser_declspecs): Update.
175
176 2007-07-03  David Ung  <davidu@mips.com>
177
178         * config/mips/mips.c (mips_issue_rate): Return 4 for 74K processors.
179
180 2007-07-03  David Ung  <davidu@mips.com>
181             Richard Sandiford  <richard@codesourcery.com>
182
183         * doc/invoke.texi: Document -march=74kf3_2.
184         * config/mips/mips.h (PROCESSOR_74KF3_2): New processor_type.
185         (TUNE_74K): Check for it.
186         * config/mips/mips.c (mips_cpu_info): Add 74kf3_2.
187         (mips_rtx_cost_data): Add an entry for PROCESSOR_74KF3_2.
188         * config/mips/mips.md (cpu): Add 74kf3_2.
189         * config/mips/74k.md (r74k_int_logical, r74k_int_arith, r74k_int_nop)
190         (r74k_int_cmove, r74k_int_mult, r74k_int_mul3, r74k_int_mfhilo)
191         (r74k_int_mthilo, r74k_int_div, r74k_int_call, r74k_int_jump)
192         (r74k_int_load, r74k_int_store, r74k_unknown, r74k_multi): Add
193         74kf3_2 to the CPU list.
194         (r74kf3_2_fadd, r74kf3_2_fmove, r74kf3_2_fload, r74kf3_2_fstore)
195         (r74kf3_2_fmul_sf, r74kf3_2_fmul_df, r74kf3_2_fdiv_sf)
196         (r74kf3_2_fdiv_df, r74kf3_2_frsqrt_sf, r74kf3_2_frsqrt_df)
197         (r74kf3_2_fcmp, r74kf3_2_fcvt, r74kf3_2_fxfer_to_c1)
198         (r74kf3_2_fxfer_from_c1): New insn reservations.
199
200 2007-07-03  Richard Sandiford  <richard@codesourcery.com>
201             David Ung  <davidu@mips.com>
202
203         * doc/invoke.texi: Replace -march=24kf with -march=24kf2_1 and
204         -march=24kx with -march=24kf1_1.  Likewise 24ke[fx], 34k[fx]
205         and 74k[fx].  Document aliases for the new options.
206         * config/mips/mips.h (PROCESSOR_24KF): Rename to...
207         (PROCESSOR_24KF2_1): ...this.
208         (PROCESSOR_24KX): Rename to...
209         (PROCESSOR_24KF1_1): ...this.
210         (PROCESSOR_74KF): Rename to...
211         (PROCESSOR_74KF2_1): ...this.
212         (PROCESSOR_74KX): Rename to...
213         (PROCESSOR_74KF1_1): ...this.
214         (TUNE_74K): Update PROCESSOR_* names.
215         * config/mips/mips.c (mips_cpu_info): Add 24kf2_1 as a synonym
216         for 24kf.  Add 24kf1_1 and 24kfx as synonyms for 24kx.  Likewise
217         the 24ke*, 34k* and 74k* processors.  Update PROCESSOR_* names.
218         (mips_rtx_cost_data): Update processor names in comments.
219         (mips_issue_rate): Update PROCESSOR_* names.
220         * config/mips/mips.md (cpu): Rename 24kf to 24kf2_1, 24kx to
221         24kf1_1, 74kf to 74kf2_1 and 74kx to 74kf1_1.
222         * config/mips/24k.md: Rename FPU-related r24k_* insn reservations
223         to r24kf2_1_*.  Rename r24kx_* insn reservations to r24kf1_1_*.
224         Update cpu attribute names.
225         (r24k_fpu_iss): Rename this reservation to...
226         (r24kf2_1_fpu_iss): ...this and update all uses.
227         (r24kx_fpu_iss): Rename this reservation to...
228         (r24kf1_1_fpu_iss): ...this and update all uses.
229         * config/mips/74k.md: Rename FPU-related r74kf_* insn reservations
230         to r74kf2_1_*.  Rename r74kx_* insn reservations to r74kf1_1_*.
231         Update cpu attribute names.
232
233 2007-07-01  Kaz Kojima  <kkojima@gcc.gnu.org>
234
235         * config/m32r/constraints.md: New file.
236         * config/m32r/m32r.c: Include tm-constrs.h.
237         (small_data_operand): Use satisfies_constraint_* instead of macro.
238         (addr24_operand, gen_compare): Likewise.
239         * config/m32r/m32r.h (REG_CLASS_FROM_LETTER): Remove.
240         (INT8_P, UPPER16_P, UINT32_P, UINT5_P, INVERTED_SIGNED_8BIT,
241         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
242         EXTRA_CONSTRAINT): Likewise.
243         * config/m32r/m32r.md: Include constraints.md.
244         (*movsi_insn): Use satisfies_constraint_* instead of macro.
245         (andsi3, iorsi3, xorsi3, seq_insn+1, sne): Likewise.
246         * config/m32r/predicates.md (conditional_move_operand): Likewise.
247         (two_insn_const_operand, int8_operand, uint16_operand,
248         reg_or_int16_operand, reg_or_uint16_operand,
249         reg_or_cmp_int16_operand, cmp_int16_operand,
250         seth_add3_operand): Likewise.
251
252 2007-07-03  Eric Christopher  <echristo@gmail.com>
253
254         * libgcc2.h: Conditionally declare __bswapsi2 and
255         __bswapdi2.
256         
257 2007-07-03  H.J. Lu  <hongjiu.lu@intel.com>
258
259         * ddg.c (check_sccs): Define only if ENABLE_CHECKING is
260         defined.
261
262 2007-07-03  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
263
264         PR target/28307
265         * gthr-posix.h [SUPPORTS_WEAK && GTHREAD_USE_WEAK]
266         (__gthrw_pragma): Provide default definition.
267         (__gthrw2): Use it.
268         * gthr-posix.c (__gthrw_pragma): Define.
269
270 2007-07-03  Daniel Berlin  <dberlin@dberlin.org>
271
272         * tree-ssa-sccvn.c (set_ssa_val_to): Check for operand_equal_p
273         before declaring inequality.
274
275 2007-07-03  Rask Ingemann Lambertsen  <rask@sygehus.dk>
276
277         * combine.c (recog_for_combine): Log the success or failure of
278           matching new insn patterns against the machine description in
279           detailed dumps.
280
281 2007-07-03  Revital Eres  <eres@il.ibm.com>
282
283         * ddg.c (print_sccs): New function.
284         (check_sccs): New function.
285         (create_ddg_all_sccs): Use it.
286         * ddg.h (print_sccs): Declare.
287         * modulo-sched.c (sms_order_nodes): Call print_sccs.
288
289 2007-07-03  Uros Bizjak  <ubizjak@gmail.com>
290
291         * targhooks.h (default_mode_for_suffix): New function declaration.
292         * targhooks.c (default_mode_for_suffix): New default target hook.
293         * target.h (struct c): New structure in the targetm struct.
294         (mode_for_suffix): New target hook as part of struct c.
295         target-def.h (TARGET_C_MODE_FOR_SUFFIX): Define as
296         default_mode_for_suffix.
297         (TARGET_C): New define.
298         * c-lex.c: Include "target.h".
299         (interpret_float): Use targetm.c.mode_for_suffix to determine
300         the mode for a given non-standard suffix.
301         Makefile.in (c-lex.o): Depend on $(TARGET_H).
302
303         * config/i386/i386.c (ix86_c_mode_for_suffix): New static function.
304         (TARGET_C_MODE_FOR_SUFFIX): Define to ix86_c_mode_for_suffix.
305
306         * doc/extend.texi (Floating Types): New node.  Document __float80 and
307         __float128 types.  Document 'w', 'W', 'q' and 'Q' suffixes.
308
309 2007-07-03  Kaz Kojima  <kkojima@gcc.gnu.org>
310
311         PR target/32506
312         * config/sh/sh.md (udivsi3_i1_media): Use target_reg_operand
313         predicate instead of target_operand.
314         (divsi3_i1_media, divsi3_media_2): Likewise.
315
316 2007-07-02  Eric Botcazou  <ebotcazou@adacore.com>
317
318         * tree.h (alias_sets_might_conflict_p): Rename into
319         alias_sets_must_conflict_p.
320         * alias.c (alias_sets_might_conflict_p): Likewise.
321         (alias_sets_conflict_p): Use it.
322         (objects_must_conflict_p): Likewise.
323         * c-common.c (strict_aliasing_warning): Adjust.
324
325 2007-07-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>
326
327         * rtlhooks.c (gen_lowpart_if_possible): Check for
328         invalid subreg before calling gen_lowpart_SUBREG.
329
330 2007-07-02  Geoffrey Keating  <geoffk@apple.com>
331
332         * config/darwin9.h: Add copyright notice.
333         (LINK_COMMAND_SPEC): Add comment.
334         (DARWIN_LIBSYSTEM_HAS_UNWIND): Define.
335         * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Conditionalise on
336         DARWIN_LIBSYSTEM_HAS_UNWIND.
337
338 2007-07-02  Jakub Jelinek  <jakub@redhat.com>
339
340         PR libgomp/32468
341         * omp-low.c (check_combined_parallel): New function.
342         (lower_omp_parallel): Call it via walk_stmts, set
343         OMP_PARALLEL_COMBINED if appropriate.
344         (determine_parallel_type): If OMP_FOR resp. OMP_SECTIONS
345         isn't the only statement in WS_ENTRY_BB or OMP_RETURN
346         the only one in PAR_EXIT_BB and not OMP_PARALLEL_COMBINED,
347         don't consider it as combined parallel.
348
349 2007-07-02  Richard Sandiford  <richard@codesourcery.com>
350
351         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
352         (gcc_tooldir): Likewise.
353         * configure: Regenerate.
354         * Makefile.in (libsubdir_to_prefix): New variable, based on the
355         old configure.ac gcc_tooldir setting.
356         (prefix_to_exec_prefix): New variable.
357         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
358         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
359
360 2007-07-02  Daniel Berlin  <dberlin@dberlin.org>
361
362         Fix PR tree-optimization/32583
363         Fix PR tree-optimization/32584
364         * tree-ssa-pre.c (phi_translate): Always pass seen bitmap.
365         (phi_translate_set): Use phi_translate directly now.
366         (make_values_for_stmt): Don't value number RHS if we already know
367         it is constant.
368
369 2007-07-02  Steve Ellcey  <sje@cup.hp.com>
370             Jim Wilson <wilson@specifix.com>
371
372         PR target/31684
373         * haifa-sched.c (add_to_speculative_block): Change copy_rtx to
374         copy_insn.
375
376 2007-07-02  Sandra Loosemore  <sandra@codesourcery.com>
377             Richard Sandiford  <richard@codesourcery.com>
378             Nigel Stephens  <nigel@mips.com>
379
380         * config/mips/mips-protos.h (mips16e_save_restore_info): New struct.
381         (mips16e_output_save_restore): Declare.
382         (mips16e_save_restore_pattern_p): Likewise.
383         * config/mips/mips.h (GENERATE_MIPS16E_SAVE_RESTORE): New macro.
384         * config/mips/mips.c (MIPS_MAX_FIRST_STACK_STEP): Return 0x7f8
385         for GENERATE_MIPS16E_SAVE_RESTORE.  Return 0x400 for TARGET_MIPS16
386         && !GENERATE_MIPS16E_SAVE_RESTORE && !TARGET_64BIT.
387         (BITSET_P): New global macro, extracted from...
388         (mips_for_each_saved_reg): ...here.
389         (mips16e_save_restore_info): New struct.
390         (mips16e_s2_s8_regs, mips16e_a0_a3_regs): New variables.
391         (mips16e_save_restore_regs): New variable.
392         (mips_split_plus, mips16e_find_first_register): New functions.
393         (mips16e_mask_registers): New function.
394         (compute_frame_size): Expand the commentary before the function.
395         Enforce the MIPS16e save and restore register range restrictions.
396         Pad the general register save area at the low end.
397         (mips16e_save_restore_reg, mips16e_build_save_restore)
398         (mips16e_save_restore_pattern_p, mips16e_add_register_range)
399         (mips16e_output_save_restore, mips16e_collect_propagate_value)
400         (mips16e_collect_argument_save, mips16e_collect_argument_saves):
401         New functions.
402         (mips_expand_prologue, mips_expand_epilogue): Handle
403         GENERATE_MIPS16E_SAVE_RESTORE.
404         * config/mips/mips.md (*mips16e_save_restore): New pattern.
405
406 2007-07-02  Uros Bizjak  <ubizjak@gmail.com>
407
408         PR tree-optimization/31966
409         PR tree-optimization/32533
410         * tree-if-conv.c (add_to_dst_predicate_list): Use "edge", not
411         "basic_block" description as its third argument.  Update function
412         calls to get destination bb from "edge" argument.  Save "cond" into
413         aux field of the edge.  Update prototype for changed arguments.
414         (if_convertible_loop_p): Clear aux field of incoming edges if bb
415         contains phi node.
416         (find_phi_replacement_condition): Operate on incoming edges, not
417         on predecessor blocks.  If there is a condition saved in the
418         incoming edge aux field, AND it with incoming bb predicate.
419         Return source bb of the first edge.
420         (clean_predicate_lists): Clean aux field of outgoing node edges.
421         (tree_if_conversion): Do not initialize cond variable. Move
422         variable declaration into the loop.
423         (replace_phi_with_cond_gimple_modify_stmt): Remove unneded
424         initializations of new_stmt, arg0 and arg1 variables.
425
426 2007-07-02  Jakub Jelinek  <jakub@redhat.com>
427
428         * tree-nrv.c (dest_safe_for_nrv_p): Grok any handled_component_p,
429         SSA_NAMEs, RESULT_DECLs and PARM_DECLs.
430
431 2007-07-02  Richard Guenther  <rguenther@suse.de>
432
433         * tree-ssa.c (useless_type_conversion_p): Document
434         future intent as defining the middle-end type system.
435         Re-structure to call langhook last, group by type class,
436         mark questionable parts.
437
438 2007-07-02  Richard Guenther  <rguenther@suse.de>
439
440         * tree-flow.h (types_compatible_p): Declare.
441         * tree-ssa.c (types_compatible_p): New function.
442         * ipa-type-escape.c (discover_unique_type): Use
443         types_compatible_p instead of lang_hooks.types_compatible_p.
444         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Likewise.
445         * tree-vn.c (expressions_equal_p): Likewise.
446         * tree.c (fields_compatible_p): Likewise.
447         * tree-ssa-dom.c (avail_expr_eq): Likewise.
448         (cprop_operand): Use useless_type_conversion_p instead of
449         lang_hooks.types_compatible_p.
450         * tree-inline.c (setup_one_parameter): Likewise.
451         (declare_return_variable): Likewise.
452         * tree-nrv.c (tree_nrv): Likewise.
453         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
454         (maybe_fold_offset_to_component_ref): Likewise.
455         (maybe_fold_offset_to_reference): Likewise.
456         * tree-ssa-copy.c (may_propagate_copy): Likewise.
457         (merge_alias_info): Likewise.
458         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise.
459         * tree-ssa-phiopt.c (conditional_replacement): Likewise.
460         * tree-ssa-reassoc.c (optimize_ops_list): Likewise.
461         * tree-tailcall.c (find_tail_calls): Likewise.
462         * tree-vect-generic.c (expand_vector_operations_1): Likewise.
463         * gimplify.c (canonicalize_addr_expr): Likewise.
464         (fold_indirect_ref_rhs): Likewise.
465         (gimplify_addr_expr): Likewise.  Swap parameters to cpt_same_type.
466         (cpt_same_type): Likewise.
467         (check_pointer_types_r): Swap parameters to cpt_same_type
468         where appropriate.
469         * fold-const.c (fold_convert): Revert fix for PR15988.
470         * tree-inline.c (setup_one_parameter): Instead fix it here by
471         using fold_build1 instead of fold_convert and checking for
472         error_mark_node.  Convert only if the conversion is necessary.
473
474 2007-07-02  Joseph Myers  <joseph@codesourcery.com>
475
476         * configure.ac: Check for .gnu_attribute on Power.
477         * configure: Regenerate.
478         * config/rs6000/rs6000.c (rs6000_file_start): If supported, output
479         attribute for floating-point ABI.
480
481 2007-07-02  Ira Rosen  <irar@il.ibm.com>
482
483         PR tree-optimization/32230
484         PR tree-optimization/32477
485         * tree-vect-analyze.c (vect_analyze_data_refs): Fail if base 
486         address is a constant.
487
488 2007-07-02  Richard Sandiford  <richard@codesourcery.com>
489
490         * config.gcc (mipsisa32-*-elf*, mipsisa32el-*-elf*)
491         (mipsisa32r2-*-elf*, mipsisa32r2el-*-elf*)
492         (mipsisa64-*-elf*, mipsisa64el-*-elf*): Combine top-level
493         stanzas.  Use the first part of the triplet to set MIPS_ISA_DEFAULT.
494         Remove redundant setting of MASK_FLOAT64 and MASK_64BIT for the
495         64-bit targets.  Add support for *-elfoabi*.
496         * config/mips/t-isa3264 (MULTILIB_OPTIONS, MULTILIB_DIRNAMES): Use
497         different settings if $(tm_defines) does not select the EABI.
498         (MULTILIB_EXCLUSIONS): Define in those circumstances.
499         * config/mips/mips.h (MIPS_ISA_LEVEL_OPTION_SPEC): New macro.
500         (MIPS_ARCH_OPTION_SPEC): Likewise.
501         (MIPS_ISA_LEVEL_SPEC): Likewise.
502         (OPTION_DEFAULT_SPECS): Use MIPS_ARCH_OPTION_SPEC.
503         * config/mips/elfoabi.h: New file.
504
505 2007-07-02  Richard Guenther  <rguenther@suse.de>
506
507         * tree-flow.h (tree_ssa_useless_type_conversion_1): Rename to ...
508         (useless_type_conversion_p): ... this.
509         * tree-ssa.c (tree_ssa_useless_type_conversion_1): Rename to ...
510         (useless_type_conversion_p): ... this.
511         * builtins.c (fold_builtin_memory_op): Rename
512         tree_ssa_useless_type_conversion_1 to useless_type_conversion_p.
513         * tree-cfg.c (verify_expr): Likewise.
514         * tree-ssa-address.c (tree_ssa_useless_type_conversion_1): Likewise.
515         * tree-ssa-ccp.c (ccp_fold): Likewise.
516         * tree-ssa-copy.c (may_propagate_copy): Likewise.
517         * tree-ssa-dom.c (eliminate_redundant_computations): Likewise.
518         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise.
519         * tree-ssa-loop-niter.c (refine_bounds_using_guard): Likewise.
520         * tree-ssa-pre.c (eliminate): Likewise.
521         * tree-ssa.c (delete_tree_ssa): Likewise.
522         (tree_ssa_useless_type_conversion): Likewise.
523         * tree.c (build2_stat): Likewise.
524
525 2007-07-01  Daniel Berlin  <dberlin@dberlin.org>
526
527         Fix PR tree-optimization/32571
528         * tree-ssa-sccvn.c (visit_use): Shortcut copies to avoid
529         simplifying them.
530
531 2007-07-01  Daniel Berlin  <dberlin@dberlin.org>
532
533         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle constants
534         and other expected operations explicitly, change default to
535         gcc_unreachable. 
536
537 2007-07-01  Daniel Jacobowitz  <dan@codesourcery.com>
538
539         * config/arm/arm.c (arm_cannot_copy_insn_p): Do not expect a
540         PARALLEL.
541         * config/arm/arm.md (pic_add_dot_plus_four, pic_add_dot_plus_eight)
542         (tls_load_dot_plus_eight): Move the label number into the unspec.
543         * config/arm/thumb2.md (pic_load_dot_plus_four): Likewise.
544
545 2007-07-01  Andreas Schwab  <schwab@suse.de>
546
547         * dwarf2out.c (initial_return_save): Define only if used.
548
549 2007-07-01  Kenneth Zadeck <zadeck@naturalbridge.com>
550
551         Unreverting Richard's Revert of:
552
553         2007-06-27  Richard Sandiford  <richard@codesourcery.com>
554
555         * dce.c (deletable_insn_p_1): New function, split out from...
556         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
557         specially, not those inside PARALLELs.  Remove BODY argument
558         and adjust recursive call accordingly.
559         (prescan_insns_for_dce): Update call to delete_insn_p.
560
561 2007-07-01  Vladimir Yanovsky  <yanov@il.ibm.com>
562             Revital Eres  <eres@il.ibm.com>
563
564         * ddg.c (create_ddg_all_sccs): Fix missed
565         initialization of scc_nodes.
566
567 2007-07-01  Uros Bizjak  <ubizjak@gmail.com>
568
569         PR middle-end/32559
570         * fold-const.c (fold-binary) [PLUS_EXPR]: Convert ~X + X to 1 or
571         X + ~X to 1 only for INTEGRAL_TYPE_P type.
572
573 2007-06-30  Joseph Myers  <joseph@codesourcery.com>
574
575         * configure.ac: Check for .gnu_attribute on MIPS.
576         * configure, config.in: Regenerate.
577         * config/mips/mips.c (mips_file_start): If supported, output
578         attribute for floating-point ABI.
579
580 2007-06-30  Uros Bizjak  <ubizjak@gmail.com>
581
582         PR target/32433
583         * config/i386/i386.md (ffssi2): Expand as ffs_cmove for TARGET_CMOVE.
584         (ffs_cmove): New expander to expand using ctz pattern.
585         (*ffs_cmove): Remove pattern.
586         (*ffs_no_cmove): Enable only for !TARGET_CMOVE.
587         (ffsdi2): Expand using ctz pattern.
588         (*ffs_rex64): Remove pattern.
589
590 2007-06-30  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
591
592         PR rtl-optimization/32296
593         * pa.md (return): Delete pattern.
594         (return_internal): Remove "(const_int 1)" from pattern.
595         (epilogue): Use return_internal pattern for trivial returns.
596         * pa-protos.h (hppa_can_use_return_insn_p): Delete declaration.
597         * pa.c (hppa_can_use_return_insn_p): Delete function.  Include "df.h".
598
599 2007-06-30  Daniel Berlin  <dberlin@dberlin.org>
600
601         * tree-ssa-pre.c (is_exception_related): New function
602         (can_value_number_operation): Use it.
603
604 2007-06-30  Daniel Berlin  <dberlin@dberlin.org>
605         
606         Fix PR tree-optimization/32540
607         Fix PR tree-optimization/31651
608
609         * tree-ssa-sccvn.c: New file.
610
611         * tree-ssa-sccvn.h: Ditto.
612         
613         * tree-vn.c: Include tree-ssa-sccvn.h
614         (val_expr_paid_d): Removed.
615         (value_table): Ditto.
616         (vn_compute): Ditto.
617         (val_expr_pair_hash): Ditto.
618         (val_expr_pair_expr_eq): Ditto.
619         (copy_vuses_from_stmt): Ditto.
620         (vn_delete): Ditto.
621         (vn_init): Ditto.
622         (shared_vuses_from_stmt): Ditto.
623         (print_creation_to_file): Moved up.
624         (sort_vuses): Ditto.
625         (sort_vuses_heap): Ditto.
626         (set_value_handle): Make non-static.
627         (make_value_handle): Ditto.
628         (vn_add): Rewritten to use sccvn lookups.
629         (vn_add_with_vuses): Ditto.
630         (vn_lookup): Ditto (and second argument removed).
631         (vn_lookup_with_vuses): Ditto.
632         (vn_lookup_or_add): Ditto (and second argument removed);
633         (vn_lookup_or_add_with_vuses): Ditto.
634         (vn_lookup_with_stmt): New.
635         (vn_lookup_or_add_with_stmt): Ditto.
636         (create_value_handle_for_expr): Ditto.
637
638         * tree-ssa-pre.c: Include tree-ssa-sccvn.h.
639         (seen_during_translate): New function.
640         (phi_trans_lookup): Use iterative_hash_expr, not vn_compute.
641         (phi_trans_add): Ditto.
642         (constant_expr_p): FIELD_DECL is always constant.
643         (phi_translate_1): Renamed from phi_translate, add seen bitmap.
644         Use constant_expr_p.
645         Avoid infinite recursion on mutually valued expressions.
646         Change callers of vn_lookup_or_add.
647         (phi_translate): New function.
648         (compute_antic_safe): Allow phi nodes.
649         (create_component_ref_by_pieces): Update for FIELD_DECL change.
650         (find_or_generate_expression): Rewrite slightly.
651         (create_expression_by_pieces): Updated for vn_lookup_or_add
652         change.
653         Update VN_INFO for new names.
654         (insert_into_preds_of_block): Update for new names.
655         (add_to_exp_gen): New function.
656         (add_to_sets): Use vn_lookup_or_add_with_stmt.
657         (find_existing_value_expr): Rewrite to changed vn_lookup.
658         (create_value_expr_from): Ditto, and use add_to_exp_gen.
659         (try_look_through_load): Removed.
660         (try_combine_conversion): Ditto.
661         (get_sccvn_value): New function.
662         (make_values_for_phi): Ditto.
663         (make_values_for_stmt): Ditto.
664         (compute_avail): Rewritten for vn_lookup_or_add changes and to use
665         SCCVN.
666         (init_pre): Update for SCCVN changes.
667         (fini_pre): Ditto.
668         (execute_pre): Ditto.
669
670         * tree-flow.h (make_value_handle): Declare.
671         (set_value_handle): Ditto.
672         (sort_vuses_heap): Ditto.
673         (vn_lookup_or_add_with_stmt): Ditto.
674         (vn_lookup_with_stmt): Ditto.
675         (vn_compute): Remove.
676         (vn_init): Ditto.
677         (vn_delete): Ditto.
678         (vn_lookup): Update arguments.
679
680         * Makefile.in (tree-ssa-pre.o): Add tree-ssa-sccvn.h
681         (tree-vn.o): Ditto.
682         (tree-ssa-sccvn.o): New.
683         (OBJS-common): Add tree-ssa-sccvn.o
684         
685 2007-06-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
686
687         PR c/4076
688         * c-typeck.c (build_external_ref): Don't mark as used if called
689         from itself.
690         * calls.c (rtx_for_function_call): Likewise.
691         
692 2007-06-30  Richard Sandiford  <richard@codesourcery.com>
693
694         Revert:
695
696         2007-06-27  Richard Sandiford  <richard@codesourcery.com>
697
698         * dce.c (deletable_insn_p_1): New function, split out from...
699         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
700         specially, not those inside PARALLELs.  Remove BODY argument
701         and adjust recursive call accordingly.
702         (prescan_insns_for_dce): Update call to delete_insn_p.
703
704 2007-06-30  Rask Ingemann Lambertsen <rask@sygehus.dk>
705
706         * combine.c (combine_validate_cost): New parameter NEWOTHERPAT.
707         (try_combine): Move potential calls to undo_all() so they happen
708         before we commit to using the combined insns.
709
710 2006-06-30  Jan Hubicka  <jh@suse.cz>
711
712         * loop-unroll.c (unroll_loop_runtime_iterations): Unshare newly emit
713         code.
714
715 2006-06-30  Thomas Neumann  <tneumann@users.sourceforge.net>
716
717         * ipa.c (cgraph_postorder): Cast according to the coding conventions.
718         (cgraph_remove_unreachable_nodes): Likewise.
719         * ipa-cp.c (ipcp_propagate_stage): Use BOTTOM instead of integer 0.
720         * ipa-inline.c (update_caller_keys): Cast according to the coding
721         conventions.
722         (cgraph_decide_recursive_inlining): Likewise.
723         (cgraph_decide_inlining_of_small_function): Likewise.
724         (try_inline): Likewise.
725         (cgraph_decide_inlining_incrementally): Likewise.
726         * ipa-pure-const.c (get_function_state): Likewise.
727         (scan_function): Likewise.
728         (analyze_function): Likewise.
729         (static_execute): Likewise.
730         * gcc/ipa-reference.c (scan_for_static_refs): Likewise.
731         (merge_callee_local_info): Likewise.
732         (analyze_function): Use type safe memory macros.
733         (static_execute): Likewise. Cast according to the coding conventions.
734         * ipa-type-escape.c (scan_for_regs): Cast according to the coding
735         conventions.
736         * ipa-utils.c (searchc): Likewise. Avoid using C++ keywords as variable
737         names.
738         (ipa_utils_reduced_inorder): Likewise. Use type safe memory macros.
739         * ipa-utils.h (struct ipa_dfa_info): Avoid using C++ keywords as
740         variable names.
741
742 2007-06-29  Andrew Pinski  <andrew_pinski@playstation.sony.com>
743
744         PR middle-end/30024
745         * emit-rtl.c (init_emit_once): Intilize const_tiny_rtx[0]
746         for complex modes (both int and real).
747
748 2007-06-29  Jan Hubicka  <jh@suse.cz>
749
750         * cse.c: Rever accidentally comitted TODO_verify_rtl_sharing change.
751
752 2007-06-29  Jan Hubicka  <jh@suse.cz>
753
754         PR middle-end/32372
755         * cse.c (cse_insn): Avoid invalid sharing in between register note and
756         the insn pattern.
757
758 2007-06-29  Anatoly Sokolov <aesok@post.ru>
759
760         PR target/32335
761         * config/avr/avr.c: Include dataflow header file.
762         (expand_prologue): Adjust for prologue insn change.
763         * config/avr/avr.md (call_prologue_saves): Only modify REG_SP once
764         inside a insn.
765
766 2007-06-29  Richard Guenther  <rguenther@suse.de>
767
768         PR middle-end/32493
769         * gimplify.c (gimplify_call_expr): Ignore variable argument parts
770         during type verification.
771
772 2007-06-29  Jan Hubicka  <jh@suse.cz>
773
774         * recog.c (validate_change_rtx_1): Unshare TO argument.
775
776 2007-06-29  Uros Bizjak  <ubizjak@gmail.com>
777
778         PR tree-optimization/24659
779         * tree-vect-transform.c (vectorizable_call): Handle
780         (nunits_in == nunits_out / 2) and (nunits_out == nunits_in / 2) cases.
781
782         * config/i386/sse.md (vec_pack_sfix_v2df): New expander.
783         * config/i386/i386.c (enum ix86_builtins)
784         [IX86_BUILTIN_VEC_PACK_SFIX]: New constant.
785         (struct bdesc_2arg) [__builtin_ia32_vec_pack_sfix]: New builtin
786         description.
787         (ix86_init_mmx_sse_builtins): Define all builtins with 2 arguments as
788         const using def_builtin_const.
789         (ix86_expand_binop_builtin): Remove bogus assert() that insn wants
790         input operands in the same modes as the result.
791         (ix86_builtin_vectorized_function): Handle BUILT_IN_LRINT.
792
793 2007-06-29  Richard Sandiford  <rsandifo@nildram.co.uk>
794
795         * df-problems.c (df_set_unused_notes_for_mw): Fix formatting.
796         (df_set_dead_notes_for_mw): Likewise.
797
798 2007-06-29  Eric Botcazou  <ebotcazou@adacore.com>
799
800         * c-common.c (pointer_int_sum): Do the negation in sizetype.
801
802 2007-06-28  DJ Delorie  <dj@redhat.com>
803
804         * config/m32c/m32c.h (OVERRIDE_OPTIONS): Omit unneeded semicolon.
805
806 2007-06-28  Geoffrey Keating  <geoffk@apple.com>
807
808         * doc/invoke.texi (C++ Dialect Options): Document
809         fvisibility-ms-compat.
810         * c.opt (fvisibility-ms-compat): New.
811
812 2007-06-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
813
814         PR tree-opt/32417
815         * tree-affine.c (aff_combination_add_elt): Handle
816         pointer addition specially.
817
818 2007-06-28  Jakub Jelinek  <jakub@redhat.com>
819
820         * config/rs6000/rs6000.c (rs6000_function_ok_for_sibcall): Ensure
821         decl is non-external for AIX ABI.
822
823 2007-06-28  David Edelsohn  <edelsohn@gnu.org>
824
825         * config/rs6000/predicates.md (current_file_function_operand):
826         Ensure the symbol is non-external for AIX ABI.
827
828 2007-06-28  Nick Clifton  <nickc@redhat.com>
829
830         * common.opt (fipa-matrix-reorg): Add Optimization attribute.
831         (fdce, fdse, fpredictive-commoning): Likewise.
832
833 2007-06-28 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
834
835         PR other/31400
836         * gcc.c (process_command): Recognize the new -static-libgfortran
837         option.
838
839 2007-06-27  Rask Ingemann Lambertsen  <rask@sygehus.dk>
840
841         PR target/32418
842         * config/m32c/m32c.c (m32c_eh_return_stackadj_rtx): Dataflow fix:
843         Use a call clobbered hard reg instead of a pseudo reg.
844
845 2007-06-27  Kaz Kojima  <kkojima@gcc.gnu.org>
846
847         * config/sh/sh.md (load_gbr): Use correct operand constraint.
848
849 2007-06-27  Kaz Kojima  <kkojima@gcc.gnu.org>
850
851         PR target/32479
852         * config/sh/sh.md (udivsi3): Don't wrap the sequence with
853         REG_LIBCALL and REG_RETVAL notes.
854         (divsi3, mulsi3): Likewise.
855         (mulhisi3): Likewise.  Use emit_libcall_block.
856         (umulhisi3, smulsi3_highpart, umulsi3_highpart_i): Likewise.
857
858 2007-06-27  Seongbae Park  <seongbae.park@gmail.com>
859
860         PR rtl-optimization/32481
861         * combine.c (adjust_for_new_dest): Rescan the changed insn.
862
863 2007-06-27  Richard Sandiford  <richard@codesourcery.com>
864
865         * dce.c (deletable_insn_p_1): New function, split out from...
866         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
867         specially, not those inside PARALLELs.  Remove BODY argument
868         and adjust recursive call accordingly.
869         (prescan_insns_for_dce): Update call to delete_insn_p.
870
871 2007-06-27  Richard Guenther  <rguenther@suse.de>
872
873         PR middle-end/32492
874         * tree.h (fold_convertible_p): Declare.
875         * fold-const.c (fold_convertible_p): New function.
876         * gimplify.c (gimplify_call_expr): Use fold_convertible_p
877         instead of lang_hooks.types_compatible_p.
878
879 2007-06-26  Jan Hubicka  <jh@suse.cz>
880
881         * fwprop.c (try_fwprop_subst): Use validate_unshare_change.
882         * postreload.c (reload_cse_simplify_set): Instead of copying the rtx
883         early use validate_unshare_change.
884         (reload_combine): Likewise.
885         * recog.c (change_t): New field unshare.
886         (validate_change_1): Rename from validate_change; add argument unshare.
887         (validate_change): Turn into wrapper of validate_change_1; update
888         prototype for bools.
889         (validate_unshare_change): New.
890         (confirm_change_group): Unshare changes if asked for; avoid unnecesary
891         calls of df_insn_rescan.
892         * recog.h (validate_change): Replace ints by bools.
893         (validate_unshare_change): Declare.
894
895 2007-06-26  Kenneth Zadeck <zadeck@naturalbridge.com>
896
897         * tree.def (VEC_WIDEN_MULT_LO_EXPR): Corrected string name.
898         
899 2007-06-26  Steve Ellcey  <sje@cup.hp.com>
900
901         * builtins.c (expand_builtin_next_arg): Change Pmode to ptr_mode.
902
903 2007-06-25  Jan Hubicka  <jh@suse.cz>
904
905         * ipa-inline.c (cgraph_mark_inline): Assert that we never inline
906         uninlinable call.
907         (cgraph_decide_inlining_of_small_function, cgraph_decide_inlining,
908         cgraph_decide_inlining_incrementally): Move uninlinability checks to
909         places other call site specific checks are performed.
910
911 2007-06-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
912
913         PR tree-opt/32421
914         * tree-vect-transform.c (vectorizable_operation): Convert
915         POINTER_PLUS_EXPR over to PLUS_EXPR.
916
917 2007-06-25  Chao-ying Fu  <fu@mips.com>
918
919         * doc/rtl.texi (Machine Modes): Document QQ, HQ, SQ, DQ, TQ,
920         UQQ, UHQ, USQ, UDQ, UTQ, HA, SA, DA, TA, UHA, USA, UDA, and UTAmodes.
921         Document MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM.
922         Document GET_MODE_IBIT, and GET_MODE_FBIT.
923
924         * machmode.h (VECTOR_MODE_P): Test MODE_VECTOR_FRACT,
925         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
926         (SCALAR_FRACT_MODE_P, SCALAR_UFRACT_MODE_P, ALL_SCALAR_FRACT_MODE_P,
927         SCALAR_ACCUM_MODE_P, SCALAR_UACCUM_MODE_P, ALL_SCALAR_ACCUM_MODE_P,
928         SIGNED_SCALAR_FIXED_POINT_MODE_P, UNSIGNED_SCALAR_FIXED_POINT_MODE_P,
929         ALL_SCALAR_FIXED_POINT_MODE_P, FRACT_MODE_P, UFRACT_MODE_P,
930         ALL_FRACT_MODE_P, ACCUM_MODE_P, UACCUM_MODE_P, ALL_ACCUM_MODE_P,
931         SIGNED_FIXED_POINT_MODE_P, UNSIGNED_FIXED_POINT_MODE_P,
932         ALL_FIXED_POINT_MODE_P): New define.
933         (CLASS_HAS_WIDER_MODES_P): Test MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
934         MODE_UACCUM.
935         (GET_MODE_IBIT, GET_MODE_FBIT): New define.
936
937         * mode-classes.def (MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM,
938         MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
939         MODE_VECTOR_UACCUM): New mode classes.
940
941         * machmode.def: Document FRACT_MODE, UFRACT_MODE, ACCUM_MODE,
942         UACCUM_MODE, ADJUST_IBIT, and ADJUST_FBIT.
943         Add QQ, HQ, SQ, DQ, TQ, UQQ, UHQ, USQ, UDQ, UTQ, HA, SA, DA, TA, UHA,
944         USA, UDA, and UTA.
945
946         * genmodes.c (struct mode_data): Add ibit and fbit fields.
947         (blank_mode): Initialize ibit and fbit.
948         (adj_ibit, adj_fbit): New to adjust ibit and fbit.
949         (vector_class): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM.
950         (new_adjust): Change required_class to required_class_from and
951         required_class_to for testing within a range.
952         (complete_mode): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
953         MODE_UACCUM, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
954         MODE_VECTOR_UACCUM.
955         (FRACT_MODE, UFRACT_MODE, ACCUM_MODE, UACCUM_MODE): New define.
956         (make_fixed_point_mode): New.
957         (_ADD_ADJUST): Change C to C1 and C2.
958         (ADJUST_BYTESIZE, ADJUST_ALIGNMENT, ADJUST_FLOAT_FORMAT): Change to
959         use a range for machine classes.
960         (ADJUST_IBIT, ADJUST_FBIT): New.
961         (emit_insn_modes_h): Output defines of CONST_MODE_IBIT and
962         CONST_MODE_FBIT.
963         (emit_mode_adjustments): Handle MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT,
964         MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
965         Emit adjustment for ibit and fbit.
966         (emit_mode_ibit, emit_mode_fbit): New.
967         (emit_insn_modes_c): Add emit_mode_ibit and emit_mode_fbit.
968
969 2007-06-25  Nathan Froyd  <froydnj@codesourcery.com>
970
971         * config/rs6000/spe.md (*frob_ti_tf_2): Specify an input_operand
972         as the source of the set.
973
974 2007-06-25  Roman Zippel <zippel@linux-m68k.org>
975
976         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P,
977         FP_REGNO_P): Use IN_RANGE.
978         (REGNO_OK_FOR_DATA_P, REGNO_OK_FOR_FP_P): Remove.
979         (REGNO_OK_FOR_INDEX_NONSTRICT_P, REGNO_OK_FOR_BASE_NONSTRICT_P): New.
980         (DATA_REG_P): Use DATA_REGNO_P.
981         (FP_REG_P): Use FP_REGNO_P.
982         (ADDRESS_REG_P): Use ADDRESS_REGNO_P.
983         * config/m68k/m68k.c (m68k_legitimate_base_reg_p): Use
984         REGNO_OK_FOR_INDEX_NONSTRICT_P, REGNO_OK_FOR_BASE_NONSTRICT_P.
985
986 2007-06-24  Jan Hubicka  <jh@suse.cz>
987
988         PR middle-end/30563
989         * cgraphunit.c (cgraph_analyze_function): Fix ordering problem.
990
991 2007-06-24  Sebastian Pop  <sebpop@gmail.com>
992
993         PR middle-end/32461
994         * fold-const.c (fold_binary): Strip nops of operand 0
995         of BIT_NOT_EXPR before calling operand_equal_p.
996         * testsuite/gcc.dg/tree-ssa/pr32461-1.c: New.
997         * testsuite/gcc.dg/tree-ssa/pr32461-2.c: New.
998
999 2007-06-23  Mark Mitchell  <mark@codesourcery.com>
1000
1001         * doc/extend.texi: Document that dllimport and dllexport imply
1002         default visibility.
1003         * tree.c (handle_dll_attribute): Set DECL_VISIBILITY on the
1004         imported or exported declaration, including type declarations.
1005         * c-common.c (handle_visibility_attribute): Check for conflicts
1006         with dllimport/dllexport.
1007         (c_determine_visibility): Handle dllimport/dllexport as an
1008         explicit visibility atttribute.
1009
1010 2007-06-23  Richard Guenther  <rguenther@suse.de>
1011
1012         PR tree-optimization/16876
1013         PR middle-end/29478
1014         * tree.h (CALL_CANNOT_INLINE_P): New macro to access static_flag
1015         for CALL_EXPRs.
1016         * tree-inline.c (initialize_inlined_parameters): Do not call
1017         lang_hooks.tree_inlining.convert_parm_for_inlining.
1018         * cgraphbuild.c (initialize_inline_failed): Set inline failed
1019         reason for mismatched types.
1020         * gimplify.c (gimplify_call_expr): Verify the call expression
1021         arguments match the called function type signature.  Otherwise
1022         mark the call expression to be not considered for inlining
1023         using CALL_CANNOT_INLINE_P flag.
1024         * ipa-inline.c (cgraph_mark_inline): Honor CALL_CANNOT_INLINE_P on the
1025         edges call expression.
1026         (cgraph_decide_inlining_of_small_function): Likewise.
1027         (cgraph_decide_inlining): Likewise.
1028         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING):
1029         Remove define.
1030         * c-tree.h (c_convert_parm_for_inlining): Remove declaration.
1031         * c-typeck.c (c_convert_parm_for_inlining): Remove.
1032         * langhooks-def.h (lhd_tree_inlining_convert_parm_for_inlining):
1033         Remove declaration.
1034         (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING): Remove define.
1035         * langhooks.c (lhd_tree_inlining_convert_parm_for_inlining):
1036         Remove.
1037         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove
1038         convert_parm_for_inlining member.
1039
1040 2007-06-23  Richard Earnshaw  <rearnsha@arm.com>
1041
1042         PR target/31152
1043         * arm.md (negscc): Match the correct operand for optimized LT0 test.
1044         Remove optimization for GT.
1045
1046 2007-06-23  Kenneth Zadeck <zadeck@naturalbridge.com>
1047
1048         PR middle-end/32437
1049         * dce.c (deletable_insn_p): Add extra parameter and recurse if insn
1050         is a PARALLEL.
1051         (prescan_insns_for_dce): Add extra parameter.
1052         
1053 2007-06-23  Jan Hubicka  <jh@suse.cz>
1054
1055         PR middle-end/31541
1056         * gimplify.c (mark_addressable): New function.
1057         (gimplify_modify_expr_rhs, gimplify_addr_expr, gimplify_expr): Use it.
1058
1059 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
1060
1061         PR middle-end/32374
1062         * expr.c (store_constructor): Do not clobber non-zeroed memory. 
1063
1064 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
1065
1066         PR target/32413
1067         * config/i386/i386.c (ix86_register_move_cost): Rise the cost of
1068         moves between MMX/SSE registers to at least 8 units to prevent
1069         ICE caused by non-tieable SI/HI/QImodes in SSE registers. 
1070
1071 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
1072
1073         * config/i386/i386.c (override_options): Correct x86_sahf
1074         setting condition.
1075
1076 2007-06-21  David Daney  <ddaney@avtrex.com>
1077
1078         PR target/32406
1079         * config/mips/mips.md (define_constants): Rename UNSPEC_EH_RECEIVER
1080         to UNSPEC_NONLOCAL_GOTO_RECEIVER globally.
1081         (exception_receiver): Renamed to ...
1082         (nonlocal_goto_receiver): ... this.
1083
1084 2007-06-22  Roman Zippel <zippel@linux-m68k.org>
1085
1086         * df-scan.c (df_read_modify_subreg_p): Use REGMODE_NATURAL_SIZE.
1087         (df_def_record_1): Set (DF_REF_READ_WRITE | DF_REF_PARTIAL) for
1088         partial register accesses.
1089
1090 2007-06-21  Adam Nemet  <anemet@caviumnetworks.com>
1091
1092         * fold-const.c (debug_fold_checksum): Move it under
1093         ENABLE_FOLD_CHECKING.
1094
1095 2007-06-21  Sebastian Pop  <sebpop@gmail.com>
1096
1097         PR middle-end/20623
1098         * tree.h (debug_fold_checksum): Declared.
1099         * fold-const.c (build_fold_addr_expr_with_type_1): New.
1100         (build_fold_addr_expr_with_type, build_fold_addr_expr): Use 
1101         build_fold_addr_expr_with_type_1.
1102         (fold_addr_expr, debug_fold_checksum): New.
1103         (fold_checksum_tree): Don't fold TREE_CHAIN of an SSA_NAME.
1104         (fold_unary, fold_comparison, split_address_to_core_and_offset):
1105         Use fold_addr_expr.
1106         
1107 2007-06-21  Sebastian Pop  <sebpop@gmail.com>
1108
1109         PR tree-optimization/19590
1110         * tree-vrp.c (adjust_range_with_scev): Set the range when the result
1111         of scev is a constant.
1112         * gcc/testsuite/gcc.dg/tree-ssa/pr19590.c: New.
1113
1114 2007-06-21  Kenneth Zadeck <zadeck@naturalbridge.com>
1115
1116         * df-problems.c (df_note_bb_compute): Made computation of live
1117         info consistent with df_lr.
1118
1119 2007-06-21  Richard Guenther  <rguenther@suse.de>
1120
1121         PR tree-optimization/32453
1122         * tree-vrp.c (extract_range_from_assert): Build POINTER_PLUS_EXPR
1123         for pointer anti-range.
1124
1125 2007-06-21  H.J. Lu  <hongjiu.lu@intel.com>
1126
1127         * config/i386/i386.c (processor_target_table): Increase maximum
1128         skip from 7 byte to 10 byte for Pentium Pro, Core 2 Duo and
1129         default 64bit.
1130
1131         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Ensure 8
1132         byte alignment if > 8 byte alignment is preferred.
1133         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
1134
1135 2007-06-21  Jakub Jelinek  <jakub@redhat.com>
1136
1137         PR tree-optimization/31866
1138         * tree-ssa-coalesce.c (create_outofssa_var_map): Do nothing
1139         if ASM_EXPR's input is not a SSA_NAME.
1140
1141         PR middle-end/32362
1142         * omp-low.c (lookup_decl_in_outer_ctx): Don't ICE if t is NULL,
1143         but decl is a global var, instead return decl.
1144         * gimplify.c (gimplify_adjust_omp_clauses_1): Add shared clauses
1145         even for is_global_var decls, if they are private in some outer
1146         context.
1147
1148 2007-06-21  Richard Guenther  <rguenther@suse.de>
1149
1150         PR tree-optimization/32451
1151         * tree-ssa-threadupdate.c (thread_single_edge): Fixup edge flags.
1152
1153 2007-06-21  Christian Bruel  <christian.bruel@st.com>
1154
1155         * config/sh/sh-protos.h (sh_loads_bankedreg_p): Declare.
1156         * config/sh/sh.c (sh_loads_bankedreg_p): New function.
1157         (push_regs): Changed saving order or banked registers.
1158         (sh_expand_epilogue): Likewise.
1159         * config/sh/sh.h (BANKED_REGISTER_P): New macro.
1160         (FIRST_BANKED_REG): Likewise.
1161         (LAST_BANKED_REG): Likewise.
1162         * config/sh/sh.md (banked) New attribute.
1163         (in_delay_slot): Check banked attribute.
1164         
1165 2007-06-20  Sebastian Pop  <sebpop@gmail.com>
1166
1167         PR tree-optimization/32075
1168         * tree-data-ref.c (subscript_dependence_tester_1, 
1169         analyze_miv_subscript, analyze_overlapping_iterations,
1170         add_distance_for_zero_overlaps, build_classic_dist_vector,
1171         subscript_dependence_tester_1, analyze_overlapping_iterations,
1172         subscript_dependence_tester, access_functions_are_affine_or_constant_p,
1173         compute_affine_dependence, compute_all_dependences): Pass loop_nest 
1174         to evolution_function_is_affine_multivariate_p.
1175
1176 2007-06-20  Eric Botcazou  <ebotcazou@libertysurf.fr>
1177
1178         * df-scan.c (df_get_call_refs): Be prepared for MEMs inside CLOBBERs.
1179
1180 2007-06-20  Rask Ingemann Lambertsen  <rask@sygehus.dk>
1181
1182         PR target/32335
1183         * config/m32c/m32c.c (m32c_emit_epilogue): Use new HImode epilogue
1184         for TARGET_A16.
1185         * config/m32c/prologue.md (epilogue_exitd_16): New.
1186         (epilogue_reit_16): New.
1187         (epilogue_exitd): Rename to epilogue_exitd_24.
1188         (epilogue_reit): Rename to epilogue_reit_24.
1189
1190 2007-06-20  Seongbae Park  <seongbae.park@gmail.com>
1191             Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
1192
1193         * dbgcnt.def (global_alloc_at_func, global_alloc_at_reg):
1194         New counters.
1195         * haifa-sched.c (queue_to_ready): Don't requeue next insn
1196         if dbg_cnt (sched_insn) reaches the limit.
1197         (choose_ready): New parameter INSN_PTR and new return value.
1198         (schedule_block): Handle dbg_cnt (sched_insn). Handle
1199         the new return value from choose_ready.
1200         * global.c (global_aloc): New dbgcnt global_alloc_at_reg.
1201         (rest_of_handle_global_alloc): New global_alloc_at_func.
1202
1203 2007-06-20  Adam Nemet  <anemet@caviumnetworks.com>
1204
1205         PR tree-optimization/25737
1206         * tree.h (struct tree_struct_field_tag): Add new field alias_set.
1207         (SFT_NONADDRESSABLE_P, SFT_ALIAS_SET): New macros.
1208         * tree-flow.h (struct fieldoff): Add new field alias_set.
1209         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Add new
1210         argument addressable_type.  Set alias_set of fieldoff.
1211         * tree-ssa-alias.c (create_sft): Add new argument alias_set.
1212         (create_overlap_variables_for): Pass alias_set from fieldoff to
1213         create_sft.
1214         * alias.c (get_alias_set): Use alias_set from SFT if set.
1215
1216 2007-06-20  Hui-May Chang  <hm.chang@apple.com>
1217
1218         * config/i386/darwin.h (ASM_OUTPUT_COMMON): Print the size
1219         of a variable as an unsigned HOST_WIDE_INT integer.
1220
1221 2007-06-20  Zdenek Dvorak  <dvorakz@suse.cz>
1222
1223         PR rtl-optimization/32405
1224         * loop-iv.c (iv_get_reaching_def): Fail for partial defs.
1225
1226 2007-06-20  Jakub Jelinek  <jakub@redhat.com>
1227
1228         * Makefile.in (omega.o): Depend on $(DIAGNOSTIC_H).
1229
1230         PR middle-end/31959
1231         * builtins.c: Include diagnostic.h.
1232         (expand_builtin_expect): Make gcc_assert more permissive.
1233         * Makefile.in (builtins.o): Depend on $(DIAGNOSTIC_H).
1234
1235         PR inline-asm/32109
1236         * gimplify.c (gimplify_asm_expr): Issue error if type is addressable
1237         and !allows_mem.
1238
1239         PR middle-end/32285
1240         * calls.c (precompute_arguments): Also precompute CALL_EXPR arguments
1241         if ACCUMULATE_OUTGOING_ARGS.
1242
1243 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
1244
1245         * config/m68hc11/m68hc11.c: Include dataflow header file.
1246         (m68hc11_reorg): Port to dataflow.
1247
1248 2007-06-19  Kenneth Zadeck <zadeck@naturalbridge.com>
1249
1250         * df.h (DF_FIRST_OPTIONAL_PROBLEM): Removed.
1251         (struct df_problem.free_blocks_on_set_blocks): New field.
1252         (struct dataflow.optional_p): New field.
1253         (df_bb_regno_last_use_find, df_insn_regno_def_p): Removed.
1254         (df_live_set_all_dirty): New function.
1255         * df-scan.c (df_scan_alloc): Initialize optional_p.
1256         (problem_SCAN): Initialize free_blocks_on_set_blocks.
1257         * df-core.c (df_set_blocks): Removed use of
1258         DF_FIRST_OPTIONAL_PROBLEM.  Now uses
1259         df_problem.free_blocks_on_set_blocks to determine which blocks are
1260         recycled.
1261         (df_remove_problem): Removed use of DF_FIRST_OPTIONAL_PROBLEM.
1262         (df_finish_pass): Removed use of DF_FIRST_OPTIONAL_PROBLEM.  Now
1263         uses dataflow.optional_p to determine if problem should be
1264         deleted.
1265         (rest_of_handle_df_initialize): Only start live problem if 
1266         -02 or above.
1267         (df_bb_regno_last_use_find, df_insn_regno_def_p): Removed.
1268         * df-problems.c (df_ru_alloc, df_rd_alloc, df_lr_alloc,
1269         df_live_alloc, df_urec_alloc, df_note_alloc): set optional_p.
1270         (problem_RU, problem_RD, problem_LR, problem_UREC, problem_CHAIN,
1271         problem_NOTE):  Initialize free_blocks_on_set_blocks.
1272         (df_lr_bb_local_compute): Recompute luids if df_live problem is
1273         not active.
1274         (df_live_set_all_dirty, df_note_alloc): New function.
1275         * regrename.c (merge_overlapping_regs): Change DF_LIVE_* to
1276         df_get_live_*.
1277         * sched_ebb.c (compute_jump_reg_dependencies): Ditto.
1278         * postreload.c (reload_combine): Ditto.
1279         * cse.c (cse_extended_basic_block): Ditto.
1280         * regmove.c (mark_flags_life_zones): Ditto.
1281         * rtlfactoring.c (split_blocks_after_seqs, split_pattern_seq,
1282         erase_matching_seqs): Ditto.
1283         * bt-load.c (compute_defs_uses_and_gen): Ditto.
1284         * integrate (allocate_initial_values): Ditto.
1285         * combine.c (reg_dead_at_p): Ditto.
1286         * resource.c (mark_target_live_regs): Ditto.
1287         * sched-rgn.c (check_live_1, update_live_1): Ditto.
1288         * config/sh/sh.c (find_r0_life_regions): Ditto.
1289         * global.c (rest_of_handle_global_alloc): Only add back df_live
1290         for -O > 1.
1291         * local-alloc.c (rest_of_handle_local_alloc): Only remove
1292         df_live for -O > 1.
1293         * ifcvt.c (dead_or_predicable): Change DF_LIVE_* to
1294         df_get_live_*.
1295         (if_convert): Make sure df_live is there at -O == 1.
1296         (pass_if_after_combine): Cleanup flags.
1297         * init-regs.c (initialize_uninitialized_regs): Make sure df_live
1298         is there at -O == 1.
1299         
1300 2007-06-19  Seongbae Park  <seongbae.park@gmail.com>
1301
1302         * config/arm/arm.c (arm_get_frame_offsets): Set
1303         offsets->locals_base to avoid negative stack size.
1304         (thumb1_expand_prologue): Assert on negative stack size.
1305
1306 2007-04-19  Sebastian Pop  <sebpop@gmail.com>
1307
1308         PR tree-optimization/32367
1309         * tree-chrec.h (build_polynomial_chrec): Verify that the left hand side 
1310         of the chrec has no evolution in that loop.
1311         * testsuite/gcc.dg/tree-ssa/pr32367.c: New.
1312
1313 2007-06-19  Bob Wilson  <bob.wilson@acm.org>
1314
1315         * config/xtensa/xtensa.c: Include "df.h".
1316         (xtensa_builtin_saveregs): Use adjust_address instead of change_address.
1317         (xtensa_va_start): Invoke make_tree with sizetype for
1318         expand_builtin_saveregs and then convert the result to a pointer.
1319         Use POINTER_PLUS_EXPR.  Use size_int instead of build_int_cst.
1320         (xtensa_gimplify_va_arg_expr): Use size_int instead of build_int_cst.
1321         Subtract argument size from index value as integers and then use
1322         POINTER_PLUS_EXPR to add the result to the array address.
1323         
1324 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
1325
1326         PR target/32335
1327         * config/m32c/m32c.c: Include dataflow header file.
1328         (m32c_emit_prologue): Adjust for prologue insn change.
1329         * config/m32c/prologue.md (prologue_enter_16): Only modify SP_REGNO
1330         once inside a PARALLEL. Assume frame size passed in operand 0
1331         includes space to save the fb register.
1332         (prologue_enter_24): Likewise.
1333         (epilogue_exitd): Only modify SP_REGNO once inside a PARALLEL.
1334
1335 2007-06-19  David Daney  <ddaney@avtrex.com
1336
1337         PR target/32313
1338         * config/mips/mips.md (cprestore): Mark $gp as used.
1339
1340 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
1341
1342         PR target/32369
1343         * config/frv/frv.c (frv_ifcvt_modify_tests): Dataflow merge fix.
1344         (frv_ifcvt_modify_insn): Likewise.
1345
1346 2007-06-19  Richard Guenther  <rguenther@suse.de>
1347
1348         * tree-ssa-structalias.c (handle_ptr_arith): Make sure to
1349         only handle positive offsets that fit in a HOST_WIDE_INT.
1350
1351 2007-06-19  Uros Bizjak  <ubizjak@gmail.com>
1352
1353         * config/i386/i386.c (ix86_emit_swsqrtsf): Filter out infinity
1354         result of rsqrt insn for zero input argument to avoid NaN.
1355
1356 2007-06-19  Richard Guenther  <rguenther@suse.de>
1357
1358         PR middle-end/31950
1359         * tree-ssa-alias-warnings.c (ffan_walker): Punt on MTAGs.
1360
1361 2007-06-19  Jakub Jelinek  <jakub@redhat.com>
1362
1363         PR tree-optimization/32353
1364         * tree-ssa-structalias.c (set_uids_in_ptset): Also handle RESULT_DECL.
1365
1366 2007-06-19  Nick Clifton  <nickc@redhat.com>
1367
1368         * config/m32r/linux.h (LIB_SPEC): Always imply -lpthread for -pthread.
1369
1370 2007-06-18  Uros Bizjak  <ubizjak@gmail.com>
1371
1372         PR target/32389
1373         * config/i386/i386.h (enum ix86_stack_slot): Add SLOT_VIRTUAL.
1374         * config/i386/i386.c (assign_386_stack_local): Assert that
1375         SLOT_VIRTUAL is valid only before virtual regs are instantiated.
1376         (ix86_expand_builtin) [IX86_BUILTIN_LDMXCSR, IX86_BUILTIN_STMXCSR]:
1377         Use SLOT_VIRTUAL stack slot instead of SLOT_TEMP.
1378         * config/i386/i386.md (truncdfsf2, truncxf<mode>2): Ditto.
1379
1380 2007-06-18  Steve Ellcey  <sje@cup.hp.com>
1381
1382         * config/ia64/ia64.h (LIBGCC2_TF_CEXT): New.
1383
1384 2007-06-18  Seongbae Park  <seongbae.park@gmail.com>
1385
1386         PR rtl-optimization/32321
1387         * gcse.c (replace_store_insn): Update the note before
1388         calling emit_insn_after.
1389
1390 2007-06-18  Kenneth Zadeck <zadeck@naturalbridge.com>
1391
1392         PR middle-end/32355
1393         * gcse (rest_of_handle_gcse): Add call to df_finish_pass after
1394         cse_main.
1395         * df-problems.c (df_note_bb_compute): Fix dumping info.
1396         
1397 2007-06-18  Kazu Hirata  <kazu@codesourcery.com>
1398
1399         * config/m68k/m68k.c (m68k_expand_epilogue): Emit a return
1400         insn with emit_jump_insn.
1401
1402 2007-06-18  Uros Bizjak  <ubizjak@gmail.com>
1403
1404         PR tree-optimization/32383
1405         * targhooks.c (default_builtin_reciprocal): Add new bool argument.
1406         * targhooks.h (default_builtin_reciprocal): Update prototype.
1407         * target.h (struct gcc_target): Update builtin_reciprocal.
1408         * doc/tm.texi (TARGET_BUILTIN_RECIPROCAL): Update description.
1409         * tree-ssa-math-opts (execute_cse_reciprocals): Skip statements
1410         where arg1 is not SSA_NAME.  Pass true to targetm.builtin_reciprocal
1411         when fndecl is in BUILT_IN_MD class.
1412         (execute_convert_to_rsqrt): Ditto.
1413
1414         * config/i386/i386.c (ix86_builtin_reciprocal): Update for new bool
1415         argument.  Convert IX86_BUILTIN_SQRTPS code only when md_fn is true.
1416         Convert BUILT_IN_SQRTF code only  when md_fn is false.
1417
1418 2007-06-18  Kaz Kojima  <kkojima@gcc.gnu.org>
1419
1420         * bt-load.c (move_btr_def): Fix the order of arguments
1421         to validate_replace_rtx.
1422
1423 2007-06-18  Nathan Sidwell  <nathan@codesourcery.com>
1424
1425         * config/m68k/m68k-devices.def: Add 54450..54455.
1426
1427 2007-06-17  Uros Bizjak  <ubizjak@gmail.com>
1428
1429         PR rtl-optimization/32366
1430         * simplify-rtx.c (simplify_unary_operation_1) [FLOAT_TRUNCATE,
1431         FLOAT_EXTEND]: Prevent non-scalar modes from entering
1432         significand_size.
1433
1434 2007-06-17  Kenneth Zadeck <zadeck@naturalbridge.com>
1435
1436         PR middle-end/32349
1437         * modulo-sched (generate_reg_moves): Added rescan parameter and if
1438         this is true, rescan insn being modified.
1439         (sms_schedule): Added rescan parameter.
1440         (rest_of_handle_sms): Moved freeing of dominance info to before
1441         getting out of cfg_layout.
1442         
1443 2007-06-17  Nathan Sidwell  <nathan@codesourcery.com>
1444
1445         * config/m68k/m68k.h (ISA_HAS_FF1, ISA_HAS_MVS_MVZ): New.
1446         * config/m68k/m68k.md: Use ISA_HAS_FF1 and ISA_HAS_MVS_MVZ as
1447         appropriate.
1448
1449         * config/m68k/m68k.c (all_isas): Remove FL_CF_FPU and
1450         FL_CF_EMAC from the entry for isac.
1451
1452         * config/m68k/predicates.md (const_call_operand): Adjust comment.
1453         (const_sibcall_operand): New.
1454         (sibcall_operand): Use it.
1455         * config/m68k/m68k.c (FL_FOR_isa_c): Not ISA_B compatible.
1456         (m68k_isas): ISAC does not imply FPU or EMAC.
1457         (override_options): Add ISA_C logic for symbolic jump & call.
1458
1459 2007-06-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
1460
1461         * config/sparc/sparc.c (sparc_vis_init_builtins): Retrieve the
1462         return mode from the builtin itself.
1463         (sparc_fold_builtin): Fix cast of zero constant.
1464
1465 2007-06-16  Uros Bizjak  <ubizjak@gmail.com>
1466
1467         * targhooks.c (default_builtin_reciprocal): New default target hook.
1468         * targhooks.h (default_builtin_reciprocal): Add prototype.
1469         * hooks.c (hook_tree_tree_bool_null): Remove hook.
1470         * hooks.h (hook_tree_tree_bool_null): Remove prototype.
1471         * target-def.h (TARGET_BUILTIN_RECIPROCAL): Define as
1472         default_builtin_reciprocal.
1473
1474 2007-06-16  Uros Bizjak  <ubizjak@gmail.com>
1475
1476         PR middle-end/31723
1477         * hooks.c (hook_tree_tree_bool_null): New hook.
1478         * hooks.h (hook_tree_tree_bool_null): Add prototype.
1479         * tree-pass.h (pass_convert_to_rsqrt): Declare.
1480         * passes.c (init_optimization_passes): Add pass_convert_to_rsqrt.
1481         * tree-ssa-math-opts.c (execute_cse_reciprocals): Scan for a/func(b)
1482         and convert it to reciprocal a*rfunc(b).
1483         (execute_convert_to_rsqrt): New function.
1484         (gate_convert_to_rsqrt): New function.
1485         (pass_convert_to_rsqrt): New pass definition.
1486         * target.h (struct gcc_target): Add builtin_reciprocal.
1487         * target-def.h (TARGET_BUILTIN_RECIPROCAL): New define.
1488         (TARGET_INITIALIZER): Initialize builtin_reciprocal with
1489         TARGET_BUILTIN_RECIPROCAL.
1490         * doc/tm.texi (TARGET_BUILTIN_RECIPROCAL): Document.
1491
1492         * config/i386/i386.h (TARGET_RECIP): New define.
1493         * config/i386/i386.md (divsf3): Expand by calling ix86_emit_swdivsf
1494         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
1495         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
1496         and not optimizing for size.
1497         (*rcpsf2_sse): New insn pattern.
1498         (*rsqrtsf2_sse): Ditto.
1499         (rsqrtsf2): New expander.  Expand by calling ix86_emit_swsqrtsf
1500         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
1501         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
1502         and not optimizing for size.
1503         (sqrt<mode>2): Expand SFmode operands by calling ix86_emit_swsqrtsf
1504         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
1505         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
1506         and not optimizing for size.
1507         * config/i386/sse.md (divv4sf): Expand by calling ix86_emit_swdivsf
1508         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
1509         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
1510         and not optimizing for size.
1511         (*sse_rsqrtv4sf2): Do not export.
1512         (sqrtv4sf2): Ditto.
1513         (sse_rsqrtv4sf2): New expander.  Expand by calling ix86_emit_swsqrtsf
1514         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
1515         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
1516         and not optimizing for size.
1517         (sqrtv4sf2): Ditto.
1518         * config/i386/i386.opt (mrecip): New option.
1519         * config/i386/i386-protos.h (ix86_emit_swdivsf): Declare.
1520         (ix86_emit_swsqrtsf): Ditto.
1521         * config/i386/i386.c (IX86_BUILTIN_RSQRTF): New constant.
1522         (ix86_init_mmx_sse_builtins): __builtin_ia32_rsqrtf: New
1523         builtin definition.
1524         (ix86_expand_builtin): Expand IX86_BUILTIN_RSQRTF using
1525         ix86_expand_unop1_builtin.
1526         (ix86_emit_swdivsf): New function.
1527         (ix86_emit_swsqrtsf): Ditto.
1528         (ix86_builtin_reciprocal): New function.
1529         (TARGET_BUILTIN_RECIPROCAL): Use it.
1530         (ix86_vectorize_builtin_conversion): Rename from
1531         ix86_builtin_conversion.
1532         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Use renamed function.
1533         * doc/invoke.texi (Machine Dependent Options): Add -mrecip to
1534         "i386 and x86_64 Options" section.
1535         (Intel 386 and AMD x86_64 Options): Document -mrecip.
1536
1537 2007-06-15  Andrew Pinski <andrew_pinski@playstation.sony.com>
1538             Zdenek Dvorak <dvorakz@suse.cz>
1539             Richard Guenther  <rguenther@suse.de>
1540             Kaz Kojima  <kkojima@gcc.gnu.org>
1541
1542         * tree-vrp.c (compare_values_warnv): Convert val2 to
1543         the type of val1.
1544         (extract_range_from_assert): Create
1545         POINTER_PLUS_EXPR for pointer types.
1546         (extract_range_from_binary_expr): Handle
1547         only POINTER_PLUS_EXPR, MIN_EXPR, and MAX_EXPR
1548         for pointer types.
1549         * doc/c-tree.texi (POINTER_PLUS_EXPR): Document.
1550         * tree-ssa-loop-niter.c (split_to_var_and_offset): Handle
1551         POINTER_PLUS_EXPR as PLUS_EXPR.
1552         (number_of_iterations_lt_to_ne):
1553         For pointer types, use sizetype when
1554         creating MINUS_EXPR/PLUS_EXPRs.
1555         (assert_loop_rolls_lt): For pointer types, use sizetype when
1556         creating MINUS_EXPR/PLUS_EXPRs.
1557         (number_of_iterations_le): Likewise.
1558         (expand_simple_operations): POINTER_PLUS_EXPR are simple also.
1559         (derive_constant_upper_bound): Handle POINTER_PLUS_EXPR just
1560         like PLUS_EXPR and MINUS_EXPR.
1561         * tree-pretty-print.c (dump_generic_node): Handle
1562         POINTER_PLUS_EXPR.
1563         (op_prio): Likewise.
1564         (op_symbol_1): Likewise.
1565         * optabs.c (optab_for_tree_code): Likewise.
1566         * tree-ssa-loop-manip.c (create_iv): Handle pointer base
1567         specially.
1568         * tree-tailcall.c (process_assignment): Mention
1569         POINTER_PLUS_EXPR in a TODO comment.
1570         * tree.c (build2_stat): Assert when trying to use PLUS_EXPR or 
1571         MINUS_EXPR with a pointer. Also assert for POINTER_PLUS_EXPR
1572         not used with a pointer and an integer type.
1573         * tree-scalar-evolution.c (add_to_evolution_1): Convert the
1574         increment using chrec_convert_rhs instead of chrec_convert.
1575         (follow_ssa_edge_in_rhs): Handle POINTER_PLUS_EXPR like
1576         PLUS_EXPR except for the right hand side's type will be
1577         sizetype.
1578         (interpret_rhs_modify_stmt): Handle POINTER_PLUS_EXPR.
1579         (fold_used_pointer_cast): Kill.
1580         (pointer_offset_p): Kill.
1581         (fold_used_pointer): Kill.
1582         (pointer_used_p): Kill.
1583         (analyze_scalar_evolution_1 <case GIMPLE_MODIFY_STMT>): Don't
1584         call fold_used_pointer.
1585         (instantiate_parameters_1): Convert the increment
1586         using chrec_convert_rhs instead of chrec_convert.
1587         Handle POINTER_PLUS_EXPR as PLUS_EXPR.
1588         * builtins.c (get_pointer_alignment): Handle POINTER_PLUS_EXPR
1589         instead of PLUS_EXPR.
1590         (expand_builtin_strcat): Create a POINTER_PLUS_EXPR instead of
1591         PLUS_EXPR for pointers.
1592         (std_gimplify_va_arg_expr): Likewise.
1593         (fold_builtin_memory_op): Likewise.
1594         (fold_builtin_strstr): Likewise.
1595         (fold_builtin_strchr): Likewise.
1596         (fold_builtin_strrchr): Likewise.
1597         (fold_builtin_strpbrk): Likewise.
1598         (expand_builtin_memory_chk): Likewise.
1599         (fold_builtin_memory_chk): Likewise.
1600         (std_expand_builtin_va_start): Use
1601         sizetype for the call to make_tree and then convert
1602         to the pointer type.
1603         (fold_builtin_memchr): Use POINTER_PLUS_EXPR
1604         instead of PLUS_EXPR for adding to a pointer.
1605         (std_gimplify_va_arg_expr): Use fold_build2 for
1606         the creating of POINTER_PLUS_EXPR.  For the BIT_AND_EXPR, cast
1607         the operands to sizetype first and then cast the BIT_AND_EXPR
1608         back to the pointer type.
1609         * fold-const.c (build_range_check): Handle pointer types
1610         specially.
1611         (extract_array_ref): Look for POINTER_PLUS_EXPR instead
1612         of PLUS_EXPR's. Make sure the offset is converted to
1613         sizetype.
1614         (try_move_mult_to_index): Strip the NOPs from the offset.
1615         Remove code argument and replace all uses with PLUS_EXPR.
1616         (fold_to_nonsharp_ineq_using_bound): Handle pointer types
1617         specially. Don't use a pointer type for MINUS_EXPR.
1618         (fold_unary): Handle for (T1)(X op Y),
1619         only p+ as that is the only as that can be handled for
1620         binary operators now.
1621         (fold_binary <case POINTER_PLUS_EXPR>): Add folding of
1622         POINTER_PLUS_EXPR.
1623         <case PLUS_EXPR>: Add folding of PTR+INT into
1624         PTR p+ INT.
1625         Don't call try_move_mult_to_index.
1626         <case MINUS_EXPR>: Fold (PTR0 p+ A) - (PTR1 p+ B)
1627         into (PTR0 - PTR1) + (A - B). Fold (PTR0 p+ A) - PTR1 into
1628         (PTR0 - PTR1) + A iff (PTR0 - PTR1) simplifies.
1629         Don't call try_move_mult_to_index.
1630         (tree_expr_nonnegative_warnv_p): Handle POINTER_PLUS_EXPR.
1631         (tree_expr_nonzero_p): Likewise.
1632         (fold_indirect_ref_1): Look at POINTER_PLUS_EXPR instead
1633         of PLUS_EXPR for the complex expression folding.
1634         * tree-chrec.c (chrec_fold_plus_poly_poly): If the
1635         first chrec is a pointer type, then the second should
1636         be sizetype and not the first's type.
1637         For POINTER_PLUS_EXPR, use a different right hand side type.
1638         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
1639         (chrec_fold_plus_1): For POINTER_PLUS_EXPR, use a
1640         different right hand side type.
1641         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
1642         (chrec_fold_plus): For pointer types, use POINTER_PLUS_EXPR
1643         instead of PLUS_EXPR.
1644         When either operand is zero, convert the other operand.
1645         (chrec_apply): Use chrec_convert_rhs
1646         on the argument x instead of chrec_convert.
1647         (reset_evolution_in_loop): For pointer types, the new_evol
1648         should be sizetype.
1649         (convert_affine_scev): For POINTER_PLUS_EXPR, use a
1650         different right hand side type.
1651         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
1652         (chrec_convert_rhs): New function.
1653         (chrec_convert_aggressive): For POINTER_PLUS_EXPR, use a
1654         different right hand side type.
1655         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
1656         * tree-chrec.h (chrec_convert_rhs): New prototype.
1657         (build_polynomial_chrec): For pointer types, the right hand
1658         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Look for
1659         POINTER_PLUS_EXPR instead of PLUS_EXPR's.
1660         Remove subtraction case as it is always addition now.
1661         Make sure the offset is converted to sizetype.
1662         (fold_stmt_r): Don't handle PLUS_EXPR/MINUS_EXPR specially.
1663         Handle POINTER_PLUS_EXPR like PLUS_EXPR was handled before.
1664         * tree-ssa-loop-ivopts.c (determine_base_object): Abort for 
1665         PLUS_EXPR in pointer type.
1666         Handle POINTER_PLUS_EXPR.
1667         (tree_to_aff_combination): Likewise.
1668         (force_expr_to_var_cost): Likewise.
1669         (force_expr_to_var_cost): Likewise. Create a POINTER_PLUS_EXPR
1670         instead of PLUS_EXPR for pointers.
1671         * c-format.c (check_format_arg): Handle POINTER_PLUS_EXPR
1672         instead of PLUS_EXPR of pointer types.
1673         * tree-stdarg.c (va_list_counter_bump): Handle POINTER_PLUS_EXPR
1674         as PLUS_EXPR.
1675         (check_va_list_escapes): Likewise.
1676         (check_all_va_list_escapes): Likewise.
1677         * dwarf2out.c (loc_descriptor_from_tree_1):
1678         Handle POINT_PLUS_EXPR as a PLUS_EXPR.
1679         * expr.c (expand_expr_real_1): Handle POINTER_PLUS_EXPR.
1680         (string_constant): Likewise.
1681         * tree-ssa-address.c (tree_mem_ref_addr): When adding
1682         the offset to the base, use POINTER_PLUS_EXPR.
1683         (add_to_parts): Convert the index to sizetype.
1684         (create_mem_ref): Create A POINTER_PLUS_EXPR for the one case.
1685         * matrix-reorg.c (collect_data_for_malloc_call): Stmt
1686         will now only be either INDIRECT_REF and POINTER_PLUS_EXPR.
1687         Offset only holds something for PLUS_EXPR.
1688         (ssa_accessed_in_tree): Handle POINTER_PLUS_EXPR just as
1689         a PLUS_EXPR.
1690         (analyze_transpose): POINTER_PLUS_EXPR will only show up now
1691         and not PLUS_EXPR.
1692         (analyze_accesses_for_modify_stmt): Likewise.
1693         Remove comment about the type being integral type as it is
1694         wrong now.
1695         (can_calculate_expr_before_stmt): Handle POINTER_PLUS_EXPR as
1696         PLUS_EXPR.
1697         (transform_access_sites): POINTER_PLUS_EXPR will only show up now
1698         and not PLUS_EXPR.
1699         Correct the type which the artimentic is done in (is now
1700         sizetype).
1701         Reindent one loop.
1702         * tree-data-ref.c (split_constant_offset): Handle
1703         POINTER_PLUS_EXPR
1704         * tree-affine.c (tree_to_aff_combination): Likewise.
1705         * c-typeck.c (build_unary_op): For pointers create the increment
1706         as a sizetype. Create a POINTER_PLUS_EXPR instead of PLUS_EXPR
1707         for pointers.
1708         * gimplify.c (gimplify_self_mod_expr): Create a
1709         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
1710         (gimplify_omp_atomic_fetch_op): Handle POINTER_PLUS_EXPR.
1711         * tree.def (POINTER_PLUS_EXPR): New tree code.
1712         * tree-predcom.c (ref_at_iteration): If we have a pointer
1713         type do the multiplication in sizetype.
1714         * tree-mudflap.c (mf_xform_derefs_1): Create a
1715         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
1716         * tree-ssa-forwprop.c 
1717         (forward_propagate_addr_into_variable_array_index):
1718         Don't expect there to be a cast for the index as that
1719         does not exist anymore.
1720         (forward_propagate_addr_expr_1): Check for POINTER_PLUS_EXPR
1721         instead of PLUS_EXPR.
1722         Don't check for the first operand of the POINTER_PLUS_EXPR
1723         was the index as it cannot be.
1724         Call forward_propagate_addr_into_variable_array_index with
1725         the SSA_NAME instead of the statement.
1726         * varasm.c (const_hash_1): Handle POINTER_PLUS_EXPR.
1727         (compare_constant): Likewise.
1728         (copy_constant): Likewise.
1729         (compute_reloc_for_constant): Likewise.
1730         (output_addressed_constants): Likewise.
1731         (initializer_constant_valid_p): Likewise.
1732         * tree-ssa.c (tree_ssa_useless_type_conversion_1):
1733         Convert the MIN/MAX of the inner type to the outer
1734         type before comparing them.
1735         * tree-ssa-loop-prefetch.c (idx_analyze_ref):  Handle
1736         POINTER_PLUS_EXPR instead of PLUS_EXPR.
1737         (issue_prefetch_ref): Create a POINTER_PLUS_EXPR instead
1738         of PLUS_EXPR for pointers.
1739         * tree-inline.c (estimate_num_insns_1): Handle
1740         POINTER_PLUS_EXPR.
1741         * tree-vect-transform.c (vect_create_addr_base_for_vector_ref): 
1742         Create a POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
1743         (bump_vector_ptr): Create a POINTER_PLUS_EXPR
1744         instead of PLUS_EXPR for the pointer increment statement.
1745         (vect_update_ivs_after_vectorizer): For pointer types, create
1746         POINTER_PLUS_EXPR instead of PLUS_EXPR and also create
1747         MULT_EXPR in sizetype.
1748         (vect_gen_niters_for_prolog_loop): Add a cast when creating
1749         byte_misalign.
1750         * tree-object-size.c (plus_expr_object_size): Handle
1751         POINTER_PLUS_EXPR instead of PLUS_EXPR.  Removing all the extra
1752         code which is trying to figure out which side is a pointer and 
1753         is the index.
1754         (check_for_plus_in_loops_1): Likewise.
1755         (check_for_plus_in_loops): Likewise.
1756         * c-common.c (pointer_int_sum): Create a
1757         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
1758         * tree-ssa-structalias.c (handle_ptr_arith): Handle
1759         only POINTER_PLUS_EXPR.  Removing all the extra
1760         code which is trying to figure out which side is a pointer and 
1761         is the index.
1762         * tree-cfg.c (verify_expr): Add extra checking for pointers and
1763         PLUS_EXPR and MINUS_EXPR.
1764         Also add checking to make sure the operands of POINTER_PLUS_EXPR
1765         are correct.
1766         * config/frv/frv.c (frv_expand_builtin_va_start): Use sizetype
1767         with make_tree, instead of a pointer type.
1768         * config/s390/s390.c (s390_va_start): Use POINTER_PLUS_EXPR
1769         for pointers instead of PLUS_EXPR.
1770         (s390_gimplify_va_arg): Likewise.
1771         * config/spu/spu.c (spu_va_start): Create POINTER_PLUS_EXPR
1772         instead of PLUS_EXPR when doing addition on pointer
1773         types.  Use sizetype for the second operand.
1774         (spu_gimplify_va_arg_expr): Likewise.
1775         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use 
1776         POINTER_PLUS_EXPR instead of PLUS_EXPR when the operand was
1777         a pointer.  Don't create a BIT_AND_EXPR for pointer types.
1778         * config/i386/i386.c (ix86_va_start): Use POINTER_PLUS_EXPR
1779         for the pointer addition and also use size_int/sizetype
1780         for the offset.
1781         (ix86_gimplify_va_arg): Likewise.
1782         Perform BIT_AND_EXPR on sizetype arguments.
1783         * config/sh/sh.c (sh_va_start): Call make_tree with sizetype
1784         and convert its result to a pointer type.  Use POINTER_PLUS_EXPR
1785         for the pointer additions and also use size_int for the offsets.
1786         (sh_gimplify_va_arg_expr): Use POINTER_PLUS_EXPR for the pointer
1787         additions and also use size_int for the offsets.  Perform
1788         BIT_AND_EXPR on sizetype arguments.
1789         * config/ia64/ia64.c (ia64_gimplify_va_arg): Use
1790         POINTER_PLUS_EXPR for pointers and create the
1791         BIT_AND_EXPR in sizetype.
1792         * config/rs6000/rs6000.c (rs6000_va_start): Use POINTER_PLUS_EXPR
1793         instead of PLUS_EXPR for pointer addition.
1794         (rs6000_va_start): Likewise.
1795         Also use sizetype for the offset.
1796         * config/pa/pa.c (reloc_needed): Handle POINTER_PLUS_EXPR
1797         as PLUS_EXPR/MINUS_EXPR.
1798         (hppa_gimplify_va_arg_expr): Don't create MINUS_EXPR or
1799         PLUS_EXPR for pointers, instead use POINTER_PLUS_EXPR.
1800         Don't use BIT_AND_EXPR on a pointer type, convert the
1801         expression to sizetype first.
1802         * config/mips/mips.c (mips_va_start): Use POINTER_PLUS_EXPR
1803         for pointers.
1804         (mips_gimplify_va_arg_expr): Likewise.
1805         Don't create BIT_AND_EXPR in a pointer type.
1806
1807 2007-06-15  Eric Christopher  <echristo@apple.com>
1808
1809         * config.gcc (i?86-*-darwin*): Add t-crtfm and t-crtpc.
1810         (x86_64-*-darwin*): Ditto.
1811         * config/i386/darwin.h (CRTEND_SPEC): New. Add support
1812         for above.
1813
1814 2007-06-15  Matthew Wilcox <matthew@wil.cx>
1815
1816         * doc/extend.texi: Document behavior of __attribute__((aligned))
1817         on typedefs.
1818
1819 2007-06-15  Mark Mitchell  <mark@codesourcery.com>
1820
1821         * rtlanal.c (note_stores): Improve documentation.
1822
1823 2007-06-15  Bernd Schmidt  <bernd.schmidt@analog.com>
1824
1825         * config/bfin/elf.h (ASM_GENERATE_INTERNAL_LABEL,
1826         LOCAL_LABEL_PREFIX): Delete.
1827         * config/bfin/bfin.c (TARGET_ASM_INTERNAL_LABEL): Delete.
1828         (bfin_internal_label): Delete.
1829
1830 2007-06-15  Uros Bizjak  <ubizjak@gmail.com>
1831
1832         * libgcc2.c (CEXT): When compiling L_multc3 and L_divtc3,
1833         define to "l" if LIBGCC_LONG_DOUBLE_SIZE == 128,
1834         otherwise define to LIBGCC2_TF_CEXT.
1835         * config/i386/linux64.h (LIBGCC2_HAS_TF_MODE): New define.
1836         (LIBGCC_TF_CEXT): Ditto.
1837         (TF_SIZE): Ditto.
1838
1839 2007-06-14  Seongbae Park  <seongbae.park@gmail.com>
1840
1841         PR rtl-optimization/32339
1842         * df-scan.c (df_uses_record): Don't modify flags but just add to
1843         it for df_ref_record.
1844
1845 2007-06-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1846
1847         * tree-mudflap.c: Fix whitespace issues.
1848
1849 2007-06-15  Kazu Hirata  <kazu@codesourcery.com>
1850
1851         * config/m68k/m68k.c (ASM_DOT, ASM_DOTW, ASM_DOTL): Remove.
1852
1853 2007-06-14  Eric Christopher  <echristo@apple.com>
1854
1855         * config/i386/sse.md (movdi_to_sse): Rewrite body.
1856         (movv4sf): Use gcc_unreachable instead of abort.
1857
1858 2007-06-14  Uros Bizjak  <ubizjak@gmail.com>
1859
1860         PR target/32268
1861         * config/i386/sfp-machine.h (CMPtype): New define.
1862         (mach stubs): Use CMPtype instead of int as a return type.
1863
1864 2007-06-14  Uros Bizjak  <ubizjak@gmail.com>
1865
1866         * config/soft-fp/eqdf2.c, config/soft-fp/eqsf2.c,
1867         config/soft-fp/eqtf2.c, config/soft-fp/gedf2.c,
1868         config/soft-fp/gesf2.c, config/soft-fp/getf2.c,
1869         config/soft-fp/ledf2.c, config/soft-fp/lesf2.c,
1870         config/soft-fp/letf2.c, config/soft-fp/unorddf2.c,
1871         config/soft-fp/unordsf2.c, config/soft-fp/unordtf2.c,
1872         config/soft-fp/soft-fp.h: Update from glibc CVS.
1873
1874 2007-06-14  Bernd Schmidt  <bernd.schmidt@analog.com>
1875
1876         * config/bfin/uclinux.h (MFWRAP_SPEC): New.
1877
1878 2007-06-14  Rask Ingemann Lambertsen  <rask@sygehus.dk>
1879
1880         PR target/32341
1881         * config/v850/v850.c: Include dataflow header file.
1882         (substitute_ep_register): Fix typo.
1883
1884 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
1885
1886         * configure.ac: Fix earlier checkin.
1887         * configure: Regenerated.
1888
1889 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
1890
1891         * acinclude.m4 (gcc_AC_CHECK_PROG_VER): Remove.
1892         * aclocal.m4: Regenerate.
1893         * configure.ac: Use ACX_PROG_CC_WARNING_OPTS,
1894         ACX_PROG_CC_WARNINGS_ARE_ERRORS,
1895         ACX_PROG_CC_WARNING_ALMOST_PEDANTIC, ACX_CHECK_PROG_VER.
1896         * configure: Regenerate.
1897         * Makefile.in (LOOSE_WARN): Subst loose_warn.
1898
1899         * Makefile.in (quickstrap): Build libgcc too.
1900
1901 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
1902
1903         * configure.ac: Add --enable-checking=df.  Explicitly mention that
1904         the variables are initialized as for "release".
1905         * df-core.c: Use it.
1906         * configure: Regenerate.
1907         * config.in: Regenerate.
1908
1909 2007-06-14  Bob Wilson  <bob.wilson@acm.org>
1910
1911         * config/xtensa/xtensa.c (xtensa_expand_nonlocal_goto): Use
1912         validate_replace_rtx instead of replace_rtx.
1913         (xtensa_expand_prologue): Call df_insn_rescan after replace_rtx.
1914
1915 2007-06-14  Danny Smith  <dannysmith@users.sourceforge.net>
1916
1917         * config/i386/cygming.h (DWARF_FRAME_REGNUM): Define.
1918         (DWARF2_UNWIND_INFO): Override default if configured with
1919         SJLJ EH disabled.
1920         * config/i386/cygwin.h (STARTFILE_SPEC): Add crtbegin.o.
1921         (ENDFILE_SPEC): Add crtend.o.
1922         * config/i386/mingw32.h (STARTFILE_SEC): Add crtbegin.o.
1923         (ENDFILE_SPEC): Add crtend.o.
1924         (TARGET_USE_JCR_SECTION): Define.
1925         (MD_UNWIND_SUPPORT): Define for 32-bit target.
1926
1927         * config/i386/cygming-crtbegin.c: New file.
1928         * config/i386/cygming-crtend.c: New file.
1929
1930 2007-06-14  Pascal Obry Pascal Obry  <obry@adacore.com>
1931
1932         * config/i386/w32-unwind.h: New file.
1933
1934 2007-06-13  Eric Christopher  <echristo@apple.com>
1935
1936         * config/i386/darwin.h (PREFERRED_STACK_BOUNDARY): Don't let
1937         the user set a value below STACK_BOUNDARY.
1938
1939 2007-06-13  Thiemo Seufer  <ths@networkno.de>
1940
1941         * config/mips/linux.h, config/mips/linux64.h (LIB_SPEC): Always
1942         imply -lpthread for -pthread.
1943
1944 2007-06-13  Kazu Hirata  <kazu@codesourcery.com>
1945
1946         * basic-block.h: Remove the prototype for
1947         free_basic_block_vars.
1948         * cfglayout.h: Remove the prototype for
1949         insn_locators_initialize.
1950         * tree.h: Remove the prototype for emit_line_note.
1951
1952         * tree-ssa-pre.c (mergephitemp): Remove.
1953         (init_pre): Don't use mergephitemp.
1954
1955 2007-06-13  Eric Christopher  <echristo@apple.com>
1956
1957         * config/i386/i386.c (override_options): If we've specified
1958         an arch then don't use TARGET_SUBTARGET_ISA_DEFAULTs.
1959
1960 2007-06-13  Bob Wilson  <bob.wilson@acm.org>
1961
1962         * df-scan.c (df_get_entry_block_def_set): Check if STATIC_CHAIN_REGNUM
1963         is defined.
1964
1965 2007-06-13  Bernd Schmidt  <bernd.schmidt@analog.com>
1966
1967         * config/bfin/bfin.h (EH_RETURN_HANDLER_RTX): Use gen_frame_mem.
1968         * config/bfin/bfin.md (UNSPEC_VOLATILE_STORE_EH_HANDLER): New constant.
1969         (eh_store_handler): New pattern.
1970         (eh_return): Emit it instead of a plain move.
1971
1972 2007-06-13  Uros Bizjak  <ubizjak@gmail.com>
1973
1974         * config/i386/i386.c (ix86_init_mmx_sse_builtins)
1975         [__builtin_infq, __builtin_fabsq]: Define usign def_builtin.
1976         [__builtin_ia32_rsqrtps, __builtin_ia32_rsqrtss]: Define using
1977         def_builtin_const.
1978
1979 2007-06-13  Bernd Schmidt  <bernd.schmidt@analog.com>
1980
1981         * config/bfin/bfin.c (gen_one_bundle): Delete unused local variables.
1982         (find_next_insn_start, find_load): New functions.
1983         (bfin_reorg): Use them to deal with the fact that parallel insns are
1984         no longer represented as a SEQUENCE.
1985
1986 2007-06-13  Eric Botcazou  <ebotcazou@libertysurf.fr>
1987
1988         * config/sparc/sparc.c (sparc_override_options): Initialize
1989         fpu mask correctly.
1990
1991 2007-06-13  Dave Korn  <dave.korn@artimi.com>
1992
1993         * config/i386/i386.c (ix86_eax_live_at_start_p): Use
1994         df_get_live_out.
1995
1996 2007-06-13  Kazu Hirata  <kazu@codesourcery.com>
1997
1998         * auto-inc-dec.c, c-incpath.c, config/c4x/libgcc.S,
1999         config/sh/divcost-analysis, dbgcnt.def, df-core.c,
2000         df-problems.c, df-scan.c, df.h, dominance.c, dse.c, regstat.c,
2001         tree-data-ref.c, tree-ssa-loop-im.c, tree-ssa-loop-prefetch.c,
2002         tree-vect-transform.c: Fix comment typos.  Follow spelling
2003         conventions.
2004
2005 2007-06-12  Seongbae Park  <seongbae.park@gmail.com>
2006
2007        * df-scan.c (df_get_exit-block_use_set): Always add the stack pointer
2008        to the exit block use set.
2009        (df_insn_delete, df_insn_rescan): Fixed spelling of "deferring". 
2010        * gcse.c (cpro_jump): Don't emit barrier in cfglayout mode.
2011        * config/sparc/sparc.c (sparc_check_64): Check df != NULL.
2012
2013 2007-06-12  Seongbae Park  <seongbae.park@gmail.com>
2014
2015         * opts.c (common_handle_option): Handle new option -fdbg-cnt-list.
2016         * dbgcnt.c (dbg_cnt_set_limit_by_name): Return value
2017         to indicate an error.
2018         (dbg_cnt_process_single_pair, dbg_cnt_list_all_counters): New functions
2019         (dbg_cnt_process_opt): Print an error on a bad argument.
2020         * dbgcnt.h (dbg_cnt_list_all_counters): New function declaration.
2021         * common.opt (-fdbg-cnt-list): New.
2022         * doc/invoke.texi (-fdbg-cnt-list,-fdbg-cnt=): New.
2023
2024 2007-06-12  Eric Botcazou  <ebotcazou@adacore.com>
2025
2026         * tree-ssa-alias.c (finalize_ref_all_pointers): Clear pt_anything
2027         flag on ref-all pointers.
2028
2029 2007-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2030
2031         PR middle-end/31579
2032         * expr.c (expand_expr_addr_expr_1): Call expand_expr
2033         for the offset with the modifier as EXPAND_INITIALIZER
2034         if the modifier is EXPAND_INITIALIZER.
2035         (expand_expr_real_1 <case INTEGER_CST>): Don't force to
2036         a register if we had an overflow.
2037
2038 2007-06-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2039
2040         * real.c (real_isfinite): New.
2041         (real_sqrt): Use it.
2042         * real.h (real_isfinite): New.
2043         * builtins.c: Use it.
2044
2045 2007-06-12  Ian Lance Taylor  <iant@google.com>
2046             Daniel Berlin  <dberlin@dberlin.org>
2047
2048         PR libstdc++/29286
2049         * tree.def: Add CHANGE_DYNAMIC_TYPE_EXPR.
2050         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Define.
2051         (CHANGE_DYNAMIC_TYPE_LOCATION): Define.
2052         (DECL_NO_TBAA_P): Define.
2053         (struct tree_decl_common): Add no_tbaa_flag field.
2054         * tree-ssa-structalias.c (struct variable_info): Add
2055         no_tbaa_pruning field.
2056         (new_var_info): Initialize no_tbaa_pruning field.
2057         (unify_nodes): Copy no_tbaa_pruning field.
2058         (find_func_aliases): Handle CHANGE_DYNAMIC_TYPE_EXPR.
2059         (dump_solution_for_var): Print no_tbaa_pruning flag.
2060         (set_uids_in_ptset): Add no_tbaa_pruning parameter.  Change all
2061         callers.
2062         (compute_tbaa_pruning): New static function.
2063         (compute_points_to_sets): Remove CHANGE_DYNAMIC_TYPE_EXPR nodes.
2064         Call compute_tbaa_pruning.
2065         * tree-ssa-alias.c (may_alias_p): Test no_tbaa_flag for pointers.
2066         * gimplify.c (gimplify_expr): Handle CHANGE_DYNAMIC_TYPE_EXPR.
2067         * gimple-low.c (lower_stmt): Likewise.
2068         * tree-gimple.c (is_gimple_stmt): Likewise.
2069         * tree-ssa-operands.c (get_expr_operands): Likewise.
2070         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
2071         * tree-inline.c (estimate_num_insns_1): Likewise.
2072         (copy_result_decl_to_var): Likewise.
2073         * expr.c (expand_expr_real_1): Likewise.
2074         * tree-pretty-print.c (dump_generic_node): Likewise.
2075         * tree-inline.c (copy_decl_to_var): Copy DECL_NO_TBAA_P flag.
2076         * omp-low.c (omp_copy_decl_2): Likewise.
2077         * print-tree.c (print_node): Print DECL_NO_TBAA_P flag.
2078         * doc/c-tree.texi (Expression trees): Document
2079         CHANGE_DYNAMIC_TYPE_EXPR.
2080
2081 2007-06-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2082
2083         * fold-const.c (fold_binary): Guard (X-X) -> 0 transformation
2084         with !HONOR_NANS and !HONOR_INFINITIES.
2085         * simplify-rtx.c (simplify_binary_operation_1): Likewise.
2086
2087 2007-06-12  Tristan Gingold  <gingold@adacore.com>
2088
2089         * gcov.c: Comments updated.
2090         (source_info): Add file_time field.
2091         (source_index): New variable.
2092         (mutiple_files): New variable.
2093         (generate_results): New function extracted from process_file.
2094         (process_file): Save and restore chain of functions, generate
2095         results and free structures only if not merging results.
2096         (release_structures): File names are now freed in create_file_names
2097         (create_file_names): Free previous file names.
2098         (find_source): File date is now read here and modifications in
2099         source files is checked here.
2100         (read_graph_file): Only reverse order of functions for the current
2101         object file.
2102         (make_gcov_file_name): Do not generate long names if input_name is
2103         NULL.
2104         (output_lines): If merging results do not display graph, data and
2105         runs informations.
2106         Checking source file modification is done in find_source.
2107
2108         * doc/gcov.texi: Append an s to sourcefile.
2109
2110 2007-06-12  Bernd Schmidt  <bernd.schmidt@analog.com>
2111
2112         * config/bfin/bfin.md (UNSPEC_NOP): New constant.
2113         (forced_nop): New pattern.
2114         * config/bfin/bfin.c: Include "df.h".
2115         (add_to_reg): Use df_regs_ever_live_p instead of regs_ever_live.
2116         (bfin_discover_loop): Use df_get_live_in instead of
2117         global_live_at_start.
2118         (bfin_reorder_loops): Pass 0 to cfg_layout_initialize.  Call
2119         df_analyze when done.
2120         (gen_one_bundle): Don't generate SEQUENCE insns, just put modes on
2121         the insns.  Use QImode for the final insn in a bundle.  Call
2122         df_insn_rescan on generated NOPs; use gen_forced_nop instead of
2123         gen_nop.
2124         (reorder_var_tracking_notes): New function.
2125         (bfin_reorg): Pass no argument to split_all_insns.  Don't call
2126         update_life_info.  Call df_analyze after scheduling and bundle
2127         generation.  Call reorder_var_tracking_notes if generating these notes.
2128         Call df_finish_pass at the end.
2129
2130 2007-06-12  Dirk Mueller  <dmueller@suse.de>
2131
2132         * optabs.c (debug_optab_libfuncs): fix gcc_assert to
2133         a comparison, not an assignment.
2134
2135 2007-06-12  Olivier Hainque  <hainque@adacore.com>
2136
2137         * tree-nested.c (convert_local_reference): Handle VIEW_CONVERT_EXPR.
2138         Request walking the subtrees only, leaving the current is_lhs/val_only
2139         untouched.
2140         (convert_non_local_reference): Likewise.
2141
2142 2007-06-12  Nathan Sidwell  <nathan@codesourcery.com>
2143
2144         * config/m68k/m68k-devices.def (52221, 52223, 5253): New.
2145
2146 2007-06-12  Richard Guenther  <rguenther@suse.de>
2147
2148         PR tree-optimization/15353
2149         PR tree-optimization/31657
2150         * passes.c (init_optimization_passes): Add pass_tree_ifcombine.
2151         * timevar.def: Add TV_TREE_IFCOMBINE.
2152         * tree-pass.h (pass_tree_ifcombine): Declare.
2153         * tree-ssa-ifcombine.c: New file.
2154         * tree-ssa-phiopt.c (blocks_in_phiopt_order): Export.
2155         * tree-flow.h (blocks_in_phiopt_order): Declare.
2156         * Makefile.in (OBJS-common): Add tree-ssa-ifcombine.o.
2157         (tree-ssa-ifcombine.o): New dependencies.
2158
2159 2007-06-12  Uros Bizjak  <ubizjak@gmail.com>
2160
2161         PR rtl-optimization/32293
2162         * combine.c (simplify_if_then_else): Truncate return from
2163         nonzero_bits() to correct mode.
2164
2165 2007-06-12  Uros Bizjak  <ubizjak@gmail.com>
2166
2167         * fold-const (fold_binary) [RDIV_EXPR]: Also optimize a/cbrt(b/c)
2168         into a*cbrt(c/b) if flag_unsafe_math_optimizations is set.
2169
2170 2007-06-11  Diego Novillo  <dnovillo@google.com>
2171
2172         * Makefile.in (reload1.o-warn): Remove.
2173
2174 2007-06-11  Seongbae Park <seongbae.park@gmail.com>
2175
2176         * combine.c (subst): Use reg_overlap_mentioned_p
2177         instead of comparing register numbers directly.
2178
2179 2007-06-11  Kenneth Zadeck <zadeck@naturalbridge.com>
2180
2181         * reload1.c (mark_home_live_1): Use the mode parameter.
2182
2183 2007-06-11  Kenneth Zadeck <zadeck@naturalbridge.com>
2184
2185         * df-scan.c (df_insn_delete, df_insn_rescan, df_insn_rescan_all,
2186         df_process_deferred_rescans, df_notes_rescan): Fixed spelling of
2187         word "deferred".
2188         * df-core.c: Ditto.
2189
2190 2007-06-11  Daniel Berlin  <dberlin@dberlin.org>
2191
2192         * Merge dataflow-branch into mainline (see ChangeLog.dataflow)
2193
2194 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
2195
2196         * config/i386/i386.md ("*movtf_internal): Penalize moves to and
2197         from integer registers.
2198         (FP mode splitters): Handle TFmode.
2199
2200 2007-06-11  Eric Botcazou  <ebotcazou@adacore.com>
2201
2202         * tree-ssa-structalias.c (find_what_p_points_to): Return false
2203         for ref-all pointers that point-to anything.
2204
2205 2007-06-11  Joseph Myers  <joseph@codesourcery.com>
2206
2207         * config/arm/arm.c (arm_output_dwarf_dtprel,
2208         TARGET_ASM_OUTPUT_DWARF_DTPREL): New.
2209
2210 2007-06-11  Bernd Schmidt  <bernd.schmidt@analog.com>
2211
2212         * config/bfin/bfin.md (movdi_insn, movsi_insn, movv2hi_insn,
2213         movhi_insn, movqi_insn, movsf_insn, movdf_insn): Don't allow constant
2214         to memory moves.
2215
2216 2007-06-11  Rafael Avila de Espindola  <espindola@google.com>
2217
2218         * gcc/tree.c (signed_or_unsigned_type_for): New.
2219         (unsigned_type_for): Use signed_or_unsigned_type_for.
2220         (signed_type_for): Use signed_or_unsigned_type_for.
2221         * gcc/tree.h (signed_or_unsigned_type_for): New.
2222         (get_signed_or_unsigned_type): Remove.
2223         * gcc/fold-const.c (fold_negate_expr): Use signed_type_for instead of
2224         lang_hooks.types.signed_type
2225         (size_diffop): Likewise.
2226         (all_ones_mask_p): Likewise.
2227         (build_range_check): Likewise.
2228         (fold_cond_expr_with_comparison): Likewise.
2229         (fold_cond_expr_with_comparison): Likewise.
2230         (unextend): Likewise.
2231         (extract_muldiv_1): Likewise.
2232         (fold_single_bit_test_into_sign_test): Likewise.
2233         (fold_binary): Likewise.
2234         (fold_ternary): Likewise.
2235         (operand_equal_for_comparison_p): Use signed_or_unsigned_type_for
2236         instead of get_signed_or_unsigned_type.
2237         * gcc/c-objc-common.h (LANG_HOOKS_SIGNED_TYPE): Remove.
2238         (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
2239         * gcc/expr.c (signed_or_unsigned_type_for): Use
2240         signed_or_unsigned_type_for instead of get_signed_or_unsigned_type.
2241         * gcc/langhooks.c (get_signed_or_unsigned_type): Remove.
2242         (lhd_signed_or_unsigned_type): Remove.
2243         * gcc/langhooks.h (lang_hooks_for_types): Remove signed_type and
2244         signed_or_unsigned_type.
2245         (lhd_signed_or_unsigned_type): Remove.
2246         * gcc/expmed.c (make_tree): Use signed_type_for instead of
2247         lang_hooks.types.signed_type.
2248         * gcc/c-common.c (same_scalar_type_ignoring_signedness): Use
2249         c_common_signed_type instead of lang_hooks.types.signed_type.
2250         (c_common_unsigned_type): New.
2251         (c_common_signed_type): Just call c_common_signed_or_unsigned_type.
2252         (shorten_compare): Use c_common_unsigned_type instead of
2253         c_common_signed_or_unsigned_type.
2254         (c_common_nodes_and_builtins): Use c_common_unsigned_type instead of
2255         unsigned_type_for.
2256         * gcc/convert.c (convert_to_integer): Use signed_type_for instead of
2257         lang_hooks.types.signed_type.
2258         * gcc/langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
2259         (LANG_HOOK_FOR_TYPES_INITIALIZER): Remove LANG_HOOKS_SIGNED_TYPE and
2260         LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE.
2261         * gcc/c-format.c (check_format_types): Use c_common_unsigned_type
2262         instead of unsigned_type_for.
2263         * gcc/c-decl.c (groakdeclarator): Likewise.
2264         * gcc/c-typeck.c (convert_for_assignment): Likewise.
2265         * gcc/c-common.h (c_common_unsigned_type): New.
2266
2267 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
2268
2269         PR target/32280
2270         * config/i386/sse.md ("sse2_ashlti", "sse2_lshrti3"): Move ...
2271         * config/i386/i386.md ("sse2_ashlti", "sse2_lshrti3"): ... to here.
2272
2273 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
2274
2275         PR middle-end/32279
2276         * fold-const (fold_binary) [RDIV_EXPR]: Optimize a/sqrt(b/c)
2277         into a*sqrt(c/b) if flag_unsafe_math_optimizations is set.
2278
2279 2007-06-10  Jan Sjodin  <jan.sjodin@amd.com>
2280             Sebastian Pop  <sebpop@gmail.com>
2281
2282         * lambda-code.c (remove_iv): New.
2283         (lambda_loopnest_to_gcc_loopnest): Use remove_iv.
2284
2285 2007-06-10  Zdenek Dvorak  <dvorakz@suse.cz>
2286
2287         * tree-data-ref.c (dr_analyze_alias): Handle case smt is NULL.
2288         * tree-predcom.c (mark_virtual_ops_for_renaming): Exported.
2289         * tree-ssa-loop-prefetch.c: Include optabs.h.
2290         (FENCE_FOLLOWING_MOVNT): New macro.
2291         (struct mem_ref): Add independent_p and storent_p fields.
2292         (record_ref): Initalize the new fields.
2293         (gather_memory_references_ref): Return true if the reference
2294         could be analysed.
2295         (gather_memory_references): Check whether all memory accesses
2296         in loop were recorded.
2297         (should_issue_prefetch_p): Return false for nontemporal stores.
2298         (nontemporal_store_p, mark_nontemporal_store, emit_mfence_after_loop,
2299         may_use_storent_in_loop_p, mark_nontemporal_stores): New functions.
2300         (determine_loop_nest_reuse): Detect independent memory references.
2301         (loop_prefetch_arrays): Call mark_nontemporal_stores.
2302         * tree-flow.h (mark_virtual_ops_for_renaming): Declare.
2303         * Makefile.in (tree-ssa-loop-prefetch.o): Add OPTABS_H dependency.
2304         * config/i386/i386.h (x86_mfence): Declare.
2305         (FENCE_FOLLOWING_MOVNT): Return x86_mfence.
2306         * config/i386/i386.c (x86_mfence): New variable.
2307         (ix86_init_mmx_sse_builtins): Initialize x86_mfence.
2308
2309         * tree-pretty-print.c (dump_generic_node): Mark nontemporal stores.
2310         * optabs.c (init_optabs): Initialize storent_optab.
2311         * optabs.h (enum optab_index): Add OTI_storent.
2312         (storent_optab): Declare.
2313         * genopinit.c (optabs): Add initialization for storent_optab.
2314         * tree.h (MOVE_NONTEMPORAL): New macro.
2315         * expr.c (expand_assignment, store_expr, store_constructor_field,
2316         store_constructor, store_field, expand_expr_real_1): Propagate
2317         nontemporality of the expanded store.
2318         (emit_storent_insn): New function.
2319         * expr.h (expand_assignment, store_expr): Declaration changed.
2320         * function.c (assign_parm_setup_reg): Pass false as nontemporality
2321         to expand_assignment.
2322         * stmt.c (expand_asm_expr): Ditto.
2323         * calls.c (initialize_argument_information): Pass false as
2324         nontemporality to store_expr.
2325         * config/i386/sse.md (storentv4sf, storentv2df, storentv2di,
2326         storentsi): New.
2327
2328 2007-06-09  Daniel Berlin  <dberlin@dberlin.org>
2329
2330         * tree-ssa-structalias.c (set_uids_in_ptset): Add is_deref'd
2331         parameter, use it.
2332         (find_what_p_points_to): Pass new parameter to set_uids_in_ptset.
2333
2334 2007-06-09  Daniel Berlin  <dberlin@dberlin.org>
2335
2336         * tree-data-ref.c (dr_may_alias_p): Check that decl_a != decl_b,
2337         and allow DECL_P here.
2338
2339 2007-06-09  Zdenek Dvorak  <dvorakz@suse.cz>
2340
2341         * tree-scalar-evolution.c (follow_ssa_edge_in_rhs,
2342         follow_ssa_edge_in_condition_phi, follow_ssa_edge): Keep more precise
2343         track of the size of the expression.
2344         * cfghooks.c (merge_blocks): Remove block from loops structure only
2345         after call of the merge_blocks hook.
2346
2347 2007-06-09  Tom Tromey  <tromey@redhat.com>
2348
2349         * c-decl.c (grokdeclarator): Added 'deprecated_state' argument.
2350         (deprecated_state): Removed.
2351         (start_decl): Update.
2352         (enum deprecated_states): Moved earlier.
2353         (groktypename): Update.
2354         (push_parm_decl): Likewise.
2355         (grokfield): Likewise.
2356         (start_function): Likewise.
2357
2358 2007-06-09  Ian Lance Taylor  <iant@google.com>
2359
2360         PR tree-optimization/32169
2361         * tree-vrp.c (extract_range_from_unary_expr): For NOP_EXPR and
2362         CONVERT_EXPR, check whether min and max both converted to an
2363         overflow infinity representation.
2364
2365 2007-06-08  Eric Botcazou  <ebotcazou@adacore.com>
2366
2367         * reload1.c (fixup_abnormal_edges): Clear bb field for insns
2368         not inserted on the edge.
2369
2370 2007-06-08  Bob Wilson  <bob.wilson@acm.org>
2371
2372         * config/xtensa/lib1funcs.asm (__udivsi3): Use hardware divide
2373         instructions if they are supported.
2374         (__divsi3, __umodsi3, __modsi3): Likewise.
2375         (__ashldi3, __ashrdi3, __lshrdi3): New.
2376         * config/xtensa/t-xtensa (LIB1ASMFUNCS): Add DImode shift functions.
2377
2378 2007-06-08  Harsha Jagasia <harsha.jagasia@amd.com>
2379             Tony Linthicum <tony.linthicum@amd.com>
2380
2381         * doc/extend.texi: Add fvect-cost-model flag.
2382         * common.opt (fvect-cost-model): New flag.
2383         * tree-vectorizer.c (new_stmt_vec_info): Initialize inside and outside
2384         cost fields in stmt_vec_info struct for STMT.
2385         * tree-vectorizer.h (stmt_vec_info): Define inside and outside cost
2386         fields in stmt_vec_info struct and access functions for the same.
2387         (TARG_COND_BRANCH_COST): Define cost of conditional branch.
2388         (TARG_VEC_STMT_COST): Define cost of any vector operation, excluding
2389         load, store and vector to scalar operation.
2390         (TARG_VEC_TO_SCALAR_COST): Define cost of vector to scalar operation.
2391         (TARG_VEC_LOAD_COST): Define cost of aligned vector load.
2392         (TARG_VEC_UNALIGNED_LOAD_COST): Define cost of misasligned vector load.
2393         (TARG_VEC_STORE_COST): Define cost of vector store.
2394         (vect_estimate_min_profitable_iters): Define new function.
2395         * tree-vect-analyze.c (vect_analyze_operations): Add a compile-time
2396         check to evaluate if loop iterations are less than minimum profitable
2397         iterations determined by cost model or minimum vect loop bound defined
2398         by user, whichever is more conservative.
2399         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Add a
2400         run-time check to evaluate if loop iterations are less than minimum
2401         profitable iterations determined by cost model or minimum vect loop
2402         bound defined by user, whichever is more conservative.
2403         (vect_estimate_min_profitable_iterations): New function to estimate
2404         mimimimum iterartions required for vector version of loop to be
2405         profitable over scalar version.
2406         (vect_model_reduction_cost): New function.
2407         (vect_model_induction_cost): New function.
2408         (vect_model_simple_cost): New function.
2409         (vect_cost_strided_group_size): New function.
2410         (vect_model_store_cost): New function.
2411         (vect_model_load_cost): New function.
2412         (vectorizable_reduction): Call vect_model_reduction_cost during
2413         analysis phase.
2414         (vectorizable_induction): Call vect_model_induction_cost during
2415         analysis phase.
2416         (vectorizable_load): Call vect_model_load_cost during analysis phase.
2417         (vectorizable_store): Call vect_model_store_cost during analysis phase.
2418         (vectorizable_call, vectorizable_assignment, vectorizable_operation,
2419         vectorizable_promotion, vectorizable_demotion): Call
2420         vect_model_simple_cost during analysis phase.
2421
2422 2007-06-08  Simon Baldwin  <simonb@google.com>
2423
2424         * reg-stack.c (get_true_reg): Readability change.  Moved default case
2425         label into direct switch statement scope.
2426
2427 2007-06-08  Simon Baldwin  <simonb@google.com>
2428
2429         * tree-flow-inline.h (var_ann): Replaced erroneous '=' assignment
2430         in gcc_assert() with '==' comparison.
2431
2432 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
2433
2434         * config/i386/i386.c (override_options): Merge TARGET_SSE4_2 and
2435         TARGET_ABM handling of x86_popcnt variable.
2436
2437 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
2438
2439         * doc/extend.texi (X86 Built-in Functions): Document __builtin_fabsq,
2440         __builtin_copysignq and __builtin_infq built-in functions.
2441
2442 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
2443
2444         * doc/extend.texi (X86 Built-in Functions): Add missing `@item's in
2445         SSE4.2 section.  Correct built-in function names in SSE4A section.
2446
2447 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
2448
2449         PR tree-optimization/32243
2450         * tree-vect-transform.c (vectorizable_type_promotion): Move check
2451         for ncopies after ratio check between nunits_out and nunits_in.
2452         (vectorizable_type_demotion): Remove single-use variable "scalar_type".
2453
2454 2007-06-08  Dorit Nuzman  <dorit@il.ibm.com>
2455
2456         PR tree-optimization/32224
2457         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fail
2458         vectorization upon a non GIMPLE_MODIFY_STMT.
2459
2460 2007-06-08  Christian Bruel  <christian.bruel@st.com>
2461
2462         PR target/29953
2463         * config/sh/sh.md (doloop_end): New pattern and splitter.
2464         * loop-iv.c (simple_rhs_p): Check for hardware registers.
2465
2466 2007-06-08  Zdenek Dvorak  <dvorakz@suse.cz>
2467
2468         PR middle-end/32209
2469         * dominance.c (debug_dominance_tree, debug_dominance_tree_1): New
2470         functions.
2471         (verify_dominators): Do not change dominance tree.
2472
2473 2007-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
2474
2475         * config/sh/constraints.md: New file.
2476         * config/sh/sh.c: Include tm-constrs.h.
2477         (reg_class_from_letter): Remove.
2478         (prepare_cbranch_operands): Use satisfies_constraint_*
2479         function instead of macro.
2480         (andcosts, broken_move, sh_secondary_reload): Likewise.
2481         * config/sh/predicates.md (trapping_target_operand): Likewise.
2482         (and_operand, arith_operand, arith_reg_or_0_operand,
2483         cmp_operand, logical_operand, target_operand,
2484         ua_address_operand, ua_offset, xor_operand): Likewise.
2485         * config/sh/sh.md: Include constraints.md.
2486         (*movsicc_t_false): Use satisfies_constraint_* function
2487         instead of macro.
2488         (*movsicc_t_true, ashlsi3_std, ashlhi3_k, lshrsi3_m,
2489         lshrsi3_k, movsi_const_16bit+2, *movhi_media+1,
2490         movdi_const_16bit+1, beq, bne, *ptb): Likewise.
2491         * config/sh/sh.h (reg_class_from_letter): Remove prototype.
2492         (OVERRIDE_OPTIONS): Don't modify reg_class_from_letter.
2493         (REG_CLASS_FROM_CONSTRAINT): Remove.
2494         (CONSTRAINT_LEN, CONST_OK_FOR_I20, CONST_OK_FOR_I,
2495         CONST_OK_FOR_J, CONST_OK_FOR_K16, CONST_OK_FOR_K,
2496         CONST_OK_FOR_P27, CONST_OK_FOR_P, CONST_OK_FOR_M,
2497         CONST_OK_FOR_N, CONST_OK_FOR_CONSTRAINT_P,
2498         CONST_DOUBLE_OK_FOR_LETTER_P): Likewise.
2499         (SECONDARY_INOUT_RELOAD_CLASS): Use satisfies_constraint_*
2500         function instead of macro.
2501         (SECONDARY_INPUT_RELOAD_CLASS): Likewise.
2502         (EXTRA_CONSTRAINT_Q, EXTRA_CONSTRAINT_A,
2503         EXTRA_CONSTRAINT_Bsc, EXTRA_CONSTRAINT_B,
2504         EXTRA_CONSTRAINT_Css, EXTRA_CONSTRAINT_Csu): Remove.
2505         (IS_PC_RELATIVE_LOAD_ADDR_P): New macro.
2506         (IS_LITERAL_OR_SYMBOLIC_S16_P): Likewise.
2507         (IS_LITERAL_OR_SYMBOLIC_U16_P): Likewise.
2508         (IS_NON_EXPLICIT_CONSTANT_P): Likewise.
2509         (EXTRA_CONSTRAINT_Csy, EXTRA_CONSTRAINT_Z, EXTRA_CONSTRAINT_W,
2510         EXTRA_CONSTRAINT_Cpg, EXTRA_CONSTRAINT_C,
2511         EXTRA_MEMORY_CONSTRAINT, EXTRA_CONSTRAINT_Sr0,
2512         EXTRA_CONSTRAINT_Sua, EXTRA_CONSTRAINT_S,
2513         EXTRA_CONSTRAINT_STR): Likewise.
2514         (GO_IF_LEGITIMATE_INDEX): Fix indentation.
2515
2516 2007-06-07  Geoffrey Keating  <geoffk@apple.com>
2517
2518         * config/i386/darwin.h (STACK_BOUNDARY): Define.
2519
2520 2007-06-07  Simon Martin  <simartin@users.sourceforge.net>
2521
2522         PR c++/30759
2523         * c-common.h (flag_cpp0x): Replaced by...
2524         (cxx_dialect): ... this new variable specifying the C++ dialect that
2525         is used.
2526         * c-common.c (flag_cpp0x): Removed.
2527         (cxx_dialect): Defined.
2528         * c-cppbuiltin.c (c_cpp_builtins): flag_cpp0x rewritten in terms of
2529         cxx_dialect.
2530         * c-opts.c (c_common_post_options): Likewise.
2531         (set_std_cxx98): Set cxx_dialect to cxx98.
2532         (set_std_cxx0x): Set cxx_dialect to cxx0x.
2533
2534 2007-06-07  Geoffrey Keating  <geoffk@apple.com>
2535             Hui-May Chang <hm.chang@apple.com>
2536
2537         * doc/invoke.texi (Darwin Options): Update documentation for
2538         -mmacosx-version-min.
2539         * config.gcc (*-*-darwin*): Set extra_gcc_objs.
2540         * config/darwin-driver.c: New file.
2541         * config/darwin.h (GCC_DRIVER_HOST_INITIALIZATION): New.
2542         * config/t-darwin (darwin-driver.o): New rule.
2543
2544         * config/darwin-c.c (version_as_macro): Ignore low digit.
2545
2546 2007-06-07  Uros Bizjak  <ubizjak@gmail.com>
2547
2548         * config/i386/i386.md (standard sse constant splitter): Handle TFmode.
2549         (negtf2, abstf2, *absnegtf2_sse): New insn patterns.
2550         (CSGNMODE): New mode macro.
2551         (CSGNVMODE): New mode attribute.
2552         (copysign<mode>3): Rename from copysingsf3 and copysigndf3.  Macroize
2553         expander using CSGNMODE mode macro.  Handle TFmode.
2554         (copysign<mode>3_const): Rename from copysignsf3_const and
2555         copysigndf3_const.  Macroize pattern using CSGNMODE mode macro.
2556         Handle TFmode.
2557         (copysign<mode>3_var): Rename from copysignsf3_var and
2558         copysigndf3_var.  Macroize pattern using CSGNMODE mode macro.
2559         Handle TFmode.
2560         (copysign<mode>3_var splitter): Macroize pattern using CSGNMODE
2561         mode macro.  Handle TFmode.
2562         * config/i386/sse.md (andtf3, *andtf3, *nandtf3): New insn patterns.
2563         (iortf3, *iortf3): Ditto.
2564         (xortf3, *xortf3): Ditto.
2565         * config/i386/i386.c (ix86_build_signbit_mask): Create scalar
2566         TFmode and TImode masks.
2567         (ix86_expand_copysign): Expand TFmode copysign insn.
2568         (IX86_BUILTIN_INFQ): New.
2569         (IX86_BUILTIN_FABSQ): Ditto.
2570         (IX86_BUILTIN_COPYSIGNQ): Ditto.
2571         (ix86_init_mmx_sse_builtins) [__builtin_infq]: New builtin definition.
2572         [__builtin_fabsq]: Ditto.
2573         [__builtin_copysignq]: Ditto.
2574         (ix86_expand_builtin) [IX86_BUILTIN_INFQ]: Expand builtin.
2575         [IX86_BUILTIN_FABSQ]: Expand builtin using ix86_expand_unop_builtin().
2576         [IX86_BUILTIN_COPYSIGNQ]: Expand builtin using
2577         ix86_expand_binop_builtin().
2578
2579 2007-06-07  Bob Wilson  <bob.wilson@acm.org>
2580
2581         * config/xtensa/lib1funcs.asm: Clean up whitespace.
2582
2583 2007-06-07  Steve Ellcey  <sje@cup.hp.com>
2584
2585         PR target/31850
2586         * rtl.h (push_to_sequence2): New.
2587         * emit-rtl.c (push_to_sequence2): New.
2588         * function.c (assign_parm_data_all): Add new fields.
2589         (assign_parm_setup_block): Call push_to_sequence2 instead of
2590         push_to_sequence.
2591         (assign_parm_setup_reg): Ditto.
2592         (assign_parm_setup_stack): Ditto.
2593         (assign_parms_unsplit_complex): Ditto.
2594         (assign_parms): Change field name.
2595
2596 2007-06-07  Zdenek Dvorak  <dvorakz@suse.cz>
2597
2598         PR tree-optimization/32220
2599         * tree-predcom.c (eliminate_temp_copies): Handle the case that loop
2600         phi node is reached before defining statement.
2601
2602 2007-06-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2603
2604         PR tree-opt/32231
2605         * tree-vect-transform.c (vectorizable_call): Call update_stmt
2606         after changing the right hand side of the assignment.
2607
2608 2007-06-06  Eric Christopher  <echristo@apple.com>
2609
2610         * config.gcc (i?86-*-darwin*): Remove arch parameter.
2611         (x86_64-*-darwin*): Ditto.
2612         * config/i386/darwin.h (TARGET_SUBTARGET32_ISA_DEFAULT): Define.
2613         (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
2614
2615 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
2616
2617         * tree-ssa-alias-warnings.c (maybe_add_match): Cast according to the
2618         coding conventions.
2619         (add_key): Likewise.
2620         * tree-ssa.c (init_tree_ssa): Use type safe memory macros.
2621         * tree-ssa-ccp.c (ccp_fold_builtin): Avoid using C++ keywords as
2622         variable names.
2623         * tree-ssa-coalesce.c (find_coalesce_pair): Use type safe memory macros.
2624         (add_cost_one_coalesce): Likewise.
2625         * tree-ssa-copy.c (merge_alias_info): Avoid using C++ keywords as
2626         variable names. Rename orig to orig_name for consistency.
2627         * tree-ssa-dom.c (dom_thread_across_edge): Cast according to the coding
2628         conventions.
2629         (cprop_into_successor_phis): Avoid using C++ keywords as variable names.
2630         (record_equivalences_from_stmt): Likewise.
2631         * tree-ssa-dse.c (dse_initialize_block_local_data): Cast according to
2632         the coding conventions.
2633         (memory_ssa_name_same): Likewise.
2634         (dse_optimize_stmt): Likewise.
2635         (dse_record_phis): Likewise.
2636         (dse_finalize_block): Likewise.
2637         * tree-ssa-loop-im.c (outermost_invariant_loop_expr): Avoid using C++
2638         keywords as variable names.
2639         (may_move_till): Cast according to the coding conventions.
2640         (force_move_till_expr): Avoid using C++ keywords as variable names.
2641         (force_move_till): Cast according to the coding conventions.
2642         (memref_hash): Likewise.
2643         (memref_eq): Likewise.
2644         (gather_mem_refs_stmt): Likewise.
2645         * tree-ssa-loop-ivopts.c (contains_abnormal_ssa_name_p): Avoid using C++
2646         keywords as variable names.
2647         (idx_find_step): Cast according to the coding conventions.
2648         (idx_record_use): Likewise.
2649         (find_depends): Likewise.
2650         (prepare_decl_rtl): Likewise.
2651         (mbc_entry_hash): Likewise.
2652         (mbc_entry_eq): Likewise.
2653         * tree-ssa-loop-niter.c (SWAP): Use the correct the type for tmp.
2654         (simplify_replace_tree): Avoid using C++ keywords as variable names.
2655         (idx_infer_loop_bounds): Cast according to the coding conventions.
2656         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Likewise.
2657         * tree-ssa-math-opts.c (occ_new ): Likwise.
2658         * tree-ssanames.c (duplicate_ssa_name_ptr_info): Use type safe memory
2659         macros.
2660         * tree-ssa-operands.c (add_def_op): Avoid using C++ keywords as variable
2661         names.
2662         (add_use_op): Likewise.
2663         (add_vop): Likewise.
2664         (add_vuse_op): Likewise.
2665         (add_vdef_op): Likewise.
2666         (get_expr_operands): Likewise.
2667         (push_stmt_changes): Use type safe memory macros.
2668         * tree-ssa-phiopt.c (replace_phi_edge_with_variable): Avoid using C++
2669         keywords as variable names.
2670         (conditional_replacement): Likewise.
2671         (minmax_replacement): Likewise.
2672         (abs_replacement): Likewise.
2673         * tree-ssa-pre.c (create_expression_by_pieces): Cast according to the
2674         coding conventions.
2675         (insert_fake_stores): Avoid using C++ keywords as variable names.
2676         * tree-ssa-reassoc.c (add_to_ops_vec): Cast according to the coding
2677         conventions.
2678         * tree-ssa-structalias.c (heapvar_lookup): Likewise.
2679         (heapvar_insert): Use type safe memory macros.
2680         (new_var_info): Cast according to the coding conventions.
2681         (new_constraint): Likewise.
2682         (remove_preds_and_fake_succs): Use type safe memory macros.
2683         * tree-ssa-threadupdate.c (thread_block): Cast according to the coding
2684         conventions.
2685         (thread_single_edge): Likewise.
2686         (thread_through_loop_header): Likewise.
2687
2688 2007-06-06  Eric Christopher  <echristo@apple.com>
2689
2690         * config/i386/i386.c (override_options): Move handling
2691         of TARGET_SUBTARGET* earlier.
2692
2693 2007-06-06  Paolo Bonzini  <bonzini@gnu.org>
2694
2695         * genmodes.c (tagged_printf, emit_insn_modes_h): Don't
2696         use %n on printf.
2697
2698 2007-06-06  Zdenek Dvorak  <dvorakz@suse.cz>
2699
2700         * haifa-sched.c (restore_bb_notes): Clear bb field of the notes
2701         emited outside of basic block.
2702         * cfgbuild.c (find_bb_boundaries): Clear bb field for insns between
2703         the created blocks.
2704         * rtl.h (delete_insn_chain): Declaration changed.
2705         * cfgrtl.c (delete_insn_chain): Add option to clear bb field for
2706         non-removed insns.
2707         (rtl_delete_block, rtl_merge_blocks): Pass true to delete_insn_chain.
2708         (delete_insn_chain_and_edges, try_redirect_by_replacing_jump,
2709         rtl_tidy_fallthru_edge, cfg_layout_merge_blocks): Pass false
2710         to delete_insn_chain.
2711         (rtl_verify_flow_info_1): Verify that the insns in header and footer
2712         do not have bb field set.
2713         (rtl_verify_flow_info): Verify that insns between basic blocks do not
2714         have bb field set.
2715         * recog.c (peephole2_optimize): Add argument to delete_insn_chain call.
2716         * cfgcleanup.c (try_optimize_cfg): Ditto.
2717
2718 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
2719
2720         * lambda-code.c (struct lambda_lattice_s): Add a name to the struct.
2721         (lambda_body_vector_new): Use type safe memory macros.
2722         (lambda_linear_expression_new): Likewise.
2723         (lambda_loopnest_new): Likewise.
2724         (lambda_lattice_new): Likewise.
2725         (replace_uses_equiv_to_x_with_y): Cast according to the coding
2726         conventions. Use type safe memory macros.
2727         * lambda.h (struct lambda_trans_matrix_s): Add a name to the struct.
2728         (lambda_body_vector_s): Likewise.
2729         * lambda-mat.c (lambda_matrix_new): Use type safe memory macros.
2730         * lambda-trans.c (lambda_trans_matrix_new): Likewise.
2731
2732 2007-06-06  Richard Guenther  <rguenther@suse.de>
2733
2734         * tree-ssa-forwprop.c (forward_propagate_into_cond): Return 2
2735         if we need to schedule cfg_cleanup.
2736         (tree_ssa_forward_propagate_single_use_vars): Do so.
2737
2738 2007-06-06  Ian Lance Taylor  <iant@google.com>
2739
2740         * fold-const.c (merge_ranges): If range_successor or
2741         range_predecessor fail, just return 0.
2742
2743 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
2744
2745         PR tree-optimization/32216
2746         * tree-vectorizer.c (supportable_widening_operation): Determine
2747         signedness of FIX_TRUNC_EXPR from output operand.
2748         (supportable_narrowing_operation): Ditto.
2749         * tree-vect-generic.c (expand_vector_operations_1): Determine
2750         signedness of VEC_UNPACK_FLOAT_HI_EXPR and VEC_UNPACK_FLOAT_LO_EXPR
2751         from input operand.
2752
2753 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
2754
2755         * config/i386/i386.c (enum pta_flags): Move out of struct scope...
2756         (struct pta): ...from here. Change flags to unsigned to avoid
2757         excessive casting (as it is used as a bit mask).
2758         (override_options): Add casts according to the coding convenventions.
2759         (x86_64_elf_unique_section): Likewise.
2760         (examine_argument): Avoid using C++ keywords as variable names.
2761         (construct_container): Likewise.
2762         (legitimize_pic_address): Likewise.
2763         (get_dllimport_decl): Cast according to the coding conventions. Use
2764         type safe memory macros.
2765         (legitimize_address): Cast according to the coding conventions.
2766         (emit_i387_cw_initialization): Corrected the type of slot to enum
2767         ix86_stack_slot.
2768         (ix86_init_machine_status): Use type safe memory macros.
2769         (bdesc_pcmpestr): Use UNKNOWN instead of integer 0.
2770         (bdesc_pcmpistr): Likewise.
2771         (bdesc_crc32): Likewise.
2772         (bdesc_sse_3arg): Likewise.
2773         (bdesc_2arg): Likewise.
2774         (bdesc_1arg): Likewise.
2775         (ix86_expand_sse_pcmpestr): Cast according to the coding conventions.
2776         (ix86_expand_sse_pcmpistr): Likewise.
2777         (ix86_expand_vec_set_builtin): Use EXPAND_NORMAL instead of integer 0.
2778         (ix86_builtin_vectorized_function): Change the type of fn to unsigned
2779         int to match the langhook definition.
2780         (ix86_builtin_conversion): Change the type of code to unsigned init to
2781         match the langhook definition.
2782         (ix86_preferred_reload_class): Avoid using C++ keywords as variable
2783         names.
2784         (ix86_preferred_output_reload_class): Likewise.
2785         (ix86_cannot_change_mode_class): Likewise.
2786         (ix86_memory_move_cost): Likewise.
2787         (ix86_rtx_costs): Cast the outer_code parameter to enum rtx_code to
2788         avoid excessive casting later on.
2789         (x86_output_mi_thunk): Avoid using C++ keywords as variable names.
2790
2791 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
2792
2793         * config/i386/sse.md (sse4_2_pcmpestr_cconly): Prefer pcmpestrm
2794         as flags setting insn.
2795         (sse4_2_pcmpistr_cconly): Prefer pcmpistrm as flags setting insn.
2796
2797 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
2798
2799         * config/i386/i386.md (UNSPEC_ROUNDP, UNSPEC_ROUNDS): Remove.
2800         (UNSPEC_ROUND): New.
2801         ("sse4_1_round<mode>2"): New insn pattern.
2802         ("rint<mode>2"): Expand using "sse4_1_round<mode>2" pattern for
2803         SSE4.1 targets.
2804         ("floor<mode>2"): Rename from floordf2 and floorsf2.  Macroize
2805         expander using SSEMODEF mode macro.  Expand using
2806         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
2807         ("ceil<mode>2"): Rename from ceildf2 and ceilsf2.  Macroize
2808         expander using SSEMODEF mode macro.  Expand using
2809         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
2810         ("btrunc<mode>2"): Rename from btruncdf2 and btruncsf2.  Macroize
2811         expander using SSEMODEF mode macro.  Expand using
2812         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
2813         * config/i386/sse.md ("sse4_1_roundpd", "sse4_1_roundps"): Use
2814         UNSPEC_ROUND instead of UNSPEC_ROUNDP.
2815         ("sse4_1_roundsd", "sse4_1_roundss"): Use UNSPEC_ROUND instead of
2816         UNSPEC_ROUNDS.
2817
2818 2007-06-06  Jan Sjodin  <jan.sjodin@amd.com>
2819             Sebastian Pop  <sebpop@gmail.com>
2820
2821         * lambda.h (build_linear_expr): New.
2822         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression):
2823         Use build_linear_expr, call fold and force_gimple_operand.
2824         (lambda_loopnest_to_gcc_loopnest): Check that there is
2825         something to insert.
2826         * testsuite/gcc.dg/tree-ssa/ltrans-6.c: New.
2827
2828 2007-06-05  Joerg Wunsch  <j.gnu@uriah.heep.sax.de>
2829
2830         PR preprocessor/23479
2831         * doc/extend.texi: Document the 0b-prefixed binary integer
2832         constant extension.
2833
2834 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
2835
2836         PR tree-optimization/32215
2837         * tree-vectorizer.c (supportable_widening_operation): Return false
2838         for unsupported FIX_TRUNC_EXPR tree code.
2839         (supportable_narrowing_operation): Ditto for FLOAT_EXPR tree code.
2840
2841 2007-06-06  Nathan Froyd  <froydnj@codesourcery.com>
2842
2843         * config/rs6000/rs6000.h (FIXED_SCRATCH): Use r0 as a scratch
2844         register on SPE targets.  Change documentation to reflect
2845         reality.
2846         * config/rs6000/rs6000.c (rs6000_conditional_register_usage):
2847         Change FIXED_SCRATCH to 14 and document why we're keeping r14
2848         out of the register allocation pool.
2849         (rs6000_reg_live_or_pic_offset_p): New function.
2850         (rs6000_emit_prologue): Move the actual saving of LR up to free
2851         r0 for holding r11.  Split saving of SPE 64-bit registers into
2852         its own case.  Ensure that offsets will always be in-range for
2853         'evstdd' by using r11 as a scratch register to point at the start
2854         of the SPE save area.  Save r11 if necessary, as it is the static
2855         chain register.
2856         (rs6000_emit_epilogue): Split restoring of SPE 64-bit registers
2857         into its own case.  Ensure that offsets will always be in-range
2858         for 'evldd' by using r11 as a scratch register to point at the
2859         start of the SPE save area.  Also adjust r11 when restoring
2860         the stack pointer to compensate for pre-loading r11.
2861
2862 2007-06-05  Thomas Neumann  <tneumann@users.sourceforge.net>
2863
2864         * cfg.c (init_flow): Use type safe memory macros.
2865         (alloc_block): Likewise.
2866         (unchecked_make_edge): Likewise.
2867         (dump_flow_info): Avoid using C++ keywords as variable names.
2868         (copy_original_table_clear): Cast according to the coding conventions.
2869         (copy_original_table_set): Likewise.
2870         * cfgexpand (label_rtx_for_bb): Likewise.
2871         (expand_gimple_basic_block): Likewise.
2872         * cfghooks.c (dump_bb): Likewise.
2873         (lv_adjust_loop_header_phi): Avoid using C++ keywords as
2874         variable names.
2875         (lv_add_condition_to_bb): Likewise.
2876         * cfglayout (relink_block_chain): Cast according to the coding
2877         conventions.
2878         (fixup_reorder_chain): Likewise.
2879         (fixup_fallthru_exit_predecessor): Likewise.
2880         * cfgloop.c (glb_enum_p): Likewise.
2881         (get_exit_description): Likewise.
2882         (dump_recorded_exit): Likewise.
2883         * cfgloop.h (enum loop_estimation): Move out of struct scope...
2884         (struct loop): ... from here.
2885         * cfgloopmanip.c (rpe_enum_p): Cast according to the coding
2886         conventions.
2887         * cfgrtl.c (rtl_create_basic_block): Likewise.
2888         (rtl_split_block): Likewise.
2889         (rtl_dump_bb): Likewise.
2890         (cfg_layout_split_block): Likewise.
2891         (init_rtl_bb_info): Use typesafe memory macros.
2892
2893         * graphds.h (struct graph_edge): Renamed edge to graph_edge.
2894         * graphds.h: Updated all usages of edge to graph_edge.
2895         * graphds.c: Likewise.
2896         * cfgloopanal.c: Likewise.
2897
2898 2007-06-05  Ian Lance Taylor  <iant@google.com>
2899
2900         * tree-vrp.c (compare_values_warnv): Check TREE_NO_WARNING on a
2901         PLUS_EXPR or MINUS_EXPR node before setting *strict_overflow_p.
2902         (extract_range_from_assert): Set TREE_NO_WARNING when creating an
2903         expression.
2904         (test_for_singularity): Likewise.
2905
2906 2007-06-05  H.J. Lu  <hongjiu.lu@intel.com>
2907
2908         * config/i386/constraints.md ("Y2"): Replaced by ...
2909         ("Yt"): This.
2910         * config/i386/i386.md: Likewise.
2911         * config/i386/mmx.md: Likewise.
2912         * config/i386/sse.md: Likewise.
2913
2914 2007-06-05  H.J. Lu  <hongjiu.lu@intel.com>
2915
2916         * config/i386/constraints.md ("z"): Replaced by ...
2917         ("Y0"): This.
2918         * config/i386/sse.md (sse4_1_blendvpd): Likewise.
2919         (sse4_1_blendvps): Likewise.
2920         (sse4_1_pblendvb): Likewise.
2921         (sse4_2_pcmpestr): Likewise.
2922         (sse4_2_pcmpestrm): Likewise.
2923         (sse4_2_pcmpestr_cconly): Likewise.
2924         (sse4_2_pcmpistr): Likewise.
2925         (sse4_2_pcmpistrm): Likewise.
2926         (sse4_2_pcmpistr_cconly): Likewise.
2927
2928 2007-06-05  Razya Ladelsky  <razya@il.ibm.com>
2929
2930         * matrix-reorg.c (transform_access_sites): Fix computation.
2931         (transform_allocation_sites): Same.
2932
2933 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
2934
2935         * config/i386/i386.c (override_options): Use
2936         TARGET_SUBTARGET32_ISA_DEFAULT to select default ix86_isa_flags.
2937
2938 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
2939
2940         * config/i386/predicates.md (reg_not_xmm0_operand): New predicate.
2941         (nonimm_not_xmm0_operand): Ditto.
2942         * config/i386/sse.md ("sse4_1_blendvpd"): Use "reg_not_xmm0_operand"
2943         as operand[0] and operand[1] predicate.  Use "nonimm_not_xmm0_operand"
2944         as operand[2] predicate.  Require "z" class XMM register for
2945         operand[3].  Adjust asm template.
2946         ("sse4_1_blendvpd"): Ditto.
2947         ("sse4_1_pblendvb"): Ditto.
2948         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Do not
2949         force op2 into xmm0 register for variable blend instructions.
2950
2951 2007-06-04  Tom Tromey  <tromey@redhat.com>
2952
2953         * c-tree.h (start_enum): Update.
2954         (build_enumerator): Likewise.
2955         * c-decl.c (enum_next_value): Removed.
2956         (enum_overflow): Likewise.
2957         (start_enum): Add c_enum_contents argument.  Don't use globals.
2958         (build_enumerator): Likewise.
2959         * c-tree.h (struct c_enum_contents): New struct.
2960
2961 2007-06-04  Tom Tromey  <tromey@redhat.com>
2962
2963         * c-common.c (c_common_get_alias_set): Fix indentation.
2964
2965 2007-06-04  Ian Lance Taylor  <iant@google.com>
2966
2967         * tree-vrp.c (adjust_range_with_scev): When loop is not expected
2968         to overflow, reduce overflow infinity to regular infinity.
2969         (vrp_var_may_overflow): New static function.
2970         (vrp_visit_phi_node): Check vrp_var_may_overflow.
2971
2972 2007-06-04  Kazu Hirata  <kazu@codesourcery.com>
2973
2974         * stor-layout.c (layout_type): Remove duplicate code.
2975
2976 2007-06-04  Uros Bizjak  <ubizjak@gmail.com>
2977
2978         PR c/32191
2979         * gcc/c-common.c (c_define_builtins): Call targetm.init_builtins ()
2980         before build_common_builtin_nodes ().
2981
2982 2007-06-04  Steve Ellcey  <sje@cup.hp.com>
2983
2984         PR target/31733
2985         * cfgrtl.c (rtl_verify_flow_info): Skip notes when looking for barrier.
2986
2987 2007-06-04  Jan Hubicka  <jh@suse.cz>
2988
2989         * tree-predcom.c (replace_ref_with, initialize_root_vars_lm,
2990         reassociate_to_the_same_stmt): Call build_gimple_modify_stmt
2991         instead of _stat version.
2992
2993 2007-06-03  Zdenek Dvorak  <dvorakz@suse.cz>
2994
2995         PR tree-optimization/32194
2996         * tree-predcom.c (determine_offset): Check that both references have
2997         the same type.
2998
2999 2007-06-03  Zdenek Dvorak  <dvorakz@suse.cz>
3000
3001         * cfgloopmanip.c (remove_path, loopify, duplicate_loop_to_header_edge):
3002         Change dom_bbs to vector.  Add argument to iterate_fix_dominators call.
3003         * loop-unroll.c (unroll_loop_runtime_iterations): Ditto.
3004         * tree-cfg.c (tree_duplicate_sese_region): Change doms to vector.
3005         Add argument to iterate_fix_dominators call.
3006         (remove_edge_and_dominated_blocks): Pass vector to bbs_to_fix_dom.
3007         * gcse.c (hoist_code): Change domby to vector.
3008         * cfghooks.c (make_forwarder_block): Change doms_to_fix to vector.
3009         Add argument to iterate_fix_dominators call.
3010         * loop-doloop.c (doloop_modify): Changed recount_dominator to
3011         recompute_dominator.
3012         * lambda-code.c (perfect_nestify): Ditto.
3013         * cfgloopanal.c: Include graphds.h.
3014         (struct edge, struct vertex, struct graph, dump_graph, new_graph,
3015         add_edge, dfs, for_each_edge, free_graph): Moved to graphds.c.
3016         (mark_irreducible_loops): Use graphds_scc.  Remove argument from
3017         add_edge call.
3018         * graphds.c: New file.
3019         * graphds.h: New file.
3020         * dominance.c: Include vecprim.h, pointer-set.h and graphds.h.
3021         (get_dominated_by, get_dominated_by_region): Change return type to
3022         vector.
3023         (verify_dominators): Recompute all dominators and compare the results.
3024         (recount_dominator): Renamed to ...
3025         (recompute_dominator): ... this.  Do not check that the block is
3026         dominated by entry.
3027         (iterate_fix_dominators): Reimplemented.
3028         (prune_bbs_to_update_dominators, root_of_dom_tree,
3029         determine_dominators_for_sons): New functions.
3030         * et-forest.c (et_root): New function.
3031         * et-forest.h (et_root): Declare.
3032         * Makefile.in (graphds.o): Add.
3033         (cfgloopanal.o): Add graphds.h dependency.
3034         (dominance.o): Add graphds.h, vecprim.h and pointer-set.h dependency.
3035         * basic-block.h (get_dominated_by, get_dominated_by_region,
3036         iterate_fix_dominators): Declaration changed.
3037         (recount_dominator): Renamed to ...
3038         (recompute_dominator): ... this.
3039         * tree-ssa-threadupdate.c (thread_block): Free dominance info.
3040         (thread_through_all_blocks): Do not free dominance info.
3041
3042 2007-06-03  Andreas Schwab  <schwab@suse.de>
3043
3044         * config/m68k/m68k.c (override_options): Don't override
3045         REAL_MODE_FORMAT.
3046         * config/m68k/m68k-modes.def (SF, DF): Define to use
3047         motorola_single_format and motorola_double_format, resp.
3048         * real.c (motorola_single_format): Renamed from
3049         coldfire_single_format.
3050         (motorola_double_format): Renamed from coldfire_double_format.
3051         (encode_ieee_extended): Generate a proper canonical NaN image
3052         respecting canonical_nan_lsbs_set.
3053         (ieee_extended_motorola_format): Set canonical_nan_lsbs_set to
3054         true.
3055         * real.h: Adjust declarations.
3056
3057 2007-06-03  Kaz Kojima  <kkojima@gcc.gnu.org>
3058
3059         PR target/32163
3060         * config/sh/sh.md (symGOT_load): Don't schedule insns when
3061         the symbol is generated with the stack protector.
3062
3063 2007-06-03  Kazu Hirata  <kazu@codesourcery.com>
3064
3065         * config/m68k/m68k.c (m68k_attribute_table): Add "interrupt".
3066         (m68k_get_function_kind): Return m68k_fk_interrupt_handler on
3067         "interrupt".
3068         * doc/extend.texi (interrupt): Mention m68k.
3069
3070 2007-06-02  Uros Bizjak  <ubizjak@gmail.com>
3071
3072         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Call
3073         safe_vector_operand() if input operand is VECTOR_MODE_P operand.
3074         (ix86_expand_sse_pcmpestr): Do not check operands for
3075         "register_operand", when insn operand predicate is "register_operand".
3076         (ix86_expand_sse_pcmpistr): Ditto.
3077
3078 2007-06-02  H.J. Lu  <hongjiu.lu@intel.com>
3079             Uros Bizjak  <ubizjak@gmail.com>
3080
3081         * config/i386/i386.h (enum reg_class) [SSE_FIRST_REG]: New.
3082         (SSE_CLASS_P): Use reg_class_subset_p between SSE_REGS.
3083         (REG_CLASS_NAMES): Add "FIRST_SSE_REG" string.
3084         (REG_CLASS_CONTENTS): Add members of FIRST_SSE_REG class.
3085         * config/i386/constraints.md ("z"): New register constraint
3086         for members of SSE_FIRST_REG class.
3087         * config/i386/i386-modes.def (CCA, CCC, CCO, CCS): New compare modes.
3088         * config/i386/i386.c (regclass_map): Change class of %xmm0 to
3089         SSE_FIRST_REG class.
3090         (put_condition_code) [EQ, NE]: Output suffixes for new compare modes.
3091         (ix86_cc_modes_compatible): Handle CCA, CCC, CCO and CCS modes.
3092         (IX86_BUILTIN_PCMPESTRI128): New for SSE4.2.
3093         (IX86_BUILTIN_PCMPESTRM128): Likewise.
3094         (IX86_BUILTIN_PCMPESTRA128): Likewise.
3095         (IX86_BUILTIN_PCMPESTRC128): Likewise.
3096         (IX86_BUILTIN_PCMPESTRO128): Likewise.
3097         (IX86_BUILTIN_PCMPESTRS128): Likewise.
3098         (IX86_BUILTIN_PCMPESTRZ128): Likewise.
3099         (IX86_BUILTIN_PCMPISTRI128): Likewise.
3100         (IX86_BUILTIN_PCMPISTRM128): Likewise.
3101         (IX86_BUILTIN_PCMPISTRA128): Likewise.
3102         (IX86_BUILTIN_PCMPISTRC128): Likewise.
3103         (IX86_BUILTIN_PCMPISTRO128): Likewise.
3104         (IX86_BUILTIN_PCMPISTRS128): Likewise.
3105         (IX86_BUILTIN_PCMPISTRZ128): Likewise.
3106         (struct builtin_description): Change "flag" field to unsigned.
3107         (bdesc_pcmpestr): New builtin description table.
3108         (bdesc_pcmpistr): Likewise.
3109         (ix86_init_mmx_sse_builtins): Define int_ftype_v16qi_int_v16qi_int_int,
3110         v16qi_ftype_v16qi_int_v16qi_int_int and int_ftype_v16qi_v16qi_int.
3111         Initialize pcmp[ei]str[im] insns for SSE4.2.
3112         (ix86_expand_sse_pcmpestr): New subroutine of ix86_expand_builtin.
3113         (ix86_expand_sse_pcmpistr): Likewise.
3114         (ix86_expand_builtin): Expand pcmp[ei]str[im] builtins for SSE4.2.
3115         * config/i386/i386.md (UNSPEC_PCMPESTR): New for SSE4.2.
3116         (UNSPEC_PCMPISTR): Likewise.
3117         * config/i386/sse.md (sse4_2_pcmpestr): New insn patern and splitter.
3118         (sse4_2_pcmpestri):New isns pattern.
3119         (sse4_2_pcmpestrm): Likewise.
3120         (sse4_2_pcmpestr_cconly): Likewise.
3121         (sse4_2_pcmpistr): New insn patern and splitter.
3122         (sse4_2_pcmpistri):New isns pattern.
3123         (sse4_2_pcmpistrm): Likewise.
3124         (sse4_2_pcmpistr_cconly): Likewise.
3125         * config/i386/smmintrin.h: Enable pcmp[ei]str[im] intrinsics
3126         in SSE4.2.
3127
3128 2007-06-01  David Daney  <ddaney@avtrex.com>
3129
3130         * config/mips/mips.c (mips_output_mi_thunk): Only load gp if not
3131         LOADGP_ABSOLUTE and not binds_local_p.
3132
3133 2007-06-01  Geoffrey Keating  <geoffk@apple.com>
3134
3135         * config/darwin.h (LINK_SPEC): Pass -fpie through to the linker.
3136
3137 2007-06-01  Ian Lance Taylor  <iant@google.com>
3138
3139         * tree-vrp.c (compare_name_with_value): Always set
3140         used_strict_overflow if we get a result from the variable itself.
3141
3142 2007-06-01  Ian Lance Taylor  <iant@google.com>
3143
3144         PR rtl-optimization/31455
3145         * lower-subreg.c (find_decomposable_subregs): Don't decompose
3146         subregs which have a cast between modes which are not tieable.
3147
3148 2007-06-01  Uros Bizjak  <ubizjak@gmail.com>
3149
3150         * expr.c (force_operand) [DIV, MOD, UDIV, UMOD, ASHIFTRT]: Remove
3151         breaks after return statements.
3152
3153 2007-06-01  Kaz Kojima  <kkojima@gcc.gnu.org>
3154
3155         * config/sh/sh.c (fpscr_set_from_mem): Call get_free_reg
3156         only after no_new_pseudos.
3157
3158 2007-05-31  Eric Christopher  <echristo@apple.com>
3159
3160         * expr.c (convert_move): Assert that we don't have a BLKmode
3161         operand.
3162         (store_expr): Handle BLKmode moves by calling emit_block_move.
3163
3164 2007-05-31  Daniel Berlin  <dberlin@dberlin.org>
3165
3166         * c-typeck.c (build_indirect_ref): Include type in error message.
3167         (build_binary_op): Pass types to binary_op_error.
3168         * c-common.c (binary_op_error): Take two type arguments, print out
3169         types with error.
3170         * c-common.h (binary_op_error): Update prototype.
3171
3172 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
3173
3174         * config/i386/i386.c: Correct coments on -mno-sse4.
3175
3176 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
3177
3178         * config.gcc (i[34567]86-*-*): Add nmmintrin.h to extra_headers.
3179         (x86_64-*-*): Likewise.
3180         * config/i386/i386.c (OPTION_MASK_ISA_MMX_UNSET): New.
3181         (OPTION_MASK_ISA_3DNOW_UNSET): Likewise.
3182         (OPTION_MASK_ISA_SSE_UNSET): Likewise.
3183         (OPTION_MASK_ISA_SSE2_UNSET): Likewise.
3184         (OPTION_MASK_ISA_SSE3_UNSET): Likewise.
3185         (OPTION_MASK_ISA_SSSE3_UNSET): Likewise.
3186         (OPTION_MASK_ISA_SSE4_1_UNSET): Likewise.
3187         (OPTION_MASK_ISA_SSE4_2_UNSET): Likewise.
3188         (OPTION_MASK_ISA_SSE4): Likewise.
3189         (OPTION_MASK_ISA_SSE4_UNSET): Likewise.
3190         (OPTION_MASK_ISA_SSE4A_UNSET): Likewise.
3191         (ix86_handle_option): Use OPTION_MASK_ISA_*_UNSET.  Handle SSE4.2.
3192         (override_options): Support SSE4.2.
3193         (ix86_build_const_vector): Support SImode and DImode.
3194         (ix86_build_signbit_mask): Likewise.
3195         (ix86_expand_int_vcond): Support V2DImode.
3196         (IX86_BUILTIN_CRC32QI): New for SSE4.2.
3197         (IX86_BUILTIN_CRC32HI): Likewise.
3198         (IX86_BUILTIN_CRC32SI): Likewise.
3199         (IX86_BUILTIN_CRC32DI): Likewise.
3200         (IX86_BUILTIN_PCMPGTQ): Likewise.
3201         (bdesc_crc32): Likewise.
3202         (bdesc_sse_3arg): Likewise.
3203         (ix86_expand_crc32): Likewise.
3204         (ix86_init_mmx_sse_builtins): Support SSE4.2.
3205         (ix86_expand_builtin): Likewise.
3206         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
3207         __SSE4_2__ for -msse4.2.
3208         * config/i386/i386.md (UNSPEC_CRC32): New for SSE4.2.
3209         (CRC32MODE): Likewise.
3210         (crc32modesuffix): Likewise.
3211         (crc32modeconstraint): Likewise.
3212         (sse4_2_crc32<mode>): Likewise.
3213         (sse4_2_crc32di): Likewise.
3214         * config/i386/i386.opt (msse4.2): New for SSE4.2.
3215         (msse4): Likewise.
3216         * config/i386/nmmintrin.h: New. The dummy SSE4.2 intrinsic header file.
3217         * config/i386/smmintrin.h: Add SSE4.2 intrinsics.
3218         * config/i386/sse.md (sse4_2_gtv2di3): New pattern for SSE4.2.
3219         (vcond<mode>): Use SSEMODEI instead of SSEMODE124.
3220         (vcondu<mode>): Likewise.
3221         * doc/extend.texi: Document SSE4.2 built-in functions.
3222         * doc/invoke.texi: Document -msse4.2/-msse4.
3223
3224 2007-05-31  Zdenek Dvorak  <dvorakz@suse.cz>
3225
3226         PR tree-optimization/32160
3227         * tree-predcom.c (predcom_tmp_var): New function.  Mark created
3228         variable as gimple reg.
3229         (initialize_root_vars, initialize_root_vars_lm): Use predcom_tmp_var.
3230
3231 2007-05-31  Kazu Hirata  <kazu@codesourcery.com>
3232
3233         * gcc.c (main): Don't consider linker options when issuing the
3234         warning about a linker input file not being used.
3235
3236 2007-05-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
3237
3238         * tree-vrp.c (compare_names): Initialize sop.
3239
3240 2007-05-30  Dirk Mueller  <dmueller@suse.de>
3241
3242         * cgraphunit.c (cgraph_analyze_function): Remove
3243         computation of inline parameters.
3244
3245 2007-05-30  Uros Bizjak  <ubizjak@gmail.com>
3246
3247         * config/i386/darwin.h (TARGET_SUBTARGET_DEFAULT): Undef before define.
3248
3249 2007-05-30  Richard Sandiford  <richard@codesourcery.com>
3250
3251         * config.gcc (arm-wrs-vxworks): Remove dbxelf.h from tm_file.
3252         Add vx-common.h.  Include vxworks.h between vx-common.h and
3253         arm/vxworks.h.
3254         * config/vx-common.h (DWARF2_UNWIND_INFO): Undefine before
3255         redefining.
3256         * config/vxworks.h (TARGET_ASM_CONSTRUCTOR): Likewise.
3257         (TARGET_ASM_DESTRUCTOR): Likewise.
3258         * config/arm/vxworks.h (TARGET_OS_CPP_BUILTINS): Check arm_arch_xscale
3259         instead of arm_is_xscale.  Use VXWORKS_OS_CPP_BUILTINS.
3260         (OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
3261         (CC1_SPEC): Add -tstrongarm.  Line up backslashes.
3262         (VXWORKS_ENDIAN_SPEC): Define.
3263         (ASM_SPEC): Add VXWORKS_ENDIAN_SPEC.
3264         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine to their
3265         VXWORKS_* equivalents.
3266         (LINK_SPEC): Likewise, but add VXWORKS_ENDIAN_SPEC.
3267         (ASM_FILE_START): Delete.
3268         (TARGET_VERSION): Reformat.
3269         (FPUTYPE_DEFAULT, FUNCTION_PROFILER): Define.
3270         (DEFAULT_STRUCTURE_SIZE_BOUNDARY): Define.
3271         * config/arm/t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Define.
3272         (FPBIT, DPBIT): Define.
3273         (fp-bit.c, dp-bit.c): New rules.
3274         (MULTILIB_OPTIONS): Add strongarm, -mrtp and -mrtp/-fPIC multilibs.
3275         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Define.
3276         * config/arm/arm-protos.h (arm_emit_call_insn): Declare.
3277         * config/arm/arm.h: Include vxworks-dummy.h.
3278         * config/arm/arm.c (arm_elf_asm_constructor, arm_elf_asm_destructor):
3279         Mark with ATTRIBUTE_UNUSED.
3280         (arm_override_options): Do not allow VxWorks RTP PIC to be used
3281         for Thumb.  Force r9 to be the PIC register for VxWorks RTPs and
3282         make it incompatible with -msingle-pic-base.
3283         (arm_function_ok_for_sibcall): Return false for calls that might
3284         go through a VxWorks PIC PLT entry.
3285         (require_pic_register): New function, split out from...
3286         (legitimize_pic_address): ...here.  Do not use GOTOFF accesses
3287         for VxWorks RTPs.
3288         (arm_load_pic_register): Handle the VxWorks RTP initialization
3289         sequence.  Use pic_reg as a shorthand for cfun->machine->pic_reg.
3290         (arm_emit_call_insn): New function.
3291         (arm_assemble_integer): Do not use GOTOFF accesses for VxWorks RTP.
3292         * config/arm/arm.md (UNSPEC_PIC_OFFSET): New unspec number.
3293         (pic_offset_arm): New pattern.
3294         (call, call_value): Use arm_emit_call_insn.
3295         (call_internal, call_value_internal): New expanders.
3296         * config/arm/lib1funcs.asm (__PLT__): Define to empty for
3297         VxWorks unless __PIC__.
3298
3299 2007-05-30  Eric Christopher  <echristo@gmail.com>
3300
3301         * genrecog.c: Include regs.h in generated file.
3302         * genemit.c: Ditto. Fix up formatting.
3303         * config/mn10300/constraints.md: New.
3304         * config/mn10300/mn10300.md: Include.
3305         * config/mn10300/mn10300.c(mn10300_secondary_reload_class):
3306         Fix up for removed macro.
3307         * config/mn10300/predicates.md (call_address_operand):  Ditto.
3308         * config/mn10300/mn10300.h (REG_CLASS_FROM_LETTER): Delete.
3309         (CONST_OK_FOR_I): Ditto.
3310         (CONST_OK_FOR_J): Ditto.
3311         (CONST_OK_FOR_K): Ditto.
3312         (CONST_OK_FOR_L): Ditto.
3313         (CONST_OK_FOR_M): Ditto.
3314         (CONST_OK_FOR_N): Ditto.
3315         (CONST_DOUBLE_OK_FOR_LETTER_P): Ditto.
3316         (OK_FOR_Q): Ditto.
3317         (OK_FOR_R): Ditto.
3318         (OK_FOR_T): Ditto.
3319         (EXTRA_CONSTRAINT): Ditto.
3320
3321 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
3322
3323         * config/i386/i386.h (MASK_64BIT, MASK_MMX, MASK_3DNOW*, MASK_SSE*):
3324         Remove defines.
3325         * config/i386/biarch.h (TARGET_64BIT_DEFAULT): Define to
3326         OPTION_MASK_ISA_64BIT.
3327         * config/i386/i386.c: Rename MASK_* macros to OPTION_MASK_ISA_*.
3328
3329 2007-05-30  Richard Guenther  <rguenther@suse.de>
3330
3331         PR middle-end/32152
3332         * gimplify.c (gimplify_omp_atomic_pipeline): Use correct
3333         types for comparison.
3334         * fold-const.c (fold_comparison): Call maybe_canonicalize_comparison
3335         with original typed arguments.
3336         * config/i386/i386.c (ix86_gimplify_va_arg): Fix type mismatches.
3337
3338 2007-05-30  Jakub Jelinek  <jakub@redhat.com>
3339
3340         PR tree-optimization/31769
3341         * except.c (duplicate_eh_regions): Clear prev_try if
3342         ERT_MUST_NOT_THROW region is inside of ERT_TRY region.
3343
3344 2007-05-30  Zdenek Dvorak  <dvorakz@suse.cz>
3345
3346         * tree-scalar-evolution.c (scev_const_prop): Do not create labels.
3347         * tree-ssa-sink.c (statement_sink_location): Return basic block and
3348         bsi of the location where statements should be inserted.
3349         (sink_code_in_bb): Take bsi from statement_sink_location.
3350         * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Use bsi_after_labels
3351         instead of bsi_start.
3352         * tree-profile.c (tree_gen_ic_func_profiler): Pass BSI_NEW_STMT to
3353         bsi_insert_after.
3354         * tree-cfg.c (bsi_move_after): Pass BSI_NEW_STMT to bsi_insert_after.
3355         (bsi_move_before): Document inconsistency with bsi_move_after.
3356         (tree_redirect_edge_and_branch): Do not create labels if not necessary.
3357
3358 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
3359
3360         * config/i386/i386.h (TARGET_ABM): New define.
3361         (TARGET_POPCNT): Ditto.
3362         (TARGET_64BIT, TARGET_MMX, TARGET_3DNOW, TARGET_3DNOW_A, TARGET_SSE*):
3363         New temporary defines to redefine from OPTION_ISA_* defines.
3364         (MASK_64BIT, MASK_MMX, MASK_3DNOW, MASK_3DNOW_A, MASK_SSE*):
3365         New temporary defines to redefine from OPTION_MASK_ISA_* defines.
3366         (ix86_isa_flags): New extern int declaration.
3367         (TARGET_SUBTARGET_DEFAULT): New define.
3368         (TARGET_SUBTARGET_ISA_DEFAULT): Ditto.
3369         (TARGET_SUBTARGET32_DEFAULT): Ditto.
3370         (TARGET_SUBTARGET32_ISA_DEFAULT): Ditto.
3371         (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
3372         * config/i386/unix.h: Undef TARGET_SUBTARGET_DEFAULT before define.
3373         * config/i386/darwin.h: Change TARGET_64BIT define to
3374         OPTION_ISA_64BIT.
3375
3376         * config/i386/i386.opt (m3dnowa): Define as undocumented option
3377         using existing "ix86_isa_flags" varible.
3378         (m32, m64): Use existing "ix86_isa_flags" variable.
3379         (mmmx, m3dnow): Ditto.
3380         (msse, msse2, msse3, mssse3, msse4.1, msse4a): Ditto.
3381         (mabm): Define as non-negative option using "x86_abm" variable.
3382         (mpopcnt): Define as non-negative option using "x86_popcnt" variable.
3383
3384         * config/i386/i386.c (ix86_arch_features) [X86_ARCH_CMOVE]:
3385         Rewrite feature test bitmap.
3386         (ix86_isa_flags): New initialized global int varible.
3387         (ix86_isa_flags_explicit): New static int variable.
3388         (ix86_handle_option): Set "ix86_isa_flags_explicit" when mmmx, m3dnow,
3389         msse, msse2, msse3, msse4.1 and msse4a option is processed.  Change
3390         i86_isa_flags and ix86_isa_flags_explicit, not target_flags and
3391         target_flags_explicit.
3392         (override_options): Remove "target_enable" and "target_disable" fields
3393         from "struct ptt". Update processor_target_table accordingly. Remove
3394         PTA_PREFETCH_SSE from processor_alias_table entry if PTE_SSE is
3395         defined and rearrange PTA_* bits.  Use "ix86_isa_flags" instead of
3396         "target_flags" and "ix86_isa_flags_explicit" instead of
3397         "target_flags_explicit" when masked with MASK_64BIT, MASK_MMX,
3398         MASK_3DNOW, MASK_3DNOW_A or MASK_SSE*.  Set "x86_abm" to true when
3399         PTA_ABM is set in processor_alias_table flags entry.  Set "x86_popcnt"
3400         to true when either of PTA_POPCNT or PTA_ABM is set in
3401         processor_alias_table flags entry.  Set "x86_prefetch_sse" to true
3402         when either of PTA_PREFETCH_SSE or PTA_SSE is set in
3403         processor_alias_table flags entry.  Remove handling of
3404         "target_enable" and "target_disable" fields of processor_target_table.
3405         Mask "target_flags" with TARGET_SUBTARGET32_DEFAULT for 32-bit
3406         targets or with TARGET_SUBTARGET64_DEFAULT for 64-bit targets.
3407         Mask "ix86_isa_flags" with TARGET_SUBTARGET32_ISA_DEFAULT for 32-bit
3408         targets or with TARGET_SUBTARGET64_ISA_DEFAULT for 64-bit targets.
3409         (def_builtin): Mask "mask" variable with "ix86_isa_flags", not
3410         "target_flags".
3411         (TARGET_DEFAULT_TARGET_FLAGS): Do not include TARGET_64BIT_DEFAULT.
3412
3413 2007-05-29  David Daney  <ddaney@avtrex.com>
3414
3415         PR gcc/31975
3416         * config/mips/mips.c (mips_output_mi_thunk): Emit
3417         NOTE_INSN_PROLOGUE_END at beginning of the thunk.
3418
3419 2007-05-29  Hui-May Chang  <hm.chang@apple.com>
3420         * config/i386/i386.c (ix86_function_regparm): Added checking of
3421         ix86_force_align_arg_pointer to determine the number of
3422         register parameters.
3423
3424 2007-05-29  Zdenek Dvorak  <dvorakz@suse.cz>
3425
3426         * tree-vectorizer.h (DR_MISALIGNMENT): Cast aux to integer.
3427         (SET_DR_MISALIGNMENT): New.
3428         * tree-vect-analyze.c (vect_compute_data_ref_alignment,
3429         vect_update_misalignment_for_peel, vect_enhance_data_refs_alignment):
3430         Use SET_DR_MISALIGNMENT.
3431         * tree-predcom.c (split_data_refs_to_components): Cast dr->aux from
3432         pointer.
3433         * tree-data-ref.c (create_data_ref, compute_all_dependences,
3434         find_loop_nest): Export.
3435         * tree-data-ref.h (struct data_reference): Change aux field to pointer.
3436         (create_data_ref, compute_all_dependences, find_loop_nest): Declare.
3437         * tree-ssa-loop-prefetch.c: Include tree-data-ref.h.
3438         (L1_CACHE_SIZE_BYTES, L2_CACHE_SIZE_BYTES, NONTEMPORAL_FRACTION):
3439         New macros.
3440         (struct mem_ref): Add field reuse_distance.
3441         (find_or_create_group, record_ref): Use XNEW instead of xcalloc.
3442         Initialize reuse_distance field.
3443         (issue_prefetch_ref): Select temporality of prefetch according to
3444         reuse_distance.
3445         (volume_of_references, volume_of_dist_vector, add_subscript_strides,
3446         self_reuse_distance, determine_loop_nest_reuse): New functions.
3447         (loop_prefetch_arrays): Call determine_loop_nest_reuse.
3448         (tree_ssa_prefetch_arrays): Dump L2 cache size.
3449         * Makefile.in (tree-ssa-loop-prefetch.o): Add TREE_DATA_REF_H
3450         dependency.
3451
3452 2007-05-29  Daniel Berlin  <dberlin@dberlin.org>
3453
3454         * tree-ssa-alias.c: Add aliasing overview.
3455
3456 2007-05-29  Zuxy Meng  <zuxy.meng@gmail.com>
3457             Danny Smith  <dannysmith@users.sourceforge.net>
3458
3459         PR target/29498
3460         * config/i386/t-crtfm: Compile crtfastmath.o with
3461         -minline-all-stringops.
3462         * config/i386/cygwin.h (ENDFILE_SPECS): Add crtfastmath.o.
3463         * config/i386/mingw32.h (ENDFILE_SPECS): Add crtfastmath.o.
3464
3465 2007-05-28  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3466
3467         * doc/md.texi: Document constraints on HP PA-RISC.
3468
3469         * pa/constraints.md: New file.
3470         * pa.md: Include constraints.md.
3471         * pa.c (cint_ok_for_move): Avoid using CONST_OK_FOR_LETTER_P.
3472         (integer_store_memory_operand, ldil_cint_p): New functions.
3473         * pa-protos.h (integer_store_memory_operand, ldil_cint_p): Declare.
3474         * pa.h (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
3475         IS_RELOADING_PSEUDO_P, EXTRA_CONSTRAINT): Remove.
3476         * pa32-regs.h (REG_CLASS_FROM_LETTER): Remove.
3477         * pa64-regs.h (REG_CLASS_FROM_LETTER): Remove.
3478
3479 2007-05-28  Andrew Pinski  <Andrew_pinski@playstation.sony.com>
3480
3481         PR c/31339
3482         * c-typeck.c (build_unary_op <case PREINCREMENT_EXPR,
3483         case POSTINCREMENT_EXPR, case PREDECREMENT_EXPR,
3484         case POSTDECREMENT_EXPR>): Return the error_mark_node
3485         if either the real or imaginary parts would an
3486         error_mark_node.
3487
3488 2007-05-28  Daniel Berlin  <dberlin@dberlin.org>
3489
3490         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Release LHS SSA
3491         name when we remove it from a call.
3492
3493 2007-05-28  Kazu Hirata  <kazu@codesourcery.com>
3494
3495         * targhooks.c (default_narrow_bitfield): Remove.
3496         * targhooks.h: Remove the prototype for
3497         default_narrow_bitfield.
3498
3499         * langhooks-def.h: Remove the prototype for
3500         hook_get_alias_set_0.
3501         * langhooks.c (hook_get_alias_set_0): Remove.
3502
3503         * global.c (EXECUTE_IF_CONFLICT): Remove.
3504
3505 2007-05-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3506
3507         PR tree-opt/32100
3508         * fold-const.c (tree_expr_nonnegative_warnv_p): Don't
3509         return true when truth_value_p is true and the type
3510         is of signed:1.
3511
3512 2007-05-28  Gerald Pfeifer  <gerald@pfeifer.com>
3513
3514         * doc/install.texi (Prerequisites): We no longer require Autoconf
3515         2.13 for the top-level.
3516
3517 2007-05-28  Uros Bizjak  <ubizjak@gmail.com>
3518
3519         * target/i386/i386.c (ix86_expand_vector_move): Expand unaligned
3520         memory access via x86_expand_vector_move_misalign() only for
3521         TImode values on 32-bit targets.
3522
3523 2007-05-28  Razya Ladelsky  <razya@il.ibm.com>
3524
3525         * matrix-reorg.c: New file. Implement matrix flattening and
3526         transposing optimization.
3527         * tree-pass.h: Add matrix reorg pass.
3528         * common.opt: Add fipa-mreorg flag.
3529         * Makefile.in: Add matrix-reorg.c.
3530         * passes.c: Add matrix reorg pass.
3531         * varpool.c (add_new_static_var): New function.
3532         * cgraph.h (add_new_static_var): Declare.
3533
3534 2007-05-27  Eric Christopher  <echristo@apple.com>
3535
3536         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update
3537         sp_offset depending on stack size. Save r12 depending
3538         on registers we're saving later.
3539         (rs6000_emit_epilogue): Update sp_offset depending only
3540         on stack size.
3541
3542 2007-05-27  Zdenek Dvorak  <dvorakz@suse.cz>
3543
3544         * tree-vrp.c (execute_vrp): Do not check whether current_loops == NULL.
3545         * tree-chrec.c (evolution_function_is_invariant_rec_p): Ditto.
3546         * ifcvt.c (if_convert): Ditto.
3547         * tree-ssa-threadupdate.c (thread_block): Ditto.
3548         (thread_through_all_blocks): Ditto.  Assert that loops were analysed.
3549         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa,
3550         verify_loop_closed_ssa): Check number_of_loops instead of
3551         current_loops.
3552         * predict.c (tree_estimate_probability): Ditto.
3553         * tree-if-conv.c (main_tree_if_conversion): Ditto.
3554         * tree-ssa-loop-ch.c (copy_loop_headers): Ditto.
3555         * modulo-sched.c (sms_schedule): Ditto.
3556         * tree-scalar-evolution.c (scev_const_prop): Ditto.
3557         (scev_finalize): Do not do anything if scev analysis was not
3558         initialized.
3559         * cfgloopanal.c (mark_irreducible_loops): Do not check whether
3560         current_loops == NULL.
3561         (mark_loop_exit_edges): Check number_of_loops instead of current_loops.
3562         * loop-init.c (loop_optimizer_init): Do not free current_loops when
3563         there are no loops.
3564         (loop_optimizer_finalize): Assert that loops were analyzed.
3565         (rtl_move_loop_invariants, rtl_unswitch, rtl_unroll_and_peel_loops,
3566         rtl_doloop): Check number_of_loops instead of current_loops.
3567         * tree-ssa-loop.c (tree_loop_optimizer_init): Do not check whether
3568         current_loops == NULL.
3569         (tree_ssa_loop_init, tree_ssa_loop_im, tree_ssa_loop_unswitch,
3570         gate_tree_vectorize tree_linear_transform, check_data_deps,
3571         tree_ssa_loop_ivcanon, tree_ssa_empty_loop, tree_ssa_loop_bounds,
3572         tree_complete_unroll, tree_ssa_loop_prefetch, tree_ssa_loop_ivopts):
3573         Check number_of_loops instead of current_loops.
3574         (tree_ssa_loop_done): Do not check whether current_loops == NULL.
3575         * tree-ssa-pre.c (fini_pre): Do not take do_fre argument.  Always
3576         free loops if available.
3577         (execute_pre): Do not pass do_fre to fini_pre.
3578
3579 2007-05-27  Tobias Burnus  <burnus@net-b.de>
3580
3581         PR middle-end/32083
3582         * real.c (mpfr_from_real): Fix sign of -Inf.
3583
3584 2007-05-27  H.J. Lu  <hongjiu.lu@intel.com>
3585
3586         * tree-vect-transform.c (vectorizable_conversion): Initialize
3587         tree_code variables to ERROR_MARK.
3588         (vectorizable_type_demotion): Likewise.
3589         (vectorizable_type_promotion): Likewise.
3590
3591 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
3592
3593         PR target/32065
3594         * config/i386/i386.md (movti): Handle push operands via
3595         ix86_expand_push().
3596
3597 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
3598
3599         * basic-block.h: Remove the prototype for merge_seq_blocks.
3600         * cfgcleanup.c (merge_seq_blocks): Remove.
3601
3602         * tree-flow.h: Remove the prototype for is_aliased_with.
3603         * tree-ssa-alias.c (is_aliased_with): Remove.
3604
3605 2007-05-26  H.J. Lu  <hongjiu.lu@intel.com>
3606
3607         * config/i386/i386-protos.h (ix86_expand_sse4_unpack): New.
3608
3609         * config/i386/i386.c (ix86_expand_sse4_unpack): New.
3610
3611         * config/i386/sse.md (vec_unpacku_hi_v16qi): Call
3612         ix86_expand_sse4_unpack if SSE4.1 is enabled.
3613         (vec_unpacks_hi_v16qi): Likewise.
3614         (vec_unpacku_lo_v16qi): Likewise.
3615         (vec_unpacks_lo_v16qi): Likewise.
3616         (vec_unpacku_hi_v8hi): Likewise.
3617         (vec_unpacks_hi_v8hi): Likewise.
3618         (vec_unpacku_lo_v8hi): Likewise.
3619         (vec_unpacks_lo_v8hi): Likewise.
3620         (vec_unpacku_hi_v4si): Likewise.
3621         (vec_unpacks_hi_v4si): Likewise.
3622         (vec_unpacku_lo_v4si): Likewise.
3623         (vec_unpacks_lo_v4si): Likewise.
3624
3625 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
3626
3627         * c-typeck.c, config/arm/arm.c, config/darwin.c,
3628         config/sh/symbian.c, gcc.c, ipa-cp.c, ipa-inline.c, loop-iv.c,
3629         omega.c, tree-ssa-loop-niter.c, treestruct.def: Fix typos and
3630         follow spelling conventions in various
3631         warning/error/diagnostic messages.
3632
3633         * config/i386/i386.c, config/pa/pa.c, config/spu/spu.c,
3634         df-problems.c, df-scan.c, domwalk.c, ebitmap.c, ebitmap.h,
3635         fold-const.c, gcc.c, ipa-type-escape.c, omega.c, omega.h,
3636         tree-ssa-coalesce.c, tree-ssa-live.c, tree-ssa-structalias.c,
3637         tree-vrp.c: Fix comment typos.  Follow spelling conventions.
3638         * doc/tm.texi: Follow spelling conventions.
3639
3640 2007-05-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3641
3642         PR tree-opt/32090
3643         * tree-ssa-forwprop.c
3644         (forward_propagate_addr_into_variable_array_index): Remove
3645         the lhs argument.  Use the type of def_rhs instead of lhs.
3646         (forward_propagate_addr_expr_1): Update use of
3647         forward_propagate_addr_into_variable_array_index.
3648
3649 2007-05-25  Sandra Loosemore  <sandra@codesourcery.com>
3650             Nigel Stephens  <nigel@mips.com>
3651
3652         * config/mips/mips.c (mips_attribute_table): Add "near" and "far"
3653         function attributes, "far" being an alias for "long_call".
3654         (TARGET_COMP_TYPE_ATTRIBUTES): Define as mips_comp_type_attributes.
3655         (mips_near_type_p, mips_far_type_p): New.
3656         (mips_comp_type_attributes): New function to check that attributes
3657         attached to a function type are compatible.
3658         (mips_output_mi_thunk): Test SYMBOL_REF_LONG_CALL_P() rather than
3659         TARGET_LONG_CALLS when deciding whether we can do a direct sibcall
3660         to the target function of the thunk.
3661         (mips_encode_section_info): Check for "near" and "far" function
3662         attributes, and always set the SYMBOL_FLAG_LONG_CALL bit explicitly.
3663
3664         * config/mips/predicates.md (const_call_insn_operand): Test only
3665         SYMBOL_REF_LONG_CALL_P() and not TARGET_LONG_CALLS.
3666
3667         * doc/extend.texi (Function Attributes): Document MIPS "near" and
3668         "far" attributes.
3669
3670         * testsuite/gcc.target/mips/near-far-1.c:  New test case.
3671         * testsuite/gcc.target/mips/near-far-2.c:  New test case.
3672         * testsuite/gcc.target/mips/near-far-3.c:  New test case.
3673         * testsuite/gcc.target/mips/near-far-4.c:  New test case.
3674
3675 2007-05-25  Eric Christopher  <echristo@apple.com>
3676
3677         * config.gcc: Add i386/t-fprules-softfp64 and soft-fp/t-softfp
3678         to x86-darwin configurations.
3679         * config/i386/t-darwin: Add softfp support.
3680         * config/i386/t-darwin64: Ditto.
3681         * config/i386/sfp-machine.h: If mach then don't use
3682         aliasing, emit a stub to call.
3683
3684 2007-05-25  Kazu Hirata  <kazu@codesourcery.com>
3685
3686         * cfglayout.c, cgraphunit.c, config/avr/avr.c, fold-const.c,
3687         haifa-sched.c, optabs.h, tree-affine.c, tree-data-ref.c,
3688         tree-predcom.c, tree-ssa-alias-warnings.c,
3689         tree-ssa-forwprop.c, tree-vect-analyze.c, tree-vrp.c: Fix
3690         comment typos.  Follow spelling conventions.
3691         * doc/cpp.texi, doc/invoke.texi: Fix typos.
3692
3693 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
3694
3695         PR target/32065
3696         * target/i386/i386.c (ix86_expand_vector_move): Force SUBREGs of
3697         constants into memory.  Expand unaligned memory references for
3698         SSE modes via x86_expand_vector_move_misalign() function.
3699
3700 2007-05-25  Uros Bizjak  <ubizjak@gmail.com>
3701
3702         * config/i386/sse.md (*vec_extractv2di_1_sse2): Do not calculate
3703         "memory" attribute for "sseishft" type insn without operands[2].
3704
3705 2007-05-25  Dirk Mueller  <dmueller@suse.de>
3706             Marcus Meissner <meissner@suse.de>
3707
3708         * doc/extend.texi (alloc_size): New attribute.
3709         * c-common.c (handle_alloc_size_attribute): New.
3710         * tree-object-size.c (alloc_object_size): Use alloc_size
3711         attribute, if available.
3712
3713 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
3714
3715         * config/i386/i386.c (__builtin_ia32_vec_ext_v2df): Mark it
3716         with MASK_SSE2.
3717         (__builtin_ia32_vec_ext_v2di): Likewise.
3718         (__builtin_ia32_vec_ext_v4si): Likewise.
3719         (__builtin_ia32_vec_ext_v8hi): Likewise.
3720         (__builtin_ia32_vec_ext_v16qi): Likewise.
3721         (__builtin_ia32_vec_set_v8hi): Likewise.
3722
3723 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
3724
3725         * config/i386/sse.md (*vec_extractv2di_1_sse2): Correct shift.
3726
3727 2007-05-25  Richard Sandiford  <richard@codesourcery.com>
3728
3729         * config/arm/arm-protos.h (arm_encode_call_attribute): Delete.
3730         (arm_is_longcall_p): Rename to...
3731         (arm_is_long_call_p): ...this.  Take a single tree argument and
3732         return a bool.
3733         * config/arm/arm.h (CALL_SHORT, CALL_LONG, CALL_NORMAL): Delete.
3734         (CUMULATIVE_ARGS): Remove call_cookie.
3735         (SHORT_CALL_FLAG_CHAR, LONG_CALL_FLAG_CHAR, ENCODED_SHORT_CALL_ATTR_P)
3736         (ENCODED_LONG_CALL_ATTR_P): Delete.
3737         (ARM_NAME_ENCODING_LENGTHS): Remove SHORT_CALL_FLAG_CHAR and
3738         LONG_CALL_FLAG_CHAR cases.
3739         (ARM_DECLARE_FUNCTION_SIZE): Delete.
3740         * config/arm/elf.h (ASM_DECLARE_FUNCTION_SIZE): Don't use
3741         ARM_DECLARE_FUNCTION_SIZE.
3742         * config/arm/arm.c (arm_init_cumulative_args): Don't set call_cookie.
3743         (arm_function_arg): Return const0_rtx for VOIDmode arguments.
3744         (arm_encode_call_attribute, current_file_function_operand): Delete.
3745         (arm_function_in_section_p): New function.
3746         (arm_is_longcall_p): Rename to...
3747         (arm_is_long_call_p): ...this.  Take the target function as a single
3748         argument and return a bool.  Do not rely on call cookies.  Check
3749         whether the target symbol is in the same section as the current
3750         function, not just the same compilation unit.
3751         (arm_function_ok_for_sibcall): Use arm_is_long_call_p.
3752         (arm_encode_section_info): Don't encode a call type.
3753         * config/arm/arm.md (call, call_value): Update calls to
3754         arm_is_long(_)call_p.  Simplify logic.
3755         (*call_symbol, *call_value_symbol, *call_insn, *call_value_insn):
3756         Update calls to arm_is_long(_)call_p.
3757
3758 2007-05-25  Richard Guenther  <rguenther@suse.de>
3759
3760         PR tree-optimization/31982
3761         * tree-ssa-forwprop.c
3762         (forward_propagate_addr_into_variable_array_index): Handle arrays
3763         with element size one.
3764
3765 2007-05-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3766
3767         * config/spu/spu.md (smulsi3_highpart): Unshare the rtl chain.
3768         (umulsi3_highpart): Likewise.
3769
3770 2007-05-24  Ian Lance Taylor  <iant@google.com>
3771
3772         PR rtl-optimization/32069
3773         * regclass.c (regclass): Don't crash if the entry in regno_reg_rtx
3774         is NULL.
3775
3776 2007-05-24  Ollie Wild  <aaw@google.com>
3777
3778         * doc/cpp.texi (Common Predefined Macros): Add __COUNTER__
3779         description.
3780
3781 2007-05-24  Richard Sandiford  <rsandifo@nildram.co.uk>
3782
3783         * postreload-gcse.c (reg_changed_after_insn_p): New function.
3784         (oprs_unchanged_p): Use it to check all registers in a REG.
3785         (record_opr_changes): Look for clobbers in CALL_INSN_FUNCTION_USAGE.
3786         (reg_set_between_after_reload_p): Delete.
3787         (reg_used_between_after_reload_p): Likewise.
3788         (reg_set_or_used_since_bb_start): Likewise.
3789         (eliminate_partially_redundant_load): Use reg_changed_after_insn_p
3790         and reg_used_between_p instead of reg_set_or_used_since_bb_start.
3791         Use reg_set_between_p instead of reg_set_between_after_reload_p.
3792         * rtlanal.c (reg_set_p): Check whether REG overlaps
3793         regs_invalidated_by_call, rather than just checking the
3794         membership of REGNO (REG).
3795
3796 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
3797
3798         * doc/passes.texi: Document predictive commoning.
3799         * doc/invoke.texi (-fpredictive-commoning): Document.
3800         * opts.c (decode_options): Enable flag_predictive_commoning on -O3.
3801         * tree-ssa-loop-im.c (get_lsm_tmp_name): Export.  Allow
3802         adding indices to the generated name.
3803         (schedule_sm): Pass 0 to get_lsm_tmp_name.
3804         * tree-ssa-loop-niter.c (stmt_dominates_stmt_p): Export.
3805         * tree-pretty-print.c (op_symbol_1): Renamed to ...
3806         (op_symbol_code): ... and exported.
3807         (dump_omp_clause, op_symbol): Use op_symbol_code
3808         instead of op_symbol_1.
3809         * tree-pass.h (pass_predcom): Declare.
3810         * timevar.def (TV_PREDCOM): New timevar.
3811         * tree-ssa-loop.c (run_tree_predictive_commoning,
3812         gate_tree_predictive_commoning, pass_predcom): New.
3813         * tree-data-ref.c (find_data_references_in_loop): Find the
3814         references in dominance order.
3815         (canonicalize_base_object_address): Ensure that the result has
3816         pointer type.
3817         (dr_analyze_innermost): Export.
3818         (create_data_ref): Code to fail for references with invariant
3819         address moved ...
3820         (find_data_references_in_stmt): ... here.
3821         * tree-data-ref.h (dr_analyze_innermost): Declare.
3822         * tree-affine.c: Include tree-gimple.h and hashtab.h.
3823         (aff_combination_find_elt, name_expansion_hash,
3824         name_expansion_eq, tree_to_aff_combination_expand,
3825         double_int_constant_multiple_p, aff_combination_constant_multiple_p):
3826         New functions.
3827         * tree-affine.h (aff_combination_constant_multiple_p,
3828         tree_to_aff_combination_expand): Declare.
3829         * tree-predcom.c: New file.
3830         * common.opt (fpredictive-commoning): New option.
3831         * tree-flow.h (op_symbol_code, tree_predictive_commoning,
3832         stmt_dominates_stmt_p, get_lsm_tmp_name): Declare.
3833         * Makefile.in (tree-predcom.o): Add.
3834         (tree-affine.o): Add TREE_GIMPLE_H dependency.
3835         * passes.c (init_optimization_passes):  Add dceloop after
3836         copy propagation in loop optimizer.  Add predictive commoning
3837         to loop optimizer passes.
3838
3839 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
3840
3841         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Correct
3842         default hook.
3843
3844 2007-05-24  Jan Hubicka  <jh@suse.cz>
3845
3846         * gengenrtl.c (gendecl, gendef): Output the gens annotated for
3847         statistics.
3848         (genheader): Include statistics.h.
3849
3850         * doc/invoke.texi (-fdump-unnumbered): Update docs when line number
3851         notes are gone.
3852         * print-rtl.c (flag_dump_unnumbered): Update comments.
3853         (print_rtl): Fix my previous change.
3854         * emit-rtl.c (emit_note_before, emit_note_after): Clear out note
3855         specific data.
3856
3857 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
3858
3859         PR middle-end/32018
3860         * tree-ssa-threadupdate.c (thread_through_loop_header): Use
3861         set_loop_copy.
3862         (thread_through_all_blocks): Call initialize_original_copy_tables
3863         and free_original_copy_tables.
3864         * cfgloopmanip.c (duplicate_loop, duplicate_loop_to_header_edge):
3865         Use set_loop_copy.
3866         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
3867         * cfghooks.c (duplicate_block): Use get_loop_copy.
3868         * cfg.c: Include cfgloop.h.
3869         (loop_copy): New hash table.
3870         (initialize_original_copy_tables): Initialize loop_copy table.
3871         (free_original_copy_tables): Free loop_copy table.
3872         (copy_original_table_clear, copy_original_table_set,
3873         set_loop_copy, get_loop_copy): New functions.
3874         (set_bb_original, set_bb_copy): Use copy_original_table_set.
3875         * cfgloop.h (struct loop): Remove copy field.
3876         * Makefile.in (cfg.o): Add CFGLOOP_H dependency.
3877         * basic-block.h (set_loop_copy, get_loop_copy): Declare.
3878
3879 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
3880
3881         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 for
3882         -msse/-msse2/-msse3.
3883
3884 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
3885
3886         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Mark
3887         __builtin_ia32_vec_set_v2di with MASK_64BIT.
3888
3889 2007-05-24  Danny Smith  <dannysmith@users.sourceforge.net>
3890
3891         PR target/27067
3892         * doc/tm.texi (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Document.
3893         * targhooks.h (default_mangle_decl_assembler_name): Declare
3894         default hook.
3895         * targhooks.c (default_mangle_decl_assembler_name): Define
3896         default hook.
3897         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) New. Set to
3898         default hook.
3899         * target.h (struct gcc_target): Add mangle_decl_assembler_name field.
3900         * langhooks.c (lhd_set_decl_assembler_name): Call
3901         targetm.mangle_decl_assembler_name for names with global scope.
3902
3903         * config/i386/cygming.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) Override
3904         default.
3905         (ASM_OUTPUT_DEF_FROM_DECLS): Simplify to use DECL_ASSEMBLER_NAME.
3906         * config/i386/i386-protos.h (i386_pe_mangle_decl_assembler_name):
3907         Declare.
3908         * config/i386/winnt.c (i386_pe_maybe_mangle_decl_assembler_name):
3909         New. Factored out of i386_pe_encode_section_info.
3910         (gen_stdcall_or_fastcall_suffix): Get name identifier as argument.
3911         Move check for prior decoration of stdcall
3912         symbols to i386_pe_encode_section_info.
3913         (i386_pe_encode_section_info): Adjust call to
3914         gen_stdcall_or_fastcall_suffix.  Use
3915         i386_pe_maybe_mangle_decl_assembler_name, if needed.
3916         (i386_pe_mangle_decl_assembler_name): New. Wrap
3917         i386_pe_maybe_mangle_decl_assembler_name.
3918
3919 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
3920
3921         * c-common.c (c_common_signed_or_unsigned_type): Delay the check for
3922         INTEGRAL_TYPE_P and TYPE_UNSIGNED.
3923         * langhooks.c (get_signed_or_unsigned_type): Don't check for
3924         INTEGRAL_TYPE_P or TYPE_UNSIGNED.
3925         (lhd_signed_or_unsigned_type): Check for INTEGRAL_TYPE_P and
3926         TYPE_UNSIGNED.
3927
3928 2007-05-23  Sandra Loosemore  <sandra@codesourcery.com>
3929             Nigel Stephens  <nigel@mips.com>
3930             Richard Sandiford  <richard@codesourcery.com>
3931
3932         Fix up MIPS16 hard float and add support for complex.
3933
3934         * config/mips/mips.h (TARGET_HARD_FLOAT_ABI): New.
3935         (TARGET_SOFT_FLOAT_ABI): New.
3936         (TARGET_CPU_CPP_BUILTINS): Define __mips_hard_float and
3937         __mips_soft_float to reflect the ABI in use, not whether the
3938         FPU is directly accessible (e.g., in MIPS16 mode).
3939         (UNITS_PER_HWFPVALUE): Use TARGET_SOFT_FLOAT_ABI.
3940         (UNITS_PER_FPVALUE): Likewise.
3941
3942         * config/mips/mips.c (mips_expand_call): Remove redundant
3943         TARGET_MIPS16 check.
3944         (mips_arg_regno): New.
3945         (function_arg_advance): When setting bits in cum->fp_code for
3946         MIPS16, don't subtract 1 from cum->arg_number, since it is now
3947         zero-based.
3948         (function_arg): Use mips_arg_regno.
3949         (mips_return_mode_in_fpr_p): New.
3950         (mips16_call_stub_mode_suffix): New.
3951         (mips16_cfun_returns_in_fpr_p): New.
3952         (mips_save_reg_p): Use mips16_cfun_returns_in_fpr_p.
3953         (mips_output_function_prologue): Test mips16_hard_float, not
3954         !TARGET_SOFT_FLOAT, to decide when a function stub is required.
3955         (mips_expand_epilogue): Call MIPS16 helper routines to copy
3956         return value into a floating-point register.
3957         (mips_can_use_return_insn): Use mips16_cfun_returns_in_fpr_p.
3958         (mips_function_value): Rewrite to use mips_return_mode_in_fpr_p.
3959         (mips16_fp_args): Handle MIPS32r2 ISA which supports
3960         TARGET_FLOAT64, and use mfhc1/mthc1 to copy the most significant
3961         word of double arguments from or to the high bits of 64-bit
3962         floating point registers.
3963         (build_mips16_function_stub): Fill in DECL_RESULT for stubdecl.
3964         (mips16_fpret_double): New helper function.
3965         (build_mips16_call_stub): Use mips16_return_mode_in_fpr_p.  Add
3966         support for complex modes.  Fill in DECL_RESULT for stubdecl.
3967         (mips_init_libfuncs): Remove redundant TARGET_MIPS16 check.
3968