OSDN Git Service

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