OSDN Git Service

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