OSDN Git Service

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