OSDN Git Service

2007-07-16 Sandra Loosemore <sandra@codesourcery.com>
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2007-07-16  Sandra Loosemore  <sandra@codesourcery.com>
2             Nigel Stephens  <nigel@mips.com>
3
4         * config/mips/mips.md:  Include 20kc.md.
5         * config/mips/20kc.md: New file.
6         * config/mips/mips.c (mips_rtx_cost_data): Fill in 20Kc costs.
7         (mips_adjust_cost): Tweak for 20Kc.
8         (mips_issue_rate): Likewise.
9         * config/mips/mips.h (TUNE_20KC): Define.
10
11 2007-07-16  David Edelsohn  <edelsohn@gnu.og>
12
13         * config/rs6000/rs6000.c (struct processor_cost): Add
14         cache_line_size, l1_cache_lines, and simultaneous_prefetches
15         fields.
16         (*_cost): Add cache information.
17         (rs6000_override_options): Set cache parameters.
18
19 2007-07-16  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
20
21         PR bootstrap/3456
22         * config.gcc (mips-sgi-irix[56]*): Enable pthread support.
23         * doc/install.texi (mips-sgi-irix6): pthread support works now.
24
25 2007-07-16  Paul Brook  <paul@codesourcery.com>
26
27         PR target/32753
28         gcc/
29         * config/arm/cirrus.md (cirrus_arm_movsi_insn): Remove dead insn.
30         (cirrus_thumb2_movsi_insn): Ditto.
31
32 2007-07-15  Geoffrey Keating  <geoffk@apple.com>
33
34         * config/rs6000/darwin-fallback.c (interpret_libc): Change
35         CR2_REGNO to R_CR2.
36
37 2007-07-15  Andrew Haley  <aph@redhat.com>
38
39         * unwind-sjlj.c (_Unwind_GetIPInfo): Check for context->fc != NULL
40         before looking in the context.
41
42 2007-07-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
43
44         PR middle-end/32398
45         PR middle-end/32769
46         * pa-protos.h (pa_eh_return_handler_rtx): Declare.
47         * pa.c (pa_extra_live_on_entry, rp_saved): Declare.
48         (TARGET_EXTRA_LIVE_ON_ENTRY): Define.
49         (pa_output_function_prologue): Use rp_saved and current_function_is_leaf
50         to generate .CALLINFO statement.
51         (hppa_expand_prologue): Set rp_saved.
52         (hppa_expand_epilogue): Use rp_saved.
53         (pa_extra_live_on_entry, pa_eh_return_handler_rtx): New functions.
54         * pa.h (EH_RETURN_HANDLER_RTX): Use pa_eh_return_handler_rtx.
55
56 2007-07-14  Dirk Mueller  <dmueller@suse.de>
57
58         * omega.c (coalesce): Fix memory leak on early exit.
59         * matrix-reorg.c (check_allocation_function): Likewise.
60         * tree-vect-transform.c (vect_get_new_vect_var): free result
61         of concat().
62         * bb-reorder.c (find_rarely_executed_basic_blocks_and_crossing_edges):
63         pass pointer to edge vector
64         (partition_hot_cold_basic_blocks): Fix memory leak.
65         * collect2.c (prefix_from_string): Free temporary storage.
66         * reload1.c (fixup_abnormal_edges): Free sbitmap.
67
68 2007-07-14  Kaz Kojima  <kkojima@gcc.gnu.org>
69
70         * config/sh/sh.h (DO_GLOBAL_CTORS_BODY): Add void to prototype.
71         (DO_GLOBAL_DTORS_BODY): Likewise.
72
73 2007-07-14  Sandra Loosemore  <sandra@codesourcery.com>
74             Nigel Stephens  <nigel@mips.com>
75
76         * config/mips/mips.c (mips_classify_symbol): Don't return
77         SYMBOL_SMALL_DATA for constant pool addresses if
78         TARGET_EMBEDDED_DATA is true.
79
80 2007-07-14  Uros Bizjak  <ubizjak@gmail.com>
81
82         * config/i386/i386.c (init_mmx_sse_builtins): Define all builtins
83         except __builtin_ia32_emms, __builtin_ia32_ldmxcsr,
84         __builtin_ia32_stmxcsr, __builtin_ia32_maskmovq, __builtin_ia32_loadups,
85         __builtin_ia32_storeups, __builtin_ia32_loadhps, __builtin_ia32_loadlps,
86         __builtin_ia32_storehps, __builtin_ia32_storelps,
87         __builtin_ia32_movntps, __builtin_ia32_movntq, __builtin_ia32_sfence,
88         __builtin_ia32_femms, __builtin_ia32_maskmovdqu, __builtin_ia32_loadupd,
89         __builtin_ia32_storeupd, __builtin_ia32_loadhpd, __builtin_ia32_loadlpd,
90         __builtin_ia32_movnti, __builtin_ia32_movntpd, __builtin_ia32_movntdq,
91         __builtin_ia32_clflush, __builtin_ia32_lfence, __builtin_ia32_mfence,
92         __builtin_ia32_loaddqu, __builtin_ia32_storedqu, __builtin_ia32_monitor,
93         __builtin_ia32_mwait, __builtin_ia32_lddqu, __builtin_ia32_movntdqa,
94         __builtin_ia32_movntsd and __builtin_ia32_movntss as const builtins
95         using def_builtin_const.
96
97 2007-07-14  Eric Botcazou  <ebotcazou@adacore.com>
98
99         PR tree-optimization/32705
100         * tree-ssa-sccvn.c (set_ssa_val_to): Accept VN_TOP as value number.
101         (simplify_binary_expression): Use SSA_VAL consistently.
102
103 2007-07-13  David Edelsohn  <edelsohn@gnu.org>
104
105         * config/rs6000/spe.md (SPE_ACC_REGNO): Delete definition.
106         (SPEFSCR_REGNO): Delete definition.
107         * config/rs6000/rs6000.c: LINK_REGISTER_REGNUM -> LR_REGNO.
108         COUNT_REGISTER_REGNUM -> CTR_REGNO.
109         * config/rs6000/rs6000.h: Do not define *_REGNO.
110         LINK_REGISTER_REGNUM -> LR_REGNO.
111         COUNT_REGISTER_REGNUM -> CTR_REGNO.
112         * config/rs6000/predicates.md: LINK_REGISTER_REGNUM ->  LR_REGNO.
113         COUNT_REGISTER_REGNUM -> CTR_REGNO.
114         * config/rs6000/linux-unwind.h: Define R_LR, R_CR2, R_VR0,
115         R_VRSAVE, R_VSCR. Use them.
116         * config/rs6000/darwin-fallback.c: Define R_LR, R_CTR, R_CR2,
117         R_XER, R_VR0, R_VRSAVE, R_VSCR, R_SPEFSCR.  Use them.
118         * config/rs6000/rs6000.md: Define REGNO constants.  Use them.
119         * config/rs6000/aix.h: Define R_LR.  Use it.
120         
121 2007-07-13  Caroline Tice  <ctice@apple.com>
122         
123         * toplev.c (process_options): Turn flag_var_tracking_uninit off when
124         flag_var_tracking is explicitly turned off (i.e. when variable
125         tracking is not feasible); otherwise, turn flag_var_tracking on when
126         flag_var_tracking_uninit is on.
127         * rtl.def (VAR_LOCATION): Add a new integer subfield to VAR_LOCATION
128         note definitions, to allow recording of initialization status in the
129         notes.
130         * dwarf2out.c (dwarf_stack_op_name): Add case for DW_OP_GNU_uninit.
131         (add_var_loc_to_decl): Add comparison of NOTE_VAR_LOCATION_STATUS to
132         determine if two note locations are equal.
133         (output_loc_list): Don't output list entries whose start & end labels
134         are the same.
135         (reg_loc_descriptor): Add parameter for initialization status; pass it
136         to other loc descriptor functions.
137         (one_reg_loc_descriptor): Add parameter for initialization status;
138         check its value and add DW_OP_GNU_uninit to returned loc descr if
139         appropriate.
140         (multiple_reg_loc_descriptor): Add parameter for initialization
141         status;
142         pass init status argument to other loc descriptor functions; check
143         value of intialization parameter and add DW_OP_GNU_uninit to returned
144         loc descr if appropriate.
145         (based_loc_descr): Add parameter for initialization status; add new
146         variable for return value; check value of initialization parameter and
147         add DW_OP_GNU_uninit to returned loc descr if appropriate.
148         (concatn_mem_loc_descriptor): Add parameter for initialization status;
149         pass init status argument to other loc descriptor functions; check
150         value of intialization parameter and add DW_OP_GNU_uninit to returned
151         loc descr if appropriate.
152         (mem_loc_descriptor): Likewise.
153         (concat_loc_descriptor): Likewise.
154         (concatn_loc_descriptor): Likewise.
155         (loc_descriptor): Add parameter for initialization status; pass it as
156         argument to other loc descriptor function calls.
157         (loc_descriptor_from_tree_1): Add appropriate initialization status
158         to loc descriptor function calls.
159         (add_location_or_const_value_attribute): Get initialization status
160         from VAR_LOCATION note; add initialization status to loc descriptor
161         function calls.
162         * dwarf2.h (enum dwarf_location_atom): New op, DW_OP_GNU_uninit.
163         * print-rtl.c (print_rtx): When printing a VAR_LOCATION note, if
164         status is uninitialized, add "[uninint]" to output.
165         * common.opt (fvar-tracking-uninit): New option, similar to
166         fvar-tracking, to turn on tracking of uninitialized variables; creates
167         a new global flag, flag_var_tracking_uninit.
168         * rtl.h (NOTE_VAR_LOCATION_STATUS): New macro for accessing new field.
169         (enum var_init_status): New type, for var initialization status field.
170         * var-tracking.c (struct location_chain_def): Two new fields, init,
171         for initialization status, and set_src for the assignment value expr.
172         (unshare_variable): New parameter for initialization status;
173         initialize new init and set_src fields.
174         (var_reg_set): New parameters for initialization status and value;
175         pass them to set_variable_part.
176         (var_mem_set): Likewise.
177         (get_init_value): New function.
178         (var_reg_delete_and_set): New initialization status & value
179         parameters; add call to get_init_value if status is unknown; pass new
180         parameters to clobber_variable_part and var_reg_set.
181         (var_mem_delete_and_set): Likewise.
182         (var_reg_delete): Pass null set_src value to clobber_variable_part.
183         (var_mem_delete): Likewise.
184         (variable_union): Pass status to unshare_variable; initialize new init
185         and set_src fields. If flag_var_tracking_uninit is not set, force
186         status to initialized.
187         (add_stores): Store insn, rather than NEXT_INSN(insn), so it can be
188         used later to get the set_src value.
189         (find_src_status): New function.
190         (find_src_set_src): New function.
191         (compute_bb_dataflow): Pass init status to calls to var_reg_set,
192         var_mem_set, var_reg_delete_and_set and var_mem_delete_and_set; for
193         MO_SET, get set_src value and pass it to var_reg_delete_and_set
194         and var_mem_delete_and_set.
195         (dump_variable): Print out "[uninit]" if appropriate.
196         (set_variable_part): Add new initialization and set_src parameters;
197         pass status to unshare_variable; set node->init and node- >set_src
198         fields and modify slot in hash table appropriately; save the init and
199         set_src values if appropriate and assign to the new node.
200         (clobber_variable_part): New set_src parameter; if two nodes have
201         same variable and same location but different set_src (assignment)
202         values, clobber old node.
203         (delete_variable_part): Pass init status to unshare_variable.
204         (emit_note_insn_var_location): Add initialized var; assign var's init
205         status to new 'initialized'; pass new init status field to calls to
206         gen_rtx_VAR_LOCATION. If flag_var_tracking_uninit is not set, force
207         status to initialized.
208         (emit_notes_in_bb): Pass initialization status to calls to
209         var_reg_set, var_mem_set, var_reg_delete_and_set and
210         var_mem_delete_and_set; for MO_SET, get set_src value and pass it to
211         var_reg_delete_and_set and var_mem_delete_and_set; call
212         emit_notes_for_changes on NEXT_INSN(insn) rather than on insn, to
213         make up for change in add_stores.
214         (vt_add_function_parameters): Add status to calls to
215         set_variable_part.
216         * config/darwin.c (darwin_override_options): Turn on uninitialized
217         tracking automatically, if var_tracking is on and the system is
218         10.5 or higher.
219         
220 2007-07-13  Sa Liu  <saliu@de.ibm.com>
221
222         * config.gcc: Add options for arch and tune on SPU.
223         * config/spu/predicates.md: Add constant operands 0 and 1.
224         * config/spu/spu-builtins.def: Add builtins for double precision 
225         floating point comparison: si_dfceq, si_dfcmeq, si_dfcgt, si_dfcmgt, 
226         si_dftsv, spu_cmpeq_13, spu_cmpabseq_1, spu_cmpgt_13, spu_cmpabsgt_1,
227         spu_testsv.
228         * config/spu/spu-c.c: Define __SPU_EDP__ when builtins invoked with 
229         a CELLEDP target.
230         * config/spu/spu-protos.h: Add new function prototypes. 
231         * config/spu/spu.c (spu_override_options): Check options -march and
232         -mtune.
233         (spu_comp_icode): Add comparison code for DFmode and vector mode.
234         (spu_emit_branch_or_set): Use the new code for DFmode and vector 
235         mode comparison.
236         (spu_const_from_int): New.  Create a vector constant from 4 ints.
237         (get_vec_cmp_insn): New.  Get insn index of vector compare instruction.
238         (spu_emit_vector_compare): New.  Emit vector compare.
239         (spu_emit_vector_cond_expr): New.  Emit vector conditional expression.
240         * config/spu/spu.h: Add options -march and -mtune.  Define processor
241         types PROCESSOR_CELL and PROCESSOR_CELLEDP.  Define macro
242         CANONICALIZE_COMPARISON.
243         * config/spu/spu.md: Add new insns for double precision compare
244         and double precision vector compare.  Add vcond and smax/smin patterns
245         to enable DFmode vector conditional expression.
246         * config/spu/spu.opt: Add options -march and -mtune.
247         * config/spu/spu_internals.h: Add builtins for CELLEDP target:
248         si_dfceq, si_dfcmeq, si_dfcgt, si_dfcmgt, si_dftsv.  Add builtin for
249         both CELL and CELLEDP targets: spu_testsv.
250         * config/spu/spu_intrinsics.h: Add flag mnemonics for test special 
251         values.
252
253 2007-07-13  Richard Guenther  <rguenther@suse.de>
254
255         PR tree-optimization/32721
256         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Preserve
257         TREE_THIS_VOLATILE on the folded reference.
258         * tree-ssa-operands.c (get_expr_operands): Set has_volatile_ops
259         if the array reference has TREE_THIS_VOLATILE set.
260
261 2007-07-13  H.J. Lu  <hongjiu.lu@intel.com>
262
263         PR other/32188
264         * doc/libgcc.texi: Update DFP intrinsics for DPD and BID.
265
266 2007-07-13  Andreas Schwab  <schwab@suse.de>
267
268         * gengtype-lex.l: Allow declarations to be indented.
269
270 2007-07-12  Geoffrey Keating  <geoffk@apple.com>
271
272         * ginclude/tgmath.h: New.
273         * config.gcc: Use GCC's tgmath.h on non-glibc systems.
274         * doc/sourcebuild.texi (Headers): Document use_gcc_tgmath.
275         * configure.ac (STMP_FIXPROTO): Honor use_gcc_tgmath.
276         * configure: Regenerate.
277
278 2007-07-13  Kaz Kojima  <kkojima@gcc.gnu.org>
279
280         * config/sh/linux-unwind.h (sh_fallback_frame_state): Use
281         correct index when setting register save state for xd
282         registers.
283
284 2007-07-13  Kaz Kojima  <kkojima@gcc.gnu.org>
285
286         * config/sh/sh.c (mark_use): Remove.
287
288 2007-07-12  Paul Brook  <paul@codesourcery.com>
289
290         * config/arm/arm.c (thumb1_compute_save_reg_mask): Make sure scratch
291         reg does not overlap return value.
292
293 2007-07-12  Daniel Berlin  <dberlin@dberlin.org>
294
295         * tree-ssa-pre.c (get_expression_vuses): Move out side-effect.
296         (set_expression_vuses): Ditto.
297         (init_pre): Initialize expression_vuses.
298
299 2007-07-12  Zdenek Dvorak  <dvorakz@suse.cz>
300
301         * config/i386/sse.md (storentdf, storentsf): New.
302
303 2007-07-12  Geoffrey Keating  <geoffk@apple.com>
304
305         * builtins.c (get_pointer_alignment): Honor DECL_ALIGN on a
306         FUNCTION_DECL.
307         * tree.c (build_decl_stat): Move code from here...
308         (make_node_stat): ... to here.  Don't uselessly clear DECL_USER_ALIGN.
309         (expr_align): Honor DECL_ALIGN on a FUNCTION_DECL.  Add comment
310         about using DECL_ALIGN of LABEL_DECL and CONST_DECL.
311         * tree.h (DECL_USER_ALIGN): Fix misplaced comment.
312         * varasm.c (assemble_start_function): Use DECL_ALIGN instead of
313         FUNCTION_BOUNDARY.
314
315 2007-07-12  Dorit Nuzman  <dorit@il.ibm.com>
316             Devang Patel  <dpatel@apple.com>
317
318         PR tree-optimization/25413
319         * targhooks.c (default_builtin_vector_alignment_reachable): New.
320         * targhooks.h (default_builtin_vector_alignment_reachable): New.
321         * tree.h (contains_packed_reference): New.
322         * expr.c (contains_packed_reference): New.
323         * tree-vect-analyze.c (vector_alignment_reachable_p): New.
324         (vect_enhance_data_refs_alignment): Call
325         vector_alignment_reachable_p.
326         * target.h (vector_alignment_reachable): New builtin.
327         * target-def.h (TARGET_VECTOR_ALIGNMENT_REACHABLE): New.
328         * config/rs6000/rs6000.c (rs6000_vector_alignment_reachable): New.
329         (TARGET_VECTOR_ALIGNMENT_REACHABLE): Define.
330
331 2007-07-12  Dorit Nuzman  <dorit@il.ibm.com>
332
333         * target.h (builtin_vectorization_cost): Add new target builtin.
334         * target-def.h (TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST): New.
335         * tree-vectorizer.h (TARG_SCALAR_STMT_COST): New.
336         (TARG_SCALAR_LOAD_COST, TARG_SCALAR_STORE_COST): New.
337         * tree-vect-analyze.c (vect_analyze_slp_instance): Initisliaze
338         uninitialized variables.
339         * tree-vect-transform.c (cost_for_stmt): New function.
340         (vect_estimate_min_profitable_iters): Call cost_for_stmt instead of
341         using cost 1 for all scalar stmts. Be less conservative when
342         estimating the number of prologue/epulogue iterations. Call
343         targetm.vectorize.builtin_vectorization_cost. Return
344         min_profitable_iters-1.
345         (vect_model_reduction_cost): Use TARG_SCALAR_TO_VEC_COST for
346         initialization cost instead of TARG_VEC_STMT_COST. Use
347         TARG_VEC_TO_SCALAR_COST instead of TARG_VEC_STMT_COST for reduction
348         epilogue code. Fix epilogue cost computation.
349         * config/spu/spu.c (spu_builtin_vectorization_cost): New.
350         (TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST): Implement.
351         * config/spu/spu.h (TARG_COND_BRANCH_COST, TARG_SCALAR_STMT_COST):
352         (TARG_SCALAR_LOAD_COST, TARG_SCALAR_STORE_COST, TARG_VEC_STMT_COST):
353         (TARG_VEC_TO_SCALAR_COST, TARG_SCALAR_TO_VEC, TARG_VEC_LOAD_COST):
354         (TARG_VEC_UNALIGNED_LOAD_COST, TARG_VEC_STORE_COST): Define.
355
356 2007-07-12  Richard Guenther  <rguenther@suse.de>
357
358         * gimplify.c (gimplify_conversion): Make sure that the result
359         from maybe_fold_offset_to_reference is trivially convertible
360         to the desired type before doing the simplification.
361         (gimplify_expr): Likewise.
362         * fold-const.c (fold_binary): Use the correct types for
363         building the simplified expression.
364
365 2007-07-12  Zdenek Dvorak  <dvorakz@suse.cz>
366
367         PR rtl-optimization/32729
368         * cfghooks.c (can_duplicate_block_p): Do not forbid duplicating blocks
369         that fallthru to exit.
370
371 2007-07-12  Kaz Kojima  <kkojima@gcc.gnu.org>
372
373         * config/sh/sh.md (symGOTOFF2reg): Add missing parenthesis.
374         (symDTPOFF2reg): Likewise.
375
376 2007-07-11  Daniel Berlin  <dberlin@dberlin.org>
377
378         PR tree-optimization/32663
379         
380         * tree.h (VALUE_HANDLE_VUSES): Remove.
381         (struct tree_value_handle): Remove vuses.
382
383         * tree-vn.c (create_value_handle_for_expr): Don't set
384         VALUE_HANDLE_VUSES. 
385
386         * tree-ssa-pre.c (expression_vuses): New.
387         (alloc_expression_id): Set up expression_vuses.
388         (get_expression_vuses): New.
389         (set_expression_vuses): Ditto.
390         (clear_expression_ids): Modify for expression_vuses.
391         (phi_translate_1): Ditto.
392         (phi_translate_set): Ditto.
393         (value_dies_in_block_x): Ditto
394         (valid_in_sets): Ditto.
395         (add_to_sets): Ditto.
396         (find_existing_value_expr): Ditto.
397         (create_value_handle_for_expr): Ditto.
398         (make_values_for_stmt): Ditto.
399         (vuse_equiv): Remove.
400
401 2007-07-11  Alexandre Oliva  <aoliva@redhat.com>
402
403         * Makefile.in (mostlyclean): Remove object files.
404
405 2007-07-11  Kenneth Zadeck <zadeck@naturalbridge.com>
406
407         * toplev.c (no_new_pseudos): Deleted.
408         * rtl.h (no_new_pseudos): Deleted.
409         * tree-pass.h (pass_no_new_pseudos): Deleted. 
410         * passes.c (pass_no_new_pseudos): Deleted.
411         * final.c (rest_of_clean_state): Removed no_new_pseudos.
412         (rest_of_no_new_pseudos, pass_no_new_pseudos): Deleted.
413         * struct-equiv.c (rtx_equiv_p): Replaced no_new_pseudos with 
414         reload_completed.
415         * cfgcleanup.c (try_crossjump_to_edge): Ditto. 
416         * rtlhooks.c (gen_lowpart_general): Ditto.
417         * optabs.c (prepare_operand): Ditto.
418         * mode-switching.c (rest_of_handle_mode_switching): Deleted set of
419         no_new_pseudos.
420         * modulo-sched.c (rest_of_handle_sms): Ditto.
421         * see.c (rest_of_handle_see): Ditto.
422         * ifcvt.c (if_convert): Ditto.
423         (gate_handle_if_after_combine): Replaced no_new_pseudos with 
424         reload_completed.
425         * init-regs.c (gate_initialize_regs): Deleted set of
426         no_new_pseudos.
427         * lower-subreg.c (decompose_multiword_subregs): Ditto. 
428         * bb-reorder.c (rest_of_handle_partition_blocks): Ditto.
429         * doc/md.texi: Changed no_new_pseudos to can_create_pseudo_p.
430         
431 2007-07-11  Uros Bizjak  <ubizjak@gmail.com>
432
433         PR target/32661
434         * config/i386/sse.md (*sse2_storeq_rex64): Handle 64bit mem->reg moves.
435         (*vec_extractv2di_1_sse2): Disable for TARGET_64BIT.
436         (*vec_extractv2di_1_rex64): New insn pattern.
437
438 2007-07-11  David Daney  <ddaney@avtrex.com>
439
440         * config/mips/linux-unwind.h (mips_fallback_frame_state): Rewrite
441         return address calculation.  Substitute DWARF_ALT_FRAME_RETURN_COLUMN
442         for SIGNAL_UNWIND_RETURN_COLUMN.
443         * config/mips/mips.h (SIGNAL_UNWIND_RETURN_COLUMN): Remove.
444         (DWARF_FRAME_REGNUM): Rewrite.
445         (DWARF_ALT_FRAME_RETURN_COLUMN) Define.
446
447 2007-07-11  Nick Clifton  <nickc@redhat.com>
448
449         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Revert previous
450         delta and use gen_int_mode in place of GET_INT instead.
451
452 2007-07-11  Uros Bizjak  <ubizjak@gmail.com>
453
454         * reg-stack.c (struct tree_opt_pass pass_stack_regs): Nullify name
455         and letter field.
456
457 2007-07-11  Douglas Gregor  <doug.gregor@gmail.com>
458
459         * params.def (PARAM_VERIFY_CANONICAL_TYPES): Remove.
460         (PARAM_USE_CANONICAL_TYPES): New; decides whether to use canonical 
461         types or not.
462         * params.h (VERIFY_CANONICAL_TYPES): Remove.
463         (USE_CANONICAL_TYPES): New.
464         * doc/invoke.texi (verify-canonical-types): Remove.
465         (use-canonical-types): Add.
466
467 2007-07-11  Ulrich Weigand  <uweigand@de.ibm.com>
468
469         * config/spu/spu.c (spu_optimization_options): Remove setting of
470         parameter PARAM_MAX_COMPLETELY_PEEL_TIMES.
471         (spu_override_options): Move it here.
472
473 2007-07-11  Richard Sandiford  <richard@codesourcery.com>
474
475         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Handle -m4ksc and -m4ksd.
476         * config/mips/mips.c (mips_cpu_info_table): Mention
477         MIPS_ISA_LEVEL_SPEC in the comment.
478
479 2007-07-11  Eric Botcazou  <ebotcazou@adacore.com>
480
481         PR tree-optimization/32713
482         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle REAL_CST.
483
484 2007-07-11  Paolo Carlini  <pcarlini@suse.de>
485
486         PR middle-end/30482
487         * c-opts.c (c_common_post_options): Do not change flag_complex_method
488         conditional to flag_isoc99.
489         (c_common_init_options): Do it here, unconditionally.
490
491 2007-07-11  Eric Botcazou  <ebotcazou@adacore.com>
492
493         PR tree-optimization/32589
494         * doc/tree-ssa.texi (Rough GIMPLE Grammar): Add missing rule.
495         * tree-gimple.c (is_gimple_min_invariant): Clarify head comment.
496         * tree-ssa-propagate.c (valid_gimple_expression_p): New
497         predicate, extracted from...
498         (set_rhs): ...here.  Call it for the expression on entry.
499         * tree-ssa-propagate.h (valid_gimple_expression_p): Declare.
500         * tree-ssa-sccvn.c: Include tree-ssa-propagate.h.
501         (simplify_binary_expression): Use valid_gimple_expression_p
502         to validate the simplification.
503         * Makefile.in (tree-ssa-sccvn.o): Depends on tree-ssa-propagate.h.
504
505 2007-07-11  Danny Smith  <dannysmith@users.sourceforge.net>
506
507         * config/i386/cygming.h (PREFERRED_DEBUGGING_TYPE): Define to
508         DWARF2_DEBUG on 32 bit target too.
509         (DWARF2_UNWIND_INFO): Reorganize 64-bit vs 32-bit definition. 
510
511 2007-07-11  Nick Clifton  <nickc@redhat.com>
512
513         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Provide alternative
514         version for 64-bit hosts.
515
516 2007-07-10  David Daney  <ddaney@avtrex.com>
517
518         * config/mips/mips.h (ISA_HAS_SYNCI): New target capability
519         predicate.
520         (INITIALIZE_TRAMPOLINE): Emit clear_cache insn instead of  library
521         call.
522         * config/mips/mips.c (mips_expand_synci_loop): New function.
523         * config/mips/mips.md (UNSPEC_CLEAR_HAZARD): New constant.
524         (UNSPEC_RDHWR): Same.
525         (UNSPEC_SYNCI): Same.
526         (UNSPEC_SYNC): Same.
527         (clear_cache): New expand.
528         (sync): New insn.
529         (synci): Same.
530         (rdhwr): Same.
531         (clear_hazard): Same.
532         * config/mips/mips-protos.h (mips_expand_synci_loop): Declare
533         function.
534         * testsuite/gcc.target/mips/clear-cache-1.c: New test.
535         * testsuite/gcc.target/mips/clear-cache-2.c: New test.
536
537 2007-07-10  Ian Lance Taylor  <iant@google.com>
538
539         * emit-rtl.c (gen_reg_rtx): Check can_create_pseudo_p rather than
540         no_new_pseudos.
541
542 2007-07-10  David Daney  <ddaney@avtrex.com>
543
544         * builtins.def (BUILT_IN_CLEAR_CACHE): New builtin.
545         * builtins.c (expand_builtin___clear_cache): New function.
546         (expand_builtin): Call expand_builtin___clear_cache for
547         BUILT_IN_CLEAR_CACHE case.
548         * doc/extend.texi (__builtin___clear_cache): Document new builtin.
549         * doc/md.texi (clear_cache): Document new instruction pattern.
550         * testsuite/gcc.dg/builtins-64.c: New test.
551
552 2007-07-11  Hans-Peter Nilsson  <hp@axis.com>
553
554         * config/cris/cris.md ("movsi"): Fix typo in last change.
555
556 2007-07-09  Geoffrey Keating  <geoffk@apple.com>
557
558         PR 32617
559         * c-common.c (c_alignof_expr): Look at DECL_ALIGN of
560         FUNCTION_DECLs.
561         (handle_aligned_attribute): Allow use on FUNCTION_DECLs.
562         * varasm.c (assemble_start_function): Honor DECL_ALIGN
563         for FUNCTION_DECLs.  Don't use align_functions_log if
564         DECL_USER_ALIGN.
565         * print-tree.c (print_node): Print DECL_ALIGN and DECL_USER_ALIGN
566         even for FUNCTION_DECLs.
567         * c-decl.c (merge_decls): Propagate DECL_ALIGN even for
568         FUNCTION_DECLs.
569         * tree.h (DECL_ALIGN): Update for new location of 'align'.
570         (DECL_FUNCTION_CODE): Update for new location and name of
571         'function_code'.
572         (DECL_OFFSET_ALIGN): Update for new location of 'off_align'.
573         (struct tree_decl_common): Move 'align' and 'off_align' out
574         of union, ensure they're still on a 32-bit boundary.  Remove
575         other fields in union 'u1'.
576         (struct tree_function_decl): Add field 'function_code' replacing
577         'u1.f' in tree_decl_common.
578         * tree.c (build_decl_stat): Set initial value of DECL_ALIGN.
579         * doc/extend.texi (Function Attributes): Add 'aligned' attribute.
580         (Variable Attributes): Cross-reference 'aligned' attribute
581         to Function Attributes.
582         * flags.h (force_align_functions_log): Delete.
583         * toplev.c (force_align_functions_log): Delete.
584
585 2007-07-10  Uros Bizjak  <ubizjak@gmail.com>
586
587         PR target/32708
588         * config/i386/sse.md (vec_concatv2di): Disable for TARGET_64BIT.
589         (*vec_concatv2di_rex): New insn pattern.
590
591 2007-07-10  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
592
593         PR target/32538
594         * config/mips/iris6.h (LIBGCC_SPEC): Add libm.
595
596 2007-07-10  Ian Lance Taylor  <iant@google.com>
597
598         Replace no_new_pseudos in backends.
599         * rtl.h (can_create_pseudo_p): Define.
600         * config/darwin.c (machopic_indirect_data_reference): Use
601         can_create_pseudo_p () instead of no_new_pseudos.
602         (machopic_indirect_data_reference): Likewise.
603         (machopic_legitimize_pic_address): Likewise.
604         * config/alpha/alpha.c (alpha_legitimize_address): Likewise.
605         (alpha_emit_set_const_1): Likewise.
606         (alpha_emit_set_const): Likewise.
607         (alpha_emit_conditional_move): Likewise.
608         (alpha_split_conditional_move): Likewise.
609         * config/alpha/alpha.md (various splitters): Likewise.
610         (movti): Likewise.
611         * config/arm/arm.c (legitimize_pic_address): Likewise.
612         (arm_load_pic_register): Likewise.
613         * config/arm/arm.md (addsi3, subsi3, andsi3, iorsi3): Likewise.
614         (movdi, movsi, movhi, movqi, movsf, movdf): Likewise.
615         * config/bfin/bfin.c (legitimize_pic_address): Likewise.
616         * config/cris/cris.c (cris_expand_pic_call_address): Likewise.
617         * config/cris/cris.md (movsi): Likewise.
618         * config/frv/frv.md (symGOT2reg_hilo): Likewise.
619         (symGOTOFF2reg_hilo): Likewise.
620         (symGPREL2reg, symGPREL2reg_hilo): Likewise.
621         * config/h8300/h8300.md (insv, extzv): Likewise.
622         * config/i386/i386.c (ix86_expand_move): Likewise.
623         (ix86_expand_vector_move): Likewise.
624         (ix86_prepare_fp_compare_args): Likewise.
625         (ix86_expand_carry_flag_compare): Likewise.
626         * config/i386/i386.md (tls_dynamic_gnu2_32): Likewise.
627         (tls_dynamic_gnu2_combine_32): Likewise.
628         (tls_dynamic_gnu2_64, tls_dynamic_gnu2_combine_64): Likewise.
629         * config/ia64/ia64.c (ia64_expand_move): Likewise.
630         (ia64_expand_movxf_movrf): Likewise.
631         * config/m32c/m32c.c (m32c_prepare_move): Likewise.
632         (m32c_split_move): Likewise.
633         (m32c_expand_insv): Likewise.
634         * config/m68k/m68k.md (movsi): Likewise.
635         * config/mips/mips.c (mips_force_temporary): Likewise.
636         (mips_split_symbol): Likewise.
637         (mips_move_integer): Likewise.
638         (mips_legitimize_const_move): Likewise.
639         * config/mn10300/mn10300.md (movsi): Likewise.
640         * config/pa/pa.c (emit_move_sequence): Likewise.
641         * config/rs6000/rs6000.c (rs6000_emit_move): Likewise.
642         (rs6000_got_register): Likewise.
643         (create_TOC_reference): Likewise.
644         (rs6000_machopic_legitimize_pic_address): Likewise.
645         * config/rs6000/rs6000.md (add<mode>3): Likewise.
646         (various splitters): Likewise.
647         (iorsi3, xorsi3, iordi3, xordi3): Likewise.
648         (movsi_got): Likewise.
649         * config/s390/s390.c (emit_symbolic_move): Likewise.
650         * config/s390/s390.md (movhi, movqi): Likewise.
651         (load_multiple, store_multiple): Likewise.
652         * config/score/score.c (score_force_temporary): Likewise.
653         * config/sh/sh.c (prepare_move_operands): Likewise.
654         (prepare_cbranch_operands): Likewise.
655         (emit_fpu_switch): Likewise.
656         (fpscr_set_from_mem): Likewise.
657         * config/sh/sh.md (movdicc, movsicc, movsicc_umin): Likewise.
658         (adddi3, subsi3): Likewise.
659         (various splitters): Likewise.
660         (divsi_inv_fp_combine): Likewise.
661         (symGOT_load, symGOTOFF2reg, symDTPOFF2reg): Likewise.
662         (seq, slt, sle, sgt, sge, sgtu, sltu, sleu, sgeu): Likewise.
663         (sne): Likewise.
664         * config/sh/predicates.md (xor_operand): Likewise.
665         * config/sparc/sparc.c (legitimize_tls_address): Likewise.
666         * config/sparc/sparc.md (movsi_pic_label_ref): Likewise.
667         (movdi_pic_label_ref): Likewise.
668         * config/spu/spu.c (spu_split_immediate): Likewise.
669         * config/alpha/alpha.md (various splitters): Remove test
670         !no_new_pseudos || reload_completed.
671         * config/ia64/ia64.c (ia64_output_mi_thunk): Don't set
672         no_new_pseudos.
673         * config/m68k/m68k.c (m68k_output_mi_thunk): Likewise.
674         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
675         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
676         * config/score/score.c (th_output_mi_thunk): Likewise.
677         * config/sh/sh.c (sh_output_mi_thunk): Likewise.
678         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
679
680 2007-07-10  Kaz Kojima  <kkojima@gcc.gnu.org>
681
682         PR rtl-optimization/32664
683         * mode-switching.c (create_pre_exit): Skip barrier insns.
684
685 2007-07-10  Zdenek Dvorak  <dvorakz@suse.cz>
686
687         * tree-scalar-evolution.c (scev_const_prop): Add arguments to
688         force_gimple_operand_bsi.
689         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr,
690         rewrite_use_compare): Ditto.
691         * tree-ssa-address.c (gimplify_mem_ref_parts, create_mem_ref):
692         Ditto.
693         * tree-ssa-ifcombine.c (ifcombine_ifandif): Ditto.
694         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Ditto.
695         * lambda-code.c (replace_uses_equiv_to_x_with_y): Ditto.
696         * tree-profile.c (prepare_instrumented_value,
697         tree_gen_interval_profiler, tree_gen_pow2_profiler,
698         tree_gen_one_value_profiler, tree_gen_ic_profiler,
699         tree_gen_ic_func_profiler, tree_gen_average_profiler,
700         tree_gen_ior_profiler): Ditto.
701         * tree-ssa-reassoc.c (negate_value): Ditto.
702         * matrix-reorg.c (transform_access_sites, transform_allocation_sites):
703         Use force_gimple_operand_bsi.
704         * tree-vect-transform.c (vect_update_ivs_after_vectorizer): Ditto.
705         * tree-if-conv.c (add_to_dst_predicate_list,
706         find_phi_replacement_condition): Ditto.
707         * gimplify.c (force_gimple_operand_bsi): Add before and m arguments.
708         Call mark_symbols_for_renaming for new statements.
709         * tree-flow.h (force_gimple_operand_bsi): Declaration changed.
710
711 2007-07-10  Zdenek Dvorak  <dvorakz@suse.cz>
712
713         * cfghooks.c (remove_edge): New function.
714         (redirect_edge_and_branch, remove_branch, merge_blocks): Updated
715         loop exit rescans.
716         * cfghooks.h (remove_edge): Declare.
717         * cfg.c (remove_edge): Renamed to remove_edge_raw.
718         * basic-block.h (remove_edge): Declaration changed to remove_edge_raw.
719
720 2007-07-09  Wolfgang Gellerich  <gellerich@de.ibm.com>
721
722         * optabs.h: Added declaration for signbit_optab.  
723         * optabs.c: (init_optabs): Added initialization for signbit_optab.
724         * genoptinit.c (optabs): Added entry for signbit insns.  
725         * builtins.c (expand_builtin_signbit): Added code to use a signbit
726         insn, if available.  
727         * config/s390/s390.h (S390_TDC_SIGNBIT_SET): New constant.  
728         * config/s390/s390.md (signbit<mode>2): New expander.  
729
730 2007-07-09  Richard Guenther  <rguenther@suse.de>
731
732         PR middle-end/32698
733         * fold-const.c (fold_plusminus_mult_expr): Move constant
734         arguments second to allow decomposing.
735
736 2007-07-09  Alexandre Oliva  <aoliva@oliva.athome.lsd.ic.unicamp.br>
737
738         Revert:
739         2007-07-06  Alexandre Oliva  <aoliva@redhat.com>
740         PR debug/23551
741         * tree-ssa-copyrename.c (copy_rename_partition_coalesce):
742         Disregard DECL_FROM_INLINE.
743
744 2007-07-09  Uros Bizjak  <ubizjak@gmail.com>
745
746         PR target/27855
747         * doc/invoke.texi: Add ftree-reassoc flag.
748         * common.opt (ftree-reassoc): New flag.
749         * tree-ssa-reassoc.c (gate_tree_ssa_reassoc): New static function.
750         (struct tree_opt_pass pass_reassoc): Use gate_tree_ssa_reassoc.
751
752 2007-07-09  Uros Bizjak  <ubizjak@gmail.com>
753
754         PR tree-optimization/32681
755         * tree-if-conv.c (find_phi_replacement_condition): Use the condition
756         saved in second_edge->aux when first_bb is a loop header.
757
758 2007-07-09  Jan HUbicka  <jh@suse.cz>
759
760         * cse.c (cse_insn): Avoid invalid sharing on trial replacement.
761
762 2007-07-09  Richard Guenther  <rguenther@suse.de>
763
764         * c-decl.c (start_function): Do not promote return type.
765
766 2007-07-08  Daniel Franke  <franke.daniel@gmail.com>
767
768         * function.c (do_warn_unused_parameter): Do not warn if
769         TREE_NO_WARNING is set.
770
771 2007-07-08  Andreas Schwab  <schwab@suse.de>
772
773         * doc/invoke.texi (DEC Alpha/VMS Options): Fix typo.
774
775 2007-07-08  Sandra Loosemore  <sandra@codesourcery.com>
776
777         Revert this patch:
778         2007-07-06  Sandra Loosemore  <sandra@codesourcery.com>
779
780         * c-opts.c (c_common_handle_option): Make DOLLARS_IN_IDENTIFIERS
781         apply to assembly language, too.
782         * doc/tm.texi (DOLLARS_IN_IDENTIFIERS): Update.
783
784 2007-07-07  Daniel Berlin  <dberlin@dberlin.org>
785
786         Revert (note the sccvn portions are *not* reverted)
787         2007-07-06  Daniel Berlin  <dberlin@dberlin.org>
788
789         Fix PR tree-optimization/23488
790
791         * tree-vn.c (set_value_handle): Use decl_vh_map for decl value
792         handles.
793         * tree-flow-inline.h (get_value_handle): Ditto.
794         * tree-ssa-pre.c (decl_vh_map): New.
795         (decl_node_pool): New.
796         (can_value_number_operation): Support DECL_P.
797         (can_PRE_operation): Ditto.
798         (create_expression_by_pieces): Ditto.
799         (find_existing_value_expr): Modify to differnetiate between
800         addressing and top level.
801         (create_value_handle_for_expr): Handle DECL's.
802         (poolify_tree): Ditto.
803         (make_values_for_phi): Don't insert into PHI_GEN during FRE.
804         (make_values_for_stmt): Handle DECL's properly.
805         (init_pre): Reorg to not init useless things during FRE.
806         (fini_pre): Ditto.
807         * tree-flow.h: Include pointer-set.h.
808         (decl_vh_map): Declare.
809         * Makefile.in (TREE_FLOW_H): Add pointer-set.h
810
811 2007-07-07 Eric Weddington  <eweddington@cso.atmel.com>
812
813         * config/avr/constraints.md (define_memory_constraint "Q"): Fix
814         the constraint description.
815         * doc/md.texi: Update documentation of AVR constraints.
816
817 2007-07-07  Kazu Hirata  <kazu@codesourcery.com>
818
819         * auto-inc-dec.c, config/arm/arm.c,
820         config/m32r/constraints.md, config/mips/mips.md,
821         config/rs6000/rs6000.c, cselib.c, dce.c, df-core.c,
822         df-problems.c, df-scan.c, df.h, dse.c, gimplify.c,
823         tree-if-conv.c, tree-ssa-sccvn.c, tree-ssa.c: Fix comment
824         typos.  Follow spelling conventions.
825         * doc/invoke.texi, doc/rtl.texi: Fix typos.
826
827         * cfgrtl.c (delete_insn_chain_and_edges): Remove.
828         * rtl.h: Remove the prototype for delete_insn_chain_and_edges.
829
830         * tree-ssa-operands.c (realloc_vop, realloc_vdef,
831         realloc_vuse): Remove.
832         * tree-ssa-operands.h: Remove the prototype for realloc_vdef
833         and realloc_vuse.
834
835 2007-07-06  Daniel Berlin  <dberlin@dberlin.org>
836
837         Fix PR tree-optimization/23488
838
839         * tree-ssa-sccvn.c (expr_has_constants): Handle tcc_declaration.
840         (try_to_simplify): Ditto.
841         (visit_use): Ditto.
842         * tree-vn.c (set_value_handle): Use decl_vh_map for decl value
843         handles.
844         * tree-flow-inline.h (get_value_handle): Ditto.
845         * tree-ssa-pre.c (decl_vh_map): New.
846         (decl_node_pool): New.
847         (can_value_number_operation): Support DECL_P.
848         (can_PRE_operation): Ditto.
849         (create_expression_by_pieces): Ditto.
850         (find_existing_value_expr): Modify to differnetiate between
851         addressing and top level.
852         (create_value_handle_for_expr): Handle DECL's.
853         (poolify_tree): Ditto.
854         (make_values_for_phi): Don't insert into PHI_GEN during FRE.
855         (make_values_for_stmt): Handle DECL's properly.
856         (init_pre): Reorg to not init useless things during FRE.
857         (fini_pre): Ditto.
858         * tree-flow.h: Include pointer-set.h.
859         (decl_vh_map): Declare.
860         * Makefile.in (TREE_FLOW_H): Add pointer-set.h
861                 
862 2007-07-06  Sandra Loosemore  <sandra@codesourcery.com>
863
864         * c-opts.c (c_common_handle_option): Make DOLLARS_IN_IDENTIFIERS
865         apply to assembly language, too.
866         * doc/tm.texi (DOLLARS_IN_IDENTIFIERS): Update.
867
868 2007-07-06  Ian Lance Taylor  <iant@google.com>
869             Zack Weinberg  <zackw@panix.com>
870
871         PR middle-end/32441
872         * builtins.c (std_expand_builtin_va_start): Don't use make_tree.
873
874 2007-07-06  Richard Sandiford  <richard@codesourcery.com>
875
876         * config/sh/sh.md (*prefetch_i4): Disable for TARGET_VXWORKS_RTP.
877         (prefetch): Likewise if "pref" would be used.
878
879 2007-07-06  Josh Conner  <jconner@apple.com>
880
881         PR middle-end/32602
882         PR middle-end/32603
883         * calls.c (store_one_arg): Handle arguments which are partially
884         on the stack when detecting argument overlap.
885
886 2007-07-06  Bernd Schmidt  <bernd.schmidt@analog.com>
887
888         * reload1.c (choose_reload_regs): Set reload_spill_index for regs
889         chosen during find_reloads.
890
891 2007-07-06  Richard Guenther  <rguenther@suse.de>
892
893         * gimplify.c (gimplify_call_expr): Prefer DECL_ARGUMENTS over
894         TYPE_ARG_TYPES for verification of argument types.  Use
895         DECL_ARG_TYPE instead of the PARM_DECL type.  Take excess
896         parameters as variable arguments.
897
898 2007-07-06  Andreas Krebbel  <krebbel1@de.ibm.com>
899
900         * libgcc2.h (word_type): Type definition removed.
901         (cmp_return_type, shift_count_type): Type definitions added.
902         (__lshrdi3, __ashldi3, __ashrdi3): word_type of second parameter
903         replaced with shift_count_type.
904         (__cmpdi2, __ucmpdi2): word_type of return type replaced with
905         cmp_return_type.
906         * libgcc2.c (__udivmoddi4, __moddi3): Type of local variable c
907         changed from word_type to Wtype.
908         (__lshrdi3, __ashldi3, __ashrdi3): word_type of second parameter
909         replaced with shift_count_type.
910         (__cmpdi2, __ucmpdi2): word_type of return type replaced with
911         cmp_return_type.
912         * c-common.c (handle_mode_attribute): Handling for libgcc_cmp_return
913         and libgcc_shift_count attribute added.
914         * target-def.h (TARGET_LIBGCC_CMP_RETURN_MODE,
915         TARGET_LIBGCC_SHIFT_COUNT_MODE): New target hooks defined.
916         (TARGET_INITIALIZER): New target hooks added.
917         * targhooks.c (default_libgcc_cmp_return_mode,
918         default_libgcc_shift_count_mode): Default implementations for the new
919         target hooks added.
920         * targhooks.h (default_libgcc_cmp_return_mode,
921         default_libgcc_shift_count_mode): Function prototypes added.
922         * target.h (struct gcc_target): Fields for the new target hooks added.
923         * optabs.c (expand_binop): Use shift_count_mode when expanding shift
924         as library call.
925         (prepare_cmp_insn): Use cmp_return_mode when expanding comparison as
926         library call.
927
928         * doc/tm.texi (TARGET_LIBGCC_CMP_RETURN_MODE,
929         TARGET_LIBGCC_SHIFT_COUNT_MODE): Documentation added.
930
931         * config/s390/s390.c (s390_libgcc_cmp_return_mode,
932         s390_libgcc_shift_count_mode): Functions added.
933         (TARGET_LIBGCC_CMP_RETURN_MODE, TARGET_LIBGCC_SHIFT_COUNT_MODE):
934         Target hooks defined.
935
936 2007-07-06  Richard Sandiford  <richard@codesourcery.com>
937
938         * config/mips/mips.c (compute_frame_size): Restore the original
939         gp_sp_offset for !GENERATE_MIPS16E_SAVE_RESTORE and remove the
940         fp_size term from the GENERATE_MIPS16E_SAVE_RESTORE calculation.
941         Document why the difference is needed.
942
943 2007-07-06  Richard Guenther  <rguenther@suse.de>
944
945         * c-common.c (boolean_increment): Use correctly typed
946         constant.
947
948 2007-07-06  Richard Sandiford  <richard@codesourcery.com>
949
950         * config/mips/mips.c (mips16e_save_restore_pattern_p): Check that
951         the topmost argument register is not also included in the save mask.
952         (mips16e_collect_argument_save_p): Take a pointer to the argument
953         register, rather than a pointer to the number of arguments.
954         (mips16e_collect_argument_saves): Only include argument saves
955         that aren't in the register mask.
956
957 2007-07-06  Uros Bizjak  <ubizjak@gmail.com>
958
959         PR rtl-optimization/32450
960         * function.c (thread_prologue_and_epilogue_insns): Emit blockage insn
961         to ensure that instructions are not moved into the prologue when
962         profiling is on.  Remove unused prologue_end variable.
963         (expand_function_end): Emit blockage insn instead of ASM_INPUT rtx
964         as a scheduling barrier.
965
966 2007-07-06  Alexandre Oliva  <aoliva@redhat.com>
967
968         PR debug/23551
969         * tree-ssa-copyrename.c (copy_rename_partition_coalesce):
970         Disregard DECL_FROM_INLINE.
971
972 2007-07-05  Adam Nemet  <anemet@caviumnetworks.com>
973
974         * rtlanal.c (num_sign_bit_copies1): Improve cases of ANDing or
975         IORing with a constant.
976
977 2007-07-05  Seongbae Park  <seongbae.park@gmail.com>
978
979         PR rtl-optimization/32475
980         * df-scan.c (df_def_record_1): Add a use of the stack pointer
981         for every definition of the stack pointer.
982
983 2007-07-05  Richard Earnshaw  <rearnsha@arm.com>
984
985         * arm.c (vfp3_const_double_index): Copy signed results of
986         REAL_VALUE_TO_INT into unsigned vars.
987
988 2007-07-05  Richard Guenther  <rguenther@suse.de>
989
990         PR middle-end/32639
991         * alias.c (get_alias_set): Tread METHOD_TYPE the same as
992         FUNCTION_TYPE.
993         * tree-ssa.c (useless_type_conversion_p): Check canonical
994         types early.
995
996 2007-07-05 Anatoly Sokolov <aesok@post.ru>
997
998         * config/avr/avr.md (zero_extendqihi2, zero_extendqisi2, 
999         zero_extendhisi2): Change to define_insn_and_split. 
1000         (zero_extendqidi2, zero_extendhidi2, zero_extendsidi2): New.
1001
1002 2007-07-05  Paolo Bonzini  <bonzini@gnu.org>
1003
1004         * function.c (match_asm_constraints_1, rest_of_match_asm_constraints,
1005         pass_match_asm_constraints): New.
1006         * passes.c (init_optimization_passes): Add new pass.
1007         * stmt.c (expand_asm_operands): Set cfun->has_asm_statement.
1008         * function.h (struct function): Add has_asm_statement bit.
1009         (current_function_has_asm_statement): New.
1010         * tree-pass.h (pass_match_asm_constraints): New.
1011
1012 2007-07-05  Richard Sandiford  <rsandifo@nildram.co.uk>
1013
1014         * config/mips/mips.c (mips_file_start): Avoid declaration
1015         after code.
1016
1017 2007-07-05  Sandra Loosemore  <sandra@codesourcery.com>
1018
1019         * optabs.c (expand_binop_directly): Fix signed/unsigned comparison.
1020
1021 2007-07-05  Uros Bizjak  <ubizjak@gmail.com>
1022
1023         * rtl.def (NOTE): Change print format string to print
1024         operand 5 as a note insn name.
1025
1026 2007-07-05  Sandra Loosemore  <sandra@codesourcery.com>
1027             David Ung  <davidu@mips.com>
1028
1029         * config/mips/mips.c (mips_cpu_info): Add 4ksc and 4ksd processors.
1030         * doc/invoke.texi: (MIPS Options): Document them.
1031
1032 2007-07-05  Sandra Loosemore  <sandra@codesourcery.com>
1033             David Ung  <davidu@mips.com>
1034
1035         Add support for SmartMIPS ASE.
1036
1037         * optabs.c (expand_binop_directly): New, broken out from...
1038         (expand_binop): Here.  Make it try rotating in the other
1039         direction even when the second operand isn't constant.
1040         * config/mips/mips.md (*lwxs): New.
1041         * config/mips/mips.opt (msmartmips): New.
1042         * config/mips/mips.c (mips_lwxs_address_p): New.
1043         (mips_rtx_costs): Make it recognize scaled indexed addressing.
1044         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define
1045         __mips_smartmips when compiling for TARGET_SMARTMIPS.
1046         (ISA_HAS_ROR): Define for TARGET_SMARTMIPS.
1047         (ISA_HAS_LWXS): New.
1048         (ASM_SPEC): Add -msmartmips/-mno-smartmips.
1049         * doc/invoke.texi (MIPS Options): Document -msmartmips/-mno-smartmips.
1050         * testsuite/gcc.target/mips/smartmips-lwxs.c: New test case.
1051         * testsuite/gcc.target/mips/smartmips-ror-1.c: New test case.
1052         * testsuite/gcc.target/mips/smartmips-ror-2.c: New test case.
1053         * testsuite/gcc.target/mips/smartmips-ror-3.c: New test case.
1054         * testsuite/gcc.target/mips/smartmips-ror-4.c: New test case.
1055
1056 2007-07-05  Dorit Nuzman  <dorit@il.ibm.com>
1057
1058         * tree-vectorizer.c (new_loop_vec_info): Initialize
1059         LOOP_VINFO_COST_MODEL_MIN_ITERS.
1060         * tree-vectorizer.h (_loop_vec_info): Added new filed
1061         min_profitable_iters.
1062         (LOOP_VINFO_COST_MODEL_MIN_ITERS): New access macro to above new field.
1063         (TARG_SCALAR_TO_VEC_COST): Define cost of scalar to vector operation.
1064         * tree-vect-analyze.c (vect_analyze_operations): Set
1065         LOOP_VINFO_COST_MODEL_MIN_ITERS.
1066         * tree-vect-transform.c (vect_estimate_min_profitable_iters): Use
1067         VEC_length to determine if there are any LOOP_VINFO_MAY_MISALIGN_STMTS.
1068         Fix calculation of peel_iters_prologue. Move consideration of epilogue
1069         and prologue cost to after they are computed.
1070         (vect_model_induction_cost): Use TARG_SCALAR_TO_VEC_COST instead of
1071         TARG_VEC_STMT_COST.
1072         (vect_model_simple_cost): Takes additional argument dt. Consider cost
1073         of creating vectors from scalars according to dt.
1074         (vect_model_store_cost): Likewise.
1075         (vectorizable_call): Use dt array instead of scalar dt. Call
1076         vect_model_simple_cost with additional argument dt.
1077         (vectorizable_assignment): Likewise.
1078         (vectorizable_operation): Likewise.
1079         (vectorizable_type_demotion): Likewise.
1080         (vectorizable_type_promotion): Likewise.
1081         (vectorizable_store): Use dt array instead of scalar dt. Call
1082         vect_model_store_cost with additional argument dt.
1083         (vect_do_peeling_for_loop_bound): Don't call
1084         vect_estimate_min_profitable_iters. Instead, lookup
1085         LOOP_VINFO_COST_MODEL_MIN_ITERS. Don't always print
1086         "may not be profitable".
1087
1088 2007-07-05  Dorit Nuzman  <dorit@il.ibm.com>
1089
1090         PR testsuite/32014
1091         * config/rs6000/altivec.md (UNSPEC_VUPKHS_V4SF, UNSPEC_VUPKLS_V4SF):
1092         (UNSPEC_VUPKHU_V4SF, UNSPEC_VUPKLU_V4SF): New.
1093         (vec_unpacks_float_hi_v8hi, vec_unpacks_float_lo_v8hi): New patterns.
1094         (vec_unpacku_float_hi_v8hi, vec_unpacku_float_lo_v8hi): New patterns. 
1095
1096 2007-07-05  Zdenek Dvorak  <dvorakz@suse.cz>
1097
1098         * config/i386/i386.c (ix86_address_cost): Do not consider more complex
1099         addressing modes cheaper.
1100
1101 2007-07-05  Alexandre Oliva  <aoliva@redhat.com>
1102
1103         * dwarf2out.c (dw_ranges_by_label_ref): New typedef.
1104         (dw_ranges_struct): Rename block_num to num.  Adjust.
1105         (dw_ranges_by_label_struct): New.
1106         (ranges_by_label, ranges_by_label_allocated,
1107         ranges_by_label_in_use): New variables.
1108         (add_ranges_num): Factored most of the code out of...
1109         (add_ranges): ... this one.  Rewrite in terms of the former.
1110         (add_ranges_by_labels): New.
1111         (output_ranges): Output by-label ranges.
1112         (dwarf2out_finish): Output range for multiple-section
1113         compile_unit.  Output standard DW_AT_low_pc in addition to
1114         unexpected DW_AT_entry_pc.
1115
1116 2007-07-04  Daniel Berlin  <dberlin@dberlin.org>
1117
1118         PR tree-optimization/32604
1119         PR tree-optimization/32606
1120
1121         * tree-ssa-pre.c (bb_bitmap_sets): Removed antic_safe_loads.
1122         (compute_antic_safe): Removed.
1123         (ANTIC_SAFE_LOADS): Ditto.
1124         (compute_antic_aux): Don't print ANTIC_SAFE_LOADS.
1125         (execute_pre): Don't call compute_antic_safe.
1126         (vuse_equiv): New function.
1127         (make_values_for_stmt): Use it
1128         * tree-ssa-sccvn.c (set_ssa_val_to): Remove assert, since it is
1129         not always true.
1130
1131 2007-07-04 Anatoly Sokolov <aesok@post.ru>
1132
1133         PR target/31331
1134         * config/avr/avr.c (avr_naked_function_p): Handle receiving a type
1135         rather than a decl. 
1136         (avr_attribute_table): Make "naked" attribute apply to function types
1137         rather than to decls.
1138         (avr_handle_fntype_attribute): New function.
1139
1140 2007-07-04  Joseph Myers  <joseph@codesourcery.com>
1141
1142         * target-def.h (TARGET_INITIALIZER): Remove trailing whitespace
1143         after \.
1144
1145 2007-07-04  David Ung  <davidu@mips.com>
1146             Joseph Myers  <joseph@codesourcery.com>
1147
1148         * config/mips/mips.md (type): Add logical, signext and move.
1149         (one_cmpl<mode>2, *and<mode>3, *and<mode>3_mips16, *ior<mode>3,
1150         *ior<mode>3_mips16, two unnamed insns after *ior<mode>3_mips16,
1151         *nor<mode>3, "Combiner patterns to optimize truncate/zero_extend
1152         combinations", *zero_extend<SHORT:mode><GPR:mode>2,
1153         *zero_extendqihi2, *extend<SHORT:mode><GPR:mode>2_mips16e,
1154         *extend<SHORT:mode><GPR:mode>2_se<SHORT:size>, *movdi_64bit,
1155         *movdi_64bit_mips16, *movsi_internal, *movsi_mips16, movcc,
1156         *movhi_internal, *movhi_mips16, *movqi_internal, *movqi_mips16,
1157         *movsf_hardfloat, *movsf_softfloat, *movsf_mips16,
1158         *movdf_hardfloat_64bit, *movdf_hardfloat_32bit,
1159         movv2sf_hardfloat_64bit): Use the new types.
1160         (*movdi_32bit, *movdi_gp32_fp64, *movdi_32bit_mips16,
1161         *movdf_softfloat, *movdf_mips16): Use "multi".
1162         (extendqihi2): Replace with a define_expand.
1163         (*extendqihi2_mips16e, *extendqihi2, *extendqihi2_seb): New.
1164         Based on extend<SHORT:mode><GPR:mode>2 patterns.
1165         * config/mips/74k.md (r74k_int_logical): New reservation and
1166         bypasses.
1167         (r74k_int_arith): Remove "slt".
1168         * config/mips/24k.md, config/mips/4130.md, config/mips/4k.md,
1169         config/mips/5400.md, config/mips/5500.md, config/mips/5k.md,
1170         config/mips/7000.md, config/mips/9000.md, config/mips/generic.md,
1171         config/mips/sb1.md, config/mips/sr71k.md: Add new types to
1172         reservations for "arith".
1173
1174 2007-07-04  Richard Guenther  <rguenther@suse.de>
1175
1176         * tree-ssa.c (useless_type_conversion_p): Add handling for
1177         scalar float and vector types.  Only call the types_compatible_p
1178         langhook for aggregate types as last resort.  Follow the
1179         rules.
1180
1181 2007-07-04  Richard Guenther  <rguenther@suse.de>
1182
1183         * tree-inline.c (estimate_num_insns_1): Treat CONVERT_EXPR
1184         the same as NOP_EXPR.
1185
1186 2007-07-04  Nick Clifton  <nickc@redhat.com>
1187
1188         * target.h (struct gcc_target): Add target_help field.
1189         * target-def.h (TARGET_HELP): New.
1190         (TARGET_INITIALIZER): Use TARGET_HELP.
1191         * opts.c (command_handle_option): Invoke target_help function, if
1192         defined, when the user has specified --target-help on the command
1193         line.
1194         * doc/invoke.texi: Mention that --target-help might print
1195         additional information.
1196         * doc/tm.texi: Document TARGET_HELP hook.
1197
1198         * arm.c (TARGET_HELP): Override default definition.
1199         (arm_target_help): New - display a wrapped list of cores and
1200         architectures supported.
1201
1202 2007-07-04  Rask Ingemann Lambertsen  <rask@sygehus.dk>
1203
1204         * config/gcc/v850/v850.c (expand_prologue): Make sure
1205         GEN_INT() argument is sign extended rather than zero extended.
1206         (expand_epilogue): Likewise.
1207         (output_move_double): Delete.
1208         * config/gcc/v850/v850-protos.h (output_move_double): Delete.
1209         * config/gcc/v850/v850.md (movdi): Delete.
1210         (*movdi_internal): Delete.
1211         (movdf): Delete.
1212         (*movdf_internal): Delete.
1213
1214 2007-07-04  Richard Sandiford  <richard@codesourcery.com>
1215
1216         * config/sh/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Reject -mrelax
1217         unless compiling RTP PIC.
1218
1219 2007-07-04  Richard Guenther  <rguenther@suse.de>
1220
1221         PR tree-optimization/32482
1222         * tree-ssa-ifcombine.c (recognize_single_bit_test): Use the
1223         original ssa name if we didn't find a shift expression.
1224         Fix shift constant for bit zero test.
1225
1226 2007-07-04  Richard Sandiford  <richard@codesourcery.com>
1227
1228         * config/sh/lib1funcs.asm (ic_invalidate): Align constant pool.
1229
1230 2007-07-04  Richard Sandiford  <richard@codesourcery.com>
1231
1232         * config.gcc (arm-wrs-vxworks): Don't include svr4.h.
1233         * config/vxworks.h (PTRDIFF_TYPE, SIZE_TYPE, TARGET_POSIX_IO): Define.
1234         * config/arm/vxworks.h (ASM_SPEC): Delete.
1235         (SUBTARGET_EXTRA_ASM_SPEC): Define.
1236
1237 2007-07-04  Sebastian Pop  <sebpop@gmail.com>
1238
1239         * tree-data-ref.h (data_dependence_relation): New flag reversed_p.
1240         (DDR_REVERSED_P): New.
1241         * tree-data-ref.c (initialize_data_dependence_relation,
1242         build_classic_dist_vector): Set DDR_REVERSED_P.
1243
1244 2007-07-04  Sebastian Pop  <sebpop@gmail.com>
1245
1246         PR middle-end/32457
1247         * tree-data-ref.c (analyze_siv_subscript_cst_affine,
1248         compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
1249         init_omega_for_ddr_1): Use non conservative number of iterations
1250         estimations.
1251         (analyze_subscript_affine_affine): Use HOST_WIDE_INT instead of int.
1252         (analyze_siv_subscript): Remove FIXME and reinitialization of 
1253         last_conflicts to chrec_dont_know.
1254         * testsuite/gfortran.dg/vect/pr32457.f90: New.
1255
1256 2007-07-04  Douglas Gregor  <doug.gregor@gmail.com>
1257
1258         * tree.c (maybe_canonicalize_argtypes): Improve description.
1259
1260 2007-07-04  Douglas Gregor  <doug.gregor@gmail.com>
1261
1262         * tree.c (maybe_canonicalize_argtypes): New.
1263         (build_function_type): Set canonical type.
1264         (build_method_type_directly): Ditto.
1265         (reconstruct_complex_type): Rebuild the METHOD_TYPE node
1266         properly.
1267
1268 2007-07-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1269
1270         * tree-ssa-loop-ivopts.c (strip_offset_1): Treat POINTER_PLUS_EXPR
1271         like PLUS_EXPR.
1272         (rewrite_use_nonlinear_expr): Likewise.
1273
1274 2007-07-03  Seongbae Park  <seongbae.park@gmail.com>
1275
1276         * rtl.def (UNSPEC, USE, CLOBBER): More comments.
1277
1278 2007-07-04  Ben Elliston  <bje@au.ibm.com>
1279
1280         * dwarf2out.c: Move DWARF2 abbreviation glossary closer to the top
1281         of this file.
1282
1283         * c-objc-common.c (c_types_compatible_p): Fix indentation.
1284
1285         * doc/tm.texi (Run-time Target): Capitalise "CPU".
1286         (Exception Handling): Likewise.
1287
1288 2007-07-03  Jan Hubicka  <jh@suse.cz>
1289
1290         * ifcvt.c (find_cond_trap): Avoid invalid RTL sharing.
1291
1292 2007-07-03  Eric Christopher  <echristo@apple.com>
1293
1294         * doc/cppopts.texi: Add conflicting option note to -dM.
1295         * doc/invoke.texi: Add note about possible conflicts with
1296         -E for -dCHARS and note that -dM will not produce
1297         any results if there is no machine dependent reorg.
1298         
1299 2007-07-03  Geoffrey Keating  <geoffk@apple.com>
1300
1301         * tree.h (DECL_ALIGN): Back out previous change.
1302
1303 2007-07-03  Joseph Myers  <joseph@codesourcery.com>
1304
1305         * configure.ac: Test for .dtprelword support on MIPS.
1306         * configure, config.in: Regenerate.
1307         * config/mips/mips.c (mips_output_dwarf_dtprel): New.
1308         (TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
1309
1310 2007-07-03  Julian Brown  <julian@codesourcery.com>
1311
1312         * config.gcc (with_fpu): Allow --with-fpu=vfp3.
1313         * config/arm/aout.h (REGISTER_NAMES): Add D16-D31.
1314         * config/arm/aof.h (REGISTER_NAMES): Add D16-D31.
1315         * config/arm/arm.c (FL_VFPV3): New flag for VFPv3 processor
1316         capability.
1317         (all_fpus): Add FPUTYPE_VFP3.
1318         (fp_model_for_fpu): Add VFPv3 field.
1319         (arm_rtx_costs_1): Give cost to VFPv3 constants.
1320         (vfp3_const_double_index): New function. Return integer index of
1321         VFPv3 constant suitable for fconst[sd] insns, or -1 if constant
1322         isn't suitable.
1323         (vfp3_const_double_rtx): New function. True if VFPv3 is enabled
1324         and argument represents a valid RTX for a VFPv3 constant.
1325         (vfp_output_fldmd): Split fldmd with > 16 registers in the list into
1326         two instructions.
1327         (vfp_emit_fstmd): Similar, for fstmd.
1328         (arm_print_operand): Implement new code 'G' for VFPv3 floating-point
1329         constants, represented as integer indices.
1330         (arm_hard_regno_mode_ok): Use VFP_REGNO_OK_FOR_SINGLE,
1331         VFP_REGNO_OK_FOR_DOUBLE macros.
1332         (arm_regno_class): Handle VFPv3 d0-d7, low, high register split.
1333         (arm_file_start): Set float-abi attribute for VFPv3, and output
1334         correct ".fpu" assembler directive.
1335         (arm_dbx_register_numbering): Add FIXME.
1336         * config/arm/arm.h (TARGET_VFP3): New macro. Target supports VFPv3.
1337         (fputype): Add FPUTYPE_VFP3.
1338         (FIXED_REGISTERS): Add 32 registers for D16-D31.
1339         (CALL_USED_REGISTERS): Likewise.
1340         (CONDITIONAL_REGISTER_USAGE): Add note about conditional definition
1341         of LAST_VFP_REGNUM. Make D16-D31 caller-saved, if present.
1342         (LAST_VFP_REGNUM): Extend available VFP registers for VFPv3.
1343         (D7_VFP_REGNUM): New.
1344         (LAST_LO_VFP_REGNUM, FIRST_HI_VFP_REGNUM, LAST_HI_VFP_REGNUM)
1345         (VFP_REGNO_OK_FOR_SINGLE, VFP_REGNO_OK_FOR_SINGLE)
1346         (VFP_REGNO_OK_FOR_DOUBLE): Define new macros.
1347         (FIRST_PSEUDO_REGISTER): Shift up to 128 to accommodate VFPv3.
1348         (REG_ALLOC_ORDER): Adjust for VFPv3.
1349         (reg_class): Add VFP_D0_D7_REGS, VFP_LO_REGS, VFP_HI_REGS.
1350         (REG_CLASS_NAMES): Add entries corresponding to VFP_D0_D7_REGS,
1351         VFP_LO_REGS, VFP_HI_REGS.
1352         (REG_CLASS_CONTENTS): Likewise. Extend contents for VFP_REGS.
1353         (IS_VFP_CLASS): Define macro.
1354         (SECONDARY_OUTPUT_RELOAD_CLASS, SECONDARY_INPUT_RELOAD_CLASS): Use
1355         IS_VFP_CLASS.
1356         (REGISTER_MOVE_COST): Likewise.
1357         * config/arm/arm-protos.h (vfp3_const_double_rtx): Add prototype.
1358         * config/arm/vfp.md (VFPCC_REGNUM): Redefine as 127.
1359         (*arm_movsi_vfp, *thumb2_movsi_vfp, *movsfcc_vfp)
1360         (*thumb2_movsfcc_vfp, *abssf2_vfp, *negsf2_vfp, *addsf3_vfp)
1361         (*subsf3_vfp, *divsf_vfp, *mulsf_vfp, *mulsf3negsf_vfp)
1362         (*mulsf3addsf_vfp, *mulsf3subsf_vfp, *mulsf3negsfaddsf_vfp)
1363         (*extendsfdf2_vfp, *truncdfsf2_vfp, *truncsisf2_vfp)
1364         (*truncsidf2_vfp, fixuns_truncsfsi2, fixuns_truncdfsi2)
1365         (*floatsisf2_vfp, *floatsidf2_vfp, floatunssisf2)
1366         (floatunssidf2, *sqrtsf2_vfp, *cmpsf_split_vfp)
1367         (*cmpsf_trap_split_vfp, *cmpsf_vfp, *cmpsf_trap_vfp): Use 't'
1368         where appropriate for single-word registers.
1369         (*movsf_vfp, *thumb2_movsf_vfp, *movdf_vfp, *thumb2_movdf_vfp):
1370         As above. Fix type attributes.
1371         * config/arm/constraints.md (register_contraint "t"): Define.
1372         (register_constraint "w"): Change to D0-D15, or D0-D31 for
1373         VFPv3/NEON.
1374         (register_constraint "x"): Define.
1375         (constraint "Dv"): Define.
1376
1377 2007-07-03  Geoffrey Keating  <geoffk@apple.com>
1378
1379         * tree.h (DECL_ALIGN): Prevent use on a FUNCTION_DECL.
1380
1381 2007-07-03  Tom Tromey  <tromey@redhat.com>
1382
1383         * c-parser.c (objc_pq_context): Removed.
1384         (objc_need_raw_identifier): Likewise.
1385         (c_parser) <objc_pq_context>: New field.
1386         <objc_need_raw_identifier>: Likewise.
1387         (OBJC_NEED_RAW_IDENTIFIER): Removed.
1388         (c_lex_one_token): Update.
1389         (c_parser_objc_protocol_definition): Update.
1390         (c_parser_objc_method_definition): Update.
1391         (c_parser_objc_methodproto): Update.
1392         (c_parser_declspecs): Update.
1393
1394 2007-07-03  David Ung  <davidu@mips.com>
1395
1396         * config/mips/mips.c (mips_issue_rate): Return 4 for 74K processors.
1397
1398 2007-07-03  David Ung  <davidu@mips.com>
1399             Richard Sandiford  <richard@codesourcery.com>
1400
1401         * doc/invoke.texi: Document -march=74kf3_2.
1402         * config/mips/mips.h (PROCESSOR_74KF3_2): New processor_type.
1403         (TUNE_74K): Check for it.
1404         * config/mips/mips.c (mips_cpu_info): Add 74kf3_2.
1405         (mips_rtx_cost_data): Add an entry for PROCESSOR_74KF3_2.
1406         * config/mips/mips.md (cpu): Add 74kf3_2.
1407         * config/mips/74k.md (r74k_int_logical, r74k_int_arith, r74k_int_nop)
1408         (r74k_int_cmove, r74k_int_mult, r74k_int_mul3, r74k_int_mfhilo)
1409         (r74k_int_mthilo, r74k_int_div, r74k_int_call, r74k_int_jump)
1410         (r74k_int_load, r74k_int_store, r74k_unknown, r74k_multi): Add
1411         74kf3_2 to the CPU list.
1412         (r74kf3_2_fadd, r74kf3_2_fmove, r74kf3_2_fload, r74kf3_2_fstore)
1413         (r74kf3_2_fmul_sf, r74kf3_2_fmul_df, r74kf3_2_fdiv_sf)
1414         (r74kf3_2_fdiv_df, r74kf3_2_frsqrt_sf, r74kf3_2_frsqrt_df)
1415         (r74kf3_2_fcmp, r74kf3_2_fcvt, r74kf3_2_fxfer_to_c1)
1416         (r74kf3_2_fxfer_from_c1): New insn reservations.
1417
1418 2007-07-03  Richard Sandiford  <richard@codesourcery.com>
1419             David Ung  <davidu@mips.com>
1420
1421         * doc/invoke.texi: Replace -march=24kf with -march=24kf2_1 and
1422         -march=24kx with -march=24kf1_1.  Likewise 24ke[fx], 34k[fx]
1423         and 74k[fx].  Document aliases for the new options.
1424         * config/mips/mips.h (PROCESSOR_24KF): Rename to...
1425         (PROCESSOR_24KF2_1): ...this.
1426         (PROCESSOR_24KX): Rename to...
1427         (PROCESSOR_24KF1_1): ...this.
1428         (PROCESSOR_74KF): Rename to...
1429         (PROCESSOR_74KF2_1): ...this.
1430         (PROCESSOR_74KX): Rename to...
1431         (PROCESSOR_74KF1_1): ...this.
1432         (TUNE_74K): Update PROCESSOR_* names.
1433         * config/mips/mips.c (mips_cpu_info): Add 24kf2_1 as a synonym
1434         for 24kf.  Add 24kf1_1 and 24kfx as synonyms for 24kx.  Likewise
1435         the 24ke*, 34k* and 74k* processors.  Update PROCESSOR_* names.
1436         (mips_rtx_cost_data): Update processor names in comments.
1437         (mips_issue_rate): Update PROCESSOR_* names.
1438         * config/mips/mips.md (cpu): Rename 24kf to 24kf2_1, 24kx to
1439         24kf1_1, 74kf to 74kf2_1 and 74kx to 74kf1_1.
1440         * config/mips/24k.md: Rename FPU-related r24k_* insn reservations
1441         to r24kf2_1_*.  Rename r24kx_* insn reservations to r24kf1_1_*.
1442         Update cpu attribute names.
1443         (r24k_fpu_iss): Rename this reservation to...
1444         (r24kf2_1_fpu_iss): ...this and update all uses.
1445         (r24kx_fpu_iss): Rename this reservation to...
1446         (r24kf1_1_fpu_iss): ...this and update all uses.
1447         * config/mips/74k.md: Rename FPU-related r74kf_* insn reservations
1448         to r74kf2_1_*.  Rename r74kx_* insn reservations to r74kf1_1_*.
1449         Update cpu attribute names.
1450
1451 2007-07-01  Kaz Kojima  <kkojima@gcc.gnu.org>
1452
1453         * config/m32r/constraints.md: New file.
1454         * config/m32r/m32r.c: Include tm-constrs.h.
1455         (small_data_operand): Use satisfies_constraint_* instead of macro.
1456         (addr24_operand, gen_compare): Likewise.
1457         * config/m32r/m32r.h (REG_CLASS_FROM_LETTER): Remove.
1458         (INT8_P, UPPER16_P, UINT32_P, UINT5_P, INVERTED_SIGNED_8BIT,
1459         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
1460         EXTRA_CONSTRAINT): Likewise.
1461         * config/m32r/m32r.md: Include constraints.md.
1462         (*movsi_insn): Use satisfies_constraint_* instead of macro.
1463         (andsi3, iorsi3, xorsi3, seq_insn+1, sne): Likewise.
1464         * config/m32r/predicates.md (conditional_move_operand): Likewise.
1465         (two_insn_const_operand, int8_operand, uint16_operand,
1466         reg_or_int16_operand, reg_or_uint16_operand,
1467         reg_or_cmp_int16_operand, cmp_int16_operand,
1468         seth_add3_operand): Likewise.
1469
1470 2007-07-03  Eric Christopher  <echristo@gmail.com>
1471
1472         * libgcc2.h: Conditionally declare __bswapsi2 and
1473         __bswapdi2.
1474         
1475 2007-07-03  H.J. Lu  <hongjiu.lu@intel.com>
1476
1477         * ddg.c (check_sccs): Define only if ENABLE_CHECKING is
1478         defined.
1479
1480 2007-07-03  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
1481
1482         PR target/28307
1483         * gthr-posix.h [SUPPORTS_WEAK && GTHREAD_USE_WEAK]
1484         (__gthrw_pragma): Provide default definition.
1485         (__gthrw2): Use it.
1486         * gthr-posix.c (__gthrw_pragma): Define.
1487
1488 2007-07-03  Daniel Berlin  <dberlin@dberlin.org>
1489
1490         * tree-ssa-sccvn.c (set_ssa_val_to): Check for operand_equal_p
1491         before declaring inequality.
1492
1493 2007-07-03  Rask Ingemann Lambertsen  <rask@sygehus.dk>
1494
1495         * combine.c (recog_for_combine): Log the success or failure of
1496           matching new insn patterns against the machine description in
1497           detailed dumps.
1498
1499 2007-07-03  Revital Eres  <eres@il.ibm.com>
1500
1501         * ddg.c (print_sccs): New function.
1502         (check_sccs): New function.
1503         (create_ddg_all_sccs): Use it.
1504         * ddg.h (print_sccs): Declare.
1505         * modulo-sched.c (sms_order_nodes): Call print_sccs.
1506
1507 2007-07-03  Uros Bizjak  <ubizjak@gmail.com>
1508
1509         * targhooks.h (default_mode_for_suffix): New function declaration.
1510         * targhooks.c (default_mode_for_suffix): New default target hook.
1511         * target.h (struct c): New structure in the targetm struct.
1512         (mode_for_suffix): New target hook as part of struct c.
1513         target-def.h (TARGET_C_MODE_FOR_SUFFIX): Define as
1514         default_mode_for_suffix.
1515         (TARGET_C): New define.
1516         * c-lex.c: Include "target.h".
1517         (interpret_float): Use targetm.c.mode_for_suffix to determine
1518         the mode for a given non-standard suffix.
1519         Makefile.in (c-lex.o): Depend on $(TARGET_H).
1520
1521         * config/i386/i386.c (ix86_c_mode_for_suffix): New static function.
1522         (TARGET_C_MODE_FOR_SUFFIX): Define to ix86_c_mode_for_suffix.
1523
1524         * doc/extend.texi (Floating Types): New node.  Document __float80 and
1525         __float128 types.  Document 'w', 'W', 'q' and 'Q' suffixes.
1526
1527 2007-07-03  Kaz Kojima  <kkojima@gcc.gnu.org>
1528
1529         PR target/32506
1530         * config/sh/sh.md (udivsi3_i1_media): Use target_reg_operand
1531         predicate instead of target_operand.
1532         (divsi3_i1_media, divsi3_media_2): Likewise.
1533
1534 2007-07-02  Eric Botcazou  <ebotcazou@adacore.com>
1535
1536         * tree.h (alias_sets_might_conflict_p): Rename into
1537         alias_sets_must_conflict_p.
1538         * alias.c (alias_sets_might_conflict_p): Likewise.
1539         (alias_sets_conflict_p): Use it.
1540         (objects_must_conflict_p): Likewise.
1541         * c-common.c (strict_aliasing_warning): Adjust.
1542
1543 2007-07-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1544
1545         * rtlhooks.c (gen_lowpart_if_possible): Check for
1546         invalid subreg before calling gen_lowpart_SUBREG.
1547
1548 2007-07-02  Geoffrey Keating  <geoffk@apple.com>
1549
1550         * config/darwin9.h: Add copyright notice.
1551         (LINK_COMMAND_SPEC): Add comment.
1552         (DARWIN_LIBSYSTEM_HAS_UNWIND): Define.
1553         * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Conditionalise on
1554         DARWIN_LIBSYSTEM_HAS_UNWIND.
1555
1556 2007-07-02  Jakub Jelinek  <jakub@redhat.com>
1557
1558         PR libgomp/32468
1559         * omp-low.c (check_combined_parallel): New function.
1560         (lower_omp_parallel): Call it via walk_stmts, set
1561         OMP_PARALLEL_COMBINED if appropriate.
1562         (determine_parallel_type): If OMP_FOR resp. OMP_SECTIONS
1563         isn't the only statement in WS_ENTRY_BB or OMP_RETURN
1564         the only one in PAR_EXIT_BB and not OMP_PARALLEL_COMBINED,
1565         don't consider it as combined parallel.
1566
1567 2007-07-02  Richard Sandiford  <richard@codesourcery.com>
1568
1569         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
1570         (gcc_tooldir): Likewise.
1571         * configure: Regenerate.
1572         * Makefile.in (libsubdir_to_prefix): New variable, based on the
1573         old configure.ac gcc_tooldir setting.
1574         (prefix_to_exec_prefix): New variable.
1575         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
1576         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
1577
1578 2007-07-02  Daniel Berlin  <dberlin@dberlin.org>
1579
1580         Fix PR tree-optimization/32583
1581         Fix PR tree-optimization/32584
1582         * tree-ssa-pre.c (phi_translate): Always pass seen bitmap.
1583         (phi_translate_set): Use phi_translate directly now.
1584         (make_values_for_stmt): Don't value number RHS if we already know
1585         it is constant.
1586
1587 2007-07-02  Steve Ellcey  <sje@cup.hp.com>
1588             Jim Wilson <wilson@specifix.com>
1589
1590         PR target/31684
1591         * haifa-sched.c (add_to_speculative_block): Change copy_rtx to
1592         copy_insn.
1593
1594 2007-07-02  Sandra Loosemore  <sandra@codesourcery.com>
1595             Richard Sandiford  <richard@codesourcery.com>
1596             Nigel Stephens  <nigel@mips.com>
1597
1598         * config/mips/mips-protos.h (mips16e_save_restore_info): New struct.
1599         (mips16e_output_save_restore): Declare.
1600         (mips16e_save_restore_pattern_p): Likewise.
1601         * config/mips/mips.h (GENERATE_MIPS16E_SAVE_RESTORE): New macro.
1602         * config/mips/mips.c (MIPS_MAX_FIRST_STACK_STEP): Return 0x7f8
1603         for GENERATE_MIPS16E_SAVE_RESTORE.  Return 0x400 for TARGET_MIPS16
1604         && !GENERATE_MIPS16E_SAVE_RESTORE && !TARGET_64BIT.
1605         (BITSET_P): New global macro, extracted from...
1606         (mips_for_each_saved_reg): ...here.
1607         (mips16e_save_restore_info): New struct.
1608         (mips16e_s2_s8_regs, mips16e_a0_a3_regs): New variables.
1609         (mips16e_save_restore_regs): New variable.
1610         (mips_split_plus, mips16e_find_first_register): New functions.
1611         (mips16e_mask_registers): New function.
1612         (compute_frame_size): Expand the commentary before the function.
1613         Enforce the MIPS16e save and restore register range restrictions.
1614         Pad the general register save area at the low end.
1615         (mips16e_save_restore_reg, mips16e_build_save_restore)
1616         (mips16e_save_restore_pattern_p, mips16e_add_register_range)
1617         (mips16e_output_save_restore, mips16e_collect_propagate_value)
1618         (mips16e_collect_argument_save, mips16e_collect_argument_saves):
1619         New functions.
1620         (mips_expand_prologue, mips_expand_epilogue): Handle
1621         GENERATE_MIPS16E_SAVE_RESTORE.
1622         * config/mips/mips.md (*mips16e_save_restore): New pattern.
1623
1624 2007-07-02  Uros Bizjak  <ubizjak@gmail.com>
1625
1626         PR tree-optimization/31966
1627         PR tree-optimization/32533
1628         * tree-if-conv.c (add_to_dst_predicate_list): Use "edge", not
1629         "basic_block" description as its third argument.  Update function
1630         calls to get destination bb from "edge" argument.  Save "cond" into
1631         aux field of the edge.  Update prototype for changed arguments.
1632         (if_convertible_loop_p): Clear aux field of incoming edges if bb
1633         contains phi node.
1634         (find_phi_replacement_condition): Operate on incoming edges, not
1635         on predecessor blocks.  If there is a condition saved in the
1636         incoming edge aux field, AND it with incoming bb predicate.
1637         Return source bb of the first edge.
1638         (clean_predicate_lists): Clean aux field of outgoing node edges.
1639         (tree_if_conversion): Do not initialize cond variable. Move
1640         variable declaration into the loop.
1641         (replace_phi_with_cond_gimple_modify_stmt): Remove unneded
1642         initializations of new_stmt, arg0 and arg1 variables.
1643
1644 2007-07-02  Jakub Jelinek  <jakub@redhat.com>
1645
1646         * tree-nrv.c (dest_safe_for_nrv_p): Grok any handled_component_p,
1647         SSA_NAMEs, RESULT_DECLs and PARM_DECLs.
1648
1649 2007-07-02  Richard Guenther  <rguenther@suse.de>
1650
1651         * tree-ssa.c (useless_type_conversion_p): Document
1652         future intent as defining the middle-end type system.
1653         Re-structure to call langhook last, group by type class,
1654         mark questionable parts.
1655
1656 2007-07-02  Richard Guenther  <rguenther@suse.de>
1657
1658         * tree-flow.h (types_compatible_p): Declare.
1659         * tree-ssa.c (types_compatible_p): New function.
1660         * ipa-type-escape.c (discover_unique_type): Use
1661         types_compatible_p instead of lang_hooks.types_compatible_p.
1662         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Likewise.
1663         * tree-vn.c (expressions_equal_p): Likewise.
1664         * tree.c (fields_compatible_p): Likewise.
1665         * tree-ssa-dom.c (avail_expr_eq): Likewise.
1666         (cprop_operand): Use useless_type_conversion_p instead of
1667         lang_hooks.types_compatible_p.
1668         * tree-inline.c (setup_one_parameter): Likewise.
1669         (declare_return_variable): Likewise.
1670         * tree-nrv.c (tree_nrv): Likewise.
1671         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
1672         (maybe_fold_offset_to_component_ref): Likewise.
1673         (maybe_fold_offset_to_reference): Likewise.
1674         * tree-ssa-copy.c (may_propagate_copy): Likewise.
1675         (merge_alias_info): Likewise.
1676         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise.
1677         * tree-ssa-phiopt.c (conditional_replacement): Likewise.
1678         * tree-ssa-reassoc.c (optimize_ops_list): Likewise.
1679         * tree-tailcall.c (find_tail_calls): Likewise.
1680         * tree-vect-generic.c (expand_vector_operations_1): Likewise.
1681         * gimplify.c (canonicalize_addr_expr): Likewise.
1682         (fold_indirect_ref_rhs): Likewise.
1683         (gimplify_addr_expr): Likewise.  Swap parameters to cpt_same_type.
1684         (cpt_same_type): Likewise.
1685         (check_pointer_types_r): Swap parameters to cpt_same_type
1686         where appropriate.
1687         * fold-const.c (fold_convert): Revert fix for PR15988.
1688         * tree-inline.c (setup_one_parameter): Instead fix it here by
1689         using fold_build1 instead of fold_convert and checking for
1690         error_mark_node.  Convert only if the conversion is necessary.
1691
1692 2007-07-02  Joseph Myers  <joseph@codesourcery.com>
1693
1694         * configure.ac: Check for .gnu_attribute on Power.
1695         * configure: Regenerate.
1696         * config/rs6000/rs6000.c (rs6000_file_start): If supported, output
1697         attribute for floating-point ABI.
1698
1699 2007-07-02  Ira Rosen  <irar@il.ibm.com>
1700
1701         PR tree-optimization/32230
1702         PR tree-optimization/32477
1703         * tree-vect-analyze.c (vect_analyze_data_refs): Fail if base 
1704         address is a constant.
1705
1706 2007-07-02  Richard Sandiford  <richard@codesourcery.com>
1707
1708         * config.gcc (mipsisa32-*-elf*, mipsisa32el-*-elf*)
1709         (mipsisa32r2-*-elf*, mipsisa32r2el-*-elf*)
1710         (mipsisa64-*-elf*, mipsisa64el-*-elf*): Combine top-level
1711         stanzas.  Use the first part of the triplet to set MIPS_ISA_DEFAULT.
1712         Remove redundant setting of MASK_FLOAT64 and MASK_64BIT for the
1713         64-bit targets.  Add support for *-elfoabi*.
1714         * config/mips/t-isa3264 (MULTILIB_OPTIONS, MULTILIB_DIRNAMES): Use
1715         different settings if $(tm_defines) does not select the EABI.
1716         (MULTILIB_EXCLUSIONS): Define in those circumstances.
1717         * config/mips/mips.h (MIPS_ISA_LEVEL_OPTION_SPEC): New macro.
1718         (MIPS_ARCH_OPTION_SPEC): Likewise.
1719         (MIPS_ISA_LEVEL_SPEC): Likewise.
1720         (OPTION_DEFAULT_SPECS): Use MIPS_ARCH_OPTION_SPEC.
1721         * config/mips/elfoabi.h: New file.
1722
1723 2007-07-02  Richard Guenther  <rguenther@suse.de>
1724
1725         * tree-flow.h (tree_ssa_useless_type_conversion_1): Rename to ...
1726         (useless_type_conversion_p): ... this.
1727         * tree-ssa.c (tree_ssa_useless_type_conversion_1): Rename to ...
1728         (useless_type_conversion_p): ... this.
1729         * builtins.c (fold_builtin_memory_op): Rename
1730         tree_ssa_useless_type_conversion_1 to useless_type_conversion_p.
1731         * tree-cfg.c (verify_expr): Likewise.
1732         * tree-ssa-address.c (tree_ssa_useless_type_conversion_1): Likewise.
1733         * tree-ssa-ccp.c (ccp_fold): Likewise.
1734         * tree-ssa-copy.c (may_propagate_copy): Likewise.
1735         * tree-ssa-dom.c (eliminate_redundant_computations): Likewise.
1736         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise.
1737         * tree-ssa-loop-niter.c (refine_bounds_using_guard): Likewise.
1738         * tree-ssa-pre.c (eliminate): Likewise.
1739         * tree-ssa.c (delete_tree_ssa): Likewise.
1740         (tree_ssa_useless_type_conversion): Likewise.
1741         * tree.c (build2_stat): Likewise.
1742
1743 2007-07-01  Daniel Berlin  <dberlin@dberlin.org>
1744
1745         Fix PR tree-optimization/32571
1746         * tree-ssa-sccvn.c (visit_use): Shortcut copies to avoid
1747         simplifying them.
1748
1749 2007-07-01  Daniel Berlin  <dberlin@dberlin.org>
1750
1751         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle constants
1752         and other expected operations explicitly, change default to
1753         gcc_unreachable. 
1754
1755 2007-07-01  Daniel Jacobowitz  <dan@codesourcery.com>
1756
1757         * config/arm/arm.c (arm_cannot_copy_insn_p): Do not expect a
1758         PARALLEL.
1759         * config/arm/arm.md (pic_add_dot_plus_four, pic_add_dot_plus_eight)
1760         (tls_load_dot_plus_eight): Move the label number into the unspec.
1761         * config/arm/thumb2.md (pic_load_dot_plus_four): Likewise.
1762
1763 2007-07-01  Andreas Schwab  <schwab@suse.de>
1764
1765         * dwarf2out.c (initial_return_save): Define only if used.
1766
1767 2007-07-01  Kenneth Zadeck <zadeck@naturalbridge.com>
1768
1769         Unreverting Richard's Revert of:
1770
1771         2007-06-27  Richard Sandiford  <richard@codesourcery.com>
1772
1773         * dce.c (deletable_insn_p_1): New function, split out from...
1774         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
1775         specially, not those inside PARALLELs.  Remove BODY argument
1776         and adjust recursive call accordingly.
1777         (prescan_insns_for_dce): Update call to delete_insn_p.
1778
1779 2007-07-01  Vladimir Yanovsky  <yanov@il.ibm.com>
1780             Revital Eres  <eres@il.ibm.com>
1781
1782         * ddg.c (create_ddg_all_sccs): Fix missed
1783         initialization of scc_nodes.
1784
1785 2007-07-01  Uros Bizjak  <ubizjak@gmail.com>
1786
1787         PR middle-end/32559
1788         * fold-const.c (fold-binary) [PLUS_EXPR]: Convert ~X + X to 1 or
1789         X + ~X to 1 only for INTEGRAL_TYPE_P type.
1790
1791 2007-06-30  Joseph Myers  <joseph@codesourcery.com>
1792
1793         * configure.ac: Check for .gnu_attribute on MIPS.
1794         * configure, config.in: Regenerate.
1795         * config/mips/mips.c (mips_file_start): If supported, output
1796         attribute for floating-point ABI.
1797
1798 2007-06-30  Uros Bizjak  <ubizjak@gmail.com>
1799
1800         PR target/32433
1801         * config/i386/i386.md (ffssi2): Expand as ffs_cmove for TARGET_CMOVE.
1802         (ffs_cmove): New expander to expand using ctz pattern.
1803         (*ffs_cmove): Remove pattern.
1804         (*ffs_no_cmove): Enable only for !TARGET_CMOVE.
1805         (ffsdi2): Expand using ctz pattern.
1806         (*ffs_rex64): Remove pattern.
1807
1808 2007-06-30  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1809
1810         PR rtl-optimization/32296
1811         * pa.md (return): Delete pattern.
1812         (return_internal): Remove "(const_int 1)" from pattern.
1813         (epilogue): Use return_internal pattern for trivial returns.
1814         * pa-protos.h (hppa_can_use_return_insn_p): Delete declaration.
1815         * pa.c (hppa_can_use_return_insn_p): Delete function.  Include "df.h".
1816
1817 2007-06-30  Daniel Berlin  <dberlin@dberlin.org>
1818
1819         * tree-ssa-pre.c (is_exception_related): New function
1820         (can_value_number_operation): Use it.
1821
1822 2007-06-30  Daniel Berlin  <dberlin@dberlin.org>
1823         
1824         Fix PR tree-optimization/32540
1825         Fix PR tree-optimization/31651
1826
1827         * tree-ssa-sccvn.c: New file.
1828
1829         * tree-ssa-sccvn.h: Ditto.
1830         
1831         * tree-vn.c: Include tree-ssa-sccvn.h
1832         (val_expr_paid_d): Removed.
1833         (value_table): Ditto.
1834         (vn_compute): Ditto.
1835         (val_expr_pair_hash): Ditto.
1836         (val_expr_pair_expr_eq): Ditto.
1837         (copy_vuses_from_stmt): Ditto.
1838         (vn_delete): Ditto.
1839         (vn_init): Ditto.
1840         (shared_vuses_from_stmt): Ditto.
1841         (print_creation_to_file): Moved up.
1842         (sort_vuses): Ditto.
1843         (sort_vuses_heap): Ditto.
1844         (set_value_handle): Make non-static.
1845         (make_value_handle): Ditto.
1846         (vn_add): Rewritten to use sccvn lookups.
1847         (vn_add_with_vuses): Ditto.
1848         (vn_lookup): Ditto (and second argument removed).
1849         (vn_lookup_with_vuses): Ditto.
1850         (vn_lookup_or_add): Ditto (and second argument removed);
1851         (vn_lookup_or_add_with_vuses): Ditto.
1852         (vn_lookup_with_stmt): New.
1853         (vn_lookup_or_add_with_stmt): Ditto.
1854         (create_value_handle_for_expr): Ditto.
1855
1856         * tree-ssa-pre.c: Include tree-ssa-sccvn.h.
1857         (seen_during_translate): New function.
1858         (phi_trans_lookup): Use iterative_hash_expr, not vn_compute.
1859         (phi_trans_add): Ditto.
1860         (constant_expr_p): FIELD_DECL is always constant.
1861         (phi_translate_1): Renamed from phi_translate, add seen bitmap.
1862         Use constant_expr_p.
1863         Avoid infinite recursion on mutually valued expressions.
1864         Change callers of vn_lookup_or_add.
1865         (phi_translate): New function.
1866         (compute_antic_safe): Allow phi nodes.
1867         (create_component_ref_by_pieces): Update for FIELD_DECL change.
1868         (find_or_generate_expression): Rewrite slightly.
1869         (create_expression_by_pieces): Updated for vn_lookup_or_add
1870         change.
1871         Update VN_INFO for new names.
1872         (insert_into_preds_of_block): Update for new names.
1873         (add_to_exp_gen): New function.
1874         (add_to_sets): Use vn_lookup_or_add_with_stmt.
1875         (find_existing_value_expr): Rewrite to changed vn_lookup.
1876         (create_value_expr_from): Ditto, and use add_to_exp_gen.
1877         (try_look_through_load): Removed.
1878         (try_combine_conversion): Ditto.
1879         (get_sccvn_value): New function.
1880         (make_values_for_phi): Ditto.
1881         (make_values_for_stmt): Ditto.
1882         (compute_avail): Rewritten for vn_lookup_or_add changes and to use
1883         SCCVN.
1884         (init_pre): Update for SCCVN changes.
1885         (fini_pre): Ditto.
1886         (execute_pre): Ditto.
1887
1888         * tree-flow.h (make_value_handle): Declare.
1889         (set_value_handle): Ditto.
1890         (sort_vuses_heap): Ditto.
1891         (vn_lookup_or_add_with_stmt): Ditto.
1892         (vn_lookup_with_stmt): Ditto.
1893         (vn_compute): Remove.
1894         (vn_init): Ditto.
1895         (vn_delete): Ditto.
1896         (vn_lookup): Update arguments.
1897
1898         * Makefile.in (tree-ssa-pre.o): Add tree-ssa-sccvn.h
1899         (tree-vn.o): Ditto.
1900         (tree-ssa-sccvn.o): New.
1901         (OBJS-common): Add tree-ssa-sccvn.o
1902         
1903 2007-06-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1904
1905         PR c/4076
1906         * c-typeck.c (build_external_ref): Don't mark as used if called
1907         from itself.
1908         * calls.c (rtx_for_function_call): Likewise.
1909         
1910 2007-06-30  Richard Sandiford  <richard@codesourcery.com>
1911
1912         Revert:
1913
1914         2007-06-27  Richard Sandiford  <richard@codesourcery.com>
1915
1916         * dce.c (deletable_insn_p_1): New function, split out from...
1917         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
1918         specially, not those inside PARALLELs.  Remove BODY argument
1919         and adjust recursive call accordingly.
1920         (prescan_insns_for_dce): Update call to delete_insn_p.
1921
1922 2007-06-30  Rask Ingemann Lambertsen <rask@sygehus.dk>
1923
1924         * combine.c (combine_validate_cost): New parameter NEWOTHERPAT.
1925         (try_combine): Move potential calls to undo_all() so they happen
1926         before we commit to using the combined insns.
1927
1928 2006-06-30  Jan Hubicka  <jh@suse.cz>
1929
1930         * loop-unroll.c (unroll_loop_runtime_iterations): Unshare newly emit
1931         code.
1932
1933 2006-06-30  Thomas Neumann  <tneumann@users.sourceforge.net>
1934
1935         * ipa.c (cgraph_postorder): Cast according to the coding conventions.
1936         (cgraph_remove_unreachable_nodes): Likewise.
1937         * ipa-cp.c (ipcp_propagate_stage): Use BOTTOM instead of integer 0.
1938         * ipa-inline.c (update_caller_keys): Cast according to the coding
1939         conventions.
1940         (cgraph_decide_recursive_inlining): Likewise.
1941         (cgraph_decide_inlining_of_small_function): Likewise.
1942         (try_inline): Likewise.
1943         (cgraph_decide_inlining_incrementally): Likewise.
1944         * ipa-pure-const.c (get_function_state): Likewise.
1945         (scan_function): Likewise.
1946         (analyze_function): Likewise.
1947         (static_execute): Likewise.
1948         * gcc/ipa-reference.c (scan_for_static_refs): Likewise.
1949         (merge_callee_local_info): Likewise.
1950         (analyze_function): Use type safe memory macros.
1951         (static_execute): Likewise. Cast according to the coding conventions.
1952         * ipa-type-escape.c (scan_for_regs): Cast according to the coding
1953         conventions.
1954         * ipa-utils.c (searchc): Likewise. Avoid using C++ keywords as variable
1955         names.
1956         (ipa_utils_reduced_inorder): Likewise. Use type safe memory macros.
1957         * ipa-utils.h (struct ipa_dfa_info): Avoid using C++ keywords as
1958         variable names.
1959
1960 2007-06-29  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1961
1962         PR middle-end/30024
1963         * emit-rtl.c (init_emit_once): Intilize const_tiny_rtx[0]
1964         for complex modes (both int and real).
1965
1966 2007-06-29  Jan Hubicka  <jh@suse.cz>
1967
1968         * cse.c: Rever accidentally comitted TODO_verify_rtl_sharing change.
1969
1970 2007-06-29  Jan Hubicka  <jh@suse.cz>
1971
1972         PR middle-end/32372
1973         * cse.c (cse_insn): Avoid invalid sharing in between register note and
1974         the insn pattern.
1975
1976 2007-06-29  Anatoly Sokolov <aesok@post.ru>
1977
1978         PR target/32335
1979         * config/avr/avr.c: Include dataflow header file.
1980         (expand_prologue): Adjust for prologue insn change.
1981         * config/avr/avr.md (call_prologue_saves): Only modify REG_SP once
1982         inside a insn.
1983
1984 2007-06-29  Richard Guenther  <rguenther@suse.de>
1985
1986         PR middle-end/32493
1987         * gimplify.c (gimplify_call_expr): Ignore variable argument parts
1988         during type verification.
1989
1990 2007-06-29  Jan Hubicka  <jh@suse.cz>
1991
1992         * recog.c (validate_change_rtx_1): Unshare TO argument.
1993
1994 2007-06-29  Uros Bizjak  <ubizjak@gmail.com>
1995
1996         PR tree-optimization/24659
1997         * tree-vect-transform.c (vectorizable_call): Handle
1998         (nunits_in == nunits_out / 2) and (nunits_out == nunits_in / 2) cases.
1999
2000         * config/i386/sse.md (vec_pack_sfix_v2df): New expander.
2001         * config/i386/i386.c (enum ix86_builtins)
2002         [IX86_BUILTIN_VEC_PACK_SFIX]: New constant.
2003         (struct bdesc_2arg) [__builtin_ia32_vec_pack_sfix]: New builtin
2004         description.
2005         (ix86_init_mmx_sse_builtins): Define all builtins with 2 arguments as
2006         const using def_builtin_const.
2007         (ix86_expand_binop_builtin): Remove bogus assert() that insn wants
2008         input operands in the same modes as the result.
2009         (ix86_builtin_vectorized_function): Handle BUILT_IN_LRINT.
2010
2011 2007-06-29  Richard Sandiford  <rsandifo@nildram.co.uk>
2012
2013         * df-problems.c (df_set_unused_notes_for_mw): Fix formatting.
2014         (df_set_dead_notes_for_mw): Likewise.
2015
2016 2007-06-29  Eric Botcazou  <ebotcazou@adacore.com>
2017
2018         * c-common.c (pointer_int_sum): Do the negation in sizetype.
2019
2020 2007-06-28  DJ Delorie  <dj@redhat.com>
2021
2022         * config/m32c/m32c.h (OVERRIDE_OPTIONS): Omit unneeded semicolon.
2023
2024 2007-06-28  Geoffrey Keating  <geoffk@apple.com>
2025
2026         * doc/invoke.texi (C++ Dialect Options): Document
2027         fvisibility-ms-compat.
2028         * c.opt (fvisibility-ms-compat): New.
2029
2030 2007-06-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2031
2032         PR tree-opt/32417
2033         * tree-affine.c (aff_combination_add_elt): Handle
2034         pointer addition specially.
2035
2036 2007-06-28  Jakub Jelinek  <jakub@redhat.com>
2037
2038         * config/rs6000/rs6000.c (rs6000_function_ok_for_sibcall): Ensure
2039         decl is non-external for AIX ABI.
2040
2041 2007-06-28  David Edelsohn  <edelsohn@gnu.org>
2042
2043         * config/rs6000/predicates.md (current_file_function_operand):
2044         Ensure the symbol is non-external for AIX ABI.
2045
2046 2007-06-28  Nick Clifton  <nickc@redhat.com>
2047
2048         * common.opt (fipa-matrix-reorg): Add Optimization attribute.
2049         (fdce, fdse, fpredictive-commoning): Likewise.
2050
2051 2007-06-28 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
2052
2053         PR other/31400
2054         * gcc.c (process_command): Recognize the new -static-libgfortran
2055         option.
2056
2057 2007-06-27  Rask Ingemann Lambertsen  <rask@sygehus.dk>
2058
2059         PR target/32418
2060         * config/m32c/m32c.c (m32c_eh_return_stackadj_rtx): Dataflow fix:
2061         Use a call clobbered hard reg instead of a pseudo reg.
2062
2063 2007-06-27  Kaz Kojima  <kkojima@gcc.gnu.org>
2064
2065         * config/sh/sh.md (load_gbr): Use correct operand constraint.
2066
2067 2007-06-27  Kaz Kojima  <kkojima@gcc.gnu.org>
2068
2069         PR target/32479
2070         * config/sh/sh.md (udivsi3): Don't wrap the sequence with
2071         REG_LIBCALL and REG_RETVAL notes.
2072         (divsi3, mulsi3): Likewise.
2073         (mulhisi3): Likewise.  Use emit_libcall_block.
2074         (umulhisi3, smulsi3_highpart, umulsi3_highpart_i): Likewise.
2075
2076 2007-06-27  Seongbae Park  <seongbae.park@gmail.com>
2077
2078         PR rtl-optimization/32481
2079         * combine.c (adjust_for_new_dest): Rescan the changed insn.
2080
2081 2007-06-27  Richard Sandiford  <richard@codesourcery.com>
2082
2083         * dce.c (deletable_insn_p_1): New function, split out from...
2084         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
2085         specially, not those inside PARALLELs.  Remove BODY argument
2086         and adjust recursive call accordingly.
2087         (prescan_insns_for_dce): Update call to delete_insn_p.
2088
2089 2007-06-27  Richard Guenther  <rguenther@suse.de>
2090
2091         PR middle-end/32492
2092         * tree.h (fold_convertible_p): Declare.
2093         * fold-const.c (fold_convertible_p): New function.
2094         * gimplify.c (gimplify_call_expr): Use fold_convertible_p
2095         instead of lang_hooks.types_compatible_p.
2096
2097 2007-06-26  Jan Hubicka  <jh@suse.cz>
2098
2099         * fwprop.c (try_fwprop_subst): Use validate_unshare_change.
2100         * postreload.c (reload_cse_simplify_set): Instead of copying the rtx
2101         early use validate_unshare_change.
2102         (reload_combine): Likewise.
2103         * recog.c (change_t): New field unshare.
2104         (validate_change_1): Rename from validate_change; add argument unshare.
2105         (validate_change): Turn into wrapper of validate_change_1; update
2106         prototype for bools.
2107         (validate_unshare_change): New.
2108         (confirm_change_group): Unshare changes if asked for; avoid unnecesary
2109         calls of df_insn_rescan.
2110         * recog.h (validate_change): Replace ints by bools.
2111         (validate_unshare_change): Declare.
2112
2113 2007-06-26  Kenneth Zadeck <zadeck@naturalbridge.com>
2114
2115         * tree.def (VEC_WIDEN_MULT_LO_EXPR): Corrected string name.
2116         
2117 2007-06-26  Steve Ellcey  <sje@cup.hp.com>
2118
2119         * builtins.c (expand_builtin_next_arg): Change Pmode to ptr_mode.
2120
2121 2007-06-25  Jan Hubicka  <jh@suse.cz>
2122
2123         * ipa-inline.c (cgraph_mark_inline): Assert that we never inline
2124         uninlinable call.
2125         (cgraph_decide_inlining_of_small_function, cgraph_decide_inlining,
2126         cgraph_decide_inlining_incrementally): Move uninlinability checks to
2127         places other call site specific checks are performed.
2128
2129 2007-06-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2130
2131         PR tree-opt/32421
2132         * tree-vect-transform.c (vectorizable_operation): Convert
2133         POINTER_PLUS_EXPR over to PLUS_EXPR.
2134
2135 2007-06-25  Chao-ying Fu  <fu@mips.com>
2136
2137         * doc/rtl.texi (Machine Modes): Document QQ, HQ, SQ, DQ, TQ,
2138         UQQ, UHQ, USQ, UDQ, UTQ, HA, SA, DA, TA, UHA, USA, UDA, and UTAmodes.
2139         Document MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM.
2140         Document GET_MODE_IBIT, and GET_MODE_FBIT.
2141
2142         * machmode.h (VECTOR_MODE_P): Test MODE_VECTOR_FRACT,
2143         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
2144         (SCALAR_FRACT_MODE_P, SCALAR_UFRACT_MODE_P, ALL_SCALAR_FRACT_MODE_P,
2145         SCALAR_ACCUM_MODE_P, SCALAR_UACCUM_MODE_P, ALL_SCALAR_ACCUM_MODE_P,
2146         SIGNED_SCALAR_FIXED_POINT_MODE_P, UNSIGNED_SCALAR_FIXED_POINT_MODE_P,
2147         ALL_SCALAR_FIXED_POINT_MODE_P, FRACT_MODE_P, UFRACT_MODE_P,
2148         ALL_FRACT_MODE_P, ACCUM_MODE_P, UACCUM_MODE_P, ALL_ACCUM_MODE_P,
2149         SIGNED_FIXED_POINT_MODE_P, UNSIGNED_FIXED_POINT_MODE_P,
2150         ALL_FIXED_POINT_MODE_P): New define.
2151         (CLASS_HAS_WIDER_MODES_P): Test MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
2152         MODE_UACCUM.
2153         (GET_MODE_IBIT, GET_MODE_FBIT): New define.
2154
2155         * mode-classes.def (MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM,
2156         MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
2157         MODE_VECTOR_UACCUM): New mode classes.
2158
2159         * machmode.def: Document FRACT_MODE, UFRACT_MODE, ACCUM_MODE,
2160         UACCUM_MODE, ADJUST_IBIT, and ADJUST_FBIT.
2161         Add QQ, HQ, SQ, DQ, TQ, UQQ, UHQ, USQ, UDQ, UTQ, HA, SA, DA, TA, UHA,
2162         USA, UDA, and UTA.
2163
2164         * genmodes.c (struct mode_data): Add ibit and fbit fields.
2165         (blank_mode): Initialize ibit and fbit.
2166         (adj_ibit, adj_fbit): New to adjust ibit and fbit.
2167         (vector_class): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
2168         MODE_UACCUM.
2169         (new_adjust): Change required_class to required_class_from and
2170         required_class_to for testing within a range.
2171         (complete_mode): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
2172         MODE_UACCUM, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
2173         MODE_VECTOR_UACCUM.
2174         (FRACT_MODE, UFRACT_MODE, ACCUM_MODE, UACCUM_MODE): New define.
2175         (make_fixed_point_mode): New.
2176         (_ADD_ADJUST): Change C to C1 and C2.
2177         (ADJUST_BYTESIZE, ADJUST_ALIGNMENT, ADJUST_FLOAT_FORMAT): Change to
2178         use a range for machine classes.
2179         (ADJUST_IBIT, ADJUST_FBIT): New.
2180         (emit_insn_modes_h): Output defines of CONST_MODE_IBIT and
2181         CONST_MODE_FBIT.
2182         (emit_mode_adjustments): Handle MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT,
2183         MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
2184         Emit adjustment for ibit and fbit.
2185         (emit_mode_ibit, emit_mode_fbit): New.
2186         (emit_insn_modes_c): Add emit_mode_ibit and emit_mode_fbit.
2187
2188 2007-06-25  Nathan Froyd  <froydnj@codesourcery.com>
2189
2190         * config/rs6000/spe.md (*frob_ti_tf_2): Specify an input_operand
2191         as the source of the set.
2192
2193 2007-06-25  Roman Zippel <zippel@linux-m68k.org>
2194
2195         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P,
2196         FP_REGNO_P): Use IN_RANGE.
2197         (REGNO_OK_FOR_DATA_P, REGNO_OK_FOR_FP_P): Remove.
2198         (REGNO_OK_FOR_INDEX_NONSTRICT_P, REGNO_OK_FOR_BASE_NONSTRICT_P): New.
2199         (DATA_REG_P): Use DATA_REGNO_P.
2200         (FP_REG_P): Use FP_REGNO_P.
2201         (ADDRESS_REG_P): Use ADDRESS_REGNO_P.
2202         * config/m68k/m68k.c (m68k_legitimate_base_reg_p): Use
2203         REGNO_OK_FOR_INDEX_NONSTRICT_P, REGNO_OK_FOR_BASE_NONSTRICT_P.
2204
2205 2007-06-24  Jan Hubicka  <jh@suse.cz>
2206
2207         PR middle-end/30563
2208         * cgraphunit.c (cgraph_analyze_function): Fix ordering problem.
2209
2210 2007-06-24  Sebastian Pop  <sebpop@gmail.com>
2211
2212         PR middle-end/32461
2213         * fold-const.c (fold_binary): Strip nops of operand 0
2214         of BIT_NOT_EXPR before calling operand_equal_p.
2215         * testsuite/gcc.dg/tree-ssa/pr32461-1.c: New.
2216         * testsuite/gcc.dg/tree-ssa/pr32461-2.c: New.
2217
2218 2007-06-23  Mark Mitchell  <mark@codesourcery.com>
2219
2220         * doc/extend.texi: Document that dllimport and dllexport imply
2221         default visibility.
2222         * tree.c (handle_dll_attribute): Set DECL_VISIBILITY on the
2223         imported or exported declaration, including type declarations.
2224         * c-common.c (handle_visibility_attribute): Check for conflicts
2225         with dllimport/dllexport.
2226         (c_determine_visibility): Handle dllimport/dllexport as an
2227         explicit visibility atttribute.
2228
2229 2007-06-23  Richard Guenther  <rguenther@suse.de>
2230
2231         PR tree-optimization/16876
2232         PR middle-end/29478
2233         * tree.h (CALL_CANNOT_INLINE_P): New macro to access static_flag
2234         for CALL_EXPRs.
2235         * tree-inline.c (initialize_inlined_parameters): Do not call
2236         lang_hooks.tree_inlining.convert_parm_for_inlining.
2237         * cgraphbuild.c (initialize_inline_failed): Set inline failed
2238         reason for mismatched types.
2239         * gimplify.c (gimplify_call_expr): Verify the call expression
2240         arguments match the called function type signature.  Otherwise
2241         mark the call expression to be not considered for inlining
2242         using CALL_CANNOT_INLINE_P flag.
2243         * ipa-inline.c (cgraph_mark_inline): Honor CALL_CANNOT_INLINE_P on the
2244         edges call expression.
2245         (cgraph_decide_inlining_of_small_function): Likewise.
2246         (cgraph_decide_inlining): Likewise.
2247         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING):
2248         Remove define.
2249         * c-tree.h (c_convert_parm_for_inlining): Remove declaration.
2250         * c-typeck.c (c_convert_parm_for_inlining): Remove.
2251         * langhooks-def.h (lhd_tree_inlining_convert_parm_for_inlining):
2252         Remove declaration.
2253         (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING): Remove define.
2254         * langhooks.c (lhd_tree_inlining_convert_parm_for_inlining):
2255         Remove.
2256         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove
2257         convert_parm_for_inlining member.
2258
2259 2007-06-23  Richard Earnshaw  <rearnsha@arm.com>
2260
2261         PR target/31152
2262         * arm.md (negscc): Match the correct operand for optimized LT0 test.
2263         Remove optimization for GT.
2264
2265 2007-06-23  Kenneth Zadeck <zadeck@naturalbridge.com>
2266
2267         PR middle-end/32437
2268         * dce.c (deletable_insn_p): Add extra parameter and recurse if insn
2269         is a PARALLEL.
2270         (prescan_insns_for_dce): Add extra parameter.
2271         
2272 2007-06-23  Jan Hubicka  <jh@suse.cz>
2273
2274         PR middle-end/31541
2275         * gimplify.c (mark_addressable): New function.
2276         (gimplify_modify_expr_rhs, gimplify_addr_expr, gimplify_expr): Use it.
2277
2278 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
2279
2280         PR middle-end/32374
2281         * expr.c (store_constructor): Do not clobber non-zeroed memory. 
2282
2283 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
2284
2285         PR target/32413
2286         * config/i386/i386.c (ix86_register_move_cost): Rise the cost of
2287         moves between MMX/SSE registers to at least 8 units to prevent
2288         ICE caused by non-tieable SI/HI/QImodes in SSE registers. 
2289
2290 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
2291
2292         * config/i386/i386.c (override_options): Correct x86_sahf
2293         setting condition.
2294
2295 2007-06-21  David Daney  <ddaney@avtrex.com>
2296
2297         PR target/32406
2298         * config/mips/mips.md (define_constants): Rename UNSPEC_EH_RECEIVER
2299         to UNSPEC_NONLOCAL_GOTO_RECEIVER globally.
2300         (exception_receiver): Renamed to ...
2301         (nonlocal_goto_receiver): ... this.
2302
2303 2007-06-22  Roman Zippel <zippel@linux-m68k.org>
2304
2305         * df-scan.c (df_read_modify_subreg_p): Use REGMODE_NATURAL_SIZE.
2306         (df_def_record_1): Set (DF_REF_READ_WRITE | DF_REF_PARTIAL) for
2307         partial register accesses.
2308
2309 2007-06-21  Adam Nemet  <anemet@caviumnetworks.com>
2310
2311         * fold-const.c (debug_fold_checksum): Move it under
2312         ENABLE_FOLD_CHECKING.
2313
2314 2007-06-21  Sebastian Pop  <sebpop@gmail.com>
2315
2316         PR middle-end/20623
2317         * tree.h (debug_fold_checksum): Declared.
2318         * fold-const.c (build_fold_addr_expr_with_type_1): New.
2319         (build_fold_addr_expr_with_type, build_fold_addr_expr): Use 
2320         build_fold_addr_expr_with_type_1.
2321         (fold_addr_expr, debug_fold_checksum): New.
2322         (fold_checksum_tree): Don't fold TREE_CHAIN of an SSA_NAME.
2323         (fold_unary, fold_comparison, split_address_to_core_and_offset):
2324         Use fold_addr_expr.
2325         
2326 2007-06-21  Sebastian Pop  <sebpop@gmail.com>
2327
2328         PR tree-optimization/19590
2329         * tree-vrp.c (adjust_range_with_scev): Set the range when the result
2330         of scev is a constant.
2331         * gcc/testsuite/gcc.dg/tree-ssa/pr19590.c: New.
2332
2333 2007-06-21  Kenneth Zadeck <zadeck@naturalbridge.com>
2334
2335         * df-problems.c (df_note_bb_compute): Made computation of live
2336         info consistent with df_lr.
2337
2338 2007-06-21  Richard Guenther  <rguenther@suse.de>
2339
2340         PR tree-optimization/32453
2341         * tree-vrp.c (extract_range_from_assert): Build POINTER_PLUS_EXPR
2342         for pointer anti-range.
2343
2344 2007-06-21  H.J. Lu  <hongjiu.lu@intel.com>
2345
2346         * config/i386/i386.c (processor_target_table): Increase maximum
2347         skip from 7 byte to 10 byte for Pentium Pro, Core 2 Duo and
2348         default 64bit.
2349
2350         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Ensure 8
2351         byte alignment if > 8 byte alignment is preferred.
2352         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
2353
2354 2007-06-21  Jakub Jelinek  <jakub@redhat.com>
2355
2356         PR tree-optimization/31866
2357         * tree-ssa-coalesce.c (create_outofssa_var_map): Do nothing
2358         if ASM_EXPR's input is not a SSA_NAME.
2359
2360         PR middle-end/32362
2361         * omp-low.c (lookup_decl_in_outer_ctx): Don't ICE if t is NULL,
2362         but decl is a global var, instead return decl.
2363         * gimplify.c (gimplify_adjust_omp_clauses_1): Add shared clauses
2364         even for is_global_var decls, if they are private in some outer
2365         context.
2366
2367 2007-06-21  Richard Guenther  <rguenther@suse.de>
2368
2369         PR tree-optimization/32451
2370         * tree-ssa-threadupdate.c (thread_single_edge): Fixup edge flags.
2371
2372 2007-06-21  Christian Bruel  <christian.bruel@st.com>
2373
2374         * config/sh/sh-protos.h (sh_loads_bankedreg_p): Declare.
2375         * config/sh/sh.c (sh_loads_bankedreg_p): New function.
2376         (push_regs): Changed saving order or banked registers.
2377         (sh_expand_epilogue): Likewise.
2378         * config/sh/sh.h (BANKED_REGISTER_P): New macro.
2379         (FIRST_BANKED_REG): Likewise.
2380         (LAST_BANKED_REG): Likewise.
2381         * config/sh/sh.md (banked) New attribute.
2382         (in_delay_slot): Check banked attribute.
2383         
2384 2007-06-20  Sebastian Pop  <sebpop@gmail.com>
2385
2386         PR tree-optimization/32075
2387         * tree-data-ref.c (subscript_dependence_tester_1, 
2388         analyze_miv_subscript, analyze_overlapping_iterations,
2389         add_distance_for_zero_overlaps, build_classic_dist_vector,
2390         subscript_dependence_tester_1, analyze_overlapping_iterations,
2391         subscript_dependence_tester, access_functions_are_affine_or_constant_p,
2392         compute_affine_dependence, compute_all_dependences): Pass loop_nest 
2393         to evolution_function_is_affine_multivariate_p.
2394
2395 2007-06-20  Eric Botcazou  <ebotcazou@libertysurf.fr>
2396
2397         * df-scan.c (df_get_call_refs): Be prepared for MEMs inside CLOBBERs.
2398
2399 2007-06-20  Rask Ingemann Lambertsen  <rask@sygehus.dk>
2400
2401         PR target/32335
2402         * config/m32c/m32c.c (m32c_emit_epilogue): Use new HImode epilogue
2403         for TARGET_A16.
2404         * config/m32c/prologue.md (epilogue_exitd_16): New.
2405         (epilogue_reit_16): New.
2406         (epilogue_exitd): Rename to epilogue_exitd_24.
2407         (epilogue_reit): Rename to epilogue_reit_24.
2408
2409 2007-06-20  Seongbae Park  <seongbae.park@gmail.com>
2410             Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
2411
2412         * dbgcnt.def (global_alloc_at_func, global_alloc_at_reg):
2413         New counters.
2414         * haifa-sched.c (queue_to_ready): Don't requeue next insn
2415         if dbg_cnt (sched_insn) reaches the limit.
2416         (choose_ready): New parameter INSN_PTR and new return value.
2417         (schedule_block): Handle dbg_cnt (sched_insn). Handle
2418         the new return value from choose_ready.
2419         * global.c (global_aloc): New dbgcnt global_alloc_at_reg.
2420         (rest_of_handle_global_alloc): New global_alloc_at_func.
2421
2422 2007-06-20  Adam Nemet  <anemet@caviumnetworks.com>
2423
2424         PR tree-optimization/25737
2425         * tree.h (struct tree_struct_field_tag): Add new field alias_set.
2426         (SFT_NONADDRESSABLE_P, SFT_ALIAS_SET): New macros.
2427         * tree-flow.h (struct fieldoff): Add new field alias_set.
2428         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Add new
2429         argument addressable_type.  Set alias_set of fieldoff.
2430         * tree-ssa-alias.c (create_sft): Add new argument alias_set.
2431         (create_overlap_variables_for): Pass alias_set from fieldoff to
2432         create_sft.
2433         * alias.c (get_alias_set): Use alias_set from SFT if set.
2434
2435 2007-06-20  Hui-May Chang  <hm.chang@apple.com>
2436
2437         * config/i386/darwin.h (ASM_OUTPUT_COMMON): Print the size
2438         of a variable as an unsigned HOST_WIDE_INT integer.
2439
2440 2007-06-20  Zdenek Dvorak  <dvorakz@suse.cz>
2441
2442         PR rtl-optimization/32405
2443         * loop-iv.c (iv_get_reaching_def): Fail for partial defs.
2444
2445 2007-06-20  Jakub Jelinek  <jakub@redhat.com>
2446
2447         * Makefile.in (omega.o): Depend on $(DIAGNOSTIC_H).
2448
2449         PR middle-end/31959
2450         * builtins.c: Include diagnostic.h.
2451         (expand_builtin_expect): Make gcc_assert more permissive.
2452         * Makefile.in (builtins.o): Depend on $(DIAGNOSTIC_H).
2453
2454         PR inline-asm/32109
2455         * gimplify.c (gimplify_asm_expr): Issue error if type is addressable
2456         and !allows_mem.
2457
2458         PR middle-end/32285
2459         * calls.c (precompute_arguments): Also precompute CALL_EXPR arguments
2460         if ACCUMULATE_OUTGOING_ARGS.
2461
2462 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
2463
2464         * config/m68hc11/m68hc11.c: Include dataflow header file.
2465         (m68hc11_reorg): Port to dataflow.
2466
2467 2007-06-19  Kenneth Zadeck <zadeck@naturalbridge.com>
2468
2469         * df.h (DF_FIRST_OPTIONAL_PROBLEM): Removed.
2470         (struct df_problem.free_blocks_on_set_blocks): New field.
2471         (struct dataflow.optional_p): New field.
2472         (df_bb_regno_last_use_find, df_insn_regno_def_p): Removed.
2473         (df_live_set_all_dirty): New function.
2474         * df-scan.c (df_scan_alloc): Initialize optional_p.
2475         (problem_SCAN): Initialize free_blocks_on_set_blocks.
2476         * df-core.c (df_set_blocks): Removed use of
2477         DF_FIRST_OPTIONAL_PROBLEM.  Now uses
2478         df_problem.free_blocks_on_set_blocks to determine which blocks are
2479         recycled.
2480         (df_remove_problem): Removed use of DF_FIRST_OPTIONAL_PROBLEM.
2481         (df_finish_pass): Removed use of DF_FIRST_OPTIONAL_PROBLEM.  Now
2482         uses dataflow.optional_p to determine if problem should be
2483         deleted.
2484         (rest_of_handle_df_initialize): Only start live problem if 
2485         -02 or above.
2486         (df_bb_regno_last_use_find, df_insn_regno_def_p): Removed.
2487         * df-problems.c (df_ru_alloc, df_rd_alloc, df_lr_alloc,
2488         df_live_alloc, df_urec_alloc, df_note_alloc): set optional_p.
2489         (problem_RU, problem_RD, problem_LR, problem_UREC, problem_CHAIN,
2490         problem_NOTE):  Initialize free_blocks_on_set_blocks.
2491         (df_lr_bb_local_compute): Recompute luids if df_live problem is
2492         not active.
2493         (df_live_set_all_dirty, df_note_alloc): New function.
2494         * regrename.c (merge_overlapping_regs): Change DF_LIVE_* to
2495         df_get_live_*.
2496         * sched_ebb.c (compute_jump_reg_dependencies): Ditto.
2497         * postreload.c (reload_combine): Ditto.
2498         * cse.c (cse_extended_basic_block): Ditto.
2499         * regmove.c (mark_flags_life_zones): Ditto.
2500         * rtlfactoring.c (split_blocks_after_seqs, split_pattern_seq,
2501         erase_matching_seqs): Ditto.
2502         * bt-load.c (compute_defs_uses_and_gen): Ditto.
2503         * integrate (allocate_initial_values): Ditto.
2504         * combine.c (reg_dead_at_p): Ditto.
2505         * resource.c (mark_target_live_regs): Ditto.
2506         * sched-rgn.c (check_live_1, update_live_1): Ditto.
2507         * config/sh/sh.c (find_r0_life_regions): Ditto.
2508         * global.c (rest_of_handle_global_alloc): Only add back df_live
2509         for -O > 1.
2510         * local-alloc.c (rest_of_handle_local_alloc): Only remove
2511         df_live for -O > 1.
2512         * ifcvt.c (dead_or_predicable): Change DF_LIVE_* to
2513         df_get_live_*.
2514         (if_convert): Make sure df_live is there at -O == 1.
2515         (pass_if_after_combine): Cleanup flags.
2516         * init-regs.c (initialize_uninitialized_regs): Make sure df_live
2517         is there at -O == 1.
2518         
2519 2007-06-19  Seongbae Park  <seongbae.park@gmail.com>
2520
2521         * config/arm/arm.c (arm_get_frame_offsets): Set
2522         offsets->locals_base to avoid negative stack size.
2523         (thumb1_expand_prologue): Assert on negative stack size.
2524
2525 2007-04-19  Sebastian Pop  <sebpop@gmail.com>
2526
2527         PR tree-optimization/32367
2528         * tree-chrec.h (build_polynomial_chrec): Verify that the left hand side 
2529         of the chrec has no evolution in that loop.
2530         * testsuite/gcc.dg/tree-ssa/pr32367.c: New.
2531
2532 2007-06-19  Bob Wilson  <bob.wilson@acm.org>
2533
2534         * config/xtensa/xtensa.c: Include "df.h".
2535         (xtensa_builtin_saveregs): Use adjust_address instead of
2536         change_address.
2537         (xtensa_va_start): Invoke make_tree with sizetype for
2538         expand_builtin_saveregs and then convert the result to a pointer.
2539         Use POINTER_PLUS_EXPR.  Use size_int instead of build_int_cst.
2540         (xtensa_gimplify_va_arg_expr): Use size_int instead of build_int_cst.
2541         Subtract argument size from index value as integers and then use
2542         POINTER_PLUS_EXPR to add the result to the array address.
2543         
2544 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
2545
2546         PR target/32335
2547         * config/m32c/m32c.c: Include dataflow header file.
2548         (m32c_emit_prologue): Adjust for prologue insn change.
2549         * config/m32c/prologue.md (prologue_enter_16): Only modify SP_REGNO
2550         once inside a PARALLEL. Assume frame size passed in operand 0
2551         includes space to save the fb register.
2552         (prologue_enter_24): Likewise.
2553         (epilogue_exitd): Only modify SP_REGNO once inside a PARALLEL.
2554
2555 2007-06-19  David Daney  <ddaney@avtrex.com
2556
2557         PR target/32313
2558         * config/mips/mips.md (cprestore): Mark $gp as used.
2559
2560 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
2561
2562         PR target/32369
2563         * config/frv/frv.c (frv_ifcvt_modify_tests): Dataflow merge fix.
2564         (frv_ifcvt_modify_insn): Likewise.
2565
2566 2007-06-19  Richard Guenther  <rguenther@suse.de>
2567
2568         * tree-ssa-structalias.c (handle_ptr_arith): Make sure to
2569         only handle positive offsets that fit in a HOST_WIDE_INT.
2570
2571 2007-06-19  Uros Bizjak  <ubizjak@gmail.com>
2572
2573         * config/i386/i386.c (ix86_emit_swsqrtsf): Filter out infinity
2574         result of rsqrt insn for zero input argument to avoid NaN.
2575
2576 2007-06-19  Richard Guenther  <rguenther@suse.de>
2577
2578         PR middle-end/31950
2579         * tree-ssa-alias-warnings.c (ffan_walker): Punt on MTAGs.
2580
2581 2007-06-19  Jakub Jelinek  <jakub@redhat.com>
2582
2583         PR tree-optimization/32353
2584         * tree-ssa-structalias.c (set_uids_in_ptset): Also handle RESULT_DECL.
2585
2586 2007-06-19  Nick Clifton  <nickc@redhat.com>
2587
2588         * config/m32r/linux.h (LIB_SPEC): Always imply -lpthread for -pthread.
2589
2590 2007-06-18  Uros Bizjak  <ubizjak@gmail.com>
2591
2592         PR target/32389
2593         * config/i386/i386.h (enum ix86_stack_slot): Add SLOT_VIRTUAL.
2594         * config/i386/i386.c (assign_386_stack_local): Assert that
2595         SLOT_VIRTUAL is valid only before virtual regs are instantiated.
2596         (ix86_expand_builtin) [IX86_BUILTIN_LDMXCSR, IX86_BUILTIN_STMXCSR]:
2597         Use SLOT_VIRTUAL stack slot instead of SLOT_TEMP.
2598         * config/i386/i386.md (truncdfsf2, truncxf<mode>2): Ditto.
2599
2600 2007-06-18  Steve Ellcey  <sje@cup.hp.com>
2601
2602         * config/ia64/ia64.h (LIBGCC2_TF_CEXT): New.
2603
2604 2007-06-18  Seongbae Park  <seongbae.park@gmail.com>
2605
2606         PR rtl-optimization/32321
2607         * gcse.c (replace_store_insn): Update the note before
2608         calling emit_insn_after.
2609
2610 2007-06-18  Kenneth Zadeck <zadeck@naturalbridge.com>
2611
2612         PR middle-end/32355
2613         * gcse (rest_of_handle_gcse): Add call to df_finish_pass after
2614         cse_main.
2615         * df-problems.c (df_note_bb_compute): Fix dumping info.
2616         
2617 2007-06-18  Kazu Hirata  <kazu@codesourcery.com>
2618
2619         * config/m68k/m68k.c (m68k_expand_epilogue): Emit a return
2620         insn with emit_jump_insn.
2621
2622 2007-06-18  Uros Bizjak  <ubizjak@gmail.com>
2623
2624         PR tree-optimization/32383
2625         * targhooks.c (default_builtin_reciprocal): Add new bool argument.
2626         * targhooks.h (default_builtin_reciprocal): Update prototype.
2627         * target.h (struct gcc_target): Update builtin_reciprocal.
2628         * doc/tm.texi (TARGET_BUILTIN_RECIPROCAL): Update description.
2629         * tree-ssa-math-opts (execute_cse_reciprocals): Skip statements
2630         where arg1 is not SSA_NAME.  Pass true to targetm.builtin_reciprocal
2631         when fndecl is in BUILT_IN_MD class.
2632         (execute_convert_to_rsqrt): Ditto.
2633
2634         * config/i386/i386.c (ix86_builtin_reciprocal): Update for new bool
2635         argument.  Convert IX86_BUILTIN_SQRTPS code only when md_fn is true.
2636         Convert BUILT_IN_SQRTF code only  when md_fn is false.
2637
2638 2007-06-18  Kaz Kojima  <kkojima@gcc.gnu.org>
2639
2640         * bt-load.c (move_btr_def): Fix the order of arguments
2641         to validate_replace_rtx.
2642
2643 2007-06-18  Nathan Sidwell  <nathan@codesourcery.com>
2644
2645         * config/m68k/m68k-devices.def: Add 54450..54455.
2646
2647 2007-06-17  Uros Bizjak  <ubizjak@gmail.com>
2648
2649         PR rtl-optimization/32366
2650         * simplify-rtx.c (simplify_unary_operation_1) [FLOAT_TRUNCATE,
2651         FLOAT_EXTEND]: Prevent non-scalar modes from entering
2652         significand_size.
2653
2654 2007-06-17  Kenneth Zadeck <zadeck@naturalbridge.com>
2655
2656         PR middle-end/32349
2657         * modulo-sched (generate_reg_moves): Added rescan parameter and if
2658         this is true, rescan insn being modified.
2659         (sms_schedule): Added rescan parameter.
2660         (rest_of_handle_sms): Moved freeing of dominance info to before
2661         getting out of cfg_layout.
2662         
2663 2007-06-17  Nathan Sidwell  <nathan@codesourcery.com>
2664
2665         * config/m68k/m68k.h (ISA_HAS_FF1, ISA_HAS_MVS_MVZ): New.
2666         * config/m68k/m68k.md: Use ISA_HAS_FF1 and ISA_HAS_MVS_MVZ as
2667         appropriate.
2668
2669         * config/m68k/m68k.c (all_isas): Remove FL_CF_FPU and
2670         FL_CF_EMAC from the entry for isac.
2671
2672         * config/m68k/predicates.md (const_call_operand): Adjust comment.
2673         (const_sibcall_operand): New.
2674         (sibcall_operand): Use it.
2675         * config/m68k/m68k.c (FL_FOR_isa_c): Not ISA_B compatible.
2676         (m68k_isas): ISAC does not imply FPU or EMAC.
2677         (override_options): Add ISA_C logic for symbolic jump & call.
2678
2679 2007-06-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
2680
2681         * config/sparc/sparc.c (sparc_vis_init_builtins): Retrieve the
2682         return mode from the builtin itself.
2683         (sparc_fold_builtin): Fix cast of zero constant.
2684
2685 2007-06-16  Uros Bizjak  <ubizjak@gmail.com>
2686
2687         * targhooks.c (default_builtin_reciprocal): New default target hook.
2688         * targhooks.h (default_builtin_reciprocal): Add prototype.
2689         * hooks.c (hook_tree_tree_bool_null): Remove hook.
2690         * hooks.h (hook_tree_tree_bool_null): Remove prototype.
2691         * target-def.h (TARGET_BUILTIN_RECIPROCAL): Define as
2692         default_builtin_reciprocal.
2693
2694 2007-06-16  Uros Bizjak  <ubizjak@gmail.com>
2695
2696         PR middle-end/31723
2697         * hooks.c (hook_tree_tree_bool_null): New hook.
2698         * hooks.h (hook_tree_tree_bool_null): Add prototype.
2699         * tree-pass.h (pass_convert_to_rsqrt): Declare.
2700         * passes.c (init_optimization_passes): Add pass_convert_to_rsqrt.
2701         * tree-ssa-math-opts.c (execute_cse_reciprocals): Scan for a/func(b)
2702         and convert it to reciprocal a*rfunc(b).
2703         (execute_convert_to_rsqrt): New function.
2704         (gate_convert_to_rsqrt): New function.
2705         (pass_convert_to_rsqrt): New pass definition.
2706         * target.h (struct gcc_target): Add builtin_reciprocal.
2707         * target-def.h (TARGET_BUILTIN_RECIPROCAL): New define.
2708         (TARGET_INITIALIZER): Initialize builtin_reciprocal with
2709         TARGET_BUILTIN_RECIPROCAL.
2710         * doc/tm.texi (TARGET_BUILTIN_RECIPROCAL): Document.
2711
2712         * config/i386/i386.h (TARGET_RECIP): New define.
2713         * config/i386/i386.md (divsf3): Expand by calling ix86_emit_swdivsf
2714         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
2715         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
2716         and not optimizing for size.
2717         (*rcpsf2_sse): New insn pattern.
2718         (*rsqrtsf2_sse): Ditto.
2719         (rsqrtsf2): New expander.  Expand by calling ix86_emit_swsqrtsf
2720         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
2721         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
2722         and not optimizing for size.
2723         (sqrt<mode>2): Expand SFmode operands by calling ix86_emit_swsqrtsf
2724         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
2725         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
2726         and not optimizing for size.
2727         * config/i386/sse.md (divv4sf): Expand by calling ix86_emit_swdivsf
2728         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
2729         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
2730         and not optimizing for size.
2731         (*sse_rsqrtv4sf2): Do not export.
2732         (sqrtv4sf2): Ditto.
2733         (sse_rsqrtv4sf2): New expander.  Expand by calling ix86_emit_swsqrtsf
2734         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
2735         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
2736         and not optimizing for size.
2737         (sqrtv4sf2): Ditto.
2738         * config/i386/i386.opt (mrecip): New option.
2739         * config/i386/i386-protos.h (ix86_emit_swdivsf): Declare.
2740         (ix86_emit_swsqrtsf): Ditto.
2741         * config/i386/i386.c (IX86_BUILTIN_RSQRTF): New constant.
2742         (ix86_init_mmx_sse_builtins): __builtin_ia32_rsqrtf: New
2743         builtin definition.
2744         (ix86_expand_builtin): Expand IX86_BUILTIN_RSQRTF using
2745         ix86_expand_unop1_builtin.
2746         (ix86_emit_swdivsf): New function.
2747         (ix86_emit_swsqrtsf): Ditto.
2748         (ix86_builtin_reciprocal): New function.
2749         (TARGET_BUILTIN_RECIPROCAL): Use it.
2750         (ix86_vectorize_builtin_conversion): Rename from
2751         ix86_builtin_conversion.
2752         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Use renamed function.
2753         * doc/invoke.texi (Machine Dependent Options): Add -mrecip to
2754         "i386 and x86_64 Options" section.
2755         (Intel 386 and AMD x86_64 Options): Document -mrecip.
2756
2757 2007-06-15  Andrew Pinski <andrew_pinski@playstation.sony.com>
2758             Zdenek Dvorak <dvorakz@suse.cz>
2759             Richard Guenther  <rguenther@suse.de>
2760             Kaz Kojima  <kkojima@gcc.gnu.org>
2761
2762         * tree-vrp.c (compare_values_warnv): Convert val2 to
2763         the type of val1.
2764         (extract_range_from_assert): Create
2765         POINTER_PLUS_EXPR for pointer types.
2766         (extract_range_from_binary_expr): Handle
2767         only POINTER_PLUS_EXPR, MIN_EXPR, and MAX_EXPR
2768         for pointer types.
2769         * doc/c-tree.texi (POINTER_PLUS_EXPR): Document.
2770         * tree-ssa-loop-niter.c (split_to_var_and_offset): Handle
2771         POINTER_PLUS_EXPR as PLUS_EXPR.
2772         (number_of_iterations_lt_to_ne):
2773         For pointer types, use sizetype when
2774         creating MINUS_EXPR/PLUS_EXPRs.
2775         (assert_loop_rolls_lt): For pointer types, use sizetype when
2776         creating MINUS_EXPR/PLUS_EXPRs.
2777         (number_of_iterations_le): Likewise.
2778         (expand_simple_operations): POINTER_PLUS_EXPR are simple also.
2779         (derive_constant_upper_bound): Handle POINTER_PLUS_EXPR just
2780         like PLUS_EXPR and MINUS_EXPR.
2781         * tree-pretty-print.c (dump_generic_node): Handle
2782         POINTER_PLUS_EXPR.
2783         (op_prio): Likewise.
2784         (op_symbol_1): Likewise.
2785         * optabs.c (optab_for_tree_code): Likewise.
2786         * tree-ssa-loop-manip.c (create_iv): Handle pointer base
2787         specially.
2788         * tree-tailcall.c (process_assignment): Mention
2789         POINTER_PLUS_EXPR in a TODO comment.
2790         * tree.c (build2_stat): Assert when trying to use PLUS_EXPR or 
2791         MINUS_EXPR with a pointer. Also assert for POINTER_PLUS_EXPR
2792         not used with a pointer and an integer type.
2793         * tree-scalar-evolution.c (add_to_evolution_1): Convert the
2794         increment using chrec_convert_rhs instead of chrec_convert.
2795         (follow_ssa_edge_in_rhs): Handle POINTER_PLUS_EXPR like
2796         PLUS_EXPR except for the right hand side's type will be
2797         sizetype.
2798         (interpret_rhs_modify_stmt): Handle POINTER_PLUS_EXPR.
2799         (fold_used_pointer_cast): Kill.
2800         (pointer_offset_p): Kill.
2801         (fold_used_pointer): Kill.
2802         (pointer_used_p): Kill.
2803         (analyze_scalar_evolution_1 <case GIMPLE_MODIFY_STMT>): Don't
2804         call fold_used_pointer.
2805         (instantiate_parameters_1): Convert the increment
2806         using chrec_convert_rhs instead of chrec_convert.
2807         Handle POINTER_PLUS_EXPR as PLUS_EXPR.
2808         * builtins.c (get_pointer_alignment): Handle POINTER_PLUS_EXPR
2809         instead of PLUS_EXPR.
2810         (expand_builtin_strcat): Create a POINTER_PLUS_EXPR instead of
2811         PLUS_EXPR for pointers.
2812         (std_gimplify_va_arg_expr): Likewise.
2813         (fold_builtin_memory_op): Likewise.
2814         (fold_builtin_strstr): Likewise.
2815         (fold_builtin_strchr): Likewise.
2816         (fold_builtin_strrchr): Likewise.
2817         (fold_builtin_strpbrk): Likewise.
2818         (expand_builtin_memory_chk): Likewise.
2819         (fold_builtin_memory_chk): Likewise.
2820         (std_expand_builtin_va_start): Use
2821         sizetype for the call to make_tree and then convert
2822         to the pointer type.
2823         (fold_builtin_memchr): Use POINTER_PLUS_EXPR
2824         instead of PLUS_EXPR for adding to a pointer.
2825         (std_gimplify_va_arg_expr): Use fold_build2 for
2826         the creating of POINTER_PLUS_EXPR.  For the BIT_AND_EXPR, cast
2827         the operands to sizetype first and then cast the BIT_AND_EXPR
2828         back to the pointer type.
2829         * fold-const.c (build_range_check): Handle pointer types
2830         specially.
2831         (extract_array_ref): Look for POINTER_PLUS_EXPR instead
2832         of PLUS_EXPR's. Make sure the offset is converted to
2833         sizetype.
2834         (try_move_mult_to_index): Strip the NOPs from the offset.
2835         Remove code argument and replace all uses with PLUS_EXPR.
2836         (fold_to_nonsharp_ineq_using_bound): Handle pointer types
2837         specially. Don't use a pointer type for MINUS_EXPR.
2838         (fold_unary): Handle for (T1)(X op Y),
2839         only p+ as that is the only as that can be handled for
2840         binary operators now.
2841         (fold_binary <case POINTER_PLUS_EXPR>): Add folding of
2842         POINTER_PLUS_EXPR.
2843         <case PLUS_EXPR>: Add folding of PTR+INT into
2844         PTR p+ INT.
2845         Don't call try_move_mult_to_index.
2846         <case MINUS_EXPR>: Fold (PTR0 p+ A) - (PTR1 p+ B)
2847         into (PTR0 - PTR1) + (A - B). Fold (PTR0 p+ A) - PTR1 into
2848         (PTR0 - PTR1) + A iff (PTR0 - PTR1) simplifies.
2849         Don't call try_move_mult_to_index.
2850         (tree_expr_nonnegative_warnv_p): Handle POINTER_PLUS_EXPR.
2851         (tree_expr_nonzero_p): Likewise.
2852         (fold_indirect_ref_1): Look at POINTER_PLUS_EXPR instead
2853         of PLUS_EXPR for the complex expression folding.
2854         * tree-chrec.c (chrec_fold_plus_poly_poly): If the
2855         first chrec is a pointer type, then the second should
2856         be sizetype and not the first's type.
2857         For POINTER_PLUS_EXPR, use a different right hand side type.
2858         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
2859         (chrec_fold_plus_1): For POINTER_PLUS_EXPR, use a
2860         different right hand side type.
2861         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
2862         (chrec_fold_plus): For pointer types, use POINTER_PLUS_EXPR
2863         instead of PLUS_EXPR.
2864         When either operand is zero, convert the other operand.
2865         (chrec_apply): Use chrec_convert_rhs
2866         on the argument x instead of chrec_convert.
2867         (reset_evolution_in_loop): For pointer types, the new_evol
2868         should be sizetype.
2869         (convert_affine_scev): For POINTER_PLUS_EXPR, use a
2870         different right hand side type.
2871         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
2872         (chrec_convert_rhs): New function.
2873         (chrec_convert_aggressive): For POINTER_PLUS_EXPR, use a
2874         different right hand side type.
2875         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
2876         * tree-chrec.h (chrec_convert_rhs): New prototype.
2877         (build_polynomial_chrec): For pointer types, the right hand
2878         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Look for
2879         POINTER_PLUS_EXPR instead of PLUS_EXPR's.
2880         Remove subtraction case as it is always addition now.
2881         Make sure the offset is converted to sizetype.
2882         (fold_stmt_r): Don't handle PLUS_EXPR/MINUS_EXPR specially.
2883         Handle POINTER_PLUS_EXPR like PLUS_EXPR was handled before.
2884         * tree-ssa-loop-ivopts.c (determine_base_object): Abort for 
2885         PLUS_EXPR in pointer type.
2886         Handle POINTER_PLUS_EXPR.
2887         (tree_to_aff_combination): Likewise.
2888         (force_expr_to_var_cost): Likewise.
2889         (force_expr_to_var_cost): Likewise. Create a POINTER_PLUS_EXPR
2890         instead of PLUS_EXPR for pointers.
2891         * c-format.c (check_format_arg): Handle POINTER_PLUS_EXPR
2892         instead of PLUS_EXPR of pointer types.
2893         * tree-stdarg.c (va_list_counter_bump): Handle POINTER_PLUS_EXPR
2894         as PLUS_EXPR.
2895         (check_va_list_escapes): Likewise.
2896         (check_all_va_list_escapes): Likewise.
2897         * dwarf2out.c (loc_descriptor_from_tree_1):
2898         Handle POINT_PLUS_EXPR as a PLUS_EXPR.
2899         * expr.c (expand_expr_real_1): Handle POINTER_PLUS_EXPR.
2900         (string_constant): Likewise.
2901         * tree-ssa-address.c (tree_mem_ref_addr): When adding
2902         the offset to the base, use POINTER_PLUS_EXPR.
2903         (add_to_parts): Convert the index to sizetype.
2904         (create_mem_ref): Create A POINTER_PLUS_EXPR for the one case.
2905         * matrix-reorg.c (collect_data_for_malloc_call): Stmt
2906         will now only be either INDIRECT_REF and POINTER_PLUS_EXPR.
2907         Offset only holds something for PLUS_EXPR.
2908         (ssa_accessed_in_tree): Handle POINTER_PLUS_EXPR just as
2909         a PLUS_EXPR.
2910         (analyze_transpose): POINTER_PLUS_EXPR will only show up now
2911         and not PLUS_EXPR.
2912         (analyze_accesses_for_modify_stmt): Likewise.
2913         Remove comment about the type being integral type as it is
2914         wrong now.
2915         (can_calculate_expr_before_stmt): Handle POINTER_PLUS_EXPR as
2916         PLUS_EXPR.
2917         (transform_access_sites): POINTER_PLUS_EXPR will only show up now
2918         and not PLUS_EXPR.
2919         Correct the type which the artimentic is done in (is now
2920         sizetype).
2921         Reindent one loop.
2922         * tree-data-ref.c (split_constant_offset): Handle
2923         POINTER_PLUS_EXPR
2924         * tree-affine.c (tree_to_aff_combination): Likewise.
2925         * c-typeck.c (build_unary_op): For pointers create the increment
2926         as a sizetype. Create a POINTER_PLUS_EXPR instead of PLUS_EXPR
2927         for pointers.
2928         * gimplify.c (gimplify_self_mod_expr): Create a
2929         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
2930         (gimplify_omp_atomic_fetch_op): Handle POINTER_PLUS_EXPR.
2931         * tree.def (POINTER_PLUS_EXPR): New tree code.
2932         * tree-predcom.c (ref_at_iteration): If we have a pointer
2933         type do the multiplication in sizetype.
2934         * tree-mudflap.c (mf_xform_derefs_1): Create a
2935         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
2936         * tree-ssa-forwprop.c 
2937         (forward_propagate_addr_into_variable_array_index):
2938         Don't expect there to be a cast for the index as that
2939         does not exist anymore.
2940         (forward_propagate_addr_expr_1): Check for POINTER_PLUS_EXPR
2941         instead of PLUS_EXPR.
2942         Don't check for the first operand of the POINTER_PLUS_EXPR
2943         was the index as it cannot be.
2944         Call forward_propagate_addr_into_variable_array_index with
2945         the SSA_NAME instead of the statement.
2946         * varasm.c (const_hash_1): Handle POINTER_PLUS_EXPR.
2947         (compare_constant): Likewise.
2948         (copy_constant): Likewise.
2949         (compute_reloc_for_constant): Likewise.
2950         (output_addressed_constants): Likewise.
2951         (initializer_constant_valid_p): Likewise.
2952         * tree-ssa.c (tree_ssa_useless_type_conversion_1):
2953         Convert the MIN/MAX of the inner type to the outer
2954         type before comparing them.
2955         * tree-ssa-loop-prefetch.c (idx_analyze_ref):  Handle
2956         POINTER_PLUS_EXPR instead of PLUS_EXPR.
2957         (issue_prefetch_ref): Create a POINTER_PLUS_EXPR instead
2958         of PLUS_EXPR for pointers.
2959         * tree-inline.c (estimate_num_insns_1): Handle
2960         POINTER_PLUS_EXPR.
2961         * tree-vect-transform.c (vect_create_addr_base_for_vector_ref): 
2962         Create a POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
2963         (bump_vector_ptr): Create a POINTER_PLUS_EXPR
2964         instead of PLUS_EXPR for the pointer increment statement.
2965         (vect_update_ivs_after_vectorizer): For pointer types, create
2966         POINTER_PLUS_EXPR instead of PLUS_EXPR and also create
2967         MULT_EXPR in sizetype.
2968         (vect_gen_niters_for_prolog_loop): Add a cast when creating
2969         byte_misalign.
2970         * tree-object-size.c (plus_expr_object_size): Handle
2971         POINTER_PLUS_EXPR instead of PLUS_EXPR.  Removing all the extra
2972         code which is trying to figure out which side is a pointer and 
2973         is the index.
2974         (check_for_plus_in_loops_1): Likewise.
2975         (check_for_plus_in_loops): Likewise.
2976         * c-common.c (pointer_int_sum): Create a
2977         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
2978         * tree-ssa-structalias.c (handle_ptr_arith): Handle
2979         only POINTER_PLUS_EXPR.  Removing all the extra
2980         code which is trying to figure out which side is a pointer and 
2981         is the index.
2982         * tree-cfg.c (verify_expr): Add extra checking for pointers and
2983         PLUS_EXPR and MINUS_EXPR.
2984         Also add checking to make sure the operands of POINTER_PLUS_EXPR
2985         are correct.
2986         * config/frv/frv.c (frv_expand_builtin_va_start): Use sizetype
2987         with make_tree, instead of a pointer type.
2988         * config/s390/s390.c (s390_va_start): Use POINTER_PLUS_EXPR
2989         for pointers instead of PLUS_EXPR.
2990         (s390_gimplify_va_arg): Likewise.
2991         * config/spu/spu.c (spu_va_start): Create POINTER_PLUS_EXPR
2992         instead of PLUS_EXPR when doing addition on pointer
2993         types.  Use sizetype for the second operand.
2994         (spu_gimplify_va_arg_expr): Likewise.
2995         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use 
2996         POINTER_PLUS_EXPR instead of PLUS_EXPR when the operand was
2997         a pointer.  Don't create a BIT_AND_EXPR for pointer types.
2998         * config/i386/i386.c (ix86_va_start): Use POINTER_PLUS_EXPR
2999         for the pointer addition and also use size_int/sizetype
3000         for the offset.
3001         (ix86_gimplify_va_arg): Likewise.
3002         Perform BIT_AND_EXPR on sizetype arguments.
3003         * config/sh/sh.c (sh_va_start): Call make_tree with sizetype
3004         and convert its result to a pointer type.  Use POINTER_PLUS_EXPR
3005         for the pointer additions and also use size_int for the offsets.
3006         (sh_gimplify_va_arg_expr): Use POINTER_PLUS_EXPR for the pointer
3007         additions and also use size_int for the offsets.  Perform
3008         BIT_AND_EXPR on sizetype arguments.
3009         * config/ia64/ia64.c (ia64_gimplify_va_arg): Use
3010         POINTER_PLUS_EXPR for pointers and create the
3011         BIT_AND_EXPR in sizetype.
3012         * config/rs6000/rs6000.c (rs6000_va_start): Use POINTER_PLUS_EXPR
3013         instead of PLUS_EXPR for pointer addition.
3014         (rs6000_va_start): Likewise.
3015         Also use sizetype for the offset.
3016         * config/pa/pa.c (reloc_needed): Handle POINTER_PLUS_EXPR
3017         as PLUS_EXPR/MINUS_EXPR.
3018         (hppa_gimplify_va_arg_expr): Don't create MINUS_EXPR or
3019         PLUS_EXPR for pointers, instead use POINTER_PLUS_EXPR.
3020         Don't use BIT_AND_EXPR on a pointer type, convert the
3021         expression to sizetype first.
3022         * config/mips/mips.c (mips_va_start): Use POINTER_PLUS_EXPR
3023         for pointers.
3024         (mips_gimplify_va_arg_expr): Likewise.
3025         Don't create BIT_AND_EXPR in a pointer type.
3026
3027 2007-06-15  Eric Christopher  <echristo@apple.com>
3028
3029         * config.gcc (i?86-*-darwin*): Add t-crtfm and t-crtpc.
3030         (x86_64-*-darwin*): Ditto.
3031         * config/i386/darwin.h (CRTEND_SPEC): New. Add support
3032         for above.
3033
3034 2007-06-15  Matthew Wilcox <matthew@wil.cx>
3035
3036         * doc/extend.texi: Document behavior of __attribute__((aligned))
3037         on typedefs.
3038
3039 2007-06-15  Mark Mitchell  <mark@codesourcery.com>
3040
3041         * rtlanal.c (note_stores): Improve documentation.
3042
3043 2007-06-15  Bernd Schmidt  <bernd.schmidt@analog.com>
3044
3045         * config/bfin/elf.h (ASM_GENERATE_INTERNAL_LABEL,
3046         LOCAL_LABEL_PREFIX): Delete.
3047         * config/bfin/bfin.c (TARGET_ASM_INTERNAL_LABEL): Delete.
3048         (bfin_internal_label): Delete.
3049
3050 2007-06-15  Uros Bizjak  <ubizjak@gmail.com>
3051
3052         * libgcc2.c (CEXT): When compiling L_multc3 and L_divtc3,
3053         define to "l" if LIBGCC_LONG_DOUBLE_SIZE == 128,
3054         otherwise define to LIBGCC2_TF_CEXT.
3055         * config/i386/linux64.h (LIBGCC2_HAS_TF_MODE): New define.
3056         (LIBGCC_TF_CEXT): Ditto.
3057         (TF_SIZE): Ditto.
3058
3059 2007-06-14  Seongbae Park  <seongbae.park@gmail.com>
3060
3061         PR rtl-optimization/32339
3062         * df-scan.c (df_uses_record): Don't modify flags but just add to
3063         it for df_ref_record.
3064
3065 2007-06-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3066
3067         * tree-mudflap.c: Fix whitespace issues.
3068
3069 2007-06-15  Kazu Hirata  <kazu@codesourcery.com>
3070
3071         * config/m68k/m68k.c (ASM_DOT, ASM_DOTW, ASM_DOTL): Remove.
3072
3073 2007-06-14  Eric Christopher  <echristo@apple.com>
3074
3075         * config/i386/sse.md (movdi_to_sse): Rewrite body.
3076         (movv4sf): Use gcc_unreachable instead of abort.
3077
3078 2007-06-14  Uros Bizjak  <ubizjak@gmail.com>
3079
3080         PR target/32268
3081         * config/i386/sfp-machine.h (CMPtype): New define.
3082         (mach stubs): Use CMPtype instead of int as a return type.
3083
3084 2007-06-14  Uros Bizjak  <ubizjak@gmail.com>
3085
3086         * config/soft-fp/eqdf2.c, config/soft-fp/eqsf2.c,
3087         config/soft-fp/eqtf2.c, config/soft-fp/gedf2.c,
3088         config/soft-fp/gesf2.c, config/soft-fp/getf2.c,
3089         config/soft-fp/ledf2.c, config/soft-fp/lesf2.c,
3090         config/soft-fp/letf2.c, config/soft-fp/unorddf2.c,
3091         config/soft-fp/unordsf2.c, config/soft-fp/unordtf2.c,
3092         config/soft-fp/soft-fp.h: Update from glibc CVS.
3093
3094 2007-06-14  Bernd Schmidt  <bernd.schmidt@analog.com>
3095
3096         * config/bfin/uclinux.h (MFWRAP_SPEC): New.
3097
3098 2007-06-14  Rask Ingemann Lambertsen  <rask@sygehus.dk>
3099
3100         PR target/32341
3101         * config/v850/v850.c: Include dataflow header file.
3102         (substitute_ep_register): Fix typo.
3103
3104 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
3105
3106         * configure.ac: Fix earlier checkin.
3107         * configure: Regenerated.
3108
3109 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
3110
3111         * acinclude.m4 (gcc_AC_CHECK_PROG_VER): Remove.
3112         * aclocal.m4: Regenerate.
3113         * configure.ac: Use ACX_PROG_CC_WARNING_OPTS,
3114         ACX_PROG_CC_WARNINGS_ARE_ERRORS,
3115         ACX_PROG_CC_WARNING_ALMOST_PEDANTIC, ACX_CHECK_PROG_VER.
3116         * configure: Regenerate.
3117         * Makefile.in (LOOSE_WARN): Subst loose_warn.
3118
3119         * Makefile.in (quickstrap): Build libgcc too.
3120
3121 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
3122
3123         * configure.ac: Add --enable-checking=df.  Explicitly mention that
3124         the variables are initialized as for "release".
3125         * df-core.c: Use it.
3126         * configure: Regenerate.
3127         * config.in: Regenerate.
3128
3129 2007-06-14  Bob Wilson  <bob.wilson@acm.org>
3130
3131         * config/xtensa/xtensa.c (xtensa_expand_nonlocal_goto): Use
3132         validate_replace_rtx instead of replace_rtx.
3133         (xtensa_expand_prologue): Call df_insn_rescan after replace_rtx.
3134
3135 2007-06-14  Danny Smith  <dannysmith@users.sourceforge.net>
3136
3137         * config/i386/cygming.h (DWARF_FRAME_REGNUM): Define.
3138         (DWARF2_UNWIND_INFO): Override default if configured with
3139         SJLJ EH disabled.
3140         * config/i386/cygwin.h (STARTFILE_SPEC): Add crtbegin.o.
3141         (ENDFILE_SPEC): Add crtend.o.
3142         * config/i386/mingw32.h (STARTFILE_SEC): Add crtbegin.o.
3143         (ENDFILE_SPEC): Add crtend.o.
3144         (TARGET_USE_JCR_SECTION): Define.
3145         (MD_UNWIND_SUPPORT): Define for 32-bit target.
3146
3147         * config/i386/cygming-crtbegin.c: New file.
3148         * config/i386/cygming-crtend.c: New file.
3149
3150 2007-06-14  Pascal Obry Pascal Obry  <obry@adacore.com>
3151
3152         * config/i386/w32-unwind.h: New file.
3153
3154 2007-06-13  Eric Christopher  <echristo@apple.com>
3155
3156         * config/i386/darwin.h (PREFERRED_STACK_BOUNDARY): Don't let
3157         the user set a value below STACK_BOUNDARY.
3158
3159 2007-06-13  Thiemo Seufer  <ths@networkno.de>
3160
3161         * config/mips/linux.h, config/mips/linux64.h (LIB_SPEC): Always
3162         imply -lpthread for -pthread.
3163
3164 2007-06-13  Kazu Hirata  <kazu@codesourcery.com>
3165
3166         * basic-block.h: Remove the prototype for
3167         free_basic_block_vars.
3168         * cfglayout.h: Remove the prototype for
3169         insn_locators_initialize.
3170         * tree.h: Remove the prototype for emit_line_note.
3171
3172         * tree-ssa-pre.c (mergephitemp): Remove.
3173         (init_pre): Don't use mergephitemp.
3174
3175 2007-06-13  Eric Christopher  <echristo@apple.com>
3176
3177         * config/i386/i386.c (override_options): If we've specified
3178         an arch then don't use TARGET_SUBTARGET_ISA_DEFAULTs.
3179
3180 2007-06-13  Bob Wilson  <bob.wilson@acm.org>
3181
3182         * df-scan.c (df_get_entry_block_def_set): Check if STATIC_CHAIN_REGNUM
3183         is defined.
3184
3185 2007-06-13  Bernd Schmidt  <bernd.schmidt@analog.com>
3186
3187         * config/bfin/bfin.h (EH_RETURN_HANDLER_RTX): Use gen_frame_mem.
3188         * config/bfin/bfin.md (UNSPEC_VOLATILE_STORE_EH_HANDLER): New constant.
3189         (eh_store_handler): New pattern.
3190         (eh_return): Emit it instead of a plain move.
3191
3192 2007-06-13  Uros Bizjak  <ubizjak@gmail.com>
3193
3194         * config/i386/i386.c (ix86_init_mmx_sse_builtins)
3195         [__builtin_infq, __builtin_fabsq]: Define usign def_builtin.
3196         [__builtin_ia32_rsqrtps, __builtin_ia32_rsqrtss]: Define using
3197         def_builtin_const.
3198
3199 2007-06-13  Bernd Schmidt  <bernd.schmidt@analog.com>
3200
3201         * config/bfin/bfin.c (gen_one_bundle): Delete unused local variables.
3202         (find_next_insn_start, find_load): New functions.
3203         (bfin_reorg): Use them to deal with the fact that parallel insns are
3204         no longer represented as a SEQUENCE.
3205
3206 2007-06-13  Eric Botcazou  <ebotcazou@libertysurf.fr>
3207
3208         * config/sparc/sparc.c (sparc_override_options): Initialize
3209         fpu mask correctly.
3210
3211 2007-06-13  Dave Korn  <dave.korn@artimi.com>
3212
3213         * config/i386/i386.c (ix86_eax_live_at_start_p): Use
3214         df_get_live_out.
3215
3216 2007-06-13  Kazu Hirata  <kazu@codesourcery.com>
3217
3218         * auto-inc-dec.c, c-incpath.c, config/c4x/libgcc.S,
3219         config/sh/divcost-analysis, dbgcnt.def, df-core.c,
3220         df-problems.c, df-scan.c, df.h, dominance.c, dse.c, regstat.c,
3221         tree-data-ref.c, tree-ssa-loop-im.c, tree-ssa-loop-prefetch.c,
3222         tree-vect-transform.c: Fix comment typos.  Follow spelling
3223         conventions.
3224
3225 2007-06-12  Seongbae Park  <seongbae.park@gmail.com>
3226
3227        * df-scan.c (df_get_exit-block_use_set): Always add the stack pointer
3228        to the exit block use set.
3229        (df_insn_delete, df_insn_rescan): Fixed spelling of "deferring". 
3230        * gcse.c (cpro_jump): Don't emit barrier in cfglayout mode.
3231        * config/sparc/sparc.c (sparc_check_64): Check df != NULL.
3232
3233 2007-06-12  Seongbae Park  <seongbae.park@gmail.com>
3234
3235         * opts.c (common_handle_option): Handle new option -fdbg-cnt-list.
3236         * dbgcnt.c (dbg_cnt_set_limit_by_name): Return value
3237         to indicate an error.
3238         (dbg_cnt_process_single_pair, dbg_cnt_list_all_counters):
3239         New functions.
3240         (dbg_cnt_process_opt): Print an error on a bad argument.
3241         * dbgcnt.h (dbg_cnt_list_all_counters): New function declaration.
3242         * common.opt (-fdbg-cnt-list): New.
3243         * doc/invoke.texi (-fdbg-cnt-list,-fdbg-cnt=): New.
3244
3245 2007-06-12  Eric Botcazou  <ebotcazou@adacore.com>
3246
3247         * tree-ssa-alias.c (finalize_ref_all_pointers): Clear pt_anything
3248         flag on ref-all pointers.
3249
3250 2007-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3251
3252         PR middle-end/31579
3253         * expr.c (expand_expr_addr_expr_1): Call expand_expr
3254         for the offset with the modifier as EXPAND_INITIALIZER
3255         if the modifier is EXPAND_INITIALIZER.
3256         (expand_expr_real_1 <case INTEGER_CST>): Don't force to
3257         a register if we had an overflow.
3258
3259 2007-06-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3260
3261         * real.c (real_isfinite): New.
3262         (real_sqrt): Use it.
3263         * real.h (real_isfinite): New.
3264         * builtins.c: Use it.
3265
3266 2007-06-12  Ian Lance Taylor  <iant@google.com>
3267             Daniel Berlin  <dberlin@dberlin.org>
3268
3269         PR libstdc++/29286
3270         * tree.def: Add CHANGE_DYNAMIC_TYPE_EXPR.
3271         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Define.
3272         (CHANGE_DYNAMIC_TYPE_LOCATION): Define.
3273         (DECL_NO_TBAA_P): Define.
3274         (struct tree_decl_common): Add no_tbaa_flag field.
3275         * tree-ssa-structalias.c (struct variable_info): Add
3276         no_tbaa_pruning field.
3277         (new_var_info): Initialize no_tbaa_pruning field.
3278         (unify_nodes): Copy no_tbaa_pruning field.
3279         (find_func_aliases): Handle CHANGE_DYNAMIC_TYPE_EXPR.
3280         (dump_solution_for_var): Print no_tbaa_pruning flag.
3281         (set_uids_in_ptset): Add no_tbaa_pruning parameter.  Change all
3282         callers.
3283         (compute_tbaa_pruning): New static function.
3284         (compute_points_to_sets): Remove CHANGE_DYNAMIC_TYPE_EXPR nodes.
3285         Call compute_tbaa_pruning.
3286         * tree-ssa-alias.c (may_alias_p): Test no_tbaa_flag for pointers.
3287         * gimplify.c (gimplify_expr): Handle CHANGE_DYNAMIC_TYPE_EXPR.
3288         * gimple-low.c (lower_stmt): Likewise.
3289         * tree-gimple.c (is_gimple_stmt): Likewise.
3290         * tree-ssa-operands.c (get_expr_operands): Likewise.
3291         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
3292         * tree-inline.c (estimate_num_insns_1): Likewise.
3293         (copy_result_decl_to_var): Likewise.
3294         * expr.c (expand_expr_real_1): Likewise.
3295         * tree-pretty-print.c (dump_generic_node): Likewise.
3296         * tree-inline.c (copy_decl_to_var): Copy DECL_NO_TBAA_P flag.
3297         * omp-low.c (omp_copy_decl_2): Likewise.
3298         * print-tree.c (print_node): Print DECL_NO_TBAA_P flag.
3299         * doc/c-tree.texi (Expression trees): Document
3300         CHANGE_DYNAMIC_TYPE_EXPR.
3301
3302 2007-06-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3303
3304         * fold-const.c (fold_binary): Guard (X-X) -> 0 transformation
3305         with !HONOR_NANS and !HONOR_INFINITIES.
3306         * simplify-rtx.c (simplify_binary_operation_1): Likewise.
3307
3308 2007-06-12  Tristan Gingold  <gingold@adacore.com>
3309
3310         * gcov.c: Comments updated.
3311         (source_info): Add file_time field.
3312         (source_index): New variable.
3313         (mutiple_files): New variable.
3314         (generate_results): New function extracted from process_file.
3315         (process_file): Save and restore chain of functions, generate
3316         results and free structures only if not merging results.
3317         (release_structures): File names are now freed in create_file_names
3318         (create_file_names): Free previous file names.
3319         (find_source): File date is now read here and modifications in
3320         source files is checked here.
3321         (read_graph_file): Only reverse order of functions for the current
3322         object file.
3323         (make_gcov_file_name): Do not generate long names if input_name is
3324         NULL.
3325         (output_lines): If merging results do not display graph, data and
3326         runs informations.
3327         Checking source file modification is done in find_source.
3328
3329         * doc/gcov.texi: Append an s to sourcefile.
3330
3331 2007-06-12  Bernd Schmidt  <bernd.schmidt@analog.com>
3332
3333         * config/bfin/bfin.md (UNSPEC_NOP): New constant.
3334         (forced_nop): New pattern.
3335         * config/bfin/bfin.c: Include "df.h".
3336         (add_to_reg): Use df_regs_ever_live_p instead of regs_ever_live.
3337         (bfin_discover_loop): Use df_get_live_in instead of
3338         global_live_at_start.
3339         (bfin_reorder_loops): Pass 0 to cfg_layout_initialize.  Call
3340         df_analyze when done.
3341         (gen_one_bundle): Don't generate SEQUENCE insns, just put modes on
3342         the insns.  Use QImode for the final insn in a bundle.  Call
3343         df_insn_rescan on generated NOPs; use gen_forced_nop instead of
3344         gen_nop.
3345         (reorder_var_tracking_notes): New function.
3346         (bfin_reorg): Pass no argument to split_all_insns.  Don't call
3347         update_life_info.  Call df_analyze after scheduling and bundle
3348         generation.  Call reorder_var_tracking_notes if generating these
3349         notes.  Call df_finish_pass at the end.
3350
3351 2007-06-12  Dirk Mueller  <dmueller@suse.de>
3352
3353         * optabs.c (debug_optab_libfuncs): fix gcc_assert to
3354         a comparison, not an assignment.
3355
3356 2007-06-12  Olivier Hainque  <hainque@adacore.com>
3357
3358         * tree-nested.c (convert_local_reference): Handle VIEW_CONVERT_EXPR.
3359         Request walking the subtrees only, leaving the current is_lhs/val_only
3360         untouched.
3361         (convert_non_local_reference): Likewise.
3362
3363 2007-06-12  Nathan Sidwell  <nathan@codesourcery.com>
3364
3365         * config/m68k/m68k-devices.def (52221, 52223, 5253): New.
3366
3367 2007-06-12  Richard Guenther  <rguenther@suse.de>
3368
3369         PR tree-optimization/15353
3370         PR tree-optimization/31657
3371         * passes.c (init_optimization_passes): Add pass_tree_ifcombine.
3372         * timevar.def: Add TV_TREE_IFCOMBINE.
3373         * tree-pass.h (pass_tree_ifcombine): Declare.
3374         * tree-ssa-ifcombine.c: New file.
3375         * tree-ssa-phiopt.c (blocks_in_phiopt_order): Export.
3376         * tree-flow.h (blocks_in_phiopt_order): Declare.
3377         * Makefile.in (OBJS-common): Add tree-ssa-ifcombine.o.
3378         (tree-ssa-ifcombine.o): New dependencies.
3379
3380 2007-06-12  Uros Bizjak  <ubizjak@gmail.com>
3381
3382         PR rtl-optimization/32293
3383         * combine.c (simplify_if_then_else): Truncate return from
3384         nonzero_bits() to correct mode.
3385
3386 2007-06-12  Uros Bizjak  <ubizjak@gmail.com>
3387
3388         * fold-const (fold_binary) [RDIV_EXPR]: Also optimize a/cbrt(b/c)
3389         into a*cbrt(c/b) if flag_unsafe_math_optimizations is set.
3390
3391 2007-06-11  Diego Novillo  <dnovillo@google.com>
3392
3393         * Makefile.in (reload1.o-warn): Remove.
3394
3395 2007-06-11  Seongbae Park <seongbae.park@gmail.com>
3396
3397         * combine.c (subst): Use reg_overlap_mentioned_p
3398         instead of comparing register numbers directly.
3399
3400 2007-06-11  Kenneth Zadeck <zadeck@naturalbridge.com>
3401
3402         * reload1.c (mark_home_live_1): Use the mode parameter.
3403
3404 2007-06-11  Kenneth Zadeck <zadeck@naturalbridge.com>
3405
3406         * df-scan.c (df_insn_delete, df_insn_rescan, df_insn_rescan_all,
3407         df_process_deferred_rescans, df_notes_rescan): Fixed spelling of
3408         word "deferred".
3409         * df-core.c: Ditto.
3410
3411 2007-06-11  Daniel Berlin  <dberlin@dberlin.org>
3412
3413         * Merge dataflow-branch into mainline (see ChangeLog.dataflow)
3414
3415 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
3416
3417         * config/i386/i386.md ("*movtf_internal): Penalize moves to and
3418         from integer registers.
3419         (FP mode splitters): Handle TFmode.
3420
3421 2007-06-11  Eric Botcazou  <ebotcazou@adacore.com>
3422
3423         * tree-ssa-structalias.c (find_what_p_points_to): Return false
3424         for ref-all pointers that point-to anything.
3425
3426 2007-06-11  Joseph Myers  <joseph@codesourcery.com>
3427
3428         * config/arm/arm.c (arm_output_dwarf_dtprel,
3429         TARGET_ASM_OUTPUT_DWARF_DTPREL): New.
3430
3431 2007-06-11  Bernd Schmidt  <bernd.schmidt@analog.com>
3432
3433         * config/bfin/bfin.md (movdi_insn, movsi_insn, movv2hi_insn,
3434         movhi_insn, movqi_insn, movsf_insn, movdf_insn): Don't allow constant
3435         to memory moves.
3436
3437 2007-06-11  Rafael Avila de Espindola  <espindola@google.com>
3438
3439         * gcc/tree.c (signed_or_unsigned_type_for): New.
3440         (unsigned_type_for): Use signed_or_unsigned_type_for.
3441         (signed_type_for): Use signed_or_unsigned_type_for.
3442         * gcc/tree.h (signed_or_unsigned_type_for): New.
3443         (get_signed_or_unsigned_type): Remove.
3444         * gcc/fold-const.c (fold_negate_expr): Use signed_type_for instead of
3445         lang_hooks.types.signed_type
3446         (size_diffop): Likewise.
3447         (all_ones_mask_p): Likewise.
3448         (build_range_check): Likewise.
3449         (fold_cond_expr_with_comparison): Likewise.
3450         (fold_cond_expr_with_comparison): Likewise.
3451         (unextend): Likewise.
3452         (extract_muldiv_1): Likewise.
3453         (fold_single_bit_test_into_sign_test): Likewise.
3454         (fold_binary): Likewise.
3455         (fold_ternary): Likewise.
3456         (operand_equal_for_comparison_p): Use signed_or_unsigned_type_for
3457         instead of get_signed_or_unsigned_type.
3458         * gcc/c-objc-common.h (LANG_HOOKS_SIGNED_TYPE): Remove.
3459         (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
3460         * gcc/expr.c (signed_or_unsigned_type_for): Use
3461         signed_or_unsigned_type_for instead of get_signed_or_unsigned_type.
3462         * gcc/langhooks.c (get_signed_or_unsigned_type): Remove.
3463         (lhd_signed_or_unsigned_type): Remove.
3464         * gcc/langhooks.h (lang_hooks_for_types): Remove signed_type and
3465         signed_or_unsigned_type.
3466         (lhd_signed_or_unsigned_type): Remove.
3467         * gcc/expmed.c (make_tree): Use signed_type_for instead of
3468         lang_hooks.types.signed_type.
3469         * gcc/c-common.c (same_scalar_type_ignoring_signedness): Use
3470         c_common_signed_type instead of lang_hooks.types.signed_type.
3471         (c_common_unsigned_type): New.
3472         (c_common_signed_type): Just call c_common_signed_or_unsigned_type.
3473         (shorten_compare): Use c_common_unsigned_type instead of
3474         c_common_signed_or_unsigned_type.
3475         (c_common_nodes_and_builtins): Use c_common_unsigned_type instead of
3476         unsigned_type_for.
3477         * gcc/convert.c (convert_to_integer): Use signed_type_for instead of
3478         lang_hooks.types.signed_type.
3479         * gcc/langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
3480         (LANG_HOOK_FOR_TYPES_INITIALIZER): Remove LANG_HOOKS_SIGNED_TYPE and
3481         LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE.
3482         * gcc/c-format.c (check_format_types): Use c_common_unsigned_type
3483         instead of unsigned_type_for.
3484         * gcc/c-decl.c (groakdeclarator): Likewise.
3485         * gcc/c-typeck.c (convert_for_assignment): Likewise.
3486         * gcc/c-common.h (c_common_unsigned_type): New.
3487
3488 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
3489
3490         PR target/32280
3491         * config/i386/sse.md ("sse2_ashlti", "sse2_lshrti3"): Move ...
3492         * config/i386/i386.md ("sse2_ashlti", "sse2_lshrti3"): ... to here.
3493
3494 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
3495
3496         PR middle-end/32279
3497         * fold-const (fold_binary) [RDIV_EXPR]: Optimize a/sqrt(b/c)
3498         into a*sqrt(c/b) if flag_unsafe_math_optimizations is set.
3499
3500 2007-06-10  Jan Sjodin  <jan.sjodin@amd.com>
3501             Sebastian Pop  <sebpop@gmail.com>
3502
3503         * lambda-code.c (remove_iv): New.
3504         (lambda_loopnest_to_gcc_loopnest): Use remove_iv.
3505
3506 2007-06-10  Zdenek Dvorak  <dvorakz@suse.cz>
3507
3508         * tree-data-ref.c (dr_analyze_alias): Handle case smt is NULL.
3509         * tree-predcom.c (mark_virtual_ops_for_renaming): Exported.
3510         * tree-ssa-loop-prefetch.c: Include optabs.h.
3511         (FENCE_FOLLOWING_MOVNT): New macro.
3512         (struct mem_ref): Add independent_p and storent_p fields.
3513         (record_ref): Initalize the new fields.
3514         (gather_memory_references_ref): Return true if the reference
3515         could be analysed.
3516         (gather_memory_references): Check whether all memory accesses
3517         in loop were recorded.
3518         (should_issue_prefetch_p): Return false for nontemporal stores.
3519         (nontemporal_store_p, mark_nontemporal_store, emit_mfence_after_loop,
3520         may_use_storent_in_loop_p, mark_nontemporal_stores): New functions.
3521         (determine_loop_nest_reuse): Detect independent memory references.
3522         (loop_prefetch_arrays): Call mark_nontemporal_stores.
3523         * tree-flow.h (mark_virtual_ops_for_renaming): Declare.
3524         * Makefile.in (tree-ssa-loop-prefetch.o): Add OPTABS_H dependency.
3525         * config/i386/i386.h (x86_mfence): Declare.
3526         (FENCE_FOLLOWING_MOVNT): Return x86_mfence.
3527         * config/i386/i386.c (x86_mfence): New variable.
3528         (ix86_init_mmx_sse_builtins): Initialize x86_mfence.
3529
3530         * tree-pretty-print.c (dump_generic_node): Mark nontemporal stores.
3531         * optabs.c (init_optabs): Initialize storent_optab.
3532         * optabs.h (enum optab_index): Add OTI_storent.
3533         (storent_optab): Declare.
3534         * genopinit.c (optabs): Add initialization for storent_optab.
3535         * tree.h (MOVE_NONTEMPORAL): New macro.
3536         * expr.c (expand_assignment, store_expr, store_constructor_field,
3537         store_constructor, store_field, expand_expr_real_1): Propagate
3538         nontemporality of the expanded store.
3539         (emit_storent_insn): New function.
3540         * expr.h (expand_assignment, store_expr): Declaration changed.
3541         * function.c (assign_parm_setup_reg): Pass false as nontemporality
3542         to expand_assignment.
3543         * stmt.c (expand_asm_expr): Ditto.
3544         * calls.c (initialize_argument_information): Pass false as
3545         nontemporality to store_expr.
3546         * config/i386/sse.md (storentv4sf, storentv2df, storentv2di,
3547         storentsi): New.
3548
3549 2007-06-09  Daniel Berlin  <dberlin@dberlin.org>
3550
3551         * tree-ssa-structalias.c (set_uids_in_ptset): Add is_deref'd
3552         parameter, use it.
3553         (find_what_p_points_to): Pass new parameter to set_uids_in_ptset.
3554
3555 2007-06-09  Daniel Berlin  <dberlin@dberlin.org>
3556
3557         * tree-data-ref.c (dr_may_alias_p): Check that decl_a != decl_b,
3558         and allow DECL_P here.
3559
3560 2007-06-09  Zdenek Dvorak  <dvorakz@suse.cz>
3561
3562         * tree-scalar-evolution.c (follow_ssa_edge_in_rhs,
3563         follow_ssa_edge_in_condition_phi, follow_ssa_edge): Keep more precise
3564         track of the size of the expression.
3565         * cfghooks.c (merge_blocks): Remove block from loops structure only
3566         after call of the merge_blocks hook.
3567
3568 2007-06-09  Tom Tromey  <tromey@redhat.com>
3569
3570         * c-decl.c (grokdeclarator): Added 'deprecated_state' argument.
3571         (deprecated_state): Removed.
3572         (start_decl): Update.
3573         (enum deprecated_states): Moved earlier.
3574         (groktypename): Update.
3575         (push_parm_decl): Likewise.
3576         (grokfield): Likewise.
3577         (start_function): Likewise.
3578
3579 2007-06-09  Ian Lance Taylor  <iant@google.com>
3580
3581         PR tree-optimization/32169
3582         * tree-vrp.c (extract_range_from_unary_expr): For NOP_EXPR and
3583         CONVERT_EXPR, check whether min and max both converted to an
3584         overflow infinity representation.
3585
3586 2007-06-08  Eric Botcazou  <ebotcazou@adacore.com>
3587
3588         * reload1.c (fixup_abnormal_edges): Clear bb field for insns
3589         not inserted on the edge.
3590
3591 2007-06-08  Bob Wilson  <bob.wilson@acm.org>
3592
3593         * config/xtensa/lib1funcs.asm (__udivsi3): Use hardware divide
3594         instructions if they are supported.
3595         (__divsi3, __umodsi3, __modsi3): Likewise.
3596         (__ashldi3, __ashrdi3, __lshrdi3): New.
3597         * config/xtensa/t-xtensa (LIB1ASMFUNCS): Add DImode shift functions.
3598
3599 2007-06-08  Harsha Jagasia <harsha.jagasia@amd.com>
3600             Tony Linthicum <tony.linthicum@amd.com>
3601
3602         * doc/invoke.texi: Add fvect-cost-model flag.
3603         * common.opt (fvect-cost-model): New flag.
3604         * tree-vectorizer.c (new_stmt_vec_info): Initialize inside and outside
3605         cost fields in stmt_vec_info struct for STMT.
3606         * tree-vectorizer.h (stmt_vec_info): Define inside and outside cost
3607         fields in stmt_vec_info struct and access functions for the same.
3608         (TARG_COND_BRANCH_COST): Define cost of conditional branch.
3609         (TARG_VEC_STMT_COST): Define cost of any vector operation, excluding
3610         load, store and vector to scalar operation.
3611         (TARG_VEC_TO_SCALAR_COST): Define cost of vector to scalar operation.
3612         (TARG_VEC_LOAD_COST): Define cost of aligned vector load.
3613         (TARG_VEC_UNALIGNED_LOAD_COST): Define cost of misasligned vector load.
3614         (TARG_VEC_STORE_COST): Define cost of vector store.
3615         (vect_estimate_min_profitable_iters): Define new function.
3616         * tree-vect-analyze.c (vect_analyze_operations): Add a compile-time
3617         check to evaluate if loop iterations are less than minimum profitable
3618         iterations determined by cost model or minimum vect loop bound defined
3619         by user, whichever is more conservative.
3620         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Add a
3621         run-time check to evaluate if loop iterations are less than minimum
3622         profitable iterations determined by cost model or minimum vect loop
3623         bound defined by user, whichever is more conservative.
3624         (vect_estimate_min_profitable_iterations): New function to estimate
3625         mimimimum iterartions required for vector version of loop to be
3626         profitable over scalar version.
3627         (vect_model_reduction_cost): New function.
3628         (vect_model_induction_cost): New function.
3629         (vect_model_simple_cost): New function.
3630         (vect_cost_strided_group_size): New function.
3631         (vect_model_store_cost): New function.
3632         (vect_model_load_cost): New function.
3633         (vectorizable_reduction): Call vect_model_reduction_cost during
3634         analysis phase.
3635         (vectorizable_induction): Call vect_model_induction_cost during
3636         analysis phase.
3637         (vectorizable_load): Call vect_model_load_cost during analysis phase.
3638         (vectorizable_store): Call vect_model_store_cost during analysis phase.
3639         (vectorizable_call, vectorizable_assignment, vectorizable_operation,
3640         vectorizable_promotion, vectorizable_demotion): Call
3641         vect_model_simple_cost during analysis phase.
3642
3643 2007-06-08  Simon Baldwin  <simonb@google.com>
3644
3645         * reg-stack.c (get_true_reg): Readability change.  Moved default case
3646         label into direct switch statement scope.
3647
3648 2007-06-08  Simon Baldwin  <simonb@google.com>
3649
3650         * tree-flow-inline.h (var_ann): Replaced erroneous '=' assignment
3651         in gcc_assert() with '==' comparison.
3652
3653 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
3654
3655         * config/i386/i386.c (override_options): Merge TARGET_SSE4_2 and
3656         TARGET_ABM handling of x86_popcnt variable.
3657
3658 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
3659
3660         * doc/extend.texi (X86 Built-in Functions): Document __builtin_fabsq,
3661         __builtin_copysignq and __builtin_infq built-in functions.
3662
3663 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
3664
3665         * doc/extend.texi (X86 Built-in Functions): Add missing `@item's in
3666         SSE4.2 section.  Correct built-in function names in SSE4A section.
3667
3668 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
3669
3670         PR tree-optimization/32243
3671         * tree-vect-transform.c (vectorizable_type_promotion): Move check
3672         for ncopies after ratio check between nunits_out and nunits_in.
3673         (vectorizable_type_demotion): Remove single-use variable "scalar_type".
3674
3675 2007-06-08  Dorit Nuzman  <dorit@il.ibm.com>
3676
3677         PR tree-optimization/32224
3678         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fail
3679         vectorization upon a non GIMPLE_MODIFY_STMT.
3680
3681 2007-06-08  Christian Bruel  <christian.bruel@st.com>
3682
3683         PR target/29953
3684         * config/sh/sh.md (doloop_end): New pattern and splitter.
3685         * loop-iv.c (simple_rhs_p): Check for hardware registers.
3686
3687 2007-06-08  Zdenek Dvorak  <dvorakz@suse.cz>
3688
3689         PR middle-end/32209
3690         * dominance.c (debug_dominance_tree, debug_dominance_tree_1): New
3691         functions.
3692         (verify_dominators): Do not change dominance tree.
3693
3694 2007-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
3695
3696         * config/sh/constraints.md: New file.
3697         * config/sh/sh.c: Include tm-constrs.h.
3698         (reg_class_from_letter): Remove.
3699         (prepare_cbranch_operands): Use satisfies_constraint_*
3700         function instead of macro.
3701         (andcosts, broken_move, sh_secondary_reload): Likewise.
3702         * config/sh/predicates.md (trapping_target_operand): Likewise.
3703         (and_operand, arith_operand, arith_reg_or_0_operand,
3704         cmp_operand, logical_operand, target_operand,
3705         ua_address_operand, ua_offset, xor_operand): Likewise.
3706         * config/sh/sh.md: Include constraints.md.
3707         (*movsicc_t_false): Use satisfies_constraint_* function
3708         instead of macro.
3709         (*movsicc_t_true, ashlsi3_std, ashlhi3_k, lshrsi3_m,
3710         lshrsi3_k, movsi_const_16bit+2, *movhi_media+1,
3711         movdi_const_16bit+1, beq, bne, *ptb): Likewise.
3712         * config/sh/sh.h (reg_class_from_letter): Remove prototype.
3713         (OVERRIDE_OPTIONS): Don't modify reg_class_from_letter.
3714         (REG_CLASS_FROM_CONSTRAINT): Remove.
3715         (CONSTRAINT_LEN, CONST_OK_FOR_I20, CONST_OK_FOR_I,
3716         CONST_OK_FOR_J, CONST_OK_FOR_K16, CONST_OK_FOR_K,
3717         CONST_OK_FOR_P27, CONST_OK_FOR_P, CONST_OK_FOR_M,
3718         CONST_OK_FOR_N, CONST_OK_FOR_CONSTRAINT_P,
3719         CONST_DOUBLE_OK_FOR_LETTER_P): Likewise.
3720         (SECONDARY_INOUT_RELOAD_CLASS): Use satisfies_constraint_*
3721         function instead of macro.
3722         (SECONDARY_INPUT_RELOAD_CLASS): Likewise.
3723         (EXTRA_CONSTRAINT_Q, EXTRA_CONSTRAINT_A,
3724         EXTRA_CONSTRAINT_Bsc, EXTRA_CONSTRAINT_B,
3725         EXTRA_CONSTRAINT_Css, EXTRA_CONSTRAINT_Csu): Remove.
3726         (IS_PC_RELATIVE_LOAD_ADDR_P): New macro.
3727         (IS_LITERAL_OR_SYMBOLIC_S16_P): Likewise.
3728         (IS_LITERAL_OR_SYMBOLIC_U16_P): Likewise.
3729         (IS_NON_EXPLICIT_CONSTANT_P): Likewise.
3730         (EXTRA_CONSTRAINT_Csy, EXTRA_CONSTRAINT_Z, EXTRA_CONSTRAINT_W,
3731         EXTRA_CONSTRAINT_Cpg, EXTRA_CONSTRAINT_C,
3732         EXTRA_MEMORY_CONSTRAINT, EXTRA_CONSTRAINT_Sr0,
3733         EXTRA_CONSTRAINT_Sua, EXTRA_CONSTRAINT_S,
3734         EXTRA_CONSTRAINT_STR): Likewise.
3735         (GO_IF_LEGITIMATE_INDEX): Fix indentation.
3736
3737 2007-06-07  Geoffrey Keating  <geoffk@apple.com>
3738
3739         * config/i386/darwin.h (STACK_BOUNDARY): Define.
3740
3741 2007-06-07  Simon Martin  <simartin@users.sourceforge.net>
3742
3743         PR c++/30759
3744         * c-common.h (flag_cpp0x): Replaced by...
3745         (cxx_dialect): ... this new variable specifying the C++ dialect that
3746         is used.
3747         * c-common.c (flag_cpp0x): Removed.
3748         (cxx_dialect): Defined.
3749         * c-cppbuiltin.c (c_cpp_builtins): flag_cpp0x rewritten in terms of
3750         cxx_dialect.
3751         * c-opts.c (c_common_post_options): Likewise.
3752         (set_std_cxx98): Set cxx_dialect to cxx98.
3753         (set_std_cxx0x): Set cxx_dialect to cxx0x.
3754
3755 2007-06-07  Geoffrey Keating  <geoffk@apple.com>
3756             Hui-May Chang <hm.chang@apple.com>
3757
3758         * doc/invoke.texi (Darwin Options): Update documentation for
3759         -mmacosx-version-min.
3760         * config.gcc (*-*-darwin*): Set extra_gcc_objs.
3761         * config/darwin-driver.c: New file.
3762         * config/darwin.h (GCC_DRIVER_HOST_INITIALIZATION): New.
3763         * config/t-darwin (darwin-driver.o): New rule.
3764
3765         * config/darwin-c.c (version_as_macro): Ignore low digit.
3766
3767 2007-06-07  Uros Bizjak  <ubizjak@gmail.com>
3768
3769         * config/i386/i386.md (standard sse constant splitter): Handle TFmode.
3770         (negtf2, abstf2, *absnegtf2_sse): New insn patterns.
3771         (CSGNMODE): New mode macro.
3772         (CSGNVMODE): New mode attribute.
3773         (copysign<mode>3): Rename from copysingsf3 and copysigndf3.  Macroize
3774         expander using CSGNMODE mode macro.  Handle TFmode.
3775         (copysign<mode>3_const): Rename from copysignsf3_const and
3776         copysigndf3_const.  Macroize pattern using CSGNMODE mode macro.
3777         Handle TFmode.
3778         (copysign<mode>3_var): Rename from copysignsf3_var and
3779         copysigndf3_var.  Macroize pattern using CSGNMODE mode macro.
3780         Handle TFmode.
3781         (copysign<mode>3_var splitter): Macroize pattern using CSGNMODE
3782         mode macro.  Handle TFmode.
3783         * config/i386/sse.md (andtf3, *andtf3, *nandtf3): New insn patterns.
3784         (iortf3, *iortf3): Ditto.
3785         (xortf3, *xortf3): Ditto.
3786         * config/i386/i386.c (ix86_build_signbit_mask): Create scalar
3787         TFmode and TImode masks.
3788         (ix86_expand_copysign): Expand TFmode copysign insn.
3789         (IX86_BUILTIN_INFQ): New.
3790         (IX86_BUILTIN_FABSQ): Ditto.
3791         (IX86_BUILTIN_COPYSIGNQ): Ditto.
3792         (ix86_init_mmx_sse_builtins) [__builtin_infq]: New builtin definition.
3793         [__builtin_fabsq]: Ditto.
3794         [__builtin_copysignq]: Ditto.
3795         (ix86_expand_builtin) [IX86_BUILTIN_INFQ]: Expand builtin.
3796         [IX86_BUILTIN_FABSQ]: Expand builtin using ix86_expand_unop_builtin().
3797         [IX86_BUILTIN_COPYSIGNQ]: Expand builtin using
3798         ix86_expand_binop_builtin().
3799
3800 2007-06-07  Bob Wilson  <bob.wilson@acm.org>
3801
3802         * config/xtensa/lib1funcs.asm: Clean up whitespace.
3803
3804 2007-06-07  Steve Ellcey  <sje@cup.hp.com>
3805
3806         PR target/31850
3807         * rtl.h (push_to_sequence2): New.
3808         * emit-rtl.c (push_to_sequence2): New.
3809         * function.c (assign_parm_data_all): Add new fields.
3810         (assign_parm_setup_block): Call push_to_sequence2 instead of
3811         push_to_sequence.
3812         (assign_parm_setup_reg): Ditto.
3813         (assign_parm_setup_stack): Ditto.
3814         (assign_parms_unsplit_complex): Ditto.
3815         (assign_parms): Change field name.
3816
3817 2007-06-07  Zdenek Dvorak  <dvorakz@suse.cz>
3818
3819         PR tree-optimization/32220
3820         * tree-predcom.c (eliminate_temp_copies): Handle the case that loop
3821         phi node is reached before defining statement.
3822
3823 2007-06-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3824
3825         PR tree-opt/32231
3826         * tree-vect-transform.c (vectorizable_call): Call update_stmt
3827         after changing the right hand side of the assignment.
3828
3829 2007-06-06  Eric Christopher  <echristo@apple.com>
3830
3831         * config.gcc (i?86-*-darwin*): Remove arch parameter.
3832         (x86_64-*-darwin*): Ditto.
3833         * config/i386/darwin.h (TARGET_SUBTARGET32_ISA_DEFAULT): Define.
3834         (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
3835
3836 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
3837
3838         * tree-ssa-alias-warnings.c (maybe_add_match): Cast according to the
3839         coding conventions.
3840         (add_key): Likewise.
3841         * tree-ssa.c (init_tree_ssa): Use type safe memory macros.
3842         * tree-ssa-ccp.c (ccp_fold_builtin): Avoid using C++ keywords as
3843         variable names.
3844         * tree-ssa-coalesce.c (find_coalesce_pair): Use type safe memory
3845         macros.
3846         (add_cost_one_coalesce): Likewise.
3847         * tree-ssa-copy.c (merge_alias_info): Avoid using C++ keywords as
3848         variable names. Rename orig to orig_name for consistency.
3849         * tree-ssa-dom.c (dom_thread_across_edge): Cast according to the
3850         coding conventions.
3851         (cprop_into_successor_phis): Avoid using C++ keywords as variable
3852         names.
3853         (record_equivalences_from_stmt): Likewise.
3854         * tree-ssa-dse.c (dse_initialize_block_local_data): Cast according to
3855         the coding conventions.
3856         (memory_ssa_name_same): Likewise.
3857         (dse_optimize_stmt): Likewise.
3858         (dse_record_phis): Likewise.
3859         (dse_finalize_block): Likewise.
3860         * tree-ssa-loop-im.c (outermost_invariant_loop_expr): Avoid using C++
3861         keywords as variable names.
3862         (may_move_till): Cast according to the coding conventions.
3863         (force_move_till_expr): Avoid using C++ keywords as variable names.
3864         (force_move_till): Cast according to the coding conventions.
3865         (memref_hash): Likewise.
3866         (memref_eq): Likewise.
3867         (gather_mem_refs_stmt): Likewise.
3868         * tree-ssa-loop-ivopts.c (contains_abnormal_ssa_name_p): Avoid
3869         using C++ keywords as variable names.
3870         (idx_find_step): Cast according to the coding conventions.
3871         (idx_record_use): Likewise.
3872         (find_depends): Likewise.
3873         (prepare_decl_rtl): Likewise.
3874         (mbc_entry_hash): Likewise.
3875         (mbc_entry_eq): Likewise.
3876         * tree-ssa-loop-niter.c (SWAP): Use the correct the type for tmp.
3877         (simplify_replace_tree): Avoid using C++ keywords as variable names.
3878         (idx_infer_loop_bounds): Cast according to the coding conventions.
3879         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Likewise.
3880         * tree-ssa-math-opts.c (occ_new ): Likwise.
3881         * tree-ssanames.c (duplicate_ssa_name_ptr_info): Use type safe memory
3882         macros.
3883         * tree-ssa-operands.c (add_def_op): Avoid using C++ keywords as
3884         variable names.
3885         (add_use_op): Likewise.
3886         (add_vop): Likewise.
3887         (add_vuse_op): Likewise.
3888         (add_vdef_op): Likewise.
3889         (get_expr_operands): Likewise.
3890         (push_stmt_changes): Use type safe memory macros.
3891         * tree-ssa-phiopt.c (replace_phi_edge_with_variable): Avoid using C++
3892         keywords as variable names.
3893         (conditional_replacement): Likewise.
3894         (minmax_replacement): Likewise.
3895         (abs_replacement): Likewise.
3896         * tree-ssa-pre.c (create_expression_by_pieces): Cast according to the
3897         coding conventions.
3898         (insert_fake_stores): Avoid using C++ keywords as variable names.
3899         * tree-ssa-reassoc.c (add_to_ops_vec): Cast according to the coding
3900         conventions.
3901         * tree-ssa-structalias.c (heapvar_lookup): Likewise.
3902         (heapvar_insert): Use type safe memory macros.
3903         (new_var_info): Cast according to the coding conventions.
3904         (new_constraint): Likewise.
3905         (remove_preds_and_fake_succs): Use type safe memory macros.
3906         * tree-ssa-threadupdate.c (thread_block): Cast according to the coding
3907         conventions.
3908         (thread_single_edge): Likewise.
3909         (thread_through_loop_header): Likewise.
3910
3911 2007-06-06  Eric Christopher  <echristo@apple.com>
3912
3913         * config/i386/i386.c (override_options): Move handling
3914         of TARGET_SUBTARGET* earlier.
3915
3916 2007-06-06  Paolo Bonzini  <bonzini@gnu.org>
3917
3918         * genmodes.c (tagged_printf, emit_insn_modes_h): Don't
3919         use %n on printf.
3920
3921 2007-06-06  Zdenek Dvorak  <dvorakz@suse.cz>
3922
3923         * haifa-sched.c (restore_bb_notes): Clear bb field of the notes
3924         emited outside of basic block.
3925         * cfgbuild.c (find_bb_boundaries): Clear bb field for insns between
3926         the created blocks.
3927         * rtl.h (delete_insn_chain): Declaration changed.
3928         * cfgrtl.c (delete_insn_chain): Add option to clear bb field for
3929         non-removed insns.
3930         (rtl_delete_block, rtl_merge_blocks): Pass true to delete_insn_chain.
3931         (delete_insn_chain_and_edges, try_redirect_by_replacing_jump,
3932         rtl_tidy_fallthru_edge, cfg_layout_merge_blocks): Pass false
3933         to delete_insn_chain.
3934         (rtl_verify_flow_info_1): Verify that the insns in header and footer
3935         do not have bb field set.
3936         (rtl_verify_flow_info): Verify that insns between basic blocks do not
3937         have bb field set.
3938         * recog.c (peephole2_optimize): Add argument to delete_insn_chain call.
3939         * cfgcleanup.c (try_optimize_cfg): Ditto.
3940
3941 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
3942
3943         * lambda-code.c (struct lambda_lattice_s): Add a name to the struct.
3944         (lambda_body_vector_new): Use type safe memory macros.
3945         (lambda_linear_expression_new): Likewise.
3946         (lambda_loopnest_new): Likewise.
3947         (lambda_lattice_new): Likewise.
3948         (replace_uses_equiv_to_x_with_y): Cast according to the coding
3949         conventions. Use type safe memory macros.
3950         * lambda.h (struct lambda_trans_matrix_s): Add a name to the struct.
3951         (lambda_body_vector_s): Likewise.
3952         * lambda-mat.c (lambda_matrix_new): Use type safe memory macros.
3953         * lambda-trans.c (lambda_trans_matrix_new): Likewise.
3954
3955 2007-06-06  Richard Guenther  <rguenther@suse.de>
3956
3957         * tree-ssa-forwprop.c (forward_propagate_into_cond): Return 2
3958         if we need to schedule cfg_cleanup.
3959         (tree_ssa_forward_propagate_single_use_vars): Do so.
3960
3961 2007-06-06  Ian Lance Taylor  <iant@google.com>
3962
3963         * fold-const.c (merge_ranges): If range_successor or
3964         range_predecessor fail, just return 0.
3965
3966 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
3967
3968         PR tree-optimization/32216
3969         * tree-vectorizer.c (supportable_widening_operation): Determine
3970         signedness of FIX_TRUNC_EXPR from output operand.
3971         (supportable_narrowing_operation): Ditto.
3972         * tree-vect-generic.c (expand_vector_operations_1): Determine
3973         signedness of VEC_UNPACK_FLOAT_HI_EXPR and VEC_UNPACK_FLOAT_LO_EXPR
3974         from input operand.
3975
3976 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
3977
3978         * config/i386/i386.c (enum pta_flags): Move out of struct scope...
3979         (struct pta): ...from here. Change flags to unsigned to avoid
3980         excessive casting (as it is used as a bit mask).
3981         (override_options): Add casts according to the coding convenventions.
3982         (x86_64_elf_unique_section): Likewise.
3983         (examine_argument): Avoid using C++ keywords as variable names.
3984         (construct_container): Likewise.
3985         (legitimize_pic_address): Likewise.
3986         (get_dllimport_decl): Cast according to the coding conventions. Use
3987         type safe memory macros.
3988         (legitimize_address): Cast according to the coding conventions.
3989         (emit_i387_cw_initialization): Corrected the type of slot to enum
3990         ix86_stack_slot.
3991         (ix86_init_machine_status): Use type safe memory macros.
3992         (bdesc_pcmpestr): Use UNKNOWN instead of integer 0.
3993         (bdesc_pcmpistr): Likewise.
3994         (bdesc_crc32): Likewise.
3995         (bdesc_sse_3arg): Likewise.
3996         (bdesc_2arg): Likewise.
3997         (bdesc_1arg): Likewise.
3998         (ix86_expand_sse_pcmpestr): Cast according to the coding conventions.
3999         (ix86_expand_sse_pcmpistr): Likewise.
4000         (ix86_expand_vec_set_builtin): Use EXPAND_NORMAL instead of integer 0.
4001         (ix86_builtin_vectorized_function): Change the type of fn to unsigned
4002         int to match the langhook definition.
4003         (ix86_builtin_conversion): Change the type of code to unsigned init to
4004         match the langhook definition.
4005         (ix86_preferred_reload_class): Avoid using C++ keywords as variable
4006         names.
4007         (ix86_preferred_output_reload_class): Likewise.
4008         (ix86_cannot_change_mode_class): Likewise.
4009         (ix86_memory_move_cost): Likewise.
4010         (ix86_rtx_costs): Cast the outer_code parameter to enum rtx_code to
4011         avoid excessive casting later on.
4012         (x86_output_mi_thunk): Avoid using C++ keywords as variable names.
4013
4014 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
4015
4016         * config/i386/sse.md (sse4_2_pcmpestr_cconly): Prefer pcmpestrm
4017         as flags setting insn.
4018         (sse4_2_pcmpistr_cconly): Prefer pcmpistrm as flags setting insn.
4019
4020 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
4021
4022         * config/i386/i386.md (UNSPEC_ROUNDP, UNSPEC_ROUNDS): Remove.
4023         (UNSPEC_ROUND): New.
4024         ("sse4_1_round<mode>2"): New insn pattern.
4025         ("rint<mode>2"): Expand using "sse4_1_round<mode>2" pattern for
4026         SSE4.1 targets.
4027         ("floor<mode>2"): Rename from floordf2 and floorsf2.  Macroize
4028         expander using SSEMODEF mode macro.  Expand using
4029         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
4030         ("ceil<mode>2"): Rename from ceildf2 and ceilsf2.  Macroize
4031         expander using SSEMODEF mode macro.  Expand using
4032         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
4033         ("btrunc<mode>2"): Rename from btruncdf2 and btruncsf2.  Macroize
4034         expander using SSEMODEF mode macro.  Expand using
4035         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
4036         * config/i386/sse.md ("sse4_1_roundpd", "sse4_1_roundps"): Use
4037         UNSPEC_ROUND instead of UNSPEC_ROUNDP.
4038         ("sse4_1_roundsd", "sse4_1_roundss"): Use UNSPEC_ROUND instead of
4039         UNSPEC_ROUNDS.
4040
4041 2007-06-06  Jan Sjodin  <jan.sjodin@amd.com>
4042             Sebastian Pop  <sebpop@gmail.com>
4043
4044         * lambda.h (build_linear_expr): New.
4045         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression):
4046         Use build_linear_expr, call fold and force_gimple_operand.
4047         (lambda_loopnest_to_gcc_loopnest): Check that there is
4048         something to insert.
4049         * testsuite/gcc.dg/tree-ssa/ltrans-6.c: New.
4050
4051 2007-06-05  Joerg Wunsch  <j.gnu@uriah.heep.sax.de>
4052
4053         PR preprocessor/23479
4054         * doc/extend.texi: Document the 0b-prefixed binary integer
4055         constant extension.
4056
4057 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
4058
4059         PR tree-optimization/32215
4060         * tree-vectorizer.c (supportable_widening_operation): Return false
4061         for unsupported FIX_TRUNC_EXPR tree code.
4062         (supportable_narrowing_operation): Ditto for FLOAT_EXPR tree code.
4063
4064 2007-06-06  Nathan Froyd  <froydnj@codesourcery.com>
4065
4066         * config/rs6000/rs6000.h (FIXED_SCRATCH): Use r0 as a scratch
4067         register on SPE targets.  Change documentation to reflect
4068         reality.
4069         * config/rs6000/rs6000.c (rs6000_conditional_register_usage):
4070         Change FIXED_SCRATCH to 14 and document why we're keeping r14
4071         out of the register allocation pool.
4072         (rs6000_reg_live_or_pic_offset_p): New function.
4073         (rs6000_emit_prologue): Move the actual saving of LR up to free
4074         r0 for holding r11.  Split saving of SPE 64-bit registers into
4075         its own case.  Ensure that offsets will always be in-range for
4076         'evstdd' by using r11 as a scratch register to point at the start
4077         of the SPE save area.  Save r11 if necessary, as it is the static
4078         chain register.
4079         (rs6000_emit_epilogue): Split restoring of SPE 64-bit registers
4080         into its own case.  Ensure that offsets will always be in-range
4081         for 'evldd' by using r11 as a scratch register to point at the
4082         start of the SPE save area.  Also adjust r11 when restoring
4083         the stack pointer to compensate for pre-loading r11.
4084
4085 2007-06-05  Thomas Neumann  <tneumann@users.sourceforge.net>
4086
4087         * cfg.c (init_flow): Use type safe memory macros.
4088         (alloc_block): Likewise.
4089         (unchecked_make_edge): Likewise.
4090         (dump_flow_info): Avoid using C++ keywords as variable names.
4091         (copy_original_table_clear): Cast according to the coding conventions.
4092         (copy_original_table_set): Likewise.
4093         * cfgexpand (label_rtx_for_bb): Likewise.
4094         (expand_gimple_basic_block): Likewise.
4095         * cfghooks.c (dump_bb): Likewise.
4096         (lv_adjust_loop_header_phi): Avoid using C++ keywords as
4097         variable names.
4098         (lv_add_condition_to_bb): Likewise.
4099         * cfglayout (relink_block_chain): Cast according to the coding
4100         conventions.
4101         (fixup_reorder_chain): Likewise.
4102         (fixup_fallthru_exit_predecessor): Likewise.
4103         * cfgloop.c (glb_enum_p): Likewise.
4104         (get_exit_description): Likewise.
4105         (dump_recorded_exit): Likewise.
4106         * cfgloop.h (enum loop_estimation): Move out of struct scope...
4107         (struct loop): ... from here.
4108         * cfgloopmanip.c (rpe_enum_p): Cast according to the coding
4109         conventions.
4110         * cfgrtl.c (rtl_create_basic_block): Likewise.
4111         (rtl_split_block): Likewise.
4112         (rtl_dump_bb): Likewise.
4113         (cfg_layout_split_block): Likewise.
4114         (init_rtl_bb_info): Use typesafe memory macros.
4115
4116         * graphds.h (struct graph_edge): Renamed edge to graph_edge.
4117         * graphds.h: Updated all usages of edge to graph_edge.
4118         * graphds.c: Likewise.
4119         * cfgloopanal.c: Likewise.
4120
4121 2007-06-05  Ian Lance Taylor  <iant@google.com>
4122
4123         * tree-vrp.c (compare_values_warnv): Check TREE_NO_WARNING on a
4124         PLUS_EXPR or MINUS_EXPR node before setting *strict_overflow_p.
4125         (extract_range_from_assert): Set TREE_NO_WARNING when creating an
4126         expression.
4127         (test_for_singularity): Likewise.
4128
4129 2007-06-05  H.J. Lu  <hongjiu.lu@intel.com>
4130
4131         * config/i386/constraints.md ("Y2"): Replaced by ...
4132         ("Yt"): This.
4133         * config/i386/i386.md: Likewise.
4134         * config/i386/mmx.md: Likewise.
4135         * config/i386/sse.md: Likewise.
4136
4137 2007-06-05  H.J. Lu  <hongjiu.lu@intel.com>
4138
4139         * config/i386/constraints.md ("z"): Replaced by ...
4140         ("Y0"): This.
4141         * config/i386/sse.md (sse4_1_blendvpd): Likewise.
4142         (sse4_1_blendvps): Likewise.
4143         (sse4_1_pblendvb): Likewise.
4144         (sse4_2_pcmpestr): Likewise.
4145         (sse4_2_pcmpestrm): Likewise.
4146         (sse4_2_pcmpestr_cconly): Likewise.
4147         (sse4_2_pcmpistr): Likewise.
4148         (sse4_2_pcmpistrm): Likewise.
4149         (sse4_2_pcmpistr_cconly): Likewise.
4150
4151 2007-06-05  Razya Ladelsky  <razya@il.ibm.com>
4152
4153         * matrix-reorg.c (transform_access_sites): Fix computation.
4154         (transform_allocation_sites): Same.
4155
4156 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
4157
4158         * config/i386/i386.c (override_options): Use
4159         TARGET_SUBTARGET32_ISA_DEFAULT to select default ix86_isa_flags.
4160
4161 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
4162
4163         * config/i386/predicates.md (reg_not_xmm0_operand): New predicate.
4164         (nonimm_not_xmm0_operand): Ditto.
4165         * config/i386/sse.md ("sse4_1_blendvpd"): Use "reg_not_xmm0_operand"
4166         as operand[0] and operand[1] predicate.  Use "nonimm_not_xmm0_operand"
4167         as operand[2] predicate.  Require "z" class XMM register for
4168         operand[3].  Adjust asm template.
4169         ("sse4_1_blendvpd"): Ditto.
4170         ("sse4_1_pblendvb"): Ditto.
4171         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Do not
4172         force op2 into xmm0 register for variable blend instructions.
4173
4174 2007-06-04  Tom Tromey  <tromey@redhat.com>
4175
4176         * c-tree.h (start_enum): Update.
4177         (build_enumerator): Likewise.
4178         * c-decl.c (enum_next_value): Removed.
4179         (enum_overflow): Likewise.
4180         (start_enum): Add c_enum_contents argument.  Don't use globals.
4181         (build_enumerator): Likewise.
4182         * c-tree.h (struct c_enum_contents): New struct.
4183
4184 2007-06-04  Tom Tromey  <tromey@redhat.com>
4185
4186         * c-common.c (c_common_get_alias_set): Fix indentation.
4187
4188 2007-06-04  Ian Lance Taylor  <iant@google.com>
4189
4190         * tree-vrp.c (adjust_range_with_scev): When loop is not expected
4191         to overflow, reduce overflow infinity to regular infinity.
4192         (vrp_var_may_overflow): New static function.
4193         (vrp_visit_phi_node): Check vrp_var_may_overflow.
4194
4195 2007-06-04  Kazu Hirata  <kazu@codesourcery.com>
4196
4197         * stor-layout.c (layout_type): Remove duplicate code.
4198
4199 2007-06-04  Uros Bizjak  <ubizjak@gmail.com>
4200
4201         PR c/32191
4202         * gcc/c-common.c (c_define_builtins): Call targetm.init_builtins ()
4203         before build_common_builtin_nodes ().
4204
4205 2007-06-04  Steve Ellcey  <sje@cup.hp.com>
4206
4207         PR target/31733
4208         * cfgrtl.c (rtl_verify_flow_info): Skip notes when looking for barrier.
4209
4210 2007-06-04  Jan Hubicka  <jh@suse.cz>
4211
4212         * tree-predcom.c (replace_ref_with, initialize_root_vars_lm,
4213         reassociate_to_the_same_stmt): Call build_gimple_modify_stmt
4214         instead of _stat version.
4215
4216 2007-06-03  Zdenek Dvorak  <dvorakz@suse.cz>
4217
4218         PR tree-optimization/32194
4219         * tree-predcom.c (determine_offset): Check that both references have
4220         the same type.
4221
4222 2007-06-03  Zdenek Dvorak  <dvorakz@suse.cz>
4223
4224         * cfgloopmanip.c (remove_path, loopify, duplicate_loop_to_header_edge):
4225         Change dom_bbs to vector.  Add argument to iterate_fix_dominators call.
4226         * loop-unroll.c (unroll_loop_runtime_iterations): Ditto.
4227         * tree-cfg.c (tree_duplicate_sese_region): Change doms to vector.
4228         Add argument to iterate_fix_dominators call.
4229         (remove_edge_and_dominated_blocks): Pass vector to bbs_to_fix_dom.
4230         * gcse.c (hoist_code): Change domby to vector.
4231         * cfghooks.c (make_forwarder_block): Change doms_to_fix to vector.
4232         Add argument to iterate_fix_dominators call.
4233         * loop-doloop.c (doloop_modify): Changed recount_dominator to
4234         recompute_dominator.
4235         * lambda-code.c (perfect_nestify): Ditto.
4236         * cfgloopanal.c: Include graphds.h.
4237         (struct edge, struct vertex, struct graph, dump_graph, new_graph,
4238         add_edge, dfs, for_each_edge, free_graph): Moved to graphds.c.
4239         (mark_irreducible_loops): Use graphds_scc.  Remove argument from
4240         add_edge call.
4241         * graphds.c: New file.
4242         * graphds.h: New file.
4243         * dominance.c: Include vecprim.h, pointer-set.h and graphds.h.
4244         (get_dominated_by, get_dominated_by_region): Change return type to
4245         vector.
4246         (verify_dominators): Recompute all dominators and compare the results.
4247         (recount_dominator): Renamed to ...
4248         (recompute_dominator): ... this.  Do not check that the block is
4249         dominated by entry.
4250         (iterate_fix_dominators): Reimplemented.
4251         (prune_bbs_to_update_dominators, root_of_dom_tree,
4252         determine_dominators_for_sons): New functions.
4253         * et-forest.c (et_root): New function.
4254         * et-forest.h (et_root): Declare.
4255         * Makefile.in (graphds.o): Add.
4256         (cfgloopanal.o): Add graphds.h dependency.
4257         (dominance.o): Add graphds.h, vecprim.h and pointer-set.h dependency.
4258         * basic-block.h (get_dominated_by, get_dominated_by_region,
4259         iterate_fix_dominators): Declaration changed.
4260         (recount_dominator): Renamed to ...
4261         (recompute_dominator): ... this.
4262         * tree-ssa-threadupdate.c (thread_block): Free dominance info.
4263         (thread_through_all_blocks): Do not free dominance info.
4264
4265 2007-06-03  Andreas Schwab  <schwab@suse.de>
4266
4267         * config/m68k/m68k.c (override_options): Don't override
4268         REAL_MODE_FORMAT.
4269         * config/m68k/m68k-modes.def (SF, DF): Define to use
4270         motorola_single_format and motorola_double_format, resp.
4271         * real.c (motorola_single_format): Renamed from
4272         coldfire_single_format.
4273         (motorola_double_format): Renamed from coldfire_double_format.
4274         (encode_ieee_extended): Generate a proper canonical NaN image
4275         respecting canonical_nan_lsbs_set.
4276         (ieee_extended_motorola_format): Set canonical_nan_lsbs_set to
4277         true.
4278         * real.h: Adjust declarations.
4279
4280 2007-06-03  Kaz Kojima  <kkojima@gcc.gnu.org>
4281
4282         PR target/32163
4283         * config/sh/sh.md (symGOT_load): Don't schedule insns when
4284         the symbol is generated with the stack protector.
4285
4286 2007-06-03  Kazu Hirata  <kazu@codesourcery.com>
4287
4288         * config/m68k/m68k.c (m68k_attribute_table): Add "interrupt".
4289         (m68k_get_function_kind): Return m68k_fk_interrupt_handler on
4290         "interrupt".
4291         * doc/extend.texi (interrupt): Mention m68k.
4292
4293 2007-06-02  Uros Bizjak  <ubizjak@gmail.com>
4294
4295         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Call
4296         safe_vector_operand() if input operand is VECTOR_MODE_P operand.
4297         (ix86_expand_sse_pcmpestr): Do not check operands for
4298         "register_operand", when insn operand predicate is "register_operand".
4299         (ix86_expand_sse_pcmpistr): Ditto.
4300
4301 2007-06-02  H.J. Lu  <hongjiu.lu@intel.com>
4302             Uros Bizjak  <ubizjak@gmail.com>
4303
4304         * config/i386/i386.h (enum reg_class) [SSE_FIRST_REG]: New.
4305         (SSE_CLASS_P): Use reg_class_subset_p between SSE_REGS.
4306         (REG_CLASS_NAMES): Add "FIRST_SSE_REG" string.
4307         (REG_CLASS_CONTENTS): Add members of FIRST_SSE_REG class.
4308         * config/i386/constraints.md ("z"): New register constraint
4309         for members of SSE_FIRST_REG class.
4310         * config/i386/i386-modes.def (CCA, CCC, CCO, CCS): New compare modes.
4311         * config/i386/i386.c (regclass_map): Change class of %xmm0 to
4312         SSE_FIRST_REG class.
4313         (put_condition_code) [EQ, NE]: Output suffixes for new compare modes.
4314         (ix86_cc_modes_compatible): Handle CCA, CCC, CCO and CCS modes.
4315         (IX86_BUILTIN_PCMPESTRI128): New for SSE4.2.
4316         (IX86_BUILTIN_PCMPESTRM128): Likewise.
4317         (IX86_BUILTIN_PCMPESTRA128): Likewise.
4318         (IX86_BUILTIN_PCMPESTRC128): Likewise.
4319         (IX86_BUILTIN_PCMPESTRO128): Likewise.
4320         (IX86_BUILTIN_PCMPESTRS128): Likewise.
4321         (IX86_BUILTIN_PCMPESTRZ128): Likewise.
4322         (IX86_BUILTIN_PCMPISTRI128): Likewise.
4323         (IX86_BUILTIN_PCMPISTRM128): Likewise.
4324         (IX86_BUILTIN_PCMPISTRA128): Likewise.
4325         (IX86_BUILTIN_PCMPISTRC128): Likewise.
4326         (IX86_BUILTIN_PCMPISTRO128): Likewise.
4327         (IX86_BUILTIN_PCMPISTRS128): Likewise.
4328         (IX86_BUILTIN_PCMPISTRZ128): Likewise.
4329         (struct builtin_description): Change "flag" field to unsigned.
4330         (bdesc_pcmpestr): New builtin description table.
4331         (bdesc_pcmpistr): Likewise.
4332         (ix86_init_mmx_sse_builtins): Define int_ftype_v16qi_int_v16qi_int_int,
4333         v16qi_ftype_v16qi_int_v16qi_int_int and int_ftype_v16qi_v16qi_int.
4334         Initialize pcmp[ei]str[im] insns for SSE4.2.
4335         (ix86_expand_sse_pcmpestr): New subroutine of ix86_expand_builtin.
4336         (ix86_expand_sse_pcmpistr): Likewise.
4337         (ix86_expand_builtin): Expand pcmp[ei]str[im] builtins for SSE4.2.
4338         * config/i386/i386.md (UNSPEC_PCMPESTR): New for SSE4.2.
4339         (UNSPEC_PCMPISTR): Likewise.
4340         * config/i386/sse.md (sse4_2_pcmpestr): New insn patern and splitter.
4341         (sse4_2_pcmpestri):New isns pattern.
4342         (sse4_2_pcmpestrm): Likewise.
4343         (sse4_2_pcmpestr_cconly): Likewise.
4344         (sse4_2_pcmpistr): New insn patern and splitter.
4345         (sse4_2_pcmpistri):New isns pattern.
4346         (sse4_2_pcmpistrm): Likewise.
4347         (sse4_2_pcmpistr_cconly): Likewise.
4348         * config/i386/smmintrin.h: Enable pcmp[ei]str[im] intrinsics
4349         in SSE4.2.
4350
4351 2007-06-01  David Daney  <ddaney@avtrex.com>
4352
4353         * config/mips/mips.c (mips_output_mi_thunk): Only load gp if not
4354         LOADGP_ABSOLUTE and not binds_local_p.
4355
4356 2007-06-01  Geoffrey Keating  <geoffk@apple.com>
4357
4358         * config/darwin.h (LINK_SPEC): Pass -fpie through to the linker.
4359
4360 2007-06-01  Ian Lance Taylor  <iant@google.com>
4361
4362         * tree-vrp.c (compare_name_with_value): Always set
4363         used_strict_overflow if we get a result from the variable itself.
4364
4365 2007-06-01  Ian Lance Taylor  <iant@google.com>
4366
4367         PR rtl-optimization/31455
4368         * lower-subreg.c (find_decomposable_subregs): Don't decompose
4369         subregs which have a cast between modes which are not tieable.
4370
4371 2007-06-01  Uros Bizjak  <ubizjak@gmail.com>
4372
4373         * expr.c (force_operand) [DIV, MOD, UDIV, UMOD, ASHIFTRT]: Remove
4374         breaks after return statements.
4375
4376 2007-06-01  Kaz Kojima  <kkojima@gcc.gnu.org>
4377
4378         * config/sh/sh.c (fpscr_set_from_mem): Call get_free_reg
4379         only after no_new_pseudos.
4380
4381 2007-05-31  Eric Christopher  <echristo@apple.com>
4382
4383         * expr.c (convert_move): Assert that we don't have a BLKmode
4384         operand.
4385         (store_expr): Handle BLKmode moves by calling emit_block_move.
4386
4387 2007-05-31  Daniel Berlin  <dberlin@dberlin.org>
4388
4389         * c-typeck.c (build_indirect_ref): Include type in error message.
4390         (build_binary_op): Pass types to binary_op_error.
4391         * c-common.c (binary_op_error): Take two type arguments, print out
4392         types with error.
4393         * c-common.h (binary_op_error): Update prototype.
4394
4395 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
4396
4397         * config/i386/i386.c: Correct coments on -mno-sse4.
4398
4399 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
4400
4401         * config.gcc (i[34567]86-*-*): Add nmmintrin.h to extra_headers.
4402         (x86_64-*-*): Likewise.
4403         * config/i386/i386.c (OPTION_MASK_ISA_MMX_UNSET): New.
4404         (OPTION_MASK_ISA_3DNOW_UNSET): Likewise.
4405         (OPTION_MASK_ISA_SSE_UNSET): Likewise.
4406         (OPTION_MASK_ISA_SSE2_UNSET): Likewise.
4407         (OPTION_MASK_ISA_SSE3_UNSET): Likewise.
4408         (OPTION_MASK_ISA_SSSE3_UNSET): Likewise.
4409         (OPTION_MASK_ISA_SSE4_1_UNSET): Likewise.
4410         (OPTION_MASK_ISA_SSE4_2_UNSET): Likewise.
4411         (OPTION_MASK_ISA_SSE4): Likewise.
4412         (OPTION_MASK_ISA_SSE4_UNSET): Likewise.
4413         (OPTION_MASK_ISA_SSE4A_UNSET): Likewise.
4414         (ix86_handle_option): Use OPTION_MASK_ISA_*_UNSET.  Handle SSE4.2.
4415         (override_options): Support SSE4.2.
4416         (ix86_build_const_vector): Support SImode and DImode.
4417         (ix86_build_signbit_mask): Likewise.
4418         (ix86_expand_int_vcond): Support V2DImode.
4419         (IX86_BUILTIN_CRC32QI): New for SSE4.2.
4420         (IX86_BUILTIN_CRC32HI): Likewise.
4421         (IX86_BUILTIN_CRC32SI): Likewise.
4422         (IX86_BUILTIN_CRC32DI): Likewise.
4423         (IX86_BUILTIN_PCMPGTQ): Likewise.
4424         (bdesc_crc32): Likewise.
4425         (bdesc_sse_3arg): Likewise.
4426         (ix86_expand_crc32): Likewise.
4427         (ix86_init_mmx_sse_builtins): Support SSE4.2.
4428         (ix86_expand_builtin): Likewise.
4429         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
4430         __SSE4_2__ for -msse4.2.
4431         * config/i386/i386.md (UNSPEC_CRC32): New for SSE4.2.
4432         (CRC32MODE): Likewise.
4433         (crc32modesuffix): Likewise.
4434         (crc32modeconstraint): Likewise.
4435         (sse4_2_crc32<mode>): Likewise.
4436         (sse4_2_crc32di): Likewise.
4437         * config/i386/i386.opt (msse4.2): New for SSE4.2.
4438         (msse4): Likewise.
4439         * config/i386/nmmintrin.h: New. The dummy SSE4.2 intrinsic header file.
4440         * config/i386/smmintrin.h: Add SSE4.2 intrinsics.
4441         * config/i386/sse.md (sse4_2_gtv2di3): New pattern for SSE4.2.
4442         (vcond<mode>): Use SSEMODEI instead of SSEMODE124.
4443         (vcondu<mode>): Likewise.
4444         * doc/extend.texi: Document SSE4.2 built-in functions.
4445         * doc/invoke.texi: Document -msse4.2/-msse4.
4446
4447 2007-05-31  Zdenek Dvorak  <dvorakz@suse.cz>
4448
4449         PR tree-optimization/32160
4450         * tree-predcom.c (predcom_tmp_var): New function.  Mark created
4451         variable as gimple reg.
4452         (initialize_root_vars, initialize_root_vars_lm): Use predcom_tmp_var.
4453
4454 2007-05-31  Kazu Hirata  <kazu@codesourcery.com>
4455
4456         * gcc.c (main): Don't consider linker options when issuing the
4457         warning about a linker input file not being used.
4458
4459 2007-05-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
4460
4461         * tree-vrp.c (compare_names): Initialize sop.
4462
4463 2007-05-30  Dirk Mueller  <dmueller@suse.de>
4464
4465         * cgraphunit.c (cgraph_analyze_function): Remove
4466         computation of inline parameters.
4467
4468 2007-05-30  Uros Bizjak  <ubizjak@gmail.com>
4469
4470         * config/i386/darwin.h (TARGET_SUBTARGET_DEFAULT): Undef before define.
4471
4472 2007-05-30  Richard Sandiford  <richard@codesourcery.com>
4473
4474         * config.gcc (arm-wrs-vxworks): Remove dbxelf.h from tm_file.
4475         Add vx-common.h.  Include vxworks.h between vx-common.h and
4476         arm/vxworks.h.
4477         * config/vx-common.h (DWARF2_UNWIND_INFO): Undefine before
4478         redefining.
4479         * config/vxworks.h (TARGET_ASM_CONSTRUCTOR): Likewise.
4480         (TARGET_ASM_DESTRUCTOR): Likewise.
4481         * config/arm/vxworks.h (TARGET_OS_CPP_BUILTINS): Check arm_arch_xscale
4482         instead of arm_is_xscale.  Use VXWORKS_OS_CPP_BUILTINS.
4483         (OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
4484         (CC1_SPEC): Add -tstrongarm.  Line up backslashes.
4485         (VXWORKS_ENDIAN_SPEC): Define.
4486         (ASM_SPEC): Add VXWORKS_ENDIAN_SPEC.
4487         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine to their
4488         VXWORKS_* equivalents.
4489         (LINK_SPEC): Likewise, but add VXWORKS_ENDIAN_SPEC.
4490         (ASM_FILE_START): Delete.
4491         (TARGET_VERSION): Reformat.
4492         (FPUTYPE_DEFAULT, FUNCTION_PROFILER): Define.
4493         (DEFAULT_STRUCTURE_SIZE_BOUNDARY): Define.
4494         * config/arm/t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Define.
4495         (FPBIT, DPBIT): Define.
4496         (fp-bit.c, dp-bit.c): New rules.
4497         (MULTILIB_OPTIONS): Add strongarm, -mrtp and -mrtp/-fPIC multilibs.
4498         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Define.
4499         * config/arm/arm-protos.h (arm_emit_call_insn): Declare.
4500         * config/arm/arm.h: Include vxworks-dummy.h.
4501         * config/arm/arm.c (arm_elf_asm_constructor, arm_elf_asm_destructor):
4502         Mark with ATTRIBUTE_UNUSED.
4503         (arm_override_options): Do not allow VxWorks RTP PIC to be used
4504         for Thumb.  Force r9 to be the PIC register for VxWorks RTPs and
4505         make it incompatible with -msingle-pic-base.
4506         (arm_function_ok_for_sibcall): Return false for calls that might
4507         go through a VxWorks PIC PLT entry.
4508         (require_pic_register): New function, split out from...
4509         (legitimize_pic_address): ...here.  Do not use GOTOFF accesses
4510         for VxWorks RTPs.
4511         (arm_load_pic_register): Handle the VxWorks RTP initialization
4512         sequence.  Use pic_reg as a shorthand for cfun->machine->pic_reg.
4513         (arm_emit_call_insn): New function.
4514         (arm_assemble_integer): Do not use GOTOFF accesses for VxWorks RTP.
4515         * config/arm/arm.md (UNSPEC_PIC_OFFSET): New unspec number.
4516         (pic_offset_arm): New pattern.
4517         (call, call_value): Use arm_emit_call_insn.
4518         (call_internal, call_value_internal): New expanders.
4519         * config/arm/lib1funcs.asm (__PLT__): Define to empty for
4520         VxWorks unless __PIC__.
4521
4522 2007-05-30  Eric Christopher  <echristo@gmail.com>
4523
4524         * genrecog.c: Include regs.h in generated file.
4525         * genemit.c: Ditto. Fix up formatting.
4526         * config/mn10300/constraints.md: New.
4527         * config/mn10300/mn10300.md: Include.
4528         * config/mn10300/mn10300.c(mn10300_secondary_reload_class):
4529         Fix up for removed macro.
4530         * config/mn10300/predicates.md (call_address_operand):  Ditto.
4531         * config/mn10300/mn10300.h (REG_CLASS_FROM_LETTER): Delete.
4532         (CONST_OK_FOR_I): Ditto.
4533         (CONST_OK_FOR_J): Ditto.
4534         (CONST_OK_FOR_K): Ditto.
4535         (CONST_OK_FOR_L): Ditto.
4536         (CONST_OK_FOR_M): Ditto.
4537         (CONST_OK_FOR_N): Ditto.
4538         (CONST_DOUBLE_OK_FOR_LETTER_P): Ditto.
4539         (OK_FOR_Q): Ditto.
4540         (OK_FOR_R): Ditto.
4541         (OK_FOR_T): Ditto.
4542         (EXTRA_CONSTRAINT): Ditto.
4543
4544 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
4545
4546         * config/i386/i386.h (MASK_64BIT, MASK_MMX, MASK_3DNOW*, MASK_SSE*):
4547         Remove defines.
4548         * config/i386/biarch.h (TARGET_64BIT_DEFAULT): Define to
4549         OPTION_MASK_ISA_64BIT.
4550         * config/i386/i386.c: Rename MASK_* macros to OPTION_MASK_ISA_*.
4551
4552 2007-05-30  Richard Guenther  <rguenther@suse.de>
4553
4554         PR middle-end/32152
4555         * gimplify.c (gimplify_omp_atomic_pipeline): Use correct
4556         types for comparison.
4557         * fold-const.c (fold_comparison): Call maybe_canonicalize_comparison
4558         with original typed arguments.
4559         * config/i386/i386.c (ix86_gimplify_va_arg): Fix type mismatches.
4560
4561 2007-05-30  Jakub Jelinek  <jakub@redhat.com>
4562
4563         PR tree-optimization/31769
4564         * except.c (duplicate_eh_regions): Clear prev_try if
4565         ERT_MUST_NOT_THROW region is inside of ERT_TRY region.
4566
4567 2007-05-30  Zdenek Dvorak  <dvorakz@suse.cz>
4568
4569         * tree-scalar-evolution.c (scev_const_prop): Do not create labels.
4570         * tree-ssa-sink.c (statement_sink_location): Return basic block and
4571         bsi of the location where statements should be inserted.
4572         (sink_code_in_bb): Take bsi from statement_sink_location.
4573         * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Use bsi_after_labels
4574         instead of bsi_start.
4575         * tree-profile.c (tree_gen_ic_func_profiler): Pass BSI_NEW_STMT to
4576         bsi_insert_after.
4577         * tree-cfg.c (bsi_move_after): Pass BSI_NEW_STMT to bsi_insert_after.
4578         (bsi_move_before): Document inconsistency with bsi_move_after.
4579         (tree_redirect_edge_and_branch): Do not create labels if not necessary.
4580
4581 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
4582
4583         * config/i386/i386.h (TARGET_ABM): New define.
4584         (TARGET_POPCNT): Ditto.
4585         (TARGET_64BIT, TARGET_MMX, TARGET_3DNOW, TARGET_3DNOW_A, TARGET_SSE*):
4586         New temporary defines to redefine from OPTION_ISA_* defines.
4587         (MASK_64BIT, MASK_MMX, MASK_3DNOW, MASK_3DNOW_A, MASK_SSE*):
4588         New temporary defines to redefine from OPTION_MASK_ISA_* defines.
4589         (ix86_isa_flags): New extern int declaration.
4590         (TARGET_SUBTARGET_DEFAULT): New define.
4591         (TARGET_SUBTARGET_ISA_DEFAULT): Ditto.
4592         (TARGET_SUBTARGET32_DEFAULT): Ditto.
4593         (TARGET_SUBTARGET32_ISA_DEFAULT): Ditto.
4594         (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
4595         * config/i386/unix.h: Undef TARGET_SUBTARGET_DEFAULT before define.
4596         * config/i386/darwin.h: Change TARGET_64BIT define to
4597         OPTION_ISA_64BIT.
4598
4599         * config/i386/i386.opt (m3dnowa): Define as undocumented option
4600         using existing "ix86_isa_flags" varible.
4601         (m32, m64): Use existing "ix86_isa_flags" variable.
4602         (mmmx, m3dnow): Ditto.
4603         (msse, msse2, msse3, mssse3, msse4.1, msse4a): Ditto.
4604         (mabm): Define as non-negative option using "x86_abm" variable.
4605         (mpopcnt): Define as non-negative option using "x86_popcnt" variable.
4606
4607         * config/i386/i386.c (ix86_arch_features) [X86_ARCH_CMOVE]:
4608         Rewrite feature test bitmap.
4609         (ix86_isa_flags): New initialized global int varible.
4610         (ix86_isa_flags_explicit): New static int variable.
4611         (ix86_handle_option): Set "ix86_isa_flags_explicit" when mmmx, m3dnow,
4612         msse, msse2, msse3, msse4.1 and msse4a option is processed.  Change
4613         i86_isa_flags and ix86_isa_flags_explicit, not target_flags and
4614         target_flags_explicit.
4615         (override_options): Remove "target_enable" and "target_disable" fields
4616         from "struct ptt". Update processor_target_table accordingly. Remove
4617         PTA_PREFETCH_SSE from processor_alias_table entry if PTE_SSE is
4618         defined and rearrange PTA_* bits.  Use "ix86_isa_flags" instead of
4619         "target_flags" and "ix86_isa_flags_explicit" instead of
4620         "target_flags_explicit" when masked with MASK_64BIT, MASK_MMX,
4621         MASK_3DNOW, MASK_3DNOW_A or MASK_SSE*.  Set "x86_abm" to true when
4622         PTA_ABM is set in processor_alias_table flags entry.  Set "x86_popcnt"
4623         to true when either of PTA_POPCNT or PTA_ABM is set in
4624         processor_alias_table flags entry.  Set "x86_prefetch_sse" to true
4625         when either of PTA_PREFETCH_SSE or PTA_SSE is set in
4626         processor_alias_table flags entry.  Remove handling of
4627         "target_enable" and "target_disable" fields of processor_target_table.
4628         Mask "target_flags" with TARGET_SUBTARGET32_DEFAULT for 32-bit
4629         targets or with TARGET_SUBTARGET64_DEFAULT for 64-bit targets.
4630         Mask "ix86_isa_flags" with TARGET_SUBTARGET32_ISA_DEFAULT for 32-bit
4631         targets or with TARGET_SUBTARGET64_ISA_DEFAULT for 64-bit targets.
4632         (def_builtin): Mask "mask" variable with "ix86_isa_flags", not
4633         "target_flags".
4634         (TARGET_DEFAULT_TARGET_FLAGS): Do not include TARGET_64BIT_DEFAULT.
4635
4636 2007-05-29  David Daney  <ddaney@avtrex.com>
4637
4638         PR gcc/31975
4639         * config/mips/mips.c (mips_output_mi_thunk): Emit
4640         NOTE_INSN_PROLOGUE_END at beginning of the thunk.
4641
4642 2007-05-29  Hui-May Chang  <hm.chang@apple.com>
4643         * config/i386/i386.c (ix86_function_regparm): Added checking of
4644         ix86_force_align_arg_pointer to determine the number of
4645         register parameters.
4646
4647 2007-05-29  Zdenek Dvorak  <dvorakz@suse.cz>
4648
4649         * tree-vectorizer.h (DR_MISALIGNMENT): Cast aux to integer.
4650         (SET_DR_MISALIGNMENT): New.
4651         * tree-vect-analyze.c (vect_compute_data_ref_alignment,
4652         vect_update_misalignment_for_peel, vect_enhance_data_refs_alignment):
4653         Use SET_DR_MISALIGNMENT.
4654         * tree-predcom.c (split_data_refs_to_components): Cast dr->aux from
4655         pointer.
4656         * tree-data-ref.c (create_data_ref, compute_all_dependences,
4657         find_loop_nest): Export.
4658         * tree-data-ref.h (struct data_reference): Change aux field to pointer.
4659         (create_data_ref, compute_all_dependences, find_loop_nest): Declare.
4660         * tree-ssa-loop-prefetch.c: Include tree-data-ref.h.
4661         (L1_CACHE_SIZE_BYTES, L2_CACHE_SIZE_BYTES, NONTEMPORAL_FRACTION):
4662         New macros.
4663         (struct mem_ref): Add field reuse_distance.
4664         (find_or_create_group, record_ref): Use XNEW instead of xcalloc.
4665         Initialize reuse_distance field.
4666         (issue_prefetch_ref): Select temporality of prefetch according to
4667         reuse_distance.
4668         (volume_of_references, volume_of_dist_vector, add_subscript_strides,
4669         self_reuse_distance, determine_loop_nest_reuse): New functions.
4670         (loop_prefetch_arrays): Call determine_loop_nest_reuse.
4671         (tree_ssa_prefetch_arrays): Dump L2 cache size.
4672         * Makefile.in (tree-ssa-loop-prefetch.o): Add TREE_DATA_REF_H
4673         dependency.
4674
4675 2007-05-29  Daniel Berlin  <dberlin@dberlin.org>
4676
4677         * tree-ssa-alias.c: Add aliasing overview.
4678
4679 2007-05-29  Zuxy Meng  <zuxy.meng@gmail.com>
4680             Danny Smith  <dannysmith@users.sourceforge.net>
4681
4682         PR target/29498
4683         * config/i386/t-crtfm: Compile crtfastmath.o with
4684         -minline-all-stringops.
4685         * config/i386/cygwin.h (ENDFILE_SPECS): Add crtfastmath.o.
4686         * config/i386/mingw32.h (ENDFILE_SPECS): Add crtfastmath.o.
4687
4688 2007-05-28  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4689
4690         * doc/md.texi: Document constraints on HP PA-RISC.
4691
4692         * pa/constraints.md: New file.
4693         * pa.md: Include constraints.md.
4694         * pa.c (cint_ok_for_move): Avoid using CONST_OK_FOR_LETTER_P.
4695         (integer_store_memory_operand, ldil_cint_p): New functions.
4696         * pa-protos.h (integer_store_memory_operand, ldil_cint_p): Declare.
4697         * pa.h (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
4698         IS_RELOADING_PSEUDO_P, EXTRA_CONSTRAINT): Remove.
4699         * pa32-regs.h (REG_CLASS_FROM_LETTER): Remove.
4700         * pa64-regs.h (REG_CLASS_FROM_LETTER): Remove.
4701
4702 2007-05-28  Andrew Pinski  <Andrew_pinski@playstation.sony.com>
4703
4704         PR c/31339
4705         * c-typeck.c (build_unary_op <case PREINCREMENT_EXPR,
4706         case POSTINCREMENT_EXPR, case PREDECREMENT_EXPR,
4707         case POSTDECREMENT_EXPR>): Return the error_mark_node
4708         if either the real or imaginary parts would an
4709         error_mark_node.
4710
4711 2007-05-28  Daniel Berlin  <dberlin@dberlin.org>
4712
4713         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Release LHS SSA
4714         name when we remove it from a call.
4715
4716 2007-05-28  Kazu Hirata  <kazu@codesourcery.com>
4717
4718         * targhooks.c (default_narrow_bitfield): Remove.
4719         * targhooks.h: Remove the prototype for
4720         default_narrow_bitfield.
4721
4722         * langhooks-def.h: Remove the prototype for
4723         hook_get_alias_set_0.
4724         * langhooks.c (hook_get_alias_set_0): Remove.
4725
4726         * global.c (EXECUTE_IF_CONFLICT): Remove.
4727
4728 2007-05-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4729
4730         PR tree-opt/32100
4731         * fold-const.c (tree_expr_nonnegative_warnv_p): Don't
4732         return true when truth_value_p is true and the type
4733         is of signed:1.
4734
4735 2007-05-28  Gerald Pfeifer  <gerald@pfeifer.com>
4736
4737         * doc/install.texi (Prerequisites): We no longer require Autoconf
4738         2.13 for the top-level.
4739
4740 2007-05-28  Uros Bizjak  <ubizjak@gmail.com>
4741
4742         * target/i386/i386.c (ix86_expand_vector_move): Expand unaligned
4743         memory access via x86_expand_vector_move_misalign() only for
4744         TImode values on 32-bit targets.
4745
4746 2007-05-28  Razya Ladelsky  <razya@il.ibm.com>
4747
4748         * matrix-reorg.c: New file. Implement matrix flattening and
4749         transposing optimization.
4750         * tree-pass.h: Add matrix reorg pass.
4751         * common.opt: Add fipa-mreorg flag.
4752         * Makefile.in: Add matrix-reorg.c.
4753         * passes.c: Add matrix reorg pass.
4754         * varpool.c (add_new_static_var): New function.
4755         * cgraph.h (add_new_static_var): Declare.
4756
4757 2007-05-27  Eric Christopher  <echristo@apple.com>
4758
4759         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update
4760         sp_offset depending on stack size. Save r12 depending
4761         on registers we're saving later.
4762         (rs6000_emit_epilogue): Update sp_offset depending only
4763         on stack size.
4764
4765 2007-05-27  Zdenek Dvorak  <dvorakz@suse.cz>
4766
4767         * tree-vrp.c (execute_vrp): Do not check whether current_loops == NULL.
4768         * tree-chrec.c (evolution_function_is_invariant_rec_p): Ditto.
4769         * ifcvt.c (if_convert): Ditto.
4770         * tree-ssa-threadupdate.c (thread_block): Ditto.
4771         (thread_through_all_blocks): Ditto.  Assert that loops were analysed.
4772         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa,
4773         verify_loop_closed_ssa): Check number_of_loops instead of
4774         current_loops.
4775         * predict.c (tree_estimate_probability): Ditto.
4776         * tree-if-conv.c (main_tree_if_conversion): Ditto.
4777         * tree-ssa-loop-ch.c (copy_loop_headers): Ditto.
4778         * modulo-sched.c (sms_schedule): Ditto.
4779         * tree-scalar-evolution.c (scev_const_prop): Ditto.
4780         (scev_finalize): Do not do anything if scev analysis was not
4781         initialized.
4782         * cfgloopanal.c (mark_irreducible_loops): Do not check whether
4783         current_loops == NULL.
4784         (mark_loop_exit_edges): Check number_of_loops instead of current_loops.
4785         * loop-init.c (loop_optimizer_init): Do not free current_loops when
4786         there are no loops.
4787         (loop_optimizer_finalize): Assert that loops were analyzed.
4788         (rtl_move_loop_invariants, rtl_unswitch, rtl_unroll_and_peel_loops,
4789         rtl_doloop): Check number_of_loops instead of current_loops.
4790         * tree-ssa-loop.c (tree_loop_optimizer_init): Do not check whether
4791         current_loops == NULL.
4792         (tree_ssa_loop_init, tree_ssa_loop_im, tree_ssa_loop_unswitch,
4793         gate_tree_vectorize tree_linear_transform, check_data_deps,
4794         tree_ssa_loop_ivcanon, tree_ssa_empty_loop, tree_ssa_loop_bounds,
4795         tree_complete_unroll, tree_ssa_loop_prefetch, tree_ssa_loop_ivopts):
4796         Check number_of_loops instead of current_loops.
4797         (tree_ssa_loop_done): Do not check whether current_loops == NULL.
4798         * tree-ssa-pre.c (fini_pre): Do not take do_fre argument.  Always
4799         free loops if available.
4800         (execute_pre): Do not pass do_fre to fini_pre.
4801
4802 2007-05-27  Tobias Burnus  <burnus@net-b.de>
4803
4804         PR middle-end/32083
4805         * real.c (mpfr_from_real): Fix sign of -Inf.
4806
4807 2007-05-27  H.J. Lu  <hongjiu.lu@intel.com>
4808
4809         * tree-vect-transform.c (vectorizable_conversion): Initialize
4810         tree_code variables to ERROR_MARK.
4811         (vectorizable_type_demotion): Likewise.
4812         (vectorizable_type_promotion): Likewise.
4813
4814 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
4815
4816         PR target/32065
4817         * config/i386/i386.md (movti): Handle push operands via
4818         ix86_expand_push().
4819
4820 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
4821
4822         * basic-block.h: Remove the prototype for merge_seq_blocks.
4823         * cfgcleanup.c (merge_seq_blocks): Remove.
4824
4825         * tree-flow.h: Remove the prototype for is_aliased_with.
4826         * tree-ssa-alias.c (is_aliased_with): Remove.
4827
4828 2007-05-26  H.J. Lu  <hongjiu.lu@intel.com>
4829
4830         * config/i386/i386-protos.h (ix86_expand_sse4_unpack): New.
4831
4832         * config/i386/i386.c (ix86_expand_sse4_unpack): New.
4833
4834         * config/i386/sse.md (vec_unpacku_hi_v16qi): Call
4835         ix86_expand_sse4_unpack if SSE4.1 is enabled.
4836         (vec_unpacks_hi_v16qi): Likewise.
4837         (vec_unpacku_lo_v16qi): Likewise.
4838         (vec_unpacks_lo_v16qi): Likewise.
4839         (vec_unpacku_hi_v8hi): Likewise.
4840         (vec_unpacks_hi_v8hi): Likewise.
4841         (vec_unpacku_lo_v8hi): Likewise.
4842         (vec_unpacks_lo_v8hi): Likewise.
4843         (vec_unpacku_hi_v4si): Likewise.
4844         (vec_unpacks_hi_v4si): Likewise.
4845         (vec_unpacku_lo_v4si): Likewise.
4846         (vec_unpacks_lo_v4si): Likewise.
4847
4848 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
4849
4850         * c-typeck.c, config/arm/arm.c, config/darwin.c,
4851         config/sh/symbian.c, gcc.c, ipa-cp.c, ipa-inline.c, loop-iv.c,
4852         omega.c, tree-ssa-loop-niter.c, treestruct.def: Fix typos and
4853         follow spelling conventions in various
4854         warning/error/diagnostic messages.
4855
4856         * config/i386/i386.c, config/pa/pa.c, config/spu/spu.c,
4857         df-problems.c, df-scan.c, domwalk.c, ebitmap.c, ebitmap.h,
4858         fold-const.c, gcc.c, ipa-type-escape.c, omega.c, omega.h,
4859         tree-ssa-coalesce.c, tree-ssa-live.c, tree-ssa-structalias.c,
4860         tree-vrp.c: Fix comment typos.  Follow spelling conventions.
4861         * doc/tm.texi: Follow spelling conventions.
4862
4863 2007-05-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4864
4865         PR tree-opt/32090
4866         * tree-ssa-forwprop.c
4867         (forward_propagate_addr_into_variable_array_index): Remove
4868         the lhs argument.  Use the type of def_rhs instead of lhs.
4869         (forward_propagate_addr_expr_1): Update use of
4870         forward_propagate_addr_into_variable_array_index.
4871
4872 2007-05-25  Sandra Loosemore  <sandra@codesourcery.com>
4873             Nigel Stephens  <nigel@mips.com>
4874
4875         * config/mips/mips.c (mips_attribute_table): Add "near" and "far"
4876         function attributes, "far" being an alias for "long_call".
4877         (TARGET_COMP_TYPE_ATTRIBUTES): Define as mips_comp_type_attributes.
4878         (mips_near_type_p, mips_far_type_p): New.
4879         (mips_comp_type_attributes): New function to check that attributes
4880         attached to a function type are compatible.
4881         (mips_output_mi_thunk): Test SYMBOL_REF_LONG_CALL_P() rather than
4882         TARGET_LONG_CALLS when deciding whether we can do a direct sibcall
4883         to the target function of the thunk.
4884         (mips_encode_section_info): Check for "near" and "far" function
4885         attributes, and always set the SYMBOL_FLAG_LONG_CALL bit explicitly.
4886
4887         * config/mips/predicates.md (const_call_insn_operand): Test only
4888         SYMBOL_REF_LONG_CALL_P() and not TARGET_LONG_CALLS.
4889
4890         * doc/extend.texi (Function Attributes): Document MIPS "near" and
4891         "far" attributes.
4892
4893         * testsuite/gcc.target/mips/near-far-1.c:  New test case.
4894         * testsuite/gcc.target/mips/near-far-2.c:  New test case.
4895         * testsuite/gcc.target/mips/near-far-3.c:  New test case.
4896         * testsuite/gcc.target/mips/near-far-4.c:  New test case.
4897
4898 2007-05-25  Eric Christopher  <echristo@apple.com>
4899
4900         * config.gcc: Add i386/t-fprules-softfp64 and soft-fp/t-softfp
4901         to x86-darwin configurations.
4902         * config/i386/t-darwin: Add softfp support.
4903         * config/i386/t-darwin64: Ditto.
4904         * config/i386/sfp-machine.h: If mach then don't use
4905         aliasing, emit a stub to call.
4906
4907 2007-05-25  Kazu Hirata  <kazu@codesourcery.com>
4908
4909         * cfglayout.c, cgraphunit.c, config/avr/avr.c, fold-const.c,
4910         haifa-sched.c, optabs.h, tree-affine.c, tree-data-ref.c,
4911         tree-predcom.c, tree-ssa-alias-warnings.c,
4912         tree-ssa-forwprop.c, tree-vect-analyze.c, tree-vrp.c: Fix
4913         comment typos.  Follow spelling conventions.
4914         * doc/cpp.texi, doc/invoke.texi: Fix typos.
4915
4916 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
4917
4918         PR target/32065
4919         * target/i386/i386.c (ix86_expand_vector_move): Force SUBREGs of
4920         constants into memory.  Expand unaligned memory references for
4921         SSE modes via x86_expand_vector_move_misalign() function.
4922
4923 2007-05-25  Uros Bizjak  <ubizjak@gmail.com>
4924
4925         * config/i386/sse.md (*vec_extractv2di_1_sse2): Do not calculate
4926         "memory" attribute for "sseishft" type insn without operands[2].
4927
4928 2007-05-25  Dirk Mueller  <dmueller@suse.de>
4929             Marcus Meissner <meissner@suse.de>
4930
4931         * doc/extend.texi (alloc_size): New attribute.
4932         * c-common.c (handle_alloc_size_attribute): New.
4933         * tree-object-size.c (alloc_object_size): Use alloc_size
4934         attribute, if available.
4935
4936 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
4937
4938         * config/i386/i386.c (__builtin_ia32_vec_ext_v2df): Mark it
4939         with MASK_SSE2.
4940         (__builtin_ia32_vec_ext_v2di): Likewise.
4941         (__builtin_ia32_vec_ext_v4si): Likewise.
4942         (__builtin_ia32_vec_ext_v8hi): Likewise.
4943         (__builtin_ia32_vec_ext_v16qi): Likewise.
4944         (__builtin_ia32_vec_set_v8hi): Likewise.
4945
4946 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
4947
4948         * config/i386/sse.md (*vec_extractv2di_1_sse2): Correct shift.
4949
4950 2007-05-25  Richard Sandiford  <richard@codesourcery.com>
4951
4952         * config/arm/arm-protos.h (arm_encode_call_attribute): Delete.
4953         (arm_is_longcall_p): Rename to...
4954         (arm_is_long_call_p): ...this.  Take a single tree argument and
4955         return a bool.
4956         * config/arm/arm.h (CALL_SHORT, CALL_LONG, CALL_NORMAL): Delete.
4957         (CUMULATIVE_ARGS): Remove call_cookie.
4958         (SHORT_CALL_FLAG_CHAR, LONG_CALL_FLAG_CHAR, ENCODED_SHORT_CALL_ATTR_P)
4959         (ENCODED_LONG_CALL_ATTR_P): Delete.
4960         (ARM_NAME_ENCODING_LENGTHS): Remove SHORT_CALL_FLAG_CHAR and
4961         LONG_CALL_FLAG_CHAR cases.
4962         (ARM_DECLARE_FUNCTION_SIZE): Delete.
4963         * config/arm/elf.h (ASM_DECLARE_FUNCTION_SIZE): Don't use
4964         ARM_DECLARE_FUNCTION_SIZE.
4965         * config/arm/arm.c (arm_init_cumulative_args): Don't set call_cookie.
4966         (arm_function_arg): Return const0_rtx for VOIDmode arguments.
4967         (arm_encode_call_attribute, current_file_function_operand): Delete.
4968         (arm_function_in_section_p): New function.
4969         (arm_is_longcall_p): Rename to...
4970         (arm_is_long_call_p): ...this.  Take the target function as a single
4971         argument and return a bool.  Do not rely on call cookies.  Check
4972         whether the target symbol is in the same section as the current
4973         function, not just the same compilation unit.
4974         (arm_function_ok_for_sibcall): Use arm_is_long_call_p.
4975         (arm_encode_section_info): Don't encode a call type.
4976         * config/arm/arm.md (call, call_value): Update calls to
4977         arm_is_long(_)call_p.  Simplify logic.
4978         (*call_symbol, *call_value_symbol, *call_insn, *call_value_insn):
4979         Update calls to arm_is_long(_)call_p.
4980
4981 2007-05-25  Richard Guenther  <rguenther@suse.de>
4982
4983         PR tree-optimization/31982
4984         * tree-ssa-forwprop.c
4985         (forward_propagate_addr_into_variable_array_index): Handle arrays
4986         with element size one.
4987
4988 2007-05-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4989
4990         * config/spu/spu.md (smulsi3_highpart): Unshare the rtl chain.
4991         (umulsi3_highpart): Likewise.
4992
4993 2007-05-24  Ian Lance Taylor  <iant@google.com>
4994
4995         PR rtl-optimization/32069
4996         * regclass.c (regclass): Don't crash if the entry in regno_reg_rtx
4997         is NULL.
4998
4999 2007-05-24  Ollie Wild  <aaw@google.com>
5000
5001         * doc/cpp.texi (Common Predefined Macros): Add __COUNTER__
5002         description.
5003
5004 2007-05-24  Richard Sandiford  <rsandifo@nildram.co.uk>
5005
5006         * postreload-gcse.c (reg_changed_after_insn_p): New function.
5007         (oprs_unchanged_p): Use it to check all registers in a REG.
5008         (record_opr_changes): Look for clobbers in CALL_INSN_FUNCTION_USAGE.
5009         (reg_set_between_after_reload_p): Delete.
5010         (reg_used_between_after_reload_p): Likewise.
5011         (reg_set_or_used_since_bb_start): Likewise.
5012         (eliminate_partially_redundant_load): Use reg_changed_after_insn_p
5013         and reg_used_between_p instead of reg_set_or_used_since_bb_start.
5014         Use reg_set_between_p instead of reg_set_between_after_reload_p.
5015         * rtlanal.c (reg_set_p): Check whether REG overlaps
5016         regs_invalidated_by_call, rather than just checking the
5017         membership of REGNO (REG).
5018
5019 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
5020
5021         * doc/passes.texi: Document predictive commoning.
5022         * doc/invoke.texi (-fpredictive-commoning): Document.
5023         * opts.c (decode_options): Enable flag_predictive_commoning on -O3.
5024         * tree-ssa-loop-im.c (get_lsm_tmp_name): Export.  Allow
5025         adding indices to the generated name.
5026         (schedule_sm): Pass 0 to get_lsm_tmp_name.
5027         * tree-ssa-loop-niter.c (stmt_dominates_stmt_p): Export.
5028         * tree-pretty-print.c (op_symbol_1): Renamed to ...
5029         (op_symbol_code): ... and exported.
5030         (dump_omp_clause, op_symbol): Use op_symbol_code
5031         instead of op_symbol_1.
5032         * tree-pass.h (pass_predcom): Declare.
5033         * timevar.def (TV_PREDCOM): New timevar.
5034         * tree-ssa-loop.c (run_tree_predictive_commoning,
5035         gate_tree_predictive_commoning, pass_predcom): New.
5036         * tree-data-ref.c (find_data_references_in_loop): Find the
5037         references in dominance order.
5038         (canonicalize_base_object_address): Ensure that the result has
5039         pointer type.
5040         (dr_analyze_innermost): Export.
5041         (create_data_ref): Code to fail for references with invariant
5042         address moved ...
5043         (find_data_references_in_stmt): ... here.
5044         * tree-data-ref.h (dr_analyze_innermost): Declare.
5045         * tree-affine.c: Include tree-gimple.h and hashtab.h.
5046         (aff_combination_find_elt, name_expansion_hash,
5047         name_expansion_eq, tree_to_aff_combination_expand,
5048         double_int_constant_multiple_p, aff_combination_constant_multiple_p):
5049         New functions.
5050         * tree-affine.h (aff_combination_constant_multiple_p,
5051         tree_to_aff_combination_expand): Declare.
5052         * tree-predcom.c: New file.
5053         * common.opt (fpredictive-commoning): New option.
5054         * tree-flow.h (op_symbol_code, tree_predictive_commoning,
5055         stmt_dominates_stmt_p, get_lsm_tmp_name): Declare.
5056         * Makefile.in (tree-predcom.o): Add.
5057         (tree-affine.o): Add TREE_GIMPLE_H dependency.
5058         * passes.c (init_optimization_passes):  Add dceloop after
5059         copy propagation in loop optimizer.  Add predictive commoning
5060         to loop optimizer passes.
5061
5062 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
5063
5064         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Correct
5065         default hook.
5066
5067 2007-05-24  Jan Hubicka  <jh@suse.cz>
5068
5069         * gengenrtl.c (gendecl, gendef): Output the gens annotated for
5070         statistics.
5071         (genheader): Include statistics.h.
5072
5073         * doc/invoke.texi (-fdump-unnumbered): Update docs when line number
5074         notes are gone.
5075         * print-rtl.c (flag_dump_unnumbered): Update comments.
5076         (print_rtl): Fix my previous change.
5077         * emit-rtl.c (emit_note_before, emit_note_after): Clear out note
5078         specific data.
5079
5080 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
5081
5082         PR middle-end/32018
5083         * tree-ssa-threadupdate.c (thread_through_loop_header): Use
5084         set_loop_copy.
5085         (thread_through_all_blocks): Call initialize_original_copy_tables
5086         and free_original_copy_tables.
5087         * cfgloopmanip.c (duplicate_loop, duplicate_loop_to_header_edge):
5088         Use set_loop_copy.
5089         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
5090         * cfghooks.c (duplicate_block): Use get_loop_copy.
5091         * cfg.c: Include cfgloop.h.
5092         (loop_copy): New hash table.
5093         (initialize_original_copy_tables): Initialize loop_copy table.
5094         (free_original_copy_tables): Free loop_copy table.
5095         (copy_original_table_clear, copy_original_table_set,
5096         set_loop_copy, get_loop_copy): New functions.
5097         (set_bb_original, set_bb_copy): Use copy_original_table_set.
5098         * cfgloop.h (struct loop): Remove copy field.
5099         * Makefile.in (cfg.o): Add CFGLOOP_H dependency.
5100         * basic-block.h (set_loop_copy, get_loop_copy): Declare.
5101
5102 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
5103
5104         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 for
5105         -msse/-msse2/-msse3.
5106
5107 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
5108
5109         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Mark
5110         __builtin_ia32_vec_set_v2di with MASK_64BIT.
5111
5112 2007-05-24  Danny Smith  <dannysmith@users.sourceforge.net>
5113
5114         PR target/27067
5115         * doc/tm.texi (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Document.
5116         * targhooks.h (default_mangle_decl_assembler_name): Declare
5117         default hook.
5118         * targhooks.c (default_mangle_decl_assembler_name): Define
5119         default hook.
5120         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) New. Set to
5121         default hook.
5122         * target.h (struct gcc_target): Add mangle_decl_assembler_name field.
5123         * langhooks.c (lhd_set_decl_assembler_name): Call
5124         targetm.mangle_decl_assembler_name for names with global scope.
5125
5126         * config/i386/cygming.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) Override
5127         default.
5128         (ASM_OUTPUT_DEF_FROM_DECLS): Simplify to use DECL_ASSEMBLER_NAME.
5129         * config/i386/i386-protos.h (i386_pe_mangle_decl_assembler_name):
5130         Declare.
5131         * config/i386/winnt.c (i386_pe_maybe_mangle_decl_assembler_name):
5132         New. Factored out of i386_pe_encode_section_info.
5133         (gen_stdcall_or_fastcall_suffix): Get name identifier as argument.
5134         Move check for prior decoration of stdcall
5135         symbols to i386_pe_encode_section_info.
5136         (i386_pe_encode_section_info): Adjust call to
5137         gen_stdcall_or_fastcall_suffix.  Use
5138         i386_pe_maybe_mangle_decl_assembler_name, if needed.
5139         (i386_pe_mangle_decl_assembler_name): New. Wrap
5140         i386_pe_maybe_mangle_decl_assembler_name.
5141
5142 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
5143
5144         * c-common.c (c_common_signed_or_unsigned_type): Delay the check for
5145         INTEGRAL_TYPE_P and TYPE_UNSIGNED.
5146         * langhooks.c (get_signed_or_unsigned_type): Don't check for
5147         INTEGRAL_TYPE_P or TYPE_UNSIGNED.
5148         (lhd_signed_or_unsigned_type): Check for INTEGRAL_TYPE_P and
5149         TYPE_UNSIGNED.
5150
5151 2007-05-23  Sandra Loosemore  <sandra@codesourcery.com>
5152             Nigel Stephens  <nigel@mips.com>
5153             Richard Sandiford  <richard@codesourcery.com>
5154
5155         Fix up MIPS16 hard float and add support for complex.
5156
5157         * config/mips/mips.h (TARGET_HARD_FLOAT_ABI): New.
5158         (TARGET_SOFT_FLOAT_ABI): New.
5159         (TARGET_CPU_CPP_BUILTINS): Define __mips_hard_float and
5160         __mips_soft_float to reflect the ABI in use, not whether the
5161         FPU is directly accessible (e.g., in MIPS16 mode).
5162         (UNITS_PER_HWFPVALUE): Use TARGET_SOFT_FLOAT_ABI.
5163         (UNITS_PER_FPVALUE): Likewise.
5164
5165         * config/mips/mips.c (mips_expand_call): Remove redundant
5166         TARGET_MIPS16 check.
5167         (mips_arg_regno): New.
5168         (function_arg_advance): When setting bits in cum->fp_code for
5169         MIPS16, don't subtract 1 from cum->arg_number, since it is now
5170         zero-based.
5171         (function_arg): Use mips_arg_regno.
5172         (mips_return_mode_in_fpr_p): New.
5173         (mips16_call_stub_mode_suffix): New.
5174         (mips16_cfun_returns_in_fpr_p): New.
5175         (mips_save_reg_p): Use mips16_cfun_returns_in_fpr_p.
5176         (mips_output_function_prologue): Test mips16_hard_float, not
5177         !TARGET_SOFT_FLOAT, to decide when a function stub is required.
5178         (mips_expand_epilogue): Call MIPS16 helper routines to copy
5179         return value into a floating-point register.
5180         (mips_can_use_return_insn): Use mips16_cfun_returns_in_fpr_p.
5181         (mips_function_value): Rewrite to use mips_return_mode_in_fpr_p.
5182         (mips16_fp_args): Handle MIPS32r2 ISA which supports
5183         TARGET_FLOAT64, and use mfhc1/mthc1 to copy the most significant
5184         word of double arguments from or to the high bits of 64-bit
5185         floating point registers.
5186         (build_mips16_function_stub): Fill in DECL_RESULT for stubdecl.
5187         (mips16_fpret_double): New helper function.
5188         (build_mips16_call_stub): Use mips16_return_mode_in_fpr_p.  Add
5189         support for complex modes.  Fill in DECL_RESULT for stubdecl.
5190         (mips_init_libfuncs): Remove redundant TARGET_MIPS16 check.
5191
5192         * config/mips/mips16.S
5193         (RET, ARG1, ARG2): New.
5194         (MERGE_GPRf, MERGE_GPRt): New.
5195         (DELAYt, DELAYf): New.
5196         (MOVE_SF_BYTE0, MOVE_SI_BYTE0): New.
5197         (MOVE_SF_BYTE4, MOVE_SF_BYTE8): New.
5198         (MOVE_DF_BYTE0, MOVE_DF_BYTE8): New.
5199         (MOVE_SF_RET, MOVE_SC_RET, MOVE_DF_RET, MOVE_DC_RET, MOVE_SI_RET): New.
5200         (SFOP): Renamed to...
5201         (OPSF3): This, and macro-ified.  Updated all uses.
5202         (SFOP2): Renamed to...
5203         (OPSF2): This, and macro-ified.  Updated all uses.
5204         (SFCMP): Renamed to...
5205         (CMPSF): This, and macro-ified.  Updated all uses.
5206         (SFREVCMP): Renamed to...
5207         (REVCMPSF): This, and macro-ified.  Updated all uses.
5208         (__mips16_floatsisf, __mips16_fix_truncsfsi): Macro-ified.
5209         (LDDBL1, LDDBL2, RETDBL): Deleted.
5210         (DFOP): Renamed to...
5211         (OPDF3): This, and macro-ified.  Updated all uses.
5212         (DFOP2): Renamed to...
5213         (OPDF2): This, and macro-ified.  Updated all uses.
5214         (__mips16_extendsfdf2, __mips16_truncdfsf2): Macro-ified.
5215         (DFCMP): Renamed to...
5216         (CMPDF): This, and macro-ified.  Updated all uses.
5217         (DFREVCMP): Renamed to...
5218         (REVCMPDF): This, and macro-ified.  Updated all uses.
5219         (__mips16_floatsidf, __mips16_fix_truncdfsi): Macro-ified.
5220         (RET_FUNCTION): New.
5221         (__mips16_ret_sf, __mips16_ret_df): Macro-ified.
5222         (__mips16_ret_sc, __mips16_ret_dc): New.
5223         (STUB_ARGS_0, STUB_ARGS_1, STUB_ARGS_5, STUB_ARGS_9, STUB_ARGS_2,
5224         STUB_ARGS_6, STUB_ARGS_10): New.
5225         (CALL_STUB_NO_RET): New.
5226         (__mips16_call_stub_1): Macro-ified.
5227         (__mips16_call_stub_5): Macro-ified.
5228         (__mips16_call_stub_2): Macro-ified.
5229         (__mips16_call_stub_6): Macro-ified.
5230         (__mips16_call_stub_9): Macro-ified.
5231         (__mips16_call_stub_10): Macro-ified.
5232         (CALL_STUB_RET): New.
5233         (__mips16_call_stub_sf_0): Macro-ified.
5234         (__mips16_call_stub_sf_1): Macro-ified.
5235         (__mips16_call_stub_sf_5): Macro-ified.
5236         (__mips16_call_stub_sf_2): Macro-ified.
5237         (__mips16_call_stub_sf_6): Macro-ified.
5238         (__mips16_call_stub_sf_9): Macro-ified.
5239         (__mips16_call_stub_sf_10): Macro-ified.
5240         (__mips16_call_stub_df_0): Macro-ified.
5241         (__mips16_call_stub_df_1): Macro-ified.
5242         (__mips16_call_stub_df_5): Macro-ified.
5243         (__mips16_call_stub_df_2): Macro-ified.
5244         (__mips16_call_stub_df_6): Macro-ified.
5245         (__mips16_call_stub_df_9): Macro-ified.
5246         (__mips16_call_stub_df_10): Macro-ified.
5247         (__mips16_call_stub_sc_0): New.
5248         (__mips16_call_stub_sc_1): New.
5249         (__mips16_call_stub_sc_5): New.
5250         (__mips16_call_stub_sc_2): New.
5251         (__mips16_call_stub_sc_6): New.
5252         (__mips16_call_stub_sc_9): New.
5253         (__mips16_call_stub_sc_10): New.
5254         (__mips16_call_stub_dc_0): New.
5255         (__mips16_call_stub_dc_1): New.
5256         (__mips16_call_stub_dc_5): New.
5257         (__mips16_call_stub_dc_2): New.
5258         (__mips16_call_stub_dc_6): New.
5259         (__mips16_call_stub_dc_9): New.
5260         (__mips16_call_stub_dc_10): New.
5261
5262         * config/mips/t-elf (LIB1ASMFUNCS): Add MIPS16 floating-point stubs.
5263         * config/mips/t-isa3264 (LIB1ASMFUNCS): Likewise.
5264         * config/mips/t-r2900 (LIB1ASMFUNCS): Likewise.
5265
5266 2007-05-23  Ian Lance Taylor  <iant@google.com>
5267
5268         * doc/invoke.texi (Invoking GCC): Document that the order of the
5269         -l option matters.
5270
5271 2007-05-23  Chen Liqin  <liqin@sunnorth.com.cn>
5272
5273         PR target/30987
5274         * config/score/misc.md (bitclr_c, bitset_c, bittgl_c): Remove.
5275         * config/score/predicate.md (const_pow2, const_npow2): Remove.
5276         * config/score/score.h (ASM_OUTPUT_EXTERNAL): Add ASM_OUTPUT_EXTERNAL
5277         undef.
5278
5279         PR target/30474
5280         * config/score/score.c (score_print_operand): Make sure that only
5281         lower bits are used.
5282
5283 2007-05-22  Ian Lance Taylor  <iant@google.com>
5284
5285         * tree-vrp.c (avoid_overflow_infinity): New static function,
5286         broken out of set_value_range_to_value.
5287         (set_value_range_to_value): Call avoid_overflow_infinity.
5288         (extract_range_from_assert): Likewise.
5289
5290 2007-05-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5291
5292         PR middle-end/31095
5293          * builtins.c (expand_builtin_memmove_args): Strip nops that don't
5294         change the type before looking for a COMPOUND_EXPR.
5295
5296 2007-05-22  Ian Lance Taylor  <iant@google.com>
5297
5298         * lower-subreg.c (decompose_multiword_subregs): If we change an
5299         insn, call remove_retval_note on it.
5300
5301 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
5302
5303         * regs.h (end_hard_regno): New function.
5304         (END_HARD_REGNO, END_REGNO): New macros.
5305         (add_to_hard_reg_set): New function.
5306         (remove_from_hard_reg_set): Likewise.
5307         (in_hard_reg_set_p): Likewise.
5308         (overlaps_hard_reg_set_p): Likewise.
5309         * bt-load.c (find_btr_reference): Use overlaps_hard_reg_set_p.
5310         (note_btr_set): Use END_HARD_REGNO.
5311         * caller-save.c (setup_save_areas): Use end_hard_regno.
5312         (mark_set_regs): Use END_HARD_REGNO.
5313         (add_stored_regs): Use end_hard_regno.
5314         (mark_referenced_regs): Use add_to_hard_reg_set.
5315         * combine.c (update_table_tick): Use END_REGNO.
5316         (record_value_for_reg): Likewise.
5317         (record_dead_and_set_regs): Likewise.
5318         (get_last_value_validate): Likewise.
5319         (use_crosses_set_p): Likewise.
5320         (reg_dead_at_p_1): Likewise.
5321         (reg_dead_at_p): Likewise.
5322         (mark_used_regs_combine): Use add_to_hard_reg_set.
5323         (move_deaths): Use END_HARD_REGNO.
5324         (reg_bitfield_target_p): Use end_hard_regno.
5325         (distribute_notes): Use END_HARD_REGNO.
5326         * cse.c (mention_regs): Use END_REGNO.
5327         (insert): Use add_to_hard_reg_set.
5328         (invalidate): Use END_HARD_REGNO.
5329         (invalidate_for_call): Likewise.
5330         (exp_equiv_p): Use END_REGNO.
5331         (cse_insn): Likewise.
5332         * cselib.c (cselib_invalidate_regno): Use end_hard_regno.
5333         * df-problems.c (df_urec_mark_reg_change): Use END_HARD_REGNO.
5334         * df-scan.c (df_ref_record): Use END_HARD_REGNO.
5335         * function.c (keep_stack_depressed): Use end_hard_regno.
5336         * global.c (global_alloc): Use end_hard_regno.
5337         (global_conflicts): Use add_to_hard_reg_set instead of
5338         mark_reg_live_nc.
5339         (find_reg): Likewise.
5340         (mark_reg_store): Likewise.
5341         (mark_reg_conflicts): Likewise.
5342         (mark_reg_death): Use remove_from_hard_reg_set.
5343         (mark_reg_live_nc): Delete.
5344         (set_preference): Use end_hard_regno.
5345         * local-alloc.c (mark_life): Use add_to_hard_reg_set and
5346         remove_from_hard_reg_set.
5347         (post_mark_life): Use add_to_hard_reg_set.
5348         * mode-switching.c (reg_dies): Use remove_from_hard_reg_set.
5349         (reg_becomes_live): Use add_to_hard_reg_set.
5350         * recog.c (reg_fits_class_p): Use in_hard_reg_set_p.
5351         (peep2_find_free_register): Use add_to_hard_reg_set.
5352         * reg-stack.c (convert_regs_exit): Use END_HARD_REGNO.
5353         * regclass.c (record_reg_classes): Use in_hard_reg_set_p.
5354         * regrename.c (note_sets): Use add_to_hard_reg_set.
5355         (clear_dead_regs): Use remove_from_hard_reg_set.
5356         (regrename_optimize): Use add_to_hard_reg_set.
5357         (find_oldest_value_reg): Use in_hard_reg_set_p.
5358         * reload.c (push_reload): Use in_hard_reg_set_p and end_hard_regno.
5359         (hard_reg_set_here_p): Use end_hard_regno.
5360         (decompose): Likewise.
5361         (reg_overlap_mentioned_for_reload_p): Use END_HARD_REGNO.
5362         (find_equiv_reg): Use in_hard_reg_set_p and end_hard_regno.
5363         * reload1.c (compute_use_by_pseudos): Use add_to_hard_reg_set.
5364         (mark_home_live): Use end_hard_regno.
5365         (spill_hard_reg): Likewise.
5366         (clear_reload_reg_in_use): Likewise.
5367         * reorg.c (delete_prior_computation): Use END_REGNO.
5368         * resource.c (update_live_status): Use END_HARD_REGNO.
5369         (mark_referenced_resources): Use add_to_hard_reg_set.
5370         (mark_set_resources): Likewise.
5371         (mark_target_live_regs): Likewise.  Use remove_from_hard_reg_set.
5372         * rtlanal.c (refers_to_regno_p): Use END_REGNO.
5373         (reg_overlap_mentioned_p): Likewise.
5374         (dead_or_set_p): Likewise.  Use an exclusive upper loop bound.
5375         (covers_regno_no_parallel_p): Use END_REGNO.
5376         (find_regno_note): Likewise.
5377         (find_reg_fusage): Use END_HARD_REGNO.
5378         * stmt.c (decl_overlaps_hard_reg_set_p): Use overlaps_hard_reg_set_p.
5379         * var-tracking.c (emit_note_insn_var_location): Use end_hard_regno.
5380
5381 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
5382
5383         * mode-switching.c (reg_dies): Change type of second argument to
5384         "HARD_REG_SET *".
5385         (optimize_mode_switching): Update accordingly.
5386
5387 2007-05-22  Richard Sandiford  <richard@codesourcery.com>
5388
5389         * hard-reg-set.h (GO_IF_HARD_REG_SUBSET, GO_IF_HARD_REG_EQUAL): Delete
5390         in favor of...
5391         (hard_reg_subset_p, hard_reg_sets_equal_p, hard_reg_sets_intersect_p)
5392         (hard_reg_set_empty_p): ...these new functions.
5393         * bt-load.c (choose_btr): Use hard_reg_subset_p instead of
5394         GO_IF_HARD_REG_SUBSET.
5395         * cfgcleanup.c (old_insns_match_p): Use hard_reg_sets_equal_p
5396         instead of GO_IF_HARD_REG_EQUAL.
5397         * df-problems.c (df_urec_local_compute): Use hard_reg_set_empty_p
5398         instead of GO_IF_HARD_REG_EQUAL.
5399         * global.c (find_reg): Use hard_reg_set_empty_p instead of
5400         GO_IF_HARD_REG_SUBSET.
5401         (modify_reg_pav): Use hard_reg_set_empty_p instead of
5402         GO_IF_HARD_REG_EQUAL.
5403         * local-alloc.c (find_free_reg): Use hard_reg_subset_p instead
5404         of GO_IF_HARD_REG_SUBSET.
5405         * reg-stack.c (change_stack, convert_regs_1): Use hard_reg_sets_equal_p
5406         instead of GO_IF_HARD_REG_EQUAL.
5407         * regclass.c (init_reg_sets_1, reg_scan_mark_refs): Use
5408         hard_reg_subset_p instead of GO_IF_HARD_REG_SUBSET.
5409         (reg_classes_intersect_p): Use hard_reg_sets_intersect_p instead
5410         of GO_IF_HARD_REG_SUBSET,
5411         * reload1.c (finish_spills): Use hard_reg_subset_p instead of
5412         GO_IF_HARD_REG_SUBSET.
5413         * struct-equiv.c (death_notes_match_p): Use hard_reg_sets_equal_p
5414         instead of GO_IF_HARD_REG_EQUAL.
5415         * config/sh/sh.c (push_regs, calc_live_regs): Use
5416         hard_reg_sets_intersect_p instead of hard_regs_intersect_p.
5417         (hard_regs_intersect_p): Delete.
5418
5419 2007-05-22  Janis Johnson  <janis187@us.ibm.com>
5420
5421         * doc/sourcebuild.texi (Test Directives) Add dg-message.
5422
5423 2007-05-22  H.J. Lu  <hongjiu.lu@intel.com>
5424             Richard Henderson  <rth@redhat.com>
5425
5426         * config.gcc (i[34567]86-*-*): Add smmintrin.h to
5427         extra_headers.
5428         (x86_64-*-*): Likewise.
5429
5430         * i386/i386-modes.def (V2QI): New.
5431
5432         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 and
5433         SSE4A.
5434         (override_options): Support SSE4.1.
5435         (IX86_BUILTIN_BLENDPD): New for SSE4.1.
5436         (IX86_BUILTIN_BLENDPS): Likewise.
5437         (IX86_BUILTIN_BLENDVPD): Likewise.
5438         (IX86_BUILTIN_BLENDVPS): Likewise.
5439         (IX86_BUILTIN_PBLENDVB128): Likewise.
5440         (IX86_BUILTIN_PBLENDW128): Likewise.
5441         (IX86_BUILTIN_DPPD): Likewise.
5442         (IX86_BUILTIN_DPPS): Likewise.
5443         (IX86_BUILTIN_INSERTPS128): Likewise.
5444         (IX86_BUILTIN_MOVNTDQA): Likewise.
5445         (IX86_BUILTIN_MPSADBW128): Likewise.
5446         (IX86_BUILTIN_PACKUSDW128): Likewise.
5447         (IX86_BUILTIN_PCMPEQQ): Likewise.
5448         (IX86_BUILTIN_PHMINPOSUW128): Likewise.
5449         (IX86_BUILTIN_PMAXSB128): Likewise.
5450         (IX86_BUILTIN_PMAXSD128): Likewise.
5451         (IX86_BUILTIN_PMAXUD128): Likewise.
5452         (IX86_BUILTIN_PMAXUW128): Likewise.
5453         (IX86_BUILTIN_PMINSB128): Likewise.
5454         (IX86_BUILTIN_PMINSD128): Likewise.
5455         (IX86_BUILTIN_PMINUD128): Likewise.
5456         (IX86_BUILTIN_PMINUW128): Likewise.
5457         (IX86_BUILTIN_PMOVSXBW128): Likewise.
5458         (IX86_BUILTIN_PMOVSXBD128): Likewise.
5459         (IX86_BUILTIN_PMOVSXBQ128): Likewise.
5460         (IX86_BUILTIN_PMOVSXWD128): Likewise.
5461         (IX86_BUILTIN_PMOVSXWQ128): Likewise.
5462         (IX86_BUILTIN_PMOVSXDQ128): Likewise.
5463         (IX86_BUILTIN_PMOVZXBW128): Likewise.
5464         (IX86_BUILTIN_PMOVZXBD128): Likewise.
5465         (IX86_BUILTIN_PMOVZXBQ128): Likewise.
5466         (IX86_BUILTIN_PMOVZXWD128): Likewise.
5467         (IX86_BUILTIN_PMOVZXWQ128): Likewise.
5468         (IX86_BUILTIN_PMOVZXDQ128): Likewise.
5469         (IX86_BUILTIN_PMULDQ128): Likewise.
5470         (IX86_BUILTIN_PMULLD128): Likewise.
5471         (IX86_BUILTIN_ROUNDPD): Likewise.
5472         (IX86_BUILTIN_ROUNDPS): Likewise.
5473         (IX86_BUILTIN_ROUNDSD): Likewise.
5474         (IX86_BUILTIN_ROUNDSS): Likewise.
5475         (IX86_BUILTIN_PTESTZ): Likewise.
5476         (IX86_BUILTIN_PTESTC): Likewise.
5477         (IX86_BUILTIN_PTESTNZC): Likewise.
5478         (IX86_BUILTIN_VEC_EXT_V16QI): Likewise.
5479         (IX86_BUILTIN_VEC_SET_V2DI): Likewise.
5480         (IX86_BUILTIN_VEC_SET_V4SF): Likewise.
5481         (IX86_BUILTIN_VEC_SET_V4SI): Likewise.
5482         (IX86_BUILTIN_VEC_SET_V16QI): Likewise.
5483         (bdesc_ptest): New.
5484         (bdesc_sse_3arg): Likewise.
5485         (bdesc_2arg): Likewise.
5486         (bdesc_1arg): Likewise.
5487         (ix86_init_mmx_sse_builtins): Support SSE4.1.  Handle SSE builtins
5488         with 3 args.
5489         (ix86_expand_sse_4_operands_builtin): New.
5490         (ix86_expand_unop_builtin): Support 2 arg builtins with a constant
5491         smaller than 8 bits as the 2nd arg.
5492         (ix86_expand_sse_ptest): New.
5493         (ix86_expand_builtin): Support SSE4.1. Support 3 arg SSE builtins.
5494         (ix86_expand_vector_set): Support SSE4.1.
5495         (ix86_expand_vector_extract): Likewise.
5496
5497         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
5498         __SSE4_1__ for -msse4.1.
5499
5500         * config/i386/i386.md (UNSPEC_BLENDV): New for SSE4.1.
5501         (UNSPEC_INSERTPS): Likewise.
5502         (UNSPEC_DP): Likewise.
5503         (UNSPEC_MOVNTDQA): Likewise.
5504         (UNSPEC_MPSADBW): Likewise.
5505         (UNSPEC_PHMINPOSUW): Likewise.
5506         (UNSPEC_PTEST): Likewise.
5507         (UNSPEC_ROUNDP): Likewise.
5508         (UNSPEC_ROUNDS): Likewise.
5509
5510         * config/i386/i386.opt (msse4.1): New for SSE4.1.
5511
5512         * config/i386/predicates.md (const_pow2_1_to_2_operand): New.
5513         (const_pow2_1_to_32768_operand): Likewise.
5514
5515         * config/i386/smmintrin.h: New. The SSE4.1 intrinsic header
5516         file.
5517
5518         * config/i386/sse.md (*vec_setv4sf_sse4_1): New pattern for
5519         SSE4.1.
5520         (sse4_1_insertps): Likewise.
5521         (*sse4_1_extractps): Likewise.
5522         (sse4_1_ptest): Likewise.
5523         (sse4_1_mulv2siv2di3): Likewise.
5524         (*sse4_1_mulv4si3): Likewise.
5525         (*sse4_1_smax<mode>3): Likewise.
5526         (*sse4_1_umax<mode>3): Likewise.
5527         (*sse4_1_smin<mode>3): Likewise.
5528         (*sse4_1_umin<mode>3): Likewise.
5529         (sse4_1_eqv2di3): Likewise.
5530         (*sse4_1_pinsrb): Likewise.
5531         (*sse4_1_pinsrd): Likewise.
5532         (*sse4_1_pinsrq): Likewise.
5533         (*sse4_1_pextrb): Likewise.
5534         (*sse4_1_pextrb_memory): Likewise.
5535         (*sse4_1_pextrw_memory): Likewise.
5536         (*sse4_1_pextrq): Likewise.
5537         (sse4_1_blendpd): Likewise.
5538         (sse4_1_blendps): Likewise.
5539         (sse4_1_blendvpd): Likewise.
5540         (sse4_1_blendvps): Likewise.
5541         (sse4_1_dppd): Likewise.
5542         (sse4_1_dpps): Likewise.
5543         (sse4_1_movntdqa): Likewise.
5544         (sse4_1_mpsadbw): Likewise.
5545         (sse4_1_packusdw): Likewise.
5546         (sse4_1_pblendvb): Likewise.
5547         (sse4_1_pblendw): Likewise.
5548         (sse4_1_phminposuw): Likewise.
5549         (sse4_1_extendv8qiv8hi2): Likewise.
5550         (*sse4_1_extendv8qiv8hi2): Likewise.
5551         (sse4_1_extendv4qiv4si2): Likewise.
5552         (*sse4_1_extendv4qiv4si2): Likewise.
5553         (sse4_1_extendv2qiv2di2): Likewise.
5554         (*sse4_1_extendv2qiv2di2): Likewise.
5555         (sse4_1_extendv4hiv4si2): Likewise.
5556         (*sse4_1_extendv4hiv4si2): Likewise.
5557         (sse4_1_extendv2hiv2di2): Likewise.
5558         (*sse4_1_extendv2hiv2di2): Likewise.
5559         (sse4_1_extendv2siv2di2): Likewise.
5560         (*sse4_1_extendv2siv2di2): Likewise.
5561         (sse4_1_zero_extendv8qiv8hi2): Likewise.
5562         (*sse4_1_zero_extendv8qiv8hi2): Likewise.
5563         (sse4_1_zero_extendv4qiv4si2): Likewise.
5564         (*sse4_1_zero_extendv4qiv4si2): Likewise.
5565         (sse4_1_zero_extendv2qiv2di2): Likewise.
5566         (*sse4_1_zero_extendv2qiv2di2): Likewise.
5567         (sse4_1_zero_extendv4hiv4si2): Likewise.
5568         (*sse4_1_zero_extendv4hiv4si2): Likewise.
5569         (sse4_1_zero_extendv2hiv2di2): Likewise.
5570         (*sse4_1_zero_extendv2hiv2di2): Likewise.
5571         (sse4_1_zero_extendv2siv2di2): Likewise.
5572         (*sse4_1_zero_extendv2siv2di2): Likewise.
5573         (sse4_1_roundpd): Likewise.
5574         (sse4_1_roundps): Likewise.
5575         (sse4_1_roundsd): Likewise.
5576         (sse4_1_roundss): Likewise.
5577         (mulv4si3): Don't expand for SSE4.1.
5578         (smax<mode>3): Likewise.
5579         (umaxv4si3): Likewise.
5580         (uminv16qi3): Likewise.
5581         (umin<mode>3): Likewise.
5582         (umaxv8hi3): Rewrite.  Only enabled for SSE4.1.
5583
5584         * doc/extend.texi: Document SSE4.1 built-in functions.
5585
5586         * doc/invoke.texi: Document -msse4.1.
5587
5588 2007-05-22  Nathan Sidwell  <nathan@codesourcery.com>
5589
5590         * config/m68k/linux.h (ASM_SPEC): Add asm_pcrel_spec.
5591         * config/m68k/m68k-none.h (ASM_SPEC): Don't override here.
5592         * config/m68k/m68k.h (ASM_PCREL_SPEC): New.
5593         (ASM_SPEC): Add asm_pcrel_spec.
5594         (EXTRA_SPECS): Add asm_pcrel_spec.
5595
5596 2007-05-21  David Daney  <ddaney@avtrex.com>
5597
5598         * doc/install.texi (Building a cross compiler): Add requirements
5599         for Java cross compiler.
5600
5601 2007-05-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5602
5603         PR middle-end/31995
5604         * tree-chrec.c (evolution_function_is_affine_multivariate_p):
5605         Add loopno argument.  Use evolution_function_is_invariant_rec_p
5606         instead of evolution_function_is_constant_p.
5607         Update calls to evolution_function_is_affine_multivariate_p.
5608         * tree-chrec.h (evolution_function_is_affine_multivariate_p):
5609         Add loopno argument.
5610         * tree-scalar-evolution.c (gather_chrec_stats): Call
5611         evolution_function_is_affine_multivariate_p with a loop
5612         number of 0.
5613         * tree-data-ref.c (analyze_miv_subscript): Likewise.
5614         (analyze_overlapping_iterations): Likewise.
5615         (access_functions_are_affine_or_constant_p): Likewise.
5616         (build_classic_dist_vector_1): If the access functions
5617         are equal, don't do anything.
5618
5619 2007-05-21  Paolo Bonzini  <bonzini@gnu.org>
5620             Paolo Carlini  <pcarlini@suse.de>
5621             Uros Bizjak  <ubizjak@gmail.com>
5622
5623         * c-cppbuiltin.c (c_cpp_builtins): Define
5624         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2,
5625         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8,
5626         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16, if appropriate.
5627         * doc/cpp.texi ([Standard Predefined Macros]): Document.
5628
5629 2007-05-21  Mike Stump  <mrs@apple.com>
5630
5631         * config/darwin.h (LINK_COMMAND_SPEC): Add .cxx/.cp for dsymutil
5632         handling as well.
5633         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
5634
5635 2007-05-21  Uros Bizjak  <ubizjak@gmail.com>
5636
5637         * config/i386/tmmintrin.h (_mm_alignr_epi8): Provide macro
5638         implementation if __OPTIMIZE__ is not defined.
5639         (_mm_alignr_pi8): Ditto.
5640         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
5641         (_mm_inserti_si64): Ditto.
5642         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
5643         (_mm_slli_epi16): Ditto.
5644         (_mm_slli_epi32): Ditto.
5645         (_mm_slli_epi64): Ditto.
5646         (_mm_srai_epi16): Ditto.
5647         (_mm_srai_epi32): Ditto.
5648         (_mm_srli_si128): Ditto.
5649         (_mm_slli_si128): Ditto.
5650         (_mm_srli_epi16): Ditto.
5651         (_mm_srli_epi32): Ditto.
5652         (_mm_srli_epi64): Ditto.
5653         (_mm_extract_epi16): Ditto.
5654         (_mm_insert_epi16): Ditto.
5655         (_mm_shufflehi_epi16): Ditto.
5656         (_mm_shufflelo_epi16): Ditto.
5657         (_mm_shuffle_epi32): Ditto.
5658         * config/i386/xmmintrin.h (_mm_extract_pi16): Ditto.
5659         (_m_pextrw): Ditto.
5660         (_mm_insert_pi16): Ditto.
5661         (_m_pinsrw): Ditto.
5662         (_mm_shuffle_pi16): Ditto.
5663         (_m_pshufw): Ditto.
5664         (_mm_shufle_ps): Ditto.
5665         (_mm_prefetch): Ditto.
5666
5667 2007-05-21  Andreas Krebbel  <krebbel1@de.ibm.com>
5668
5669         * defaults.h (IBM_FLOAT_FORMAT): Macro definition removed.
5670         * doc/tm.texi (IBM_FLOAT_FORMAT): Documentation entry removed.
5671         * real.c (encode_i370_single, decode_i370_single,
5672         encode_i370_double, decode_i370_double): Functions removed.
5673         (i370_single_format, i370_double_format): Initializations removed.
5674         (real_maxval, round_for_format, exact_real_truncate, significand_size):
5675         Consider the log2_b field to always be one.
5676         (ieee_single_format, mips_single_format, coldfire_single_format,
5677         ieee_double_format, mips_double_format, coldfire_double_format,
5678         ieee_extended_motorola_format, ieee_extended_intel_96_format,
5679         ieee_extended_intel_128_format, ieee_extended_intel_96_round_53_format,
5680         ibm_extended_format, mips_extended_format, ieee_quad_format,
5681         mips_quad_format, vax_f_format, vax_d_format, vax_g_format,
5682         decimal_single_format, decimal_double_format, decimal_quad_format,
5683         c4x_single_format, c4x_extended_format, real_internal_format): Remove
5684         initialization of log2_b.
5685         * real.h (i370_single_format, i370_double_format): Declarations
5686         removed.
5687         * c-cppbuiltin.c (builtin_define_float_constants): Consider the log2_b
5688         field to always be one.
5689
5690 2007-05-21  Andreas Schwab  <schwab@suse.de>
5691
5692         * config/ia64/ia64.c (emit_predicate_relation_info): Fix use of
5693         NOTE_INSN_BASIC_BLOCK_P.
5694         (process_for_unwind_directive): Likewise.
5695
5696 2007-05-21  Nathan Sidwell  <nathan@codesourcery.com>
5697
5698         * builtins.c (expand_builtin_setjmp_setup): Update comment.
5699         * function.h (struct function): Move va_list_gpr_size,
5700         va_list_fpr_size, function_frequency to front of bitfields.  Add
5701         calls_unwind_init.
5702         (current_function_calls_unwind_init): New.
5703         * except.c (expand_builtin_unwind_init): Set
5704         current_function_calls_unwind_init not
5705         current_function_has_nonlocal_label.
5706         * reload1.c (has_nonexceptional_receiver): New.
5707         (reload): Use it and current_function_calls_unwind_init to
5708         determine whether call-saved regs must be saved.
5709
5710 2007-05-20  Jan Hubicka  <jh@suse.cz>
5711
5712         * gengtype.c (adjust_field_rtx_def): Use NOTE_KIND instead of
5713         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
5714         * ddg.c (create_ddg): LIkewise.
5715         * final.c (final): Remove hunk moving line number notes around since
5716         they are no longer present at this stage.
5717         (final_scan_insn): Use NOTE_KIND instead of
5718         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
5719         (output_asm_label): Likewise.
5720         * reorg.c (dbr_schedule): Likewise.
5721         * haifa-sched.c (unlink_other_notes): Likewise.
5722         * mode-switching.c (optimize_mode_switching): Likewise.
5723         * graph.c (start_bb): Likewise.
5724         * rtl.def (NOTE): Update description.
5725         * jump.c (squeeze_notes): Delete.
5726         (mark_jump_label): Use NOTE_KIND instead of NOTE_LINE_NUMBER; use
5727         NOTE_INSN_BASIC_BLOCK_P when possible.
5728         * ifcvt.c (dead_or_predicable): Remove call of squeeze_notes.
5729         * dwarf2out.c (gen_label_die): Use NOTE_KIND instead of
5730         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
5731         (dwarf2out_var_location): Likewise.
5732         * cfgbuild.c (make_edges): Likewise.
5733         (find_basic_blocks_1): Likewise.
5734         * function.c (reorder_blocks_1): Likewise.
5735         (epilogue_done): Likewise.
5736         (reposition_prologue_and_epilogue_notes): Likewise.
5737         * print-rtl.c (print_rtx): Likewise; drop code for printing
5738         line number notes.
5739         (print_rtl): Likewise.
5740         (print_rtl_single): Likewise.
5741         * gcse.c (insert_insn_start_bb): Likewise.
5742         * alias.c (init_alias_analysis): Likewise.
5743         * calls.c (fixup_tail_calls): Likewise.
5744         * except.c (sjlj_emit_function_enter): Likewise.
5745         * emit-rtl.c (add_insn_after): Likeiwse.
5746         (emit_label_before): Likewise.
5747         (emit_label_after): Likewise.
5748         (emit_note_before, emit_note_after, emit_note): Update
5749         parameter to be enum insn_note; do not deal with source
5750         files.
5751         * cfgcleanup.c (merge_blocks_move_predecessor_nojumps):
5752         Use NOTE_KIND instead of NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P
5753         when possible.
5754         (merge_blocks_move_successor_nojumps): Simplify now when
5755         we don't have BLOCK notes.
5756         (try_optimize_cfg): Likewise.
5757         * cfglayout.c (skip_insns_after_block): Likewise.
5758         (record_effective_endpoints): Likewise.
5759         (duplicate_insn_chain): Likewise.
5760         * varasm.c (output_constant_pool_1): Likewise.
5761         * sched-deps.c (sched_analyze): Likewise.
5762         * rtl.c (NOTE_INSN_MAX_isnt_negative_adjust_NOTE_INSN_BIAS):
5763         Exterminate.
5764         (note_insn_name): Simplify now when NOTE_INSN_BIAS is gone.
5765         * rtl.h (NOTE_SOURCE_LOCATION, NOTE_EXPANDED_LOCATION): Exterminate.
5766         (SET_INSN_DELETED): Simplify.
5767         (NOTE_LINE_NUMBER): Exterminate.
5768         (NOTE_LINE_KIND): New.
5769         (NOTE_INSN_BASIC_BLOCK_P): Update.
5770         (enum insn_note): Simplify.
5771         (GET_NOTE_INSN_NAME) Simplify.
5772         (emit_note_before, emit_note_after, emit_note): Update prototype.
5773         (squeeze_notes): Remove.
5774         * sched-int.h (NOTE_NOT_BB_P): Update.
5775         * resource.c (mark_target_live_regs): Update.
5776         * sched-rgn.c (debug_dependencies): Update.
5777         * sched-vis.c (print_insn): Update.
5778         * config/alpha/alpha.c (alpha_handle_trap_shadows): Update.
5779         * config/i386/i386.c (ix86_output_function_epilogue): Update.
5780         * config/sh/sh.c (sh_adjust_unroll_max): Function dead since gcc 4.0.0.
5781         (TARGET_ADJUST_UNROLL_MAX): Likewise.
5782         (split_branches): Update.
5783         (sh_optimize_target_register_callee_saved): Remove hunk dead since gcc
5784         4.0.0.
5785         (sh_adjust_unroll_max): Exterminate.
5786         * config/c4x/c4x.c (c4x_reorg): Use SET_INSN_DELETED.
5787         * config/m68hc11/m68hc11.c (m68hc11_check_z_replacement): Likewise.
5788         (m68hc11_reorg): Likewise.
5789         * config/ia64/ia64.c (emit_insn_group_barriers): Update.
5790         (emit_predicate_relation_info): Update.
5791         (process_for_unwind_directive): Update.
5792         * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Update.
5793         (output_call): Update.
5794         * config/pa/pa.c (output_lbranch): Update.
5795         (output_millicode_call): Update.
5796         (output_call): Update.
5797         (pa_combine_instructions): Update.
5798         * config/mips/mips.c (mips16_gp_pseudo_reg): Update.
5799         * config/bfin/bfin.c (gen_one_bundle): Update.
5800         * cfgrtl.c (can_delete_note_p): Update.
5801         (delete_insn): Update.
5802         (rtl_merge_blocks): Update.
5803         (commit_one_edge_insertion): Update.
5804         (rtl_verify_flow_info): Update.
5805         * stmt.c (expand_case): Do not call squeeze_notes.
5806
5807 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5808
5809         PR middle-end/7651
5810         PR c++/11856
5811         PR c/12963
5812         PR c/23587
5813         PR other/29694
5814         * c.opt (Wtype-limits): New.
5815         * doc/invoke.texi (Wtype-limits): Document it.
5816         (Wextra): Enabled by -Wextra.
5817         * c-opts.c (c_common_post_options): Enabled by -Wextra.
5818         * c-common.c (shorten_compare): Warn with Wtype-limits.
5819
5820 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
5821
5822         * config/i386/tmmintrin.h (_mm_alignr_epi32): Implement as always
5823         inlined function, not as a macro.
5824         (_mm_alignr_pi8): Ditto.
5825         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
5826         (_mm_inserti_si64): Ditto.
5827         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
5828         (_mm_extract_epi16): Ditto.
5829         (_mm_insert_epi16): Ditto.
5830         (_mm_shufflehi_epi16): Ditto.
5831         (_mm_shufflelo_epi16): Ditto.
5832         (_mm_shuffle_epi32): Ditto.
5833         * config/i386/xmmintrin.h (_mm_set_ss): Use 0.0f for float constant.
5834         * config/386/mm3dnow.h: Add __attribute__((__always_inline__)) to
5835         all functions.
5836         (_m_from_float): Add __extension__ to conversion.  Use 0.0f for
5837         float constant.
5838         (_m_to_float): Use C89 compatible assignment.
5839
5840 2007-04-20  Martin Michlmayr  <tbm@cyrius.com>
5841
5842         PR target/32007
5843         * config/arm/lib1funcs.asm: Define __ARM_ARCH__ on v2/v3 machines.
5844
5845 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5846
5847         PR middle-end/7651
5848         * doc/invoke.texi (Wreturn-type): Complete description.
5849         (Wextra): Delete item about return-type warning.
5850         * c-decl.c: Delete redundant Wextra warning.
5851
5852 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
5853
5854         PR target/31585
5855         * config/i386/pmmintrin.h: Do not include xmmintrin.h
5856         * config/i386/xmmintrin.h (_mm_extract_pi16): Implement as always
5857         inlined function, not as a macro.
5858         (_mm_prefetch): Ditto.
5859         (_m_pextrw): Ditto.
5860         (_mm_insert_pi16): Ditto.
5861         (_m_pinsrw): Ditto.
5862         (_mm_shuffle_pi16): Ditto.  Add const to __N argument.
5863         (_m_pshufw): Ditto. Add const to __N argument.
5864         (_mm_shufle_ps): Ditto.  Add const to __mask argument.
5865         * config/i386/emmintrin.h (_mm_slli_epi16): Add const to __B argument.
5866         (_mm_slli_epi32): Ditto.
5867         (_mm_srli_si128): Implement as always inlined function, not as a
5868         macro.  Add __inline to function declaration.
5869         (_mm_slli_si128): Ditto.
5870
5871 2007-05-19  Uros Bizjak  <ubizjak@gmail.com>
5872
5873         * config/i386/sfp-machine.h (FP_EX_INVALID, FP_EX_DENORM,
5874         FP_EXP_DIVZERO, FP_EX_OVERFLOW, FP_EX_UNDERFLOW, FP_EX_INEXACT):
5875         New constants.
5876         (struct fenv): New structure.
5877         (FP_HANDLE_EXCEPTIONS): New define.
5878         (FP_RND_NEAREST, FP_RND_ZERO, FP_RND_PINF, FP_RND_MINF): New constants.
5879         (_FP_DECL_EXP): New define.
5880         (FP_INIT_ROUNDMODE): New define.
5881         (FP_ROUNDMODE): New define.
5882
5883 2007-05-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5884
5885         * doc/invoke.texi (Warning Options): Add -Wconversion-sign.
5886         (Wconversion): Update description.
5887         (Wconversion-sign): New.
5888         * c.opt (Wconversion-sign): New.
5889         * c-opts.c (c_common_post_options): Uninitialized Wconversion-sign
5890         means disabled for C++. Otherwise, take the status of Wconversion.
5891         * c-common.c (conversion_warning): Warn with either Wconversion or
5892         Wconversion-sign.
5893         (warnings_for_convert_and_check): Conditions are already checked by
5894         conversion_warning.
5895         (convert_and_check): Don't check warnings if the conversion failed.
5896
5897 2007-05-19 Andy Hutchinson <HutchinsonAndy@netscape.net>
5898            Anatoly Sokolov <aesok@dol.ru>
5899
5900         * config/avr/avr-protos.h (expand_prologue, expand_epilogue,
5901         avr_epilogue_uses) : Add declaration.
5902         * config/avr/predicates.md (avr_sp_immediate_operand): New predicate.
5903         * config/avr/constraints.md (R): New constraint.
5904         config/avr/avr.md (SREG_ADDR, UNSPEC_SEI, UNSPEC_CLI,
5905         UNSPECV_PROLOGUE_SAVES, UNSPECV_EPILOGUE_RESTORES): New constants.
5906         (*pop1, *pop2, *pop3, *pop4, *pop5): Combine into ...
5907         (*addhi3_sp_R_pc2, *addhi3_sp_R_pc3): ... these patterns.
5908         (*movhi_sp, popqi, pophi, enable_interrupt, disable_interrupt,
5909         call_prologue_saves, epilogue_restores, return_from_epilogue,
5910         return_from_main_epilogue, return_from_interrupt_epilogue,
5911         return_from_naked_epilogue, prologue, epilogue): New patterns.
5912         (jump): Handle symbol reference.
5913         * config/avr/avr.c (out_adj_frame_ptr, out_set_stack_ptr,
5914         avr_output_function_prologue, avr_output_function_epilogue): Remove
5915         functions.
5916         (avr_init_machine_status, expand_prologue, expand_epilogue,
5917         avr_asm_function_end_prologue, avr_epilogue_uses,
5918         avr_asm_function_begin_epilogue): New functions.
5919         (prologue_size, epilogue_size, jump_tables_size): Remove global
5920         variables.
5921         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Remove.
5922         (TARGET_ASM_FUNCTION_END_PROLOGUE): Define.
5923         (TARGET_ASM_FUNCTION_BEGIN_EPILOGUE): Define.
5924         (avr_override_options): Initialise init_machine_status.
5925         (output_movhi): Handle all stack pointer loads.
5926         (out_movqi_r_mr, out_movqi_mr_r): Handle SREG_ADDR address.
5927         (avr_output_addr_vec_elt): Do not use variable jump_tables_size.
5928         * config/avr/avr.h (AVR_2_BYTE_PC, AVR_3_BYTE_PC): New.
5929         (EPILOGUE_USES) Redefine.
5930         (machine_function) Declare.
5931
5932 2007-05-19  Richard Sandiford  <richard@codesourcery.com>
5933
5934         * config/mips/mips.c (mips_offset_within_alignment_p): Tweak comment.
5935         Use a single return statement.
5936
5937 2007-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5938
5939         PR middle-end/30250
5940         * builtins.c (do_mpfr_lgamma_r): New.
5941         (fold_builtin_2): Handle builtin gamma_r/lgamma_r.
5942         * tree.h (CASE_FLT_FN_REENT): New.
5943
5944 2007-05-18  Geoffrey Keating  <geoffk@apple.com>
5945
5946         * dwarf2out.c (print_die): Use '%ld' not '%lu' to print a 'long'.
5947         (output_die): Use 'unsigned long' with %x.
5948         * sched-vis.c (print_value): Use 'unsigned HOST_WIDE_INT' and
5949         HOST_WIDE_INT_PRINT_HEX to print HOST_WIDE_INT.
5950         * tree-dump.c (dump_pointer): Use 'unsigned long' for %lx.
5951
5952         * unwind-dw2.c (uw_identify_context): Use the CFA, not the IP.
5953
5954 2007-05-18  H.J. Lu  <hongjiu.lu@intel.com>
5955
5956         PR target/31989
5957         PR target/31681
5958         PR target/31666
5959         * config/i386/i386.c (init_cumulative_args): Set maybe_vaarg to
5960         true if function has no argument.
5961
5962 2007-05-18  DJ Delorie  <dj@redhat.com>
5963
5964         * config/mips/mips.c (mips_offset_within_alignment_p): New.
5965         (mips_symbolic_constant_p): Call it for TPREL and DTPREL symbols.
5966
5967 2007-05-18  Uros Bizjak  <ubizjak@gmail.com>
5968
5969         * longlong.h (__x86_64__): Add definitions for add_ssaaaa,
5970         sub_ddmmss, umul_ppmm, udiv_qrnnd, count_leading_zeros and
5971         count_trailing_zeros.
5972         (__i386__): Implement count_leading_zeros using __builtin_clz().
5973         Implement count_trailing_zeros usign __builtin_ctz().
5974
5975 2007-05-18  Richard Sandiford  <richard@codesourcery.com>
5976
5977         * config/i386/vxworks.h (ASM_PREFERRED_EH_DATA_FORMAT): Undefine.
5978
5979 2007-05-18  Uros Bizjak  <ubizjak@gmail.com>
5980
5981         PR middle-end/31344
5982         * expr.c (emit_move_change_mode): Change mode of push operands here.
5983
5984 2007-05-17  Ian Lance Taylor  <iant@google.com>
5985
5986         PR tree-optimization/31953
5987         * tree-vrp.c (set_value_range_to_value): Add equiv parameter.
5988         Change all callers.
5989         (set_value_range_to_null): Call set_value_range_to_value.
5990         (extract_range_from_comparison): Likewise.
5991
5992 2007-05-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5993
5994         * toplev.c (print_version): Output GMP/MPFR version info.
5995
5996         * builtins.c (CASE_MATHFN_REENT): New macro.
5997         (mathfn_built_in): Use it.
5998         * builtins.def (BUILT_IN_GAMMA_R, BUILT_IN_GAMMAF_R,
5999         BUILT_IN_GAMMAL_R, BUILT_IN_LGAMMA_R, BUILT_IN_LGAMMAF_R,
6000         BUILT_IN_LGAMMAL_R): New.
6001         * doc/extend.texi: Document new builtins.
6002
6003         PR middle-end/31796
6004         * builtins.c (do_mpfr_remquo): New.
6005         (fold_builtin_2): Handle BUILT_IN_DREM/BUILT_IN_REMAINDER.
6006         (fold_builtin_3): Handle BUILT_IN_REMQUO.
6007
6008         PR middle-end/30251
6009         * builtins.c (fold_builtin_1): Handle y0, y1.
6010         (fold_builtin_2): Handle yn.
6011
6012         PR middle-end/30251
6013         * builtins.c (do_mpfr_bessel_n): New.
6014         (fold_builtin_1): Handle BUILT_IN_J0 and BUILT_IN_J1.
6015         (fold_builtin_2): Handle BUILT_IN_JN.
6016
6017 2007-05-17  Danny Smith  <dannysmith@users.sourceforge.net>
6018
6019         PR target/31965
6020         * config/i386/mingw32.h (_INTEGRAL_MAX_BITS): Define builtin as
6021         TYPE_PRECISION (intmax_type_node).
6022
6023 2007-05-17  Steve Ellcey  <sje@cup.hp.com>
6024
6025         PR target/31850
6026         * reload.c (subst_reloads): Remove checking.
6027
6028 2007-05-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
6029
6030         PR rtl-optimization/31691
6031         * combine.c (simplify_set): Build a new src pattern instead of
6032         substituting its operands in the COMPARE case.
6033
6034 2007-05-17  Zdenek Dvorak  <dvorakz@suse.cz>
6035
6036         * tree-vrp.c (finalize_jump_threads): Do not care about dominance info.
6037         (execute_vrp): Preserve loops through jump threading.
6038         * tree-ssa-threadupdate.c (thread_single_edge,
6039         dbds_continue_enumeration_p, determine_bb_domination_status,
6040         thread_through_loop_header): New functions.
6041         (create_edge_and_update_destination_phis,
6042         create_edge_and_update_destination_phis): Set loops for the new blocks.
6043         (prune_undesirable_thread_requests): Removed.
6044         (redirect_edges): Do not pretend that redirect_edge_and_branch can
6045         create new blocks.
6046         (thread_block): Do not call prune_undesirable_thread_requests.
6047         Update loops.
6048         (mark_threaded_blocks): Select edges to thread here.
6049         (thread_through_all_blocks): Take may_peel_loop_headers argument.
6050         Thread edges through loop headers independently.
6051         * cfgloopmanip.c (create_preheader, mfb_keep_just): Export.
6052         * tree-pass.h (TODO_mark_first_instance): New.
6053         (first_pass_instance): Declare.
6054         * cfghooks.c (duplicate_block): Put the block to the original loop
6055         if copy is not specified.
6056         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Preserve loops through
6057         jump threading.  Pass may_peel_loop_headers to
6058         thread_through_all_blocks according to first_pass_instance.
6059         * cfgloop.h (create_preheader): Declare.
6060         * tree-flow.h (thread_through_all_blocks): Declaration changed.
6061         * basic-block.h (mfb_keep_just, mfb_kj_edge): Declare.
6062         * passes.c (first_pass_instance): New variable.
6063         (next_pass_1): Set TODO_mark_first_instance.
6064         (execute_todo): Set first_pass_instance.
6065
6066 2007-05-17  Uros Bizjak  <ubizjak@gmail.com>
6067
6068         PR tree-optimization/24659
6069         * optabs.h (enum optab_index): Add OTI_vec_unpacks_float_hi,
6070         OTI_vec_unpacks_float_lo, OTI_vec_unpacku_float_hi,
6071         OTI_vec_unpacku_float_lo, OTI_vec_pack_sfix_trunc and
6072         OTI_vec_pack_ufix_trunc.
6073         (vec_unpacks_float_hi_optab): Define new macro.
6074         (vec_unpacks_float_lo_optab): Ditto.
6075         (vec_unpacku_float_hi_optab): Ditto.
6076         (vec_unpacku_float_lo_optab): Ditto.
6077         (vec_pack_sfix_trunc_optab): Ditto.
6078         (vec_pack_ufix_trunc_optab): Ditto.
6079         * genopinit.c (optabs): Implement vec_unpack[s|u]_[hi|lo]_optab
6080         and vec_pack_[s|u]fix_trunc_optab using
6081         vec_unpack[s|u]_[hi\lo]_* and vec_pack_[u|s]fix_trunc_* patterns
6082         * tree-vectorizer.c (supportable_widening_operation): Handle
6083         FLOAT_EXPR and CONVERT_EXPR.  Update comment.
6084         (supportable_narrowing_operation): New function.
6085         * tree-vectorizer.h (supportable_narrowing_operation): Prototype.
6086         * tree-vect-transform.c (vectorizable_conversion): Handle
6087         (nunits_in == nunits_out / 2) and (nunits_out == nunits_in / 2) cases.
6088         (vect_gen_widened_results_half): Move before vectorizable_conversion.
6089         (vectorizable_type_demotion): Call supportable_narrowing_operation()
6090         to check for target support.
6091         * optabs.c (optab_for_tree_code) Return vec_unpack[s|u]_float_hi_optab
6092         for VEC_UNPACK_FLOAT_HI_EXPR, vec_unpack[s|u]_float_lo_optab
6093         for VEC_UNPACK_FLOAT_LO_EXPR and vec_pack_[u|s]fix_trunc_optab
6094         for VEC_PACK_FIX_TRUNC_EXPR.
6095         (expand_binop): Special case mode of the result for
6096         vec_pack_[u|s]fix_trunc_optab.
6097         (init_optabs): Initialize vec_unpack[s|u]_[hi|lo]_optab and
6098         vec_pack_[u|s]fix_trunc_optab.
6099
6100         * tree.def (VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR,
6101         VEC_PACK_FIX_TRUNC_EXPR): New tree codes.
6102         * tree-pretty-print.c (dump_generic_node): Handle
6103         VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR and
6104         VEC_PACK_FIX_TRUNC_EXPR.
6105         (op_prio): Ditto.
6106         * expr.c (expand_expr_real_1): Ditto.
6107         * tree-inline.c (estimate_num_insns_1): Ditto.
6108         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
6109
6110         * config/i386/sse.md (vec_unpacks_float_hi_v8hi): New expander.
6111         (vec_unpacks_float_lo_v8hi): Ditto.
6112         (vec_unpacku_float_hi_v8hi): Ditto.
6113         (vec_unpacku_float_lo_v8hi): Ditto.
6114         (vec_unpacks_float_hi_v4si): Ditto.
6115         (vec_unpacks_float_lo_v4si): Ditto.
6116         (vec_pack_sfix_trunc_v2df): Ditto.
6117
6118         * doc/c-tree.texi (Expression trees) [VEC_UNPACK_FLOAT_HI_EXPR]:
6119         Document.
6120         [VEC_UNPACK_FLOAT_LO_EXPR]: Ditto.
6121         [VEC_PACK_FIX_TRUNC_EXPR]: Ditto.
6122         * doc/md.texi (Standard Names) [vec_pack_sfix_trunc]: Document.
6123         [vec_pack_ufix_trunc]: Ditto.
6124         [vec_unpacks_float_hi]: Ditto.
6125         [vec_unpacks_float_lo]: Ditto.
6126         [vec_unpacku_float_hi]: Ditto.
6127         [vec_unpacku_float_lo]: Ditto.
6128
6129 2007-05-16  Uros Bizjak  <ubizjak@gmail.com>
6130
6131         * soft-fp/README: Update for new files.
6132         * soft-fp/floattisf.c: New file.
6133         * soft-fp/floattidf.c: New file.
6134         * soft-fp/floattitf.c: New file.
6135         * soft-fp/floatuntisf.c: New file.
6136         * soft-fp/floatuntidf.c: New file.
6137         * soft-fp/floatuntitf.c: New file.
6138         * soft-fp/fixsfti.c: New file.
6139         * soft-fp/fixdfti.c: New file.
6140         * soft-fp/fixtfti.c: New file.
6141         * soft-fp/fixunssfti.c: New file.
6142         * soft-fp/fixunsdfti.c: New file.
6143         * soft-fp/fixunstfti.c: New file.
6144         * soft-fp/extendxftf.c: New file.
6145         * soft-fp/trunctfxf.c: New file.
6146
6147         * libgcc-std.ver (__extendxftf2): Added to GCC_4.3.0 section.
6148         (__trunctfxf2): Ditto.
6149
6150         * config/i386/libgcc-x86_64-glibc.ver (__addtf3, __divtf3, __eqtf2,
6151         __extenddftf2, __extendsftf2, __fixtfdi, __fixtfsi, __fixtfti,
6152         __fixunstfdi, __fixunstfsi, __fixunstfti, __floatditf, __floatsitf,
6153         __floattitf, __floatunditf, __floatunsitf, __floatuntitf, __getf2,
6154         __letf2, __multf3, __negtf2, __subtf3, __trunctfdf2, __trunctfsf2,
6155         __unordtf2): Exclude and add to GCC_4.3.0 section for x86_64 targets.
6156
6157         * config/i386/t-fprules-softfp64: New file.
6158         * config/i386/sfp-machine.h: New file.
6159         * config.gcc (x86_64-*-linux*, x86_64-*-kfreebsd*-gnu,
6160         x86_64-*-knetbsd*-gnu): Add i386/t-fprules-softfp64
6161         and soft-fp/t-softfp to tmake_file.
6162         (i[34567]86-*-linux*, i[34567]86-*-kfreebsd*-gnu,
6163         i[34567]86-*-knetbsd*-gnu): Ditto for --enable-targets=all.
6164
6165         * config/i386/t-linux64 (softfp_wrap_start): New.
6166         (softfp_wrap_end): New.
6167         * config/i386/i386.c (ix86_scalar_mode_supported): TFmode is
6168         supported for TARGET_64BIT.
6169
6170 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
6171
6172         * c-common.c (c_common_signed_or_unsigned_type): Emulate
6173         c_common_unsigned_type behavior.
6174
6175 2007-05-16  Paolo Bonzini  <bonzini@gnu.org>
6176
6177         * config/i386/i386.c (legitimize_tls_address): Mark __tls_get_addr
6178         calls as pure.
6179
6180 2007-05-16  Eric Christopher  <echristo@apple.com>
6181
6182         * config/rs6000/rs6000.c (rs6000_emit_prologue): Move altivec register
6183         saving after stack push. Set sp_offset whenever we push.
6184         (rs6000_emit_epilogue): Move altivec register restore before
6185         stack push.
6186
6187 2007-05-16  Richard Sandiford  <richard@codesourcery.com>
6188
6189         * configure.ac: Allow sysroots to be relocated under $prefix as
6190         well as $exec_prefix.
6191         * configure: Regenerate.
6192
6193 2007-05-16  Richard Sandiford  <richard@codesourcery.com>
6194
6195         Revert:
6196
6197         2007-05-12  Richard Sandiford  <richard@codesourcery.com>
6198
6199         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
6200         (gcc_tooldir): Likewise.
6201         * configure: Regenerate.
6202         * Makefile.in (libsubdir_to_prefix): New variable, based on the
6203         old configure.ac gcc_tooldir setting.
6204         (prefix_to_exec_prefix): New variable.
6205         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
6206         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
6207
6208 2007-05-14  Janis Johnson  <janis187@us.ibm.com>
6209
6210         * c-typeck.c (build_binary_op): Return early for error.
6211
6212 2007-05-15  Zdenek Dvorak  <dvorakz@suse.cz>
6213
6214         * tree-ssa-loop-niter.c (record_estimate): Use GGC_NEW to allocate
6215         struct nb_iter_bound.
6216         (free_numbers_of_iterations_estimates_loop): Use ggc_free.
6217         * gengtype.c (open_base_files): Add cfhloop.h to the list of includes.
6218         * cfgloopmanip.c (place_new_loop): Vector larray is gc-allocated.
6219         * tree-scalar-evolution.c: Include gt-tree-scalar-evolution.h.
6220         (struct scev_info_str, scalar_evolution_info): Add GTY markers.
6221         (new_scev_info_str): Use GGC_NEW to allocate struct scev_info_str.
6222         (del_scev_info): Use ggc_free.
6223         (scev_initialize): Allocate scalar_evolution_info in gc memory.
6224         * loop-init.c: Include ggc.h.
6225         (loop_optimizer_init): Use GGC_CNEW to allocate struct loops.
6226         (loop_optimizer_finalize): Use ggc_free.
6227         * tree-ssa-loop.c (pass_tree_unswitch, pass_vectorize,
6228         pass_linear_transfom, pass_empty_loop, pass_complete_unroll,
6229         pass_iv_optimize): Add TODO_ggc_collect.
6230         * function.h (struct function): Remove skip marker from
6231         x_current_loops.
6232         * cfgloop.c: Include ggc.h.
6233         (flow_loops_free, flow_loop_free): Free the loop descriptions in gc
6234         memory.
6235         (establish_preds): Vector superloops is gc allocated.
6236         (alloc_loop): Allocate loop using GGC_CNEW.  Allocate head of
6237         loop->exits list.
6238         (flow_loops_find): Vector larray is gc allocated.
6239         (loop_exit_free): Use ggc_free.
6240         (rescan_loop_exit): Use GGC_NEW to allocate struct loop_exit.  Reflect
6241         that head of exits list is now not a part of struct loop.
6242         (record_loop_exits): Allocate exits table in gc memory.
6243         (get_loop_exit_edges, verify_loop_structure, single_exit): Reflect
6244         that head of exits list is now not a part of struct loop.
6245         * cfgloop.h (struct lpt_decision, struct nb_iter_bound,
6246         struct loop_exit): Add GTY marker.
6247         (struct loop): Add GTY marker.  Make superloops vector gc allocated.
6248         Add skip marker to aux field.  Make head of exits list a separate
6249         object.
6250         (struct loops): Add GTY marker.  Make larray vector gc allocated.
6251         Add param marker to exits table.
6252         (get_loops): Type changed.
6253         * Makefile.in (tree-scalar-evolution.o): Add
6254         gt-tree-scalar-evolution.h dependency.
6255         (cfgloop.o, loop-init.o): Add ggc.h dependency.
6256         (GTFILES): Add cfgloop.h and tree-scalar-evolution.c.
6257         * basic-block.h (struct basic_block_def): Remove skip marker from
6258         loop_father field.
6259
6260 2007-05-14  Uros Bizjak  <ubizjak@gmail.com>
6261
6262         * builtins.c (expand_builtin_mathfn): Use EXPAND_NORMAL instead
6263         of 0 in the call to expand_expr().
6264         (expand_builtin_mathfn_3): Ditto.
6265         (expand_builtin_interclass_mathfn): Ditto.
6266         (expand_builtin_cexpi): Ditto.
6267         (expand_builtin_int_roundingfn): Ditto.
6268         (expand_builtin_int_roundingfn_2): Ditto.
6269         (expand_builtin_pow): Ditto.
6270         (expand_builtin_powi): Ditto.
6271         (expand_builtin_bswap): Ditto.
6272         (expand_builtin_unop): Ditto.
6273         (expand_builtin_fabs): Ditto.
6274         (get_builtin_sync_mem): Use NULL_RTX instead of NULL in
6275         the call to expand_expr().
6276         (expand_builtin_sync_operation): Ditto.
6277         (expand_builtin_compare_and_swap): Ditto.
6278         (expand_builtin_lock_test_and_set): Ditto.
6279         * except.c (expand_builtin_eh_return_data_regno): Use EXPAND_NORMAL
6280         instead of 0 in the call to expand_expr().
6281         (expand_builtin_extract_return_addr): Ditto.
6282         (expand_builtin_eh_return): Ditto.
6283         (expand_eh_return): Ditto.
6284         * explow.c (expr_size): Ditto.
6285         * expr.c (optimize_bitfield_assignment_op): Ditto.
6286         (expand_assignement): Ditto.
6287         (store_expr): Ditto.
6288         (store_field): Ditto.
6289         (expand_expr_addr_expr_1): Use NULL_RTX instead of NULL in
6290         the call to expand_expr().
6291         (expand_expr_real_1) [COMPLEX_CST]: Use EXPAND_NORMAL instead of 0
6292         in the call to expand_expr().
6293         [CONSTRUCTOR, PLUS_EXPR, MINUS_EXPR, NEGATE_EXPR, ABS_EXPR,
6294         BIT_NOT_EXPR, LSHIFT_EXPR, LT_EXPR, TRUTH_NOT_EXPR]: Ditto.
6295         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO]: Use expand_normal() instead
6296         of expand_expr().
6297         * optabs.c (expand_vec_shift_expr): Ditto.
6298         (expand_vec_cond_expr): Ditto.
6299         (vector_compare_rtx): Use EXPAND_STACK_PARM instead of 1 in the
6300         call to expand_expr().
6301         * stmt.c (expand_return): Use EXPAND_NORMAL instead of 0
6302         in the call to expand_expr().
6303
6304 2007-05-14  Dave Korn  <dave.korn@artimi.com>
6305
6306         * genautomata.c (gen_regexp_el):  Allocate correct size for regexp.
6307
6308 2007-05-14  Rafael Avila de Espindola  <espindola@google.com>
6309
6310         * c-common.c (warnings_for_convert_and_check): Use unsigned_type_for
6311         instead of c_common_unsigned_type.
6312         (c_common_unsigned_type): Remove.
6313         (shorten_compare): Use c_common_signed_or_unsigned_type instead of
6314         c_common_unsigned_type.
6315         (c_common_nodes_and_builtins): Use unsigned_type_for instead of
6316         c_common_unsigned_type.
6317         * c-common.h (c_common_unsigned_type): Remove.
6318         * c-decl.c (grokdeclarator): Use unsigned_type_for instead of
6319         c_common_unsigned_type.
6320         * c-format.c (check_format_types): Use unsigned_type_for instead of
6321         c_common_unsigned_type.
6322         * c-objc-common.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
6323         * c-typeck.c (convert_for_assignment): Use unsigned_type_for instead
6324         of c_common_unsigned_type.
6325         * convert.c (convert_to_integer): Use unsigned_type_for instead of
6326         lang_hooks.types.unsigned_type.
6327         * expmed.c (make_tree): Use unsigned_type_for instead of
6328         lang_hooks.types.unsigned_type.
6329         * fold-const.c (fold_negate_expr): Use unsigned_type_for instead of
6330         lang_hooks.types.unsigned_type.
6331         (build_range_check): Likewise.
6332         (fold_unary): Likewise.
6333         (fold_binary): Likewise.
6334         (fold_ternary): Likewise.
6335         * langhooks-def.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
6336         * langhooks.h (lang_hooks_for_types): Remove unsigned_type.
6337         * tree.c (get_unsigned_type): New.
6338         (unsigned_type_for): Use get_unsigned_type instead of
6339         lang_hooks.types.unsigned_type.
6340
6341 2007-05-14  Kazu Hirata  <kazu@codesourcery.com>
6342
6343         * config/m68k/m68k-protos.h: Rename m68k_interrupt_function_p
6344         to m68k_get_function_kind.  Update its prototype.
6345         * config/m68k/m68k.c (m68k_attribute_table): Add an entry for
6346         interrupt_thread.
6347         (m68k_interrupt_function_p): Return enum m68k_function_type
6348         instead of bool.  Rename to m68k_get_function_kind.
6349         (m68k_handle_fndecl_attribute): Reject interrupt_thread if the
6350         target is not fido.
6351         (m68k_compute_frame_layout): Don't mark any register for save
6352         if an interrupt_thread attribute is specified.
6353         (m68k_hard_regno_rename_ok): Update a use of
6354         m68k_interrupt_function_p.
6355         * config/m68k/m68k.h (EPILOGUE_USES): Update a use of
6356         m68k_interrupt_function_p.
6357         (m68k_function_type): New.
6358         * config/m68k/m68k.md (*return): Output a 'sleep' instruction
6359         for a function with an interrupt_thread attribute.
6360         * doc/extend.texi: Document the interrupt_thread attribute.
6361
6362 2007-05-13  Daniel Berlin  <dberlin@dberlin.org>
6363
6364         Fix PR tree-optimization/31911
6365         * tree-ssa-pre.c (phi_translate): Make sure to cache results even
6366         if they didn't change the expression.
6367
6368 2007-05-13  Zdenek Dvorak  <dvorakz@suse.cz>
6369
6370         * tree-scalar-evolution.c (resolve_mixers): Exported.
6371         * tree-scalar-evolution.h (resolve_mixers): Declare.
6372         * tree-data-ref.c (object_analysis, ptr_decl_may_alias_p,
6373         ptr_ptr_may_alias_p, may_alias_p, record_ptr_differ_p,
6374         record_record_differ_p, record_array_differ_p, array_ptr_differ_p,
6375         base_object_differ_p, base_addr_differ_p, analyze_array_indexes,
6376         init_array_ref, init_pointer_ref, analyze_indirect_ref,
6377         strip_conversion, analyze_offset_expr, address_analysis,
6378         object_analysis, analyze_offset): Removed.
6379         (dr_analyze_innermost, dr_analyze_indices, dr_analyze_alias,
6380         split_constant_offset, canonicalize_base_object_address,
6381         object_address_invariant_in_loop_p, disjoint_objects_p,
6382         dr_may_alias_p, dr_address_invariant_p): New functions.
6383         (create_data_ref): Use dr_analyze_innermost, dr_analyze_indices
6384         and dr_analyze_alias.
6385         (initialize_data_dependence_relation): Use dr_may_alias_p
6386         and object_address_invariant_in_loop_p.
6387         (compute_self_dependence): Handle the case when
6388         DDR_ARE_DEPENDENT (ddr) is chrec_dont_know.
6389         (find_data_references_in_stmt): Restrict the analysis of data
6390         references to the given loop nest.
6391         (find_data_references_in_loop): Made static.  Pass loop nest to
6392         find_data_references_in_stmt.
6393         (compute_data_dependences_for_loop): Use DR_VOPS.
6394         (free_data_ref): Free DR_VOPS.
6395         * tree-data-ref.h (struct first_location_in_loop): Replaced by ...
6396         (struct innermost_loop_behavior): ... new.
6397         (struct base_object_info): Replaced by ...
6398         (struct indices): ... new.
6399         (struct dr_alias): New.
6400         (enum data_ref_type): Removed.
6401         (struct data_reference): Consist of struct innermost_loop_behavior,
6402         struct indices and struct dr_alias.
6403         (DR_SET_ACCESS_FNS, DR_FREE_ACCESS_FNS): Removed.
6404         (DR_MEMTAG): Renamed to ...
6405         (DR_SYMBOL_TAG): ... this.
6406         (find_data_references_in_loop): Declaration removed.
6407         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Use DR_INIT
6408         instead of DR_OFFSET_MISALIGNMENT.  DR_ALIGNED_TO is never NULL.
6409         (vect_analyze_data_refs): Use DR_SYMBOL_TAG instead of DR_MEMTAG.
6410         * tree-vect-transform.c (vect_create_data_ref_ptr): Ditto.
6411
6412 2007-05-13  Revital Eres  <eres@il.ibm.com>
6413
6414         * tree-ssa-dse.c (get_use_of_stmt_lhs): New function
6415         which walks virtual def-use chains to find redundant stores.
6416         (dse_optimize_stmt): Call it.
6417
6418 2007-05-12  Steven Bosscher  <steven@gcc.gnu.org>
6419
6420         * gcse.c (gcse_main): Do jump bypassing in CPROP2.
6421         * passes.c (init_optimization_passes): Move pass_jump_bypass
6422         after loop2.
6423
6424         * basic-block.h (bb_has_eh_pred): Fix style issue.
6425
6426 2007-05-12  Steven Bosscher  <steven@gcc.gnu.org>
6427
6428         PR rtl-optimization/31848
6429         * loop-invariant.c (move_invariant_reg): If we move an insn
6430         with a REG_EQUAL note, and that insn is not always executed,
6431         remove the REG_EQUAL note.
6432
6433 2007-05-12  Richard Guenther  <rguenther@suse.de>
6434
6435         PR tree-optimization/31797
6436         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Do not
6437         propagate into a stmt that has volatile ops.
6438
6439 2007-05-12  Richard Sandiford  <richard@codesourcery.com>
6440
6441         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
6442         (gcc_tooldir): Likewise.
6443         * configure: Regenerate.
6444         * Makefile.in (libsubdir_to_prefix): New variable, based on the
6445         old configure.ac gcc_tooldir setting.
6446         (prefix_to_exec_prefix): New variable.
6447         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
6448         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
6449
6450 2007-05-11  Silvius Rus  <rus@google.com>
6451
6452         * Makefile.in (OBJS-common): Add tree-ssa-alias-warnings.o.
6453         * c-common.c (strict_aliasing_warning): Modify -Wstrict-aliasing logic.
6454         * c-common.h (strict_aliasing_warning): Change return type.
6455         * c-opts.c (c_common_handle_option): Add call to set_Wstrict_aliasing.
6456         * c-typeck.c (build_indirect_ref): Add call to strict_aliasing_warning.
6457         (build_c_cast): Condition call to strict_aliasing_warning.
6458         * doc/invoke.texi: Update description of -Wstrict-aliasing[=n].
6459         * flags.h (set_Wstrict_aliasing): Declare.
6460         * opts.c (set_Wstrict_alising): Define, add call to.
6461         * tree-flow.h (strict_aliasing_warning_backend): Declare.
6462         * tree-ssa-alias-warnings.c: New file.
6463         * tree-ssa-alias.c (compute_may_aliases): Add call to
6464         strict_aliasing_warning_backend.
6465
6466 2007-05-11  Zdenek Dvorak  <dvorakz@suse.cz>
6467
6468         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
6469         Use loop_depth and loop_outer accessor functions.
6470         * tree-ssa-loop-im.c (outermost_invariant_loop, set_level,
6471         determine_invariantness_stmt, move_computations_stmt): Ditto.
6472         * cfgloopmanip.c (fix_bb_placement, fix_loop_placement, remove_path,
6473         add_loop, loopify, unloop, fix_loop_structure): Ditto.
6474         * tree-ssa-loop-manip.c (find_uses_to_rename_use): Ditto.
6475         * tree-scalar-evolution.c (interpret_loop_phi,
6476         compute_scalar_evolution_in_loop, analyze_scalar_evolution_in_loop,
6477         instantiate_parameters_1, scev_const_prop): Ditto.
6478         * cfghooks.c (make_forwarder_block): Ditto.
6479         * cfgloopanal.c (mark_irreducible_loops, mark_loop_exit_edges): Ditto.
6480         * modulo-sched.c (loop_canon_p): Ditto.
6481         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg,
6482         slpeel_can_duplicate_loop_p): Ditto.
6483         * lambda-code.c (invariant_in_loop_and_outer_loops): Ditto.
6484         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
6485         * cfgloop.c (flow_loop_dump, flow_loop_nodes_find, rescan_loop_exit,
6486         cancel_loop, verify_loop_structure): Ditto.
6487         (flow_loop_nested_p, superloop_at_depth, flow_loop_free,
6488         add_bb_to_loop, remove_bb_from_loops, find_common_loop): Use the
6489         superloops vector instead of "pred" array.
6490         (establish_preds): Take father loop as an argument.  Initialize the
6491         superloops vector.
6492         (flow_loop_tree_node_add): Pass father loop to establish_preds.
6493         Do not initialize loop->outer.
6494         (flow_loop_tree_node_remove): Truncate the superloops vector.
6495         * cfgloop.h (struct loop): Removed field "outer", fields "depth" and
6496         "pred" merged to "superloops" vector.
6497         (loop_depth, loop_outer): New.
6498         (fel_init): Use loop_outer.
6499
6500 2007-05-11  Jan Hubicka  <jh@suse.cz>
6501
6502         * cgraphunit.c: Include gt-cgraphunit.h
6503         (static_ctors, static_dtors): New static vars.
6504         (record_cdtor_fn, build_cdtor, cgraph_build_cdtor_fns): New functions,
6505         based on implementation in c-common.c
6506         (cgraph_finalize_function): Call record_cdtor_fn.
6507         (cgraph_optimize): Call cgraph_build_cdtor_fns.
6508         * decl.c (finish_function): Do not call c_record_cdtor_fn.
6509         (c_write_global_declarations): Do not call c_build_cdtor_fns.
6510         * c-common.c (static_ctors, static_dtors, c_record_cdtor_fn,
6511         build_cdtor, c_build_cdtor_fns): Remove.
6512         * c-common.h (static_ctors, static_dtors, c_record_cdtor_fn,
6513         c_build_cdtor_fns): Remove prototype.
6514
6515 2007-05-11  Paolo Carlini  <pcarlini@suse.de>
6516
6517         PR other/31852
6518         * builtin-types.def: Add BT_FN_PTR_CONST_PTR_INT_SIZE.
6519         * builtins.def: Add BUILT_IN_MEMCHR, use the latter.
6520         * builtins.c (fold_builtin_memchr): New.
6521         (expand_builtin_memchr): Call the latter.
6522         (expand_builtin, fold_builtin_3): Deal with BUILT_IN_MEMCHR.
6523         * doc/extend.texi ([Other built-in functions provided by GCC]):
6524         Document memchr.
6525
6526 2007-05-11  Andreas Krebbel  <krebbel1@de.ibm.com>
6527
6528         * config/s390/s390.md (GPR0_REGNUM, FPR0_REGNUM, FPR2_REGNUM,
6529         PFPO_CONVERT, PFPO_OP_TYPE_SF, PFPO_OP_TYPE_DF, PFPO_OP_TYPE_TF,
6530         PFPO_OP_TYPE_SD, PFPO_OP_TYPE_DD, PFPO_OP_TYPE_TD, PFPO_OP0_TYPE_SHIFT,
6531         PFPO_OP1_TYPE_SHIFT): Constants added.
6532         (DFP_ALL): Mode macro defined.
6533         ("*trunc<BFP:mode><DFP_ALL:mode>2", "*trunc<DFP_ALL:mode><BFP:mode>2",
6534         "*extend<BFP:mode><DFP_ALL:mode>2", "*extend<DFP_ALL:mode><BFP:mode>2"):
6535         Insn definitions added.
6536         ("trunc<BFP:mode><DFP_ALL:mode>2", "trunc<DFP_ALL:mode><BFP:mode>2",
6537         "extend<BFP:mode><DFP_ALL:mode>2", "extend<DFP_ALL:mode><BFP:mode>2"):
6538         Expanders added.
6539
6540 2007-05-10  Zdenek Dvorak  <dvorakz@suse.cz>
6541
6542         PR tree-optimization/31885
6543         * tree-chrec.c (chrec_contains_undetermined): Do not consider
6544         NULL_TREE to be undetermined.
6545         (automatically_generated_chrec_p): Return false for NULL.
6546
6547 2007-05-08  Bernd Schmidt  <bernd.schmidt@analog.com>
6548
6549         * config/bfin/bfin.h (MOVE_RATIO): Define.
6550
6551 2007-05-10  Richard Sandiford  <richard@codesourcery.com>
6552
6553         * config.gcc (sparc-wrs-vxworks): New target.
6554         * config/sparc/vxworks.h, config/sparc/t-vxworks: New files.
6555         * config/sparc/sparc-protos.h (sparc_emit_call_insn): Declare.
6556         * config/sparc/sparc.h: Include vxworks-dummy.h.
6557         (PRINT_OPERAND_ADDRESS): Extend SYMBOL_REF handling to
6558         include LABEL_REFs too.
6559         * config/sparc/sparc.c (sparc_expand_move): Don't assume that
6560         _GLOBAL_OFFSET_TABLE_ - label_ref is a link-time constant on
6561         VxWorks.
6562         (legitimize_pic_address): Handle LABEL_REFs like SYMBOL_REFs
6563         on VxWorks.
6564         (load_pic_register): Use gen_vxworks_load_got for VxWorks.
6565         (sparc_emit_call_insn): New function.
6566         (sparc_function_ok_for_sibcall): Restrict sibcalls to locally-binding
6567         functions when generating VxWorks PIC.
6568         * config/sparc/sparc.md (vxworks_load_got): New pattern.
6569         (call, call_value): Use sparc_emit_call_insn instead of
6570         emit_call_insn.
6571
6572 2007-05-09  Bob Wilson  <bob.wilson@acm.org>
6573
6574         * config/xtensa/xtensa.c (xtensa_output_literal): Don't use #if.
6575
6576 2007-05-09  Bob Wilson  <bob.wilson@acm.org>
6577
6578         * config/xtensa/xtensa.c (xtensa_output_literal): Mask out high bits
6579         for floating-point values if HOST_BITS_PER_LONG > 32.  Use
6580         split_double instead of operand_subword.
6581
6582 2007-05-08  Bernd Schmidt  <bernd.schmidt@analog.com>
6583
6584         * config/bfin/bfin.h (LOCAL_ALIGNMENT): Define.
6585         * config/bfin/bfin.c (bfin_local_alignment): New function.
6586         * config/bfin/bfin-protos.h (bfin_local_alignment): Declare it.
6587
6588 2007-05-08  Chao-ying Fu  <fu@mips.com>
6589
6590         * doc/md.texi (msub@var{m}@var{n}4, usub@var{m}@var{n}4): Document.
6591         * optabs.h (OTI_smsub_widen, OTI_umsub_widen): New optab_indexes.
6592         (smsub_widen_optab, umsub_widen_optab): Define.
6593         * optabs.c (init_optabs): Initialize smsub_widen_optab and
6594         umsub_widen_optab.
6595         * genopinit.c (optabs): Fill in smsub_widen_optab and
6596         umsub_widen_optab.
6597         * expr.c (expand_expr_real_1): Try to use smsub_widen_optab
6598         and umsub_widen_optab to implement multiply-subtract sequences.
6599         * config/mips/mips.md (*msac<u>_di): Rename to...
6600         (<u>msubsidi4): ...this.  Extend condition to include
6601         GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
6602         of operand 0 to "ka" and use the three-operand form of msub<u>
6603         for TARGET_DSPR2.
6604         * config/mips/mips-dspr2.md (mips_msub, mips_msubu): Convert
6605         to define_expands.
6606
6607 2007-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
6608
6609         PR rtl-optimization/28011
6610         * reload.c (push_reload): Set dont_share if IN appears in OUT
6611         also when IN is a PLUS rtx.
6612         (reg_overlap_mentioned_for_reload_p): Return true if X and IN
6613         are same PLUS rtx.
6614
6615 2007-05-08  Kazu Hirata  <kazu@codesourcery.com>
6616
6617         * emit-rtl.c (unshare_all_rtl_1): Don't copy DECL_RTL.  Don't
6618         call unshare_all_decls.
6619         (unshare_all_rtl): Adjust the call to unshare_all_rtl_1.
6620         (unshare_all_decls): Remove.
6621
6622 2007-05-08  Simon Martin  <simartin@users.sourceforge.net>
6623
6624         PR 31847
6625         * tree-dump.c (dump_options): Don't use TDF_DIAGNOSTIC in "*-all" tree
6626         dumps.
6627
6628 2007-05-08  Sandra Loosemore  <sandra@codesourcery.com>
6629             Nigel Stephens  <nigel@mips.com>
6630
6631         * config/mips/mips.h (MAX_FPRS_PER_FMT): Renamed from FP_INC.
6632         Update comments and all uses.
6633         (MIN_FPRS_PER_FMT): Define.
6634         * config/mips/mips.c (function_arg): Fix to correctly handle
6635         the -mips32r2 -mfp64 -mabi=32 case.
6636         (override_options): Enable use of odd-numbered registers for
6637         SFmode values on MIPS32.
6638         (mips_save_reg_p): Save whole floating-point register pair if
6639         either half is used.
6640         (compute_frame_size): Fix comment.
6641
6642 2007-05-08  Jie Zhang  <jie.zhang@analog.com>
6643
6644         * config/bfin/bfin-protos.h (bfin_expand_epilogue): Add a third
6645         argument of type bool.
6646         * config/bfin/bfin.c (add_to_reg): Add epilogue_p as a fourth
6647         argument. Safely select temporary P register according to it.
6648         (do_link): Change call site of add_to_reg accordingly.
6649         (do_unlink): Add epilogue_p as a fourth argument and pass it
6650         to add_to_reg.
6651         (expand_interrupt_handler_epilogue): Change call of do_unlink
6652         accordingly.
6653         (bfin_expand_prologue): Add a third argument sibcall_p.
6654         * config/bfin/bfin.md (epilogue): Change call of
6655         bfin_expand_epilogue accordingly.
6656         (sibcall_epilogue): Likewise.
6657         (eh_return_internal): Likewise.
6658
6659         * config/bfin/bfin-protos.h (enum bfin_cpu): Add
6660         BFIN_CPU_BF534, BFIN_CPU_BF536 and BFIN_CPU_BF561.
6661         * config/bfin/bfin.c (bfin_handle_option): Handle
6662         -mcpu=bf534, -mcpu=bf536 and -mcpu=bf561.
6663         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS):
6664         Support bf534, bf536 and bf561.
6665         * doc/invoke.texi (Blackfin Options): Document -mcpu and -msim.
6666
6667 2007-05-08  Uros Bizjak  <ubizjak@gmail.com>
6668
6669         PR target/31854
6670         * config/i386/i386.c (ix86_function_regparm): Process local
6671         functions only when TREE_CODE (decl) equals FUNCTION_DECL.
6672
6673 2007-05-07  Mike Stump  <mrs@apple.com>
6674
6675         * doc/invoke.texi (Warning Options): Document that -Wempty-body
6676         also checks for and while statements in C++.
6677
6678 2007-05-07  Nathan Froyd  <froydnj@codesourcery.com>
6679
6680         * gcc.c (at_file_supplied): New variable.
6681         (main): Set it if we expanded argv.
6682         (do_spec_1): Pass an @-file to the linker if we were called with
6683         an @-file argument and HAVE_GNU_LD.
6684         * collect2.c (at_file_supplied): New variable.
6685         (response_file): New variable.
6686         (collect_exit): Unlink response_file if necessary.
6687         (handler): Likewise.
6688         (do_wait): Likewise.
6689         (main): Set at_file_supplied if we expanded argv.
6690         (collect_execute): Pass an @-file to subprocesses if we were called
6691         with an @-file argument.
6692         * configure.ac: Add define for HAVE_GNU_LD.
6693         * configure: Regenerate.
6694         * config.in: Regenerate.
6695
6696 2007-05-07  Naveen.H.S  <naveen.hs@kpitcummins.com>
6697
6698         * config/m32c/muldiv.md (mulhisi3_c): Limit the mode of the 2nd
6699         operand to HI mode.
6700         (mulsi3): New.
6701         (divsi3): New.
6702         (udivsi3): New.
6703
6704 2007-05-07  Jayant Sonar  <jayants@kpitcummins.com>
6705
6706         * config/m32c/m32c.c (SYMBOL_FLAG_FUNCVEC_FUNCTION): Define.
6707         (TARGET_ENCODE_SECTION_INFO): Re-define.
6708         (m32c_encode_section_info): New
6709         (function_vector_handler): New
6710         (current_function_special_page_vector): New
6711         (m32c_special_page_vector_p): New.
6712         * config/m32c/m32c-protos.h (m32c_special_page_vector_p):
6713         Prototype.
6714         * config/m32c/jump.md: Added instruction JSRS for functions
6715         with attribute "function_vector".
6716         * doc/extend.texi (function_vector): Added description
6717         for M16C, M32C targets.
6718
6719 2007-05-07  DJ Delorie  <dj@redhat.com>
6720
6721         PR 31794
6722         * config/m32c/shift.md (ashlpsi3_i, ashrpsi3_i, ashlpsi3,
6723         ashrpsi3, lshrpsi3): Update shift count constraint.
6724
6725 2007-05-07  Danny Smith  <dannysmith@users.sourceforge.net>
6726             Nathan Froyd  <froydnj@codesourcery.com>
6727
6728         PR 22133
6729         * c-incpath.c (add_path): Strip trailing path separators.
6730
6731 2007-05-07  Eric Botcazou  <ebotcazou@adacore.com>
6732
6733         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Reset cfg_altered.
6734         Free dominance info before purging EH edges.
6735         (eliminate_degenerate_phis): Likewise.
6736         (propagate_rhs_into_lhs): Set cfg_altered to true instead of 1.
6737
6738 2007-05-07  Jan Hubicka  <jh@suse.cz>
6739
6740         * gimplify.c (gimplify_expr): Do not crash when folding
6741         (void *)(int)&a + 4.
6742
6743 2007-05-07  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
6744
6745         PR driver/31694
6746         * c-opts.c (lang_fortran): Make it non static.
6747         * c-common.h (lang_fortran): New prototype.
6748         * c-cppbuiltin.c (c_cpp_builtins): Create a __GFORTRAN__ if the
6749         -lang-fortran option was passed by the driver.
6750
6751 2007-05-06  Eric Botcazou  <ebotcazou@adacore.com>
6752
6753         * timevar.c (timevar_print): Test ENABLE_ASSERT_CHECKING instead
6754         of ASSERT_CHECKING.  Tweak message.
6755
6756 2007-05-06  Revital Eres  <eres@il.ibm.com>
6757
6758         PR 30957
6759         * loop-unroll.c (insert_var_expansion_initialization):
6760         Initialize the expansions with -zero instead of +zero.
6761
6762 2007-05-05  Aurelien Jarno  <aurelien@aurel32.net>
6763
6764         * config/pa/pa.md: Split tgd_load, tld_load and tie_load
6765         into pic and non-pic versions. Mark r19 as used for
6766         tgd_load_pic, tld_load_pic and tie_load_pic. Mark r27 as used
6767         for tgd_load, tld_load and tie_load .
6768         * config/pa/pa.c (legitimize_tls_address): Emit pic or non-pic
6769         version of tgd_load, tld_load and tie_load depending on the
6770         value of flag_pic.
6771
6772 2007-05-04  Ulrich Drepper  <drepper@redhat.com>
6773             Jakub Jelinek  <jakub@redhat.com>
6774
6775         * crtstuff.c (HIDDEN_DTOR_LIST_END): New macro.
6776         (__do_global_dtors_aux): Use more paranoid loop to run
6777         destructors if HIDDEN_DTOR_LIST_END.
6778         (__DTOR_END__): Export as a hidden symbol when HIDDEN_DTOR_LIST_END.
6779
6780 2007-05-04  Jakub Jelinek  <jakub@redhat.com>
6781
6782         * varasm.c (align_variable): Don't increase alignment for
6783         DECL_THREAD_LOCAL_P variables above BITS_PER_WORD through
6784         DATA_ALIGNMENT or CONSTANT_ALIGNMENT.
6785
6786 2007-05-04  Josh Conner  <jconner@apple.com>
6787
6788         * basic-block.h (cdi_direction): Assign values to all enumeration
6789         constants.
6790         (dom_computed): Remove.
6791         (dom_info_state): New.
6792         (set_dom_info_availability): New.
6793         * tree-ssa-loop-im.c (determine_invariantness): Initialize
6794         walk_data.dom_direction.
6795         * cfghooks.c (delete_basic_block): Use dom_info_available_p()
6796         instead of dom_computed[].
6797         (split_edge): Likewise.
6798         (create_basic_block): Likewise.
6799         (merge_blocks): Likewise.
6800         * ifcvt.c (find_if_header): Likewise.
6801         * tree-cfgcleanup.c (cleanup_tree_cfg): Likewise.
6802         * tree-ssa-dce.c (remove_dead_stmt): Likewise.
6803         * tree-ssa.c (verify_ssa): Likewise.
6804         * tree-cfg.c (tree_verify_flow_info): Likewise.
6805         (remove_edge_and_dominated_blocks): Likewise.
6806         * dominance.c (dom_computed): Make static.
6807         (calc_dfs_tree_nonrec): Change third param to a bool.
6808         (calc_dfs_tree): Change second param to a bool.
6809         (calc_idioms): Change second param to a bool.  Use
6810         dom_convert_dir_to_idx.
6811         (init_dom_info): Validate dir before using.
6812         (dom_convert_dir_to_idx): New.
6813         (calculate_dominance_info): Use dom_convert_dir_to_idx.  New
6814         variable 'reverse' used for calling calc_dfs_tree and calc_idoms.
6815         (free_dominance_info): Use dom_convert_dir_to_idx.
6816         (get_immediate_dominator): Likewise.
6817         (set_immediate_dominator): Likewise.
6818         (get_dominated_by): Likewise.
6819         (redirect_immediate_dominators): Likewise.
6820         (nearest_common_denominator): Likewise.
6821         (dominated_by_p): Likewise.
6822         (bb_dom_dfs_in): Likewise.
6823         (bb_dom_dfs_out): Likewise.
6824         (recount_dominator): Likewise.
6825         (iterate_fix_dominators): Likewise.
6826         (add_to_dominance_info): Likewise.
6827         (delete_from_dominance_info): Likewise.
6828         (first_dom_son): Likewise.
6829         (next_dom_son): Likewise.
6830         (dom_info_available_p): Likewise.
6831         (dom_info_state): New.
6832         (set_dom_info_availability): New.
6833
6834 2007-05-04  Andreas Krebbel  <krebbel1@de.ibm.com>
6835
6836         * config/s390/s390.md ("fix_trunc<mode>di2", "fix_trunc<mode>si2"):
6837         Expander removed.
6838         ("fix_trunc<DSF:mode><GPR:mode>2"): Expander added.
6839
6840 2007-05-04  Bob Wilson  <bob.wilson@acm.org>
6841
6842         * config/xtensa/xtensa.md (adddi3, adddi_carry): Delete.
6843         (subdi3, subdi_carry): Delete.
6844
6845 2007-05-04  Jan Hubicka  <jh@suse.cz>
6846             Richard Guenther  <rguenther@suse.de>
6847
6848         * opts.c (decode_options): Do not fiddle with inlining
6849         parameters in case of optimizing for size.
6850         * ipa-inline.c (cgraph_decide_recursive_inlining): When optimizing
6851         for size do nothing.
6852         (cgraph_decide_inlining_of_small_function): When optimizing for
6853         size never inline functions increasing caller size.
6854         (cgraph_early_inlining): Inline for size when optimizing for size.
6855
6856 2007-04-18  Bernd Schmidt  <bernd.schmidt@analog.com>
6857
6858         * config/bfin/bfin.md (<optab>di3): Now a define_expand which expands
6859         logical operations piecewise.
6860         (<optab>di_zesidi_di, <optab>di_sesidi_di, negdi2, one_cmpldi2,
6861         zero_extendsidi2, subdi_di_zesidi, subdi_zesidi_di, subdi_di_sesidi,
6862         subdi_sesidi_di): Delete.
6863         (add_with_carry): Produce carry in CC instead of a DREG to shorten
6864         the generated sequence.  Allow three-reg add in constraints.  Rewrite
6865         the rtl expression for carry to avoid zero_extend of a constant.
6866         (sub_with_carry): New pattern.
6867         (adddi3, subdi3): Change into define_expand.  For subtract, generate a
6868         different sequence not involving jumps.
6869         (notbi): Now a named pattern.
6870
6871 2007-05-04  Bradley Lucier  <lucier@math.purdue.edu>
6872
6873         * doc/invoke.texi (i386 and x86-64 Options) [-mpc32, -mpc64, -mpc80]:
6874         Add the note about a significant loss of accuracy of some
6875         mathematical routines when these options are used.
6876
6877 2007-05-04  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
6878
6879         * haifa-sched.c (rtx_vec_t): New typedef.
6880         (contributes_to_priority_p): Extract piece of priority () into new
6881         static function.
6882         (priority): Use the function.  Add assertion.
6883         (rank_for_schedule, set_priorities): Add assertion to check that
6884         insn's priority is initialized.
6885         (clear_priorities, calc_priorities): Change signature.  Make it update
6886         all relevant insns.  Update all callers ('add_to_speculative_block ()'
6887         and 'create_block_check_twin ()').
6888         * sched-int.h (struct haifa_insn_data): Remove field 'priority_known'.
6889         Add new field 'priority_status'.
6890         (INSN_PRIORITY_STATUS): New macro.
6891         (INSN_PRIORITY_KNOWN): Change to use INSN_PRIORITY_STATUS.
6892
6893 2007-05-04  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
6894
6895         * sched-ebb.c (debug_ebb_dependencies): New static function.
6896         (init_ready_list): Use it.
6897
6898         * sched-rgn.c (debug_dependencies): Split into 'debug_dependencies ()'
6899         with changed signature and 'debug_rgn_dependencies ()'.
6900         (debug_rgn_dependencies): New static function.
6901         (init_ready_list): Use it.
6902
6903         * sched-int.h (debug_dependencies): Declare.
6904
6905 2007-05-04  Andreas Krebbel  <krebbel1@de.ibm.com>
6906
6907         * libgcc-std.ver (__ffssi2): Added to GCC_4.3.0 section.
6908
6909 2007-05-04  Dirk Mueller  <dmueller@suse.de>
6910
6911         * c.opt(Wmain,ffreestanding): Enable for C++,ObjC++.
6912
6913 2007-05-03  Jan Hubicka  <jh@suse.cz>
6914
6915         * fold-const.c (fold_unary): Convert (T1)(X op Y) into
6916         ((T1)X op (T1)Y), for pointer type in more cases than before.
6917
6918         * gimplify.c (gimplify_expr): Fold (void *)&a + 4.
6919
6920         * tree-object-size.c (plus_expr_object_size): When operand size is
6921         unknown, return unknown.
6922
6923 2007-05-03  Dirk Mueller  <dmueller@suse.de>
6924
6925         * doc/invoke.texi (-m386,-m486,-mpentium,-mpentiumpro): Remove.
6926
6927         * config/i386/i386.h (CC1_CPU_SPEC): Remove handling for deprecated
6928         options.
6929
6930         * config/i386/i386.opt (m386,m486,mpentium,mpentiumpro): Remove.
6931
6932 2007-05-03  Janis Johnson  <janis187@us.ibm.com>
6933
6934         * doc/sourcebuild.texi (Test Directives) Clarify dg-excess-errors.
6935
6936 2007-05-03  Joseph Myers  <joseph@codesourcery.com>
6937
6938         * config/soft-fp/double.h, config/soft-fp/extended.h,
6939         config/soft-fp/floatundidf.c, config/soft-fp/floatundisf.c,
6940         config/soft-fp/floatunsidf.c, config/soft-fp/floatunsisf.c,
6941         config/soft-fp/op-2.h, config/soft-fp/op-4.h,
6942         config/soft-fp/op-common.h, config/soft-fp/quad.h: Update from
6943         glibc CVS.
6944
6945 2007-05-03  Ian Lance Taylor  <iant@google.com>
6946
6947         * config/rs6000/rs6000.c (rs6000_override_options): Don't set
6948         MASK_PPC_GFXOPT for 8540 or 8548.
6949
6950 2007-05-03  Uros Bizjak  <ubizjak@gmail.com>
6951
6952         * tree-vect-transform.c (vect_update_inits_of_drs): Use
6953         vect_print_dump_info() to output debug information.
6954
6955 2007-05-03  Uros Bizjak  <ubizjak@gmail.com>
6956
6957         PR target/31768
6958         * config/i386/i386.c (print_operand) ['z']: Output 'w' for
6959         operands of size 2 when operand is not MEM_P.
6960
6961 2007-05-03  Zdenek Dvorak  <dvorakz@suse.cz>
6962
6963         PR tree-optimization/30565
6964         * lambda-code.c (perfect_nestify): Fix updating of dominators.
6965
6966 2007-05-03  Bernd Schmidt  <bernd.schmidt@analog.com>
6967
6968         * config/bfin/bfin.md (addpdi3, us_truncpdisi2): New patterns.
6969         (umulsi3_highpart): Use them.
6970         * config/bfin/lib1funcs.asm (__umulsi3_highpart): Use unsigned move
6971         for final accumulator to D regisster tranfser.
6972
6973 2007-05-03  Dorit Nuzman  <dorit@il.ibm.com>
6974
6975         PR tree-optimization/31699
6976         * tree-vect-analyze.c (vect_update_misalignment_for_peel): Remove
6977         wrong code.
6978         (vect_enhance_data_refs_alignment): Compute peel amount using
6979         TYPE_VECTOR_SUBPARTS instead of vf.
6980         * tree-vect-transform.c (vect_gen_niters_for_prolog_loop): Likewise.
6981
6982 2007-05-02  Brooks Moses  <brooks.moses@codesourcery.com>
6983
6984         PR bootstrap/31776
6985         * system.h: Remove inclusion of double-int.h
6986         * tree.h: Include double-int.h
6987         * gengtype.c: Likewise
6988         * cfgloop.h: Likewise
6989         * Makefile.in: Adjust dependencies on double-int.h
6990
6991 2007-05-02  Eric Christopher  <echristo@apple.com>
6992
6993         * config/darwin.h (TARGET_OPTION_TRANSLATE_TABLE): Translate
6994         -shared to -Zdynamiclib.
6995
6996 2007-05-02  Seongbae Park  <seongbae.park@gmail.com>
6997
6998         PR c++/31663
6999         * c-common.c (strip_pointer_or_array_types): New function.
7000         * c-common.h (strip_pointer_or_array_types): New function declaration.
7001
7002 2007-05-03  Zdenek Dvorak  <dvorakz@suse.cz>
7003
7004         PR tree-optimization/31771
7005         * tree-cfg.c (move_block_to_fn): Assign bb to the correct index.
7006
7007 2007-05-02  Paul Brook  <paul@codesourcery.com>
7008
7009         * config/arm/bpabi.S (aeabi_lcmp): Fix result on overflow.
7010
7011 2007-05-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7012
7013         PR middle-end/29715
7014         * fold-const.c (fold_comparision): Remove the "foo++ == CONST"
7015         transformation.
7016
7017 2007-05-02  Nick Clifton  <nickc@redhat.com>
7018
7019         * config/frv/predicates.md (symbolic_operand): Accept CONSTs.
7020
7021 2007-05-02  Richard Guenther  <rguenther@suse.de>
7022
7023         PR tree-optimization/31146
7024         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): New
7025         argument, single_use_p.  If we have a single use that is
7026         a conversion to the definition rhs type, propagate that rhs.
7027         (forward_propagate_addr_expr): Pass single_use_p argument
7028         to forward_propagate_addr_expr_1.
7029
7030 2007-05-01  H.J. Lu  <hongjiu.lu@intel.com>
7031
7032         * config/i386/i386.c (ix86_expand_sse_comi): Remove unused
7033         variable.
7034
7035 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
7036
7037         * doc/invoke.texi: Fix typo, 'AMD Family 10h core' instead of
7038         'AMD Family 10 core'.
7039
7040 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
7041
7042         * config/i386/i386.c (override_options): Accept k8-sse3, opteron-sse3
7043         and athlon64-sse3 as improved versions of k8, opteron and athlon64
7044         with SSE3 instruction set support.
7045         * doc/invoke.texi: Likewise.
7046
7047 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
7048
7049         * config/i386/i386.c (override_options): Tuning 32-byte loop
7050         alignment for amdfam10 architecture. Increasing the max loop
7051         alignment to 24 bytes.
7052
7053 2007-05-01  Kazu Hirata  <kazu@codesourcery.com>
7054
7055         * config/m68k/constraints.md: New.
7056         * config/m68k/m68k.h (REG_CLASS_FROM_LETTER,
7057         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
7058         EXTRA_CONSTRAINT): Remove.
7059         * config/m68k/m68k.md: Include constraints.md.
7060         * expr.c (expand_expr_real_1): Copy DECL_RTL before using it.
7061
7062 2007-05-01  Ian Lance Taylor  <iant@google.com>
7063
7064         PR tree-optimization/31739
7065         * tree-vrp.c (vrp_val_is_max): New static function.
7066         (vrp_val_is_min): New static function.
7067         (set_value_range_to_value): Use TYPE_{MAX,MIN}_VALUE rather than
7068         copying the node.
7069         (set_value_range): Use vrp_val_is_{max,min}.
7070         (extract_range_from_assert): Likewise.
7071         (extract_range_from_binary_expr): Likewise.
7072         (extract_range_from_unary_expr): Likewise.
7073         (dump_value_range, vrp_meet): Likewise.
7074         (vrp_visit_phi_node): Likewise.
7075         * tree.c (build_distinct_type_copy): Revert change of 2007-04-27.
7076
7077 2007-05-01  Mark Mitchell  <mark@codesourcery.com>
7078
7079         * config/i386/gmon-sol2.c (size_t): New type.
7080         (intptr_t): Likewise.
7081         (s_textsize): Declare as size_t.
7082         (sbrk): Declare.
7083         (monstartup): Use size_t for sizes.
7084         (_mcount): Save and restore registers.
7085         (internal_mcount): Pass 0 as the first argument to monstartup
7086         in 64-bit mode.
7087         (moncontrol): Convert pointer to appropriately sized integer
7088         before passing to profil.
7089
7090 2007-05-01  Joseph Myers  <joseph@codesourcery.com>
7091
7092         * config/rs6000/darwin-ldouble.c (__gcc_qunord): Define if
7093         __NO_FPRS__, not just if _SOFT_DOUBLE.
7094         * config/rs6000/libgcc-ppc-glibc.ver (__gcc_qunord): Likewise.
7095         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Use __gcc_qunord
7096         also for E500 double.
7097         * config/rs6000/rs6000.md (buneq, bunge, bungt, bunle, bunlt,
7098         suneq, sunge, sungt, sunle, sunlt): Disable for (TARGET_HARD_FLOAT
7099         && !TARGET_FPRS).
7100
7101 2007-05-01  Richard Guenther  <rguenther@suse.de>
7102
7103         * tree-ssa-loop-manip.c (ip_normal_pos): Check if last stmt
7104         is NULL.
7105
7106 2007-05-01  Joseph Myers  <joseph@codesourcery.com>
7107
7108         * config/rs6000/libgcc-ppc-glibc.ver (__gcc_qgt): Fix typo.
7109
7110 2007-05-01  Jan Hubicka  <jh@suse.cz>
7111
7112         * tree-vectorize.c (vect_is_simple_use): gimple_min_invariant is
7113         invariant.
7114
7115 2007-05-01  Jan Hubicka  <jh@suse.cz>
7116
7117         * tree.h (maybe_fold_offset_to_component_ref): Remove.
7118         (maybe_fold_offset_to_reference): Declare.
7119         * fold-const.c (fold_unary): Do not fold
7120         (type *)&A into &A->field_of_type_and_offset_0
7121         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): When base type
7122         size is unknown, give up.
7123         (maybe_fold_offset_to_component_ref): Ignore firelds with unknown
7124         offsets.
7125         (maybe_fold_offset_to_reference): New.
7126         (maybe_fold_stmt_indirect): Use it.
7127         (fold_stmt_r): Fold (type *)&A+offset into A->field_if_type_and_offset.
7128         * gimplify.c (gimplify_conversion): Canonicalize conversions to
7129         field references.
7130         (gimplify_expr): Likewise for plus_expr.
7131
7132 2007-05-01  Zdenek Dvorak  <dvorakz@suse.cz>
7133
7134         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Use
7135         bsi_after_labels.  Always insert statements before bsi.
7136         * tree-vect-transform.c (vect_create_epilog_for_reduction): Ditto.
7137         * predict.c (apply_return_prediction): Check for empty blocks.
7138         * cfgexpand.c (lab_rtx_for_bb): New variable.
7139         (label_rtx_for_bb): Do not create new tree labels.
7140         (expand_gimple_basic_block): Add labels recorded in lab_rtx_for_bb.
7141         (tree_expand_cfg): Initialize lab_rtx_for_bb.
7142         * tree-cfg.c (build_tree_cfg): Call cleanup_dead_labels after
7143         creating edges.
7144         (label_for_bb): Add field used.
7145         (update_eh_label, main_block_label): Mark the label used.
7146         (cleanup_dead_labels): Remove unused labels.
7147
7148 2007-05-01  Richard Guenther  <rguenther@suse.de>
7149
7150         * tree-vrp.c (set_value_range): Do not allocate equiv bitmap
7151         if it is not about to be set.
7152         (get_value_range): Do not pre-allocate equiv bitmap.
7153         (update_value_range): No need to clear equiv field.
7154         (add_equivalence): Change prototype to get bitmap pointer.
7155         Allocate bitmap here if it is not already.
7156         (extract_range_from_assert): Do not allocate bitmap here.
7157         Update callers to add_equivalence.
7158         (extract_range_from_ssa_name): Likewise.
7159         (get_vr_for_comparison): New static helper.
7160         (compare_name_with_value): Handle NULL equiv bitmap by
7161         peeling the first iteration of the comparison loop.
7162         Use get_vr_for_comparison.
7163         (compare_names): Handle NULL equiv bitmaps by using fake
7164         ones.  Use get_vr_for_comparison.
7165
7166 2007-04-30  Brooks Moses  <brooks.moses@codesourcery.com>
7167
7168         * double-int.c (mpz_set_double_int): Moved from
7169         tree-ssa-loop-niter.c.
7170         (mpz_get_double_int): Likewise; also, add option to wrap
7171         out-of-range integers.
7172         * double-int.h: New prototypes for above.
7173         * tree.c (get_static_type_bounds): Moved from
7174         tree-ssa-loop-niter.c; now returns TYPE_MIN_VALUE and
7175         TYPE_MAX_VALUE if they exist..
7176         * tree.h: New prototype for above.
7177         * tree-ssa-loop-niter.c: Adjust mpz_to_double_int and
7178         get_type_bounds calls.
7179         (mpz_set_double_int): Move to double-int.c.
7180         (get_type_bounds): Move to tree.c, rename to
7181         get_static_type_bounds.
7182         (mpz_to_double_int): Move to double-int.c, rename to
7183         mpz_get_double_int.
7184
7185 2007-04-30  Bob Wilson  <bob.wilson@acm.org>
7186
7187         * config/xtensa/lib1funcs.asm (__umodsi3, __modsi3): Rearrange so that
7188         DIV0 exception can fall through to a normal return.
7189
7190 2007-04-30  Alexandre Oliva  <aoliva@redhat.com>
7191
7192         PR middle-end/22156
7193         Temporarily revert:
7194         2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
7195         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
7196         2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
7197         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
7198         initialize align to silence bogus warning.
7199         2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
7200         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
7201         all_no_warning.
7202         (struct sra_walk_fns): Remove use_all parameter from use.
7203         (sra_hash_tree): Handle BIT_FIELD_REFs.
7204         (sra_elt_hash): Don't hash bitfld blocks.
7205         (sra_elt_eq): Skip them in parent compares as well.  Handle
7206         BIT_FIELD_REFs.
7207         (sra_walk_expr): Don't maintain or pass down use_all_p.
7208         (scan_use): Remove use_all parameter.
7209         (scalarize_use): Likewise.  Re-expand assignment to
7210         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
7211         output, and re-scalarize after output.  Don't mark anything
7212         for no warning.
7213         (scalarize_ldst): Adjust.
7214         (scalarize_walk_gimple_modify_statement): Likewise.
7215         (build_element_name_1): Handle BIT_FIELD_REFs.
7216         (instantiate_element): Don't warn for any element whose parent
7217         is used as a whole.
7218         (instantiate_missing_elements_1): Return the sra_elt.
7219         (canon_type_for_field): New.
7220         (try_instantiate_multiple_fields): New.
7221         (instantiate_missing_elemnts): Use them.
7222         (mark_no_warning): Removed.
7223         (generate_one_element_ref): Handle BIT_FIELD_REFs.
7224         (REPLDUP, sra_build_elt_assignment): New.
7225         (generate_copy_inout): Use them.
7226         (generate_element_copy): Likewise.  Handle bitfld differences.
7227         (generate_element_zero): Don't recurse for blocks.  Use
7228         sra_build_elt_assignment.
7229         (generate_one_element_int): Take elt instead of var.  Use
7230         sra_build_elt_assignment.
7231         (generate_element_init_1): Adjust.
7232         (scalarize_use, scalarize_copy): Use REPLDUP.
7233         (scalarize_ldst): Move assert before dereference.
7234         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
7235
7236 2007-04-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7237
7238         PR C++/31721
7239         * tree.c (reconstruct_complex_type): Reconstruct a reference
7240         correctly.
7241         Also use the same mode for the pointer as the old pointer type.
7242
7243 2007-04-30  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
7244
7245         * doc/trouble.texi (Interoperation): Remove note about Ultrix
7246         Fortran compiler.
7247
7248 2007-04-29  Zdenek Dvorak  <dvorakz@suse.cz>
7249
7250         PR rtl-optimization/31676
7251         * df-scan.c (record_nonlocal_goto_receiver_defs): New function.
7252         (df_refs_record): Call it.
7253
7254 2007-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
7255
7256         * rtl.def (SS_ABS): New code.
7257         * config/bfin/bfin.c (print_operand): New modifier 'v'.
7258         (enum bfin_builtins): Add BFIN_BUILTIN_SUM_2X16, BFIN_BUILTIN_ABS_1x32,
7259         BFIN_BUILTIN_ROUND_1x32, BFIN_BUILTIN_MULT_1x32x32,
7260         BFIN_BUILTIN_MULT_1x32x32NS, BFIN_BUILTIN_SSASHIFT_1x32.
7261         (bfin_init_builtins): Define them.
7262         (bdesc_1arg, bdesc_2arg): Add some of them here, ...
7263         (bfin_expand_builtin): ... and handle the others here.
7264         * config/bfin/bfin.md (ssabssi2, ssroundsi2, ssashiftsi3,
7265         flag_mul_macv2hi_parts_acconly_andcc0): New patterns.
7266         (ss_absv2hi2): Renamed from absv2hi; use ss_abs code.
7267         (ssashiftv2hi3, ssashifthi3, lshiftv2hi3, lshifthi3): Shift count
7268         operand is only HImode.
7269
7270 2007-04-29  Steven Bosscher  <steven@gcc.gnu.org>
7271
7272         * regclass.c (scan_one_insn): Remove splitting of
7273         two address insns.
7274
7275 2007-04-28  Sandra Loosemore  <sandra@codesourcery.com>
7276             Nigel Stephens  <nigel@mips.com>
7277
7278         * config/mips/mips.h (SLOW_BYTE_ACCESS): Turn off for MIPS16.
7279
7280 2007-04-28  Jan Hubicka  <jh@suse.cz>
7281
7282         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Use
7283         insn_locators_alloc instead of insn_locators_initialize;
7284         call reset_block_changes.
7285         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
7286         * config/sh/sh.c (sparc_output_mi_thunk): Likewise.
7287         * config/is64/ia64.c (ia64_output_mi_thunk): Likewise.
7288         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
7289         * config/score/score.c (th_output_mi_thunk): Likewise.
7290         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
7291         * cfglyaout.c (set_curr_insn_source_location, set_curr_insn_block):
7292         tolerate uninitialized locator info.
7293
7294         Re-apply:
7295         * function.c (init_function_start): Don't init line number info.
7296         (expand_function_end): Update.
7297         (reset_block_changes, record_block_change, finalize_block_changes,
7298         check_block_change, free_block_changes): Kill.
7299         * function.h (reset_block_changes, record_block_change,
7300         finalize_block_changes, check_block_change, free_block_changes):
7301         Remove prototypes.
7302         (struct function): Remove ib_boundaries_block.
7303         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
7304         Use curr_insn_locator to initialize locator.
7305         (emit_line_note): Remove.
7306         * cfgexpand.c (expand_gimple_cond_expr): Update.
7307         (construct_exit_block): Likewise.
7308         (tree_expand_cfg): Initialize/finalize locators.
7309         * expr.c (expand_expr_real): Update.
7310         * cfglayout.c (line_locators_locs, line_locators_lines,
7311         file_locators_locs, file_locators_files): Remove.
7312         (set_block_levels): Move to cfgexpand.c.
7313         (insn_locators_initialize): Remove.
7314         (pass_insn_locators_initialize): Remove.
7315         (locations_locators_locs, locations_locators_vals): New static vars.
7316         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
7317         Likewise.
7318         (insn_locators_alloc, insn_locators_finalize,
7319         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
7320         New functions.
7321         (locator_location): New.
7322         (locator_line, locator_file): Rewrite.
7323         * rtl.h (emit_line_note): Kill.
7324         (insn_locators_alloc, insn_locators_finalize,
7325         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
7326         Declare.
7327         * tree-inline.c (initialize_cfun): Do not initialize
7328         ib_boundaries_block.
7329         * passes.c (pass_insn_locators_initialize): Remove.
7330
7331 2007-04-28  Zdenek Dvorak  <dvorakz@suse.cz>
7332
7333         * tree-cfg.c (move_block_to_fn): Release bb from dominance
7334         info.  Update last_basic_block correctly.
7335
7336 2007-04-27  Kaz Kojima  <kkojima@gcc.gnu.org>
7337
7338         PR target/31701
7339         * config/sh/sh.c (output_stack_adjust): Avoid using the frame
7340         register itself to hold the offset constant.  Tell flow the use
7341         of r4 and r5 when they are used.
7342
7343 2007-04-27  Richard Guenther  <rguenther@suse.de>
7344
7345         * tree-ssa-forwprop.c (forward_propagate_into_cond): Keep track
7346         if we simplified anything.
7347         (tree_ssa_forward_propagate_single_use_vars): Defer overflow
7348         warnings until we did a simplification and the stmt was not
7349         marked as TREE_NO_WARNING.
7350
7351 2007-04-27  Mike Stump  <mrs@apple.com>
7352
7353         * config/rs6000/darwin.h (ALWAYS_PUSH_CONSTS_USING_REGS_P): Remove.
7354
7355 2007-04-27  Ian Lance Taylor  <iant@google.com>
7356
7357         PR middle-end/31710
7358         * tree.c (build_distinct_type_copy): If TYPE_MIN_VALUE or
7359         TYPE_MAX_VALUE exist, convert them to the new type.
7360
7361 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
7362
7363         * tree-cfgcleanup.c (cleanup_tree_cfg): Verify dominance info
7364         if it claims to be available.
7365         * tree-ssa-dce.c (remove_dead_stmt): Mark cfg as altered when
7366         edge is redirected.
7367         (perform_tree_ssa_dce): Always free postdominators.
7368
7369 2007-04-27  Richard Henderson  <rth@redhat.com>
7370
7371         * config/alpha/predicates.md (aligned_memory_operand): Mark
7372         as define_special_predicate.
7373         (unaligned_memory_operand, normal_memory_operand): Likewise.
7374         (reg_or_unaligned_mem_operand): Remove.
7375         (any_memory_operand): Match the documentation and check for
7376         non-renumbered pseudos during reload.
7377         * config/alpha/alpha.c (alpha_secondary_reload): Rename from
7378         alpha_secondary_reload_class, update to new interface, make static.
7379         Handle CQImode like HImode.  Remove FP subreg check.
7380         (alpha_expand_mov): Use replace_equiv_address.
7381         (alpha_expand_mov_nobwx): Use any_memory_operand.
7382         (TARGET_SECONDARY_RELOAD): New.
7383         * config/alpha/alpha.h (SECONDARY_INPUT_RELOAD_CLASS): Remove.
7384         (SECONDARY_OUTPUT_RELOAD_CLASS): Remove.
7385         * config/alpha/sync.md (I12MODE, I48MODE, modesuffix): Move ...
7386         * config/alpha/alpha.md: ... here.
7387         (RELOAD12, reloadmode): New.
7388         (movcqi): New.
7389         (reload_in<RELOAD12>): Macro-ize from reload_inqi, reload_inhi.
7390         Don't handle the aligned case here.
7391         (reload_out<RELOAD12>): Macro-ize from reload_outqi, reload_outhi.
7392         (reload_in<I12MODE>_aligned): Macro-ize from reload_inqi_help,
7393         reload_inhi_help.  Don't expect a scratch register.
7394         (reload_out<I12MODE>_aligned): Macro-ize from reload_outqi_help,
7395         reload_outhi_help.
7396         * config/alpha/alpha-protos.h (alpha_secondary_reload_class): Remove.
7397
7398 2007-04-27  Richard Guenther  <rguenther@suse.de>
7399
7400         * tree-ssa-forwprop.c (get_prop_dest_stmt): Fix comment typo.
7401
7402 2007-04-27  Richard Guenther  <rguenther@suse.de>
7403
7404         PR tree-optimization/30965
7405         PR tree-optimization/30978
7406         * Makefile.in (tree-ssa-forwprop.o): Depend on $(FLAGS_H).
7407         * tree-ssa-forwprop.c (forward_propagate_into_cond_1): Remove.
7408         (find_equivalent_equality_comparison): Likewise.
7409         (simplify_cond): Likewise.
7410         (get_prop_source_stmt): New helper.
7411         (get_prop_dest_stmt): Likewise.
7412         (can_propagate_from): Likewise.
7413         (remove_prop_source_from_use): Likewise.
7414         (combine_cond_expr_cond): Likewise.
7415         (forward_propagate_comparison): New function.
7416         (forward_propagate_into_cond): Rewrite to use fold for
7417         tree combining.
7418         (tree_ssa_forward_propagate_single_use_vars): Call
7419         forward_propagate_comparison to propagate comparisons.
7420
7421 2007-04-27  Richard Guenther  <rguenther@suse.de>
7422
7423         PR tree-optimization/31715
7424         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Make
7425         sure to do computation on the offset in an appropriate
7426         signed type.
7427
7428 2007-04-27  Richard Sandiford  <richard@codesourcery.com>
7429
7430         * reload.h (elimination_target_reg_p): Declare.
7431         * reload.c (find_reloads): Don't apply the reg_rtx move
7432         optimization if the SET_DEST satisfies elimination_target_reg_p.
7433         * reload1.c (elimination_target_reg_p): New function.
7434         (gen_reload): In the move/add2 fallback, make sure that op0
7435         does not overlap the destination register.
7436
7437 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
7438
7439         * tree-ssa-loop-im.c (determine_invariantness_stmt): Attempt to
7440         transform only GIMPLE_MODIFY_STMTs.
7441         * tree-complex.c (expand_complex_operations_1): Ditto.
7442         (expand_complex_div_wide): Do not create gotos in COND_EXPR branches.
7443         * tree-ssa-loop-manip.c (build_if_stmt): Removed.
7444         (tree_transform_and_unroll_loop): Do not create gotos in COND_EXPR
7445         branches.
7446         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
7447         tree_mod_subtract, tree_ic, tree_stringop_fixed_value): Ditto.
7448         * omp-low.c (expand_parallel_call, expand_omp_for_generic,
7449         expand_omp_for_static_chunk, expand_omp_for_static_nochunk): Ditto.
7450         * tree-vectorizer.c (slpeel_make_loop_iterate_ntimes,
7451         slpeel_add_loop_guard): Ditto.
7452         * tree-mudflap.c (mf_build_check_statement_for): Ditto.
7453         * lambda-code.c (perfect_nestify): Ditto.
7454         * tree-iterator.c (tsi_split_statement_list_before): Fix splitting
7455         before the first statement.
7456         * tree-optimize.c (execute_free_datastructures): Fix comments.
7457         (execute_free_cfg_annotations): Do not call disband_implicit_edges.
7458         * tree-flow.h (disband_implicit_edges): Declaration removed.
7459         * tree-cfg.c (make_cond_expr_edges): Remove gotos from COND_EXPR
7460         branches.
7461         (cleanup_dead_labels, tree_redirect_edge_and_branch): Handle
7462         COND_EXPRs without gotos.
7463         (disband_implicit_edges, has_label_p): Removed.
7464         (tree_verify_flow_info): Verify that COND_EXPR branches are empty.
7465         (tree_lv_add_condition_to_bb): Do not create gotos in COND_EXPR
7466         branches.
7467         * tree.c (build3_stat): Mark COND_EXPRs used as statements as having
7468         side effects.
7469         * tree-pretty-print.c (dump_implicit_edges): Dump implicit edges
7470         also for COND_EXPRs.
7471         * cfgexpand.c (label_rtx_for_bb): New function.
7472         (expand_gimple_cond_expr): Do not expect gotos in COND_EXPR branches.
7473         Use label_rtx_for_bb to find the labels.
7474         (expand_gimple_basic_block): Remove RETURN_EXPR at the end of the
7475         last block.  Detect fallthru edges.
7476
7477 2007-04-26  Ian Lance Taylor  <iant@google.com>
7478
7479         PR target/28675
7480         * reload.c (find_reloads_subreg_address): If the address was valid
7481         in the original mode but not in the new mode, reload the whole
7482         address.
7483
7484 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
7485
7486         * tree-cfgcleanup.c (cfgcleanup_altered_bbs): New global variable.
7487         (remove_fallthru_edge): Use remove_edge_and_dominated_blocks.
7488         (cleanup_control_expr_graph): Do not invalidate dominance info.
7489         Record altered blocks.
7490         (cleanup_control_flow, cleanup_forwarder_blocks): Removed.
7491         (cleanup_control_flow_bb, split_bbs_on_noreturn_calls,
7492         cleanup_tree_cfg_bb): New functions.
7493         (remove_forwarder_block): Do not maintain the worklist of blocks.
7494         Record altered blocks.
7495         (cleanup_tree_cfg_1): Iterate over cfgcleanup_altered_bbs,
7496         not over whole cfg.
7497         (cleanup_tree_cfg): Do not iterate cleanup_tree_cfg_1.  Only call
7498         delete_unreachable_blocks if dominators are not available.
7499         * tree-inline.c (optimize_inline_calls): Free dominance information
7500         earlier.
7501         * tree-flow.h (remove_edge_and_dominated_blocks,
7502         cfgcleanup_altered_bbs): Altered.
7503         * tree-cfg.c (replace_uses_by, tree_merge_blocks): Record altered
7504         blocks.
7505         (get_all_dominated_blocks, remove_edge_and_dominated_blocks): New
7506         functions.
7507         (tree_purge_dead_eh_edges): Use remove_edge_and_dominated_blocks,
7508         do not invalidate dominators.
7509
7510 2007-04-26  Anatoly Sokolov <aesok@post.ru>
7511
7512         * config/avr/avr.c (avr_mcu_types): Add support for ATmega8HVA and
7513         ATmega16HVA devices. Move AT90USB82 device to 'avr5' architecture.
7514         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
7515         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
7516
7517 2007-04-26  Steve Ellcey  <sje@cup.hp.com>
7518
7519         * config/ia64/ia64.md (ip_value):  Fix itanium_class attribute.
7520
7521 2007-04-26  Richard Guenther  <rguenther@suse.de>
7522
7523         PR tree-optimization/31703
7524         * tree-ssa-loop-im.c (rewrite_bittest): Make sure to use
7525         the right type for the target of the bittest.
7526
7527 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
7528
7529         * config/i386/vx-common.h (RETURN_IN_MEMORY): Use
7530         ix86_sol10_return_in_memory.
7531
7532 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
7533
7534         * config/i386/i386.c (ix86_sol10_return_in_memory): Remove unused
7535         variables.
7536
7537 2007-04-26  Jakub Jelinek  <jakub@redhat.com>
7538
7539         PR c++/31598
7540         * tree-inline.c (copy_body_r): Don't touch TREE_TYPE of OMP_CLAUSE.
7541
7542         PR tree-optimization/30558
7543         * tree-eh.c (lower_eh_filter): If EH_FILTER_MUST_NOT_THROW
7544         clear this_state.prev_try.
7545
7546 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
7547             Mark Mitchell  <mark@codesourcery.com>
7548
7549         * config/i386/i386-protos.h (ix86_sol10_return_in_memory): Declare.
7550         * config/i386/i386.c (ix86_sol10_return_in_memory): New function.
7551         * config/i386/sol2-10.h (RETURN_IN_MEMORY): Use it.
7552
7553 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
7554
7555         PR driver/31107
7556         * doc/invoke.texi (%:print-asm-header): Document.
7557         * gcc.c (asm_options): Use %:print-asm-header() for --target-help
7558         and -ftarget-help.
7559         (static_spec_functions): Add print-asm-header.
7560         (main): Print a banner before the --target-help linker options.
7561         (print_asm_header_spec_function): New function.
7562
7563 2007-04-25  Kaz Kojima  <kkojima@gcc.gnu.org>
7564
7565         PR target/31403
7566         * config/sh/sh.md (movsi_ie): Fix length for TARGET_SH2A.
7567         (movsf_ie): Likewise.
7568
7569 2007-04-25  Paolo Carlini  <pcarlini@suse.de>
7570
7571         * doc/extend.texi ([Type Traits]): Adjust per N2255.
7572
7573 2007-04-25  Bob Wilson  <bob.wilson@acm.org>
7574
7575         * config/xtensa/lib1funcs.asm (__udivsi3, __divsi3): Throw an
7576         exception for divide-by-zero.
7577         (__umodsi3, __modsi3): Likewise.
7578
7579 2007-04-25  Dirk Mueller  <dmueller@suse.de>
7580
7581         * c-typeck.c (build_compound_expr): Annotate warning()
7582         call with OPT_Wunused_value.
7583         * tree-ssa.c (warn_uninit): Annotate warning with
7584         OPT_Wunintialized.
7585         * c-common.c (handle_sentinel_attribute): Annotate warning
7586         call with OPT_Wattributes.
7587
7588 2007-04-25  Thiemo Seufer  <ths@mips.com>
7589
7590         * config/mips/mips.opt (mdmx, mmt, mno-mdmx): New options.
7591         (mips16): Fix typo.
7592         * config/mips/mips.h (ASM_SPEC): Pass -mmt/-mno-mt and -mdmx/-mno-mdmx
7593         on to the assembler.  Improve handling of -mno-mips16.  Add handling
7594         of -mno-mips3d, -mno-dsp, -mno-dspr2.
7595         * doc/invoke.texi (MIPS Options): Whitespace cleanup.  Fix wrong use
7596         of @itemx.  Document -mno-dsp, -mno-dspr2, -mno-paired-single, -mdmx,
7597         -mno-mdmx, -mno-mips3d, -mmt and -mno-mt.
7598
7599 2007-04-25  Danny Smith  <dannysmith.users.sourceforge.net>
7600
7601         PR target/31680
7602         * config/i386/winnt.c (i386_pe_file_end): Strip only
7603         USER_LABEL_PREFIX when writing export name.
7604
7605 2007-04-25  Richard Sandiford  <richard@codesourcery.com>
7606
7607         * config.gcc (sh-wrs-vxworks): Don't include dbxelf.h.  Include
7608         sh/elf.h, vx-common.h and vxworks.h.
7609         * config/sh/sh.h: Include config/vxworks-dummy.h.
7610         (SUBTARGET_OVERRIDE_OPTIONS): Define.
7611         (OVERRIDE_OPTIONS): Use it.
7612         * config/sh/sh.md (GOTaddr2picreg): Add suport for VxWorks RTPs.
7613         (vxworks_picreg): New pattern.
7614         * config/sh/vxworks.h (TARGET_OS_CPP_BUILTINS): Use
7615         VXWORKS_OS_CPP_BUILTINS.
7616         (LIB_SPEC, LINK_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine
7617         to their VXWORKS_* equivalents.
7618         (SUBTARGET_OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
7619         (SUBTARGET_LINK_EMUL_SUFFIX, FUNCTION_PROFILER): Define.
7620         * config/sh/lib1funcs.asm (NO_FPSCR_VALUES): Define for VxWorks PIC.
7621         (set_fpscr, ic_invalidate): Add VxWorks PIC sequences.
7622         * config/sh/t-vxworks (MULTILIB_OPTIONS): Add m4a, -mrtp and
7623         -mrtp/-fPIC multilibs.
7624         (MULTILIB_EXCEPTIONS): Generalize globs accordingly.
7625         (MULTILIB_MATCHES, EXTRA_MULTILIB_PARTS): Define.
7626         (MULTILIB_OSDIRNAMES): Delete.
7627
7628 2007-04-25  Anatoly Sokolov <aesok@post.ru>
7629
7630         PR target/18989
7631         * config/avr/avr.h (ASM_OUTPUT_ALIGN): Redefine.
7632
7633 2007-04-24  Brooks Moses  <brooks.moses@codesourcery.com>
7634
7635         * real.c (mpfr_from_real): Handle Inf and NaN, and allow the
7636         rounding mode to be specified by the caller.
7637         (real_to_mpfr) Likewise.
7638         * real.h: Update mpfr_from_real, mpfr_to_real prototypes to
7639         include new arguments.
7640         * builtins.c: Update mpfr_from_real, mpfr_to_real calls.
7641
7642 2007-04-24  Ian Lance Taylor  <iant@google.com>
7643
7644         PR tree-optimization/31605
7645         * tree-vrp.c (set_value_range): Check that min and max are not
7646         both overflow infinities.
7647         (set_value_range_to_value): New static function.
7648         (extract_range_from_binary_expr): Call set_value_range_to_value.
7649         (extract_range_from_cond_expr): Likewise.
7650         (extract_range_from_expr): Likewise.
7651         (extract_range_from_unary_expr): Likewise.  Don't create a range
7652         which overflows on both sides.
7653         (vrp_meet): Check for a useless range.
7654         (vrp_visit_phi_node): If we see a constant which looks like an
7655         overflow infinity, turn off the TREE_OVERFLOW flag.
7656
7657 2007-04-24  Ian Lance Taylor  <iant@google.com>
7658
7659         * flow.c (elim_reg_cond): Handle a comparison of a subreg.
7660
7661 2007-04-24  Simon Martin  <simartin@users.sourceforge.net>
7662
7663         PR diagnostic/25923
7664         * tree-pass.h (TDF_DIAGNOSTIC): New dump control to specify that a
7665         diagnostic message is being built.
7666         * tree-pretty-print.c (dump_generic_node): Only write the
7667         formatted text into BUFFER's stream if we are not building a
7668         diagnostic message.
7669         * toplev.c (default_tree_printer): Pass TDF_DIAGNOSTIC to
7670         dump_generic_node.
7671         * Makefile.in (toplev.o): Depend on tree-pass.h.
7672
7673 2007-04-24  Ian Lance Taylor  <iant@google.com>
7674
7675         PR tree-optimization/31602
7676         * tree-ssa-loop-ch.c (copy_loop_headers): Set TREE_NO_WARNING for
7677         conditionals in the copied loop header.
7678         * tree-cfg.c (fold_cond_expr_cond): Don't issue undefined overflow
7679         warnings if TREE_NO_WARNING is set.
7680         * doc/invoke.texi (Warning Options): Clarify that
7681         -Wstrict-overflow does not warn about loops.
7682
7683 2007-04-24  Janis Johnson  <janis187@us.ibm.com>
7684
7685         * config/rs6000/rs6000.c (function_arg_advance): For 32-bit ELF ABI,
7686         expand on the comment about _Decimal128 arguments and check the
7687         integer result of the modulus operation; for 64-bit ELF ABI, ensure
7688         that _Decimal128 argument uses even/odd register pair.
7689         (function_arg): Ditto.
7690
7691 2007-04-24  Hui-May Chang <hm.chang@apple.com>
7692
7693         * reload1.c (merge_assigned_reloads) : Do not merge a RELOAD_OTHER
7694         instruction with a RELOAD_FOR_OPERAND_ADDRESS instruction.
7695
7696 2007-04-24  Richard Guenther  <rguenther@suse.de>
7697             Olga Golovanevsky  <olga@il.ibm.com>
7698
7699         * fold-const.c (multiple_of_p): Check for bottom
7700         to be zero.
7701
7702 2007-04-24  Richard Henderson  <rth@redhat.com>
7703
7704         * libgcc2.h (AVOID_FP_TYPE_CONVERSION): Rename from
7705         IS_IBM_EXTENDED.  Also define in terms of WIDEST_HARDWARE_FP_SIZE.
7706         * libgcc2.c (__floatdisf): Avoid double-word arithmetic when
7707         looking for non-zero bits shifted out.  Avoid a recursive call
7708         when constructing the scalar.
7709         (__floatundisf): Likewise.
7710
7711 2007-04-24  Nathan Froyd  <froydnj@codesourcery.com>
7712
7713         * dwarf2out.c (field_byte_offset): Move the existing logic
7714         under the control of PCC_BITFIELD_TYPE_MATTERS and just use
7715         the bit offset of the field if !PCC_BITFIELD_TYPE_MATTERS.
7716
7717 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
7718
7719         PR target/31641
7720         * config/s390/s390.c (s390_expand_setmem): Don't ICE for constant
7721         length argument of 0 for memset.
7722         (s390_expand_movmem, s390_expand_setmem, s390_expand_cmpmem): Use
7723         unsigned shift instead of the signed variant.
7724
7725 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
7726
7727         * config/s390/s390.md ("*cmp<mode>_ccs_0_ibm", "*cmp<mode>_ccs_ibm",
7728         "fix_trunc<BFP:mode><GPR:mode>2_ieee", "fix_truncdfsi2_ibm",
7729         "floatsidf2_ibm", "floatsisf2", "truncdfsf2_ieee", "truncdfsf2_ibm",
7730         "*trunctfdf2_ieee", "*trunctfdf2_ibm", "*trunctfsf2_ieee",
7731         "*trunctfsf2_ibm", "extendsfdf2_ieee", "extendsfdf2_ibm",
7732         "*extenddftf2_ieee", "*extenddftf2_ibm", "*extendsftf2_ieee",
7733         "*extendsftf2_ibm", "*add<mode>3", "*add<mode>3_ibm", "*sub<mode>3_ibm",
7734         "*mul<mode>3", "*mul<mode>3_ibm", "*div<mode>3", "*div<mode>3_ibm",
7735         "*neg<mode>2_ibm", "*abs<mode>2_ibm"): Insn definitions removed.
7736         ("fix_trunc<BFP:mode><GPR:mode>2_bfp", "floatsi<mode>2",
7737         "truncdfsf2", "trunctf<mode>2", "add<mode>3", "sub<mode>3",
7738         "mul<mode>3", "div<mode>3"): Insn definitions added.
7739         ("fixuns_trunc<BFP:mode><GPR:mode>2", "fix_trunc<mode>di2",
7740         "fix_trunc<mode>si2"): gen_fix_trunc<BFP:mode><GPR:mode>2_ieee renamed
7741         to gen_fix_trunc<BFP:mode><GPR:mode>2_bfp.
7742         ("fix_truncdfsi2", "floatsitf2", "truncdfsf2", "trunctfdf2",
7743         "trunctfsf2", "extendsfdf2", "extenddftf2", "extendsftf2", "add<mode>3",
7744         "sub<mode>3", "mul<mode>3", "div<mode>3"): Expander removed.
7745         ("fix_trunc<mode>si2", "extend<DSF:mode><BFP:mode>2"): Expander added.
7746         * config/s390/s390.h (TARGET_IBM_FLOAT, TARGET_IEEE_FLOAT,
7747         TARGET_FLOAT_FORMAT): Macro definitions removed.
7748         (FP_REGNO_P): No special case for !TARGET_IEEE_FLOAT anymore.
7749         * config/s390/s390.c (struct processor_costs, z900_cost, z990_cost,
7750         z9_109_cost): Remove fields for hexfloat instructions: dxr, ddr and der.
7751         (s390_rtx_costs): Remove !TARGET_IEEE_FLOAT special branches.
7752         (s390_gen_rtx_const_DI): Function removed.
7753         * config/s390/s390-protos.h (s390_gen_rtx_const_DI): Prototype removed.
7754
7755 2007-04-24  Richard Sandiford  <richard@codesourcery.com>
7756
7757         * optabs.c (set_conv_libfunc): Prefer libgcc2's __ffsMM2 functions
7758         over an external ffs function.
7759
7760 2007-04-24  Chao-ying Fu  <fu@mips.com>
7761             Richard Sandiford  <richard@nildram.co.uk>
7762
7763         * doc/md.texi (madd@var{m}@var{n}4, umadd@var{m}@var{n}4): Document.
7764         * optabs.h (OTI_smadd_widen, OTI_umadd_widen): New optab_indexes.
7765         (smadd_widen_optab, umadd_widen_optab): Define.
7766         * optabs.c (init_optabs): Initialize smadd_widen_optab and
7767         umadd_widen_optab.
7768         * genopinit.c (optabs): Fill in smadd_widen_optab and
7769         umadd_widen_optab.
7770         * expr.c (expand_expr_real_1): Try to use smadd_widen_optab
7771         and umadd_widen_optab to implement multiply-add sequences.
7772         * config/mips/mips.md (*<su>mul_acc_di): Rename to...
7773         (<u>maddsidi4): ...this.  Extend condition to include
7774         GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
7775         of operand 0 to "ka" and use the three-operand form of madd<u>
7776         for TARGET_DSPR2.
7777         * config/mips/mips-dspr2.md (mips_madd, mips_maddu): Convert
7778         to define_expands.
7779         * config/mips/constraints.md (ka): New register constraint.
7780
7781 2007-04-24  Jan Hubicka  <j@suse.cz>
7782
7783         Revert:
7784
7785         2007-04-23  Jan Hubicka  <jh@suse.cz>
7786         * function.c (init_function_start): Don't init line number info.
7787         (expand_function_end): Update.
7788         (reset_block_changes, record_block_change, finalize_block_changes,
7789         check_block_change, free_block_changes): Kill.
7790         * function.h (reset_block_changes, record_block_change,
7791         finalize_block_changes, check_block_change, free_block_changes):
7792         Remove prototypes.
7793         (struct function): Remove ib_boundaries_block.
7794         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
7795         Use curr_insn_locator to initialize locator.
7796         (emit_line_note): Remove.
7797         * cfgexpand.c (expand_gimple_cond_expr): Update.
7798         (construct_exit_block): Likewise.
7799         (tree_expand_cfg): Initialize/finalize locators.
7800         * expr.c (expand_expr_real): Update.
7801         * cfglayout.c (line_locators_locs, line_locators_lines,
7802         file_locators_locs, file_locators_files): Remove.
7803         (set_block_levels): Move to cfgexpand.c.
7804         (insn_locators_initialize): Remove.
7805         (pass_insn_locators_initialize): Remove.
7806         (locations_locators_locs, locations_locators_vals): New static vars.
7807         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
7808         Likewise.
7809         (insn_locators_alloc, insn_locators_finalize,
7810         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
7811         New functions.
7812         (locator_location): New.
7813         (locator_line, locator_file): Rewrite.
7814         * rtl.h (emit_line_note): Kill.
7815         (insn_locators_alloc, insn_locators_finalize,
7816         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
7817         Declare.
7818         * tree-inline.c (initialize_cfun): Do not initialize
7819         ib_boundaries_block.
7820         * passes.c (pass_insn_locators_initialize): Remove.
7821
7822 2007-04-24  Daniel Franke  <franke.daniel@gmail.com>
7823
7824         * doc/invoke.texi: Removed leading '-' from option index entries.
7825
7826 2007-04-23  Zdenek Dvorak  <dvorakz@suse.cz>
7827
7828         * tree-phinodes.c (reserve_phi_args_for_new_edge, remove_phi_node):
7829         Use phi_nodes_ptr.
7830         (create_phi_node): Use set_phi_nodes.
7831         * omp-low.c (expand_omp_parallel): Use bb_stmt_list.
7832         * tree-if-conv.c (process_phi_nodes): Use set_phi_nodes.
7833         (combine_blocks):  Use bb_stmt_list and set_bb_stmt_list.
7834         * tree-flow-inline.h (phi_nodes, set_phi_nodes,
7835         (bsi_start, bsi_last): Use bb_stmt_list.
7836         (phi_nodes_ptr, bb_stmt_list, set_bb_stmt_list): New functions.
7837         * cfgexpand.c (expand_gimple_basic_block): Use bb_stmt_list.
7838         Traverse the statements using tsi iterator.
7839         * basic-block.h (struct basic_block_def): Fields stmt_list
7840         and phi_nodes moved to ...
7841         (struct tree_bb_info): ... new structure.
7842         * tree-cfg.c (create_bb): Allocate il.tree.  Use set_bb_stmt_list.
7843         (tree_merge_blocks): Use bb_stmt_list and set_bb_stmt_list.
7844         (remove_bb): Handle blocks with NULL stmt list.  Clear il.tree field.
7845         (tree_verify_flow_info): Verify that il.tree is not set for
7846         entry and exit block.
7847         (tree_split_block): Use set_bb_stmt_list.
7848
7849 2007-04-23  Mike Stump  <mrs@apple.com>
7850
7851         * config/i386/i386.c (ix86_tune_features
7852         [X86_TUNE_DEEP_BRANCH_PREDICTION]: Prefer call over thunks on
7853         nocona and core2.
7854
7855 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
7856
7857         * config/i386/i386.md (prefix_extra): New attribute.
7858         (length): Add prefix_extra.
7859
7860         * onfig/i386/sse.md (sse2_movdqu): Set prefix_data16.
7861         (sse2_movntv2di): Likewise.
7862         (sse2_cvtps2dq): Likewise.
7863         (sse2_cvtpd2pi): Likewise.
7864         (sse2_cvttpd2pi): Likewise.
7865         (*sse2_cvtpd2ps): Likewise.
7866         (*add<mode>3): Likewise.
7867         (sse2_ssadd<mode>3): Likewise.
7868         (sse2_usadd<mode>3): Likewise.
7869         (*sub<mode>3): Likewise.
7870         (sse2_sssub<mode>3): Likewise.
7871         (sse2_ussub<mode>3): Likewise.
7872         (*mulv8hi3): Likewise.
7873         (*smulv8hi3_highpart): Likewise.
7874         (*umulv8hi3_highpart): Likewise.
7875         (sse2_umulv2siv2di3): Likewise.
7876         (sse2_pmaddwd): Likewise.
7877         (ashr<mode>3): Likewise.
7878         (lshr<mode>3): Likewise.
7879         (ashl<mode>3): Likewise.
7880         (sse2_ashlti3): Likewise.
7881         (sse2_lshrti3): Likewise.
7882         (*umaxv16qi3): Likewise.
7883         (*smaxv8hi3): Likewise.
7884         (*uminv16qi3): Likewise.
7885         (*sminv8hi3): Likewise.
7886         (sse2_eq<mode>3): Likewise.
7887         (sse2_gt<mode>3): Likewise.
7888         (*and<mode>3): Likewise.
7889         (sse2_nand<mode>3): Likewise.
7890         (*ior<mode>3): Likewise.
7891         (*xor<mode>3): Likewise.
7892         (sse2_packsswb): Likewise.
7893         (sse2_packssdw): Likewise.
7894         (sse2_packuswb): Likewise.
7895         (sse2_punpckhbw): Likewise.
7896         (sse2_punpcklbw): Likewise.
7897         (sse2_punpckhwd): Likewise.
7898         (sse2_punpcklwd): Likewise.
7899         (sse2_punpckhdq): Likewise.
7900         (sse2_punpckldq): Likewise.
7901         (sse2_punpckhqdq): Likewise.
7902         (sse2_punpcklqdq): Likewise.
7903         (*sse2_pinsrw): Likewise.
7904         (*sse2_pextrw): Likewise.
7905         (sse2_pshufd_1): Likewise.
7906         (sse2_uavgv16qi3): Likewise.
7907         (sse2_uavgv8hi3): Likewise.
7908         (sse2_psadbw): Likewise.
7909         (sse2_pmovmskb): Likewise.
7910         (*sse2_maskmovdqu): Likewise.
7911         (*sse2_maskmovdqu_rex64): Likewise.
7912         (sse4a_extrqi): Likewise.
7913         (sse4a_extrq): Likewise.
7914         (sse3_lddqu): Set prefix_rep.
7915         (sse3_addsubv4sf3): Likewise.
7916         (sse3_haddv4sf3): Likewise.
7917         (sse3_hsubv4sf3): Likewise.
7918         (sse_cvtss2si): Likewise.
7919         (sse_cvtss2si_2): Likewise.
7920         (sse_cvtss2siq): Likewise.
7921         (sse_cvtss2siq_2): Likewise.
7922         (sse_cvttss2si): Likewise.
7923         (sse_cvttss2siq): Likewise.
7924         (sse2_cvttps2dq): Likewise.
7925         (sse3_movshdup): Likewise.
7926         (sse3_movsldup): Likewise.
7927         (sse2_cvtsd2si): Likewise.
7928         (sse2_cvtsd2si_2): Likewise.
7929         (sse2_cvtsd2siq): Likewise.
7930         (sse2_cvtsd2siq_2): Likewise.
7931         (sse2_cvttsd2si): Likewise.
7932         (sse2_cvttsd2siq): Likewise.
7933         (*sse2_cvtpd2dq): Likewise.
7934         (*sse2_cvttpd2dq): Likewise.
7935         (sse2_pshuflw_1): Likewise.
7936         (sse2_pshufhw_1): Likewise.
7937         (sse4a_insertqi): Likewise.
7938         (sse4a_insertq): Likewise.
7939         (ssse3_phaddwv8hi3): Set prefix_data16 and prefix_extra.
7940         (ssse3_phadddv4si3): Likewise.
7941         (ssse3_phaddswv8hi3): Likewise.
7942         (ssse3_phsubwv8hi3): Likewise.
7943         (ssse3_phsubdv4si3): Likewise.
7944         (ssse3_phsubswv8hi3): Likewise.
7945         (ssse3_pmaddubswv8hi3): Likewise.
7946         (ssse3_pmulhrswv8hi3): Likewise.
7947         (ssse3_pshufbv16qi3): Likewise.
7948         (ssse3_psign<mode>3): Likewise.
7949         (ssse3_palignrti): Likewise.
7950         (abs<mode>2): Likewise.
7951         (ssse3_phaddwv4hi3): Set prefix_extra.
7952         (ssse3_phadddv2si3): Likewise.
7953         (ssse3_phaddswv4hi3): Likewise.
7954         (ssse3_phsubwv4hi3): Likewise.
7955         (ssse3_phsubdv2si3): Likewise.
7956         (ssse3_phsubswv4hi3): Likewise.
7957         (ssse3_pmaddubswv4hi3): Likewise.
7958         (ssse3_pmulhrswv4hi3): Likewise.
7959         (ssse3_pshufbv8qi3): Likewise.
7960         (ssse3_psign<mode>3): Likewise.
7961         (ssse3_palignrdi): Likewise.
7962         (abs<mode>2): Likewise.
7963         (sse2_cvtdq2ps): Set mode to V4SF instead of V2DF.
7964         (*vec_dupv2df): Set mode to V2DF instead of V4SF.
7965         (sse2_pmovmskb): Set mode to SI instead of V2DF.
7966
7967 2007-04-23  Nick Clifton  <nickc@redhat.com>
7968
7969         * params.def: Fix formatting of emacs local variables.
7970
7971 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
7972
7973         * config/i386/sse.md (sse2_stored): Don't split to inter-unit
7974         move if inter-unit move isn't allowed.
7975         Don't split moving the first element of V2DI to DI to inter-unit
7976         move if inter-unit move isn't allowed.
7977
7978 2007-04-23  Richard Guenther  <rguenther@suse.de>
7979
7980         * tree-ssa-sink.c (execute_sink_code): Calculate CDI_DOMINATORS
7981         and CDI_POST_DOMINATORS separately.
7982
7983 2007-04-23  Nick Clifton  <nickc@redhat.com>
7984
7985         * c.opt (Wformat-contains-nul): Add warning attribute.
7986
7987 2007-04-23  Jan Hubicka  <jh@suse.cz>
7988
7989         * function.c (init_function_start): Don't init line number info.
7990         (expand_function_end): Update.
7991         (reset_block_changes, record_block_change, finalize_block_changes,
7992         check_block_change, free_block_changes): Kill.
7993         * function.h (reset_block_changes, record_block_change,
7994         finalize_block_changes, check_block_change, free_block_changes):
7995         Remove prototypes.
7996         (struct function): Remove ib_boundaries_block.
7997         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
7998         Use curr_insn_locator to initialize locator.
7999         (emit_line_note): Remove.
8000         * cfgexpand.c (expand_gimple_cond_expr): Update.
8001         (construct_exit_block): Likewise.
8002         (tree_expand_cfg): Initialize/finalize locators.
8003         * expr.c (expand_expr_real): Update.
8004         * cfglayout.c (line_locators_locs, line_locators_lines,
8005         file_locators_locs, file_locators_files): Remove.
8006         (set_block_levels): Move to cfgexpand.c.
8007         (insn_locators_initialize): Remove.
8008         (pass_insn_locators_initialize): Remove.
8009         (locations_locators_locs, locations_locators_vals): New static vars.
8010         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
8011         Likewise.
8012         (insn_locators_alloc, insn_locators_finalize,
8013         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
8014         New functions.
8015         (locator_location): New.
8016         (locator_line, locator_file): Rewrite.
8017         * rtl.h (emit_line_note): Kill.
8018         (insn_locators_alloc, insn_locators_finalize,
8019         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
8020         Declare.
8021         * tree-inline.c (initialize_cfun): Do not initialize
8022         ib_boundaries_block.
8023         * passes.c (pass_insn_locators_initialize): Remove.
8024
8025 2007-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8026
8027         PR middle-end/31448
8028         * expr.c (reduce_to_bit_field_precision): Handle
8029         CONST_INT rtx's.
8030
8031 2007-04-22  Uros Bizjak  <ubizjak@gmail.com>
8032
8033         PR tree-optimization/24659
8034         * optabs.h (enum optab_index) [OTI_vec_unpacks_hi,
8035         OTI_vec_unpacks_lo]: Update comment to mention floating point operands.
8036         (vec_pack_trunc_optab): Rename from vec_pack_mod_optab.
8037         * genopinit.c (optabs): Rename vec_pack_mod_optab
8038         to vec_pack_trunc_optab.
8039         * tree-vect-transform.c (vectorizable_type_demotion): Do not fail
8040         early for scalar floating point operands for NOP_EXPR.
8041         (vectorizable_type_promotion): Ditto.
8042         * optabs.c (optab_for_tree_code) [VEC_PACK_TRUNC_EXPR]: Return
8043         vec_pack_trunc_optab.
8044         (expand_binop): Rename vec_float_trunc_optab to vec_pack_mod_optab.
8045
8046         * tree.def (VEC_PACK_TRUNC_EXPR): Rename from VEC_PACK_MOD_EXPR.
8047         * tree-pretty-print.c (dump_generic_node) [VEC_PACK_TRUNC_EXPR]:
8048         Rename from VEC_PACK_MOD_EXPR.
8049         (op_prio) [VEC_PACK_TRUNC_EXPR]: Ditto.
8050         * expr.c (expand_expr_real_1): Ditto.
8051         * tree-inline.c (estimate_num_insns_1): Ditto.
8052         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
8053
8054         * config/i386/sse.md (vec_unpacks_hi_v4sf): New expander.
8055         (vec_unpacks_lo_v4sf): Ditto.
8056         (vec_pack_trunc_v2df): Ditto.
8057         (vec_pack_trunc_v8hi): Rename from vec_pack_mod_v8hi.
8058         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
8059         (vec_pack_trunc_v2di): Rename from vec_pack_mod_v2di.
8060
8061         * config/rs6000/altivec.md (vec_pack_trunc_v8hi): Rename from
8062         vec_pack_mod_v8hi.
8063         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
8064
8065         * doc/c-tree.texi (Expression trees) [VEC_PACK_TRUNC_EXPR]:
8066         Rename from VEC_PACK_MOD_EXPR.  This expression also represent
8067         packing of floating point operands.
8068         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR]: These expression also
8069         represent unpacking of floating point operands.
8070         * doc/md.texi (Standard Names) [vec_pack_trunc]: Update documentation.
8071         [vec_unpacks_hi]: Ditto.
8072         [vec_unpacks_lo]: Ditto.
8073
8074 2007-04-22  Jan Hubicka  <jh@suse.cz>
8075
8076         * final.c (rest_of_handle_final): Call
8077         targetm.asm_out.constructor/targetm.asm_out.destructor
8078         * cgraphunit.c (cgraph_build_static_cdtor): Don't do it here; set
8079         proper priority via decl_*_priority_insert.
8080         * c-common.c (c_expand_body): Likewise.
8081
8082 2007-04-22  Richard Guenther  <rguenther@suse.de>
8083
8084         PR tree-optimization/29789
8085         * tree-ssa-loop-im.c (stmt_cost): Adjust cost of shifts.
8086         (rewrite_reciprocal): New helper split out from
8087         determine_invariantness_stmt.
8088         (rewrite_bittest): Likewise.
8089         (determine_invariantness_stmt): Rewrite (A >> B) & 1 to
8090         A & (1 << B) if (1 << B) is loop invariant but (A >> B)
8091         is not.
8092
8093 2007-04-22  Revital Eres  <eres@il.ibm.com>
8094
8095         * loop-unroll.c (var_to_expand): New field to support also
8096         insns of the form x = something + x.
8097         (analyze_insn_to_expand_var): Use it.
8098         (expand_var_during_unrolling): Likewise.
8099
8100 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
8101
8102         * predict.c: Include pointer-set.h.
8103         (bb_predictions): New variable.
8104         (tree_predicted_by_p, tree_predict_edge,
8105         remove_predictions_associated_with_edge): Use bb_predictions map
8106         instead of bb->predictions.
8107         (clear_bb_predictions, assert_is_empty): New functions.
8108         (combine_predictions_for_bb): Use bb_predictions map.  Call
8109         clear_bb_predictions.
8110         (tree_estimate_probability): Create and free bb_predictions map.
8111         * Makefile.in (predict.o): Add pointer-set.h dependency.
8112         * basic-block.h (struct basic_block_def): Remove predictions
8113         field.
8114         * cfgrtl.c (rtl_verify_flow_info_1): Do not check bb->predictions.
8115
8116 2007-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
8117
8118         PR target/31480
8119         * config/sh/sh.md (length): Check if prev_nonnote_insn (insn)
8120         is null.
8121
8122 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8123
8124         * timevar.c (timevar_print): Change reference of --disable-checking to
8125         --enable-checking=release.  Also warn if assert checking is disabled.
8126
8127 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8128
8129         PR C/30265
8130         * c-gimplifier.c (gimplify_compound_literal_expr): Mark the
8131         decl as addressable if the compound literal was marked as
8132         addressable.
8133         Mark the decl as a gimple register if it is a complex or
8134         vector decl and does not live in memory.
8135
8136 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8137
8138         * tree.h (GIMPLE_TUPLE_P): Also true for PHI_NODEs.
8139         (GENERIC_NEXT): New function macro.
8140         (PHI_CHAIN): Use phi_node's new chain variable.
8141         (tree_phi_node): Change tree_common to tree_base
8142         and add the chain field.
8143         * tree-phinodes.c (make_phi_node): Don't set
8144         TREE_TYPE on the new node.
8145         * c-decl.c (lang_tree_node): Use GENERIC_NEXT
8146         instead of checking GIMPLE_TUPLE_P in chain_next.
8147         * tree-vect-transform.c
8148         (get_initial_def_for_induction): Look at
8149         PHI_RESULT_TREE for the type of the phi node.
8150         (update_vuses_to_preheader): Use PHI_CHAIN
8151         instead of TREE_CHAIN on the phi node.
8152         * tree-ssa-structalias.c (compute_points_to_sets):
8153         Likewise.
8154         (ipa_pta_execute): Likewise.
8155
8156 2007-04-21  Richard Guenther  <rguenther@suse.de>
8157
8158         PR middle-end/31136
8159         * fold-const.c (fold_unary): Call fold_convert_const on the
8160         original tree.
8161
8162 2007-04-21  Alexandre Oliva  <aoliva@redhat.com>
8163
8164         * gcse.c (store_killed_in_insn): Handle PARALLELs.
8165         (store_killed_in_pat): New.
8166
8167 2007-04-20  Richard Henderson  <rth@redhat.com>
8168
8169         PR target/31628
8170         * config/i386/i386.c (type_has_variadic_args_p): Look for any
8171         TREE_LIST with a void_type_node value, not void_list_node exactly.
8172
8173 2007-04-21  Douglas Gregor  <doug.gregor@gmail.com>
8174
8175         * doc/standards.texi: Re-arrange into language-specific
8176         subsections. Add a C++ section, documenting which standards we
8177         support.
8178
8179 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
8180
8181         * tree-ssa-structalias.c (delete_points_to_sets): Free graph->complex.
8182         * tree-ssa-operands.c (finalize_ssa_vuse_ops): Free new_ops.
8183
8184 2007-04-20  Daniel Jacobowitz  <dan@codesourcery.com>
8185
8186         * config/rs6000/sysv4.h (STARTFILE_DEFAULT_SPEC): Include
8187         ecrti.o and crtbegin.o.
8188         (LIB_DEFAULT_SPEC): Include -lc.
8189         (ENDFILE_DEFAULT_SPEC): Include crtend.o and ecrtn.o.
8190
8191 2007-04-20  Richard Henderson  <rth@redhat.com>
8192
8193         PR target/28623
8194         * config/alpha/alpha.c (get_unaligned_address): Remove extra_offset
8195         argument; update all callers.
8196         (get_unaligned_offset): New.
8197         * config/alpha/alpha.md (extendqidi2, extendhidi2): Don't use
8198         get_unaligned_address, just pass on the address directly.
8199         (unaligned_extendqidi): Use gen_lowpart instead of open-coding
8200         the subreg in the helper patterns.
8201         (unaligned_extendqidi_le): Use get_unaligned_offset.
8202         (unaligned_extendqidi_be, unaligned_extendhidi_le): Likewise.
8203         (unaligned_extendhidi_be): Likewise.
8204         (unaligned_extendhidi): Tidy.
8205         * config/alpha/alpha-protos.h: Update.
8206
8207 2007-04-20  Richard Henderson  <rth@redhat.com>
8208
8209         * config/alpha/alpha.h (CPP_SPEC, CPP_SUBTARGET_SPEC): Remove.
8210         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS): Remove.
8211         * config/alpha/linux.h (CPP_SPEC): Undef before redefine.
8212         * config/alpha/linux-elf.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
8213         * config/alpha/freebsd.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
8214         (CPP_SPEC): Don't include %(cpp_subtarget).
8215         * config/alpha/netbsd.h (CPP_SPEC): Rename CPP_SUBTARGET_SPEC.
8216         (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
8217         * config/alpha/osf.h (CPP_SPEC, EXTRA_SPECS): Similarly.
8218
8219 2007-04-20  Jakub Jelinek  <jakub@redhat.com>
8220
8221         * config/i386/i386.c (bdesc_2arg): Use ORDERED rather than UNORDERED
8222         for __builtin_ia32_cmpordss.
8223
8224         PR tree-optimization/31632
8225         * fold-const.c (fold_binary): Use op0 and op1 instead of arg0
8226         and arg1 for optimizations of comparison against min/max values.
8227         Fold arg0 to arg1's type for optimizations of comparison against
8228         min+1 and max-1 values.
8229
8230 2007-04-19  Bernd Schmidt  <bernd.schmidt@analog.com>
8231
8232         * reload.c (combine_reloads): When trying to use a dying register,
8233         check whether it's uninitialized and don't use if so.
8234
8235 2007-04-19  Brooks Moses  <brooks.moses@codesourcery.com>
8236
8237         * fold-const.c: Remove prototypes for native_encode_expr and
8238         native_interpret_expr.
8239         (native_encode_expr): Make non-static.
8240         (native_interpret_expr): Likewise.
8241         * tree.h: Add prototypes for the above.
8242
8243 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
8244
8245         * config/rs6000/spe.md (*frob_tf_ti, *frob_ti_tf, *frob_ti_tf_2,
8246         *mov_si<mode>_e500_subreg0, *mov_si<mode>_e500_subreg0_2,
8247         *mov_sitf_e500_subreg8, *mov_sitf_e500_subreg8_2, spe_extenddftf2,
8248         spe_fix_trunctfsi2_internal, spe_negtf2_internal, cmptfeq_gpr,
8249         tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr, tsttflt_gpr):
8250         Add length attributes.
8251
8252 2007-04-19  Janis Johnson  <janis187@us.ibm.com>
8253
8254         * ginclude/float.h: Check that __STDC_WANT_DEC_FP__ is defined,
8255         not that it is 1.
8256
8257         * c-cppbuiltin.c (c_cpp_builtins): Remove definition of
8258         __STDC_WANT_DEC_FP__.
8259
8260 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
8261
8262         * configure.ac: Allow both powerpc*-*-linux* and powerpc*-*-gnu*
8263         for long double compatibility.
8264         * configure: Regenerate.
8265
8266 2007-04-19  Eric Botcazou  <ebotcazou@libertysurf.fr>
8267
8268         PR rtl-optimization/29841
8269         * cfgbuild.c (control_flow_insn_p): Return TRUE for unconditional
8270         trap instructions.
8271         * sched-deps.c (sched_analyze_insn): Prevent all non-jump instructions
8272         that may cause control flow transfer from being moved.
8273
8274 2007-04-18  Jan Hubicka  <jh@suse.cz>
8275
8276         * fold-const.c (div_if_zero_remainder): Do signed divide for pointer
8277         types.
8278
8279 2007-04-18  Eric Christopher  <echristo@apple.com>
8280
8281         * config/rs6000/darwin.md (load_macho_picbase): Use link register
8282         only. Update operands.
8283         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update caller.
8284         * config/rs6000/rs6000.md (builtin_setjmp_receiver): Ditto. Move from
8285         link register to pic register.
8286
8287 2007-04-18  Dirk Mueller  <dmueller@suse.de>
8288
8289         PR diagnostic/31227
8290         * tree-vrp.c (search_for_addr_array): New.
8291         (check_array_bounds): Suppress warning about
8292         address taken of array refs if its not de-referenced.
8293
8294 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
8295
8296         * tree-vectorizer.c (destroy_loop_vec_info): Set loop->aux to NULL.
8297         * tree-vect-analyze.c (vect_analyze_loop_form): Set loop->aux.
8298
8299         * tree-vectorizer.h (NITERS_KNOWN_P): New.
8300         * tree-vect-analyze.c (vect_analyze_loop_form): Call NITERS_KNOWN_P
8301         instead of LOOP_VINFO_INT_NITERS to avoid having to geneate loop_info.
8302
8303         * tree-vect-analyze.c (vect_determine_vectorization_factor): Add
8304         dump print.
8305         (vect_analyze_operations): Fix indenetation.  Fix a comment.  Fix a
8306         print message.
8307         (vect_analyze_scalar_cycles): Fix indentation.
8308         (vect_enhance_data_refs_alignment): Fix check in case of peeling.
8309         (vect_mark_relevant): Include phis in relevance analysis.
8310
8311         * tree-vect-transform.c (vect_transform_loop): Add an assert.
8312
8313 2007-04-18  Anatoly Sokolov <aesok@post.ru>
8314
8315         * config/avr/avr.c (ptrreg_to_str): Replace error() with
8316         output_operand_lossage().
8317
8318 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
8319
8320         * tree-vect-transform.c (get_initial_def_for_reduction): Clean away
8321         the unused code for reduction without adjust-in-epilog to simplify the
8322         function.
8323
8324 2007-04-18  Wolfgang Gellerich  <gellerich@de.ibm.com>
8325
8326         * config/s390/s390.h (S390_TDC_POSITIVE_ZERO): New constant.
8327         (S390_TDC_NEGATIVE_ZERO): New constant.
8328         (S390_TDC_POSITIVE_NORMALIZED_NUMBER): New constant.
8329         (S390_TDC_NEGATIVE_NORMALIZED_NUMBER): New constant.
8330         (S390_TDC_POSITIVE_DENORMALIZED_NUMBER): New constant.
8331         (S390_TDC_NEGATIVE_DENORMALIZED_NUMBER): New constant.
8332         (S390_TDC_POSITIVE_INFINITY): New constant.
8333         (S390_TDC_NEGATIVE_INFINITY): New constant.
8334         (S390_TDC_POSITIVE_QUIET_NAN): New constant.
8335         (S390_TDC_NEGATIVE_QUIET_NAN): New constant.
8336         (S390_TDC_POSITIVE_SIGNALING_NAN): New constant.
8337         (S390_TDC_NEGATIVE_SIGNALING_NAN): New constant.
8338         (S390_TDC_INFINITY): New constant.
8339         * config/s390/s390.c (s390_canonicalize_comparison): Renamed
8340         UNSPEC_CMPINT to UNSPEC_CCU_TO_INT, added a UNSPEC_CCU_TO_INT-like
8341         optimization for UNSPEC_CCZ_TO_INT.
8342         * config/s390/s390.md ("*TDC_insn_<mode>"): New insn.
8343         ("*ccz_to_int"): New insn.
8344         ("isinf<mode>2"): New insn.
8345         (UNSPEC_CMPINT): Renamed to UNSPEC_CCU_TO_INT.
8346         (UNSPEC_CCU_TO_INT): New constant, replaces UNSPEC_CMPINT.
8347         (UNSPEC_CCZ_TO_INT): New constant.
8348
8349 2007-04-18  Richard Guenther  <rguenther@suse.de>
8350
8351         PR tree-optimization/19431
8352         PR tree-optimization/21463
8353         * tree-pass.h (pass_phiprop): Declare.
8354         * passes.c (init_optimization_passes): New phiprop pass.
8355         * tree-ssa-forwprop.c (struct phiprop_d): New structure.
8356         (phivn_valid_p): New helper function.
8357         (phiprop_insert_phi): Likewise.
8358         (propagate_with_phi): Likewise.
8359         (tree_ssa_phiprop): New propagator propagating loads
8360         through phi nodes if profitable.
8361
8362 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
8363
8364         * tree-vect-analyze.c (process_use): New function.
8365         (vect_mark_stmts_to_be_vectorized): Factor out code to process_use.
8366         Check phis in all bbs.
8367         * tree-vectorizer.c (vect_is_simple_use): Remove a no longer relavant
8368         assert.
8369
8370 2007-04-18  Bernd Schmidt  <bernd.schmidt@analog.com>
8371
8372         * reload1.c (eliminte_regs_in_insn): Use REG_EQUIV notes the same way
8373         we use REG_EQUAL.
8374
8375 2007-04-17  Anatoly Sokolov <aesok@post.ru>
8376
8377         PR target/30483
8378         * config/avr/avr.c (ptrreg_to_str): Replace gcc_unreachable() with
8379         error().
8380
8381 2007-04-17  H.J. Lu  <hongjiu.lu@intel.com>
8382
8383         * config/i386/sse.md (sse_vmaddv4sf3): Use register_operand
8384         on "0".
8385         (sse_vmmulv4sf3): Likewise.
8386         (sse2_vmaddv2df3): Likewise.
8387         (sse2_vmmulv2df3): Likewise.
8388
8389 2007-04-17  Zdenek Dvorak  <dvorakz@suse.cz>
8390
8391         PR rtl-optimization/31360
8392         * cfgloopanal.c (target_small_cost, target_pres_cost): Removed.
8393         (target_reg_cost): New.
8394         (init_set_costs): Initialize target_reg_cost.  Add comments
8395         regarding the rationale of the costs.
8396         (global_cost_for_size): Renamed to...
8397         (estimate_reg_pressure_cost): ... and simplify.  Decrease importance
8398         of register pressure.
8399         * tree-ssa-loop-ivopts.c (ivopts_global_cost_for_size): Use
8400         estimate_reg_pressure_cost.  Add number of ivs.
8401         (determine_set_costs): Dump target_reg_cost.
8402         * loop-invariant.c (gain_for_invariant):  Use
8403         estimate_reg_pressure_cost.  Removed n_inv_uses argument.
8404         (best_gain_for_invariant, find_invariants_to_move): Remove
8405         n_inv_uses.
8406         * cfgloop.h (target_small_cost, target_pres_cost): Removed.
8407         (target_reg_cost): Declare.
8408         (global_cost_for_size): Declaration removed.
8409         (estimate_reg_pressure_cost): Declare.
8410
8411 2007-04-17  Peter Bergner  <bergner@vnet.ibm.com>
8412
8413         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Force TDmode
8414         regnos into even/odd register pairs.
8415         * config/rs6000/rs6000.h [SLOW_UNALIGNED_ACCESS]: Treat DDmode and
8416         TDmode similar to the other floating point modes.
8417         [SECONDARY_MEMORY_NEEDED]: Treat DDmode similar to DFmode.
8418         * config/rs6000/dfp.md (negdd2, absdd2, negtd2, abstd2): New
8419         define_expand's.
8420         (negdd2_fpr, absdd2_fpr, nabsdd2_fpr, negtd2_fpr, abstd2_fpr,
8421         nabstd2_fpr, movdd_hardfloat64_mfpgpr): New define_insn's.
8422         (movdd_hardfloat64): Use TARGET_MFPGPR.
8423
8424 2007-04-17  Bernd Schmidt  <bernd.schmidt@analog.com>
8425
8426         * reload1.c (delete_output_reload): Don't count output in n_inherited.
8427
8428         Revert
8429         2005-01-05  Richard Henderson  <rth@redhat.com>
8430         PR rtl-opt/10692
8431         * reload1.c (do_input_reload): Restrict the optimization deleteing
8432         a previous output reload to RELOAD_FOR_INPUT.
8433
8434 2007-04-17  Dorit Nuzman  <dorit@il.ibm.com>
8435
8436         * tree-vectorizer.h (stmt_vec_info_type): Add enum value
8437         induc_vec_info_type.
8438         (vectorizable_induction): New function declaration.
8439         * tree-vect-transform.c (get_initial_def_for_induction): No need to
8440         check if already vectorized.  Find first place in BB where new stmts
8441         can be inserted.  Takes only one argument.
8442         (vectorizable_induction): New function.
8443         (vect_transform_stmt): Add case for induc_vec_info_type to call
8444         vectorizable_induction.
8445         (vect_transform_loop): Consider phis for vectorization.
8446         * tree-vect-analyze.c (vect_determine_vectorization_factor): Simplify
8447         condition.
8448         (analyze_operations): Call vectorizable_induction when analyzing phis.
8449         Fix comment.
8450         (vect_mark_stmts_to_be_vectorized): Remove redundant checks.
8451         (vect_mark_relevant): Include phis in relevance analysis.
8452         (vect_mark_stmts_to_be_vectorize): Likewise.
8453         * tree-vect-patterns.c (widened_name_p): Remove obsolete asserts.
8454
8455 2007-04-16  Lawrence Crowl  <crowl@google.com>
8456
8457         * doc/invoke.texi (Debugging Options): Add documentation for the
8458         -femit-struct-debug options -femit-struct-debug-baseonly,
8459         -femit-struct-debug-reduced, and
8460         -femit-struct-debug-detailed[=...].
8461
8462         * c-opts.c (c_common_handle_option): Add
8463         OPT_femit_struct_debug_baseonly, OPT_femit_struct_debug_reduced,
8464         and OPT_femit_struct_debug_detailed_.
8465         * c.opt: Add specifications for
8466         -femit-struct-debug-baseonly, -femit-struct-debug-reduced,
8467         and -femit-struct-debug-detailed[=...].
8468         * opts.c (set_struct_debug_option): Parse the
8469         -femit-struct-debug-... options.
8470         * opts.c (matches_main_base, main_input_basename,
8471         main_input_baselength, base_of_path, matches_main_base): Add
8472         variables and functions to compare header base name to compilation
8473         unit base name.
8474         * opts.c (should_emit_struct_debug): Add to determine to emit a
8475         structure based on the option.
8476         (dump_struct_debug) Also disabled function to debug this
8477         function.
8478         * opts.c (handle_options): Save the base name of the
8479         compilation unit.
8480
8481         * langhooks-def.h (LANG_HOOKS_GENERIC_TYPE_P): Define.
8482         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add.
8483         This hook indicates if a type is generic.  Set it by default
8484         to "never generic".
8485         * langhooks.h (struct lang_hooks_for_types): Add a new hook
8486         to determine if a struct type is generic or not.
8487         * cp/cp-tree.h (class_tmpl_impl_spec_p): Declare a C++ hook.
8488         * cp/tree.c (class_tmpl_impl_spec_p): Implement the C++ hook.
8489         * cp/cp-lang.c (LANG_HOOKS_GENERIC_TYPE_P): Override null C hook
8490         with live C++ hook.
8491
8492         * flags.h (enum debug_info_usage): Add an enumeration to describe
8493         a program's use of a structure type.
8494         * dwarf2out.c (gen_struct_or_union_type_die): Add a new parameter
8495         to indicate the program's usage of the type.  Filter structs based
8496         on the -femit-struct-debug-... specification.
8497         (gen_type_die): Split into two routines, gen_type_die and
8498         gen_type_die_with_usage.  gen_type_die is now a wrapper
8499         that assumes direct usage.
8500         (gen_type_die_with_usage): Replace calls to gen_type_die
8501         with gen_type_die_with_usage adding the program usage of
8502         the referenced type.
8503         (dwarf2out_imported_module_or_decl): Suppress struct debug
8504         information using should_emit_struct_debug when appropriate.
8505
8506 2007-04-16  Ian Lance Taylor  <iant@google.com>
8507
8508         PR tree-optimization/31522
8509         * tree-vrp.c (vr_phi_edge_counts): New static variable.
8510         (vrp_initialize): Allocate vr_phi_edge_counts.
8511         (vrp_visit_phi_node): Don't push to infinity if we saw a new
8512         executable edge.  Drop test for all constants.
8513         (vrp_finalize): Free vrp_phi_edge_counts.
8514
8515         * doc/cpp.texi (Common Predefined Macros): Clarify description of
8516         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
8517
8518         * tree-ssa-propagate.c (cfg_blocks_add): Insert blocks with fewer
8519         predecessors at head rather than tail.
8520
8521 2007-04-16  Matthias Klose  <doko@debian.org>
8522
8523         * config/alpha/linux.h (CPP_SPEC): Define.
8524         * config/arm/linux-gas.h (SUBTARGET_CPP_SPEC): Extend.
8525
8526 2007-04-16  Aldy Hernandez  <aldyh@redhat.com>
8527
8528         * function.h: Remove sequence_stack extern declaration.
8529
8530 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
8531
8532         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Change to 64 on
8533         TARGET_FIDOA.
8534         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Change to 64 if __mfido__ is
8535         defined.
8536
8537 2007-04-16  Anatoly Sokolov <aesok@post.ru>
8538
8539         * config/avr/avr.c (avr_arch_types): Rearranging  array.
8540         (enum avr_arch): Add.
8541         (avr_mcu_types): Use avr_arch enumeration constants instead of
8542         numbers.
8543         * config/avr/avr.h (LINK_SPEC): Simplify.
8544
8545 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
8546
8547         * config/m68k/m68k.c (m68k_libcall_value,
8548         m68k_function_value): Use macros for register names more.
8549
8550         * config/m68k/m68k.h (FRAME_POINTER_REGNUM): Use A6_REG
8551         instead.
8552         (M68K_REGNAME): Use A6_REG.
8553         * config/m68k/m68k.md (FP_REG): Rename to A6_REG.
8554
8555 2007-04-16  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
8556
8557         PR middle-end/28071
8558         * sched-int.h (struct deps): Split field 'pending_lists_length' into
8559         'pending_read_list_length' and 'pending_write_list_length'.  Update
8560         comment.
8561         * sched-deps.c (add_insn_mem_dependence): Change signature.  Update
8562         to handle two length counters instead of one.  Update all uses.
8563         (flush_pending_lists, sched_analyze_1, init_deps): Update to handle
8564         two length counters instead of one.
8565         * sched-rgn.c (propagate_deps): Update to handle two length counters
8566         instead of one.
8567
8568 2007-04-16  H.J. Lu  <hongjiu.lu@intel.com>
8569
8570         PR target/31582
8571         * config/i386/i386.c (ix86_expand_vec_set_builtin): Make a
8572         copy of source, pass it to ix86_expand_vector_set and return
8573         it as target.
8574
8575 2007-04-16  David Ung  <davidu@mips.com>
8576             Joseph Myers  <joseph@codesourcery.com>
8577
8578         * config/mips/mips.h (PROCESSOR_74KC, PROCESSOR_74KF,
8579         PROCESSOR_74KX, TUNE_74K, GENERATE_MADD_MSUB): Define.
8580         * config/mips/mips.c (mips_cpu_info_table, mips_rtx_cost_data):
8581         Add 74K processor information.
8582         * config/mips/mips.md: Include 74k.md.
8583         (cpu): Add 74kc,74kf,74kx.
8584         (ISA_HAS_MADD_MSUB): Change to GENERATE_MADD_MSUB throughout.
8585         * config/mips/74k.md: New.
8586         * doc/invoke.texi (MIPS Options): Document 74K support.
8587
8588 2007-04-16  Dorit Nuzman  <dorit@il.ibm.com>
8589
8590         * tree-vect-analyze.c (vect_analyze_operations): Reorganize calls to
8591         vectorizable_* functions.
8592         * tree-vect-transform.c (vectorizable_call): Add check for
8593         STMT_VINFO_RELEVANT_P, STMT_VINFO_DEF_TYPE and STMT_VINFO_LIVE_P.
8594         (vectorizable_store): likewise.
8595         (vectorizable_conversion): Add check for STMT_VINFO_DEF_TYPE.
8596         Add comments.
8597         (vectorizable_operation, vectorizable_type_demotion): Likewise.
8598         (vectorizable_type_promotion, vectorizable_load): Likewise.
8599         (vectorizable_live_operation, vectorizable_condition): Likewise.
8600         (vectorizable_assignment): Add check for STMT_VINFO_DEF_TYPE and
8601         STMT_VINFO_LIVE_P.
8602         (vect_transform_stmt): Reorganize calls to vectorizable_* functions.
8603
8604 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
8605
8606         * config/m68k/linux.h (FUNCTION_VALUE_REGNO_P): Use macros for
8607         register numbers more.
8608         * config/m68k/m68k.h (STACK_POINTER_REGNUM,
8609         FRAME_POINTER_REGNUM, STATIC_CHAIN_REGNUM,
8610         M68K_STRUCT_VALUE_REGNUM, FUNCTION_VALUE, LIBCALL_VALUE,
8611         FUNCTION_VALUE_REGNO_P): Likewise.
8612         * config/m68k/m68kelf.h (M68K_STRUCT_VALUE_REGNUM,
8613         STATIC_CHAIN_REGNUM): Likewise.
8614         * config/m68k/m68kemb.h (FUNCTION_VALUE_REGNO_P): Likewise.
8615         * config/m68k/netbsd-elf.h (M68K_STRUCT_VALUE_REGNUM,
8616         STATIC_CHAIN_REGNUM, FUNCTION_VALUE_REGNO_P): Likewise.
8617         * config/m68k/m68k.md (FP_REG): New.
8618
8619 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
8620
8621         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Prefer 32-bit
8622         alignment on fido.
8623
8624 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
8625
8626         * config/i386/i386.c, config/s390/s390.c, config/s390/s390.md,
8627         tree-ssa-loop-niter.c, tree-ssa-structalias.c, tree-vrp.c: Fix
8628         comment typos.
8629
8630 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
8631
8632         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Ignore
8633         cold loops.
8634
8635 2007-04-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8636
8637         PR c/31520
8638         * c-decl.c (finish_decl): Grab the type of the decl after the call
8639         to store_init_value.
8640
8641 2007-04-14  Steven Bosscher  <steven@gcc.gnu.org>
8642
8643         * common.opt (fforward-propagate): Fix "Optimization" annotation.
8644
8645 2007-04-14  Jakub Jelinek  <jakub@redhat.com>
8646
8647         PR c++/25874
8648         * omp-low.c (expand_omp_parallel): If child_cfun->cfg, free
8649         dominators, post dominators and cleanup cfg before returning.
8650
8651 2007-04-14  Bernd Schmidt  <bernd.schmidt@analog.com>
8652
8653         * config/bfin/bfin.h (MODES_TIEABLE_P): Allow more modes to be tied.
8654         * config/bfin/bfin.md (movsi_insn): Delete two unused alternatives.
8655
8656 2007-04-14  Kazu Hirata  <kazu@codesourcery.com>
8657
8658         * config.gcc: Recognize fido.
8659         * config/m68k/m68k-devices.def (fidoa): New.
8660         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define
8661         __mfido__.
8662         (FL_FIDOA, TARGET_FIDOA): New.
8663         * config/m68k/m68k.opt (mfidoa): New.
8664
8665 2007-04-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
8666
8667         PR middle-end/31322
8668         * dwarf2out.c (output_call_frame_info): Call assemble_external_libcall
8669         when a personality function is used.
8670
8671 2007-04-13  Bob Wilson  <bob.wilson@acm.org>
8672
8673         * config/xtensa/xtensa.c (xtensa_expand_builtin): Use CALL_EXPR_FN.
8674
8675 2007-04-13  Mike Stump  <mrs@apple.com>
8676
8677         * config/darwin-c.c (handle_c_option): Handle -fapple-kext here so
8678         we can...
8679         * config/darwin.opt (fapple-kext): Make C++ only.
8680         * config/darwin.c (darwin_override_options): Remove code to ensure
8681         -fapple-kext is given for C++ only.
8682
8683 2007-04-13  Richard Sandiford  <richard@codesourcery.com>
8684
8685         * config/mips/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Define.
8686         * config/mips/mips.c (override_options): Call
8687         SUBTARGET_OVERRIDE_OPTIONS, if defined.
8688
8689 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
8690
8691         * config/i386/i386.opt (msvr3-shlib): Removed.
8692
8693         * doc/invoke.texi: Remove -msvr3-shlib.
8694
8695 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
8696
8697         * config/i386/i386.opt (mpopcnt): Replace "popcount" instruction
8698         with "popcnt" instruction.
8699
8700 2007-04-13  Richard Guenther  <rguenther@suse.de>
8701
8702         PR tree-optimization/21258
8703         * tree-vrp.c (compare_case_labels): New helper.
8704         (find_switch_asserts): New function.
8705         (find_assert_locations): Call it for SWITCH_EXPRs.
8706
8707 2007-04-13  Uros Bizjak  <ubizjak@gmail.com>
8708
8709         * config/i386/i386.h (X87_FLOAT_MODE_P): Check for TARGET_80387.
8710         * config/i386/i386.md (*cmpfp0): Remove check for TARGET_80387, this
8711         check is now implied in X87_FLOAT_MODE_P.
8712         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
8713         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
8714         (fix_trunc<mode>_i386_fisttp): Ditto.
8715         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
8716         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
8717         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
8718         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
8719         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
8720         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
8721         (unnamed_splitters): Ditto.
8722         * config/i386/i386.c (function_value_32): Generate FIRST_FLOAT_REG
8723         for X87_FLOAT_MODE_P mode.  Override FIRST_FLOAT_REG with
8724         FIRST_SSE_REG for local functions when SSE math is enabled or
8725         for functions with sseregparm attribute.
8726         (standard_80387_constant_p): Return -1 if mode is not
8727         X87_FLOAT_MODE_P.
8728         (ix86_cc_mode): Assert that scalar mode is not DECIMAL_FLOAT_MODE_P.
8729         (ix86_expand_compare): Ditto.
8730         (ix86_expand_carry_flag_compare): Ditto.
8731         (ix86_expand_int_movcc): Check for SCALAR_FLOAT_MODE_P instead
8732         of FLOAT_MODE_P for cmp_mode and assert that cmp_mode is not
8733         DECIMAL_FLOAT_MODE_P.
8734         (ix86_preferred_output_reload_class): Use X87_FLOAT_MODE_P instead
8735         of SCALAR_FLOAT_MODE_P.
8736         (ix86_rtx_costs) [PLUS] Remove FLOAT_MODE_P and fall through to ...
8737         [MINUS]: ... here.  Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P
8738         checks before FLOAT_MODE_P.
8739         [MULT]: Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P checks
8740         before FLOAT_MODE_P.
8741         [DIV]: Ditto.
8742         [NEG]: Ditto.
8743         [ABS]: Ditto.
8744         [SQRT]: Ditto.
8745         [FLOAT_EXTEND]: Use SSE_FLOAT_MODE_P.
8746
8747 2007-04-12  Paolo Bonzini  <bonzini@gnu.org>
8748             Charles Wilson  <libtool@cwilson.fastmail.fm>
8749
8750         * Makefile.in (stamp-as, stamp-collect-ld, stamp-nm): Remove.
8751         (libgcc.mvars): Don't depend on them.
8752         * configure.ac (as, collect-ld, nm): Create from exec-tool.in.
8753         * exec-tool.in: New.
8754
8755 2007-04-12  Brooks Moses  <brooks.moses@codesourcery.com>
8756
8757         * doc/invoke.text (--help): Document --help=common.
8758
8759 2007-04-12  Thomas Neumann  <tneumann@users.sourceforge.net>
8760
8761         * stub-objc.c (objc_build_keyword_decl): Avoid C++ keywords.
8762
8763 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
8764
8765         * Makefile.in (insn-emit.o): Depend on $(INTEGRATE_H).
8766         * genemit.c (main): Emit #include "integrate.h".
8767         * config/mips/mips-protos.h (SYMBOL_HALF): New mips_symbol_type.
8768         (LOADGP_RTP): New mips_loadgp_style.
8769         * config/mips/mips.h: Include config/vxworks-dummy.h.
8770         (TARGET_RTP_PIC): New macro.
8771         (TARGET_USE_GOT): Return true for TARGET_RTP_PIC.
8772         (TARGET_USE_PIC_FN_ADDR_REG): Return true for TARGET_VXWORKS_RTP.
8773         (ASM_OUTPUT_ADDR_DIFF_ELT): Emit function-relative case tables
8774         for TARGET_RTP_PIC.
8775         * config/mips/vxworks.h (SUBTARGET_ASM_SPEC): Define.  Pass down
8776         -mvxworks-pic when using -mrtp and a PIC option.
8777         * config/mips/mips.c (mips_classify_symbol): Return SYMBOL_GOT_DISP
8778         for RTP PIC.
8779         (mips_symbolic_constant_p, mips_symbolic_address_p)
8780         (mips_symbol_insns): Handle SYMBOL_HALF.
8781         (override_options): Warn about -G and -mrtp being used together.
8782         Initialize mips_lo_relocs[SYMBOL_HALF].
8783         (mips_current_loadgp_style): Return LOADGP_RTP for RTP PIC.
8784         (mips_emit_loadgp): Handle LOADGP_RTP.
8785         (mips_in_small_data_p): Return false for TARGET_VXWORKS_RTP.
8786         * config/mips/mips.md (loadgp_rtp): New insn and splitter.
8787         (tablejump): Handle function-relative case table entries if
8788         TARGET_RTP_PIC.
8789         * config/mips/predicates.md (symbol_ref_operand): New predicate.
8790
8791 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
8792
8793         * config/mips/mips.md (load_call<mode>): Allow any general register.
8794         destination.
8795         (sibcall_value_internal, sibcall_value_multiple_internal)
8796         (call_value_internal, call_value_split, call_value_multiple_internal)
8797         (call_value_multiple_split): Remove constraints from operand 0.
8798
8799 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
8800
8801         * config/mips/mips-protos.h: In comments, refer to loadgp_absolute
8802         rather than loadgp_noshared.
8803         * config/mips/mips.c (mips_emit_loadgp): Use gen_loadgp_absolute
8804         instead of gen_loadgp_noshared.  Use gen_loadgp_newabi instead of
8805         gen_loadgp.
8806         * config/mips/mips.md (loadgp): Rename to...
8807         (loadgp_newabi): ...this.
8808         (loadgp_noshared): Rename to...
8809         (loadgp_absolute): ...this.
8810
8811 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
8812
8813         * config/mips/mips.c (mips_ok_for_lazy_binding_p): Always return
8814         false for locally-binding symbols.
8815         (mips_dangerous_for_la25_p): Check mips_global_symbol_p.
8816
8817 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
8818
8819         * config/mips/mips-protos.h (SYMBOL_GOT_LOCAL): Rename to...
8820         (SYMBOL_GOT_PAGE_OFST): ...this.
8821         (SYMBOL_GOT_GLOBAL): Rename to...
8822         (SYMBOL_GOT_DISP): ...this.
8823         (SYMBOL_GOTOFF_GLOBAL): Rename to...
8824         (SYMBOL_GOTOFF_DISP): ...this.  Update comments accordingly.
8825         * config/mips/mips.c (mips_global_symbol_p): New function.
8826         (mips_symbol_binds_local_p): Likewise.
8827         (mips_classify_symbol): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP
8828         and SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST.  Use
8829         mips_global_symbol_p and mips_symbol_binds_local_p.
8830         (mips_symbolic_constant_p, mips_symbolic_address_p, mips_symbol_insns)
8831         (override_options): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP,
8832         SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST and SYMBOL_GOTOFF_GLOBAL to
8833         SYMBOL_GOTOFF_DISP.
8834         (mips_ok_for_lazy_binding_p): New function.
8835         (mips_load_call_address, mips_expand_call): Use it.
8836         (mips_dangerous_for_la25_p): Likewise.
8837         * config/mips/mips.md (*xgot_hi<mode>, *xgot_lo<mode>)
8838         (*got_disp<mode>): Use got_disp_operand instead of
8839         global_got_operand.  Use SYMBOL_GOTOFF_DISP instead of
8840         SYMBOL_GOTOFF_GLOBAL.
8841         (*got_page<mode>): Use got_page_ofst_operand instead of
8842         local_got_operand.
8843         * config/mips/predicates.md (const_call_insn_operand): Use
8844         SYMBOL_GOT_DISP instead of SYMBOL_GOT_GLOBAL.
8845         (global_got_operand): Rename to...
8846         (got_disp_operand): ...this and use SYMBOL_GOT_DISP instead of
8847         SYMBOL_GOT_GLOBAL.
8848         (local_got_operand): Rename to...
8849         (got_page_ofst_operand): ...this and use SYMBOL_GOT_PAGE_OFST instead
8850         of SYMBOL_GOT_LOCAL.
8851
8852 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
8853
8854         * config/mips/mips.h (TARGET_SPLIT_CALLS): Check
8855         TARGET_CALL_CLOBBERED_GP.
8856         (TARGET_SIBCALLS): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
8857         (TARGET_USE_GOT, TARGET_CALL_CLOBBERED_GP): New macros.
8858         (TARGET_CALL_SAVED_GP, TARGET_USE_PIC_FN_ADDR_REG): Likewise.
8859         (STARTING_FRAME_OFFSET): Check TARGET_CALL_CLOBBERED_GP instead
8860         of TARGET_ABICALLS && !TARGET_NEWABI.
8861         (MIPS_CALL): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
8862         * config/mips/mips.c (mips_load_call_address): Check
8863         TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
8864         (mips_global_pointer): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
8865         Check TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
8866         (mips_save_reg_p): Check TARGET_CALL_SAVED_GP instead of
8867         TARGET_ABICALLS && TARGET_NEWABI.
8868         (mips_current_loadgp_style): Check TARGET_USE_GOT instead of
8869         TARGET_ABICALLS.
8870         (mips_expand_prologue): Check TARGET_OLDABI instead of !TARGET_NEWABI.
8871         (mips_expand_epilogue): Check TARGET_CALL_SAVED_GP instead of
8872         TARGET_ABICALLS && TARGET_NEWABI.
8873         (mips_output_mi_thunk): Check TARGET_USE_GOT instead of
8874         TARGET_ABICALLS.  Check TARGET_CALL_SAVED_GP instead of
8875         TARGET_NEWABI.  Use TARGET_USE_PIC_FN_ADDR_REG to decide
8876         whether indirect calls must use $25.
8877         (mips_extra_live_on_entry): Check TARGET_GOT instead of
8878         TARGET_ABICALLS.
8879         * config/mips/mips.md (jal_macro): Check flag_pic and
8880         TARGET_CALL_CLOBBERED_GP instead of TARGET_ABICALLS and TARGET_NEWABI.
8881         (builtin_setjmp_setup, builtin_longjmp): Check TARGET_USE_GOT
8882         instead of TARGET_ABICALLS.
8883         (exception_receiver): Check TARGET_CALL_CLOBBERED_GP instead of
8884         TARGET_ABICALLS && TARGET_OLDABI.
8885         (load_call<mode>): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
8886         (sibcall): In the comment above the define_insn, mention
8887         TARGET_USE_PIC_FN_ADDR_REG instead of TARGET_ABICALLS.
8888         * config/mips/constraints.md (c): Check TARGET_USE_PIC_FN_ADDR_REG
8889         instead of TARGET_ABICALLS.
8890
8891 2007-04-12  Bernd Schmidt  <bernd.schmidt@analog.com>
8892
8893         * doc/md.texi (Blackfin family constraints): Document PA and PB.
8894         * config/bfin/bfin.h (CONST_OK_FOR_P): Handle PA and PB.
8895         (MACFLAGS_MATCH_P): New macro.
8896         * config/bfin/bfin.c (print_operand): Handle MACFLAG_IS_M.
8897         (bfin_secondary_reload): Treat EVEN_AREGS and ODD_AREGS like AREGS.
8898         * config/bfin/bfin.md (MACFLAG_IS_M): New constant.  Renumber some of
8899         the other MACFLAG constants.
8900         (sum_of_accumulators, lshrpdi3, ashrpdi3): New patterns.
8901         (flag_machi): Tighten constraints.  Renumber some of the operands.
8902         (flag_machi_acconly): Tighten constraints.  Correct operand numbers in
8903         output template.
8904         (flag_machi_parts_acconly): New pattern.
8905         (flag_macinithi): Tighten constraints.  Allow any accumulator to be
8906         used.
8907         (flag_macinit1hi): Tighten constraints.
8908         (flag_mul_macv2hi_parts_acconly): New pattern.
8909
8910         * config/bfin/lib1funcs.asm (___umulsi3_highpart, __smulsi3_highpart):
8911         Use a more efficient implementation.
8912         * config/bfin/bfin.md (umulsi3_highpart, smulsi3_highpart): Emit
8913         inline sequences when not optimizing for size.
8914
8915         * config/bfin/bfin.md (movhi_low2high, movhi_high2high, movhi_low2low,
8916         movhi_high2low): Delete, merge functionality into...
8917         (packv2hi): ... this pattern.
8918
8919         2007-02-11  Jie Zhang  <jie.zhang@analog.com>
8920         * config/bfin/bfin.opt (msim): New option.
8921         (mcpu=): New option.
8922         * config/bfin/bfin-protos.h (enum bfin_cpu): New.
8923         (bfin_cpu_t): Typedef of enum bfin_cpu.
8924         (bfin_cpu_type): New declaration.
8925         * config/bfin/elf.h (STARTFILE_SPEC): Add support for
8926         -msim and -mcpu= options.
8927         (LIB_SPEC): Likewise.
8928         * config/bfin/bfin.c (bfin_cpu_type): Define.
8929         (bfin_handle_option): Handle -mcpu= option.
8930         * config/bfin/bfin.h (DEFAULT_CPU_TYPE): Define as BFIN_CPU_BF532.
8931         (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF531__, __ADSPBF532__,
8932         __ADSPBF533__ or __ADSPBF537__ according to the cpu type.
8933
8934 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
8935
8936         * config.gcc (*-*-vxworks*): Don't add to tm_files in this stanza.
8937         (arm-wrs-vxworks, mips-wrs-vxworks, powerpc-wrs-vxworks)
8938         (powerpc-wrs-vxworksae): Use ${tm_file}.
8939         (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add svr4.h
8940         after elfos.h.  Remove i386/sysv4.h and add i386/vx-common.h.
8941         * config/i386/vx-common.h: New file.
8942
8943 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
8944
8945         * config/vxworks.h (VXWORKS_STARTFILE_SPEC): Use -l:crt0.o instead
8946         of crt0.o%s.
8947
8948 2007-04-12  Andreas Krebbel  <krebbel1@de.ibm.com>
8949
8950         * config/s390/s390.md ("trunctddd2"): Use TDmode for the target of
8951         ldxtr.
8952
8953 2007-04-12  Douglas Gregor  <doug.gregor@gmail.com>
8954
8955         PR c++/31078
8956         PR c++/31103
8957         * c-common.c (c_build_qualified_type): Set canonical type
8958         appropriately.
8959
8960 2007-04-12  Richard Guenther  <rguenther@suse.de>
8961
8962         * tree-pretty-print.c (dump_generic_node): Print ARRAY_REF
8963         lower bound and element size if lower bound is not zero
8964         or either of the ARRAY_REF operands is set.
8965
8966 2007-04-12  Richard Guenther  <rguenther@suse.de>
8967
8968         PR tree-optimization/24689
8969         PR tree-optimization/31307
8970         * fold-const.c (operand_equal_p): Compare INTEGER_CST array
8971         indices by value.
8972         * gimplify.c (canonicalize_addr_expr): To be consistent with
8973         gimplify_compound_lval only set operands two and three of
8974         ARRAY_REFs if they are not gimple_min_invariant.  This makes
8975         it never at this place.
8976         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
8977
8978 2007-04-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
8979
8980         * pa.c (pa_som_asm_init_sections): Ensure that cfun->machine is not
8981         null before emitting a .nsubspa directive.
8982
8983 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
8984
8985         * tree-ssa-alias.c (dump_mem_ref_stats): Do not call
8986         need_to_partition_p if there are no memory statements in the
8987         function.
8988
8989 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
8990
8991         * tree-data-ref.c (chrec_steps_divide_constant_p): Removed.
8992         (gcd_of_steps_may_divide_p): New function.
8993         (analyze_miv_subscript): Use gcd_of_steps_may_divide_p.
8994
8995 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
8996
8997         * reload.c (find_reloads_toplev, find_reloads_address,
8998         find_reloads_address_1, find_reloads_subreg_address): Use rtx_equal_p,
8999         not a pointer equality test, to decide if we need to call
9000         push_reg_equiv_alt_mem.
9001
9002 2007-04-11  Sebastian Pop  <sebastian.pop@inria.fr>
9003
9004         * tree-data-ref.c (affine_function_zero_p, constant_access_functions,
9005         insert_innermost_unit_dist_vector, add_distance_for_zero_overlaps):
9006         New.
9007         (build_classic_dist_vector): Call add_distance_for_zero_overlaps.
9008
9009 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
9010
9011         * tree-data-ref.c (add_multivariate_self_dist): Force the distance
9012         vector to be positive.
9013
9014 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
9015
9016         PR 30735
9017         PR 31090
9018         * doc/invoke.texi: Document --params max-aliased-vops and
9019         avg-aliased-vops.
9020         * tree-ssa-operands.h (get_mpt_for, dump_memory_partitions,
9021         debug_memory_partitions): Move to tree-flow.h
9022         * params.h (AVG_ALIASED_VOPS): Define.
9023         * tree-ssa-alias.c (struct mp_info_def): Remove.  Update all
9024         users.
9025         (mp_info_t): Likewise.
9026         (get_mem_sym_stats_for): New.
9027         (set_memory_partition): Move from tree-flow-inline.h.
9028         (mark_non_addressable): Only clear the set of symbols for the
9029         partition if it exists.
9030         (dump_memory_partitions): Move from tree-ssa-operands.c
9031         (debug_memory_partitions): Likewise.
9032         (need_to_partition_p): New.
9033         (dump_mem_ref_stats): New.
9034         (debug_mem_ref_stats): New.
9035         (dump_mem_sym_stats): New.
9036         (debug_mem_sym_stats): New.
9037         (update_mem_sym_stats_from_stmt): New.
9038         (compare_mp_info_entries): New.
9039         (mp_info_cmp): Call it.
9040         (sort_mp_info): Change argument to a list of mem_sym_stats_t
9041         objects.
9042         (get_mpt_for): Move from tree-ssa-operands.c.
9043         (find_partition_for): New.
9044         (create_partition_for): Remove.
9045         (estimate_vop_reduction): New.
9046         (update_reference_counts): New.
9047         (build_mp_info): New.
9048         (compute_memory_partitions): Refactor.
9049         Document new heuristic.
9050         Call build_mp_info, update_reference_counts,
9051         find_partition_for and estimate_vop_reduction.
9052         (compute_may_aliases): Populate virtual operands before
9053         calling debugging dumps.
9054         (delete_mem_sym_stats): New.
9055         (delete_mem_ref_stats): New.
9056         (init_mem_ref_stats): New.
9057         (init_alias_info): Call it.
9058         (maybe_create_global_var): Remove alias_info argument.
9059         Get number of call sites and number of pure/const call sites
9060         from gimple_mem_ref_stats().
9061         (dump_alias_info): Call dump_memory_partitions first.
9062         (dump_points_to_info_for): Show how many times a pointer has
9063         been dereferenced.
9064         * opts.c (decode_options): For -O2 set --param
9065         max-aliased-vops to 500.
9066         For -O3 set --param max-aliased-vops to 1000 and --param
9067         avg-aliased-vops to 3.
9068         * fortran/options.c (gfc_init_options): Remove assignment to
9069         MAX_ALIASED_VOPS.
9070         * tree-flow-inline.h (gimple_mem_ref_stats): New.
9071         * tree-dfa.c (dump_variable): Dump memory reference
9072         statistics.
9073         Dump NO_ALIAS* settings.
9074         (referenced_var_lookup): Tidy.
9075         (mem_sym_stats): New.
9076         * tree-ssa-copy.c (may_propagate_copy): Return true if DEST
9077         and ORIG are different SSA names for a memory partition.
9078         * tree-ssa.c (delete_tree_ssa): Call delete_mem_ref_stats.
9079         * tree-flow.h (struct mem_sym_stats_d): Define.
9080         (mem_sym_stats_t): Define.
9081         (struct mem_ref_stats_d): Define.
9082         (struct gimple_df): Add field mem_ref_stats.
9083         (enum noalias_state): Define.
9084         (struct var_ann_d): Add bitfield noalias_state.
9085         (mem_sym_stats, delete_mem_ref_stats, dump_mem_ref_stats,
9086         debug_mem_ref_stats, debug_memory_partitions,
9087         debug_mem_sym_stats): Declare.
9088         * tree-ssa-structalias.c (update_alias_info): Update call
9089         sites, pure/const call sites and asm sites in structure
9090         returned by gimple_mem_ref_stats.
9091         Remove local variable IS_POTENTIAL_DEREF.
9092         Increase NUM_DEREFS if the memory expression is a potential
9093         dereference.
9094         Call update_mem_sym_stats_from_stmt.
9095         If the memory references memory, call
9096         update_mem_sym_stats_from_stmt for all the direct memory
9097         symbol references found.
9098         (intra_create_variable_infos): Set noalias_state field for
9099         pointer arguments according to the value of
9100         flag_argument_noalias.
9101         * tree-ssa-structalias.h (struct alias_info): Remove fields
9102         num_calls_found and num_pure_const_calls_found.
9103         (update_mem_sym_stats_from_stmt): Declare.
9104         * params.def (PARAM_MAX_ALIASED_VOPS): Change description.
9105         Set default value to 100.
9106         (PARAM_AVG_ALIASED_VOPS): Define.
9107
9108 2007-04-11  Richard Guenther  <rguenther@suse.de>
9109
9110         PR middle-end/31530
9111         * simplify-rtx.c (simplify_binary_operation_1): Do not simplify
9112         a * -b + c as c - a * b if we honor sign dependent rounding.
9113
9114 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
9115
9116         * config/bfin/bfin-protos.h (bfin_expand_movmem): Renamed from
9117         bfin_expand_strmov.
9118         * config/bfin/bfin.c (bfin_expand_prologue, bfin_delegitimize_address,
9119         bfin_function_ok_for_sibcall, split_load_immediate): Remove unused
9120         variables.
9121         (initialize_trampoline): Don't use old-style function definition.
9122         (bfin_secondary_reload): Mark IN_P argument as unused.
9123
9124 2007-04-10  Sebastian Pop  <sebastian.pop@inria.fr>
9125
9126         PR tree-optimization/31343
9127         * tree-chrec.h (chrec_zerop): Moved before build_polynomial_chrec.
9128         (build_polynomial_chrec): Return a scalar when the evolution is zero.
9129         * testsuite/gcc.dg/vect/pr31343.c: New.
9130
9131 2007-04-10  Eric Christopher  <echristo@apple.com>
9132
9133         * config/i386/i386.h (X87_FLOAT_MODE_P): New.
9134         * config/i386/i386.md (*cmpfp0): Use.
9135         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
9136         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
9137         (fix_trunc<mode>_i386_fisttp): Ditto.
9138         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
9139         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
9140         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
9141         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
9142         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
9143         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
9144         (unnamed_splitters): Ditto.
9145         * config/i386/i386.c (output_fix_trunc): Assert that
9146         we're not being passed a TFmode operand.
9147
9148 2007-04-10  Zdenek Dvorak  <dvorakz@suse.cz>
9149
9150         PR tree-optimization/31526
9151         * tree-inline.c (copy_cfg_body): Use last_basic_block instead of
9152         n_basic_blocks to find newly added blocks.
9153
9154 2007-04-10  Uros Bizjak  <ubizjak@gmail.com>
9155
9156         * config/i386/i386.md (fix_trunc<mode>di_sse): Remove "x" from "xm"
9157         alternative.
9158         (fix_trunc<mode>si_sse): Ditto.
9159         (*floatsisf2_mixed, *floatsisf2_sse): Ditto.
9160         (*floatsidf2_mixed, *floatsidf2_sse): Ditto.
9161         (*floatdisf2_mixed, *floatdisf2_sse): Ditto.
9162         (*floatdidf2_mixed, *floatdidf2_sse): Ditto.
9163         (floathi<mode>2): Rename from floathisf2 and floathidf2. Macroize
9164         expander using SSEMODEF mode macro.
9165         (floatsi<mode>2): Rename from floatsisf2 and floashidf2. Macroize
9166         expander using SSEMODEF mode macro.
9167         (*floathi<mode>2_i387): Rename from *floathisf2_i387 and
9168         *floathidf2_i387. Macroize insn using X87MODEF12 mode macro.
9169         (*floatsi<mode>2_i387): Rename from *floatsisf2_i387 and
9170         *floatsidf2_i387. Macroize insn using X87MODEF12 mode macro.
9171         (*floatdi<mode>2_i387): Rename from *floatdisf2_i387 and
9172         *floatdidf2_i387. Macroize insn using X87MODEF12 mode macro.
9173         (float<mode>xf2): Rename from floathixf2, floatsixf2 and floatdixf2.
9174         Macroize insn using X87MODEF mode macro.
9175
9176 2007-04-09  H.J. Lu  <hongjiu.lu@intel.com>
9177
9178         * config/i386/sse.md (sse2_pinsrw): Removed.
9179         (sse2_pextrw): Renamed to ...
9180         (*sse2_pextrw): This.
9181
9182 2007-04-09  Jan Hubicka  <jh@suse.cz>
9183
9184         PR target/27869
9185         * config/i386/sse.md
9186         (sse_vmaddv4sf3, sse_vmmulv4sf3): Remove '%' modifier.
9187         (sse_vmsmaxv4sf3_finite, sse_vmsminv4sf3_finite): Remove.
9188         (sse2_vmaddv2df3, sse2_vmmulv2df3): Remove '%' modifier.
9189         (sse2_vmsmaxv2df3_finite, sse2_vmsminv2df3_finite): Remove.
9190
9191 2007-04-09  Jan Hubicka  <jh@suse.cz>
9192
9193         * tree-ssa-ccp (maybe_fold_offset_to_component_ref): Recurse into
9194         multiple fields of union.
9195
9196 2007-04-09  Zdenek Dvorak  <dvorakz@suse.cz>
9197
9198         * cfgloopmanip.c (create_preheader): Do not use loop_preheader_edge.
9199         (create_preheaders): Check that loops are available.
9200         (fix_loop_structure): Clean up, improve comments.
9201         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa):
9202         Check that loops are available.  Set LOOP_CLOSED_SSA to the loops
9203         state flags.
9204         * tree-scalar-evolution.c (scev_finalize): Clear scalar_evolution_info.
9205         * predict.c (tree_estimate_probability): Do not call
9206         calculate_dominance_info.  Call create_preheaders.
9207         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Only call
9208         rewrite_into_loop_closed_ssa if LOOP_CLOSED_SSA is set in loops state
9209         flags.
9210         * cfgloop.c (loop_preheader_edge): Assert that loops have preheaders.
9211         * cfgloop.h (LOOP_CLOSED_SSA): New constant.
9212         * tree-cfg.c (tree_split_edge): Make an assert more precise.
9213         * tree-ssa-threadedge.c (thread_across_edge): Comment the function
9214         arguments.
9215
9216 2007-04-08  Jan Hubicka  <jh@suse.cz>
9217
9218         * tree.h (maybe_fold_offset_to_component_ref): Declare.
9219         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Export.
9220         * fold-const.c (fold_unary): Use it.
9221
9222 2007-04-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9223
9224         * varasm.c (assemble_variable): Remove call to
9225         lang_hooks.decls.prepare_assemble_variable.
9226         * langhooks-def.h (LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE): Kill.
9227         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE.
9228         * langhooks.h (lang_hooks_for_decls): Remove
9229         prepare_assemble_variable.
9230
9231 2007-04-08  Mike Stump  <mrs@apple.com>
9232
9233         * config/i386/i386.c: Use inc/dec on Core2.
9234
9235 2007-04-08  Steven Bosscher  <steven@gcc.gnu.org>
9236
9237         * langhooks.c (lhd_tree_inlining_add_pending_fn_decls,
9238         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
9239         lhd_tree_inlining_end_inlining): Remove.
9240         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove then
9241         add_pending_fn_decls, anon_aggr_type_p, start_inlining, and
9242         end_inlining hooks.
9243         * langhooks-def.h (lhd_tree_inlining_add_pending_fn_decls,
9244         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
9245         lhd_tree_inlining_end_inlining): Remove prototypes.
9246         (LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS,
9247         LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P,
9248         LANG_HOOKS_TREE_INLINING_START_INLINING,
9249         LANG_HOOKS_TREE_INLINING_END_INLINING): Remove.
9250
9251         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P): Do
9252         not set it.
9253
9254 2007-04-08  Anatoly Sokolov <aesok@post.ru>
9255
9256         PR target/29932
9257         * config/avr/predicates.md (io_address_operand): Delete predicate.
9258         (low_io_address_operand): Don't use 'mode' argument.
9259         (higth_io_address_operand): Rename ...
9260         (high_io_address_operand): ... to this. Don't use 'mode' argument.
9261         * config/avr/avr.md (*sbix_branch_tmp, *sbix_branch_tmp_bit7): Adjust
9262         for above change.
9263
9264 2007-04-07  Daniel Berlin  <dberlin@dberlin.org>
9265
9266         Revert change removing staticp.
9267
9268 2007-04-07  Anatoly Sokolov <aesok@post.ru>
9269
9270         PR target/30289
9271         * config/avr/avr.md (*clrmemqi, *clrmemhi): Mark operand 4 as
9272         earlyclobber.
9273
9274 2007-04-07  Bruce Korb  <bkorb@gnu.org>
9275
9276         * c.opt: Add -Wformat-contains-nul.
9277         * c-format.c (set_Wformat):  Set warn_format_contains_nul to the
9278           -Wformat setting.
9279         (check_format_info_main): Check OPT_Wformat_contains_nul before emitting
9280         the NUL byte warning.
9281
9282 2007-04-07  H.J. Lu  <hongjiu.lu@intel.com>
9283
9284         * config/i386/i386.c (ix86_handle_option): Handle SSSE3.
9285
9286 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
9287
9288         * tree.c (staticp): No longer use staticp langhook.
9289         * langhooks.c (lhd_staticp): Removed.
9290         * langhooks.h (struct lang_hooks): Remove staticp.
9291         * c-common.c (c_staticp): Remove.
9292         * c-common.h (c_staticp): Ditto.
9293         * langhooks-defs.h (lhd_staticp): Ditto.
9294         (LHD_HOOKS_STATICP): Ditto
9295         * tree.h (gcc_assert_lowered): New macro.
9296
9297 2007-04-06  Zdenek Dvorak  <dvorakz@suse.cz>
9298
9299         * tree-ssa-loop-niter.c (idx_infer_loop_bounds): Add and use
9300         argument "reliable".
9301         (infer_loop_bounds_from_ref, infer_loop_bounds_from_array):
9302         Add argument "reliable".  Propagate it through calls.
9303         (infer_loop_bounds_from_undefined):  Derive number of iterations
9304         estimates from references in blocks that do not dominate loop latch.
9305         (gcov_type_to_double_int): New function.
9306         (estimate_numbers_of_iterations_loop): Use gcov_type_to_double_int
9307         and expected_loop_iterations_unbounded.
9308         * cfgloopanal.c (expected_loop_iterations_unbounded): New function.
9309         (expected_loop_iterations): Use expected_loop_iterations_unbounded.
9310         * tree-data-ref.c (estimated_loop_iterations): Export.
9311         (get_references_in_stmt): Fix -- do not return addresses of local
9312         objects.
9313         * cfgloop.h (expected_loop_iterations_unbounded,
9314         estimated_loop_iterations): Declare.
9315
9316 2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
9317
9318         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
9319
9320 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
9321
9322         * config/i386/i386.md (extend<mode>xf2): Rename from extendsfxf2
9323         and extenddfxf2. Macroize expander using X87MODEF12 mode macro.
9324         (*truncdfsf_mixed, *truncdfsf_i387, *truncdfsf2_i387_1):
9325         Use output_387_reg_move().
9326         (*truncxf<mode>2): Rename from *truncxfsf2 and truncxfdf2. Macroize
9327         expander using X87MODEF12 mode macro.
9328         (*truncxfsf2_mixed): Combine alternatives, ignore "r" alternative when
9329         choosing register preferences.  Use output_387_reg_move().
9330         (*truncxfdf2_mixed): Combine alternatives, use "r" alternative
9331         instead of "x".  Use output_387_reg_move().
9332         (*truncxf<mode>2_i387_noop): Rename from *truncxfsf2_i387_noop and
9333         *truncxfdf2_i387_noop.  Macroize insn using X87MODEF12 mode macro.
9334         (*truncxf<mode>2_i387): Rename from *truncxfsf2_i387 and
9335         *truncxfdf2_i387.  Macroize insn using X87MODEF12 mode macro.
9336         Use output_387_reg_move().
9337         (*truncxf?f_mixed splitter): Macroize splitter using X87MODEF12
9338         mode macro.
9339         (*truncxf?f_i387 splitter): Ditto.
9340
9341 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
9342
9343         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
9344         LANG_HOOKS_SAFE_FROM_P.
9345         * expr.c (safe_from_p): Remove langhook call.
9346         * langhooks.h (lang_hooks): Remove safe_from_p.
9347         (lhd_safe_from_p): Remove prototype.
9348         * langhooks.c (lhd_safe_from_p): Remove.
9349
9350 2007-04-06  Jan Hubicka  <jh@suse.cz>
9351
9352         * cgraphunit.c (decide_is_function_needed): Do not keep always_inline
9353         functions.
9354
9355 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
9356
9357         * config/i386/i386.c (output_387_reg_move): Handle memory operand[0].
9358         * config/i386/i386.md (*movsf_1, *movdf_nointeger,
9359         *movdf_integer_rex64, *movdf_integer, *movxf_nointeger,
9360         *movxf_integer): Use output_387_reg_move() for x87 reg->mem
9361         alternative.
9362         (*extendsfdf2_mixed, *extendsfdf2_i387, *extendsfxf2_i387,
9363         *extenddfxf2_i387, *truncdfsf_fast_mixed): Ditto.
9364
9365 2007-04-05  Richard Henderson  <rth@redhat.com>
9366
9367         * config/alpha/alpha.c (print_operand) [+]: Remove.
9368         (alpha_end_function): Print nop if call at end of function.
9369         * config/alpha/alpha.h (PRINT_OPERAND_PUNCT_VALID_P): Remove +.
9370         * config/alpha/alpha.md (UNSPEC_LDGP1): New.
9371         (call_osf_1_er_noreturn, call_value_osf_1_er_noreturn): New.
9372         (call_osf_2_er_nogp, call_value_osf_2_er_nogp): New.
9373         (call_osf_2_er, call_value_osf_2_er): Merge the ldgp highpart into
9374         the call pattern. Update peepholes to match.
9375
9376 2007-04-05  Janis Johnson  <janis187@us.ibm.com>
9377
9378         * doc/extend.texi (Other Builtins): Add decimal float variants
9379         of signbit.
9380         * builtins.def: Ditto.
9381         * builtins.c (expand_builtin): Ditto.
9382
9383 2007-04-05  Uros Bizjak  <ubizjak@gmail.com>
9384             H.J. Lu  <hongjiu.lu@intel.com>
9385
9386         PR target/31478
9387         * config/i386/sse.md (sse2_umulv2siv2di3): Use V4SImode instead
9388         of V8HImode when calling ix86_binary_operator_ok.
9389         (sse2_pmaddwd): Call ix86_binary_operator_ok.
9390         (sdot_prodv8hi): Operands 1 and 2 must be register.
9391
9392 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
9393
9394         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
9395         initialize align to silence bogus warning.
9396
9397 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
9398
9399         PR middle-end/22156
9400         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
9401         all_no_warning.
9402         (struct sra_walk_fns): Remove use_all parameter from use.
9403         (sra_hash_tree): Handle BIT_FIELD_REFs.
9404         (sra_elt_hash): Don't hash bitfld blocks.
9405         (sra_elt_eq): Skip them in parent compares as well.  Handle
9406         BIT_FIELD_REFs.
9407         (sra_walk_expr): Don't maintain or pass down use_all_p.
9408         (scan_use): Remove use_all parameter.
9409         (scalarize_use): Likewise.  Re-expand assignment to
9410         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
9411         output, and re-scalarize after output.  Don't mark anything
9412         for no warning.
9413         (scalarize_ldst): Adjust.
9414         (scalarize_walk_gimple_modify_statement): Likewise.
9415         (build_element_name_1): Handle BIT_FIELD_REFs.
9416         (instantiate_element): Don't warn for any element whose parent
9417         is used as a whole.
9418         (instantiate_missing_elements_1): Return the sra_elt.
9419         (canon_type_for_field): New.
9420         (try_instantiate_multiple_fields): New.
9421         (instantiate_missing_elemnts): Use them.
9422         (mark_no_warning): Removed.
9423         (generate_one_element_ref): Handle BIT_FIELD_REFs.
9424         (REPLDUP, sra_build_elt_assignment): New.
9425         (generate_copy_inout): Use them.
9426         (generate_element_copy): Likewise.  Handle bitfld differences.
9427         (generate_element_zero): Don't recurse for blocks.  Use
9428         sra_build_elt_assignment.
9429         (generate_one_element_int): Take elt instead of var.  Use
9430         sra_build_elt_assignment.
9431         (generate_element_init_1): Adjust.
9432         (scalarize_use, scalarize_copy): Use REPLDUP.
9433         (scalarize_ldst): Move assert before dereference.
9434         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
9435
9436 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
9437
9438         * regmove.c: Fix unused variable warnings due to previous commit.
9439
9440 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
9441
9442         * regmove.c (STACK_GROWS_DOWNWARD): Don't boolean-ize.
9443         (regmove_bb_head): Remove.
9444         (copy_src_to_dest): Don't update regmove_bb_head and BB_HEAD.
9445         (regmove_optimize): Don't do unnecessary CFG fixes for non-existing
9446         problems with fixup_match_1.
9447         Don't initialize/free regmove_bb_head.
9448
9449         (reg_is_remote_constant_p): If an insn is in the same basic block
9450         but not before INSN, consider it remote, too.
9451
9452 2007-04-05  Anatoly Sokolov <aesok@post.ru>
9453
9454         PR target/25448
9455         * config/avr/avr.c (avr_handle_fndecl_attribute): Use the
9456         DECL_ASSEMBLER_NAME, not the DECL_NAME.
9457
9458 2007-04-05  H.J. Lu  <hongjiu.lu@intel.com>
9459
9460         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Reformat.
9461         (CONDITIONAL_REGISTER_USAGE): Likewise.
9462
9463 2007-04-04  Richard Henderson  <rth@redhat.com>
9464
9465         * config/alpha/lib1funcs.asm: Remove unused file.
9466
9467 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
9468
9469         PR other/31356
9470         * opts.c (print_specific_help): Fix --help=<language>
9471         header line.
9472         (common_handle_option): Support --help=common.
9473
9474 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
9475
9476         PR other/31353
9477         * gcc.c (main): Do not run the linker if
9478         print_subprocess_help indicates that it shouldn't be
9479         run.
9480
9481 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
9482
9483         PR doc/31355
9484         * doc/invoke.texi (--help=): Document <languages> value, fix
9485         formatting in tables of values.
9486
9487 2007-04-04  Danny Smith  <dannysmith.users.sourceforge.net>
9488
9489         * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Don't ignore
9490         dllimport attribute of virtual methods.
9491
9492 2007-04-04  Chen Liqin  <liqin@sunnorth.com.cn>
9493
9494         * config/score/crti.asm: Change _bss_start to __bss_start.
9495         * config/score/score.h (CONDITIONAL_REGISTER_USAGE): Added.
9496         (OUTGOING_REG_PARM_STACK_SPACE) update.
9497         * config/score/score.opt: add options to make backend support
9498         score5, score5u, score7 and score7d.
9499         * config/score/score.md: Likewise.
9500         * config/score/misc.md: Likewise.
9501         * config/score/mac.md: Likewise.
9502         * doc/invoke.texi: Likewise.
9503         * doc/md.texi: update constraints define.
9504
9505 2007-04-03  Richard Henderson  <rth@redhat.com>
9506
9507         * expr.c (store_expr): If get_signed_or_unsigned_type doesn't yield
9508         an appropriate type, use the mode instead.
9509
9510 2007-04-03  Richard Sandiford  <richard@codesourcery.com>
9511
9512         * config.gcc (mips-wrs-vxworks): Add vx-common.h to tm_file.
9513         Set the default --with-arch setting to mips2.
9514         * config/mips/t-vxworks (MULTILIB_OPTIONS, MULTILIB_MATCHES)
9515         (MULTILIB_EXCEPTIONS): Redefine with new multilibs.
9516         (MULTILIB_OSDIRNAMES): Delete.
9517         (MULTILIB_DIRNAMES): Define.
9518         * config/mips/vxworks.h (LINK_SPEC): Add VXWORKS_LINK_SPEC.
9519         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Define.
9520         (TARGET_OS_CPP_BUILTINS): Incorporate old SUBTARGET_CPP_SPEC
9521         definitions, except for _WRS_R3K_EXC_SUPPORT.  Call
9522         VXWORKS_OS_CPP_BUILTINS.
9523         (SUBTARGET_CPP_SPEC): Redefine to VXWORKS_ADDITIONAL_CPP_SPEC.
9524         (MIPS_DEBUGGING_INFO): Undefine.
9525         (FUNCTION_PROFILER): Define to VXWORKS_FUNCTION_PROFILER.
9526
9527 2007-04-03  Jakub Jelinek  <jakub@redhat.com>
9528
9529         PR middle-end/30704
9530         * fold-const.c (native_encode_real): Encode real.c provided longs
9531         as a series of 32-bit native integers.
9532         (native_interpret_real): Interpret buffer as a series of 32-bit
9533         native integers.
9534
9535 2007-04-03  Richard Guenther  <rguenther@suse.de>
9536
9537         * genpreds.c (write_insn_constraint_len): Write function
9538         optimized for CONSTRAINT_LEN implementation.
9539         (write_tm_preds_h): Output insn_constraint_len inline and
9540         use it for CONSTRAINT_LEN.
9541         (write_insn_preds_c): Don't output insn_constraint_len.
9542         * doc/md.texi (define_register_constraint): Document multi-letter
9543         constraints shall have the same length if they start with the same
9544         letter.
9545
9546 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
9547
9548         PR target/31175
9549         * config/i386/i386.md (isinf<mode>2): Expand only when
9550         TARGET_C99_FUNCTIONS is set.
9551
9552 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
9553
9554         * config.gcc (i[34567]86-*-linux*): Add i386/t-crtpc to tm-file.
9555         (x86_64-*-linux*): Ditto.
9556         * config/i386/i386.opt (mpc): New option.
9557         * config/i386/i386.c (overrride_options): Handle
9558         ix87_precision_string.
9559         * config/i386/crtprec.c: New file.
9560         * config/i386/t-crtpc: Ditto.
9561         * config/i386/linux.h (ENDFILE_SPEC): Add handling of -mpc32, -mpc64
9562         and -mpc80 options.
9563         * config/i386/linux64.h (ENDFILE_SPEC): Ditto.
9564         * config/i386/t-linux64 (EXTRA_MULTILIB_PARTS): Add
9565         crtprec32.o, crtprec64.o and crtprec80.o.
9566
9567         * doc/invoke.texi (Machine Dependent Options): Add -mpc32, -mpc64
9568         and -mpc80 options.
9569         (i386 and x86-64 Options): Document -mpc32, -mpc64 and -mpc80 options.
9570
9571 2007-04-02  Eric Christopher  <echristo@apple.com>
9572
9573         * doc/invoke.texi (i386 and x86-64 Options): Document -m64
9574         limitations on darwin.
9575
9576 2007-04-02  Anatoly Sokolov <aesok@post.ru>
9577
9578         PR target/31137
9579         * config/avr/avr.c (avr_rtx_costs): Add missing 'break' statements.
9580
9581 2007-04-02  Dave Korn  <dave.korn@artimi.com>
9582
9583         * doc/tm.texi (FUNCTION_MODE): Update and extend documentation.
9584
9585 2007-04-02  Dave Korn  <dave.korn@artimi.com>
9586
9587         * libgcc2.h (exception_descriptor): Don't forward-declare.
9588         (__get_eh_table_language, __get_eh_table_version): Delete
9589         prototypes of long-dead functions.
9590
9591 2007-04-01  Daniel Berlin  <dberlin@dberlin.org>
9592
9593         * ebitmap.h: New file
9594         * ebitmap.c: New file
9595         * Makefile.in (ebitmap.o): New target.
9596
9597 2007-04-01  Jan Hubicka  <jh@suse.cz>
9598
9599         * emit-rtl.c (emit_insn_before_setloc): Do not ICE when asked to emit
9600         before very first instruction.
9601
9602 2007-04-01  Jan Hubicka  <jh@suse.cz>
9603
9604         * ggc-page.c (ggc_print_statistics): Fix formatting string to avoid
9605         waring on 64bit hosts.
9606         * bitmap.h: Fix typo in bitmap_head_def.
9607
9608 2007-04-01  Steven Bosscher  <steven@gcc.gnu.org>
9609
9610         PR rtl-optimization/31391
9611         * cfgcleanup.c (try_optimize_cfg): If a removed label is turned
9612         into a DELETED_LABEL note, and the label is in an empty basic
9613         block, update BB_END as well as BB_HEAD.
9614
9615 2007-04-01  Richard Henderson  <rth@redhat.com>
9616
9617         PR tree-optimization/31169
9618         * tree-vrp.c (extract_range_from_binary_expr) <RSHIFT_EXPR>: Drop
9619         to varying if the range is outside [0,  prec-1].
9620
9621 2007-04-01  Richard Sandiford  <richard@codesourcery.com>
9622
9623         PR target/31388
9624         * config/mips/mips.md (load_const_gp): New insn.
9625         * config/mips/mips.c (mips_split_symbol): Avoid using or creating
9626         the MIPS16 GP pseudo register if no_new_pseudos.
9627         (mips16_gp_pseudo_reg): Use gen_load_const_gp.
9628
9629 2007-03-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9630
9631         PR target/31364
9632         * config/rs6000/rs6000.md (call): Convert to LR hard reg for
9633         secureplt.
9634         (call_value): Likewise.
9635
9636 2007-03-31  Wolfgang Bangerth  <bangerth@dealii.org>
9637             Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9638
9639         PR 14737
9640         * doc/invoke.texi: (optimization options): Reword description
9641         of -ffast-math. Document its primary purpose.
9642
9643 2007-03-31  Richard Guenther  <rguenther@suse.de>
9644
9645         * omp-low.c (splay-tree.h): Include.
9646         (lookup_decl): Replace splay-tree usage by pointer-map.
9647         (maybe_lookup_decl): Likewise.
9648         (new_omp_context): Likewise.
9649         (delete_omp_context): Likewise.
9650         * gimplify.c (splay-tree.h): Include.
9651         * tree-inline.c (insert_decl_map): Replace splay-tree usage by
9652         pointer-map.
9653         (remap_ssa_name): Likewise.
9654         (remap_decl): Likewise.
9655         (remap_type_1): Likewise.
9656         (remap_type): Likewise.
9657         (copy_body_r): Likewise.
9658         (expand_call_inline): Likewise.
9659         (clone_body): Likewise.
9660         (copy_tree_r): Likewise.
9661         (remap_save_expr): Likewise.
9662         (unsave_r): Likewise.
9663         (unsave_expr_now): Likewise.
9664         (tree_function_versioning): Likewise.
9665         (build_duplicate_type): Likewise.
9666         * tree-inline.h (pointer-set.h): Include instead of splay-tree.h.
9667         (struct copy_body_data): Replace splay-tree by pointer-map.
9668         * Makefile.in (TREE_INLINE_H): Depend on pointer-map.h,
9669         not $(SPLAY_TREE_H).
9670         (gimplify.o): Depend on $(SPLAY_TREE_H).
9671         (omp-low.p): Likewise.
9672
9673 2007-03-31  Anatoly Sokolov <aesok@post.ru>
9674
9675         * config/avr/predicates.md (even_register_operand,
9676         odd_register_operand): New predicates.
9677         * config/avr/avr.md (movw peephole2): New.
9678         (movw_r peephole2): New.
9679
9680 2007-03-30  Rafael Avila de Espindola  <espindola@google.com>
9681
9682         * tree.h (get_signed_or_unsigned_type): New.
9683         * fold-const.c (operand_equal_for_comparison_p): Use
9684         get_signed_or_unsigned_type instead of
9685         lang_hooks.types.signed_or_unsigned_type.
9686         * expr.c (store_expr): Ditto.
9687         * langhooks.c (get_signed_or_unsigned_type): New.
9688         (lhd_signed_or_unsigned_type): New.
9689         * langhooks.h (lhd_signed_or_unsigned_type): New.
9690         * langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Define.
9691
9692 2007-03-30  Richard Henderson  <rth@redhat.com>
9693
9694         * tree-ssa-loop-ivopts.c: Include target.h.
9695         (produce_memory_decl_rtl): Pass the rtx through encode_section_info.
9696         (get_address_cost): Force SYMBOL_FLAG_LOCAL set.
9697         (force_expr_to_var_cost): Use produce_memory_decl_rtl.
9698         * Makefile.in (tree-ssa-loop-ivopts.o): Depend on TARGET_H.
9699
9700 2007-03-30  Richard Henderson  <rth@redhat.com>
9701             Kai Tietz  <kai.tietz@onevision.com>
9702
9703         * config/i386/cygming.h (DWARF2_DEBUGGING_INFO): Enable by
9704         default for 64-bit.
9705         (PREFERRED_DEBUGGING_TYPE): Prefer dwarf2 for 64-bit.
9706         (TARGET_64BIT_MS_ABI): New.
9707         (DBX_REGISTER_NUMBER): Handle 64-bit.
9708         (SIZE_TYPE, PTRDIFF_TYPE): Use long long for 64-bit.
9709         (LONG_TYPE_SIZE): Force to 32.
9710         (REG_PARM_STACK_SPACE): New.
9711         (OUTGOING_REG_PARM_STACK_SPACE): New.
9712         (REGPARM_MAX, SSE_REGPARM_MAX): New.
9713         (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
9714         (STACK_BOUNDARY): Use 128 for 64-bit.
9715         * config/i386/cygwin.asm: Use push/ret to preserve call stack.
9716         Add 64-bit implementation.
9717         * config/i386/gthr-win32.c (__gthr_win32_key_create): Mark dtor
9718         argument unused.
9719         * config/i386/i386.c (x86_64_ms_abi_int_parameter_registers): New.
9720         (override_options): Set ix86_cmodel for TARGET_64BIT_MS_ABI.
9721         Warn for -mregparm, -mrtd in 64-bit mode; force ix86_regparm
9722         for 64-bit; use TARGET_SUBTARGET64_DEFAULT.
9723         (ix86_handle_cconv_attribute): Don't warn when ignoring if
9724         TARGET_64BIT_MS_ABI.
9725         (ix86_function_arg_regno_p): Handle TARGET_64BIT_MS_ABI.
9726         (ix86_pass_by_reference): Likewise.
9727         (ix86_function_value_regno_p): Likewise.
9728         (ix86_build_builtin_va_list): Likewise.
9729         (ix86_va_start, ix86_gimplify_va_arg): Likewise.
9730         (function_arg_advance_ms_64): New.
9731         (function_arg_advance): Call it.
9732         (function_arg_ms_64): New.
9733         (function_arg): Call it.
9734         (function_value_ms_64): New.
9735         (ix86_function_value_1): Call it.
9736         (return_in_memory_ms_64): New.
9737         (ix86_return_in_memory): Call it.
9738         (setup_incoming_varargs_ms_64): New.
9739         (ix86_setup_incoming_varargs): Call it.
9740         (ix86_expand_prologue): Handle 64-bit stack probing.
9741         (legitimize_pic_address): Handle TARGET_64BIT_MS_ABI.
9742         (output_pic_addr_const): Likewise.
9743         (x86_this_parameter): Likewise.
9744         (x86_output_mi_thunk): Likewise.
9745         (x86_function_profiler): Likewise.
9746         (TARGET_STRICT_ARGUMENT_NAMING): New.
9747         * config/i386/i386.h (TARGET_SUBTARGET64_DEFAULT): New.
9748         (TARGET_64BIT_MS_ABI): New.
9749         (CONDITIONAL_REGISTER_USAGE): Handle TARGET_64BIT_MS_ABI.
9750         * config/i386/i386.md (allocate_stack_worker): Remove.
9751         (allocate_stack_worker_32): Rename from allocate_stack_worker_1;
9752         describe the clobber of eax without a match_scratch.
9753         (allocate_stack_worker_postreload): Remove.
9754         (allocate_stack_worker_64): Rename from allocate_stack_worker_rex64;
9755         describe the clobbers of rax, r10, r11 properly; use __chkstk symbol.
9756         (allocate_stack_worker_rex64_postreload): Remove.
9757         (allocate_stack): Handle 64-bit.
9758         * config/i386/i386elf (TARGET_SUBTARGET_DEFAULT): Remove.
9759         * config/i386/mingw32.h (TARGET_VERSION): Set correctly for 64-bit.
9760         (EXTRA_OS_CPP_BUILTINS): Handle 64-bit.
9761         (STANDARD_INCLUDE_DIR): Handle TARGET_64BIT_DEFAULT.
9762         (STANDARD_STARTFILE_PREFIX_1): Likewise.
9763         * config/i386/unix.h (TARGET_SUBTARGET64_DEFAULT): New.
9764         * config.build (x86_64-*-mingw*): New host.
9765         * config.host (x86_64-*-mingw*): New host.
9766         * config.gcc (x86_64-*-mingw*): New target.
9767         * gthr-win32.h (__gthread_key_create): Mark dtor unused.
9768
9769 2007-03-30  Richard Henderson  <rth@redhat.com>
9770             Kai Tietz  <kai.tietz@onevision.com>
9771
9772         * c-pragma.c (struct def_pragma_macro_value): New.
9773         (struct def_pragma_macro): New.
9774         (pushed_macro_table): New.
9775         (dpm_hash, dpm_eq): New.
9776         (handle_pragma_push_macro, handle_pragma_pop_macro): New.
9777         (init_pragma): Install them.
9778         * doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
9779
9780 2007-03-30  Anatoly Sokolov <aesok@post.ru>
9781
9782         * config/avr/avr.c (avr_override_options): Clear
9783         'flag_delete_null_pointer_checks'.
9784
9785 2007-03-30  Paolo Carlini  <pcarlini@suse.de>
9786
9787         PR c++/26099
9788         * c-common.h (enum rid): Add RID_HAS_NOTHROW_ASSIGN,
9789         RID_HAS_NOTHROW_CONSTRUCTOR, RID_HAS_NOTHROW_COPY,
9790         RID_HAS_TRIVIAL_ASSIGN, RID_HAS_TRIVIAL_CONSTRUCTOR,
9791         RID_HAS_TRIVIAL_COPY, RID_HAS_TRIVIAL_DESTRUCTOR,
9792         RID_HAS_VIRTUAL_DESTRUCTOR, RID_IS_ABSTRACT, RID_IS_BASE_OF,
9793         RID_IS_CONVERTIBLE_TO, RID_IS_CLASS, RID_IS_EMPTY, RID_IS_ENUM,
9794         RID_IS_POD, RID_IS_POLYMORPHIC, RID_IS_UNION, as
9795         C++ extensions.
9796         * doc/extend.texi (Extensions to the C++ Language): Add Type Traits.
9797
9798 2007-03-30  Steven Bosscher  <steven@gcc.gnu.org>
9799
9800         * regmove.c: Move all of pass_stack_adjustments from here...
9801         * combine-stack-adj.c: ...to this new file.
9802         * Makefile.in: Add rules for combine-stack-adj.o.
9803
9804 2007-03-30  Zdenek Dvorak  <dvorakz@suse.cz>
9805
9806         PR tree-optimization/31383
9807         * tree-data-ref.c (affine_function_equal_p): Do not require the
9808         vectors to have the same length.
9809
9810 2007-03-30  Jan Hubicka  <jh@suse.cz>
9811
9812         PR middle-end/30700
9813         * dwarf2out.c (reference_to_unused): Ask cgraph for functions
9814         availablility; add more sanity checking; ask varpool only about
9815         VAR_DECL.
9816
9817 2007-03-29  Richard Henderson  <rth@redhat.com>
9818
9819         * unwind-generic.h (_sleb128_t, _uleb128_t): Don't use HAVE_LONG_LONG
9820         to decide, but __SIZEOF_LONG_LONG__.
9821
9822 2007-03-29  Richard Henderson  <rth@redhat.com>
9823
9824         * emutls.c (struct __emutls_array): New.
9825         (emutls_destroy): Use it instead of casting element 0 from void*.
9826         (__emutls_get_address): Likewise.
9827
9828 2007-03-29  Richard Henderson  <rth@redhat.com>
9829
9830         * varasm.c (initializer_constant_valid_p): Don't deny
9831         DECL_DLLIMPORT_P on functions.
9832
9833         * config/i386/cygming.h: Remove function declarations.
9834         (SUBTARGET_ENCODE_SECTION_INFO): Don't undef first.
9835         (ASM_OUTPUT_LABELREF): Remove.
9836         (COMMON_ASM_OP): Remove.
9837         (ASM_OUTPUT_COMMON): Remove.
9838         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New.
9839         (ASM_DECLARE_OBJECT_NAME): Use i386_pe_maybe_record_exported_symbol.
9840         (ASM_DECLARE_FUNCTION_NAME): Likewise.
9841         * config/i386/i386-interix.h (SUBTARGET_ENCODE_SECTION_INFO):
9842         Rename from TARGET_ENCODE_SECTION_INFO.
9843         * config/i386/netware.h: Likewise.
9844         * config/i386/i386-protos.h: Update.
9845         * config/i386/i386.c (ix86_function_ok_for_sibcall): Turn ifdef
9846         of TARGET_DLLIMPORT_DECL_ATTRIBUTES into straight if.
9847         (legitimate_constant_p): Reject dllimports.
9848         (dllimport_map, get_dllimport_decl): New.
9849         (legitimize_dllimport_symbol): New.
9850         (legitimize_address, ix86_expand_move): Use it.
9851         (TARGET_BINDS_LOCAL_P): Redefine for TARGET_DLLIMPORT_DECL_ATTRIBUTES.
9852         * config/i386/i386.h (DLL_IMPORT_EXPORT_PREFIX): Remove.
9853         (SYMBOL_FLAG_DLLIMPORT, SYMBOL_REF_DLLIMPORT_P): New.
9854         (SYMBOL_FLAG_DLLEXPORT, SYMBOL_REF_DLLEXPORT_P): New.
9855         * config/i386/predicates.md (constant_call_address_operand): Only
9856         accept symbols; reject dllimport_p symbols.
9857         * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Use
9858         i386_pe_maybe_record_exported_symbol.
9859         * config/i386/winnt.c (DLL_IMPORT_PREFIX, DLL_EXPORT_PREFIX): Remove.
9860         (i386_pe_determine_dllexport_p): Rename from i386_pe_dllexport_p.
9861         (i386_pe_determine_dllimport_p): Rename from i386_pe_dllimport_p;
9862         trust the setting of DECL_DLLIMPORT_P.
9863         (i386_pe_dllexport_name_p, i386_pe_dllimport_name_p): Remove.
9864         (i386_pe_mark_dllexport, i386_pe_mark_dllimport): Remove.
9865         (gen_stdcall_or_fastcall_suffix): Return NULL if no change required;
9866         tidy the argument scanning loop.
9867         (i386_pe_encode_section_info): Set SYMBOL_FLAG_DLLIMPORT and
9868         SYMBOL_FLAG_DLLEXPORT in SYMBOL_REF_FLAGS.
9869         (i386_pe_strip_name_encoding): Remove.
9870         (i386_pe_binds_local_p): New.
9871         (i386_pe_strip_name_encoding_full): Use default_strip_name_encoding.
9872         (i386_pe_output_labelref): Remove.
9873         (i386_pe_asm_output_aligned_decl_common): New.
9874         (i386_pe_maybe_record_exported_symbol): Rename from
9875         i386_pe_record_exported_symbol; check for dllexported symbols.
9876
9877 2007-03-29  Zack Weinberg  <zack@mrtock.ucsd.edu>
9878
9879         * gengtype.c (oprintf): Mostly revert changes from 2007-03-26;
9880         add comment explaining why vsnprintf cannot be used.
9881
9882 2007-03-29  Douglas Gregor  <doug.gregor@gmail.com>
9883
9884         PR tree-optimization/30666
9885         * tree.c (build_complex_type): When creating type names for DWARF2
9886         debug info, create TYPE_DECLs for TYPE_NAME instead of
9887         IDENTIFIER_NODEs.
9888         (build_common_tree_nodes_2): Use build_complex_type when building
9889         predefined complex types, to preserve canonical types.
9890
9891 2007-03-29  Steven Bosscher  <steven@gcc.gnu.org>
9892
9893         * ifcvt.c (struct noce_if_info): Add then_else_reversed field.
9894         (noce_get_alt_condition): Look at it to determine whether to
9895         reverse the condition or not.
9896         (noce_get_condition): Substitute the truth for lies.
9897         (noce_find_if_block): Set the then_else_reversed field.
9898
9899 2007-03-29  Lars Poeschel <larsi@wh2.tu-dresden.de>
9900
9901         * config/fr30/fr30.md (movdi): Do not accept immediates as the
9902         destination of this insn.
9903         * config/fr30/fr30.c (fr30_move_double): Use emit_move_insn rather
9904         than calling gen_rtx_SET directly.  Use r0 to hold the value of
9905         'address + 4' rather than a stack based temporary which can be
9906         mis-optimized away.
9907
9908 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
9909
9910         * config/s390/s390.c (s390_secondary_input_reload_class,
9911         s390_secondary_output_reload_class): Functions removed.
9912         (s390_secondary_reload): New function.
9913         (TARGET_SECONDARY_RELOAD): Target macro defined.
9914         * config/s390/s390.h (SECONDARY_INPUT_RELOAD_CLASS,
9915         SECONDARY_OUTPUT_RELOAD_CLASS): Macro definitions removed.
9916         * config/s390/s390.md ("reload_outti", "reload_outdi",
9917         "reload_indi", "reload_insi", "reload_out<mode>", "reload_in<mode>",
9918         "reload_out<mode>"): Expanders removed.
9919         ("reload<mode>_plus", "reload<mode>_nonoffmem_in",
9920         "reload<mode>_nonoffmem_out"): Expanders added.
9921
9922 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
9923
9924         * regmove.c (optimize_reg_copy_1): Don't perform DEST->SRC repair
9925         action if SRC->DEST replacement failed anyway.
9926
9927 2007-03-28  Mike Stump  <mrs@apple.com>
9928
9929         * config/darwin9.h (ASM_OUTPUT_ALIGNED_COMMON): Add.
9930         * config/darwin.h (MAX_OFILE_ALIGNMENT): Fix.
9931         * config/rs6000/darwin.h (ASM_OUTPUT_ALIGNED_COMMON): Removed #undef.
9932
9933 2007-03-28  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
9934
9935         * config.gcc: Accept barcelona as a variant of amdfam10.
9936         * config/i386/i386.c (override_options): Likewise.
9937         * doc/invoke.texi: Likewise.
9938
9939 2007-03-28  Eric Botcazou  <ebotcazou@adacore.com>
9940
9941         * tree-dfa.c (get_ref_base_and_extent): Do not expect positive
9942         offsets for BIT_FIELD_REF and COMPONENT_REF.
9943
9944 2007-03-28  Richard Guenther  <rguenther@suse.de>
9945
9946         * tree.c (is_global_var): Move ...
9947         * tree-flow-inline.h (is_global_var): ... here.
9948         * tree.h (is_global_var): Remove declaration.
9949
9950 2007-03-28  Uros Bizjak  <ubizjak@gmail.com>
9951
9952         * config/i386/i386.h (X86_TUNE_PROMOTE_HIMODE_IMUL): New tuning
9953         option.
9954         (TARGET_TUNE_PROMOTE_HIMODE_IMUL): New define. Use new tuning option.
9955         * config/i386/i386.c (ix86_tune_features): Initialize new
9956         tuning option.
9957         * config/i386/predicates.md (promotable_binary_operator): Use
9958         TARGET_TUNE_PROMOTE_HIMODE_IMUL.
9959
9960 2007-03-28  Grigory Zagorodnev <grigory_zagorodnev@linux.intel.com>
9961
9962         PR target/31380
9963         * config/i386/sse.md (uminv16qi3): Use UMIN instead of UMAX.
9964
9965 2007-03-28  Lars Poeschel <larsi@wh2.tu-dresden.de>
9966
9967         * config/fr30/fr30.md (movsi_internal): Change destination
9968         constraint from m to V and add m to the end.
9969
9970 2007-03-28  Christian Bruel  <christian.bruel@st.com>
9971
9972         * config/sh/sh.md (movsi_i): Fix type attribute.
9973
9974 2007-03-28  Christian Bruel  <christian.bruel@st.com>
9975
9976         * config/sh/sh.md (movsi_ie): Fix memory constraints attribute length.
9977         (movsf_ie): Likewise.
9978
9979 2007-03-28  Christian Bruel  <christian.bruel@st.com>
9980
9981         * config.gcc: Add sh4-300 to multilib.
9982         * config/sh/t-mlib-sh4-300: New file.
9983
9984 2007-03-28  Andreas Krebbel  <krebbel1@de.ibm.com>
9985
9986         * config/s390/s390.md ("fix_trunc<mode>di2"): New expander.
9987         ("fix_trunc<DFP:mode>di2_dfp"): New insn definition renamed from
9988         fix_trunc<mode>di2.
9989         ("fixuns_truncdddi2", "fixuns_trunctddi2"): Use
9990         fix_trunc<DFP:mode>di2_dfp instead of fix_trunc<mode>di2.
9991         ("fix_truncdfsi2", "fix_truncsfsi2", "fixuns_truncdddi2",
9992         "fixuns_trunctddi2"): Whitespace fix.
9993
9994 2007-03-28  Kaz Kojima  <kkojima@gcc.gnu.org>
9995
9996         * config/sh/sh.h (CALL_COOKIE_RET_TRAMP_SHIFT): Move after
9997         the definition of struct sh_args.
9998         (CALL_COOKIE_RET_TRAMP, CALL_COOKIE_STACKSEQ_SHIFT,
9999         CALL_COOKIE_INT_REG_GET): Likewise.
10000
10001 2007-03-28  Steven Bosscher  <steven@gcc.gnu.org>
10002
10003         * ifcvt.c (cond_exec_find_if_block): Return FALSE if no
10004         transformations are applied successfully.
10005
10006 2007-03-27  Douglas Gregor  <doug.gregor@gmail.com>
10007
10008         * tree.c (tree_contains_struct): Permit 512 tree codes.
10009         * tree.h (tree_contains_struct): Ditto.
10010         (MAX_TREE_CODES): Ditto.
10011         (struct tree_base): Make CODE 16 bits, instead of 8 bits. Add
10012         SPARE member to store remaining padding bits.
10013
10014 2007-03-27  Anatoly Sokolov <aesok@post.ru>
10015
10016         * config/avr/avr.c (avr_mcu_types): Move at90usb82 device to 'avr4'
10017         architecture.
10018
10019 2007-03-27  Janis Johnson  <janis187@us.ibm.com>
10020
10021         * configure.ac: Fix assembler test for powerpc*-linux decimal float.
10022         * configure: Regenerate.
10023
10024         * configure: Regenerate using the correct version of autoconf.
10025
10026 2007-03-27  Anatoly Sokolov  <aesok@post.ru>
10027
10028         * config/avr/avr.c (avr_hard_regno_mode_ok): Disallow QImode in stack
10029         pointer regs.
10030         * config/avr/avr.h (REGISTER_NAMES): Rename "__SPL__" and "__SPH__"
10031         regs to "__SP_L__" and "__SP_H__".
10032
10033 2007-03-27  Richard Guenther  <rguenther@suse.de>
10034
10035         * tree-dfa.c (get_ref_base_and_extent): Replace bit_offset and
10036         computations with it with a HOST_WIDE_INT variable.
10037
10038 2007-03-26  Mike Stump  <mrs@apple.com>
10039
10040         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Add
10041         objective-c-header, objective-c++-header and objc++-cpp-output
10042         support.
10043         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
10044
10045 2007-03-26  Richard Henderson  <rth@redhat.com>
10046
10047         PR target/31361
10048         * config/i386/i386.c (IX86_BUILTIN_PSLLDQ128, IX86_BUILTIN_PSLLW128,
10049         IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128, IX86_BUILTIN_PSRAW128,
10050         IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128, IX86_BUILTIN_PSRLD128,
10051         IX86_BUILTIN_PSRLQ128): New.
10052         (ix86_init_mmx_sse_builtins): Add them.
10053         (ix86_expand_builtin): Expand them.
10054         * config/i386/sse.md (ashr<mode>3, lshr<mode>3, ashl<mode>3): Make
10055         operand 2 be TImode.
10056         * config/i386/emmintrin.h (_mm_slli_epi64, _mm_srai_epi16,
10057         _mm_srai_epi32, _mm_srli_epi16, _mm_srli_epi32,
10058         _mm_srli_epi64): Mark __B const.
10059         (_mm_srli_si128, _mm_srli_si128): Fix disabled inline versions.
10060         (_mm_sll_epi16, _mm_sll_epi32, _mm_sll_epi64, _mm_sra_epi16,
10061         _mm_sra_epi32, _mm_srl_epi16, _mm_srl_epi32, _mm_srl_epi64): Use
10062         new two-vector shift builtins.
10063
10064 2007-03-26  Ian Lance Taylor  <iant@google.com>
10065
10066         PR tree-optimization/31345
10067         * tree-vrp.c (extract_range_from_binary_expr): Turn ranges like
10068         [+INF, +INF(OVF)] into VARYING.
10069
10070 2007-03-26  Zack Weinberg  <zackw@panix.com>
10071
10072         * gengtype-parse.c: New file.
10073         * gengtype-yacc.y: Delete.
10074         * gengtype-lex.l: Don't include gengtype-yacc.h.
10075         Define YY_DECL and yyterminate appropriately for recursive
10076         descent parser.  yylval is now a string out-parameter to yylex.
10077         (HWS, EOID): New shorthand.
10078         (IWORD): Add a couple more types.
10079         (yylex): Add a setup stanza.  Remove the complex rules for
10080         detecting GTY'ed types and typedefs; replace with simple
10081         keyword detectors.  Adjust everything for the changed
10082         definition of yylval.  Ignore all pp-directives, not just #define.
10083         (yyerror): Delete.
10084         (parse_file): Rename yybegin; do not call yyparse.
10085         (yyend): New.
10086         * gengtype.c (xasprintf): Export again.
10087         (this_file): New.  Use everywhere __FILE__ was being used.
10088         (get_lang_bitmap): Special case types defined in gengtype.c.
10089         (do_typedef, new_structure): Suppress definition of certain types.
10090         (new_structure): Improve diagnostics of duplicate definitions.
10091         Make sure location_s is associated with input.h.
10092         (nreverse_pairs, define_location_structures): New functions.
10093         (main): Improve tagging of kludge types.  Remove old kludges
10094         for input.h types; use define_location_structures.
10095         * gengtype.h: Update prototypes.  Define token codes here.
10096         * Makefile.in: Remove all references to gengtype-yacc.
10097         Add rules for gengtype-parse.o.  Adjust rules for gengtype-lex.o
10098         and gengtype.
10099         * bitmap.h (struct bitmap_head_def): Coalesce definitions,
10100         add GTY((skip)) to the field that's only conditionally there.
10101         * doc/install.texi: Document that Bison is no longer required
10102         unless building treelang.
10103
10104         * gengtype.c: Don't include gtyp-gen.h.
10105         (srcdir): Declare here.
10106         (base_files, lang_dir_names): Allocate dynamically.
10107         (gt_files, num_gt_files, num_lang_dirs): New globals.
10108         (measure_input_list, read_input_line, read_input_list)
10109         (set_lang_bitmap): New functions.
10110         (get_base_file_bitmap): Rename get_lang_bitmap and drastically
10111         simplify, relying on read_input_list to set up the bitmaps.
10112         (main): Arguments are no longer unused.  Check for correct number
10113         of command line arguments, set srcdir and srcdir_len, then call
10114         read_input_list, before doing anything else.  No need to worry
10115         about duplicates in main loop.
10116         * configure.ac: Simplify the calculation of all_gtfiles.
10117         Put language tags in there.  Don't set or substitute
10118         all_gtfiles_files_langs or all_gtfiles_files_frags.
10119         * Makefile.in: Revamp the way gengtype is invoked, now that it
10120         takes a file on its command line with a much simpler format.
10121         Remove or replace with gtyp-input.list all references to gtyp-gen.h.
10122         (GTFILES): Remove duplicates and C source files.
10123         * c-config-lang.in, cp/config-lang.in, objc/config-lang.in
10124         * objcp/config-lang.in: Add c-pragma.h to gtfiles.
10125         * configure: Regenerate.
10126
10127         * gengtype.h: Remove all type definitions to gengtype.c; leave
10128         only definitions of options_p, type_p, and pair_p as opaque
10129         pointers.  Update prototypes.
10130         * gengtype.c: Many type definitions moved here from gengtype.h.
10131         Consolidate type definitions at the top of the file.
10132         (xvasprintf): Delete.
10133         (xasprintf): Make static.
10134         (create_nested_pointer_option): Add 'next' parameter.
10135         (create_field_all, create_field_at): New functions.
10136         (create_field): Now a thin wrapper around create_field_all.
10137         (create_optional_field): Rename create_optional_field_ and add
10138         line argument.  Original name is now a macro which supplies
10139         __LINE__.
10140         (oprintf): Use vsnprintf directly.
10141         (close_output_files): Use fatal rather than perror/exit.
10142         (note_def_vec, note_def_vec_alloc): Use create_field_at.
10143         (main): Set progname.  Don't use exit.
10144         * gengtype-yacc.y (struct_fields): Use create_field_at.
10145         (option, optionseqopt): Delete.
10146         (optionseq): Consolidate productions from option here so we
10147         can use the first argument to create_option.
10148
10149         * gengtype-lex.l: Distinguish unions from structures in the
10150         token type.  Don't call find_structure; return the tag as a string.
10151         * gengtype-yacc.y: Add new token types ENT_TYPEDEF_UNION and
10152         ENT_UNION.  Type of these, ENT_TYPEDEF_STRUCT, and ENT_STRUCT is
10153         string.  Reorganize typedef_struct production accordingly.
10154         Use create_nested_ptr_option.
10155         * gengtype.c (create_nested_ptr_option): New function.
10156         * gengtype.h: Declare it.
10157
10158         * gengtype.h (struct type): Replace 'sc' with boolean, scalar_is_char.
10159         (string_type): Don't declare.
10160         (do_scalar_typedef): Declare.
10161         (create_scalar_type): Update prototype.
10162         * gengtype.c (string_type): Make static.
10163         (scalar_nonchar, scalar_char): New.
10164         (do_scalar_typedef): Export.  Always use scalar_nonchar for the type.
10165         (resolve_typedef): Use scalar_nonchar for error recovery.
10166         (create_scalar_type): Remove name_len field.  Return scalar_char
10167         or scalar_nonchar as appropriate.
10168         (adjust_field_type): Look at scalar_is_char boolean to decide whether
10169         to use string_type.
10170         (throughout): Use scalar_nonchar instead of calling
10171         create_scalar_type, whenever possible.
10172         (main): Initialize scalar_char and scalar_nonchar before calling
10173         gen_rtx_next.
10174         * gengtype-lex.l: Adjust for removal of second argument to
10175         create_scalar_type.  Use yylval.s instead of yylval.t when
10176         returning SCALAR.
10177         * gengtype-yacc.y: Type of SCALAR is string.  Call
10178         create_scalar_type from type:SCALAR rule.  Adjust for removal of
10179         second argument to create_scalar_type.
10180
10181         * vec.h: Remove all #if IN_GENGTYPE blocks.
10182         Add comment saying that changes may require adjustments to gengtype.
10183         * gengtype.c: Don't include coretypes.h or tm.h.
10184         Add comment to inclusion of errors.h.
10185         (note_def_vec, note_def_vec_alloc): New functions.
10186         * gengtype.h: Declare new functions.
10187         * gengtype-lex.l: Don't include coretypes.h.
10188         (YY_INPUT, macro_input, push_macro_expansion, mangle_macro_name):
10189         Delete.
10190         (update_lineno): Remove unnecessary prototype.
10191         (DEF_VEC_* rules): Simplify using note_def_vec / note_def_vec_alloc.
10192         (VEC rule): Just return VEC_TOKEN.
10193         * gengtype-yacc.y (VEC_TOKEN): New token type.
10194         (type): Add a production for VEC(a,b).
10195         * Makefile.in: Update dependencies.
10196
10197         * gengtype-lex.l: Remove rules for parsing pointer-to-function
10198         typedefs that use the old PARAMS macro.
10199
10200         * gengtype-lex.l: Remove all rules and states relating to yacc
10201         input files.
10202         * gengtype-yacc.y: Similarly.
10203         * gengtype.c (note_yacc_type): Delete function.
10204         * gengtype.h: Update prototypes.
10205
10206 2007-03-26  Joseph Myers  <joseph@codesourcery.com>
10207
10208         * tree-pretty-print.c (dump_generic_node): Report precision of
10209         unnamed integer types.
10210
10211 2007-03-26  Steven Bosscher  <steven@gcc.gnu.org>
10212
10213         * ifcvt.c (noce_try_store_flag_constants): Don't check
10214         no_new_pseudos here.
10215         (noce_try_store_flag_constants): Don't check no_new_pseudos.
10216         (noce_try_addcc, noce_try_store_flag_mask, noce_try_cmove_arith,
10217         noce_try_cmove_arith, noce_try_minmax, noce_try_abs,
10218         noce_try_sign_mask): Likewise.
10219         (if_convert): Check no_new_pseudos here.
10220
10221         (cond_exec_process_if_block, noce_process_if_block, find_if_block):
10222         Remove prototypes.
10223         (struct noce_if_info): Add then_bb, else_bb, join_bb members.
10224         (noce_get_condition): Handle new then_else_reversed argument.
10225         (noce_init_if_info): Remove, fold into noce_find_if_block.
10226         (noce_process_if_block): Take a struct noce_if_info as the
10227         argument.  Don't set up one based on ce_if_info.  Update pointer
10228         references accordingly.
10229         (cond_move_process_if_block): Likewise.
10230         (process_if_block): Removed.
10231         (find_if_block): Removed.  Move functionality two new functions,
10232         noce_find_if_block and cond_exec_find_if_block.
10233         (noce_find_if_block): New function.  Be aware of IF-THEN-JOIN
10234         blocks and the symmetric IF-ELSE-JOIN case.
10235         (cond_exec_find_if_block): Also new function mostly based on old
10236         find_if_block and process_if_block.
10237         (find_if_header): Replace find_if_block call with separately
10238         guarded calls to noce_find_if_block and cond_exec_find_if_block.
10239         (find_cond_trap): Update noce_get_condition call.
10240         (dead_or_predicable): Likewise.
10241
10242 2007-03-26  Jakub Jelinek  <jakub@redhat.com>
10243
10244         * config/i386/i386.c (IX86_BUILTIN_CMPNEPD, IX86_BUILTIN_CMPNESD):
10245         Remove.
10246         (IX86_BUILTIN_PSLLW128, IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128,
10247         IX86_BUILTIN_PSRAW128, IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128,
10248         IX86_BUILTIN_PSRLD128, IX86_BUILTIN_PSRLQ128): Remove.
10249         (ix86_init_mmx_sse_builtins): Remove v8hi_ftype_v8hi_v2di and
10250         v4si_ftype_v4si_v2di.  Remove __builtin_ia32_psllw128,
10251         __builtin_ia32_pslld128, __builtin_ia32_psllq128,
10252         __builtin_ia32_psrlw128, __builtin_ia32_psrld128,
10253         __builtin_ia32_psrlq128, __builtin_ia32_psraw128 and
10254         __builtin_ia32_psrad128 builtins.
10255
10256 2007-03-26  Uros Bizjak  <ubizjak@gmail.com>
10257
10258         * reg-stack.c (replace_reg): Use IN_RANGE macro in gcc_assert().
10259         * config/i386/constraints.md
10260         (define_constraint "I"): Use IN_RANGE macro.
10261         (define_constraint "J"): Ditto.
10262         (define_constraint "K"): Ditto.
10263         (define_constraint "M"): Ditto.
10264         (define_constraint "N"): Ditto.
10265         (define_constraint "O"): Ditto.
10266         * config/i386/predicates.md
10267         (define_predicate "register_no_elim_operand"): Use IN_RANGE macro.
10268         (define_predicate "const_0_to_3_operand"): Ditto.
10269         (define_predicate "const_0_to_7_operand"): Ditto.
10270         (define_predicate "const_0_to_15_operand"): Ditto.
10271         (define_predicate "const_0_to_63_operand"): Ditto.
10272         (define_predicate "const_0_to_255_operand"): Ditto.
10273         (define_predicate "const_1_to_31_operand"): Ditto.
10274         (define_predicate "const_2_to_3_operand"): Ditto.
10275         (define_predicate "const_4_to_7_operand"): Ditto.
10276
10277 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
10278
10279         * config/rs6000/rs6000.c (rs6000_emit_prologue): Always clobber LR
10280         in SImode for save_world.
10281         * config/rs6000/altivec.md (save_world, restore_world): Convert to
10282         LR hard reg.
10283
10284 2007-03-25  Dorit Nuzman  <dorit@il.ibm.com>
10285
10286         PR tree-optimization/30784
10287         * fold-const.c (fold_ternary): Handle CONSTRUCTOR in case
10288         BIT_FIELD_REF.
10289
10290 2007-03-25  Revital Eres  <eres@il.ibm.com>
10291
10292         * tree-if-conv.c (if_convertible_gimple_modify_stmt_p):
10293           Fold movement_possibility function into it.
10294
10295 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
10296
10297         * config/rs6000/darwin.md (load_macho_picbase): Ignore operand 0.
10298         (load_macho_picbase_{si,di}): Convert to LR hard reg.
10299         (call_indirect_nonlocal_darwin64): Same.
10300         (call_nonlocal_darwin64): Same.
10301         (call_value_indirect_nonlocal_darwin64): Same.
10302         (call_value_nonlocal_darwin64): Same.
10303         (sibcall_nonlocal_darwin64): Same.
10304         (sibcall_value_nonlocal_darwin64): Same.
10305         (sibcall_symbolic_64): Same.
10306         (sibcall_value_symbolic_64): Same.
10307         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Remove
10308         LR pseudo.
10309         (rs6000_emit_load_toc_table): Same.
10310         * config/rs6000/altivec.md (restore_world): Convert to LR hard reg.
10311         * config/rs6000/rs6000.md (mulh_call): Convert to LR hard reg.
10312         (mull_call): Same.
10313         (divss_call): Same.
10314         (divus_call): Same.
10315         (quoss_call): Same.
10316         (quous_call): Same.
10317         (load_toc_v4_pic_si): Same
10318         (load_toc_v4_PIC_1): Same.
10319         (load_toc_v4_PIC_1b): Same.
10320         (call_indirect_aix{32,64}): Same.
10321         (call_value_indirect_aix{32,64}): Same.
10322         (call): Same.
10323         (call_value): Same.
10324         (call_local{32,64}): Same.
10325         (call_value_local{32,64}): Same.
10326         (call_indirect_nonlocal_aix{32,64}): Same.
10327         (call_nonlocal_aix{32,64}): Same.
10328         (call_value_indirect_nonlocal_aix{32,64}): Same.
10329         (call_value_nonlocal_aix{32,64}): Same.
10330         (call_indirect_nonlocal_sysv<mode>): Same.
10331         (call_nonlocal_sysv<mode>): Same.
10332         (call_value_indirect_nonlocal_sysv<mode>): Same.
10333         (call_value_nonlocal_sysv<mode>): Same.
10334         (sibcall): Same.
10335         (sibcall_local{32,64}): Same.
10336         (sibcall_value_local{32,64}): Same.
10337         (sibcall_nonlocal_aix{32,64}): Same.
10338         (sibcall_value_nonlocal_aix{32,64}): Same.
10339         (sibcall_nonlocal_sysv<mode>): Same.
10340         (sibcall_value): Same.
10341         (sibcall_value_nonlocal_sysv<mode>): Same.
10342
10343 2007-03-24  Paul Brook  <paul@codesourcery.com>
10344
10345         * config/arm/lib1funcs.asm (div0): Use ARM_FUNC_START and do_push.
10346         * config/arm/linux-eabi.h: Remove legacy syscall hack.
10347
10348 2007-03-24  Richard Henderson  <rth@redhat.com>
10349
10350         * config/ia64/constraints.md: New file.
10351         * config/ia64/predicates.md: Replace CONST_OK_FOR_? with
10352         satisfies_constraint_?.
10353         * config/ia64/ia64.c (ia64_move_ok, ia64_legitimate_constant_p,
10354         ia64_reload_gp, spill_restore_mem, ia64_expand_prologue,
10355         ia64_expand_epilogue, ia64_split_return_addr_rtx, ia64_rtx_costs,
10356         ia64_output_mi_thunk): Likewise.
10357         (ia64_const_ok_for_letter_p): Remove.
10358         (ia64_const_double_ok_for_letter_p): Remove.
10359         (ia64_extra_constraint): Remove.
10360         * config/ia64/ia64.h (REG_CLASS_FROM_LETTER): Remove.
10361         (CONST_OK_FOR_I, CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L,
10362         CONST_OK_FOR_M, CONST_OK_FOR_N, CONST_OK_FOR_O, CONST_OK_FOR_P,
10363         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_G,
10364         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT,
10365         EXTRA_MEMORY_CONSTRAINT): Remove.
10366         * config/ia64/ia64.md: Include constriants.md.  Replace
10367         CONST_OK_FOR_? with satisfies_constraint_?.
10368
10369 2007-03-23  Michael Meissner  <michael.meissner@amd.com>
10370             H.J. Lu  <hongjiu.lu@intel.com>
10371
10372         * config/dfp-bit.h (DPD_BID_NAME): New macro to give either the
10373         DPD or BID name.
10374         (name macros): Use DPD_BID_NAME to convert names properly.
10375
10376         * optabs.c (DECIMAL_PREFIX): Prefix string to use for the current
10377         decimal floating point format.
10378         (init_floating_libfuncs): Change decimal functions so that they
10379         have a "bid_" prefix if the decimal system uses the BID format,
10380         and "dpd_" prefix if the decimal system uses the DPD format.
10381         (init_interclass_conv_libfuncs): Ditto.
10382         (init_intraclass_conv_libfuncs): Ditto.
10383
10384         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
10385         using the BID format.
10386
10387         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
10388         whether we are using the BID decimal format.
10389         * configure: Regenerate.
10390
10391         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
10392         the compiler has decimal floating point enabled.  Define
10393         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
10394         instead of DPD.
10395
10396         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
10397         using the BID format.
10398
10399         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
10400         whether we are using the BID decimal format.
10401         * configure: Regenerate.
10402
10403         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
10404         the compiler has decimal floating point enabled.  Define
10405         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
10406         instead of DPD.
10407
10408         * doc/install.texi (--enable-decimal-float): Document BID and DPD
10409         options, and that it is enabled for i386/x86_64 systems.
10410
10411         * Makefile.in (enable_decimal_float): New.
10412         (DECNUMFMT): New.
10413         (DECNUMINC): Add  -I$(DECNUMFMT).
10414         (DECNUM_H): Mov decimal32.h, decimal64.h and decimal128.h
10415         to $(DECNUMFMT) from $(DECNUM).
10416
10417         * configure.ac: Support * --enable-decimal-float={no,yes,bid,dpd}.
10418         Substitute enable_decimal_float.
10419         * configure: Regenerated.
10420
10421         PR other/30529
10422         * config/dfp-bit.c (__dec_byte_swap): Use uint32_t instead of
10423         unsigned long.
10424
10425         * configure.ac: Enable decimal float for x86_64-*-linux*.
10426         * configure: Regenerated.
10427
10428         PR other/30530
10429         * dfp.c (decimal_real_arithmetic): Use decimal128FlipSign and
10430         decimal128ClearSign to flip and clear the sign bit in decimal128.
10431         (decimal_real_maxval): Set decimal128SetSign to set the sign
10432         bit in decimal128.
10433
10434 2007-03-23  Ian Lance Taylor  <iant@google.com>
10435
10436         * fold-const.c (fold_binary): Correct warning for X - c >= X.
10437
10438 2007-03-23  Ian Lance Taylor  <iant@google.com>
10439
10440         * tree-dump.c (dump_files): Correct comment.
10441
10442 2007-03-23  Ian Lance Taylor  <iant@google.com>
10443
10444         * tree-vrp.c (operand_less_p): Ignore fold overflow warnings.
10445
10446 2007-03-23  Steven Bosscher  <steven@gcc.gnu.org>
10447
10448         * tracer.c (tracer): Don't take FLAGS argument.  Assert we are
10449         in cfglayout mode.  Don't go into and out of cfglayout mode.
10450         Link the blocks in the order of the constructed traces.
10451         (rest_of_handle_tracer): Adjust call to tracer.
10452         * loop-init.c (rtl_loop_init): Assert we are in cfglayout mode.
10453         Don't go into cfglayout mode.
10454         (rtl_loop_done): Don't go out of cfglayout mode.
10455         * cfglayout.c (relink_block_chain): New function, split out from...
10456         (fixup_reorder_chain): ...here.  Remove redundant checking.
10457         (cfg_layout_finalize): Don't clear the header, footer, and aux
10458         fields here, move the code to do so to relink_block_chain.  Likewise
10459         for free_original_copy_tables.
10460         * rtl.h (tracer): Update prototype.
10461         * bb-reorder.c (reorder_basic_blocks): Don't take FLAGS argument.
10462         Assert we are in cfglayout mode.  Don't go into and out of cfglayout
10463         mode.  Use relink_block_chain to serialize the CFG according to the
10464         new basic block order.  Move targetm.cannot_modify_jumps_p check from
10465         here...
10466         (gate_handle_reorder_blocks): ...to here.
10467         (duplicate_computed_gotos): Move targetm.cannot_modify_jumps_p check
10468         from here...
10469         (gate_duplicate_computed_gotos): ...to here.
10470         (rest_of_handle_reorder_blocks): Don't see if anything has changed,
10471         something always changes when going into and out of cfglayout mode.
10472         Perform an expensive cfg cleanup while going into cfglayout mode.
10473         Always update liveness information on HAVE_conditional_execution
10474         targets.  Reserialize the basic blocks and go out of cfglayout mode.
10475         * reg-stack.c: Include cfglayout.h.
10476         (rest_of_handle_stack_regs): Go into and out of cfglayout mode around
10477         the call to reorder_basic_blocks.
10478         * basic-block.h (reorder_basic_blocks): Update prototype.
10479         (relink_block_chain): New prototype.
10480         * passes.c (pass_outof_cfg_layout_mode): Move after cse2.
10481
10482 2007-03-23  Joseph Myers  <joseph@codesourcery.com>
10483
10484         * config/mips/mips.md (type, hazard, *movdi_32bit,
10485         *movdi_gp32_fp64, *movdi_64bit, *movsi_internal, movcc,
10486         *movhi_internal, *movqi_internal, *movsf_hardfloat,
10487         *movdf_hardfloat_64bit, *movdf_hardfloat_32bit, *movdf_softfloat,
10488         movv2sf_hardfloat_64bit, load_df_low, load_df_high, store_df_high,
10489         mthc1, mfhc1): Change xfer instruction type to mfc and mtc, as
10490         applicable.
10491         (movcc): Change first xfer to multi.
10492         * config/mips/24k.md, config/mips/4100.md, config/mips/4300.md,
10493         config/mips/5000.md, config/mips/5400.md, config/mips/5500.md,
10494         config/mips/5k.md, config/mips/7000.md, config/mips/9000.md,
10495         config/mips/generic.md: Change reservations using "xfer" to use
10496         "mfc,mtc".
10497         * config/mips/sb1.md (ir_sb1_mtxfer): Use "mtc" instead of
10498         using match_operand.
10499         (ir_sb1_mfxfer): Use "mfc" instead of using match_operand.
10500         * config/mips/sr71k.md (ir_sr70_xfer_from): Use "mfc" instead of
10501         examining mode.
10502         (ir_sr70_xfer_to): Use "mtc" instead of examining mode.
10503
10504 2007-03-22  Richard Henderson  <rth@redhat.com>
10505
10506         * config/i386/i386.c: Remove unnecessary function declarations.
10507         Move targetm definition, and all related macros, to the end of
10508         the file.  Resort some functions to put definitions before uses.
10509         (ix86_attribute_table): Make static.  Move to end of file.
10510         (ix86_gimplify_va_arg): Make static.
10511
10512 2007-03-22  Richard Henderson  <rth@redhat.com>
10513
10514         * config/i386/i386.c (ix86_function_regparm): Early exit for 64-bit;
10515         don't increase local_regparm with force_align_arg_pointer check.
10516         (ix86_function_sseregparm): Assert 32-bit.
10517         (type_has_variadic_args_p): New.
10518         (ix86_return_pops_args): Early exit for 64-bit.  Reindent; use
10519         type_has_variadic_args_p.
10520         (ix86_function_arg_regno_p): Use == 0 instead of ! test for eax.
10521         (init_cumulative_args): Remove TARGET_DEBUG_ARG.  Remove zero_cum;
10522         use memset instead.  Do maybe_vaarg check first; skip attribute
10523         tests if true; skip attribute tests for 64-bit.
10524         (construct_container): Remove TARGET_DEBUG_ARG.
10525         (function_arg_advance_32, function_arg_advance_64): Split out ...
10526         (function_arg_advance): ... from here.
10527         (function_arg_32, function_arg_64): Split out ...
10528         (function_arg): ... from here.
10529         (ix86_pass_by_reference): Tidy.
10530         (ix86_function_value_regno_p): Rearrange w/ switch on regno.
10531         (function_value_32): New, from parts of ix86_function_value
10532         and ix86_value_regno.
10533         (function_value_64): New, from parts of ix86_function_value
10534         and ix86_libcall_value.
10535         (ix86_function_value_1): New.
10536         (ix86_function_value, ix86_libcall_value): Use it.
10537         (return_in_memory_32, return_in_memory_64): Split out ...
10538         (ix86_return_in_memory): ... from here.
10539         (ix86_struct_value_rtx): Skip for 64-bit.
10540         (ix86_libcall_value, ix86_value_regno): Remove.
10541         (setup_incoming_varargs_64): Split out ...
10542         (ix86_setup_incoming_varargs): ... from here.
10543         (ix86_va_start): Remove TARGET_DEBUG_ARG.
10544         (legitimate_address_p, legitimize_address): Remove TARGET_DEBUG_ADDR.
10545         * config/i386/i386-protos.h (ix86_function_value): Remove.
10546         * config/i386/i386.opt (TARGET_DEBUG_ADDR, TARGET_DEBUG_ARG): Remove.
10547
10548 2007-03-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10549
10550         PR other/23572
10551         * c-lex.c (interpret_float): On overflow, emit pedantic warning if
10552         infinities not supported, otherwise emit warning if -Woverflow. On
10553         underflow, emit warning if -Woverflow.
10554         * real.c (real_from_string): Return -1 if underflow, +1 if overflow
10555         and 0 otherwise.
10556         * real.h (real_from_string): Update declaration
10557
10558 2007-03-22  Kai Tietz  <kai.tietz@onevision.com>
10559             Richard Henderson  <rth@redhat.com>
10560
10561         * defaults.h (OUTGOING_REG_PARM_STACK_SPACE): Provide default.
10562         * calls.c (compute_argument_block_size, expand_call,
10563         emit_library_call_value_1): Don't ifdef OUTGOING_REG_PARM_STACK_SPACE.
10564         * expr.c (block_move_libcall_safe_for_call_parm): Likewise.
10565         * function.c (STACK_DYNAMIC_OFFSET): Likewise.
10566         * doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Update.
10567         * config/alpha/unicosmk.h, config/bfin/bfin.h, config/iq2000/iq2000.h,
10568         config/mips/mips.h, config/mn10300/mn10300.h, config/mt/mt.h,
10569         config/pa/pa.h, config/rs6000/rs6000.h, config/score/score.h,
10570         config/spu/spu.h, config/v850/v850.h (OUTGOING_REG_PARM_STACK_SPACE):
10571         Set to 1.
10572
10573 2007-03-22  Joseph Myers  <joseph@codesourcery.com>
10574
10575         * c-incpath.c (add_sysroot_to_chain): New.
10576         (merge_include_chains): Add sysroot argument.  Call
10577         add_sysroot_to_chain if sysrooted.
10578         (register_include_chains): Update call to merge_include_chains.
10579         * doc/cppopts.texi: Document use of '=' in include directory
10580         arguments.
10581
10582 2007-03-22  Uros Bizjak  <ubizjak@gmail.com>
10583
10584         * config/i386/i386.md (cmp<mode>): Rename from cmpsf and cmpdf.
10585         Macroize expander using SSEMODEF mode macro.  Use SSE_FLOAT_MODE_P.
10586         (*cmpfp_<mode>): Rename from *cmpfp_sf and *cmpfp_df. Macroize
10587         insn pattern using X87MODEF12 mode macro.
10588
10589 2007-03-21  Seongbae Park <seongbae.park@gmail.com>
10590
10591         * regmove.c (regmove_optimize): Use reg_mentioned_p
10592         instead of reg_overlap_mentioned_p for DST.
10593
10594 2007-03-21  Mike Stump  <mrs@apple.com>
10595
10596         * c.opt: Fixup for Objective-C/C++.
10597
10598 2007-03-21  Steve Ellcey  <sje@cup.hp.com>
10599
10600         * explow.c (convert_memory_address): Fold memory reference when
10601         POINTERS_EXTEND_UNSIGNED < 0
10602
10603 2007-03-21  Richard Henderson  <rth@redhat.com>
10604
10605         PR target/31245
10606         * config/i386/emmintrin.h (__m128i, __m128d): Mark may_alias.
10607         * config/i386/mmintrin.h (__m64): Likewise.
10608         * config/i386/xmmintrin.h (__m128): Likewise.
10609
10610 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
10611
10612         * config/vxworks.h (VXWORKS_ADDITIONAL_CPP_SPEC): Remove -D options.
10613         (VXWORKS_OS_CPP_BUILTINS): Define.
10614         * config/i386/vxworks.h (VXWORKS_CPU_DEFINE): Fold into...
10615         (TARGET_OS_CPP_BUILTINS): ...here.  Use VXWORKS_OS_CPP_BUILTINS.
10616
10617 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
10618
10619         * rtl.h (constant_pool_reference_p): Delete.
10620         (find_constant_src): Declare.
10621         * rtlanal.c (find_constant_src): New function.
10622         * simplify-rtx.c (constant_pool_reference_p): Delete.
10623         * config/i386/i386.md: Use find_constant_src instead of
10624         constant_pool_reference_p/avoid_constant_pool_reference pairs.
10625
10626 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
10627
10628         * doc/invoke.texi (-fpie, -fPIE): Document __pie__ and __PIE__.
10629         * c-cppbuiltin.c (c_cpp_builtins): Define them.
10630
10631 2007-03-20  Mark Mitchell  <mark@codesourcery.com>
10632
10633         * config/arm/elf.h (TARGET_ASM_DESTRUCTOR): Define.
10634         * config/arm/arm.c (arm_elf_asm_cdtor): New function.
10635         (arm_elf_asm_constructor): Use it.
10636         (arm_elf_asm_destructor): New function.
10637
10638 2007-03-20  Bernd Schmidt  <bernd.schmidt@analog.com>
10639
10640         * jump.c (mark_jump_label): Treat SEQUENCE specially.
10641
10642 2007-03-20  Nathan Sidwell  <nathan@codesourcery.com>
10643
10644         * config/vxlib.c (tls_delete_hook): Use TCB for kernel tasks.
10645
10646 2007-03-19  Andrew Haley  <aph@redhat.com>
10647
10648         PR tree-optimization/31264
10649         * tree-vrp.c (register_edge_assert_for_1): Don't look though
10650         VIEW_CONVERT_EXPRs.
10651
10652 2007-03-19  Paolo Bonzini  <bonzini@gnu.org>
10653
10654         PR rtl-optimization/30907
10655         * fwprop.c (forward_propagate_into): Never propagate inside a loop.
10656         (fwprop_init): Always call loop_optimizer_initialize.
10657         (fwprop_done): Always call loop_optimizer_finalize.
10658         (fwprop): We always have loop info now.
10659         (gate_fwprop_addr): Remove.
10660         (pass_fwprop_addr): Use gate_fwprop as gate.
10661
10662         PR rtl-optimization/30841
10663         * df-problems.c (df_ru_local_compute, df_rd_local_compute,
10664         df_chain_alloc): Call df_reorganize_refs unconditionally.
10665         * df-scan.c (df_rescan_blocks, df_reorganize_refs): Change
10666         refs_organized to refs_organized_size.
10667         (df_ref_create_structure): Use refs_organized_size instead of
10668         bitmap_size if refs had been organized, and keep refs_organized_size
10669         up-to-date.
10670         * df.h (struct df_ref_info): Change refs_organized to
10671         refs_organized_size.
10672         (DF_DEFS_SIZE, DF_USES_SIZE): Use refs_organized_size instead of
10673         bitmap_size.
10674
10675 2007-03-19  Mark Mitchell  <mark@codesourcery.com>
10676
10677         * except.c (output_function_exception_table): Do not reference the
10678         EH personality routine for functions that do not require an
10679         exception table.
10680
10681 2007-03-20  Jakub Jelinek  <jakub@redhat.com>
10682
10683         PR c/30762
10684         * c-typeck.c (convert_for_assignment): Call comptypes for
10685         RECORD_TYPE or UNION_TYPE.
10686
10687         PR inline-asm/30505
10688         * reload1.c (reload): Do invalid ASM checking after
10689         cleanup_subreg_operands.
10690
10691 2007-03-19  Jeff Law  <law@redhat.com>
10692
10693         * tree-cfg.c (find_taken_edge): Tighten conditions for
10694         optimizing computed gotos.
10695
10696 2007-03-19  Michael Matz  <matz@suse.de>
10697
10698         * builtins.c (expand_builtin_sync_operation,
10699         expand_builtin_compare_and_swap,
10700         expand_builtin_lock_test_and_set): Care for extending CONST_INTs
10701         correctly.
10702
10703         * config/i386/sync.md (sync_double_compare_and_swapdi_pic,
10704         sync_double_compare_and_swap_ccdi_pic): Use "SD" as constraint
10705         for operand 3.
10706
10707 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
10708
10709         * doc/tm.texi: Add brackets around the return type of
10710         TARGET_SECONDARY_RELOAD.
10711
10712 2007-03-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10713         Richard Guenther  <rguenther@suse.de>
10714
10715         PR tree-optimization/31254
10716         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
10717         Use handled_component_p () where appropriate.  Continue
10718         propagating into the rhs if we propagated into an INDIRECT_REF
10719         on the lhs.
10720
10721 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
10722
10723         * config/s390/s390.md (op_type attribute): RRR instruction type added.
10724         (FP, DFP, SD_SF, DD_DF, TD_TF): New mode macros.
10725         (xde, xdee): Mode attributes adjusted to support DFP modes.
10726         (RRer, f0, op1, Rf, bt, bfp, HALF_TMODE): New mode attributes added.
10727         ("cmp<mode>", "*cmp<mode>_css_0", "*cmp<mode>_ccs", TF move splitters,
10728         DF move splitters, "floatdi<mode>2", "add<mode>3", "*add<mode>3",
10729         "*add<mode>3_cc", "*add<mode>3_cconly", "sub<mode>3", "*sub<mode>3",
10730         "*sub<mode>3_cc", "*sub<mode>3_cconly", "mul<mode>3", "*mul<mode>3",
10731         "div<mode>3", "*div<mode>3", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
10732         "*negabs<mode>2_nocc", "copysign<mode>3"): Adjusted to support DFP
10733         numbers.
10734         ("*movtf_64", "*movtf_31", "*movdf_64dfp", "*movdf_64", "*movdf_31",
10735         "movsf"): Insn definitions removed.
10736         ("*mov<mode>_64", "*mov<mode>_31", "mov<mode>", "*mov<mode>_64dfp",
10737         "*mov<mode>_64", "*mov<mode>_31", "fix_trunc<DFP:mode>di2",
10738         "trunctddd2", "truncddsd2", "extendddtd2", "extendsddd2"): Insn
10739         definitions added.
10740         ("fixuns_truncdddi2", "fixuns_trunctddi2", "mov<mode>",
10741         "reload_in<mode>", "reload_out<mode>"): Expander added.
10742         ("movtf", "movdf", "reload_outtf", "reload_outdf", "reload_intf"):
10743         Expander removed.
10744
10745 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
10746
10747         * config/s390/s390.md: Only non-functional changes.  Renamed
10748         FPR mode macro to BFP all over the file.
10749
10750 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
10751
10752         * config/s390/s390.md (UNSPEC_COPYSIGN): New constant.
10753         (op_type attribute): RRF instruction type added.
10754         (fT0): New mode attribute.
10755         ("*movdi_64dfp", "*movdf_64dfp", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
10756         "*negabs<mode>2_nocc", "copysign<mode>3"): Insn definitions added.
10757         * config/s390/s390.h (SECONDARY_MEMORY_NEEDED): Due to a new
10758         instruction no secondary memory is needed when moving DFmode values
10759         between GPRs and FPRs.
10760
10761 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
10762
10763         * config/s390/s390.opt ("mhard-float", "msoft-float"): Bit value
10764         inverted and documentation adjusted.
10765         ("mhard-dfp", "msoft-dfp"): New options.
10766         * config/s390/s390.c (s390_handle_arch_option): New architecture
10767         switch: z9-ec.
10768         (override_options): Sanity checks for the new options added.
10769         * config.gcc: New architecture switch: z9-ec.
10770         * config/s390/s390.h (processor_flags): PF_DFP added.
10771         (TARGET_CPU_DFP, TARGET_DFP): Macro definitions added.
10772         (TARGET_DEFAULT): Due to the s390.opt changes hard float is enabled
10773         when the bit is NOT set so remove it from the defaults.
10774
10775 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
10776
10777         * genemit.c (main): Print include statement for dfp.h.
10778         * dfp.h (decimal_real_arithmetic): Hide prototype if tree_code enum
10779         is not available.
10780
10781 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
10782
10783         * config/cris/t-elfmulti (EXTRA_MULTILIB_PARTS): Do not define here.
10784
10785 2007-03-19  Kaz Kojima  <kkojima@gcc.gnu.org>
10786
10787         PR target/31022
10788         * config/sh/sh.c (sh_adjust_cost): Use the result of single_set
10789         instead of PATTERN.
10790
10791 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
10792
10793         * pa.c (output_deferred_plabels, output_bb, output_millicode_call,
10794         attr_length_call, output_call, output_indirect_call): Cleanup
10795         formatting of targetm calls.
10796
10797 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
10798
10799         * config/cris/cris.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define to 1.
10800
10801 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
10802
10803         * pa.md: Add fpstore_load and store_fpload instruction types.  Provide
10804         reservation, bypass and anti-bypass descriptions for these
10805         instructions.  Update move patterns.
10806         * pa.c (hppa_fpstore_bypass_p): Check for both TYPE_FPSTORE_LOAD and
10807         TYPE_FPSTORE.
10808
10809 2007-03-18  Dorit Nuzman  <dorit@il.ibm.com>
10810
10811         * tree-vect-transform.c (get_initial_def_for_induction): Replace
10812         GET_MODE_NUNITS with TYPE_VECTOR_SUBPARTS.
10813         (get_initial_def_for_reduction): Likewise.
10814
10815 2007-03-16  Daniel Berlin  <dberlin@dberlin.org>
10816
10817         Fix PR tree-optimization/29922
10818         * tree-ssa-pre.c (bb_bitmap_sets): Remove RVUSE_* members.
10819         (get_representative): Removed.
10820         (value_dies_in_block_x): Update for rvuse removal.
10821         (valid_in_sets): Update for renaming of vuses_dies_in_block_x.
10822         (compute_antic_aux): Handle when PHI nodes appear in
10823         non-single-successors.
10824         (dump_bitmap_of_names): Removed.
10825         (compute_antic_safe): Renamed and removed rvuse calculation.
10826         Calculate only antic safe.
10827         (insert_into_preds_of_block): Remove assert.
10828         (execute_pre): Update for renamed functions.
10829         (defer_or_phi_translate_block): New function.
10830
10831 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
10832
10833         * config/arm/arm.c, config/arm/thumb2.md, config/m68k/m68k.c,
10834         config/spu/spu.c, omega.h, passes.c, predict.c: Fix comment
10835         typos.
10836         * doc/cpp.texi, doc/extend.texi, doc/invoke.texi: Fix typos.
10837         Follow spelling conventions.
10838
10839         * tree-data-ref.h: Remove the prototype for analyze_array.
10840
10841 2007-03-17  Dorit Nuzman  <dorit@il.ibm.com>
10842
10843         PR tree-optimization/31041
10844         * tree-vect-transform.c (get_initial_def_for_induction): Call
10845         force_gimple_operand.
10846
10847 2007-03-17  Olga Golovanevsky  <olga@il.ibm.com>
10848
10849         * ipa-type-escape.c (look_for_casts) : Revert code to use
10850         handled_component_p due to ada test a-numaux.adb.
10851
10852 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
10853
10854         * final.c (final_scan_insn): Alter the condition of a
10855         conditional trap if we have nonstandard CC.
10856
10857 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
10858
10859         * configure.ac: Remove excess quoting from asm line 0 test.
10860         * configure: Rebuilt.
10861
10862 2007-03-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10863
10864         * doc/invoke.texi (-Wconversion): Document warnings specific to C++.
10865         * c-common.c (convert_and_check): Move warning logic to...
10866         (warnings_for_convert_and_check): ...here. Define.
10867         * c-common.h (warnings_for_convert_and_check): Declare.
10868
10869 2007-03-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
10870
10871         * pa.c (attr_length_call): Partially revert change of 2007-03-09.
10872         (output_call): Likewise.
10873
10874 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
10875
10876         * config/vxworks.h (SUPPORTS_INIT_PRIORITY): Define.
10877
10878 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
10879
10880         * config/vx-common.h (WINT_TYPE, WINT_TYPE_SIZE): Define.
10881
10882 2007-03-16  Uros Bizjak  <ubizjak@gmail.com>
10883
10884         * config/i386/i386.c (override_options): Add PTA_NO_SAHF to k8,
10885         opteron, athlon-64 and athlon-fx processor_alias_table entries.
10886
10887 2007-03-16  Sebastian Pop  <sebastian.pop@inria.fr>
10888
10889         PR tree-optimization/31183
10890         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
10891         Use double_int instead of unsigned int for representing access_strides.
10892         * testsuite/gcc.dg/tree-ssa/pr31183.c: New.
10893
10894 2007-03-16  Richard Guenther  <rguenther@suse.de>
10895
10896         PR tree-optimization/31146
10897         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Restructure
10898         to allow recursion of forward_propagate_addr_expr.
10899         (forward_propagate_addr_into_variable_array_index): Likewise.
10900         (forward_propagate_addr_expr): Likewise.
10901         (tree_ssa_forward_propagate_single_use_vars): Likewise.
10902         (forward_propagate_addr_expr_1): Recurse on simple copies
10903         instead of propagating into them.  Do so for useless conversions
10904         as well.
10905         (forward_propagate_addr_expr): Clean up unused statements after
10906         recursion.
10907
10908 2007-03-16  Richard Guenther  <rguenther@suse.de>
10909
10910         * builtins.c (expand_builtin_cexpi): Use the right argument
10911         for the expansion via cexp.
10912
10913 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
10914
10915         * configure.ac: Don't require ELF binutils to tolerate # 0 "".
10916         * configure: Rebuilt.
10917
10918 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
10919
10920         PR debug/29906
10921         * dwarf2out.c (force_type_die): Adjust comment.
10922         (dwarf2out_imported_module_or_decl): Handle base AT_import types.
10923
10924 2007-03-15  DJ Delorie  <dj@redhat.com>
10925
10926         * config/frv/predicates.md (minmax_operator): Don't check operands
10927         here.
10928
10929 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
10930
10931         * tree-ssa-loop-niter.c (record_estimate): Add "upper" argument.
10932         Update constant estimates of number of iterations.
10933         (record_nonwrapping_iv): Add "upper" argument.  "data_size_bounds_p"
10934         argument renamed to "realistic".
10935         (compute_estimated_nb_iterations): Removed.
10936         (record_niter_bound): New function.
10937         (idx_infer_loop_bounds): For possible but unlikely tail arrays,
10938         call record_nonwrapping_iv with upper = false.
10939         (infer_loop_bounds_from_signedness): Pass upper argument to
10940         record_nonwrapping_iv.
10941         (estimate_numbers_of_iterations_loop): Do not call
10942         compute_estimated_nb_iterations.  Record estimate based on profile
10943         information.  Initialize the constant estimates of number of
10944         iterations.
10945         * tree-data-ref.c (estimated_loop_iterations): Return the recorded
10946         estimates.
10947         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Add dump when
10948         number of iterations is too small.
10949         * cfgloop.h (struct nb_iter_bound): Remove "realistic" field.
10950         (EST_NOT_AVAILABLE): Removed.
10951         (struct loop): Replace estimated_nb_iterations by any_upper_bound,
10952         nb_iterations_upper_bound, any_estimate and nb_iterations_estimate
10953         fields.
10954
10955 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
10956
10957         * tree-ssa-loop-niter.c (refine_bounds_using_guard, bound_difference):
10958         Handle NE_EXPR guards.
10959
10960 2007-03-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10961
10962         PR c++/24924
10963         * c-opts.c (c_common_post_options): Handle C++ post-processing here.
10964         Set also -pedantic-errors by default for the  preprocessor unless
10965         -fpermissive is given.
10966
10967 2007-03-15  Richard Guenther  <rguenther@suse.de>
10968
10969         PR middle-end/29719
10970         PR middle-end/31161
10971         * builtins.c (expand_builtin_cexpi): As a fallback if we
10972         don't have builtins for sincos or cexp create a function
10973         declaration for cexp and expand to a call to that.
10974         (expand_builtin_int_roundingfn): Always fall
10975         back to floor/ceil and its variants even if they may be
10976         not available.
10977
10978 2007-03-15  Steven Bosscher  <steven@gcc.gnu.org>
10979
10980         PR middle-end/31159
10981         * cfglayout.c (fixup_reorder_chain): Postpone deleting dead
10982         jump tables, move the call to delete_dead_jumptables from here...
10983         (cfg_layout_finalize): ...to here.  But rebuild jump labels first.
10984         * cfgrtl.c (cfg_layout_can_merge_blocks_p): When not optimizing,
10985         don't allow merging of blocks that try_redirect_by_replacing_jump
10986         also does not handle when not optimizing.
10987
10988 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
10989             Francois-Xavier Coudert  <coudert@clipper.ens.fr>
10990
10991         * config/i386/i386.md (x86_sahf_1): Correctly handle
10992         HAVE_AS_IX86_SAHF.
10993
10994 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
10995
10996         PR target/31167
10997         * config/i386/i386.md (*addti3_1, *addti3_1 splitter): Use
10998         x86_64_general_operand as operand[2] predicate.  Remove "iF"
10999         from operand constraints and use "e" constraint instead.
11000         (*subti3_1, *subti3_1 splitter): Ditto.
11001         (*negti2_1, *negti2_1 splitter): Use nonimmediate_operand as
11002         operand[1] predicate.
11003
11004 2007-03-14  Sebastian Pop  <sebastian.pop@inria.fr>
11005
11006         * tree-loop-linear.c (gather_interchange_stats): For multidimensional
11007         arrays, multiply the access strides by the size of the sub-array.
11008         * testsuite/gcc.dg/tree-ssa/ltrans-5.c: New.
11009
11010 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
11011
11012         * configure.ac (HAVE_AS_IX86_SAHF): On x86 targets check whether
11013         the configured assembler supports the sahf mnemonic.
11014         * configure: Regenerate.
11015         * config.in: Regenerate.
11016
11017         * config/i386/i386.md (x86_sahf_1): Depending on HAVE_AS_IX86_SAHF,
11018         emit "sahf" or ".byte\t0x9e" as asm template.
11019
11020 2007-03-14  Michael Meissner  <michael.meissner@amd.com>
11021
11022         PR 31018
11023         * config/i386/i386.h (X86_TUNE_SHORTEN_X87_SSE): New tuning
11024         option to replace hard coded TARGET_xxx in md file.
11025         (X86_TUNE_AVOID_VECTOR_DECODE): Ditto.
11026         (X86_TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
11027         (X86_TUNE_SLOW_IMUL_IMM8): Ditto.
11028         (X86_TUNE_MOVE_M1_VIA_OR): Ditto.
11029         (X86_TUNE_NOT_UNPAIRABLE): Ditto.
11030         (X86_TUNE_NOT_VECTORMODE): Ditto.
11031         (TUNE_SHORTEN_X87_SSE): Use new tuning option.
11032         (TUNE_AVOID_VECTOR_DECODE): Ditto.
11033         (TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
11034         (TUNE_SLOW_IMUL_IMM8): Ditto.
11035         (TUNE_MOVE_M1_VIA_OR): Ditto.
11036         (TUNE_NOT_UNPAIRABLE): Ditto.
11037         (TUNE_NOT_VECTORMODE): Ditto.
11038
11039         * config/i386/i386.c (ix86_tune_features): Fill in new tuning
11040         options.
11041
11042         * config/i386/i386.md (fix_trunc?f?1_sse peephole2): Use new
11043         tuning options instead of hard coded TARGET_xxx.
11044         (fix ssemode peephole2's): Ditto.
11045         (imul peephole2's): Ditto.
11046         (movsi_or): Ditto.
11047         (movdi_or_rex64): Ditto.
11048         (move peephole2): Ditto.
11049         (not peephole2's): Ditto.
11050
11051 2007-03-14  Dirk Mueller  <dmueller@suse.de>
11052
11053         * c-common.h (empty_body_warning): Rename to empty_if_body_warning.
11054         * c-common.c (empty_if_body_warning): Rephrase diagnostic message.
11055         * c-parser.c (c_parser_if_body): Always add an empty statement in case
11056         of empty body.
11057         * c-parser.c (c_parser_do_statement): Warn about empty body in
11058         do/while statement.
11059         * c-typeck (c_finish_if_stmt): Call empty_if_body_warning.
11060         * doc/invoke.texi (-Wempty-body): Update documentation.
11061
11062 2007-03-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11063
11064         PR c/21438
11065         * c-common.h (warn_for_div_by_zero): Declare.
11066         * c-common.c (warn_for_div_by_zero): Define.
11067         * c-typeck.c (build_binary_op): Call warn_for_div_zero instead of
11068         warning.
11069
11070 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
11071
11072         * Makefile.in (PREPROCESSOR_DEFINES): Add directory terminators
11073         to PREFIX and STANDARD_PREFIX.
11074
11075 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
11076             Phil Edwards  <phil@codesourcery.com>
11077
11078         * gthr-vxworks.h: Add an extern "C" wrapper for C++.
11079         (__gthread_once_t): Remove busy field for RTPs.
11080         (__GTHREAD_ONCE_INIT): Update accordingly.
11081
11082 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
11083
11084         * doc/invoke.texi: Document VxWorks options.
11085
11086 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
11087
11088         * doc/invoke.texi (i386 and x86-64 Options): Clarify -msahf option.
11089
11090 2007-03-13  Seongbae Park <seongbae.park@gmail.com>
11091
11092         PR tree-optimization/30590
11093         * tree-nrv.c (tree_nrv): Check for the partial update of the
11094         return value.
11095
11096 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
11097
11098         * flags.h (flag_random_seed): Remove declaration, in favor of...
11099         * toplev.h (get_random_seed, set_random_seed): ... these.
11100         * tree.c (get_file_function_name): Use the former.
11101         * opts.c (common_handle_option): Use the latter.
11102         * toplev.c
11103
11104 2007-03-13  Steven Bosscher  <steven@gcc.gnu.org>
11105
11106         PR middle-end/31127
11107         * cse.c (cse_find_path): Do not bail out if a basic block that
11108         we already visited now becomes part of a path that starts at a
11109         different basic block.  Just disallow this, to make sure we
11110         visit each basic block at most once.
11111
11112 2007-03-13  Jan Hubicka  <jh@suse.cz>
11113
11114         * ipa-inline.c (cgraph_maybe_hot_edge_p): Look for hot/cold
11115         attributes, when profile esitmate is present, calls with very low
11116         frequency are cold.
11117
11118 2007-03-13  Zdenek Dvorak  <dvorakz@suse.cz>
11119
11120         PR tree-optimization/30730
11121         PR tree-optimization/26900
11122         * tree-ssa-loop-niter.c: Include gmp.h.
11123         (bounds): New type.
11124         (mpz_set_double_int, get_type_bounds, mpz_to_double_int,
11125         split_to_var_and_offset, determine_value_range,
11126         bound_difference_of_offsetted_base, refine_bounds_using_guard,
11127         bound_difference, bounds_add, bounds_negate,
11128         number_of_iterations_ne_max, dump_affine_iv): New functions.
11129         (number_of_iterations_ne, number_of_iterations_lt_to_ne,
11130         assert_loop_rolls_lt, assert_loop_rolls_le): Use bounds on the
11131         difference of initial and final value of control iv to validate
11132         results.
11133         (number_of_iterations_cond): Add loop parameter.  Determine bounds
11134         on the difference of the extremes of the control iv.  Add dumps.
11135         (expand_simple_operations): Handle phi nodes.
11136         (simplify_using_initial_conditions): Do not record used conditions.
11137         (number_of_iterations_exit): Pass loop to number_of_iterations_cond.
11138         Do not set additional_info.
11139         (implies_nonnegative_p, implies_ge_p): Removed.
11140         (derive_constant_upper_bound): Do not use parameter `additional'.
11141         (record_estimate): Parameter `additional' removed.  Parameter
11142         `i_bound' added.  Do not call derive_constant_upper_bound.
11143         (record_nonwrapping_iv): Use derive_constant_upper_bound to
11144         bound the number of iterations estimate.
11145         (estimate_numbers_of_iterations_loop): Pass the estimate from
11146         the number of iterations analysis to record_estimate.
11147         * tree.h (multiple_of_p): Declare.
11148         * tree-scalar-evolution.c (expression_expensive_p): Removed.
11149         (scev_const_prop): Do not check expression_expensive_p.
11150         * fold-const.c (multiple_of_p): Exported.
11151         * double-int.c (double_int_mask): Exported.
11152         * double-int.h (double_int_mask): Declare.
11153         * tree-flow.h (struct tree_niter_desc): Removed additional_info
11154         field.  Added max field.
11155
11156 2007-03-13  David Taylor  <taylor@candd.org>
11157
11158         PR driver/12448:
11159         * gcc.c (cpp_unique_options): If -MT or -MQ is seen, don't pass
11160         default -MQ.
11161
11162 2007-03-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
11163
11164         PR target/31123
11165         * pa.md (vdepi_ior): Don't allow zero length deposit.  Likewise for
11166         two unamed patterns.
11167
11168 2007-03-13  Uros Bizjak  <ubizjak@gmail.com>
11169
11170         * config/i386/i386.opt (mcx16, msahf): New options.
11171         * config/i386/i386.c (x86_cmpxchg16b, x86_sahf): Remove.
11172         (ix86_tune_features) [X86_TUNE_USE_SAHF]: Enable for m_GENERIC.
11173
11174         * config/i386/driver-i386.c (bit_LAHF_LM): New define.
11175         (host_detect_local_cpu): Detect cx16 and lahf_lm cpuid bits.
11176         Output -mcx16 and -msahf options when corresponding bit is set.
11177
11178         * doc/invoke.texi (i386 and x86-64 Options): Document -mcx16
11179         and -msahf options.
11180
11181 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
11182
11183         * configure.ac: Test for assembler tolerance to # 0 "".
11184         * configure, config.in: Rebuilt.
11185         * final.c (final_scan_insn): Emit it if HAVE_AS_LINE_ZERO.
11186
11187 2007-03-13  Geoffrey Keating  <geoffk@apple.com>
11188
11189         * doc/invoke.texi (Spec Files): Update for '%{,' spec.
11190
11191         * config/rs6000/darwin-fallback.c: Compile file only on powerpc.
11192         (handle_syscall): Handle direct system calls.
11193         * config/rs6000/darwin.h (HAS_MD_FALLBACK_FRAME_STATE_FOR): Delete.
11194
11195 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
11196
11197         * doc/invoke.texi: Fix cpp.info cross-reference.
11198         * doc/passes.texi: Fix gcc.info cross-reference.
11199
11200 2007-03-12  Zdenek Dvorak  <dvorakz@suse.cz>
11201
11202         PR tree-optimization/30835
11203         * lambda-code.c (can_convert_to_perfect_nest): Check whether
11204         bb_for_stmt is not NULL before accessing it.
11205
11206 2007-03-12  Joseph Myers  <joseph@codesourcery.com>
11207
11208         * gcc.c (main): Handle target_sysroot_hdrs_suffix being NULL for
11209         some multilibs.
11210
11211 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
11212
11213         PR 30635
11214         * doc/install.texi: Document --enable-stage1-languages
11215
11216 2007-03-12  Steven Bosscher  <steven@gcc.gnu.org>
11217
11218         * tree-pass.h (pass_into_cfg_layout_mode,
11219         pass_outof_cfg_layout_mode): Declare.
11220         * cfglayout.c (into_cfg_layout_mode, outof_cfg_layout_mode,
11221         pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode): New.
11222         * passes.c (pass_into_cfg_layout_mode): Schedule before jump2.
11223         (pass_outof_cfg_layout_mode): Schedule after pass_rtl_ifcvt.
11224
11225 2007-03-12  Seongbae Park <seongbae.park@gmail.com>
11226
11227         * c-decl.c (warn_variable_length_array): New function.
11228         Refactored from grokdeclarator to handle warn_vla
11229         and handle unnamed array case.
11230         (grokdeclarator): Refactored VLA warning case.
11231         * c.opt (Wvla): New flag.
11232         * doc/invoke.texi (Wvla): New warning.
11233
11234 2007-03-12  Richard Henderson  <rth@redhat.com>
11235
11236         * config/alpha/alpha.c (alpha_elf_section_type_flags): New.
11237         (TARGET_SECTION_TYPE_FLAGS): New.
11238
11239 2007-03-12  Richard Henderson  <rth@redhat.com>
11240
11241         * config/darwin.c (machopic_reloc_rw_mask): New.
11242         * config/darwin-protos.h (machopic_reloc_rw_mask): Declare.
11243         * config/darwin.h (TARGET_ASM_RELOC_RW_MASK): New.
11244
11245 2007-03-12  Mark Mitchell  <mark@codesourcery.com>
11246
11247         * cppdefault.c (cpp_EXEC_PREFIX): New variable.
11248         * cppdefault.h (cpp_PREFIX): Document.
11249         (cpp_PREFIX_len): Likewise.
11250         (cpp_EXEC_PREFIX): New variable.
11251         * Makefile.in (PREPROCESSOR_DEFINES): Add STANDARD_EXEC_PREFIX.
11252         * c-incpath.c (add_standard_paths): Correct logic for relocating
11253         paths within prefix.
11254
11255 2007-03-12  Uros Bizjak  <ubizjak@gmail.com>
11256
11257         * config/i386/i386.md (fixuns_trunc<mode>hi2): Implement from
11258         fixuns_truncsfhi2 and fixuns_truncdfhi2 using SSEMODEF
11259         mode macro.
11260         (fix_trunc<mode>di_sse): Implement from fix_truncsfdi_sse and
11261         fix_truncdfdi_sse using SSEMODEF mode macro.
11262         (fix_trunc<mode>si_sse): Implement from fix_truncsfsi_sse and
11263         fix_truncdfsi_sse using SSEMODEF mode macro.
11264         (fix_trunc?f?i_sse peephole2): Implement using SSEMODEF mode macro.
11265         (fix_trunc?f?i_sse K8 peephole2): Fix register constraint.
11266
11267 2007-03-12  Richard Sandiford  <richard@codesourcery.com>
11268
11269         * config.gcc (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add
11270         elfos.h to tm_file.
11271
11272 2007-03-12  Olga Golovanevsky  <olga@il.ibm.com>
11273
11274         * tree.h : Add multiple_of_p declaration.
11275         * fold-const.c (multiple_of_p): Make multiple_of_p public.
11276         * ipa-type-escape.c (results_of_malloc): Redundant.
11277         (visited_stmts): New. Visited stmt for walk_use_def_chains.
11278         (cast_type): Extended with new members.
11279         (check_cast): Returns cast_type.
11280         (cast): New structure for data of walk_use_def_chains.
11281         (is_malloc_result, is_cast_from_non_pointer_1,
11282         is_cast_from_non_pointer,
11283         is_array_access_through_pointer_and_index): New functions.
11284         (look_for_casts): Returns cast types.
11285         (check_call): Returns void.
11286         (okay_pointer_operation): Use support of pointer plus index,
11287         pointer plus constant and allow all multiplications.
11288
11289 2007-03-11  Richard Guenther  <rguenther@suse.de>
11290
11291         PR tree-optimization/31115
11292         * tree-vrp.c (extract_range_from_binary_expr): Make sure
11293         the shift count is positive and non-anti-range for RSHIFT_EXPR.
11294         A shift count of zero is not special as with *_DIV_EXPR.
11295         (vrp_int_const_binop): Handle RSHIFT_EXPR for determining overflow
11296         direction.
11297
11298 2007-03-11  Ian Lance Taylor  <iant@google.com>
11299
11300         * tree-vrp.c (vrp_int_const_binop): Handle PLUS_EXPR and
11301         the *_DIV_EXPR codes correctly with overflow infinities.
11302
11303 2007-03-11  Ira Rosen  <irar@il.ibm.com>
11304
11305         * tree-data-ref.c (analyze_offset): Add a return value (bool) to
11306         indicate success/failure of the analysis. Add negation to subtrahend
11307         in case of subtraction. Fail if both operands contain constants.
11308         (create_data_ref): Fail if analyze_offset fails.
11309
11310 2007-03-11  Uros Bizjak  <ubizjak@gmail.com>
11311
11312         * config/i386/i386.md (frndintxf2): Rename to ...
11313         (rintxf2): ... this. Remove expander having same name.
11314         (rintsf2, rintdf2): Implement using SSEMODEF macro.
11315         (roundsf2, rounddf2): Ditto.
11316         (lrint<mode>di2, lrint<mode>si2): Implement using SSEMODEI24 macro.
11317         (lround<mode>di2, lround<mode>si2): Ditto.
11318
11319 2007-03-11  Steven Bosscher  <steven@gcc.gnu.org>
11320
11321         * lower-subreg.c: Include except.h.
11322         (decompose_multiword_subregs): Verify that the only control flow
11323         insns we can split are loads to multi-words pseudos.
11324         Handle breaking such blocks after splitting, instead of calling
11325         find_many_sub_basic_blocks.
11326
11327         * loop-unroll.c (split_edge_and_insert): Don't set BB_SUPERBLOCK
11328         on the new basic block.  Add a lengthy comment explaining why we
11329         thought this was necessary.
11330         * cfglayout.c (cfg_layout_finalize): Don't break superblocks.
11331
11332 2007-03-10  Mark Mitchell  <mark@codesourcery.com>
11333
11334         PR c++/30924
11335         * tree.c (walk_type_fields): Recurse into the element type of
11336         ARRAY_TYPEs if there is a pointer set.
11337
11338 2007-03-10  Dirk Mueller  <dmueller@suse.de>
11339
11340         * c-common.c (warn_logical_operator): Fix condition.
11341
11342 2007-03-10  Tobias Schl�ter  <tobi@gcc.gnu.org>
11343
11344         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Add missing
11345         quotation mark.
11346         * config/darwin.c (machopic_select_section): Remove superfluous
11347         argument in call to categorize_decl_for_section.  Remove unused
11348         variable shlib.
11349
11350 2007-03-10  Joseph Myers  <joseph@codesourcery.com>
11351
11352         * configure.ac (glibc_header_dir): Set using with_build_sysroot if
11353         defined.
11354         * configure: Regenerate.
11355
11356 2007-03-10  Uros Bizjak  <ubizjak@gmail.com>
11357
11358         PR target/31101
11359         * config/i386/i386.md (UNSPEC_C2_FLAG): New constant.
11360         (fpremxf4_i387, fprem1xf4_i387): Use UNSPEC_C2_FLAG.
11361         (fmodxf3, fmod<mode>3, remainderxf3, remainder<mode>3):
11362         Add LABEL_NUSES to emitted label.
11363         * config/i386/i386.c (ix86_emit_fp_unordered_jump): Add
11364         branch probability value to emitted jump insn.
11365         * reg-stack.c (subst_stack_regs_pat)[UNSPEC]: Handle UNSPEC_C2_FLAG.
11366         Do not check life information and do not re-arrange input operands
11367         for UNSPEC_FSCALE_EXP, UNSPEC_FPREM_U and UNSPEC_FPREM1_U.
11368
11369 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
11370
11371         * config/sh/sh.c (sh_insn_length_adjustment): Adjust for
11372         the change of decode_asm_operands.
11373
11374 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
11375
11376         * mode-switching.c (create_pre_exit): Skip blockage insn.
11377
11378 2007-03-09  Diego Novillo  <dnovillo@redhat.com>
11379
11380         * tree-pass.h (TODO_update_smt_usage): Remove.
11381         Update all users.
11382         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove
11383         argument SOME.
11384         Update all users.
11385
11386 2007-03-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
11387
11388         * pa.c (attr_length_call): Revise condition for long
11389         pc-relative branch.
11390         (output_call): Use "LONG_PIC_SDIFF" instruction sequence for long
11391         local calls on the SOM target.  Don't use "LONG_PIC_PCREL" call
11392         sequence on SOM target.
11393
11394 2007-03-09  Geoffrey Keating  <geoffk@apple.com>
11395
11396         * gcc.c: Document %{, in big comment at top.
11397         (input_suffix_matches): Remove special handling for .s and
11398         .S.
11399         (input_spec_matches): New.
11400         (handle_braces): Handle %{,.
11401         (validate_switches): ',' indicates a value which is not a switch.
11402         * config/alpha/osf.h (ASM_FINAL_SPEC): Use %{, rather than %{.
11403         to detect assembler input.
11404         * config/i386/sol2.h (CPP_SPEC): Likewise.
11405         * config/rs6000/sysv4.h (ASM_SPEC): Likewise.
11406         * config/rs6000/vxworks.h (ASM_SPEC): Likewise.
11407         * config/rs6000/lynx.h (ASM_SPEC): Likewise.
11408         * config/rs6000/linux64.h (ASM_SPEC_COMMON): Likewise.
11409         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Objective-C plus
11410         -m64 causes deployment target to default to 10.5.
11411         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
11412
11413 2007-03-09  Richard Henderson  <rth@redhat.com>
11414
11415         PR target/26090
11416         * target.h (targetm.asm.out.reloc_rw_mask): New.
11417         * target-def.h (TARGET_ASM_RELOC_RW_MASK): New.
11418         (TARGET_ASM_OUT): Use it.
11419         * targhooks.c, targhooks.h (default_reloc_rw_mask): New.
11420         * varasm.c (categorize_decl_for_section): Remove shlib argument;
11421         use the new reloc_rw_mask target hook instead.
11422         (default_section_type_flags_1): Merge into...
11423         (default_section_type_flags): ... here.
11424         (decl_readonly_section_1): Merge into...
11425         (decl_readonly_section): ... here.
11426         (default_elf_select_section_1): Merge into...
11427         (default_elf_select_section): ... here.
11428         (default_unique_section_1): Merge into...
11429         (default_unique_section): ... here.
11430         (compute_reloc_for_rtx_1, compute_reloc_for_rtx): New.
11431         (default_select_rtx_section): Use it.
11432         (default_elf_select_rtx_section): Likewise.
11433         * output.h: Update to match.
11434         * doc/tm.texi (TARGET_ASM_RELOC_RW_MASK): New.
11435         * config/alpha/alpha.c (alpha_elf_reloc_rw_mask): New.
11436         (TARGET_ASM_RELOC_RW_MASK): New.
11437         * config/i386/i386.c (x86_64_elf_select_section): Adjust call
11438         to categorize_decl_for_section.
11439         (x86_64_elf_unique_section): Likewise.
11440         * config/ia64/hpux.h (TARGET_ASM_SELECT_SECTION,
11441         TARGET_ASM_UNIQUE_SECTION, TARGET_ASM_SELECT_RTX_SECTION): Remove.
11442         (TARGET_ASM_RELOC_RW_MASK): New.
11443         * config/ia64/ia64.c (ia64_rwreloc_select_section,
11444         ia64_rwreloc_unique_section, ia64_rwreloc_select_rtx_section): Remove.
11445         (ia64_hpux_reloc_rw_mask, ia64_reloc_rw_mask): New.
11446         (TARGET_RWRELOC): Remove.
11447         (ia64_section_type_flags): Adjust call to default_section_type_flags.
11448         * config/ia64/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
11449         * config/rs6000/rs6000.c (rs6000_elf_section_type_flags): Remove.
11450         (rs6000_elf_select_section, rs6000_elf_unique_section): Remove.
11451         (rs6000_elf_reloc_rw_mask, rs6000_xcoff_reloc_rw_mask): New.
11452         (rs6000_xcoff_select_section): Use decl_readonly_section.
11453         (rs6000_xcoff_section_type_flags): Use default_section_type_flags.
11454         * config/rs6000/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
11455         (TARGET_ASM_SELECT_SECTION, TARGET_ASM_UNIQUE_SECTION): Remove.
11456         (TARGET_SECTION_TYPE_FLAGS): Remove.
11457         * config/rs6000/xcoff.h (TARGET_ASM_RELOC_RW_MASK): New.
11458
11459 2007-03-09  Roger Sayle  <roger@eyesopen.com>
11460
11461         * fold-const.c (fold_comparison): Remove compile-time evaluation of
11462         complex constant equality/inequality comparisons for here.
11463         (fold_binary) <EQ_EXPR>: Simplify complex comparisons that are
11464         known at compile-time or can be simplified to a scalar comparison.
11465         (fold_relational_const): Move compile-time evaluation of complex
11466         constant equality/inequality comparisons to here.
11467
11468 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
11469
11470         PR rtl-optimization/30643
11471         * cse.c (cse_insn): Recompute dest_hash after insert_regs for
11472         dest_addr_elt.
11473         (fold_rtx): Recurse, like before 2006-11-03.
11474
11475 2007-03-09  DJ Delorie  <dj@redhat.com>
11476
11477         * config/m32c/t-m32c (m32c-pragma.o): Add TM_H dependency to
11478         m32c-pragma.o.
11479
11480 2007-03-09  Aldy Hernandez  <aldyh@redhat.com>
11481
11482         PR tree-optimization/30375
11483         * tree-ssa-dse.c (dse_possible_dead_store_p): Do not eliminate if
11484         LHS of statements is not the same.
11485         * testsuite/gcc.dg/tree-ssa/ssa-dse-10.c: New.
11486
11487 2007-03-09  Chao-ying Fu  <fu@mips.com>
11488
11489         * doc/extend.texi (MIPS DSP Built-in Functions): Document the DSP
11490         REV 2.
11491         * doc/invoke.texi (-mdspr2): Document new option.
11492         * config/mips/mips.md (UNSPEC_ABSQ_S_QB .. UNSPEC_DPSQX_SA_W_PH):
11493         New unspec for DSP REV 2.
11494         (<u>mulsidi3_32bit_internal): Check if !TARGET_DSPR2, because
11495         these instructions are extended in DSP REV 2.
11496         (mips-dspr2.md): Include.
11497         * config/mips/mips.opt (mdspr2): New option.
11498         * config/mips/mips.c (mips_function_type): Add MIPS_V4QI_FTYPE_V4QI,
11499         MIPS_SI_FTYPE_SI_SI_SI, MIPS_DI_FTYPE_DI_USI_USI, MIPS_DI_FTYPE_SI_SI,
11500         MIPS_DI_FTYPE_USI_USI, MIPS_V2HI_FTYPE_SI_SI_SI.
11501         (override_options): Check TARGET_DSPR2 to enable MASK_DSP.
11502         (CODE_FOR_mips_mul_ph): Define it to CODE_FOR_mulv2hi3.
11503         (dsp_bdesc): Add DSP REV 2 builtins.  Remove 32-bit only DSP builtins.
11504         (dsp_32only_bdesc): New description table for 32-bit only DSP REV 1
11505         and 2 builtins.
11506         (bdesc_map): Add one field of unsupported_target_flags.
11507         (bdesc_arrays):  Update entries to have extra fields.  Add
11508         dsp_32only_bdesc.
11509         (mips_init_builtins): Initialize new function types.
11510         Check unsupported_target_fileds to filter out builtins.
11511         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_dspr2 if
11512         TARGET_DSPR2.
11513         (ASM_SPEC): Pass mdspr2 to the assembler.
11514         * config/mips/mips-dspr2.md: New file.
11515
11516 2007-03-09  Sa Liu  <saliu@de.ibm.com>
11517
11518         * config/rs6000/altivec.md: Fix vcond patterns using if_then_else.
11519
11520 2007-03-09  Ian Lance Taylor  <iant@google.com>
11521
11522         * opts.c (common_handle_option): Treat -Wstrict-overflow (with no
11523         argument) like -Wstrict-overflow=2.
11524         * doc/invoke.texi (Warning Options): Update documentation.
11525
11526 2007-03-09  Dirk Mueller  <dmueller@suse.de>
11527
11528         PR c++/17946
11529         * doc/invoke.texi (-Wlogical-op): Document.
11530         * common.opt (-Wlogical-op): New.
11531         * c-common.h (warn_logical_operator): Declare.
11532         * c-common.c (warn_logical_operator): Define.
11533         * c-typeck.c (parser_build_binary_op): Call
11534         warn_logical_operator.
11535
11536 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
11537
11538         * rtl.h (gen_rtx_ASM_INPUT): Use "" instead of NULL file name.
11539         * final.c (final_scan_insn): Test for non-"" file name.
11540
11541 2007-03-09  Sebastian Pop  <sebastian.pop@inria.fr>
11542
11543         * doc/loop.texi: Document the Omega linear constraints solver.
11544         * doc/invoke.texi: Document -fcheck-data-deps, omega-max-vars,
11545         omega-max-geqs, omega-max-eqs, omega-max-wild-cards,
11546         omega-hash-table-size, omega-max-keys, and
11547         omega-eliminate-redundant-constraints.
11548         * tree-pass.h (pass_check_data_deps): Declared.
11549         * omega.c: New.
11550         * omega.h: New.
11551         * timevar.def (TV_CHECK_DATA_DEPS): Declared.
11552         * tree-ssa-loop.c (check_data_deps, gate_check_data_deps,
11553         pass_check_data_deps): New.
11554         * tree-data-ref.c (init_data_ref): Remove declaration.
11555         (dump_data_dependence_relation): Dump DDR_INNER_LOOP.
11556         (analyze_array): Renamed init_array_ref, move up initializations.
11557         (init_data_ref): Renamed init_pointer_ref.  Moved before its call.
11558         Removed arguments that are set to NULL.
11559         (analyze_indirect_ref): Correct indentation, correct call to
11560         init_pointer_ref.
11561         (object_analysis): Call init_array_ref instead of analyze_array.
11562         (initialize_data_dependence_relation): Initialize DDR_INNER_LOOP.
11563         (access_functions_are_affine_or_constant_p): Use DR_ACCESS_FNS instead
11564         of DR_ACCESS_FNS_ADDR.
11565         (init_omega_eq_with_af, omega_extract_distance_vectors,
11566         omega_setup_subscript, init_omega_for_ddr_1, init_omega_for_ddr,
11567         ddr_consistent_p): New.
11568         (compute_affine_dependence): Check consistency of ddrs when
11569         flag_check_data_deps is passed.
11570         (analyze_all_data_dependences): Uncomment.
11571         (tree_check_data_deps): New.
11572         * tree-data-ref.h: Include omega.h.
11573         (DR_ACCESS_FNS_ADDR): Removed.
11574         (data_dependence_relation): Add inner_loop.
11575         (DDR_INNER_LOOP): New.
11576         * common.opt (fcheck-data-deps): New.
11577         * tree-flow.h (tree_check_data_deps): Declare.
11578         * Makefile.in (TREE_DATA_REF_H): Depend on omega.h.
11579         (OBJS-common): Depend on omega.o.
11580         (omega.o): Define.
11581         * passes.c (pass_check_data_deps): Scheduled.
11582         * params.def (PARAM_OMEGA_MAX_VARS, PARAM_OMEGA_MAX_GEQS,
11583         PARAM_OMEGA_MAX_EQS, PARAM_OMEGA_MAX_WILD_CARDS,
11584         PARAM_OMEGA_HASH_TABLE_SIZE, PARAM_OMEGA_MAX_KEYS,
11585         PARAM_VECT_MAX_VERSION_CHECKS,
11586         PARAM_OMEGA_ELIMINATE_REDUNDANT_CONSTRAINTS): New.
11587
11588 2007-03-09  Richard Guenther  <rguenther@suse.de>
11589
11590         PR tree-optimization/30904
11591         PR middle-end/31058
11592         * tree-vrp.c (extract_range_from_binary_expr): Handle RSHIFT_EXPR
11593         the same way as *_DIV_EXPR.
11594
11595 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
11596
11597         * recog.c (decode_asm_operands): No mixed declarations and code.
11598
11599 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
11600
11601         * rtl.def (ASM_INPUT): Add location.
11602         * rtl.h (ASM_INPUT_SOURCE_LOCATION): New.
11603         (ASM_INPUT_SOURCE_FILE, ASM_INPUT_SOURCE_LINE): New.
11604         (decode_asm_operands): Add loc operand.
11605         (gen_rtx_ASM_INPUT, gen_rtx_ASM_INPUT_loc): Define.
11606         * stmt.c (expand_asm): Rename to...
11607         (expand_asm_loc): ... this.  Add locus argument.  Pass it on to
11608         gen_rtx_ASM_INPUT_loc.
11609         (expand_asm_expr): Adjust.
11610         * recog.c (decode_asm_operands): Add loc operand.
11611         (check_asm_operands, extract_insn): Adjust.
11612         * reload1.c (maybe_fix_stack_asms): Likewise.
11613         * final.c (asm_insn_count): Likewise.
11614         (final_scan_insn): Output # line before and after asm.
11615
11616 2007-03-09  Daniel Berlin  <dberlin@dberlin.org>
11617
11618         * tree-ssa-structalias.c (variable_info): Remove
11619         finished_solution.
11620         (new_var_info): Ditto.
11621         (shared_bitmap_info_t): New structure.
11622         (shared_bitmap_table): New variable.
11623         (shared_bitmap_hash): New function.
11624         (shared_bitmap_eq): Ditto
11625         (shared_bitmap_lookup): Ditto.
11626         (shared_bitmap_add): Ditto.
11627         (merge_smts_into): Change to take bitmap directly.
11628         (find_what_p_points_to): Rewrite to use shared bitmap hashtable.
11629         (init_alias_vars): Init shared bitmap hashtable.
11630         (delete_points_to_sets): Delete shared bitmap hashtable.
11631         * tree-ssa-operands.c (add_virtual_operand): Partially revert the
11632         is_aliased removal as a change that was still necessary was
11633         deleted.
11634
11635 2007-03-09  Uros Bizjak  <ubizjak@gmail.com>
11636
11637         * config/i386/i386.h (override_options): Conditionally disable
11638         x86_sahf for 64bit targets only.
11639
11640 2007-03-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11641
11642         PR C/31072
11643         * c-decl.c (merge_decls): Don't call make_var_volatile.
11644         * varasm.c (make_var_volatile): Remove.
11645         * output.h (make_var_volatile): Remove.
11646
11647 2007-03-08  Zdenek Dvorak  <dvorakz@suse.cz>
11648
11649         PR tree-optimization/31085
11650         * tree-ssa-address.c (create_mem_ref): Fix test of type of base.
11651
11652 2007-03-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11653
11654         * builtins.def (lceil, lceilf, lceill, lfloor, lfloorf, lfloorl,
11655         llceil, llceilf, llceill, llfloor, llfloorf, llfloorl): Mark with
11656         ATTR_CONST_NOTHROW_LIST.
11657
11658         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
11659         FIX_TRUNC_EXPR.
11660
11661 2007-03-08  Diego Novillo  <dnovillo@redhat.com>
11662
11663         * doc/tree-ssa.texi: Remove documentation for V_MUST_DEF.
11664
11665 2007-03-08  Geoffrey Keating  <geoffk@apple.com>
11666
11667         PR 31013
11668         * gccspec.c (lang_specific_driver): Do nothing when NEXT_OBJC_RUNTIME
11669         is declared.
11670         * config/darwin.h (REAL_LIBGCC_SPEC): When -fgnu-runtime is
11671         passed, use shared libgcc.
11672
11673 2007-03-08  Roger Sayle  <roger@eyesopen.com>
11674
11675         * tree-eh.c (do_return_redirection): Call build_gimple_modify_stmt
11676         instead of calling build2 with a GIMPLE_MODIFY_STMT.
11677         (honor_protect_cleanup_actions, lower_try_finally_switch):
11678         Likewise.
11679         * tree-if-conv.c (replace_phi_with_cond_gimple_modify_stmt,
11680         ifc_temp_var): Likewise.
11681         * tree-inline.c (setup_one_parameter): Likewise.
11682         * tree-mudflap.c (mf_decl_cache_locals,
11683         mf_build_check_statement_for): Likewise.
11684         * tree-nested.c (init_tmp_var, save_tmp_var,
11685         finalize_nesting_tree_1): Likewise.
11686         * tree-outof-ssa.c (insert_copy_on_edge,
11687         insert_backedge_copies): Likewise.
11688         * tree-profile.c (tree_gen_edge_profiler,
11689         tree_gen_ic_profiler): Likewise.
11690         * tree-scalar-evolution.c (scev_const_prop): Likewise.
11691         * tree-sra.c (sra_build_assignment): Likewise.
11692         * tree-ssa-loop-im.c (determine_invariantness_stmt): Likewise.
11693         * tree-ssa-math-opts.c (insert_reciprocals,
11694         execute_cse_sincos_1): Likewise.
11695         * tree-tailcall.c (adjust_accumulator_values,
11696         adjust_return_value): Likewise.
11697         * tree-vect-patterns.c (vect_pattern_recog_1): Likewise.
11698         * tree-vect-transform.c (vect_create_data_ref_ptr,
11699         bump_vector_ptr, vect_init_vector, get_initial_def_for_induction,
11700         vect_create_epilog_for_reduction, vectorizable_reduction,
11701         vectorizable_call, vectorizable_conversion,
11702         vectorizable_assignment, vectorizable_operation,
11703         vectorizable_type_demotion, vect_gen_widened_results_half,
11704         vect_permute_store_chain, vectorizable_store,
11705         vect_setup_realignment, vect_permute_load_chain,
11706         vectorizable_load, vectorizable_condition,
11707         vect_create_cond_for_align_checks): Likewise.
11708         * tree-vrp.c (build_assert_expr_for): Likewise.
11709
11710 2007-03-08  Ian Lance Taylor  <iant@google.com>
11711
11712         * tree-vrp.c: Include "intl.h".
11713         (usable_range_p): New static function.
11714         (compare_values_warnv): Don't test TYPE_OVERFLOW_UNDEFINED for
11715         overflowed values, juts set *strict_overflow_p.
11716         (compare_values): Only return -2 if one of the operands is not a
11717         constant.
11718         (compare_ranges): Call usable_range_p.
11719         (compare_range_with_value): Likewise.
11720         (vrp_evaluate_conditional_warnv): Rename from
11721         vrp_evaluate_conditional.  Make static.  Change all callers.
11722         (vrp_evaluate_conditional): New function.
11723         (simplify_div_or_mod_using_ranges): Issue warning about reliance
11724         on signed overflow.
11725         (simplify_abs_using_ranges): Likewise.
11726         (simplify_stmt_for_jump_threading): Add within_stmt parameter.
11727         * tree-ssa-dom.c (simplify_stmt_for_jump_threading): Add
11728         within_stmt parameter.
11729         * tree-ssa-propagate.c (fold_predicate_in): Update call to
11730         vrp_evaluate_conditional.
11731         * tree-ssa-threadedge.c
11732         (record_temporary_equivalences_from_stmts_at_dest): Change
11733         simplify parameter to take a second tree parameter.
11734         (simplify_control_stmt_condition): Likewise.
11735         (thread_across_edge): Likewise.
11736         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
11737         (thread_across_edge): Likewise.
11738         * Makefile.in (tree-vrp.o): Depend upon intl.h.
11739
11740 2007-03-08  Uros Bizjak  <ubizjak@gmail.com>
11741
11742         * config/i386/i386.h (TARGET_SAHF): New define.
11743         * config/i386/i386.c (ix86_tune_features) [X86_TUNE_USE_SAHF]:
11744         Also enable for m_K8, m_AMDFAM10 and m_CORE2.
11745         (x86_sahf): New global variable.
11746         (override_options): Add PTA_NO_SAHF to pta_flags enum.  Recode
11747         pta_flags masks using shifts.  Add PTA_NO_SAHF to x86_64 and
11748         nocona processor flags.  Set x86_sahf when PTA_NO_SAHF is not set
11749         in processor flags.  Do not unconditionally disable TARGET_USE_SAHF
11750         for 64-bit.
11751         (ix86_fp_comparison_sahf_cost): Return high value for !TARGET_SAHF.
11752         (ix86_expand_fp_compare): Check for TARGET_CMOVE or TARGET_SAHF
11753         when expanding fcomi/sahf based tests.
11754         (ix86_emit_fp_unordered_jump): Check for TARGET_SAHF when
11755         expanding sahf based alternative. Emit sahf based sequence when
11756         optimizing for code size.
11757         * config/i386/i386.md (x86_sahf_1): Do not disable for
11758         TARGET_64BIT, enable for TARGET_SAHF.
11759
11760 2007-03-08  Martin Michlmayr  <tbm@cyrius.com>
11761
11762         * tree-ssa-coalesce.c (fail_abnormal_edge_coalesce): Remove
11763         spurious whitespace from error message.
11764
11765 2007-03-08  Volker Reichelt  <reichelt@netcologne.de>
11766
11767         PR c++/30852
11768         * c-common.c (fold_offsetof_1): Handle COMPOUND_EXPR.
11769
11770 2007-03-08  Alexandre Oliva  <aoliva@redhat.com>
11771
11772         * c-decl.c (grokdeclarator): Disable warnings for anonymous
11773         bitfields.
11774         * tree-sra.c (instantiate_element): Propagate disabled warnings
11775         from the element itself to the created variable.
11776
11777 2007-03-07  Richard Henderson  <rth@redhat.com>
11778
11779         PR target/30848
11780         * reg-stack.c (emit_swap_insn): If a malformed asm was seen,
11781         silently fix up the stack in the case of a missing register.
11782
11783 2007-03-07  Paul Brook  <paul@codesourcery.com>
11784
11785         * config/arm/libunwind.S: Add .arch/.object_arch for armv4 builds.
11786
11787 2007-03-07  Joseph Myers  <joseph@codesourcery.com>
11788
11789         * config/arm/unwind-arm.c (struct wmmxd_regs, struct wmmxc_regs):
11790         New.
11791         (phase1_vrs): Use them.
11792         (DEMAND_SAVE_WMMXD, DEMAND_SAVE_WMMXC): New.
11793         (__gnu_Unwind_Save_WMMXD, __gnu_Unwind_Restore_WMMXD,
11794         __gnu_Unwind_Save_WMMXC, __gnu_Unwind_Restore_WMMXC): Declare.
11795         (restore_non_core_regs): Call __gnu_Unwind_Restore_WMMXD and
11796         __gnu_Unwind_Restore_WMMXC if required.
11797         (_Unwind_VRS_Pop): Implement iWMMXt support.
11798         * config/arm/libunwind.S (gnu_Unwind_Restore_WMMXD,
11799         gnu_Unwind_Save_WMMXD, gnu_Unwind_Restore_WMMXC,
11800         gnu_Unwind_Save_WMMXC): Define.
11801
11802 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
11803
11804         * config/vxworks.h (vxworks_override_options): Declare.
11805         (VXWORKS_OVERRIDE_OPTIONS): Use it.
11806         * config/vxworks.c: Include target.h and toplev.h.
11807         (vxworks_override_options): New function.
11808         * config/t-vxworks (vxworks.o): Depend on $(TARGET_H) and toplev.h.
11809
11810 2007-03-07  Andreas Krebbel  <krebbel1@de.ibm.com>
11811
11812         * config/s390/s390.c (override_options): Don't emit an error when
11813         -mstack-size is used without providing -mstack-guard.
11814         (s390_emit_prologue): Choose stack_guard value automatically if not
11815         provided via command line.
11816         * doc/invoke.texi: Adjust description of -mstack-guard and
11817         -mstack-size.
11818
11819 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
11820
11821         * config/i386/i386.c (output_set_got): Add a GOT initialization
11822         sequence for VxWorks PIC.
11823         (legitimate_pic_address_disp_p): Allow UNSPEC_GOT wrappers
11824         around labels as well as symbols.  Use gotoff_operand instead
11825         of local_symbolic_operand.
11826         (legitimize_pic_address): Use gotoff_operand instead of
11827         local_symbolic_operand.  Use @GOT accesses for labels as
11828         well as symbols.
11829         (ix86_output_addr_diff_elt): Use PC-relative rather than
11830         GP-relative offsets for VxWorks PIC.
11831         (ix86_expand_move): Pass NULL_RTX to legitimize_pic_address unless
11832         no_new_pseudos.  Check whether the returned register is op0.
11833         * config/i386/i386.md (tablejump): Use PC-relative rather than
11834         GP-relative offsets for VxWorks PIC.
11835         * config/i386/predicates.md (gotoff_operand): New predicate.
11836
11837 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
11838
11839         * config/vxworks.h (VXWORKS_GOTT_BASE, VXWORKS_GOTT_INDEX): Undefine
11840         before defining.
11841         * config/vxworks-dummy.h: New file.
11842         * config/i386/i386.h: Include it.
11843
11844 2007-03-07  Alexandre Oliva  <aoliva@redhat.com>
11845
11846         * dwarf2out.c (is_inlined_entry_point): New
11847         (add_high_low_attributes): Emit DW_AT_entry_pc along with
11848         DW_AT_ranges if the first subblock is the entry point.
11849
11850 2007-03-06  David Daney  <ddaney@avtrex.com>
11851
11852         * doc/install.texi (mips-*-*): Change recommended binutils
11853         version.
11854
11855 2007-03-06  Anatoly Sokolov <aesok@post.ru>
11856
11857         * config/avr/avr.c (avr_mcu_types): Add support for ATmega325P,
11858         ATmega3250P, ATmega329P, ATmega3290P, AT90USB82 and AT90USB162
11859         devices.
11860         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
11861         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
11862
11863 2007-03-06  Jan Hubicka  <jh@suse.cz>
11864
11865         * errors.h (warning, error, fatal, internal_error): Mark as cold.
11866         * predict.c (maybe_hot_bb): Cold functions are never hot; hot
11867         functions are hot.
11868         (probably_cold_bb_p): Cold functions are cold.
11869         (probably_never_executed_bb_p): Cold functions are cold.
11870         (tree_bb_level_predictions): Predict calls to cold functions as not
11871         taken.
11872         (compute_function_frequency): Check hot/cold attributes.
11873         * function.h (function_frequency): Update comments.
11874         * predict.def (PRED_COLD_FUNCTION): Predict cold function.
11875         * c-common.c (handle_hot_attribute, handle_cold_attribute): New.
11876         (c_common_att): Add cold and hot.
11877
11878         * doc/extend.texi (hot,cold attributes): Document.
11879
11880 2007-03-06  Andrew Haley  <aph@redhat.com>
11881
11882         * function.c (expand_function_end): Move blockage to just after we
11883         emit the label for the naked return from the function.
11884
11885 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
11886
11887         * config/i386/att.h (ASM_OUTPUT_ASCII, ASM_OUTPUT_SKIP): Undefine
11888         before redefining.
11889
11890 2007-03-06  Jan Hubicka  <jh@suse.cz>
11891
11892         * reg-stack.c (reg_to_stack): Large models don't allow NAN to be
11893         loaded for constant large models.  Non-large 64bit PIC can do.
11894         * i386.h (CASE_VECTOR_MODE): Large PIC cases are 64bit.
11895         * cmodel.h: Add LARGE PIC.
11896         * i386.md (UNSPEC_PLTOFF): New.
11897         (UNSPEC_SET_RIP, UNSPEC_SET_GOT_OFFSET): New; renumber other
11898         unspecs as needed.
11899         (*call_1_rex64): Disable for large models.
11900         (*call_1_rex64_large): New.
11901         (*call_value_1_rex64): Disable for large models.
11902         (*call_value_1_rex64_large): New.
11903         (set_rip_rex4): New.
11904         (set_got_offset_rex64): New.
11905         * predicates.md (constant_call_address_operand): For large model
11906         constant calls are not possible.
11907         * i386-protos.h (construct_plt_address): Declare.
11908         * i386.c (override_options): Accept large models.
11909         (ix86_expand_prologue): Expand large PIC GOT pointer load.
11910         (legitimate_constant_p): Add new UNSPECs.
11911         (legitimate_pic_operand_p): Likewise.
11912         (legitimate_pic_address_disp_p): Disallow local symbols for large PICs.
11913         (legitimize_pic_address): Do easy RIP relative way for TLS only for
11914         non-large model.
11915         (output_pic_addr_const): Add PLTOFF.
11916         (ix86_output_addr_diff_elt): Output 64bit tables when needed.
11917         (ix86_expand_move): Legitimize pic address when in PIC mode.
11918         (construct_plt_address): New function.
11919         (ix86_expand_call): Offload the address to register and use GOT
11920         pointer for large model.
11921         * invoke.texi (mcmodel=large): Update documentation.
11922
11923 2007-03-06  Richard Henderson  <rth@redhat.com>
11924
11925         * config/i386/i386.c (x86_use_leave, x86_push_memory,
11926         x86_zero_extend_with_and, x86_movx, x86_double_with_add,
11927         x86_use_bit_test, x86_unroll_strlen, x86_deep_branch,
11928         x86_branch_hints, x86_use_sahf, x86_partial_reg_stall,
11929         x86_partial_flag_reg_stall, x86_use_himode_fiop, x86_use_simode_fiop,
11930         x86_use_mov0, x86_use_cltd, x86_read_modify_write, x86_read_modify,
11931         x86_split_long_moves, x86_promote_QImode, x86_fast_prefix,
11932         x86_single_stringop, x86_qimode_math, x86_promote_qi_regs,
11933         x86_himode_math, x86_promote_hi_regs, x86_sub_esp_4, x86_sub_esp_8,
11934         x86_add_esp_4, x86_add_esp_8, x86_integer_DFmode_moves,
11935         x86_partial_reg_dependency, x86_memory_mismatch_stall,
11936         x86_prologue_using_move, x86_epilogue_using_move, x86_shift1,
11937         x86_sse_partial_reg_dependency, x86_sse_split_regs,
11938         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
11939         x86_sse_load0_by_pxor, x86_use_ffreep, x86_use_incdec,
11940         x86_inter_unit_moves, x86_ext_80387_constants, x86_four_jump_limit,
11941         x86_schedule, x86_use_bt, x86_pad_returns,
11942         x86_use_xchgb): Merge into ...
11943         (ix86_tune_features): ... here.  New array.
11944         (x86_cmove, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
11945         x86_bswap): Merge into ...
11946         (ix86_arch_features): ... here.  New array.
11947         (x86_3dnow_a): Remove.
11948         (x86_accumulate_outgoing_args): Make static.
11949         (x86_arch_always_fancy_math_387): Make static.
11950         (ix86_tune_mask, ix86_arch_mask): Move ...
11951         (override_options): ... to local variables here.  Apply the
11952         appropriate mask to each element of ix86_arch_features and
11953         ix86_tune_features.  Adjust TARGET_CMOVE and TARGET_USE_SAHF
11954         as were done in the old macros.
11955         (standard_80387_constant_p): Use TARGET_EXT_80387_CONSTANTS.
11956         * config/i386/i386.h (x86_use_leave, x86_push_memory,
11957         x86_zero_extend_with_and, x86_use_bit_test, x86_cmove, x86_deep_branch,
11958         x86_branch_hints, x86_unroll_strlen, x86_double_with_add,
11959         x86_partial_reg_stall, x86_movx, x86_use_himode_fiop,
11960         x86_use_simode_fiop, x86_use_mov0, x86_use_cltd, x86_use_xchgb,
11961         x86_read_modify_write, x86_read_modify, x86_split_long_moves,
11962         x86_promote_QImode, x86_single_stringop, x86_fast_prefix,
11963         x86_himode_math, x86_qimode_math, x86_promote_qi_regs,
11964         x86_promote_hi_regs, x86_integer_DFmode_moves, x86_add_esp_4,
11965         x86_add_esp_8, x86_sub_esp_4, x86_sub_esp_8,
11966         x86_partial_reg_dependency, x86_memory_mismatch_stall,
11967         x86_accumulate_outgoing_args, x86_prologue_using_move,
11968         x86_epilogue_using_move, x86_decompose_lea,
11969         x86_arch_always_fancy_math_387, x86_shift1,
11970         x86_sse_partial_reg_dependency, x86_sse_split_regs,
11971         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
11972         x86_sse_load0_by_pxor, x86_use_ffreep, x86_inter_unit_moves,
11973         x86_schedule, x86_use_bt, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
11974         x86_use_incdec, x86_pad_returns, x86_bswap,
11975         x86_partial_flag_reg_stall): Remove.
11976         (enum ix86_tune_indices): New.
11977         (ix86_tune_features): New.
11978         (TARGET_USE_LEAVE, TARGET_PUSH_MEMORY, TARGET_ZERO_EXTEND_WITH_AND,
11979         TARGET_USE_BIT_TEST, TARGET_UNROLL_STRLEN,
11980         TARGET_DEEP_BRANCH_PREDICTION, TARGET_BRANCH_PREDICTION_HINTS,
11981         TARGET_DOUBLE_WITH_ADD, TARGET_USE_SAHF, TARGET_MOVX,
11982         TARGET_PARTIAL_REG_STALL, TARGET_PARTIAL_FLAG_REG_STALL,
11983         TARGET_USE_HIMODE_FIOP, TARGET_USE_SIMODE_FIOP, TARGET_USE_MOV0,
11984         TARGET_USE_CLTD, TARGET_USE_XCHGB, TARGET_SPLIT_LONG_MOVES,
11985         TARGET_READ_MODIFY_WRITE, TARGET_READ_MODIFY, TARGET_PROMOTE_QImode,
11986         TARGET_FAST_PREFIX, TARGET_SINGLE_STRINGOP, TARGET_QIMODE_MATH,
11987         TARGET_HIMODE_MATH, TARGET_PROMOTE_QI_REGS, TARGET_PROMOTE_HI_REGS,
11988         TARGET_ADD_ESP_4, TARGET_ADD_ESP_8, TARGET_SUB_ESP_4,
11989         TARGET_SUB_ESP_8, TARGET_INTEGER_DFMODE_MOVES,
11990         TARGET_PARTIAL_REG_DEPENDENCY, TARGET_SSE_PARTIAL_REG_DEPENDENCY,
11991         TARGET_SSE_UNALIGNED_MOVE_OPTIMAL, TARGET_SSE_SPLIT_REGS,
11992         TARGET_SSE_TYPELESS_STORES, TARGET_SSE_LOAD0_BY_PXOR,
11993         TARGET_MEMORY_MISMATCH_STALL, TARGET_PROLOGUE_USING_MOVE,
11994         TARGET_EPILOGUE_USING_MOVE, TARGET_SHIFT1, TARGET_USE_FFREEP,
11995         TARGET_INTER_UNIT_MOVES, TARGET_FOUR_JUMP_LIMIT, TARGET_SCHEDULE,
11996         TARGET_USE_BT, TARGET_USE_INCDEC, TARGET_PAD_RETURNS,
11997         TARGET_EXT_80387_CONSTANTS): Use it.
11998         (enum ix86_arch_indices): New.
11999         (ix86_arch_features): New.
12000         (TARGET_CMOVE, TARGET_CMPXCHG, TARGET_CMPXCHG8B, TARGET_XADD,
12001         TARGET_BSWAP): Use it.
12002         (ix86_tune_mask, ix86_arch_mask): Remove.
12003
12004 2007-03-06  Joseph Myers  <joseph@codesourcery.com>
12005
12006         PR bootstrap/31020
12007         * configure.ac (CROSS_SYSTEM_HEADER_DIR, build_system_header_dir):
12008         Define using $${sysroot_headers_suffix}.
12009         * configure: Regenerate.
12010         * cppdefault.c (cpp_include_defaults): Make FIXED_INCLUDE_DIR a
12011         multilib-suffixed directory if SYSROOT_HEADERS_SUFFIX_SPEC
12012         defined.
12013         * doc/invoke.texi (-print-sysroot-headers-suffix): Document.
12014         * gcc.c (print_sysroot_headers_suffix): New.
12015         (option_map): Include --print-sysroot-headers-suffix.
12016         (display_help): Mention -print-sysroot-headers-suffix.
12017         (process_command): Handle -print-sysroot-headers-suffix.
12018         (do_spec_1): Append multilib directory to include-fixed path if
12019         sysroot suffixes in use.
12020         (main): Handle -print-sysroot-headers-suffix.
12021         * Makefile.in (start.encap): Don't depend on xlimits.h
12022         (xlimits.h): Remove.
12023         (stmp-int-hdrs): Don't depend on xlimits.h.  Inline generation of
12024         limits.h for each multilib in fixinc_list.
12025         (fixinc_list, s-fixinc_list): New.
12026         (stmp-fixinc): Depend on fixinc_list.  If not copying headers,
12027         generate them for each multilib in fixinc_list.
12028         (stmp-fixproto): Use include-fixed.  Run fixproto for each
12029         multilib in fixinc_list.
12030         (mostlyclean): Don't remove xlimits.h.
12031         (clean): Remove include-fixed.
12032         (real-install-headers-tar, real-install-headers-cpio,
12033         real-install-headers-cp): Don't copy include, only include-fixed.
12034         (install-mkheaders): Depend on fixinc_list.  Don't depend on
12035         xlimits.h.  Save limits.h files for each multilib in fixinc_list.
12036         Always save mkinstalldirs.  Preserve ${sysroot_headers_suffix} in
12037         SYSTEM_HEADER_DIR setting in mkheaders.conf.
12038
12039 2007-03-06  Jan Hubicka  <jh@suse.cz>
12040
12041         * regstack.c (reg_to_stack): When in 64bit PIC mode, we still can load
12042         NANs easilly.
12043
12044 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
12045
12046         * configure.ac: Allow tm_file to contain build-directory files.
12047         * configure: Regenerate.
12048         * config.gcc (m68k-*-uclinux*): Add ./sysroot-suffix.h to tm_file.
12049         * config/m68k/t-uclinux (sysroot-suffix.h): New target.
12050         * config/m68k/print-sysroot-suffix.sh: New file.
12051
12052 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
12053
12054         * config/m68k/m68k.h (PIC_OFFSET_TABLE_REGNUM): Use the REGNO
12055         of pic_offset_table_rtx if reload_completed.
12056         (CONDITIONAL_REGISTER_USAGE): Use PIC_REG instead of
12057         PIC_OFFSET_TABLE_REGNUM.
12058         * config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Always
12059         return true.
12060         (m68k_save_reg): Use PIC_REG instead of PIC_OFFSET_TABLE_REGNO.
12061         (m68k_output_mi_thunk): Rewrite to use RTL.  Honor vcall_offset.
12062
12063 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
12064
12065         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
12066         functions that call eh_return.
12067
12068 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
12069
12070         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
12071         functions that need a constant pool.
12072
12073 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
12074
12075         PR target/28181
12076         * config/m68k/m68k-protos.h (m68k_secondary_reload_class): Declare.
12077         (m68k_preferred_reload_class): Likewise.
12078         * config/m68k/m68k.h (HARD_REGNO_MODE_OK): Remove duplicated comment.
12079         (SECONDARY_RELOAD_CLASS): Define.
12080         (PREFERRED_RELOAD_CLASS): Use m68k_preferred_reload_class.
12081         (LIMIT_RELOAD_CLASS): Delete.
12082         * config/m68k/m68k.c (m68k_regno_mode_ok): Don't prevent address
12083         registers from storing bytes.
12084         (m68k_secondary_reload_class): New function.
12085         (m68k_preferred_reload_class): Likewise.
12086
12087 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
12088
12089         * config/m68k/m68k.c (m68k_save_reg): Remove special case for
12090         leaf functions.
12091         (m68k_expand_prologue): Likewise.
12092
12093 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
12094
12095         * config/m68k/m68k-protos.h (output_sibcall): Declare.
12096         (mips_expand_epilogue): Add a bool parameter.
12097         (m68k_legitimize_sibcall_address): Declare.
12098         * config/m68k/m68k.c (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
12099         (m68k_expand_epilogue): Add a parameter to select between sibling
12100         and normal epilogues.  Only generate a return for the latter.
12101         (m68k_ok_for_sibcall_p): New function.
12102         (m68k_legitimize_sibcall_address, output_sibcall): New functions.
12103         * config/m68k/m68k.md (sibcall, *sibcall): New patterns.
12104         (sibcall_value, *sibcall_value): Likewise.
12105         (*call, *call_value): Require !SIBLING_CALL_P.
12106         (epilogue): Update call to m68k_expand_epilogue.
12107         (sibcall_epilogue): New pattern.
12108         * config/m68k/predicates.md (const_call_operand): Say that this
12109         predicate applies to sibling calls too.
12110         (sibcall_operand): New predicate.
12111
12112 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
12113
12114         * config/m68k/m68k.md (movsf_cf_soft): Provide the same non-mov3q
12115         alternatives as movsi_cf.
12116         (movsf_cf_hard): Add commentary.
12117
12118 2007-03-06  Kazu Hirata  <kazu@codesourcery.com>
12119             Richard Sandiford  <richard@codesourcery.com>
12120
12121         * config/m68k/m68k-protos.h (m68k_interrupt_function_p): Declare.
12122         (m68k_movem_pattern_p, m68k_output_movem): Likewise.
12123         (m68k_expand_prologue, m68k_expand_epilogue): Likewise.
12124         * config/m68k/m68k.h (EPILOGUE_USES): Define.  Treat all registers
12125         as being live on exit from an interrupt function.
12126         (PRINT_OPERAND_PUNCT_VALID_P): Return true for '?'.
12127         * config/m68k/m68k.c (MIN_MOVEM_REGS, MIN_FMOVEM_REGS): New macros.
12128         (m68k_frame): Remove reg_rev_mask and fpu_rev_mask.
12129         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Delete.
12130         (m68k_interrupt_function_p): Globalize.
12131         (m68k_compute_frame_layout): Remove reverse mask code.
12132         (m68k_emit_movem, m68k_set_frame_related): New functions.
12133         (m68k_output_function_prologue): Delete in favor of...
12134         (m68k_expand_prologue): ...this new function.
12135         (m68k_output_function_epilogue): Delete in favor of...
12136         (m68k_expand_epilogue): ...this new function.
12137         (m68k_split_offset, m68k_movem_pattern_p, m68k_output_movem): New
12138         functions.
12139         (print_operand): Handle %?.
12140         * config/m68k/m68k.md (UNSPEC_SIN, UNSPEC_COS): Remove excess space.
12141         (UNSPEC_GOT, A1_REG, PIC_REG, FP0_REG): New constants.
12142         (prologue, epilogue): New patterns.
12143         (return): Turn into a define_expand.
12144         (*return): New pattern, derived from old "return" pattern.  Use rte
12145         rather than rts for interrupt functions.  Only use rtd if the pop
12146         count is nonzero.
12147         (*m68k_store_multiple, *m68k_store_multiple_automod): New patterns.
12148         (*m68k_load_multiple, *m68k_load_multiple_automod): Likewise.
12149         (link, *link, unlink, *unlink, load_got): Likewise.
12150
12151 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
12152
12153         PR target/23482
12154         PR target/17114
12155         * config/m68k/m68k-protos.h (m68k_legitimate_base_reg_p): Declare.
12156         (m68k_legitimate_index_reg_p, m68k_legitimate_address_p): Likewise.
12157         (m68k_matches_q_p, m68k_matches_u_p): Likewise.
12158         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Use m68k_matches_q_p
12159         and m68k_matches_u_p.
12160         (PCREL_GENERAL_OPERAND_OK, LEGITIMATE_BASE_REG_P): Delete.
12161         (INDIRECTABLE_1_ADDRESS_P, GO_IF_NONINDEXED_ADDRESS): Delete.
12162         (GO_IF_INDEXABLE_BASE, GO_IF_INDEXING, GO_IF_INDEXED_ADDRESS): Delete.
12163         (LEGITIMATE_INDEX_REG_P, LEGITIMATE_INDEX_P): Delete.
12164         (GO_IF_COLDFIRE_FPU_LEGITIMATE_ADDRESS): Delete.
12165         (REG_STRICT_P): New macro.
12166         (LEGITIMATE_PIC_OPERAND_P): Use REG_STRICT_P rather than
12167         PCREL_GENERAL_OPERAND_OK.
12168         (REG_OK_FOR_BASE_P): Merge definitions.  Use REG_STRICT_P and
12169         m68k_legitimate_base_reg_p.
12170         (REG_MODE_OK_FOR_INDEX_P): Likewise m68k_legitimate_index_reg_p.
12171         (GO_IF_LEGITIMATE_ADDRESS): Likewise m68k_legitimate_address_p.
12172         (PIC_CASE_VECTOR_ADDRESS): Update comment.
12173         * config/m68k/m68k.c (m68k_address): New structure.
12174         (m68k_legitimate_base_reg_p, m68k_legitimate_index_reg_p)
12175         (m68k_decompose_index, m68k_legitimate_constant_address_p)
12176         (m68k_jump_table_ref_p, m68k_decompose_address)
12177         (m68k_legitimate_address_p, m68k_legitimate_mem_p, m68k_matches_q_p)
12178         (m68k_matches_u_p): New functions.
12179         (print_operand_address): Rewrite to use m68k_decompose_index.
12180
12181 2007-03-05  David Taylor  <dtaylor@emc.com>
12182
12183         * gcc.c: Correct copyright date in --version output.
12184
12185 2007-03-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
12186
12187         * pa.md: In unamed move patterns, disparge copies between general
12188         and floating point registers using '?' modifier.  Don't include 'f'
12189         constraint for register preferences in DImode, SImode, HImode and
12190         QImode patterns.  Likewise for 'r' in DFmode and SFmode patterns.
12191         Remove constraints for copies between general and floating registers
12192         in soft-float DFmode pattern.
12193         (movdf): Fail if operand1 is a CONST_DOUBLE and operand0 is a hard
12194         floating register.
12195         (movsf): Likewise.
12196
12197 2007-03-05  Mike Stump  <mrs@apple.com>
12198
12199         * c-common.c (targetcm): Add.
12200         * c-opts.c (c_common_handle_option): Handle language specific
12201         target options.
12202         * opts.c (handle_option): Verify language for target options, if
12203         any are given.
12204         * opth-gen.awk: Add CL_LANG_ALL.
12205         * target-def.h (TARGET_HANDLE_C_OPTION): Add.
12206         (TARGETCM_INITIALIZER): Add.
12207         * target.h (struct gcc_targetcm): Add.
12208         (targetcm): Add.
12209         * targhooks.c (default_handle_c_option): Add.
12210         * targhooks.h (default_handle_c_option): Add.
12211         * doc/tm.texi (TARGET_HANDLE_C_OPTION): Add.
12212
12213         * config/darwin.opt (iframework): Add.
12214         * config/darwin.h (TARGET_HAS_TARGETCM): Add.
12215         * config/darwin-c.c (handle_c_option): Add.
12216         (TARGET_HANDLE_C_OPTION): Add.
12217         (targetcm): Add.
12218         * doc/invoke.texi (Darwin Options): Add -iframework.
12219
12220 2007-03-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12221
12222         * convert.c (convert_to_integer): Fix nearbyint/rint -> *lrint
12223         conversion.
12224
12225 2007-03-05  Ian Lance Taylor  <iant@google.com>
12226
12227         * c.opt (fgnu89-inline): New option.
12228         * c-opts.c (c_common_post_options): Set default value for
12229         flag_gnu89_inline.
12230         * c-decl.c (WANT_C99_INLINE_SEMANTICS): Remove.
12231         (pop_scope): Check flag_gnu89_inline rather than flag_isoc99 for
12232         inline functions.
12233         (diagnose_mismatched_decls, merge_decls, start_decl): Likewise.
12234         (grokdeclarator, start_function): Likewise.
12235         * c-cppbuiltin.c (c_cpp_builtins): Define either
12236         __GNUC_GNU_INLINE__ or __GNUC_STDC_INLINE__.
12237         * doc/invoke.texi (Option Summary): Mention -fgnu89-inline.
12238         (C Dialect Options): Document -fgnu89-inline.
12239         * doc/extend.texi (Function Attributes): Explain what the
12240         gnu_inline attribute does.
12241         * doc/cpp.texi (Common Predefined Macros): Document
12242         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
12243
12244 2007-03-05  Ian Lance Taylor  <iant@google.com>
12245
12246         PR tree-optimization/31034
12247         * tree-vrp.c (extract_range_from_assert): Don't try to handle a
12248         half-range if the other side is an overflow infinity.
12249
12250 2007-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
12251
12252         * config.gcc (bfin*-uclinux*): Use t-bfin-uclinux.
12253         (bfin*-linux-uclibc*): New configuration.
12254         * config/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Undefined before
12255         defining.
12256         * config/bfin/linux.h: New file.
12257         * config/bfin/libgcc-bfin.ver: New file.
12258         * config/bfin/t-bfin-uclinux: New file.
12259         * config/bfin/t-bfin-linux: New file.
12260         * config/bfin/uclinux.h (LINUX_TARGET_OS_CPP_BUILTINS): New macro.
12261         (TARGET_OS_CPP_BUILTINS): New macro.
12262
12263 2007-03-05  Richard Guenther  <rguenther@suse.de>
12264
12265         * fold-const.c (fold_binary): Remove duplicate folding
12266         of comparison of non-null ADDR_EXPR against null.
12267
12268 2007-03-05  Richard Guenther  <rguenther@suse.de>
12269             Dorit Nuzman  <dorit@il.ibm.com>
12270
12271         PR tree-optimization/26420
12272         * tree-vectorizer.c (vectorize_loops): Bail out early if there
12273         are no loops in the function.  Only print the number of
12274         vectorized loops if it is greater than zero or we are supposed
12275         to print information about unvectorized loops.
12276
12277 2007-03-05  Revital Eres  <eres@il.ibm.com>
12278
12279         * gcc.dg/var-expand1.c: New test.
12280         * loop-unroll.c (analyze_insn_to_expand_var): Add dump info
12281         when an accumulator is expanded.
12282
12283 2007-03-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
12284
12285         PR other/30465
12286         * c-common.c (convert_and_check): Don't give warnings for
12287         conversion if 'expr' already overflowed.
12288
12289 2007-03-04  Roger Sayle  <roger@eyesopen.com>
12290
12291         PR middle-end/30744
12292         * fold-const.c (fold_comparison): Enforce type consistency when
12293         transforming ~X op ~Y to Y op X, and ~X op C to X op' ~C.
12294
12295 2007-03-04  Zdenek Dvorak  <dvorakz@suse.cz>
12296
12297         * tree-ssa-address.c (create_mem_ref): Do not put an expression
12298         containing a cast to the base of TARGET_MEM_REF.
12299
12300 2007-03-04  Martin Michlmayr  <tbm@cyrius.com>
12301
12302         * tree.c (tree_contains_struct_check_failed): Remove spurious
12303         whitespace from error message.
12304
12305 2007-03-04 Andrew Pinski <andrew_pinski@playstation.sony.com>
12306
12307         PR target/30406
12308         * config/rs6000/rs6000.c (rs6000_function_value): Look at bit size
12309         instead of precision.
12310
12311 2007-03-04  Roman Zippel <zippel@linux-m68k.org>
12312             Nathan Sidwell  <nathan@codesourcery.com>
12313
12314         * emit-rtl.c (find_auto_inc): New.
12315         (try_split): recreate REG_INC notes,
12316         Use regular for loops rather than whiles.
12317
12318 2007-03-03  Andreas Schwab  <schwab@suse.de>
12319
12320         * configure.ac (HAVE_AS_REL16): Move test back to correct place.
12321         * configure: Regenerate.
12322
12323 2007-03-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12324
12325         * builtins.def (ATTR_MATHFN_FPROUNDING): Rely on
12326         flag_rounding_math, not flag_unsafe_math_optimizations.
12327
12328         * c-pretty-print.c (pp_c_direct_abstract_declarator): Use
12329         fold_build2.
12330         * config/alpha/alpha.c (alpha_fold_builtin_zapnot,
12331         alpha_fold_vector_minmax): Likewise.
12332         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
12333         * config/sparc/sparc.c (sparc_gimplify_va_arg): Likewise.
12334
12335 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
12336
12337         * tree-sra.c (sra_walk_fns) <ldst>: Document new restriction.
12338         (sra_walk_modify_expr) <rhs_elt>: Treat the reference as a use
12339         if the lhs has side-effects.
12340         <lhs_elt>: Treat the reference as a use if the rhs has side-effects.
12341
12342 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
12343
12344         * config/i386/i386.h (TUNEMASK): Remove define.
12345         (ARCHMASK): Remove define.
12346         (TARGET_*): Use ix86_tune_mask variable instead of TUNEMASK.
12347          Use ix86_arch_mask variable instead of ARCHMASK.
12348         * config/i386/i386.c (override_options): Ditto.
12349         (standard_80387_constant_p): Ditto.
12350
12351 2007-03-02  Ian Lance Taylor  <iant@google.com>
12352
12353         Used signed infinities in VRP.
12354         * tree-vrp.c (uses_overflow_infinity): New static function.
12355         (supports_overflow_infinity): New static function.
12356         (make_overflow_infinity): New static function.
12357         (negative_overflow_infinity): New static function.
12358         (positive_overflow_infinity): New static function.
12359         (is_negative_overflow_infinity): New static function.
12360         (is_positive_overflow_infinity): New static function.
12361         (is_overflow_infinity): New static function.
12362         (overflow_infinity_range_p): New static function.
12363         (compare_values_warnv): New function split out of compare_values.
12364         (compare_value): Call it.
12365         (set_value_range_to_nonnegative): Add overflow_infinity
12366         parameter.  Change caller.
12367         (vrp_expr_computes_nonnegative): Add strict_overflow_p parameter.
12368         Change callers.
12369         (vrp_expr_computes_nonzero): Likewise.
12370         (compare_ranges, compare_range_with_value): Likewise.
12371         (compare_name_with_value, compare_names): Likewise.
12372         (vrp_evaluate_conditional): Likewise.
12373         (set_value_range): Handle infinity
12374         (vrp_operand_equal_p, operand_less_p): Likewise.
12375         (extract_range_from_assert): Likewise.
12376         (vrp_int_const_binop): Likewise.
12377         (extract_range_from_binary_expr): Likewise.
12378         (extract_range_from_unary_expr): Likewise.
12379         (extract_range_from_comparison): Likewise.
12380         (extract_range_from_expr): Likewise.
12381         (dump_value_range): Likewise.
12382         (vrp_visit_cond_stmt, vrp_visit_phi_node): Likewise.
12383         (test_for_singularity): Likewise.
12384         (vrp_int_const_binop): Remove inline qualifier.
12385         (adjust_range_with_scev): Add comment.
12386         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
12387
12388 2007-03-02  Diego Novillo  <dnovillo@redhat.com>
12389
12390         * tree-ssa-structalias.c (could_have_pointers): Tidy.
12391         (get_constraint_for): Likewise.
12392         (do_structure_copy): Likewise.
12393         (find_func_aliases): Fix references to MODIFY_EXPR.
12394         (intra_create_variable_infos): Tidy.
12395         * tree-ssa-operands.c (add_virtual_operand): Add argument
12396         IS_CALL_SITE.
12397         When adding members of alias sets, if IS_CALL_SITE is true and
12398         the symbol is not call-clobbered, skip it.
12399         Adjust all callers.
12400
12401 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
12402
12403         * config/alpha/alpha.c (alpha_gp_save_rtx): Insert the insns at the
12404         entry by means of emit_insn_at_entry.
12405
12406 2007-03-02  Richard Henderson  <rth@redhat.com>
12407
12408         * expr.h (promoted_input_arg): Remove decl.
12409         * function.c (promoted_input_arg): Merge into ...
12410         * combine.c (setup_incoming_promotions): ... only caller.
12411         Rearrange to avoid double loop.
12412
12413 2007-03-02  Ben Elliston  <bje@au.ibm.com>
12414             Peter Bergner  <bergner@vnet.ibm.com>
12415             Janis Johnson  <janis187@us.ibm.com>
12416
12417         * config/rs6000/dfp.md: New file.
12418         * config/rs6000/rs6000.md: Include dfp.md.
12419         (add<mode>3_internal1): Disable for DECIMAL_FLOAT_MODE_P operands.
12420         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Handle DDmode
12421         and TDmode decimal float modes in FP registers.
12422         (num_insns_constant): Likewise.
12423         (rs6000_legitimate_offset_address_p): Likewise.
12424         (rs6000_legitimize_address): Likewise.
12425         (rs6000_legitimize_reload_address): Likewise.
12426         (rs6000_legitimate_address): Likewise.
12427         (rs6000_emit_move): Likewise.
12428         (function_arg_boundary): Likewise.
12429         (function_arg_advance): Likewise.
12430         (rs6000_darwin64_record_arg_recurse): Likewise.
12431         (function_arg): Likewise.
12432         (rs6000_gimplify_va_arg): Likewise.
12433         (rs6000_split_multireg_move): Likewise.
12434         (rs6000_output_function_epilogue): Likewise.
12435         (rs6000_output_function_epilogue): Likewise.
12436         (rs6000_register_move_cost): Likewise.
12437         (rs6000_function_value): Likewise.
12438         (rs6000_libcall_value): Likewise.
12439
12440 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
12441
12442         * config/t-vxworks (LIMITS_H_TEST): Define to true for VxWorks.
12443
12444 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
12445
12446         * config/t-vxworks (LIBGCC2_INCLUDES): Pass -nostdinc.
12447         Use $MULTIDIR to choose between the kernel and RTP headers,
12448         and use $WIND_BASE and $WIND_USR to locate them.
12449
12450 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
12451
12452         * config/i386/i386.c (override_options): Put initialization of
12453         ix86_tune_mask and ix86_arch_mask to the correct place.
12454
12455 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
12456             Michael Meissner  <michael.meissner@amd.com>
12457
12458         PR target/31019
12459         * config/i386/i386.h (TUNEMASK): Redefine to use ix86_tune_mask.
12460         (ARCHMASK): Define.
12461         (TARGET_CMOVE): Use ARCHMASK.
12462         (TARGET_CMPXCHG): Ditto.
12463         (TARGET_CMPXCHG8B): Ditto.
12464         (TARGET_XADD): Ditto.
12465         (TARGET_BSWAP): Ditto.
12466         * config/i386/i386.c (ix86_tune_mask): New global variable.
12467         (ix86_arch_mask): Ditto.
12468         (override_options): Initialize ix86_tune_mask and
12469         ix86_arch_mask. Use ARCHMASK to clear MASK_NO_FANCY_MATH_387 in
12470         target_flags.
12471
12472 2007-03-02  Ben Elliston  <bje@au.ibm.com>
12473
12474         PR 30992
12475         * config/dfp-bit.c (DFP_TO_INT): Initialise qval with "1.".
12476
12477 2007-03-02  Joseph Myers  <joseph@codesourcery.com>
12478
12479         * target.h (init_dwarf_reg_sizes_extra): New target hook.
12480         * target-def.h (TARGET_INIT_DWARF_REG_SIZES_EXTRA): New default.
12481         * doc/tm.texi (TARGET_INIT_DWARF_REG_SIZES_EXTRA): Document.
12482         * dwarf2out.c (expand_builtin_init_dwarf_reg_sizes): Call this
12483         hook.
12484         * config/rs6000/rs6000.c (TARGET_INIT_DWARF_REG_SIZES_EXTRA,
12485         rs6000_init_dwarf_reg_sizes_extra): New.
12486         * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Support
12487         SPE register high parts.
12488
12489 2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>
12490
12491         * Makefile.in: Add install-pdf target as
12492         copied from automake v1.10 rules.
12493         * configure.ac: Add install-pdf to target list.
12494         * configure: Regenerate.
12495
12496 2007-03-01  Paul Brook  <paul@codesourcery.com>
12497
12498         * config/arm/arm.c (arm_legitimate_index_p): Limit iWMMXt addressing
12499         modes to LDRD for DImode.
12500         (output_move_double): Fixup out of range ldrd/strd.
12501         (vfp_secondary_reload_class): Rename...
12502         (coproc_secondary_reload_class): ... to this.  Add wb argument.
12503         * config/arm/arm.h (SECONDARY_OUTPUT_RELOAD_CLASS): Use
12504         coproc_secondary_reload_class for CLASS_IWMMXT.
12505         (SECONDARY_INPUT_RELOAD_CLASS): Ditto.
12506         * arm-protos.h (coproc_secondary_reload_class): Update prototype.
12507
12508 2007-03-01  Zdenek Dvorak  <dvorakz@suse.cz>
12509
12510         * tree-ssa-loop-prefetch.c (determine_unroll_factor):  Bound the
12511         unroll factor by the estimated number of iterations.
12512         (loop_prefetch_arrays): Do not prefetch in loops that iterate less
12513         than prefetch latency.
12514
12515         * config/i386/driver-i386.c (describe_cache, detect_caches_amd,
12516         decode_caches_intel, detect_caches_intel): New functions.
12517         (host_detect_local_cpu): Use detect_caches_amd and
12518         detect_caches_intel.
12519
12520 2007-03-01  Richard Henderson  <rth@redhat.com>
12521
12522         * expr.c (emit_move_complex_push): Export.
12523         (emit_move_complex_parts): Split out from ...
12524         (emit_move_complex): ... here.
12525         * expr.h (emit_move_complex_push, emit_move_complex_parts): Declare.
12526         * config/i386/i386.md (movcdi): New.
12527
12528 2007-03-01  Uros Bizjak  <ubizjak@gmail.com>
12529
12530         * config/i386/i386.c (ix86_modes_tieable_p): Fix typo, use also
12531         size of mode1 to check for tieable modes in MMX case.
12532
12533 2007-03-01  Richard Sandiford  <richard@codesourcery.com>
12534
12535         * Makefile.in (rtlanal.o): Depend on tree.h.
12536         * rtl.h (offset_within_section_p, split_const): Declare.
12537         * rtlanal.c: Include tree.h.
12538         (offset_within_block_p): New function, taken from
12539         mips_offset_within_object_p.
12540         (split_const): New function, taken from mips_split_const.
12541         * config/m68k/m68k-protos.h (m68k_illegitimate_symbolic_constant_p):
12542         Declare.
12543         * config/m68k/m68k.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define.
12544         (CONSTANT_ADDRESS_P): Only accept legitimate constants.
12545         (LEGITIMATE_CONSTANT_P): Check m68k_illegitimate_symbolic_constant_p.
12546         * config/m68k/m68k.c (TARGET_CANNOT_FORCE_CONST_MEM): Define.
12547         (m68k_illegitimate_symbolic_constant_p): New function.
12548         * config/m68k/m68k.md (movsi): Remove misleading predicates.
12549         If M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P and the source is a
12550         symbolic constant that might be outside the symbol's section,
12551         move the symbol first and then add the offset.
12552         * config/m68k/uclinux.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P):
12553         Override.
12554         * config/mips/mips.c (mips_split_const): Delete.
12555         (mips_offset_within_object_p): Delete.
12556         (mips_symbolic_constant_p): Use offset_within_section_p and
12557         split_const instead of mips_offset_within_object_p and
12558         mips_split_const.
12559         (mips_cannot_force_const_mem, mips_const_insns, mips_unspec_address)
12560         (mips_legitimize_const_move, print_operand_reloc)
12561         (mips_dangerous_for_la25_p): Use split_const instead of
12562         mips_split_const.
12563
12564 2007-02-28  Eric Christopher  <echristo@apple.com>
12565
12566         * Makefile.in (install-include-dir): Don't rm -rf include.
12567
12568 2007-02-28  Richard Guenther  <rguenther@suse.de>
12569
12570         PR middle-end/30364
12571         * fold-const.c (fold_binary): Do not associate expressions
12572         with more than one variable for integer types that do not wrap.
12573
12574 2007-02-28  Sandra Loosemore  <sandra@codesourcery.com>
12575
12576         * builtins.c (fold_builtin_call_list, fold_builtin_call_valist):
12577         Delete, and replace with...
12578         (fold_builtin_call_array): This.  Update callers to use it.
12579         * fold-const.c (fold_build_call_list): Delete, and replace with...
12580         (fold_build_call_array): This.
12581         (fold_build_call_list_initializer): Delete, and replace with...
12582         (fold_build_call_array_initializer): This.
12583         * tree.h: Update declarations to reflect above changes.
12584
12585         * c-typeck.c (build_function_call): Store converted arguments
12586         in a stack-allocated array instead of building a list.
12587         (convert_arguments): Store arguments in the array passed in as an
12588         argument, and return the actual number of arguments.
12589         * c-format.c: (check_function_format): Pass arguments in an
12590         array instead of a list.
12591         * c-common.c (check_function_nonnull): Likewise.
12592         (check_function_sentinel): Likewise.
12593         (check_function_arguments): Likewise.
12594         * c-common.h: Update declarations to reflect above changes.
12595
12596 2007-02-28  Jan Hubicka  <jh@suse.cz>
12597
12598         * predict.def (PRED_TREE_EARLY_RETURN, PRED_CONST_RETURN,
12599         PRED_NEGATIVE_RETURN): Update outcomes.
12600
12601 2007-02-28  Bernd Schmidt  <bernd.schmidt@analog.com>
12602
12603         * calls.c (emit_library_call_value_1): Handle partial registers
12604         correctly when building up CALL_INSN_FUNCTION_USAGE.
12605
12606 2007-02-27  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
12607
12608         * pa/predicates.md (move_src_operand): Allow zero for mode.
12609         * pa/pa.md: Fix constraints for zero CONST_DOUBLE in 64-bit DFmode
12610         move pattern.
12611
12612 2007-02-27  Uros Bizjak  <ubizjak@gmail.com>
12613
12614         PR target/30970
12615         * config/i386/sse.md (*mov<mode>_internal, *movv4sf_internal,
12616         *movv2df_internal): Enable pattern only for valid operand
12617         combinations.
12618         * config/i386/i386.c (ix86_modes_tieable_p): For SSE registers,
12619         tie only 128bit modes. For MMX registers, tie only 64bit modes.
12620
12621 2007-02-27  Mike Stump  <mrs@apple.com>
12622
12623         * config/darwin-crt3.c: Avoid compilation when compiling for a
12624         kext multilib.
12625
12626 2007-02-27  Joseph Myers  <joseph@codesourcery.com>
12627
12628         * Makefile.in (PREPROCESSOR_DEFINES, test-protoize-simple): Define
12629         FIXED_INCLUDE_DIR.
12630         (stmp-int-hdrs, stmp-fixinc, install-headers): Use include-fixed
12631         for fixed headers and limits.h.
12632         (install-include-dir, install-headers-tar, install-headers-cpio,
12633         install-headers-cp, real-install-headers-tar,
12634         real-install-headers-cpio, real-install-headers-cp): Handle
12635         include-fixed as well as include.
12636         (install-mkheaders): Don't install files that go only in include
12637         not include-fixed.
12638         * cppdefault.c (cpp_include_defaults): Separate FIXED_INCLUDE_DIR
12639         from GCC_INCLUDE_DIR.
12640         * gcc.c (process_command): Remove special -BstageN/ handling.
12641         (do_spec_1): Add include-fixed directories.
12642
12643 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
12644
12645         * config/bfin/t-bfin-elf (LIB1ASMFUNCS): Add _umulsi3_highpart and
12646         _smulsi3_highpart.
12647         * config/bfin/lib1funcs.asm (___umulsi3_highpart, ___smulsi3_highpart):
12648         New functions.
12649         * config/bfin/bfin.md (smulsi3_highpart, umulsi3_highpart): New
12650         patterns.
12651
12652 2007-02-27  Mark Mitchell  <mark@codesourcery.com>
12653
12654         * c-common.c (get_priority): Add check for
12655         SUPPORTS_INIT_PRIORITY.
12656
12657 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
12658
12659         * config/bfin/bfin.md (doloop_end): FAIL if counter reg isn't SImode.
12660
12661         * config/bfin/bfin.c: Include "cfglayout.h".
12662         (MAX_LSETUP_DISTANCE): New macro.
12663         (struct loop_info): New members incoming, incoming_src and
12664         incoming_dest.  Delete member predecessor.
12665         (length_for_loop): New function.
12666         (bfin_optimize_loop): Handle more different loop structures.
12667         (bfin_discover_loop): Rework detection of predecessor blocks by
12668         examining incoming edges.
12669         (bfin_discover_loops, bfin_free_loops): New functions, broken out of
12670         bfin_reorg_loops.
12671         (bfin_reorder_loops): New function.
12672         (bfin_reorg_loops): Use these three new functions.
12673
12674         * config/bfin/bfin.h (enum reg_class, REG_CLASS_NAMES,
12675         REG_CLASS_CONTENTS): Add D0REGS through D7REGS.
12676         (CONSTRAINT_LEN): Add entry for 'q'.
12677         (REG_CLASS_FROM_CONSTRAINT): Renamed from REG_CLASS_FROM_LETTER.
12678         Add 'q' constraints.
12679         (REGNO_REG_CLASS): For R0 through R7, return corresponding regclass.
12680         (CLASS_LIKELY_SPILLED_P): True for R0, R1 and R2.
12681
12682         * config/bfin/bfin.md (add_with_carry): New pattern.
12683         (s_or_u, su_optab, su_modifier): New code macros/attrs.
12684         (<su_optab>hisi_ll, <su_optab>hisi_lh, <su_optab>hisi_hl,
12685         <su_optab>hisi_hh): Renamed from mulhisi_xx patterns; macroized to
12686         support unsigned multiplies too.  Removed incorrect commutativity from
12687         operand 1 constraint where appropriate.
12688         (usmulhisi_ull, usmulhisi_ulh, usmulhisi_uhl, usmulhisi_uhh): New
12689         patterns.
12690         (<su_optab>hisi_ll_lh, <su_optab>hisi_ll_hl, <su_optab>hisi_ll_hh,
12691         <su_optab>hisi_lh_hl, <su_optab>hisi_lh_hh, <su_optab>hisi_hl_hh):
12692         New patterns.
12693         (usmulhisi_ll_lul, usmulhisi_ll_luh, usmulhisi_ll_hul,
12694         usmulhisi_ll_huh, usmulhisi_lh_lul, usmulhisi_lh_luh, usmulhisi_lh_hul,
12695         usmulhisi_lh_huh, usmulhisi_hl_lul, usmulhisi_hl_luh, usmulhisi_hl_hul,
12696         usmulhisi_hl_huh, usmulhisi_hh_lul, usmulhisi_hh_luh, usmulhisi_hh_hul,
12697         usmulhisi_hh_huh): New patterns.
12698
12699         * config/bfin/bfin.md (ssashiftv2hi3, ssashifthi3, lshiftv2hi3,
12700         lshifthi3): Fix output template to use half reg for operand 2.
12701
12702         * config/bfin/bfin.c (bfin_output_mi_thunk): Use R3 as scratch reg
12703         instead of R2.
12704
12705         * config/bfin/bfin.md (rotl16, rotlsi3, rotrsi3): New patterns.
12706
12707 2007-02-27  Andreas Schwab  <schwab@suse.de>
12708
12709         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-common.texi.
12710
12711 2007-02-27  Jan Hubicka  <jh@suse.cz>
12712
12713         * predict.c (last_basic_block_p): Remove.
12714         (tree_estimate_probability): Update return heuristic for commonized
12715         return blocks.
12716
12717 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
12718
12719         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-vers.texi dependency.
12720
12721 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
12722
12723         * doc/include/gcc-common.texi (versionsubtitle): New macro.
12724         * doc/cpp.texi: Standardize title page.
12725         * doc/cppinternals.texi: Likewise.
12726         * doc/gcc.texi: Standardize title page, remove version number
12727         from copyright page.
12728         * doc/gccint.texi: Likewise.
12729         * doc/install.texi: Standardize title page, add table of
12730         contents.
12731
12732 2007-02-26  Jan Hubicka  <jh@suse.cz>
12733
12734         * predict.def: Set outcomes according to more recent results.
12735         (PRED_LOOP_CONDITION, PRED_LOOP_PRECONDITIONING, PRED_LOOP_HEADER):
12736         Remove dead predictors.
12737         * predict.c (return_prediction): Fix pasto.
12738
12739 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
12740
12741         * loop-iv.c (simplify_using_initial_values): Fix oversight in previous
12742         change; avoid a memory leak when returning early.
12743
12744 2007-02-26  Mark Mitchell  <mark@codesourcery.com>
12745
12746         * c-decl.c (static_ctors): Move to c-common.c.
12747         (static_dtors): Likewise.
12748         (finish_function): Use c_record_cdtor_fn.
12749         (build_cdtor): Move to c-common.c.
12750         (c_write_global_declarations): Use c_build_cdtor_fns.
12751         * c-common.h (static_ctors): Declare.
12752         (static_dtors): Likewise.
12753         (c_record_cdtor_fn): Likewise.
12754         (c_build_cdtor_fns): Likewise.
12755         * c-common.c (static_ctors): New variable.
12756         (static_dtors): Likewise.
12757         (c_record_cdtor_fn): New function.
12758         (build_cdtor): Move from c-decl.c
12759         (c_build_cdtor_fns): New function.
12760
12761         * output.h (assemble_addr_to_section): Declare.
12762         (get_cdtor_priority_section): Likewise.
12763         * varasm.c (assemble_addr_to_section): New function.
12764         (get_cdtor_priority_section): Likewise.
12765         (default_named_section_asm_out_destructor): Use them.
12766         (destor_dtor_section_asm_out_destructor): Likewise.
12767         (default_named_section_asm_out_constructor): Likewise.
12768         (default_ctor_section_asm_out_constructor): Likewise.
12769         * config.gcc (*-*-vxworks*): Include vxworks.o.
12770         * config/t-vxworks (vxworks.o): New target.
12771         * config/vxworks.h (ALWAYS_NUMBER_CTORS_SECTIONS): Remove.
12772         (TARGET_ASM_CONSTRUCTOR): Define.
12773         (TARGET_ASM_DESTRUCTOR): Likewise.
12774         (vxworks_asm_out_constructor): Declare.
12775         (vxworks_asm_out_destructor): Likewise.
12776
12777         * c-common.c (get_priority): Check that we have not just an
12778         INTEGER_CST, but an integer constant with integeral type.
12779
12780 2007-02-25  Uros Bizjak  <ubizjak@gmail.com>
12781
12782         PR tree-optimization/30938
12783         * tree-vect-transform.c (vectorizable_call): Fix off-by-one error:
12784         use &dt[nargs-1] instead of &dt[nargs] in the call to
12785         vect_is_simple_use().
12786
12787 2007-02-25  Ulrich Weigand  <uweigand@de.ibm.com>
12788
12789         * reload.c (find_reloads_address_1): Handle PLUS expressions resulting
12790         from register elimination as PRE_MODIFY / POST_MODIFY increments.
12791         Do not attempt to handle MEM inside auto-inc expressions.
12792         * reload1.c (eliminate_regs_1): Do not attempt to handle elimination
12793         of a register modified by an auto-inc expression.  However, do handle
12794         elimination of a register used as PRE_MODIFY / POST_MODIFY increment.
12795         (elimination_effects): Prohibit elimination of a register modified
12796         by an auto-inc expression.  Disable register elimination rules whose
12797         target register is modified by an auto-inc expression with variable
12798         increment.
12799
12800 2007-02-25  Zdenek Dvorak  <dvorakz@suse.cz>
12801
12802         * tree-ssa-loop-niter.c (compute_estimated_nb_iterations): Fix
12803         off-by-one error.
12804         (array_at_struct_end_p): New function.
12805         (idx_infer_loop_bounds): Use it.
12806         (estimate_numbers_of_iterations_loop): Export.
12807         * predict.c (predict_loops): Use estimated_loop_iterations_int.
12808         Do not use PRED_LOOP_EXIT on exits predicted by # of iterations.
12809         (tree_estimate_probability): Call record_loop_exits.
12810         * tree-data-ref.c (get_number_of_iters_for_loop): Replaced by ...
12811         (estimated_loop_iterations, estimated_loop_iterations_int,
12812         estimated_loop_iterations_tree): New functions.
12813         (analyze_siv_subscript_cst_affine,
12814         compute_overlap_steps_for_affine_1_2,
12815         analyze_subscript_affine_affine): Use estimated_loop_iterations_int.
12816         (analyze_miv_subscript): Use estimated_loop_iterations_tree.
12817         * predict.def (PRED_LOOP_ITERATIONS): Update comment.
12818         (PRED_LOOP_ITERATIONS_GUESSED): New.
12819         * cfgloop.c (record_loop_exits): Do nothing if there are no loops.
12820         * cfgloop.h (estimate_numbers_of_iterations_loop,
12821         estimated_loop_iterations_int): Declare.
12822
12823 2007-02-25  Mark Mitchell  <mark@codesourcery.com>
12824
12825         * doc/extend.texi: Document optional priority argument to
12826         constructors and destructors.
12827         * tree.c (init_priority_for_decl): Adjust GTY markers.
12828         (init_ttree): Use priority-info hash functions for
12829         init_priority_for_decl.
12830         (tree_map_eq): Rename to ...
12831         (tree_map_base_eq): ... this.
12832         (tree_map_marked_p): Rename to ...
12833         (tree_map_base_marked_p): ... this.
12834         (tree_map_base_hash): New function.
12835         (decl_init_priority_lookup): Rework.
12836         (decl_fini_priority_lookup): New function.
12837         (decl_priority_info): New function.
12838         (decl_init_priority_insert): Use it.
12839         (decl_fini_priority_insert): Likewise.
12840         (decl_restrict_base_lookup): Adjust for refactoring of tree_map
12841         hierarchy.
12842         (decl_restrict_base_insert): Likewise.
12843         (decl_debug_expr_insert): Likewise.
12844         (decl_value_expr_lookup): Likewise.
12845         (decl_value_expr_insert): Likewise.
12846         * tree.h (priority_type): New type.
12847         (decl_init_priority_lookup): Use priority_type.
12848         (decl_fini_priority_lookup): New function.
12849         (decl_init_priority_insert): Use priority_type.
12850         (decl_fini_priority_insert): New function.
12851         (DECL_HAS_INIT_PRIORITY): Tweak comments.
12852         (DECL_INIT_PRIORITY): Likewise.
12853         (SET_DECL_INIT_PRIORITY): Add comment.
12854         (DECL_FINI_PRIORITY): New macro.
12855         (SET_DECL_FINI_PRIORITY): Likewise.
12856         (DEFAULT_INIT_PRIORITY): Document.
12857         (MAX_INIT_PRIORITY): Likewise.
12858         (MAX_RESERVED_INIT_PRIORITY): Likewise.
12859         (tree_map_base): New type.
12860         (tree_map_base_eq): New function.
12861         (tree_map_base_hash): Likewise.
12862         (tree_map_base_marked_p): Likewise.
12863         (tree_map): Inherit from tree_map_base.
12864         (tree_map_eq): Make it a macro.
12865         (tree_map_marked_p): Likewise.
12866         (tree_int_map): Inherit from tree_map_base.
12867         (tree_int_map_eq): Make it a macro.
12868         (tree_int_map_hash): Likewise.
12869         (tree_int_map_marked_p): Likewise.
12870         (tree_priority_map): New type.
12871         (tree_priority_map_eq): New macro.
12872         (tree_priority_map_hash): Likewise.
12873         (tree_priority_map_marked_p): Likewise.
12874         * varasm.c (emults_decl): Adjust for refactoring of tree_map
12875         hierarchy.
12876         (emutls_common_1): Likewise.
12877         * lambda-code.c (replace_uses_equiv_to_x_with_y): Likewise.
12878         * tree-ssa-structalias.c (heapvar_lookup): Adjust for refactoring
12879         of tree_map hierarchy.
12880         * tree-cfg.c (move_stmt_r): Likewise.
12881         (new_label_mapper): Likewise.
12882         * c-tree.h (c_expand_body): Move to ...
12883         * c-common.h (c_expand_body): ... here.
12884         * c-decl.c (c_expand_body): Move to ...
12885         * c-common.c (c_expand_body): ... here.
12886         (c_common_attribute_table): Allow 1 argument for the constructor
12887         and destructor attributes.
12888         (get_priority): New function.
12889         (handle_constructor_attribute): Set DECL_INIT_PRIORITY.
12890         (handle_destructor_attribute): Set DECL_FINI_PRIORITY.
12891
12892 2007-02-24  Jan Hubicka  <jh@suse.cz>
12893
12894         PR middle-end/30509
12895         * tree-inline.c (copy_bb): Produce exact copy of EH info when
12896         copying for inlining.
12897
12898 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
12899             Jan Hubicka  <jh@suse.cz>
12900
12901         PR target/30778
12902         * i386.c (counter_mode): New function.
12903         (expand_set_or_movmem_via_loop): Use it.
12904         (expand_movmem_epilogue): Likewise; fix pasto.
12905         (ix86_expand_movmem): Do emit guard even for constant counts.
12906         (ix86_expand_setmem): Likewise.
12907
12908 2007-02-25  Nick Clifton  <nickc@redhat.com>
12909
12910         * config/frv/frv.h (ASM_OUTPUT_CASE_LABEL): Delete.
12911         (JUMP_TABLES_IN_TEXT_SECTION): Define.
12912
12913 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
12914
12915         PR target/30770
12916         * config/i386/i386.md (expand_movmem_epilogue): Fix typo, mask
12917         count argument with 0x10, not with 0x16.
12918         (expand_setmem_epilogue): Ditto.
12919
12920 2007-02-24  Mike Stump  <mrs@apple.com>
12921
12922         * config/i386/i386.c (output_pic_addr_const): Stubify optimized
12923         symbols.
12924
12925 2007-02-24  Richard Guenther  <rguenther@suse.de>
12926
12927         PR middle-end/30951
12928         * fold-const.c (fold_binary): Fold x +- CST op x for
12929         EQ_EXPR and NE_EXPR.
12930
12931 2007-02-24  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
12932
12933         * pa.md (muldi3): Force subregs to registers in 64-bit expander.
12934
12935 2007-02-24  Jan Hubicka  <jh@suse.cz>
12936
12937         * cgraphunit.c (decide_is_function_needed): Honor
12938         -fkeep-inline-functions.
12939
12940 2007-02-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12941
12942         * builtins.c (fold_builtin_modf): New.
12943         (fold_builtin_2): Use it.
12944
12945 2007-02-24  Bernd Schmidt  <bernd.schmidt@analog.com>
12946
12947         * loop-iv.c (implies_p): Detect additional cases where A implies B.
12948         (determine_max_iter): Take additional LOOP arg; all callers changed.
12949         Lose broken logic dealing with PLUS.  Try to limit the upper bound by
12950         one using simplifications.
12951         (simplify_using_initial_values): Return if the expression becomes
12952         invalid due to altered regs.
12953
12954 2007-02-23  DJ Delorie  <dj@redhat.com>
12955
12956         * doc/tm.h (BIGGEST_ALIGNMENT): Clarify the purpose of this macro.
12957
12958 2007-02-23  Mike Stump  <mrs@apple.com>
12959
12960         * tlink.c (scan_linker_output): Parse linker messages from
12961         darwin9's linker better.
12962
12963 2007-02-23  Steve Ellcey  <sje@cup.hp.com>
12964
12965         PR debug/29614
12966         * varpool.c (varpool_assemble_pending_decls):  Set
12967         varpool_last_needed_node to null.
12968
12969 2007-02-23  DJ Delorie  <dj@redhat.com>
12970
12971         * config/i386/i386.c (ix86_data_alignment): Don't specify an
12972         alignment bigger than the object file can handle.
12973
12974 2007-02-23  Uros Bizjak  <ubizjak@gmail.com>
12975
12976         PR target/30825
12977         * config/i386/i386.md (*movdi_1_rex64, zero_extendsidi2_32,
12978         zero_extendsidi2_rex64): Penalize MMX register<->memory moves.
12979         (*movsf_1): Penalize MMX moves.
12980
12981 2007-02-23  Bernd Schmidt  <bernd.schmidt@analog.com>
12982
12983         * config/bfin/bfin.md (doloop_end): Fail for loops that can iterate
12984         2^32-1 or more times unless flag_unsafe_loop_optimizations.
12985
12986         * loop-iv.c (determine_max_iter): Moved in front of its sole user.
12987
12988 2007-02-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12989
12990         * builtins.c (fold_builtin_logb, fold_builtin_significand): New.
12991         (fold_builtin_1): Use them.
12992         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
12993         BUILT_IN_SIGNIFICAND.
12994
12995 2007-02-23  H.J. Lu  <hongjiu.lu@intel.com>
12996
12997         * config/i386/i386.c (bdesc_1arg): Initialize
12998         IX86_BUILTIN_MOVSHDUP and IX86_BUILTIN_MOVSLDUP with
12999         "__builtin_ia32_movshdup" and "__builtin_ia32_movsldup".
13000         (ix86_init_mmx_sse_builtins): Remove IX86_BUILTIN_MOVSHDUP
13001         and IX86_BUILTIN_MOVSLDUP.
13002
13003 2007-02-22  Paolo Bonzini  <bonzini@gnu.org>
13004
13005         PR rtl-optimization/30841
13006         * fwprop.c (propagate_rtx_1): Accept a VOIDmode replacement address.
13007
13008 2007-02-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13009
13010         * builtins.c (fold_builtin_frexp): New.
13011         (fold_builtin_2): Use it.
13012
13013 2007-02-22  Mark Mitchell  <mark@codesourcery.com>
13014
13015         * doc/invoke.texi (Spec Files): Document getenv spec function.
13016
13017         * gcc.c (getenv_spec_function): New function.
13018         (static_spec_functions): Add it.
13019         * config/vxworks.h (VXWORKS_TARGET_DIR): Remove.
13020         (VXWORKS_ADDITIONAL_CPP_SPEC): Use getenv to find the VxWorks
13021         header files.
13022
13023 2007-02-22  Michael Matz  <matz@suse.de
13024
13025         PR c++/29433
13026         * dwarf2out.c (add_AT_string): Call ggc_strdup once per string.
13027         (type_tag): Use lang_hooks.dwarf_name instead of DECL_NAME.
13028
13029 2007-02-22  Ian Lance Taylor  <iant@google.com>
13030
13031         PR debug/30898
13032         * dwarf2out.c (concatn_mem_loc_descriptor): New static function.
13033         (mem_loc_descriptor): Call it.
13034
13035 2007-02-22  Zdenek Dvorak  <dvorakz@suse.cz>
13036             Ira Rosen  <irar@il.ibm.com>
13037
13038         * tree-data-ref.c (ptr_ptr_may_alias_p): Take alias sets into account.
13039
13040 2007-02-22  Ira Rosen  <irar@il.ibm.com>
13041
13042         PR tree-optimization/30843
13043         * tree-vect-transform.c (vect_transform_loop): Remove strided scalar
13044         stores only after all the group is vectorized.
13045
13046 2007-02-22  Dorit Nuzman  <dorit@il.ibm.com>
13047
13048         PR tree-optimization/30858
13049         * tree-vectorizer.c (vect_is_simple_reduction): Check that the stmts
13050         in the reduction cycle have a single use in the loop.
13051         * tree-vectorizer.h (relevant): Add documentation.
13052
13053 2007-02-20  Mike Stump  <mrs@apple.com>
13054
13055         * configure.ac (powerpc*-*-darwin*): #include <sys/cdefs.h>.
13056         * configure: Regenerate.
13057
13058 2007-02-21  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
13059
13060         Change the defaults of some parameters and options.
13061         * config/spu/spu-protos.h (spu_optimization_options): Declare.
13062         * config/spu/spu.c (spu_optimization_options): Add.
13063         (spu_override_options): Change params in spu_optimization_options.
13064         * config/spu/spu.h (OPTIMIZATION_OPTIONS): Define.
13065
13066         Register 127 is only 16 byte aligned when used as a frame pointer.
13067         * config/spu/spu-protos.h (spu_init_expanders): Declare.
13068         * config/spu/spu.c (spu_expand_prologue): Set REGNO_POINTER_ALIGN for
13069         HARD_FRAME_POINTER_REGNUM.
13070         (spu_legitimate_address):  Use regno_aligned_for_reload.
13071         (regno_aligned_for_load):  HARD_FRAME_POINTER_REGNUM is only 16 byte
13072         aligned when frame_pointer_needed is true.
13073         (spu_init_expanders): New.  Set alignment of HARD_FRAME_POINTER_REGNUM
13074         to 8 bits.
13075         * config/spu/spu.h (INIT_EXPANDERS): Define.
13076
13077         Make sure shift and rotate instructions have valid immediate operands.
13078         * config/spu/predicates.md (spu_shift_operand): Remove.
13079         * config/spu/spu.c (print_operand): Add [efghEFGH] modifiers.
13080         * config/spu/constraints.md (W, O): Extend range.
13081         * config/spu/spu.md (umask, nmask): Define.
13082         (ashl<mode>3, ashldi3, ashlti3_imm, shlqbybi_ti, shlqbi_ti, shlqby_ti,
13083         lshr<mode>3, rotm_<mode>, lshr<mode>3_imm, rotqmbybi_<mode>,
13084         rotqmbi_<mode>, rotqmby_<mode>, ashr<mode>3, rotma_<mode>,
13085         rotl<mode>3, rotlti3, rotqbybi_ti, rotqby_ti, rotqbi_ti): Use
13086         spu_nonmem_operand instead of spu_shift_operands.  Use new modifiers.
13087         (lshr<mode>3_reg):  Fix rtl description.
13088
13089         Make sure mulhisi immediate operands are valid.
13090         * config/spu/predicates.md (imm_K_operand): Add.
13091         * config/spu/spu.md (mulhisi3_imm, umulhisi3_imm): Use imm_K_operand.
13092
13093         Generate constants using fsmbi and andi.
13094         * config/spu/spu.c (enum immediate_class): Add IC_FSMBI2.
13095         (print_operand, spu_split_immediate, classify_immediate,
13096         fsmbi_const_p): Handle IC_FSMBI2.
13097
13098         Correctly handle a CONST_VECTOR containing symbols.
13099         * config/spu/spu.c (print_operand): Handle HIGH correctly.
13100         (spu_split_immediate): Split CONST_VECTORs with -mlarge-mem.
13101         (immediate_load_p): Allow symbols that use 2 instructions to create.
13102         (classify_immediate, spu_builtin_splats):  Don't accept a CONST_VECTOR
13103         with symbols when flag_pic is set.
13104         (const_vector_immediate_p): New.
13105         (logical_immediate_p, iohl_immediate_p, arith_immediate_p): Don't
13106         accept a CONST_VECTOR with symbols.
13107         (spu_legitimate_constant_p): Use const_vector_immediate_p.  Don't
13108         accept a CONST_VECTOR with symbols when flag_pic is set.  Handle HIGH
13109         correctly.
13110         * config/spu/spu.md (high, low): Delete.
13111         (low_<mode>): Define.
13112
13113         Remove INTRmode and INTR_REGNUM, which didn't work.
13114         * config/spu/spu.c (spu_conditional_register_usage): Remove reference
13115         of INTR_REGNUM.
13116         * config/spu/spu-builtins.md (spu_idisable, spu_ienable, set_intr,
13117         set_intr_pic, set_intr_cc, set_intr_cc_pic, set_intr_return, unnamed
13118         peephole2 pattern): Don't use INTR or 131.
13119         (movintrcc): Delete.
13120         * config/spu/spu.h (FIRST_PSEUDO_REGISTER, FIXED_REGISTERS,
13121         CALL_USED_REGISTERS, REGISTER_NAMES, INTR_REGNUM): Remove INTR_REGNUM.
13122         * config/spu/spu.md (UNSPEC_IDISABLE, UNSPEC_IENABLE): Remove.
13123         (UNSPEC_SET_INTR): Add.
13124         * config/spu/spu-modes.def (INTR): Remove.
13125
13126         More accurate warnings about run-time relocations.
13127         * config/spu/spu.c (reloc_diagnostic): Test in_section.
13128
13129         Correctly warn about immediate arguments to specific intrinsics.
13130         * config/spu/spu.c (spu_check_builtin_parm): Handle CONST_VECTORs.
13131         (spu_expand_builtin_1): Call spu_check_builtin_parm before checking
13132         the instruction predicate.
13133
13134         Fix tree check errors with latest update.
13135         * config/spu/spu.c (expand_builtin_args, spu_expand_builtin_1): Use
13136         CALL_EXPR_ARG.
13137         (spu_expand_builtin): Use CALL_EXPR_FN.
13138
13139         Add missing specific intrinsics.
13140         * config/spu/spu-builtins.def: Add si_bisled, si_bisledd and
13141         si_bislede.
13142         * config/spu/spu_internals.h: Ditto.
13143
13144         Fix incorrect operand modifiers.
13145         * config/spu/spu-builtins.md (spu_mpy, spu_mpyu):  Remove use of %H.
13146         * config/spu/spu.md (xor<mode>3):  Change %S to %J.
13147
13148         Optimize one case of zero_extend of a vec_select.
13149         * config/spu/spu.md (_vec_extractv8hi_ze):  Add.
13150
13151         Accept any immediate for hbr.
13152         * config/spu/spu.md (hbr):  Change s constraints to i.
13153
13154 2007-02-21  Paul Brook  <paul@codesourcery.com>
13155
13156         * config/arm/arm.c (thumb2_final_prescan_insn): Don't incrememnt
13157         condexec_count when skipping USE and CLOBBER.
13158
13159 2007-02-21  Nick Clifton  <nickc@redhat.com>
13160
13161         * common.opt (Warray-bounds): Add Warning attribute.
13162         (Wstrict-overflow, Wstrict-overflow=, Wcoverage-mismatch):
13163         Likewise.
13164         (fsized-zeroes): Add Optimization attribute.
13165         (fsplit-wide-types, ftree-scev-cprop): Likewise.
13166         * c.opt (Wc++0x-compat): Add Warning attribute.
13167
13168 2007-02-21  Ulrich Weigand  <uweigand@de.ibm.com>
13169
13170         PR middle-end/30761
13171         * reload1.c (eliminate_regs_in_insn): In the single_set special
13172         case, attempt to re-recognize the insn before falling back to
13173         having reload fix it up.
13174
13175 2007-02-20  Eric Christopher  <echristo@gmail.com>
13176
13177         * config/frv/frv.c (frv_read_argument): Take a tree and int argument.
13178         Rewrite accordingly.
13179         (frv_read_iacc_argument): Ditto.
13180         (frv_expand_set_builtin): Take a call instead of arglist, update for
13181         above changes.
13182         (frv_expand_unop_builtin): Ditto.
13183         (frv_expand_binop_builtin): Ditto.
13184         (frv_expand_cut_builtin): Ditto.
13185         (frv_expand_binopimm_builtin): Ditto.
13186         (frv_expand_voidbinop_builtin): Ditto.
13187         (frv_expand_int_void2arg): Ditto.
13188         (frv_expand_prefetches): Ditto.
13189         (frv_expand_voidtriop_builtin): Ditto.
13190         (frv_expand_voidaccop_builtin): Ditto.
13191         (frv_expand_load_builtin): Ditto.
13192         (frv_expand_store_builtin): Ditto.
13193         (frv_expand_mdpackh_builtin): Ditto.
13194         (frv_expand_mclracc_builtin): Ditto.
13195         (frv_expand_mrdacc_builtin): Ditto.
13196         (frv_expand_mwtacc_builtin): Ditto.
13197         (frv_expand_builtin): Remove usage of CALL_EXPR_ARGS, update
13198         calls for above.
13199
13200 2007-02-20  Janis Johnson  <janis187@us.ibm.com>
13201
13202         * doc/invoke.texi (RS/6000 and PowerPC Options): Add -mcmpb and -mdfp.
13203         * configure.ac (HAVE_GAS_CMPB): Check for assembler support of the
13204         cmpb instruction.
13205         (HAVE_GAS_DFP): Check for assembler support of decimal floating
13206         point instructions.
13207         * configure: Regenerate.
13208         * config.in: Regenerate.
13209         * config/rs6000/rs6000.opt (mcmpb, mdfp): New.
13210         * config/rs6000/rs6000.c (rs6000_override_options): Add CMPB and DFP
13211         masks to power6 and power6x and to POWERPC_MASKS.
13212         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
13213         _ARCH_PWR6.
13214         * config/rs6000/rs6000.h: Check assembler support for CMPB and DFP.
13215         * config/rs6000/sysv4.opt (mprototype): Use variable, not mask.
13216         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
13217         Access PROTOTYPE as variable, not mask.
13218
13219 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
13220
13221         * rtl.h (remove_reg_equal_equiv_notes): New prototype.
13222         * rtlanal.c (remove_reg_equal_equiv_notes): New function.
13223         * combine.c (adjust_for_new_dest): Use it.
13224         * postreload.c (reload_combine): Likewise.
13225
13226 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
13227
13228         * rtlanal.c (find_reg_equal_equiv_note): Do not find REG_EQ*
13229         notes on an insn with multiple sets, even if single_set returns
13230         non-NULL for that insn.
13231
13232 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13233
13234         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle scalb,
13235         scalbn and scalbln.
13236
13237 2007-02-20  Geoffrey Keating  <geoffk@apple.com>
13238
13239         * config/darwin.h (LINK_SPEC): Default -mmacosx-version-min only
13240         if user didn't pass it.
13241         * config/i386/darwin.h (CC1_SPEC): Likewise.
13242         * config/rs6000/darwin.h (CC1_SPEC): Likewise.
13243         (DARWIN_MINVERSION_SPEC): Don't depend on user's setting of
13244         -mmacosx-version-min.
13245
13246 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13247             Uros Bizjak  <ubizjak@gmail.com>
13248
13249         * optabs.h (enum optab_index): Add new OTI_scalb.
13250         (scalb_optab): Define corresponding macro.
13251         * optabs.c (init_optabs): Initialize scalb_optab.
13252         * genopinit.c (optabs): Implement scalb_optab using scalb?f3
13253         patterns.
13254         * builtins.c (expand_builtin_mathfn_2, expand_builtin): Handle
13255         BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L} and BUILT_IN_SCALBLN{,F,L}.
13256         (expand_builtin): Expand BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L}
13257         and BUILT_IN_SCALBLN{,F,L} using expand_builtin_mathfn_2 if
13258         flag_unsafe_math_optimizations is set.
13259
13260         * config/i386/i386.md (scalbxf3, scalb<mode>3): New expanders
13261         to implement scalbf, scalb and scalbl built-ins as inline x87
13262         intrinsics.
13263
13264 2007-02-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
13265             DJ Delorie <dj@redhat.com>
13266
13267         PR other/30824
13268         * diagnostic.c (diagnostic_count_diagnostic): Move -Werror logic to...
13269         (diagnostic_report_diagnostic): ... here, and turn them into real
13270         errors. If warnings are inhibited, no need to do anything.
13271
13272 2007-02-20  Uros Bizjak  <ubizjak@gmail.com>
13273
13274         * config/i386/i386.md (expm1xf2): Reorder insn sequence for
13275         better code generation.
13276
13277 2007-02-20  Ben Elliston  <bje@au.ibm.com>
13278
13279         * config/m68hc11/m68hc11.h (OVERRIDE_OPTIONS): Remove extra ;.
13280
13281 2007-02-20  Kazu Hirata  <kazu@codesourcery.com>
13282
13283         * config/alpha/alpha.c, config/alpha/alpha.md,
13284         config/alpha/lib1funcs.asm, config/alpha/vms-crt0-64.c,
13285         config/alpha/vms-psxcrt0-64.c, config/arc/arc.c,
13286         config/arc/arc.h, config/arm/arm.c, config/arm/arm.md,
13287         config/arm/lib1funcs.asm: Follow spelling conventions.
13288
13289         * config/c4x/c4x.md, config/cris/cris.c, config/crx/crx.c,
13290         config/fr30/fr30.md, config/i386/i386.h,
13291         config/iq2000/iq2000.h, config/iq2000/predicates.md,
13292         config/pa/milli64.S, config/pa/pa.c, config/pa/pa.h,
13293         config/pa/pa.md, config/pa/pa32-regs.h, config/pa/pa64-regs.h,
13294         config/pdp11/pdp11.c, config/pdp11/pdp11.h,
13295         config/rs6000/altivec.md, config/rs6000/rs6000.c,
13296         config/s390/s390-modes.def, config/sparc/netbsd-elf.h,
13297         config/sparc/sparc.c, config/sparc/sparc.h,
13298         config/sparc/sparc.md, config/spu/constraints.md,
13299         config/spu/spu.c, config/stormy16/stormy16.md: Follow spelling
13300         conventions.
13301
13302 2007-02-20  Alan Modra  <amodra@bigpond.net.au>
13303
13304         PR target/29943
13305         * varasm.c (use_blocks_for_decl_p): Return false for decls with
13306         alias attribute.
13307
13308 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
13309
13310         * doc/invoke.texi (-ftree-lrs): Remove.
13311
13312 2007-02-19  Diego Novillo  <dnovillo@redhat.com>
13313
13314         * tree-ssa-pre.c (create_value_expr_from): Initialize POOL to
13315         NULL.
13316
13317 2007-02-19  Lee Millward  <lee.millward@codesourcery.com>
13318
13319         * config/ia64/ia64.c (ia64_expand_builtin): Use the
13320         new CALL_EXPR_FN macro for retrieving the function
13321         declaration of the input expression.
13322
13323 2007-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
13324
13325         * c.opt (Waddress): New.
13326         * common.opt (Walways-true): Delete.
13327         (Wstring-literal-comparison): Delete.
13328         * doc/invoke.texi (Warning Options): Delete -Walways-true and
13329         -Wstring-literal-comparison. Add -Waddress.
13330         (Waddress): New.
13331         (Walways-true): Delete.
13332         (Wstring-literal-comparison): Delete.
13333         * doc/extend.texi (#pragma GCC diagnostic): Use -Wformat
13334         consistently instead of -Walways-true in example.
13335         * c-opts.c (c_common_handle_option): -Waddress is enabled by -Wall.
13336         * c-typeck.c (parser_build_binary_op): Replace
13337         -Wstring-literal-comparison and -Walways-true with -Waddress.
13338         * c-common.c (c_common_truthvalue_conversion): Replace -Walways-true
13339         with -Waddress.
13340
13341 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
13342
13343         * tree-cfg.c (dump_function_to_file): Be prepared for functions
13344         without DECL_STRUCT_FUNCTION initialized.
13345
13346 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
13347
13348         * gimplify.c (gimplify_init_ctor_preeval_1): Detect potential overlap
13349         due to calls to functions taking pointers as parameters.
13350
13351 2007-02-19  Richard Henderson  <rth@redhat.com>
13352
13353         PR debug/29558
13354         * var-tracking.c (track_expr_p): Disallow AGGREGATE_TYPE_P
13355         in memory.
13356
13357 2007-02-19  Andreas Krebbel  <krebbel1@de.ibm.com>
13358
13359         * config/s390/s390.c (s390_call_saved_register_used,
13360         s390_function_ok_for_sibcall): Adjust the way CALL_EXPR arguments are
13361         accessed to the new scheme.
13362
13363 2007-02-19  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
13364
13365         * config/cris/cris.c (cris_movem_load_rest_p, cris_store_multiple_op_p)
13366         (cris_print_index, cris_print_operand, cris_print_operand_address)
13367         (cris_reload_address_legitimized, cris_rtx_costs, cris_address_cost)
13368         (cris_side_effect_mode_ok, cris_valid_pic_const, cris_split_movdx)
13369         (cris_expand_pic_call_address): Use xxx_P predicate macros instead of
13370         GET_CODE () == xxx.
13371         * config/cris/cris.h (SECONDARY_RELOAD_CLASS, EXTRA_CONSTRAINT_Q,
13372         EXTRA_CONSTRAINT_T, BDAP_INDEX_P, BIAP_INDEX_P, SIMPLE_ADDRESS_P,
13373         GO_IF_LEGITIMATE_ADDRESS): Ditto.
13374         * config/cris/cris.md (define_insns: *btst, movdi, *mov_side<mode>)
13375         (*mov_sidesisf, *mov_side<mode>_mem, *mov_sidesisf_mem)
13376         (*clear_side<mode>, movsi, *movsi_internal, *ext_sideqihi)
13377         (*ext_side<mode>si, *op_side<mode>, *op_swap_side<mode>, addsi3)
13378         (*extopqihi_side, *extop<mode>si_side, *extopqihi_swap_side)
13379         (*extop<mode>si_swap_side, addi_mul, *addi,andsi3, andhi3, ashl<mode>3)
13380         (uminsi3, call, call_value): Ditto.
13381         (define_split: indir_to_reg_split, unnamed): Ditto.
13382
13383 2007-02-19  Dorit Nuzman  <dorit@il.ibm.com>
13384
13385         PR tree-optimization/30975
13386         * tree-vect-trasnform.c (vect_get_vec_def_for_stmt_copy): Remove
13387         wrong assert.
13388
13389 2007-02-18  Eric Christopher  <echristo@gmail.com>
13390
13391         * mips.c (mips_prepare_builtin_arg): Add argnum parameter.
13392         Remove use of arglist.
13393         (mips_expand_builtin): Remove use of arglist, pass in expr.
13394         (mips_expand_builtin_direct): Rewrite handling for arglist removal.
13395         (mips_expand_builtin_movtf): Ditto.
13396         (mips_expand_builtin_compare): Ditto.
13397
13398 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
13399
13400         * tree-sra.c (sra_build_assignment): Replace assertion
13401         checking with a comment explaining why it can't be done.
13402
13403 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
13404
13405         PR middle-end/30833
13406         * tree-dump.c (dequeue_and_dump): Add tcc_vl_exp case missed
13407         during CALL_EXPR representation conversion.
13408         * tree-ssa-propagate.c (set_rhs): Likewise.
13409
13410 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
13411
13412         * tree-sra.c (sra_build_assignment): Disable assertion checking
13413         for now.
13414
13415 2007-02-18  Roger Sayle  <roger@eyesopen.com>
13416
13417         * function.c (gimplify_parameters): Call build_gimple_modify_stmt
13418         instead of calling build2 with a GIMPLE_MODIFY_STMT.
13419         * gimple-low.c (lower_function_body, lower_builtin_setjmp):
13420         Likewise.
13421         * gimplify.c (build_stack_save_restore, gimplify_return_expr,
13422         gimplify_decl_expr,  gimplify_self_mod_expr, gimplify_cond_expr,
13423         gimplify_init_ctor_eval_range, gimple_push_cleanup,
13424         gimplify_omp_for, gimplify_omp_atomic_pipeline,
13425         gimplify_omp_atomic_mutex, gimplify_expr, gimplify_one_sizepos,
13426         force_gimple_operand): Likewise.
13427         * ipa-cp.c (constant_val_insert): Likewise.
13428         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression,
13429         lambda_loopnest_to_gcc_loopnest, replace_uses_equiv_to_x_with_y,
13430         perfect_nestify): Likewise.
13431         * langhooks.c (lhd_omp_assignment): Likewise.
13432         * omp-low.c (lower_rec_input_clauses, lower_reduction_clauses,
13433         lower_copyprivate_clauses, lower_send_clauses,
13434         lower_send_shared_vars, expand_parallel_call,
13435         expand_omp_for_generic, expand_omp_for_static_nochunk,
13436         expand_omp_for_static_chunk, expand_omp_sections,
13437         lower_omp_single_copy, lower_omp_for_lastprivate,
13438         lower_omp_parallel, init_tmp_var, save_tmp_var): Likewise.
13439         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
13440         tree_mod_subtract, tree_ic, tree_stringop_fixed_value):
13441         Likewise.
13442
13443 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
13444
13445         * config/sh/divtab.c, config/sh/sh.c, config/sh/sh.h,
13446         config/sh/sh.md: Follow spelling conventions.
13447
13448         * config/frv/frv.c, config/frv/frv.h, config/frv/frv.md,
13449         config/frv/predicates.md: Follow spelling conventions.
13450
13451         * config/m68k/linux-unwind.h: Fix a comment typo.
13452         * target.h: Follow spelling conventions.
13453
13454 2007-02-18  Roger Sayle  <roger@eyesopen.com>
13455
13456         PR rtl-optimization/28173
13457         * simplify-rtx.c (simplify_binary_operation_1) <IOR>:  Optimize
13458         (X & C1) | C2 as C2 when (C1 & C2) == C1 and X has no side-effects.
13459         Optimize (X & C1) | C2 as X | C2 when (C1 | C2) == ~0.
13460         Canonicalize (X & C1) | C2 as (X & (C1 & ~C2)) | C2.
13461         <AND>: Canonicalize (X | C1) & C2 as (X & C2) | (C1 & C2).
13462
13463 2007-02-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13464
13465         * builtins.c (fold_builtin_load_exponent): New.
13466         (fold_builtin_2): Use it.
13467
13468 2007-02-18  Steven Bosscher  <steven@gcc.gnu.org>
13469
13470         PR rtl-optimization/30773
13471         * local-alloc.c (update_equiv_regs): Do not set reg_equiv_init
13472         if we fail to attach a REG_EQUIV note.
13473
13474 2007-02-18  David Edelsohn  <edelsohn@gnu.org>
13475             Roger Sayle  <roger@eyesopen.com>
13476
13477         * config/rs6000/rs6000.md (bswapsi2): New define_insn and splitter.
13478
13479 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
13480
13481         * calls.c (initialize_argument_information): Pass original EXP
13482         and STRUCT_VALUE_ADDR_VALUE instead of a list of arguments.  Move
13483         code to split complex arguments here, as part of initializing the
13484         ARGS array.
13485         (expand_call): Remove code that builds a list of arguments and
13486         inserts implicit arguments into it.  Instead, just count how many
13487         implicit arguments there will be so we can determine the size of
13488         the ARGS array, and let initialize_argument_information do the work.
13489         (split_complex_values): Delete unused function.
13490
13491 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
13492
13493         * tree-eh.c (tree_could_trap_p): Handle VIEW_CONVERT_EXPR.
13494
13495 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
13496
13497         * calls.c (mem_overlaps_already_clobbered_arg_p): Return true
13498         for arg pointer based indexed addressing.
13499
13500 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
13501
13502         * config/ia64/ia64.h, config/ia64/ia64.md,
13503         config/ia64/predicates.md, config/ia64/sysv4.h: Follow
13504         spelling conventions.
13505
13506 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
13507
13508         * config/m68k/m68k.c (split_di): New.
13509         * config/m68k/m68k-protos.h: Declare split_di.
13510         * config/m68k/m68k.md (extendsidi2*,ashldi3*,ashrdi3*,lshrdi3*):
13511           Improve predicate handling and split constant shifts.
13512
13513 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
13514
13515         * config/m68k/m68k.md (extv,extzv,insv): disable dynamic
13516         parameter for register bitfield operations, general predicates
13517         cleanup
13518
13519 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
13520
13521         * config/m68k/linux.h (MD_UNWIND_SUPPORT): Define.
13522         * config/m68k/linux-unwind.h: New file.
13523
13524 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
13525
13526         * cfgloop.c, config/alpha/alpha.c, config/bfin/bfin.c,
13527         config/i386/athlon.md, config/ia64/ia64.md,
13528         config/rs6000/rs6000.c, config/s390/s390.c, config/spu/spu.md,
13529         df-problems.c, df.h, fold-const.c, ipa-cp.c, ipa-inline.c,
13530         ipa-prop.h, see.c, struct-equiv.c, tree-inline.c,
13531         tree-ssa-loop-niter.c, tree-vect-analyze.c,
13532         tree-vect-transform.c: Fix comment typos.
13533
13534 2007-02-17  Kazu Hirata  <kazu@codesourcery.com>
13535
13536         * sched-deps.c (find_insn_list): Remove.
13537         * sched-int.h: Remove the prototype for find_insn_list.
13538
13539 2007-02-16  Geoffrey Keating  <geoffk@apple.com>
13540
13541         * config/darwin.h (LINK_SPEC): Always pass -macosx_version_min
13542         to linker.
13543         (DARWIN_EXTRA_SPECS): Add %(darwin_minversion).
13544         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Just call
13545         darwin_rs6000_override_options.
13546         (C_COMMON_OVERRIDE_OPTIONS): Expect
13547         darwin_macosx_version_min to be non-NULL always.
13548         (TARGET_C99_FUNCTIONS): Likewise.
13549         (CC1_SPEC): Always pass -mmacosx-version-min to cc1*.
13550         (DARWIN_MINVERSION_SPEC): New.
13551         * config/rs6000/rs6000.c (darwin_rs6000_override_options): New.
13552         * config/i386/darwin.h (CC1_SPEC): Always pass -mmacosx-version-min
13553         to cc1*.
13554         (DARWIN_MINVERSION_SPEC): New.
13555         * config/darwin.opt (mmacosx-version-min): Initialize to non-NULL
13556         value.
13557         * config/darwin-c.c (darwin_cpp_builtins): Expect
13558         darwin_macosx_version_min to be non-NULL always.
13559
13560         * config/rs6000/rs6000.c: Clean up trailing whitespace.
13561
13562 2007-02-16  Uros Bizjak  <ubizjak@gmail.com>
13563
13564         * config/i386/i386.h (x86_use_xchgb): New.
13565         (TARGET_USE_XCHGB): New macro.
13566         * config/i386/i386.c (x86_use_xchgb): Set for PENT4.
13567         * config/i386/i386.md (*rotlhi3_1 splitter, *rotrhi3_1 splitter):
13568         Split after reload into bswaphi for shifts of 8.
13569         (bswaphi_lowpart): Generate rolw insn for HImode byte swaps.
13570         (*bswaphi_lowpart_1): Generate xchgb for Q registers for TARGET_XCHGB
13571         or when optimizing for size.
13572
13573 2007-02-16  Richard Guenther  <rguenther@suse.de>
13574             Christian Bruel  <christian.bruel@st.com>
13575
13576         * fold-const.c (tree_swap_operands_p): Treat SSA_NAMEs like
13577         DECLs but prefer SSA_NAMEs over DECLs.
13578
13579 2007-02-16  Richard Guenther  <rguenther@suse.de>
13580
13581         * tree-flow-inline.h (single_imm_use_p): Remove.
13582         (zero_imm_uses_p): Likewise.
13583         * tree-ssa-coalesce.c (create_outofssa_var_map): Use has_single_use
13584         instead of single_imm_use_p.
13585         * tree-cfg.c (replace_uses_by): Use has_zero_use instead of
13586         zero_imm_uses_p.
13587
13588 2007-02-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
13589
13590         PR other/27843
13591         * Makefile.in (SYSTEM_HEADER_DIR): Use single quotes to avoid
13592         nested double- and backquotes.
13593
13594 2007-02-15  Roger Sayle  <roger@eyesopen.com>
13595
13596         PR middle-end/30391
13597         * tree.c (expr_align): Handle MODIFY_EXPR.  GIMPLE_MODIFY_STMT
13598         should be unreachable.
13599         (build2_stat): Allow construction of MODIFY_EXPR at any time.
13600         For the time being redirect GIMPLE_MODIFY_STMT to the new
13601         (renamed) build_gimple_modify_stmt_stat.
13602         (build2_gimple_stat): Rename to...
13603         (build_gimple_modify_stmt_stat): Now longer take a CODE argument.
13604         Always build a GIMPLE_MODIFY_STMT node.
13605         * tree.h (build2_gimple, build2_gimple_stat): Delete.
13606         (build_gimple_modify_stmt, build_gimple_modify_stmt_stat): New
13607         declarations.
13608
13609         * tree-cfg.c (factor_computed_gotos, tree_merge_blocks,
13610         gimplify_val): Use build_gimple_modify_stmt instead of build2_gimple.
13611         * tree-complex.c (set_component_ssa_name, expand_complex_move,
13612         expand_complex_div_wide): Likewise.
13613         * tree-ssa-dom.c (record_equivalences_from_stmt): Likewise.
13614         * tree-ssa-loop-im.c (schedule_sm): Likewise.
13615         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Likewise.
13616         * tree-ssa-loop-manip.c (create_iv): Likewise.
13617         * tree-ssa-phiopt.c (conditional_replacement, minmax_replacement,
13618         abs_replacement): Likewise.
13619         * tree-ssa-pre.c (create_expression_by_pieces, poolify_modify_stmt,
13620         realify_fake_stores): Likewise.
13621
13622         * builtins.c (std_expand_builtin_va_start): Build a MODIFY_EXPR
13623         node rather than a GIMPLE_MODIFY_STMT node.
13624         (std_gimpify_va_arg_expr, expand_builtin_va_copy,
13625         fold_builtin_memset, fold_builtin_memory_op, do_mpfr_sincos):
13626         Likewise.
13627         (integer_valued_real_p): Handle MODIFY_EXPR, not GIMPLE_MODIFY_STMT.
13628         * expr.c (expand_expr_real_1): Handle both MODIFY_EXPR and
13629         GIMPLE_MODIFY_STMT.
13630
13631 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13632
13633         PR middle-end/30433
13634         * fold-const.c (fold_comparison): Add back the
13635         folding of constant complex comparisions.
13636
13637 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13638
13639         PR middle-end/30729
13640         * stmt.c (warn_if_unused_value): VA_ARG_EXPR has side
13641         effects unknown to this function, return early.
13642
13643 2007-02-15  Ian Lance Taylor  <iant@google.com>
13644
13645         * lower-subreg.c (move_eh_region_note): New static function.
13646         (resolve_simple_move): Call it.
13647         (decompose_multiword_subregs): Track blocks for which we resolve a
13648         simple move which is also a control flow insn.  Pass them to
13649         find_many_sub_basic_blocks.
13650         (pass_lower_subreg): Add TODO_verify_flow.
13651         (pass_lower_subreg2): Likewise.
13652
13653 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
13654             Brooks Moses  <brooks.moses@codesourcery.com>
13655             Lee Millward  <lee.millward@codesourcery.com>
13656
13657         * tree.h (enum tree_code_class): Add tcc_vl_exp.
13658         (VL_EXP_CLASS_P): New.
13659         (TREE_OPERAND_CHECK): Use TREE_OPERAND_LENGTH instead of
13660         TREE_CODE_LENGTH.
13661         (TREE_OPERAND_CHECK_CODE): Likewise.
13662         (GIMPLE_STMT_OPERAND_CHECK): Likewise.
13663         (TREE_RTL_OPERAND_CHECK): Likewise.
13664         (tree_operand_check_failed): Make second parameter the whole tree
13665         instead of its code.  Fixed callers.
13666         (VL_EXP_CHECK): New.
13667         (TREE_OPERAND_LENGTH): New.
13668         (VL_EXP_OPERAND_LENGTH): New.
13669         (CALL_EXPR_FN): New.
13670         (CALL_EXPR_STATIC_CHAIN): New.
13671         (CALL_EXPR_ARGS): New.
13672         (CALL_EXPR_ARG): New.
13673         (call_expr_nargs): New.
13674         (CALL_EXPR_ARGP): New.
13675         (build_nt_call_list): Declare.
13676         (build_vl_exp_stat): Declare.
13677         (build_vl_exp): New.
13678         (build_call_list): Declare.
13679         (build_call_nary): Declare.
13680         (build_call_valist): Declare.
13681         (build_call_array): Declare.
13682         (call_expr_arg): Declare.
13683         (call_expr_argp): Declare.
13684         (call_expr_arglist): Declare.
13685         (fold_build_call_list): Declare.
13686         (fold_build_call_list_initializer): Declare.
13687         (fold_call_expr): Declare to replace fold_builtin.
13688         (fold_builtin_fputs): Update to agree with modified definition.
13689         (fold_builtin_strcpy): Likewise.
13690         (fold_builtin_strncpy): Likewise.
13691         (fold_builtin_memory_chk): Likewise.
13692         (fold_builtin_stxcpy_chk): Likewise.
13693         (fold_builtin_strncpy_chk): Likewise.
13694         (fold_builtin_next_arg): Likewise.
13695         (fold_build_call_expr): Declare.
13696         (fold_builtin_call_list): Declare.
13697         (fold_builtin_call_valist): Declare.
13698         (build_call_expr): Declare.
13699         (validate_arglist): Update to agree with modified definition.
13700         (tree_operand_length): New.
13701         (call_expr_arg_iterator): New.
13702         (init_call_expr_arg_iterator): New.
13703         (next_call_expr_arg): New.
13704         (first_call_expr_arg): New.
13705         (more_call_expr_args_p): New.
13706         (FOR_EACH_CALL_EXPR_ARG): New.
13707
13708         * tree.c (tree_code_class_string): Add entries for tcc_vl_exp
13709         and tcc_gimple_stmt.
13710         (tree_code_size): Update documentation.  Use sizeof (tree) rather
13711         than sizeof (char *).
13712         (tree_size): Likewise.  Add case for tcc_vl_exp.
13713         (tree_node_structure): Add case for tcc_vl_exp.
13714         (contains_placeholder_p): Likewise.
13715         (substitute_in_expr): Likewise.
13716         (substitute_placeholder_in_expr): Likewise.
13717         (stabilize_reference_1): Likewise.
13718         (build3_stat): Remove logic for CALL_EXPRs.  Replace with assertion
13719         to diagnose breakage of this interface for constructing CALL_EXPRs.
13720         (build_nt): Add similar assertion here.
13721         (build_nt_call_list): New.
13722         (simple_cst_equal) <CALL_EXPR>: Rewrite to use new accessors.
13723         (iterative_hash_expr): Use TREE_OPERAND_LENGTH instead of
13724         TREE_CODE_LENGTH.
13725         (get_callee_fndecl): Use new CALL_EXPR accessors.
13726         (tree_operand_check_failed): Change parameters to pass entire node
13727         instead of its code, so that we can call TREE_OPERAND_LENGTH on it.
13728         (process_call_operands): New.
13729         (build_vl_exp_stat): New.
13730         (build_call_list): New.
13731         (build_call_nary): New.
13732         (build_call_valist): New.
13733         (build_call_array): New.
13734         (walk_tree): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
13735         (call_expr_arglist): New.
13736
13737         * tree.def (CALL_EXPR): Change representation of CALL_EXPRs to use
13738         tcc_vl_exp instead of a fixed-size tcc_expression.
13739
13740         * doc/c-tree.texi (CALL_EXPR): Document new representation and
13741         accessors for CALL_EXPRs.
13742         (AGGR_INIT_EXPR): Likewise.
13743
13744 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
13745             Brooks Moses  <brooks.moses@codesourcery.com>
13746             Lee Millward  <lee.millward@codesourcery.com>
13747
13748         * builtins.c (c_strlen): Return NULL_TREE instead of 0.
13749         (expand_builtin_nonlocal_goto): Change parameter to be entire
13750         CALL_EXPR instead of an arglist.  Use new CALL_EXPR accessors.
13751         (expand_builtin_prefetch): Likewise.
13752         (expand_builtin_classify_type): Likewise.
13753         (mathfn_built_in): Return NULL_TREE instead of 0.
13754         (expand_errno_check): Use new CALL_EXPR accessors.
13755         (expand_builtin_mathfn): Use new CALL_EXPR accessors and constructors.
13756         Return NULL_RTX instead of 0.
13757         (expand_builtin_mathfn_2): Likewise.
13758         (expand_builtin_mathfn_3): Likewise.
13759         (expand_builtin_interclass_mathfn): Likewise.
13760         (expand_builtin_sincos): Likewise.
13761         (expand_builtin_cexpi): Likewise.
13762         (expand_builtin_int_roundingfn): Likewise.
13763         (expand_builtin_int_roundingfn_2): Likewise.
13764         (expand_builtin_pow): Likewise.
13765         (expand_builtin_powi): Likewise.
13766         (expand_builtin_strlen): Pass entire CALL_EXPR as parameter instead
13767         of arglist, fixing callers appropriately.  Use new CALL_EXPR
13768         accessors and constructors.  Return NULL_RTX instead of 0.
13769         (expand_builtin_strstr): Likewise.
13770         (expand_builtin_strchr): Likewise.
13771         (expand_builtin_strrchr): Likewise.
13772         (expand_builtin_strpbrk): Likewise.
13773         (expand_builtin_memcpy): Likewise.
13774         (expand_builtin_mempcpy): Likewise.
13775         (expand_builtin_mempcpy_args): New.
13776         (expand_builtin_memmove): Similarly to expand_builtin_mempcpy.
13777         (expand_builtin_memmove_args): New.
13778         (expand_builtin_bcopy): Similarly to expand_builtin_mempcpy.
13779         (expand_movstr): Likewise.
13780         (expand_builtin_strcpy): Likewise.
13781         (expand_builtin_strcpy_args): New.
13782         (expand_builtin_stpcpy): Similarly to expand_builtin_strcpy.
13783         (expand_builtin_strncpy): Likewise.
13784         (expand_builtin_memset): Likewise.
13785         (expand_builtin_memset_args): New.
13786         (expand_builtin_bzero): Similarly to expand_builtin_memset.
13787         (expand_builtin_memcmp): Likewise.
13788         (expand_builtin_strcmp): Likewise.
13789         (expand_builtin_strncmp): Likewise.
13790         (expand_builtin_strcat): Likewise.
13791         (expand_builtin_strncat): Likewise.
13792         (expand_builtin_strspn): Likewise.
13793         (expand_builtin_strcspn): Likewise.
13794         (expand_builtin_args_info): Likewise.
13795         (expand_builtin_va_start): Likewise.
13796         (gimplify_va_arg_expr): Likewise.
13797         (expand_builtin_va_end): Likewise.
13798         (expand_builtin_va_copy): Likewise.
13799         (expand_builtin_frame_address): Likewise.
13800         (expand_builtin_alloca): Likewise.
13801         (expand_builtin_bswap): Likewise.
13802         (expand_builtin_unop): Likewise.
13803         (expand_builtin_fputs): Likewise.
13804         (expand_builtin_expect): Likewise.
13805         (expand_builtin_fabs): Likewise.
13806         (expand_builtin_copysign): Likewise.
13807         (expand_builtin_printf): Likewise.
13808         (expand_builtin_fprintf): Likewise.
13809         (expand_builtin_sprintf): Likewise.
13810         (expand_builtin_init_trampoline): Likewise.
13811         (expand_builtin_signbit): Likewise.
13812         (expand_builtin_fork_or_exec): Likewise.
13813         (expand_builtin_sync_operation): Likewise.
13814         (expand_builtin_compare_and_swap): Likewise.
13815         (expand_builtin_lock_test_and_set): Likewise.
13816         (expand_builtin_lock_release): Likewise.
13817         (expand_builtin): Likewise.
13818         (builtin_mathfn_code): Likewise.
13819
13820         (fold_builtin_constant_p): Pass call arguments individually instead
13821         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
13822         accessors and constructors.  Return NULL_TREE instead of 0.
13823         (fold_builtin_expect): Likewise.
13824         (fold_builtin_classify_type): Likewise.
13825         (fold_builtin_strlen): Likewise.
13826         (fold_builtin_nan): Likewise.
13827         (integer_valued_real_p): Likewise.
13828         (fold_trunc_transparent_mathfn): Likewise.
13829         (fold_fixed_mathfn): Likewise.
13830         (fold_builtin_cabs): Likewise.
13831         (fold_builtin_sqrt): Likewise.
13832         (fold_builtin_cbrt): Likewise.
13833         (fold_builtin_cos): Likewise.
13834         (fold_builtin_cosh): Likewise.
13835         (fold_builtin_tan): Likewise.
13836         (fold_builtin_sincos): Likewise.
13837         (fold_builtin_cexp): Likewise.
13838         (fold_builtin_trunc): Likewise.
13839         (fold_builtin_floor): Likewise.
13840         (fold_builtin_ceil): Likewise.
13841         (fold_builtin_round): Likewise.
13842         (fold_builtin_int_roundingfn): Likewise.
13843         (fold_builtin_bitop): Likewise.
13844         (fold_builtin_bswap): Likewise.
13845         (fold_builtin_logarithm): Likewise.
13846         (fold_builtin_hypot): Likewise.
13847         (fold_builtin_pow): Likewise.
13848         (fold_builtin_powi): Likewise.
13849         (fold_builtin_exponent): Likewise.
13850         (fold_builtin_memset): Likewise.
13851         (fold_builtin_bzero): Likewise.
13852         (fold_builtin_memory_op): Likewise.
13853         (fold_builtin_bcopy): Deleted; call site changed to invoke
13854         fold_builtin_memory_op directly.
13855         (fold_builtin_strcpy): Similarly as for fold_builtin_memory_op.
13856         (fold_builtin_strncpy): Likewise.
13857         (fold_builtin_memcmp): Likewise.
13858         (fold_builtin_strcmp): Likewise.
13859         (fold_builtin_strncmp): Likewise.
13860         (fold_builtin_signbit): Likewise.
13861         (fold_builtin_copysign): Likewise.
13862         (fold_builtin_isascii): Likewise.
13863         (fold_builtin_toascii): Likewise.
13864         (fold_builtin_isdigit): Likewise.
13865         (fold_builtin_fabs): Likewise.
13866         (fold_builtin_abs): Likewise.
13867         (fold_builtin_fmin_fmax): Likewise.
13868         (fold_builtin_carg): Likewise.
13869         (fold_builtin_classify): Likewise.
13870         (fold_builtin_unordered_cmp): Likewise.
13871
13872         (fold_builtin_0, fold_builtin_2, fold_builtin_3, fold_builtin_4):
13873         New functions split out from fold_builtin_1.
13874         (fold_builtin_n): New.
13875         (fold_builtin_varargs): New.
13876         (fold_builtin): Deleted.  Most callers changed to use fold_call_expr
13877         instead.
13878         (fold_call_expr): New.
13879         (build_function_call_expr): Rewrite to use new helper function.
13880         (fold_builtin_call_list): New.
13881         (build_call_expr): New.
13882         (fold_builtin_call_valist): New.
13883         (rewrite_call_expr): New.
13884         (validate_arg): New.
13885         (validate_arglist): Change parameter to be entire CALL_EXPR instead
13886         of an arglist.  Change return type to bool.  Use new CALL_EXPR
13887         accessors.
13888
13889         (fold_builtin_strstr):  Pass call arguments individually instead
13890         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
13891         accessors and constructors.  Return NULL_TREE instead of 0.
13892         (fold_builtin_strchr): Likewise.
13893         (fold_builtin_strrchr): Likewise.
13894         (fold_builtin_strpbrk): Likewise.
13895         (fold_builtin_strcat): Likewise.
13896         (fold_builtin_strncat): Likewise.
13897         (fold_builtin_strspn): Likewise.
13898         (fold_builtin_strcspn): Likewise.
13899         (fold_builtin_fputs): Likewise.
13900         (fold_builtin_next_arg): Likewise.
13901         (fold_builtin_sprintf): Likewise.
13902
13903         (expand_builtin_object_size): Use new CALL_EXPR accessors.  Use
13904         NULL_RTX instead of 0.
13905         (expand_builtin_memory_chk): Likewise.
13906         (maybe_emit_chk_warning): Likewise.
13907         (maybe_emit_sprintf_chk_warning): Likewise.
13908
13909         (fold_builtin_object_size): Pass call arguments individually instead
13910         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
13911         accessors and constructors.  Return NULL_TREE instead of 0.
13912         (fold_builtin_memory_chk): Likewise.
13913         (fold_builtin_stxcpy_chk): Likewise.
13914         (fold_builtin_strncpy_chk): Likewise.
13915         (fold_builtin_strcat_chk): Likewise.
13916         (fold_builtin_strcat_chk): Likewise.
13917         (fold_builtin_strncat_chk): Likewise.
13918         (fold_builtin_sprintf_chk): Likewise.
13919         (fold_builtin_snprintf_chk): Likewise.
13920         (fold_builtin_printf): Likewise.
13921         (fold_builtin_vprintf): Likewise.
13922
13923         * fold-const.c (negate_expr_p): Use new CALL_EXPR accessors and
13924         constructors.
13925         (operand_equal_p): Add separate tcc_vl_exp/CALL_EXPR case.
13926         (make_range): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
13927         (extract_muldiv_1): Add VL_EXP_CLASS_P case.
13928         (fold_mathfn_compare): Use new CALL_EXPR accessors and constructors.
13929         (fold_unary): Likewise.
13930         (fold_binary): Likewise.
13931         (fold_ternary): Remove CALL_EXPR case, since they are no longer
13932         ternary expressions.
13933         (fold): Add logic for tcc_vl_exp.
13934         (fold_checksum_tree):  Make it know about tcc_vl_exp.  Use
13935         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
13936         (fold_build3_stat): Add assertion to flag broken interface for
13937         constructing CALL_EXPRs.
13938         (fold_build_call_list): New.
13939         (fold_build_call_list_initializer): New.
13940         (tree_expr_nonnegative_p): Use new CALL_EXPR accessors and
13941         constructors.
13942         (fold_strip_sign_ops): Likewise.
13943
13944 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
13945             Brooks Moses  <brooks.moses@codesourcery.com>
13946             Lee Millward  <lee.millward@codesourcery.com>
13947
13948         * tree-dump.c (dequeue_and_dump) <CALL_EXPR>: Use new CALL_EXPR
13949         accessors and dump arguments explicitly.
13950
13951         * tree-pretty-print.c (do_niy): Use TREE_OPERAND_LENGTH instead of
13952         TREE_CODE_LENGTH.
13953         (dump_generic_node): Use new CALL_EXPR accessors and walk arguments
13954         explicitly.
13955         (print_call_name): Use new CALL_EXPR accessors.
13956
13957         * print-tree.c (print_node): Add case tcc_vl_exp.  Print
13958         CALL_EXPR arguments explicitly instead of as a list.  Use
13959         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
13960
13961         * tree-vrp.c (stmt_interesting_for_vrp): Use new CALL_EXPR accessors.
13962         (vrp_visit_stmt): Likewise.
13963
13964         * tree-ssa-loop-im.c (outermost_invariant_loop_expr):  Make it
13965         know about tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of
13966         TREE_CODE_LENGTH.
13967         (force_move_till_expr): Likewise.
13968
13969         * targhooks.c (default_external_stack_protect_fail): Use
13970         build_call_expr instead of build_function_call_expr.
13971         (default_hidden_stack_protect_fail): Likewise.
13972
13973         * tree-complex.c (expand_complex_libcall): Use build_call_expr to
13974         build the call.
13975
13976         * cgraphbuild.c (build_cgraph_edges): Use new CALL_EXPR accessors
13977         and walk arguments explicitly.
13978
13979         * tree-ssa-loop-niter.c (simplify_replace_tree): Use
13980         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
13981         (expand_simple_operations): Likewise.
13982         (infer_loop_bounds_from_array): Use new CALL_EXPR accessors.
13983
13984         * gengtype.c (adjust_field_tree_exp): Use TREE_OPERAND_LENGTH instead
13985         of TREE_CODE_LENGTH.
13986         (walk_type): Tweak walking of arrays not to blow up on CALL_EXPRs.
13987
13988         * optabs.c (expand_widen_pattern-expr): Use TREE_OPERAND_LENGTH
13989         instead of TREE_CODE_LENGTH.
13990
13991         * value_prof.c (tree_ic): Use new CALL_EXPR accessors.
13992         (tree_ic_transform): Likewise.
13993         (interesting_stringop_to_profile_p): Pass entire CALL_EXPR as
13994         parameter instead of arglist.  Fix callers.
13995         (tree_stringop_fixed_value): Use new CALL_EXPR accessors.
13996         (tree_stringops_transform): Likewise.
13997         (tree_indirect_call_to_profile): Likewise.
13998         (tree_stringops_values_to_profile): Likewise.
13999
14000         * tree-tailcall.c (find_tail_calls): Use new CALL_EXPR iterator.
14001         (eliminate_tail_call): Likewise.
14002
14003         * ipa-cp.c (ipcp_update_callgraph): Use new CALL_EXPR accessors.
14004
14005         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
14006         Use TREE_OPERAND_LENGTH and generalize to handle any number of
14007         operands.
14008         (instantiate_parameters_1): Can't handle tcc_vl_exp here.
14009
14010         * omp-low.c (build_omp_barrier): Use build_call_expr.
14011         (lower_rec_input_clauses): Likewise.
14012         (lower_reduction_clauses): Likewise.
14013         (expand_parallel_call): Likewise.
14014         (maybe_catch_exception): Likewise.
14015         (expand_omp_for_generic): Likewise.
14016         (expand_omp_for_static_nochunk): Likewise.
14017         (expand_omp_sections): Likewise.
14018         (lower_omp_single_simple): Likewise.
14019         (lower_omp_single_copy): Likewise.
14020         (lower_omp_master): Likewise.
14021         (lower_omp_ordered): Likewise.
14022         (lower_omp_critical): Likewise.
14023
14024         * ipa-reference.c (check-call): Use new CALL_EXPR iterator.
14025         (scan_for_static_refs): Create tcc_vl_exp case for CALL_EXPR.
14026
14027         * tree-gimple.c (is_gimple_call_addr): Fix doc.
14028         (recalculate_side_effects): Use TREE_OPERAND_LENGTH instead of
14029         TREE_CODE_LENGTH.  Add tcc_vl_exp case.
14030
14031         * tree-chrec.c (chrec_contains_symbols): Use TREE_OPERAND_LENGTH
14032         and generalize to handle any number of operands.
14033         (chrec_contains_undetermined): Likewise.
14034         (tree_contains_chrecs): Likewise.
14035         (evolution_function_is_invariant_rec_p): Use TREE_OPERAND_LENGTH.
14036
14037         * cgraphunit.c (update_call_expr): Use new CALL_EXPR accessors.
14038
14039         * tree-ssa-ccp.c (ccp_fold): Use new CALL_EXPR accessors.  Use
14040         fold_call_expr instead of fold_builtin.
14041         (ccp_fold_builtin): Likewise.  Update calls into builtins.c to
14042         match declarations there.
14043         (fold_stmt): Use new CALL_EXPR constructor and accessors.  Doc
14044         updates.
14045
14046         * tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Use
14047         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
14048
14049         * ipa-pure-const.c (check_call): Use new CALL_EXPR accessors.
14050         (scan_function): Add case tcc_vl_exp for CALL_EXPR.
14051
14052         * tree-stdarg.c (execute_optimize_stdarg): Use new CALL_EXPR
14053         accessors.
14054
14055         * tree-ssa-math-opts.c (execute_cse_sincos_1): Use build_call_expr.
14056         (execute_cse_sincos): Use new CALL_EXPR accessors.
14057
14058         * tree-ssa-alias.c (find_used_portions): Use new CALL_EXPR iterator.
14059
14060         * gimple-low.c (lower_function_body): Use build_call_expr.
14061         (lower_builtin_setjmp): Likewise.
14062
14063         * expr.c (emit_block_move_via_libcall): Use build_call_expr.
14064         (set_storage_via_libcall): Likewise.
14065         (safe_from_p): Add tcc_vl_exp case.  Use TREE_OPERAND_LENGTH
14066         instead of TREE_CODE_LENGTH.
14067         (expand_expr_real_1): Use new CALL_EXPR accessors.
14068
14069         * tree-browser.c (store_child_info): Use TREE_OPERAND_LENGTH and
14070         generalize to handle any number of operands.
14071         (TB_parent_eq): Likewise.
14072
14073         * predict.c (expr_expected_value): Use new CALL_EXPR accessors.
14074         (strip_builtin_expect): Likewise.
14075
14076         * function.c (gimplify_parameters): Use build_call_expr.
14077
14078         * tree-vectorizer.c (vect_is_simple_reduction): Use
14079         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
14080
14081         * ipa-type-escape.c (check_call): Use new CALL_EXPR iterators.
14082         (scan_for_refs): Add case tcc_vl_exp for CALL_EXPR.
14083
14084         * tree-data-ref.c (get_references_in_stmt): Use new CALL_EXPR
14085         iterators.
14086
14087         * gimplify.c (build_stack_save_restore): Use build_call_expr.
14088         (gimplify_decl_expr): Likewise.
14089         (gimplify_call_expr): Use fold_call_expr instead of fold_builtin.
14090         Use new CALL_EXPR iterators.
14091         (gimplify_modify_expr_to_memcpy): Use build_call_expr.
14092         (gimplify_modify_expr_to_memset): Likewise.
14093         (gimplify_variable_sized_compare): Likewise.
14094         (gimplify_omp_atomic_fetch_op): Likewise.
14095         (gimplify_omp_atomic_pipeline): Likewise.
14096         (gimplify_omp_atomic_mutex): Likewise.
14097         (gimplify_function_tree): Likewise.
14098
14099         * calls.c (alloca_call_p): Use new CALL_EXPR accessors.
14100         (call_expr_flags): Likewise.
14101         (expand_call): Likewise.
14102
14103         * except.c (expand_builtin_eh_return_data_regno): Pass entire
14104         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
14105         accessors.
14106
14107         * coverage.c (create_coverage): Use build_call_expr.
14108
14109         * tree-ssa-pre.c (expression_node_pool, list_node_pool): Delete.
14110         (temp_call_expr_obstack): New.
14111         (pool_copy_list): Delete.
14112         (temp_copy_call_expr): New.
14113         (phi_translate): Add case tcc_vl_exp for CALL_EXPR.  Use new
14114         CALL_EXPR accessors.  Get rid of special goo for copying argument
14115         lists and use temp_copy_call_expr instead.
14116         (valid_in_sets): Add case tcc_vl_exp for CALL_EXPR.  Use new
14117         CALL_EXPR accessors.
14118         (create_expression_by_pieces): Likewise.  Use build_call_array
14119         to construct the result instead of fold_build3.
14120         (create_value_expr_from): Add tcc_vl_exp.  Delete special goo for
14121         dealing with argument lists.
14122         (init_pre): Remove references to expression_node_pool and
14123         list_node_pool.  Init temp_call_expr_obstack instead.
14124         (fini_pre): Remove references to expression_node_pool and
14125         list_node_pool.
14126
14127         * tree-sra.c (sra_walk_call_expr): Use new CALL_EXPR accessors
14128         and walk arguments explicitly instead of as a list.
14129
14130         * tree-mudflap.c (mf_build_check_statement_for): Use build_call_expr.
14131         (mx_register_decls): Likewise.
14132         (mudflap_register_call): Likewise.
14133         (mudflap_finish_file): Likewise.
14134
14135         * ipa-prop.c (ipa_callsite_compute_count): Use new CALL_EXPR accessors.
14136         (ipa_callsite_compute_param): Likewise.
14137
14138         * tree-vect-patterns.c (vect_recog_pow_pattern): Use new CALL_EXPR
14139         accessors and constructor.
14140
14141         * tree-nested.c (convert_nl_goto_reference): Use new CALL_EXPR
14142         accessors and constructor.
14143         (convert_tramp_reference): Likewise.
14144         (convert_call_expr): Likewise.
14145         (finalize_nesting_tree_1): Likewise.
14146
14147         * tree-ssa.c (tree_ssa_useless_type_conversion): Use new CALL_EXPR
14148         accessors.
14149
14150         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Use build_call_expr.
14151
14152         * tree-inline.c (initialize_inlined_parameters): Pass entire
14153         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
14154         accessors.
14155         (estimate_num_insns_1): Use new CALL_EXPR accessors.
14156         (expand_call_inline): Tidy up call to initialize_inlined_parameters.
14157
14158         * tree-vect-transform.c (vect_create_epilog_for_reduction):  Use
14159         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
14160         (vectorizable_reduction): Likewise.
14161         (vectorizable_call): Use new CALL_EXPR iterators.
14162         (vectorizable_conversion): Use build_call_expr.
14163         (vectorizable_operation): Use TREE_OPERAND_LENGTH.
14164         (vect_gen_widened_results_half): Use build_call_expr.
14165         (vect_setup_realignment): Likewise.
14166         (vectorizable_live_operation): Use TREE_OPERAND_LENGTH.
14167
14168         * tree-object-size.c (alloc_object_size): Use new CALL_EXPR accessors.
14169         (pass_through_call): Likewise.
14170         (compute_object_sizes): Likewise.  Use fold_call_expr instead of
14171         fold_builtin.
14172
14173         * tree-profile.c (tree_gen_interval_profiler): Use build_call_expr.
14174         (tree_gen_pow2_profiler): Likewise.
14175         (tree_gen_one_value_profiler): Likewise.
14176         (tree_gen_ic_func_profiler): Likewise.
14177         (tree_gen_average_profiler): Likewise.
14178         (tree_gen_ior_profiler): Likewise.
14179
14180         * tree-ssa-structalias.c (get_constraint_for): Add case tcc_vl_exp.
14181         (find_func_aliases): Use new CALL_EXPR accessors.  Add case
14182         tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
14183
14184         * tree-ssa-reassoc.c (get_rank): Use TREE_OPERAND_LENGTH instead
14185         of TREE_CODE_LENGTH.
14186
14187         * stmt.c (warn_if_unused_value): Use TREE_OPERAND_LENGTH instead
14188         of TREE_CODE_LENGTH.
14189
14190         * convert.c (convert_to_real): Use new CALL_EXPR accessors and
14191         constructor.
14192         (convert_to_integer): Likewise.
14193
14194         * tree-ssa-operands.c (get_call_expr_operands): Use new CALL_EXPR
14195         accessors.
14196
14197 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
14198             Brooks Moses  <brooks.moses@codesourcery.com>
14199             Lee Millward  <lee.millward@codesourcery.com>
14200
14201         * config/alpha/alpha.c (alpha_expand_builtin): Use new CALL_EXPR
14202         accessors.
14203         * config/frv/frv.c (frv_expand_builtin): Likewise.
14204         * config/s390/s390.c (s390_expand_builtin): Likewise.
14205
14206         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use build_call_expr.
14207         (sparc_expand_builtin): Use new CALL_EXPR accessors.
14208
14209         * config/i386/i386.c (ix86_function_ok_for_sibcall): Likewise.
14210         (ix86_expand_binop_builtin): Pass entire CALL_EXPR as parameter
14211         instead of arglist.  Use new CALL_EXPR accessors on it.  Fix callers.
14212         (ix86_expand_store_builtin): Likewise.
14213         (ix86_expand_unop_builtin): Likewise.
14214         (ix86_expand_unop1_builtin): Likewise.
14215         (ix86_expand_sse_compare): Likewise.
14216         (ix86_expand_sse_comi): Likewise.
14217         (ix86_expand_vec_init_builtin): Likewise.
14218         (ix86_expand_vec_ext_builtin): Likewise.
14219         (ix86_expand_vec_set_builtin): Likewise.
14220         (ix86_expand_builtin): Use new CALL_EXPR accessors.
14221
14222         * config/sh/sh.c (sh_expand_builtin): Use new CALL_EXPR accessors.
14223         * config/c4x/c4x.c (c4x_expand_builtin): Likewise.
14224
14225         * config/iq2000/iq2000.c (expand_one_builtin): Pass entire CALL_EXPR
14226         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
14227         (iq2000_expand_builtin): Use new CALL_EXPR accessors.
14228
14229         * config/rs6000/rs6000-c.c (altivec_build_resolved_builtin): Use
14230         build_call_expr.
14231         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
14232         (rs6000_expand_unop_builtin): Pass entire CALL_EXPR instead of
14233         arglist.  Use new CALL_EXPR accessors.  Fix callers.
14234         (altivec_expand_abs_builtin): Likewise.
14235         (rs6000_expand_binop_builtin): Likewise.
14236         (altivec_expand_predicate_builtin): Likewise.
14237         (altivec_expand_lv_builtin): Likewise.
14238         (spe_expand_stv_builtin): Likewise.
14239         (altivec_expand_stv_builtin): Likewise.
14240         (rs6000_expand_ternop_builtin): Likewise.
14241         (altivec_expand_ld_builtin): Use new CALL_EXPR accessors.
14242         (altivec_expand_st_builtin): Likewise.
14243         (altivec_expand_dst_builtin): Likewise.
14244         (altivec_expand_vec_init_builtin): Pass entire CALL_EXPR instead of
14245         arglist.  Use new CALL_EXPR accessors.  Fix callers.
14246         (altivec_expand_vec_set_builtin): Likewise.
14247         (altivec_expand_vec_ext_builtin): Likewise.
14248         (altivec_expand_builtin): Use new CALL_EXPR accessors.
14249         (spe_expand_builtin): Likewise.
14250         (spe_expand_predicate_builtin): Pass entire CALL_EXPR instead of
14251         arglist.  Use new CALL_EXPR accessors.  Fix callers.
14252         (spe_expand_evsel_builtin): Likewise.
14253         (rs6000_expand_builtin): Use new CALL_EXPR accessors.  VCFUX and
14254         FCFSX cases must construct whole new CALL_EXPR, not just arglist.
14255
14256         * config/arm/arm.c (arm_expand_binop_builtin): Pass entire CALL_EXPR
14257         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
14258         (arm_expand_unop_builtin): Likewise.
14259         (arm_expand_builtin): Use new CALL_EXPR accessors.
14260
14261         * config/mips/mips.c (mips_expand_builtin):  Use new CALL_EXPR
14262         accessors.
14263
14264         * config/bfin/bfin.c (bfin_expand_binop_builtin): Pass entire
14265         CALL_EXPR instead of arglist.  Use new CALL_EXPR accessors.
14266         Fix callers.
14267         (bfin_expand_unop_builtin): Likewise.
14268         (bfin_expand_builtin): Use new CALL_EXPR accessors.
14269
14270 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
14271             Brooks Moses  <brooks.moses@codesourcery.com>
14272             Lee Millward  <lee.millward@codesourcery.com>
14273
14274         * c-semantics.c (build_stmt): Add internal diagnostic check.
14275
14276         * c-pretty-print.c (pp_c_postfix_expression): Use new CALL_EXPR
14277         accessors.  Print arguments explicitly instead of as a list.
14278
14279         * c-typeck.c (build_function_call): Use new CALL_EXPR constructors.
14280
14281         * c-omp.c (c_finish_omp_barrier): Use build_call_expr.
14282         (c_finish_omp_flish): Likewise.
14283
14284         * c-common.c (verify_tree): Use new CALL_EXPR accessors.  Traverse
14285         arguments explicitly instead of as a list.  Use TREE_OPERAND_LENGTH
14286         instead of TREE_CODE_LENGTH.
14287         (check_function_arguments_recurse): Use new CALL_EXPR accessors.
14288         (c_warn_unused_result): Likewise.
14289
14290 2007-02-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
14291
14292         PR c/26494
14293         * doc/invoke.texi (Warning Options): Remove
14294         -Werror-implicit-function-declaration.
14295         (Wimplicit-function-declaration): Update description.
14296         * opts.c (common_handle_option): Move handling of -Werror=* to...
14297         (enable_warning_as_error): ...here.
14298         * opts.h (enable_warning_as_error): Declare.
14299         * c-decl.c (implicit_decl_warning): Unless
14300         -Wno-implicit-function-declaration is given, emit a pedwarn if
14301         -std=c99 or emit a warning if -Wimplicit-function-declaration.
14302         * c.opt (Wimplicit-function-declaration): Replace
14303         mesg_implicit_function_declaration with
14304         warn_implicit_function_declaration.
14305         * c-opts.c (c_common_handle_option):
14306         -Werror-implicit-function-declaration is exactly equal as
14307         -Werror=implicit-function-declaration.
14308         (set_Wimplicit): Replace mesg_implicit_function_declaration with
14309         warn_implicit_function_declaration.
14310         (c_common_post_options): -Wimplict-function-declaration is enabled
14311         by default by -std=c99, otherwise is disabled by default.
14312         * c-objc-common.c (c_objc_common_init): Remove flawed logic.
14313
14314 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
14315
14316         * gimplify.c (gimplify_modify_expr): During gimplification, attach a
14317         DECL on the rhs to a DECL on the lhs for debug info purposes if the
14318         former is ignored but not the latter.
14319
14320 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
14321
14322         * expr.c (expand_expr_real_1) <normal_inner_ref>: If a temporary
14323         is made and the reference doesn't use the alias set of its type,
14324         do not create the temporary using that type.
14325
14326 2007-02-15  Aldy Hernandez  <aldyh@redhat.com>
14327
14328         * jump.c: Remove prototypes for delete_computation and
14329         delete_prior_computation.
14330
14331 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
14332
14333         * jump.c (get_label_after): Delete.
14334         (get_label_before, delete_computation, delete_jump,
14335         delete_prior_computation, follow_jumps): Move...
14336         * reorg.c (delete_computation, delete_prior_computation): ... here...
14337         (get_label_before, delete_jump): ... making these static ...
14338         (follow_jumps): ... and simplifying this since it only runs after
14339         reload.
14340         * rtl.h (get_label_after, get_label_before, delete_jump,
14341         follow_jumps): Delete prototypes.
14342
14343 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
14344
14345         * caller-save.c (save_call_clobbered_regs): Do not process sibcalls.
14346
14347 2007-02-15  Nick Clifton  <nickc@redhat.com>
14348
14349         * varasm.c (default_asm_output_anchor): Prepend * to . symbol in
14350         order to prevent it from being munged by the target.
14351
14352 2007-02-15  Uros Bizjak  <ubizjak@gmail.com>
14353
14354         * config/i386/i386.md: Remove misleading comment.
14355
14356 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
14357
14358         * config/frv/frv.md (reload_incc, reload_outcc, reload_incc_uns,
14359         reload_outcc_uns, reload_incc_nz, reload_outcc_nz): Remove
14360         invalid patterns.
14361
14362 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
14363
14364         * tree-sra.c (instantiate_missing_elements): Canonicalize
14365         bit-field types.
14366         (sra_build_assignment): New.
14367         (generate_copy_inout, generate_element_copy,
14368         generate_element_zero, generate_one_element_init): Use it.
14369
14370 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
14371
14372         * tree-sra.c (instantiate_missing_elements): Canonicalize
14373         bit-field types.
14374         (sra_build_assignment): New.
14375         (generate_copy_inout, generate_element_copy,
14376         generate_element_zero, generate_one_element_init): Use it.
14377
14378 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
14379
14380         * dwarf2out.c (dwarf2out_finish): Accept namespaces as context of
14381         limbo die nodes.
14382
14383 2007-02-14  Joseph Myers  <joseph@codesourcery.com>
14384
14385         * emit-rtl.c (set_mem_attributes_minus_bitpos): Treat complex
14386         types as aggregates not scalars.
14387         * function.c (assign_stack_temp_for_type): Likewise.
14388
14389 2007-02-14  Roger Sayle  <roger@eyesopen.com>
14390             Zdenek Dvorak  <dvorakz@suse.cz>
14391
14392         * tree-dump.c (dump_switch_p_1): Require exact match of the option
14393         name.
14394
14395 2007-02-14  Zdenek Dvorak  <dvorakz@suse.cz>
14396
14397         * passes.c (next_pass_1): Clear the next field of the copied
14398         pass structure.
14399
14400 2007-02-14  Richard Henderson  <rth@redhat.com>
14401
14402         * tree-sra.c (early_sra): New.
14403         (decl_can_be_decomposed_p): Deny va_list if early_sra.
14404         (tree_sra_early, pass_sra_early): New.
14405         * tree-pass.h (pass_sra_early): Declare.
14406         * passes.c (init_optimization_passes): Use it.
14407
14408 2007-02-14  Richard Guenther  <rguenther@suse.de>
14409
14410         * flags.h (issue_strict_overflow_warning): Convert to a macro.
14411
14412 2007-02-14  Dorit Nuzman  <dorit@il.ibm.com>
14413
14414          PR tree-optimization/30771
14415         * tree-vect-analyze.c (vect_determine_vectorization_factor): Traverse
14416         also phi nodes.
14417         (vect_analyze_operations): Induction phis can now be marked as
14418         used_in_loop.
14419         (vect_mark_stmts_to_be_vectorized): No special treatment for phis.
14420         Update documentation accordingly.
14421
14422 2007-02-14  Nick Clifton  <nickc@redhat.com>
14423
14424         * builtin-types.def (DEF_FUNCTION_TYPE_x): Do not imply that at
14425         most 3 arguments are supported.
14426         (DEF_FUNCTION_TYPE_VAR_5): Fix typo in its description.
14427
14428 2007-02-13  Seongbae Park <seongbae.park@gmail.com>
14429
14430         * bitmap.c (bitmap_and, bitmap_and_compl, bitmap_xor):
14431         Ensure dst->current is valid.
14432
14433 2007-02-13  Paul Brook  <paul@codesourcery.com>
14434
14435         * config.gcc: Add arm*-*-uclinux-*eabi.
14436         * config/arm/uclinux-elf.h (TARGET_OS_CPP_BUILTINS): Define.
14437         (SUBTARGET_EXTRA_LINK_SPEC): Define.
14438         (STARTFILE_SPEC, ENDFILE_SPEC): Remove broken -shared handling.
14439         (LINK_GCC_C_SEQUENCE_SPEC): Undef.
14440         (LINK_SPEC): Define.
14441         (LIB_SPEC): Define.
14442         * config/arm/arm.c (arm_override_options): Use r9 as EABI PIC
14443         register.
14444         * config/arm/uclinux-eabi.h: New file.
14445         * config/arm/linux-eabi.h (WCHAR_TYPE): Remove.
14446         * config/arm/linux-gas.h (WCHAR_TYPE): Use unsigned long on AAPCS
14447         based targets.
14448
14449 2007-02-13  Ian Lance Taylor  <iant@google.com>
14450
14451         * common.opt: Add Wstrict-overflow and Wstrict-overflow=.
14452         * flags.h (warn_strict_overflow): Declare.
14453         (enum warn_strict_overflow_code): Define.
14454         (issue_strict_overflow_warning): New static inline function.
14455         * opts.c (warn_strict_overflow): New variable.
14456         (common_handle_option): Handle OPT_Wstrict_overflow and
14457         OPT_Wstrict_overflow_.
14458         * c-opts.c (c_common_handle_option): Set warn_strict_overflow for
14459         OPT_Wall.
14460         * fold-const.c: Include intl.h.
14461         (fold_deferring_overflow_warnings): New static variable.
14462         (fold_deferred_overflow_warning): New static variable.
14463         (fold_deferred_overflow_code): New static variable.
14464         (fold_defer_overflow_warnings): New function.
14465         (fold_undefer_overflow_warnings): New function.
14466         (fold_undefer_and_ignore_overflow_warnings): New function.
14467         (fold_deferring_overflow_warnings_p): New function.
14468         (fold_overflow_warning): New static function.
14469         (make_range): Add strict_overflow_p parameter.  Change all
14470         callers.
14471         (extract_muldiv, extract_muldiv_1): Likewise.
14472         (fold_unary) [ABS_EXPR]: Check ABS_EXPR before calling
14473         tree_expr_nonnegative_p.
14474         (fold_negate_expr): Call fold_overflow_warning.
14475         (fold_range_test): Likewise.
14476         (fold_comparison): Likewise.
14477         (fold_binary): Likewise.  Call tree_expr_nonnegative_warnv_p
14478         instead of tree_expr_nonnegative_p.
14479         (tree_expr_nonnegative_warnv_p): Rename from
14480         tree_expr_nonnegative_p, add strict_overflow_p parameter.
14481         (tree_expr_nonnegative_p): New function.
14482         (tree_expr_nonzero_warnv_p): Rename from tree_expr_nonzero_p, add
14483         strict_overflow_p parameter.
14484         (tree_expr_nonzero_p): New function.
14485         * passes.c (verify_interpass_invariants): New static function.
14486         (execute_one_pass): Call it.
14487         * tree-ssa-loop-niter.c (expand_simple_operations): Ignore fold
14488         warnings.
14489         (number_of_iterations_exit, loop_niter_by_eval): Likewise.
14490         (estimate_numbers_of_iterations): Likewise.
14491         (scev_probably_wraps_p): Likewise.
14492         * tree-ssa-ccp.c: Include "toplev.h".
14493         (evaluate_stmt): Defer fold overflow warnings until we know we are
14494         going to optimize.
14495         (struct fold_stmt_r_data): Add stmt field.
14496         (fold_stmt_r): Defer fold overflow warnings until we know we
14497         optimized.
14498         (fold_stmt): Initialize stmt field of fold_stmt_r_data.
14499         (fold_stmt_inplace): Likewise.
14500         * tree-cfgcleanup.c: Include "toplev.h" rather than "errors.h".
14501         (cleanup_control_expr_graph): Defer fold overflow warnings until
14502         we know we are going to optimize.
14503         * tree-cfg.c (fold_cond_expr_cond): Likewise.
14504         * tree-ssa-threadedge.c (simplify_control_stmt_condition):
14505         Likewise.
14506         * tree-vrp.c (vrp_expr_computes_nonnegative): Call
14507         tree_expr_nonnegative_warnv_p instead of tree_expr_nonnegative_p.
14508         * tree-ssa-loop-manip.c (create_iv): Likewise.
14509         * c-typeck.c (build_conditional_expr): Likewise.
14510         (build_binary_op): Likewise.
14511         * tree-vrp.c (vrp_expr_computes_nonzero): Call
14512         tree_expr_nonzero_warnv_p instead of tree_expr_nonzero_p.
14513         (extract_range_from_unary_expr): Likewise.
14514         * simplify-rtx.c (simplify_const_relational_operation): Warn when
14515         assuming that signed overflow does not occur.
14516         * c-common.c (pointer_int_sum): Ignore fold overflow warnings.
14517         * tree.h (tree_expr_nonnegative_warnv_p): Declare.
14518         (fold_defer_overflow_warnings): Declare.
14519         (fold_undefer_overflow_warnings): Declare.
14520         (fold_undefer_and_ignore_overflow_warnings): Declare.
14521         (fold_deferring_overflow_warnings_p): Declare.
14522         (tree_expr_nonzero_warnv_p): Declare.
14523         * doc/invoke.texi (Option Summary): Add -Wstrict-overflow to list
14524         of warning options.
14525         (Warning Options): Document -Wstrict-overflow.
14526         * Makefile.in (tree-ssa-threadedge.o): Depend on toplev.h.
14527         (tree-ssa-ccp.o): Likewise.
14528         (tree-cfgcleanup.o): Change errors.h dependency to toplev.h.
14529         (fold-const.o): Depend on intl.h.
14530
14531 2007-02-13  Ian Lance Taylor  <iant@google.com>
14532
14533         PR middle-end/30751
14534         * lower-subreg.c (resolve_simple_move): Decompose subregs in
14535         addresses.
14536
14537 2007-02-13  Stuart Hastings  <stuart@apple.com>
14538
14539         * config/i386/i386.md (fixuns_truncdfhi2): Require SSE2.
14540
14541 2007-02-13  Richard Henderson  <rth@redhat.com>
14542
14543         * config/alpha/alpha.c (alpha_stdarg_optimize_hook): Strip
14544         handled_component_p before looking for the indirect_ref.
14545
14546 2007-02-13  Richard Henderson  <rth@redhat.com>
14547
14548         * config/i386/i386.md (bswapsi_1): Rename from bswapsi2,
14549         remove flags clobber.
14550         (bswapsi2): New expander, emit code for !TARGET_BSWAP.
14551         (bswaphi_lowpart): New.
14552         (bswapdi2): Rename from bswapdi2_rex, remove flags clobber,
14553         remove TARGET_BSWAP test.  Delete expander of the same name.
14554
14555         * optabs.c (widen_bswap, expand_doubleword_bswap): New.
14556         (expand_unop): Use them.
14557
14558 2007-02-13  Uros Bizjak  <ubizjak@gmail.com>
14559
14560         * config/i386/i386.md (cmpdi_ccno_1_rex64, *cmpsi_ccno_1,
14561         *cmphi_ccno_1, *cmpqi_ccno_1, *movsi_xor, *movstricthi_xor,
14562         *movstrictqi_xor, *movdi_xor_rex64, *ashldi3_1_rex64,
14563         *ashldi3_cmp_rex64, *ashldi3_cconly_rex64, ashlsi3, *ashlsi3_1_zext,
14564         *ashlsi3_cmp, *ashlsi3_cconly, *ashlsi3_cmp_zext, *ashlhi3_1_lea,
14565         *ashlhi3_1, *ashlhi3_cmp, *ashlhi3_cconly, *ashlqi3_1_lea,
14566         *ashlqi3_1, *ashlqi3_cmp, *ashlqi3_cconly): Remove equivalent
14567         assembler dialect choice from asm templates.
14568
14569 2007-02-12  Richard Henderson  <rth@redhat.com>
14570
14571         * config/i386/i386.md (fixuns_trunc<SSEMODEF>si_1): New insn.
14572         (fixuns_trunc<SSEMODEF>si2): Use it.
14573         * config/i386/sse.md (vec_setv4sf_0): Export.
14574         * config/i386/i386.c (ix86_build_const_vector): Export.
14575         (ix86_split_convert_uns_si_sse): Rename from
14576         ix86_expand_convert_uns_si_sse and rewrite as a splitter.
14577         * config/i386/i386-protos.h: Update.
14578
14579 2007-02-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
14580
14581         PR c/29521
14582         * c-typeck.c (c_finish_return): Improve warning message.
14583
14584 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
14585
14586         * alias.c (find_symbolic_term): Delete unused function.
14587
14588 2007-02-12  Uros Bizjak  <ubizjak@gmail.com>
14589
14590         * config/i386/i386.md (paritydi2, paritysi2): New expanders.
14591         (paritydi2_cmp, paritydi2_cmp): New insn and split patterns.
14592         (*parityhi2_cmp, *parityqi2_cmp): New insn patterns.
14593
14594 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
14595
14596         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
14597         * cgraphunit.c (cgraph_expand_function): If DECL_IGNORED_P is set on
14598         the function, temporarily point the debug interface to the null one.
14599
14600 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
14601
14602         * dwarf2out.c (round_up_to_align): New static function.
14603         (field_byte_offset): Use it to round the offset.
14604
14605 2007-02-12  Richard Henderson  <rth@redhat.com>
14606
14607         * config/alpha/alpha.md (bswapsi2, bswapdi2): New.
14608         (inswl_const): Export.
14609
14610 2007-02-12  Richard Henderson  <rth@redhat.com>
14611
14612         * calls.c (emit_library_call_value_1): If PROMOTE_MODE modifed the
14613         result mode of the libcall, convert back to outmode.
14614
14615 2007-02-12  Roger Sayle  <roger@eyesopen.com>
14616
14617         * config/i386/i386.md (*bswapdi2_rex): Renamed from bswapdi2.
14618         (bswapdi2): New define_expand to implement 32-bit implementation.
14619
14620 2007-02-12  Nick Clifton  <nickc@redhat.com>
14621
14622         * doc/invoke.texi (Overall Options): Document --help=.
14623         * gcc.c (target_help_flag): Rename to print_subprocess_flag.
14624         (cc1_options): Pass --help= on to cc1.
14625         (display_help): Add description of --help=.
14626         (process_command): Add code to handle --help=.  Allow translated
14627         --help and --target-help switches to be passed on to compiler
14628         sub-process.
14629         (main): Remove unused if statement.
14630         * opts.c (columns): Remove.
14631         (LEFT_COLUMN): Define.
14632         (wrap_help): Add columns argument.
14633         (print_filtered_help): Change parameters to be an include bitmask,
14634         an exclude bitmask, an any bitmask and the column width.  Move the
14635         code to display the params list here.  Add code to display the
14636         status of options rather than their descriptions if the quiet flag
14637         is not active.
14638         (print_specific_help): Change parameters to be an include bitmask,
14639         an exclude bitmask and an any bitmask.  Move code to look up the
14640         column width here.  Decide upon the title for an options listing.
14641         (common_handle_options): Add code to handle --help=.  Adapt code
14642         for --help and --target-help to use the revised form of the
14643         print_specific_help function.
14644         (print_help): Delete.
14645         (print_param_help): Delete.
14646         (print_switch): Delete.
14647         * opts.h (cl_lang_count): Add prototype.
14648         (CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_MIN_OPTION_CLASS,
14649         CL_MAX_OPTION_CLASS): New defines.
14650         * optc-gen.awk: Add construction of cl_lang_count.
14651         * c.opt: Add Warning attribute to warning options and Optimization
14652         attribute to optimization options.
14653         * common.opt: Likewise.
14654         Add --help=.
14655         Add -fhelp and -ftarget-help as aliases for the transformed --help
14656         and --target-help options.
14657         * opt-functions.awk: Add code to handle Warning and Optimization
14658         attributes.
14659
14660 2007-02-12  Richard Henderson  <rth@redhat.com>
14661
14662         * config/alpha/constraints.md: New file.
14663         * config/alpha/alpha.c: Include tm-constrs.h.
14664         (alpha_const_ok_for_letter_p, alpha_const_double_ok_for_letter_p,
14665         alpha_extra_constraint): Remove.
14666         (alpha_emit_conditional_branch): Use satisfies_constraint_*.
14667         * config/alpha/alpha-protos.h: Update.
14668         * config/alpha/alpha.h (REG_CLASS_FROM_LETTER): Remove.
14669         (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P): Remove.
14670         (EXTRA_CONSTRAINT): Remove.
14671         * config/alpha/alpha.md: Include constraints.md.
14672         (adddi splitter): Use satisfies_constraint_*.
14673         * config/alpha/predicates.md (add_operand): Likewise.
14674         (sext_add_operand, addition_operation): Likewise.
14675
14676 2007-02-12  Dorit Nuzman  <dorit@il.ibm.com>
14677
14678         PR tree-optimization/29145
14679         * tree-data-ref.c (base_addr_differ_p): Make us more conservative
14680         in our handling of restrict qualified pointers.
14681
14682 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
14683
14684         PR middle-end/7651
14685         * doc/invoke.texi (Wunused-value): Update description.
14686         (Wextra): Delete item.
14687         * opts.c (set_Wextra): Don't use the value of Wextra to set the
14688         value of Wunused-value.
14689         * c-typeck.c (c_process_expr_stmt): Don't check extra_warnings.
14690         (c_finish_stmt_expr): Don't check extra_warnings.
14691         (emit_side_effect_warnings): The caller is responsible to check
14692         warn_unused_value.
14693
14694 2007-02-11  Roger Sayle  <roger@eyesopen.com>
14695             Matt Thomas  <matt@3am-software.com>
14696
14697         * simplify-rtx.c (simplify_relational_operation_1): Correct typo.
14698
14699 2007-02-11  Roger Sayle  <roger@eyesopen.com>
14700
14701         * simplify-rtx.c (simplify_relational_operation_1): Optimize
14702         comparisons of POPCOUNT against zero.
14703         (simplify_const_relational_operation): Likewise.
14704
14705 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
14706
14707         * doc/invoke.texi (Wextra): Delete outdated paragraph.
14708
14709 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
14710
14711         * dwarf2out.c (root_type): Delete unused function.
14712
14713 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
14714
14715         * genattrtab.c (contained_in_p): Delete unused function.
14716         (write_expr_attr_cache): Likewise.
14717
14718 2007-02-11  Jan Hubicka  <jh@suse.cz>
14719
14720         * ipa-inline.c (cgraph_edge_badness): Add "else" missing in the
14721         previous patch.
14722
14723 2007-02-11  Steven Bosscher  <steven@gcc.gnu.org>
14724
14725         * fwprop.c (try_fwprop_subst): Use set_unique_reg_note
14726         to add the REG_EQ* note.
14727         * see.c (see_merge_one_use_extension): Likewise.
14728         * local-alloc.c (update_equiv_regs): Likewise.  Also don't
14729         turn REG_EQUAL notes into REG_EQUIV notes if the target
14730         register may have more than one set.
14731         * function.c (assign_parm_setup_reg): Use set_unique_reg_note.
14732         * gcse.c (try_replace_reg): Likewise.
14733         * alias.c (init_alias_analysis): Use find_reg_equal_equiv_note.
14734         * calls.c (fixup_tail_calls): Likewise.  Abort if there is
14735         more than one REG_EQUIV note.
14736         * reload1.c (gen_reload): Use set_unique_reg_note.
14737
14738 2007-02-11  Uros Bizjak  <ubizjak@gmail.com>
14739
14740         * config/i386/i386.c (TARGET_VECTORIZE_BUILTIN_CONVERSION): Define.
14741         (ix86_builtin_conversion): New function.
14742
14743 2007-02-06  Mark Mitchell  <mark@codesourcery.com>
14744
14745         PR target/29487
14746         * tree.h (DECL_REPLACEABLE_P): New macro.
14747         * except.c (set_nothrow_function_flags): Likewise.
14748
14749 2007-02-11  Tehila Meyzels  <tehila@il.ibm.com>
14750             Ira Rosen  <irar@il.ibm.com>
14751             Dorit Nuzman  <dorit@il.ibm.com>
14752
14753         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_CONVERSION): New target hook.
14754         * targhooks.c (default_builtin_vectorized_conversion): New.
14755         * targhooks.h (default_builtin_vectorized_function): New declaration.
14756         * target.h (struct vectorize): Add builtin_conversion field.
14757         * tree-vectorizer.h (type_conversion_vec_info_type): New enum
14758         stmt_vec_info_type value.
14759         (vectorizable_conversion): New declaration.
14760         * tree-vect-analyze.c (vect_analyze_operations): Add
14761         vectorizable_conversion call.
14762         * target-def.h (TARGET_VECTORIZE_BUILTIN_CONVERSION): New.
14763         * tree-vect-transform.c (vectorizable_conversion): New function.
14764         (vect_transform_stmt): Add case for type_conversion_vec_info_type.
14765         * tree-vect-generic.c (expand_vector_operations_1): Consider correct
14766         mode.
14767         * config/rs6000/rs6000.c (rs6000_builtin_conversion): New.
14768         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Defined.
14769         (rs6000_expand_builtin): Add handling a case of ALTIVEC_BUILTIN_VCFUX
14770         or ALTIVEC_BUILTIN_VCFSX.
14771
14772 2007-02-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
14773
14774         PR target/30634
14775         * pa.md (movdf): For 64-bit target, fail if operand 1 is a non-zero
14776         CONST_DOUBLE and operand 0 is a hard register.
14777         (movdi): For 64-bit target, remove code to force CONST_DOUBLE to
14778         memory.  Fail if operand 1 is a non-zero CONST_INT and operand 0
14779         is a hard floating-point register.
14780
14781 2007-02-10  Richard Henderson  <rth@redhat.com>
14782             Jakub Jelinek  <jakub@redhat.com>
14783             Alexandre Oliva  <aoliva@redhat.com>
14784
14785         * Makefile.in (libgcc-support, libgcc.mvars): Add emutls.c.
14786         * builtin-types.def (BT_WORD): Make unsigned.
14787         (BT_FN_VOID_PTR_WORD_WORD_PTR): New.
14788         * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS): New.
14789         (BUILT_IN_EMUTLS_REGISTER_COMMON): New.
14790         * c-decl.c (grokdeclarator): Don't error if !have_tls.
14791         * c-parser.c (c_parser_omp_threadprivate): Likewise.
14792         * dwarf2out.c (loc_descriptor_from_tree_1): Don't do anything for
14793         emulated tls.
14794         * expr.c (emutls_var_address): New.
14795         (expand_expr_real_1): Expand emulated tls.
14796         (expand_expr_addr_expr_1): Likewise.
14797         * libgcc-std.ver: Add __emutls_get_address, __emutls_register_common.
14798         * output.h (emutls_finish): Declare.
14799         * toplev.c (compile_file): Call it.
14800         * tree-ssa-address.c (gen_addr_rtx): Check for const-ness of the
14801         address before wrapping in CONST.
14802         * varasm.c (emutls_htab, emutls_object_type): New.
14803         (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): New.
14804         (get_emutls_object_name, get_emutls_object_type): New.
14805         (get_emutls_init_templ_addr, emutls_decl): New.
14806         (emutls_common_1, emutls_finish): New.
14807         (assemble_variable): When emulating tls, swap decls; generate
14808         constructor for the emutls objects.
14809         (do_assemble_alias): When emulating tls, swap decl and target name.
14810         (default_encode_section_info): Don't add SYMBOL_FLAG_TLS_SHIFT
14811         for emulated tls.
14812         * varpool.c (decide_is_variable_needed): Look at force_output.
14813         Recurse for emulated tls.
14814         (cgraph_varpool_remove_unreferenced_decls): Remove checks redundant
14815         with decide_is_variable_needed.
14816         * emutls.c: New file.
14817         * config/sparc/sol2.h (ASM_DECLARE_OBJECT_NAME): Only emit
14818         tls_object for real tls.
14819
14820 2007-02-10  Kaz Kojima  <kkojima@gcc.gnu.org>
14821
14822         PR rtl-optimization/29599
14823         * reload1.c (eliminate_regs_in_insn): Take the destination
14824         mode into account when computing the offset.
14825
14826 2007-02-09  Stuart Hastings  <stuart@apple.com>
14827             Richard Henderson  <rth@redhat.com>
14828
14829         * config/i386/i386.h (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
14830         * config/i386/darwin.h: (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
14831         * config/i386/i386.md (fixuns_trunc<mode>si2, fixuns_truncsfhi2,
14832         fixuns_truncdfhi2): New.
14833         (fix_truncsfdi_sse): Call ix86_expand_convert_sign_didf_sse.
14834         (floatunsdidf2): Call ix86_expand_convert_uns_didf_sse.
14835         (floatunssisf2): Add call to ix86_expand_convert_uns_sisf_sse.
14836         (floatunssidf2): Allow nonimmediate source.
14837         * config/i386/sse.md (movdi_to_sse): New.
14838         (vec_concatv2di): Drop '*'.
14839         * config/i386/i386-protos.h (ix86_expand_convert_uns_si_sse,
14840         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
14841         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse):
14842         New.
14843         * config/i386/i386.c (ix86_expand_convert_uns_si_sse,
14844         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
14845         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse,
14846         ix86_build_const_vector, ix86_expand_vector_init_one_nonzero): New.
14847         (ix86_build_signbit_mask): Fix decl of v, refactor to call
14848         ix86_build_const_vector.
14849         (x86_emit_floatuns): Rewrite.
14850
14851 2007-02-10  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
14852
14853         * genautomata.c (longest_path_length): Delete unused function.
14854         (struct state): Delete unused longest_path_length.
14855         (UNDEFINED_LONGEST_PATH_LENGTH): Delete unused macro.
14856         (get_free_state): Delete unused.
14857
14858 2007-02-09  Jan Hubicka  <jh@suse.cz>
14859
14860         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 30.
14861         * doc/invoke.texi (inline-unit-growth): Update default value.
14862
14863         * Makefile.in (passes.o, ipa-inline.o): Add dependencies.
14864         * cgraphbuild.c (build_cgraph_edges): Compute frequencies.
14865         (rebuild_cgraph_edges): Likewise.
14866         * cgraph.c (cgraph_set_call_stmt): Add new argument frequency.
14867         (dump_cgraph_node): Dump frequencies.
14868         (cgraph_clone_edge): Add frequency scales.
14869         (cgraph_clone_node): Add freuqnecy.
14870         * cgraph.h (cgraph_edge): Add freuqnecy argument.
14871         (CGRAPH_FREQ_BASE, CGRAPH_FREQ_MAX): New constants.
14872         (cgraph_create_edge, cgraph_clone_edge, cgraph_clone_node): Update.
14873         * tree-pass.h (TODO_rebuild_frequencies): New constant.
14874         * cgraphunit.c (verify_cgraph_node): Verify frequencies.
14875         (cgraph_copy_node_for_versioning): Update call of cgraph_clone_edge.
14876         (save_inline_function_body): Likewise.
14877         * ipa-inline.c: inluce rtl.h
14878         (cgraph_clone_inlined_nods): Update call of cgraph_clone_node.
14879         (cgraph_edge_badness): Use frequencies.
14880         (cgraph_decide_recursive_inlining): Update clonning.
14881         (cgraph_decide_inlining_of_small_function): Dump frequency.
14882         * predict.c (estimate_bb_frequencies): Export.
14883         * predict.h (estimate_bb_frequencies): Declare.
14884         * tree-inline.c (copy_bb): Watch overflows.
14885         (expand_call_inline): Update call of cgraph_create_edge.
14886         (optimize_inline_calls): Use TODO flags to update frequnecies.
14887         * passes.h: Include predict.h
14888         (init_optimization_passes): Move profile ahead.
14889         (execute_function_todo): Handle TODO_rebuild_frequencies.
14890
14891 2007-02-09  Roger Sayle  <roger@eyesopen.com>
14892
14893         * config/alpha/alpha.c (emit_insxl): Force the first operand of
14894         the insbl or inswl pattern into a register.
14895
14896 2007-02-09  Roger Sayle  <roger@eyesopen.com>
14897
14898         * config/ia64/ia64.md (bswapdi2): New define_insn.
14899
14900 2007-02-09  Richard Henderson  <rth@redhat.com>
14901
14902         * config/i386/constraints.md (Ym): New constraint.
14903         * config/i386/i386.md (movsi_1): Change Y2 to Yi constraints.
14904         (movdi_1_rex64): Split sse and xmm general register moves from
14905         memory move alternatives.  Use conditional register constraints.
14906         (movsf_1, movdf_integer): Likewise.
14907         (zero_extendsidi2_32, zero_extendsidi2_rex64): Likewise.
14908         (movdf_integer_rex64): New.
14909         (pushsf_rex64): Fix output constraints.
14910         * config/i386/sse.md (sse2_loadld): Split rm alternative, use Yi.
14911         (sse2_stored): Likewise.
14912         (sse2_storeq_rex64): New.
14913         * config/i386/i386.c (x86_inter_unit_moves): Enable for not
14914         amd and not generic.
14915         (ix86_secondary_memory_needed): Don't bypass TARGET_INTER_UNIT_MOVES
14916         for optimize_size.  Remove SF/DFmode hack.
14917
14918 2007-02-09  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
14919
14920         * config/i386/driver-i386.c: Turn on -mtune=native for AMDFAM10.
14921         (bit_SSE4a): New.
14922
14923 2007-02-09  Nathan Sidwell  <nathan@codesourcery.com>
14924             Richard Sandiford  <richard@codesourcery.com>
14925
14926         * config.gcc (m68010-*-netbsdelf*, m68k*-*-netbsdelf*)
14927         (m68k*-*-openbsd*, m68k-*-linux*): Set default_cf_cpu.
14928         (m68k-*-aout*, m68k-*-coff*, m68k-*-uclinux*, m68k-*-rtems*): Add
14929         m68k/t-mlib to tmake_file.
14930         (m68020-*-elf*, m68k-*-elf*): Likewise.  Add t-m68kbare as well.
14931         (m68k*-*-*): Use --with-arch to pick a default for --with-cpu.
14932         (m680[012]0-*-*, m68k*-*-*): Add support for --with-arch.
14933         Allow it to be cf or m68k.  Set m68k_arch_family.  If that
14934         variable is not empty, add t-$m68k_arch_family to tmake_file.
14935         Add t-mlibs to tmake_file.
14936         * doc/install.texi: Document --with-arch=m68k and --with-arch=cf.
14937         * config/m68k/t-cf: New file.
14938         * config/m68k/t-m68k: Likewise.
14939         * config/m68k/t-mlibs: Likewise.
14940         * config/m68k/t-m68kbare (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
14941         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
14942         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
14943         * config/m68k/t-m68kelf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
14944         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS, LIBGCC, INSTALL_LIBGCC):
14945         Delete.
14946         * config/m68k/t-openbsd (MULTILIB_OPTIONS, LIBGCC): Delete.
14947         (INSTALL_LIBGCC): Delete.
14948         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
14949         * config/m68k/t-rtems (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
14950         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
14951         (M68K_MLIB_CPU): Define.
14952         * config/m68k/t-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
14953         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
14954         (M68K_MLIB_CPU, M68K_MLIB_OPTIONS, M68K_MLIB_DIRNAMES): Define.
14955
14956 2007-02-09  Zdenek Dvorak  <dvorakz@suse.cz>
14957             Richard Guenther  <rguenther@suse.de>
14958
14959         PR middle-end/23361
14960         * fold-const.c (fold_comparison): Handle obfuscated comparisons
14961         against INT_MIN/INT_MAX.
14962         * tree-ssa-loop-ivcanon.c (remove_empty_loop): Print to dump
14963         file if a loop is removed.
14964
14965 2007-02-09  Joseph Myers  <joseph@codesourcery.com>
14966
14967         * calls.c (store_one_arg): Pass correct alignment to
14968         emit_push_insn for non-BLKmode values.
14969         * expr.c (emit_push_insn): If STRICT_ALIGNMENT, copy to an
14970         unaligned stack slot via a suitably aligned slot.
14971
14972 2007-02-08  DJ Delorie  <dj@redhat.com>
14973
14974         * config/m32c/m32c.c (m32c_unpend_compare): Add default to silence
14975         warnings.
14976         (legal_subregs): Use unsigned char, make const.
14977         (m32c_illegal_subreg_p): Use ARRAY_SIZE.  Delete unused variables.
14978
14979 2007-02-08  Paul Brook  <paul@codesourcery.com>
14980
14981         * config/arm/lib1funcs.asm (RETLDM): Pop directly into PC when no
14982         special interworking needed.
14983
14984 2007-02-08  Harsha Jagasia  <harsha.jagasia@amd.com>
14985
14986         * config/i386/xmmintrin.h: Make inclusion of emmintrin.h
14987         conditional to __SSE2__.
14988         (Entries below should have been added to first ChangeLog
14989         entry for amdfam10 dated 2007-02-05)
14990         * config/i386/emmintrin.h: Generate #error if __SSE2__ is not
14991         defined.
14992         * config/i386/pmmintrin.h: Generate #error if __SSE3__ is not
14993         defined.
14994         * config/i386/tmmintrin.h: Generate #error if __SSSE3__ is not
14995         defined.
14996
14997 2007-02-08  DJ Delorie  <dj@redhat.com>
14998
14999         * config/m32c/m32c-protos.h (m32c_illegal_subreg_p): New.
15000         * config/m32c/m32c.c (legal_subregs): New.
15001         (m32c_illegal_subreg_p): New.
15002         * config/m32c/predicates.md (m32c_any_operand): Use it to reject
15003         unsupported subregs of hard regs.
15004
15005 2007-02-08  Jan Hubicka  <jh@suse.cz>
15006
15007         * tree-cfg.c (bsi_replace): Shortcut when replacing the statement with
15008         the same one; always update histograms.
15009
15010 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
15011
15012         * passes.c (init_optimization_passes): Tidy comment.
15013
15014 2007-02-08  Roger Sayle  <roger@eyesopen.com>
15015
15016         * simplify-rtx.c (simplify_unary_operation_1) <POPCOUNT>: We can
15017         strip zero_extend, bswap and rotates from POCOUNT's argument.
15018         <PARITY>: Likewise, we can strip not, bswap, sign_extend,
15019         zero_extend and rotates from PARITY's argument.
15020         <BSWAP>: A byte-swap followed by a byte-swap is an identity.
15021         (simplify_const_unary_operation) <BSWAP>: Evaluate the byte-swap
15022         of an integer constant at compile-time.
15023
15024 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
15025
15026         PR 30562
15027         * tree-flow.h (struct var_ann_d): Remove field 'is_used'.
15028         Update all users.
15029         * tree-ssa-alias.c (compute_is_aliased): Remove.  Update all
15030         users.
15031         (init_alias_info):
15032         * tree-ssa-live.c (remove_unused_locals): Do not remove
15033         TREE_ADDRESSABLE variables.
15034         * tree-ssa-structalias.c (compute_points_to_sets): Tidy.
15035         * tree-ssa-operands.c (add_virtual_operand): Remove argument
15036         FOR_CLOBBER.  Update all users.
15037         If VAR has an associated alias set, add a virtual operand for
15038         it if no alias is found to conflict with the memory reference.
15039
15040 2007-02-07  Jan Hubicka  <jh@suse.cz>
15041             Robert Kidd <rkidd@crhc.uiuc.edu>
15042
15043         * value-prof.c (visit_hist, free_hist): Return 1 instead of 0.
15044
15045 2007-02-07  Ian Lance Taylor  <iant@google.com>
15046
15047         * lower-subreg.c (simple_move): Reject PARTIAL_INT modes.
15048
15049 2007-02-07  Roger Sayle  <roger@eyesopen.com>
15050
15051         * config/rs6000/rs6000.md (ctz<mode>2, ffs<mode>2, popcount<mode>2,
15052         parity<mode>2, smulsi3_highpart, abstf2_internal, allocate_stack,
15053         tablejumpdi, movsi_to_cr_one): Remove constraints from
15054         define_expand's match_operands.
15055
15056 2007-02-07  Roger Sayle  <roger@eyesopen.com>
15057
15058         * global.c (compute_regsets): Move declatation of "i" inside of
15059         #ifdef ELIMINABLE_REGS to avoid unused variable bootstrap failure.
15060
15061 2007-02-07  Jakub Jelinek  <jakub@redhat.com>
15062
15063         PR c++/30703
15064         * gimplify.c (gimplify_scan_omp_clauses): Remove special casing
15065         of INDIRECT_REF <RESULT_DECL>.
15066
15067         * config/i386/i386.c (override_options): Set PTA_SSSE3 for core2.
15068
15069 2007-02-06  J"orn Rennecke  <joern.rennecke@arc.com>
15070             Kaz Kojima  <kkojima@gcc.gnu.org>
15071
15072         PR target/29746
15073         * config/sh/sh.c (expand_cbranchdi4): Use scratch register
15074         properly.
15075         (sh_initialize_trampoline): Add parentheses to avoid a warning.
15076
15077 2007-02-06  Zdenek Dvorak <dvorakz@suse.cz>
15078
15079         * doc/loop.texi: Document possibility not to perform disambiguation
15080         of loops with multiple latches.
15081         * cfgloopmanip.c (alp_enum_p): Removed.
15082         (add_loop): Handle subloops.  Use get_loop_body_with_size.
15083         (create_preheader): Do not allow ENTRY_BLOCK_PTR to be preheader.
15084         * cfghooks.c (redirect_edge_and_branch_force): Set dominator for
15085         the new forwarder block.
15086         (make_forwarder_block): Only call new_bb_cbk if it is not NULL.
15087         Handle the case latch is NULL.
15088         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Avoid cfg
15089         modifications when marking loop exits.
15090         * ifcvt.c (if_convert): Ditto.  Mark loop exits even if cfg cannot
15091         be modified.
15092         * loop-init.c (loop_optimizer_init): Do not modify cfg.  Call
15093         disambiguate_loops_with_multiple_latches.
15094         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Calculate dominators
15095         before fix_loop_structure.
15096         * cfgloop.c: Include pointer-set.h and output.h.
15097         (canonicalize_loop_headers, HEADER_BLOCK, LATCH_EDGE,
15098         update_latch_info, mfb_keep_just, mfb_keep_nonlatch): Removed.
15099         (get_loop_latch_edges, find_subloop_latch_edge_by_profile,
15100         find_subloop_latch_edge_by_ivs, find_subloop_latch_edge,
15101         mfb_redirect_edges_in_set, form_subloop, merge_latch_edges,
15102         disambiguate_multiple_latches, get_loop_body_with_size,
15103         disambiguate_loops_with_multiple_latches): New functions.
15104         (flow_loop_dump): Dump multiple latch edges.
15105         (flow_loop_nodes_find): Handle loops with multiple latches.
15106         (flow_loops_find): Ditto. Do not call canonicalize_loop_headers.
15107         (glb_enum_p): Modified.
15108         (get_loop_body): Use get_loop_body_with_size.
15109         * cfgloop.h (LOOPS_HAVE_RECORDED_EXITS): New flag.
15110         (AVOID_CFG_MODIFICATIONS): New constant.
15111         (disambiguate_loops_with_multiple_latches, add_loop,
15112         get_loop_body_with_size): Declare.
15113         * Makefile.in (cfgloop.o): Add pointer-set.h and output.h.
15114
15115 2007-02-06  Seongbae Park <seongbae.park@gmail.com>
15116
15117         PR inline-asm/28686
15118         * global.c (compute_regsets): New function.
15119         (global_alloc): Refactored ELIMINABLE_REGSET
15120         and NO_GLOBAL_ALLOC_REGS computation out.
15121         (rest_of_handle_global_alloc): Call compute_regsets()
15122         for non-optimizing case.
15123
15124 2007-02-06  Richard Henderson  <rth@redhat.com>
15125
15126         * config/i386/constraints.md (Y2): Rename from Y.
15127         (Yi): New constraint.
15128         * config/i386/i386.md (movsi_1, movdi_2, pushdf_nointeger,
15129         pushdf_integer, movdf_nointeger, movdf_integer, zero_extendsidi2_32,
15130         zero_extendsidi2_rex64, truncxfdf2_mixed): Change Y constraints to Y2.
15131         (extendsfdf2_mixed, extendsfdf2_sse, truncdfsf_fast_mixed,
15132         truncdfsf_fast_sse, truncdfsf_mixed, fix_truncdfdi_sse,
15133         fix_truncdfsi_sse, floatsidf2_mixed, floatsidf2_sse,
15134         floatdidf2_mixed, floatdidf2_sse, absnegdf2_mixed,
15135         absnegdf2_sse, sse_setccdf, fop_df_comm_mixed, fop_df_comm_sse,
15136         fop_df_1_mixed, fop_df_1_sse): Change Y constraints to x.
15137         * config/i386/mmx.md (mov<MMXMODEI>_internal_rex64,
15138         mov<MMXMODEI>_internal, movv2sf_internal_rex64, movv2sf_internal,
15139         vec_extractv2si_1): Change Y constraints to Y2.
15140         * config/i386/sse.md (vec_setv4sf_0, vec_concatv2df, vec_dupv4si,
15141         vec_dupv2di, sse2_concatv2si, vec_concatv4si_1, vec_concatv2di):
15142         Change Y constraints to Y2.
15143         (sse2_loadld): Change Y constraints to x.
15144
15145 2007-02-06  Roger Sayle  <roger@eyesopen.com>
15146
15147         * config/rs6000/rs6000.md (popcount<mode>2): Rewrite.
15148         (parity<mode>2): New define_expand using rs6000_emit_parity.
15149         * config/rs6000/rs6000.c (rs6000_emit_popcount,
15150         rs6000_emit_parity): New functions.
15151         * config/rs6000/rs6000-protos.h (rs6000_emit_popcount,
15152         rs6000_emit_parity): Prototype here.
15153
15154 2007-02-06  Ian Lance Taylor  <iant@google.com>
15155
15156         * lower-subreg.c (simple_move_operand): Reject CONST.
15157         (resolve_clobber): Call validate_change rather than directly
15158         assigning to XEXP (pat, 0).
15159
15160 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
15161
15162         * Makefile.in (tree-ssa-loop-ivopts.o): Add pointer-set.h dependency.
15163         (tree-ssa-reassoc.o): Add pointer-set.h dependency.
15164         (tree-cfg.o): Remove hashtab.h dependency.
15165
15166         * tree-ssa-loop-ivopts.c: Include pointer-set.h.
15167         (struct ivopts_data): Change niters to pointer_map_t.
15168         (struct nfe_cache_elt, nfe_hash, nfe_eq): Delete.
15169         (niter_for_exit): Create pointer_map on demand.  Change for
15170         pointer_map API.
15171         (tree_ssa_iv_optimize_init): Initialize data->niters to NULL.
15172         (free_loop_data): Destroy data->niters if created and reset field.
15173         (tree_ssa_iv_optimize_finalize): Don't delete data->niters here.
15174         (tree_ssa_iv_optimize_loop): Check for presence of stale data.
15175
15176         * tree-ssa-reassoc.c: Include pointer-set.h.
15177         (bb_rank): Change to long *.
15178         (operand_rank): Change to pointer_map_t.
15179         (find_operand_rank): Return long, -1 if not found.  Declare as inline.
15180         (insert_operand_rank): Accept long.
15181         (operand_entry_hash, operand_entry_eq): Remove.
15182         (get_rank): Return long.  Adjust for changes above.
15183         (init_reassoc): Change rank type to long.  Adjust creation of bb_rank
15184         and operand_rank.
15185         (fini_reassoc): Delete operand_rank with pointer_map_destroy.
15186
15187         * tree-ssa-structalias.c (vi_for_tree): Change to pointer_map.
15188         (struct tree_vi, tree_vi_t, tree_vi_hash, tree_vi_eq): Delete.
15189         (insert_vi_for_tree): Rewrite for pointer_map API.  Assert argument
15190         is not NULL.
15191         (lookup_vi_for_tree): Rewrite for pointer_map API.  Return varinfo_t
15192         directly since it cannot be NULL.
15193         (get_vi_for_tree): Rewrite for pointer_map API.
15194         (find_what_p_points_to): Adjust for change to lookup_vi_for_tree.
15195         (init_alias_vars): Create vi_for_tree as pointer_map.
15196         (delete_points_to_sets): Delete vi_for_tree using pointer_map_destroy.
15197
15198         * tree-cfg.c: Don't include hashtab.h.
15199         (edge_to_cases): Declare as pointer_map.
15200         (struct edge_to_cases_elt, edge_to_cases_hash, edge_to_cases_eq):
15201         Delete.
15202         (edge_to_cases_cleanup): Rewrite as pointer_map_traverse callback.
15203         (start_recording_case_labels): Create edge_to_cases as pointer_map.
15204         (end_recoding_case_labels): Cleanup edge_to_cases manually before
15205         destroying it.
15206         (record_switch_edge): Delete.
15207         (get_cases_for_edge): Adjust for pointer_map API, inline
15208         record_switch_edge (rewritten for new API), remove goto.
15209
15210 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
15211
15212         * Makefile.in (tree-nested.o): Add pointer-set.h dependency.
15213         * tree-nested.c: Include pointer-set.h.
15214         (var_map_elt, var_map_eq, var_map_hash): Delete.
15215         (struct nesting_info): Remove GTY marker.  Change the two htab_t's
15216         to pointer_map_t's.
15217         (nesting_info_bitmap_obstack): New.
15218         (lookup_field_for_decl): Adjust for pointer_map API.
15219         (lookup_tramp_for_decl): Adjust for pointer_map API.
15220         (get_nonlocal_debug_decl): Adjust for pointer_map API.
15221         (get_local_debug_decl): Adjust for pointer_map API.
15222         (convert_nl_goto_reference): Adjust for pointer_map API.
15223         (convert_nl_goto_receiver): Adjust for pointer_map API.
15224         (create_nesting_tree): Create outside GGC space.  Create bitmap on
15225         the new obstack.  Create field_map and var_map as pointer_maps.
15226         (free_nesting_tree): Adjust for changes to create_nesting_tree.
15227         (root): Delete.
15228         (lower_nested_functions): Move root here, no need to NULL it.
15229         Initialize and release the obstack.
15230
15231 2007-02-06  Paolo Bonzini  <bonzini@gnu.org>
15232
15233         * tree.c (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p):
15234         Remove prototypes and make them non-static.
15235         (struct tree_int_map): Remove.
15236         * tree.h (struct tree_int_map): Move here, turning TO into an
15237         unsigned int.
15238         (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p): Declare.
15239
15240         * tree.h (TREE_COMPLEXITY): Remove.
15241         (struct tree_exp): Remove complexity field.
15242         * tree.c (build1_stat): Don't set it.
15243
15244 2007-02-06  Dorit Nuzman  <dorit@il.ibm.com>
15245             Victor Kaplansky  <victork@il.ibm.com>
15246
15247         * tree-vectorizer.c (vect_is_simple_use): Support induction.
15248         (vect_is_simple_reduction): Support reduction with induction as
15249         one of the operands.
15250         (vect_is_simple_iv_evolution): Fix formatting.
15251         * tree-vect-analyze.c (vect_mark_stmts_to_be_vectorized): Fix
15252         formatting.  Don't mark induction phis for vectorization.
15253         (vect_analyze_scalar_cycles): Analyze all inductions, then reductions.
15254         * tree-vect-transform.c (get_initial_def_for_induction): New function.
15255         (vect_get_vec_def_for_operand): Support induction.
15256         (vect_get_vec_def_for_stmt_copy): Fix formatting and add check for
15257         induction case.
15258         (vectorizable_reduction): Support reduction with induction as one of
15259         the operands.
15260         (vectorizable_type_demotion): Use def-type of stmt argument rather
15261         than dummy def-type.
15262
15263         * tree-ssa-loop.c (gate_scev_const_prop): Return the value of
15264         flag_tree_scev_cprop.
15265         * common.opt (tree-scev-cprop): New flag.
15266
15267         * tree-vect-transform.c (vect_create_destination_var): Use 'kind' in
15268         call to vect_get_new_vect_var.
15269
15270 2007-02-06  Ira Rosen  <irar@il.ibm.com>
15271
15272         * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Check that
15273         vectype is not NULL.
15274         (vect_pattern_recog_1): Likewise.
15275
15276 2007-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15277
15278         * fold-const.c (negate_expr_p): Handle CONJ_EXPR.
15279         (fold_negate_expr): Likewise.
15280
15281 2007-02-05  Alexandre Oliva  <aoliva@redhat.com>
15282
15283         PR debug/30189
15284         * dwarf2out.c (modified_type_die): Follow DECL_ORIGINAL_TYPE
15285         even if cv-qualification is the same.
15286
15287 2007-02-05  Geoffrey Keating  <geoffk@apple.com>
15288
15289         * config/rs6000/darwin-tramp.asm (__trampoline_setup): Call
15290         __enable_execute_stack on completion.
15291
15292 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
15293
15294         * config/i386/athlon.md (athlon_fldxf_k8, athlon_fld_k8,
15295         athlon_fstxf_k8, athlon_fst_k8, athlon_fist, athlon_fmov,
15296         athlon_fadd_load, athlon_fadd_load_k8, athlon_fadd, athlon_fmul,
15297         athlon_fmul_load, athlon_fmul_load_k8, athlon_fsgn,
15298         athlon_fdiv_load, athlon_fdiv_load_k8, athlon_fdiv_k8,
15299         athlon_fpspc_load, athlon_fpspc, athlon_fcmov_load,
15300         athlon_fcmov_load_k8, athlon_fcmov_k8, athlon_fcomi_load_k8,
15301         athlon_fcomi, athlon_fcom_load_k8, athlon_fcom): Added amdfam10.
15302
15303 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
15304
15305         * config/i386/i386.md (x86_sahf_1, cmpfp_i_mixed, cmpfp_i_sse,
15306         cmpfp_i_i387, cmpfp_iu_mixed, cmpfp_iu_sse, cmpfp_iu_387,
15307         swapsi, swaphi_1, swapqi_1, swapdi_rex64, fix_truncsfdi_sse,
15308         fix_truncdfdi_sse, fix_truncsfsi_sse, fix_truncdfsi_sse,
15309         x86_fldcw_1, floatsisf2_mixed, floatsisf2_sse, floatdisf2_mixed,
15310         floatdisf2_sse, floatsidf2_mixed, floatsidf2_sse,
15311         floatdidf2_mixed, floatdidf2_sse, muldi3_1_rex64, mulsi3_1,
15312         mulsi3_1_zext, mulhi3_1, mulqi3_1, umulqihi3_1, mulqihi3_insn,
15313         umulditi3_insn, umulsidi3_insn, mulditi3_insn, mulsidi3_insn,
15314         umuldi3_highpart_rex64, umulsi3_highpart_insn,
15315         umulsi3_highpart_zext, smuldi3_highpart_rex64,
15316         smulsi3_highpart_insn, smulsi3_highpart_zext, x86_64_shld,
15317         x86_shld_1, x86_64_shrd, sqrtsf2_mixed, sqrtsf2_sse,
15318         sqrtsf2_i387, sqrtdf2_mixed, sqrtdf2_sse, sqrtdf2_i387,
15319         sqrtextendsfdf2_i387, sqrtxf2, sqrtextendsfxf2_i387,
15320         sqrtextenddfxf2_i387): Added amdfam10_decode.
15321
15322         * config/i386/athlon.md (athlon_idirect_amdfam10,
15323         athlon_ivector_amdfam10, athlon_idirect_load_amdfam10,
15324         athlon_ivector_load_amdfam10, athlon_idirect_both_amdfam10,
15325         athlon_ivector_both_amdfam10, athlon_idirect_store_amdfam10,
15326         athlon_ivector_store_amdfam10): New define_insn_reservation.
15327         (athlon_idirect_loadmov, athlon_idirect_movstore): Added
15328         amdfam10.
15329
15330 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
15331
15332         * config/i386/athlon.md (athlon_call_amdfam10,
15333         athlon_pop_amdfam10, athlon_lea_amdfam10): New
15334         define_insn_reservation.
15335         (athlon_branch, athlon_push, athlon_leave_k8, athlon_imul_k8,
15336         athlon_imul_k8_DI, athlon_imul_mem_k8, athlon_imul_mem_k8_DI,
15337         athlon_idiv, athlon_idiv_mem, athlon_str): Added amdfam10.
15338
15339 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
15340
15341         * config/i386/athlon.md (athlon_sseld_amdfam10,
15342         athlon_mmxld_amdfam10, athlon_ssest_amdfam10,
15343         athlon_mmxssest_short_amdfam10): New define_insn_reservation.
15344
15345 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
15346
15347         * config/i386/athlon.md (athlon_sseins_amdfam10): New
15348         define_insn_reservation.
15349         * config/i386/i386.md (sseins): Added sseins to define_attr type
15350         and define_attr unit.
15351         * config/i386/sse.md: Set type attribute to sseins for insertq
15352         and insertqi.
15353
15354 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
15355
15356         * config/i386/athlon.md (sselog_load_amdfam10, sselog_amdfam10,
15357         ssecmpvector_load_amdfam10, ssecmpvector_amdfam10,
15358         ssecomi_load_amdfam10, ssecomi_amdfam10,
15359         sseaddvector_load_amdfam10, sseaddvector_amdfam10): New
15360         define_insn_reservation.
15361         (ssecmp_load_k8, ssecmp, sseadd_load_k8, seadd): Added amdfam10.
15362
15363 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
15364
15365         * config/i386/athlon.md (cvtss2sd_load_amdfam10,
15366         cvtss2sd_amdfam10, cvtps2pd_load_amdfam10, cvtps2pd_amdfam10,
15367         cvtsi2sd_load_amdfam10, cvtsi2ss_load_amdfam10,
15368         cvtsi2sd_amdfam10, cvtsi2ss_amdfam10, cvtsd2ss_load_amdfam10,
15369         cvtsd2ss_amdfam10, cvtpd2ps_load_amdfam10, cvtpd2ps_amdfam10,
15370         cvtsX2si_load_amdfam10, cvtsX2si_amdfam10): New
15371         define_insn_reservation.
15372
15373         * config/i386/sse.md (cvtsi2ss, cvtsi2ssq, cvtss2si,
15374         cvtss2siq, cvttss2si, cvttss2siq, cvtsi2sd, cvtsi2sdq,
15375         cvtsd2si, cvtsd2siq, cvttsd2si, cvttsd2siq,
15376         cvtpd2dq, cvttpd2dq, cvtsd2ss, cvtss2sd,
15377         cvtpd2ps, cvtps2pd): Added amdfam10_decode attribute.
15378
15379 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
15380
15381         * config/i386/athlon.md (athlon_ssedivvector_amdfam10,
15382         athlon_ssedivvector_load_amdfam10, athlon_ssemulvector_amdfam10,
15383         athlon_ssemulvector_load_amdfam10): New define_insn_reservation.
15384         (athlon_ssediv, athlon_ssediv_load_k8, athlon_ssemul,
15385         athlon_ssemul_load_k8): Added amdfam10.
15386
15387 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
15388
15389         * config/i386/i386.h (TARGET_SSE_UNALIGNED_MOVE_OPTIMAL): New macro.
15390         (x86_sse_unaligned_move_optimal): New variable.
15391
15392         * config/i386/i386.c (x86_sse_unaligned_move_optimal): Enable for
15393         m_AMDFAM10.
15394         (ix86_expand_vector_move_misalign): Add code to generate movupd/movups
15395         for unaligned vector SSE double/single precision loads for AMDFAM10.
15396
15397 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
15398
15399         * config/i386/i386.h (TARGET_AMDFAM10): New macro.
15400         (TARGET_CPU_CPP_BUILTINS): Add code for amdfam10.
15401         Define TARGET_CPU_DEFAULT_amdfam10.
15402         (TARGET_CPU_DEFAULT_NAMES): Add amdfam10.
15403         (processor_type): Add PROCESSOR_AMDFAM10.
15404
15405         * config/i386/i386.md: Add amdfam10 as a new cpu attribute to match
15406         processor_type in config/i386/i386.h.
15407         Enable imul peepholes for TARGET_AMDFAM10.
15408
15409         * config.gcc: Add support for --with-cpu option for amdfam10.
15410
15411         * config/i386/i386.c (amdfam10_cost): New variable.
15412         (m_AMDFAM10): New macro.
15413         (m_ATHLON_K8_AMDFAM10): New macro.
15414         (x86_use_leave, x86_push_memory, x86_movx, x86_unroll_strlen,
15415         x86_cmove, x86_3dnow_a, x86_deep_branch, x86_use_simode_fiop,
15416         x86_promote_QImode, x86_integer_DFmode_moves,
15417         x86_partial_reg_dependency, x86_memory_mismatch_stall,
15418         x86_accumulate_outgoing_args, x86_arch_always_fancy_math_387,
15419         x86_sse_partial_reg_dependency, x86_sse_typeless_stores,
15420         x86_use_ffreep, x86_use_incdec, x86_four_jump_limit,
15421         x86_schedule, x86_use_bt, x86_cmpxchg16b, x86_pad_returns):
15422         Enable/disable for amdfam10.
15423         (override_options): Add amdfam10_cost to processor_target_table.
15424         Set up PROCESSOR_AMDFAM10 for amdfam10 entry in
15425         processor_alias_table.
15426         (ix86_issue_rate): Add PROCESSOR_AMDFAM10.
15427         (ix86_adjust_cost): Add code for amdfam10.
15428
15429 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
15430
15431         * config/i386/i386.opt: Add new Advanced Bit Manipulation (-mabm)
15432         instruction set feature flag. Add new (-mpopcnt) flag for popcnt
15433         instruction. Add new SSE4A (-msse4a) instruction set feature flag.
15434         * config/i386/i386.h: Add builtin definition for SSE4A.
15435         * config/i386/i386.md: Add support for ABM instructions
15436         (popcnt and lzcnt).
15437         * config/i386/sse.md: Add support for SSE4A instructions
15438         (movntss, movntsd, extrq, insertq).
15439         * config/i386/i386.c: Add support for ABM and SSE4A builtins.
15440         Add -march=amdfam10 flag.
15441         * config/i386/ammintrin.h: Add support for SSE4A intrinsics.
15442         * doc/invoke.texi: Add documentation on flags for sse4a, abm, popcnt
15443         and amdfam10.
15444         * doc/extend.texi: Add documentation for SSE4A builtins.
15445
15446 2007-02-05  Bob Wilson  <bob.wilson@acm.org>
15447
15448         * config/xtensa/xtensa.c (constantpool_mem_p): Skip over SUBREGs.
15449
15450 2007-02-05  Richard Guenther  <rguenther@suse.de>
15451
15452         * tree-vectorizer.h (vectorizable_function): Add argument type
15453         argument, change return type.
15454         * tree-vect-patterns.c (vect_recog_pow_pattern): Adjust caller.
15455         * tree-vect-transform.c (vectorizable_function): Handle extra
15456         argument, return vectorized function decl.
15457         (build_vectorized_function_call): Remove.
15458         (vectorizable_call): Handle calls with result and argument types
15459         differing.  Handle loop vectorization factor correctly.
15460         * targhooks.c (default_builtin_vectorized_function): Adjust for
15461         extra argument.
15462         * targhooks.h (default_builtin_vectorized_function): Likewise.
15463         * target.h (builtin_vectorized_function): Add argument type
15464         argument.
15465         * config/i386/i386.c (ix86_builtin_vectorized_function): Handle
15466         extra argument, allow vectorizing of lrintf.
15467         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Adjust
15468         documentation of target hook.
15469
15470 2007-02-05  Hans-Peter Nilsson  <hp@axis.com>
15471
15472         PR target/30665
15473         * config/cris/cris.md ("*andsi_movu", "*andsi_clear", "*andhi_movu")
15474         ("*andhi_clear", andu (casesi+45)): For size-changed operand where
15475         memory is allowed, require !side_effects_p, not just !MEM_VOLATILE_P.
15476
15477 2007-02-05  Roger Sayle  <roger@eyesopen.com>
15478
15479         * fold-const.c (fold_unary) <REAL_PART>: Test for availability of
15480         BUILT_IN_COS before simplifying REAL_PART(CEXPI)) to COS.
15481         <IMAG_PART>: Likewise, check for availability of BUILT_IN_SIN.
15482         * builtins.c (fold_builtin_sincos): Check for TARGET_C99_FUNCTIONS
15483         before canonicalizing sincos to cexpi.
15484         (fold_builtin_cexp): Likewise, for canonicalizing cexp to cexpi.
15485
15486 2007-02-05  Roger Sayle  <roger@eyesopen.com>
15487
15488         * config/alpha/alpha.c (alpha_add_builtins): New Helper function.
15489         Set TREE_READONLY and TREE_NOTHROW directly, not via attributes.
15490         (alpha_init_builtins): Use alpha_add_builtins to process tables.
15491
15492 2007-02-05  Roger Sayle  <roger@eyesopen.com>
15493
15494         * mips-tfile.c (initialize_init_file): Correct endianness test.
15495
15496 2007-02-05  Kazu Hirata  <kazu@codesourcery.com>
15497
15498         * config/m68k/m68k.md (pushdi-1, pushdi, movsi+1): Don't use
15499         the 'y' constraint.
15500
15501 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
15502
15503         * dwarf2out.c (dwarf2out_frame_debug_expr): Record the register
15504         saves in a PARALLEL before the register assignments.
15505
15506 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
15507
15508         * doc/tm.texi (DWARF_ALT_FRAME_RETURN_COLUMN): Do not require
15509         DWARF_FRAME_RETURN_COLUMN to be a general register.
15510         * dwarf2out.c (init_return_column_size): New function, split from...
15511         (expand_builtin_init_dwarf_reg_sizes): ...here.  Allow both
15512         DWARF_FRAME_RETURN_COLUMN and DWARF_ALT_FRAME_RETURN_COLUMN
15513         to be nongeneral registers.
15514         * config/m68k/m68k.h (DWARF_FRAME_REGNUM): Only map FP and
15515         integer registers.
15516         (DWARF_FRAME_REGISTERS, DWARF_FRAME_RETURN_COLUMN): Define.
15517         (DWARF_ALT_FRAME_RETURN_COLUMN): Define.
15518
15519 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
15520
15521         * cfgcleanup.c (try_optimize_cfg): Avoid removing ENTRY_BLOCK_PTR.
15522
15523 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
15524
15525         * cfgloopmanip.c (loop_delete_branch_edge): Removed.
15526         (remove_path): Use can_remove_branch_p and remove_branch instead
15527         of loop_delete_branch_edge.
15528         * tree-ssa-loop-manip.c (scale_dominated_blocks_in_loop): New function.
15529         (tree_transform_and_unroll_loop): Remove dead branches immediately.
15530         Update profile using scale_dominated_blocks_in_loop.
15531         * cfghooks.c (can_remove_branch_p, remove_branch): New functions.
15532         * cfghooks.h (struct cfg_hooks): Add can_remove_branch_p.
15533         (can_remove_branch_p, remove_branch): Declare.
15534         * tree-cfg.c (tree_can_remove_branch_p): New function.
15535         (tree_cfg_hooks): Add tree_can_remove_branch_p.
15536         * cfgrtl.c (rtl_can_remove_branch_p): New function.
15537         (rtl_cfg_hooks, cfg_layout_rtl_cfg_hook): Add rtl_can_remove_branch_p.
15538
15539 2007-02-05  Jan Hubicka  <jh@suse.cz>
15540
15541         PR middle-end/30696
15542         * ipa-inline.c (cgraph_clone_inlined_nodes): When there are unanalyzed
15543         nodes in cgraph, don't remove offline copy of the function.
15544
15545 2007-02-04  Jan Hubicka  <jh@suse.cz>
15546
15547         * tree-sra.c (sra_walk_expr): Add linebreaks. BITFIELD_REFs into
15548         vectors might cause maybe_lookup_element_for_expr to be called
15549         on non-sra-candidate.
15550
15551 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
15552
15553         * config/bfin/bfin-modes.def, config/bfin/bfin.c,
15554         config/bfin/bfin.md, config/bfin/predicates.md: Follow
15555         spelling conventions.
15556
15557 2007-02-04  Richard Guenther  <rguenther@suse.de>
15558
15559         PR middle-end/30636
15560         * fold-const.c (try_move_mult_to_index): Make sure to not
15561         overflow one dimension of a multi-dimensional array access.
15562
15563 2007-02-04  Jan Hubicka  <jh@suse.cz>
15564
15565         * passes.c (init_optimization_passes): Reindent.
15566
15567 2007-02-04  Jan Hubicka  <jh@suse.cz>
15568             Eric Botcazou  <ebotcazou@adacore.com>
15569
15570         * tree-optimize.c (has_abnormal_outgoing_edge_p): Move to...
15571         (execute_fixup_cfg): Break out the abnormal goto code.
15572         * tree-inline.c (has_abnormal_outgoing_edge_p): ...here.
15573         (make_nonlocal_label_edges): Move here from execute_fixup_cfg.
15574         (optimize_inline_calls): Call make_nonlocal_label_edges.
15575
15576 2007-02-04  Jan Hubicka  <jh@suse.cz>
15577
15578         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Return
15579         true when something was changed.
15580         (rename_ssa_copies): When something was changed, do
15581         TODO_remove_unused_locals.
15582         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
15583         add TODO_remove_unused_locals when instruction was removed.
15584
15585 2007-02-04  Jan Hubicka  <jh@suse.cz>
15586
15587         * ipa-inline.c (try_inline): Improve debug output; work on already
15588         inline edges too.
15589         (cgraph_decide_inlining_incrementally): Indent; improve debug output;
15590         call try_inline for already inlined edges too when flattening;
15591         inline also functions that make callee growth but overall unit size
15592         reduce.
15593
15594 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
15595
15596         * config/m32c/bitops.md, config/m32c/jump.md,
15597         config/m32c/m32c.c, config/m32c/m32c.h, config/m32r/m32r.c,
15598         config/m32r/m32r.h, config/m32r/m32r.md,
15599         config/m32r/predicates.md, config/m68hc11/larith.asm,
15600         config/m68hc11/m68hc11.c, config/m68hc11/m68hc11.h,
15601         config/m68k/m68k.h, config/mcore/mcore.md, config/mips/4k.md,
15602         config/mips/mips-protos.h, config/mips/mips.c,
15603         config/mips/mips.h, config/mips/mips.md, config/mips/mips16.S,
15604         config/mn10300/mn10300.h, config/mn10300/predicates.md,
15605         config/mt/mt.c, config/mt/mt.h, config/mt/mt.md: Follow
15606         spelling conventions.
15607
15608         * config/v850/v850.c, config/v850/v850.h, config/v850/v850.md:
15609         Follow spelling conventions.
15610
15611 2007-02-03  Douglas Gregor  <doug.gregor@gmail.com>
15612
15613         * c-opts.c (c_common_post_options): If C++0x mode is enabled, don't
15614         warn about C++0x compatibility.
15615
15616 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
15617
15618         * config/h8300/h8300.c, config/h8300/h8300.h,
15619         config/h8300/h8300.md: Follow spelling conventions.
15620
15621 2007-02-03  Uros Bizjak  <ubizjak@gmail.com>
15622
15623         PR middle-end/30667
15624         * combine.c (try_combine): Do not substitute source operand
15625         with constants wider than 2 * HOST_BITS_PER_WIDE_INT.
15626
15627 2007-02-03  Jan Hubicka  <jh@suse.cz>
15628
15629         PR gcov-profile/30650
15630         * value-prof.c (stringop_block_profile): Fix handling of size counter;
15631         do not divide by zero for never executed counters.
15632         (tree_find_values_to_profile): Fix counters.
15633         * gcov-ui.h (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): Fix comments.
15634
15635 2007-02-03  Ian Lance Taylor  <iant@google.com>
15636
15637         * lower-subreg.c (simple_move_operand): New static function,
15638         broken out of simple_move.  Reject LABEL_REF, SYMBOL_REF, and HIGH
15639         operands.
15640         (simple_move): Call simple_move_operand.
15641         (find_decomposable_subregs): Add special handling of MEMs.
15642         (can_decompose_p): Rename from cannot_decompose_p.  Reverse
15643         meaning of return value.  If we see a hard register, test whether
15644         it can store a word_mode value.  Change all callers.
15645
15646 2007-02-03  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
15647
15648         * pa.md (addvdi3, addvsi3, subvdi3, subvsi3, negvdi2, negvsi2): New
15649         ftrapv insns and expanders.
15650         (subdi3): Change define_expand operand 1 to arith11_operand, and
15651         operand 2 to reg_or_0_operand.  Change constraints of 64-bit insn
15652         pattern to handle reg_or_0 operands.  Revise 32-bit insn pattern to
15653         handle 11-bit constants and reg_or_0 operands in operands 1 and 2,
15654         respectively.
15655
15656         PR middle-end/30174
15657         * varasm.c (notice_global_symbol): Treat global objects as weak when
15658         flag_shlib is true.
15659
15660 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15661
15662         * emit-rtl.c (dconstpi): Delete.
15663         (dconstsqrt2): New.
15664         (init_emit_once): Delete dconstpi and init dconstsqrt2.
15665         * real.h (dconstpi): Delete.
15666         (dconstsqrt2): New.
15667         * builtins.c (fold_builtin_cabs): Use dconstsqrt2.
15668         (fold_builtin_hypot): Likewise.
15669
15670 2007-02-03  Tom Tromey  <tromey@redhat.com>
15671
15672         PR driver/30246
15673         * gcc.c (cpp_unique_options): Any of -ggdb3, -gstabs3,
15674         -gcoff3, -gxcoff3, -gvms3 implies -dD.
15675
15676 2007-02-03  Kazu Hirata  <kazu@codesourcery.com>
15677
15678         * c-decl.c, config/avr/avr.c, config/avr/avr.h,
15679         config/m68k/m68k.c, config/m68k/netbsd-elf.h,
15680         config/mn10300/mn10300.c, config/pdp11/pdp11.h,
15681         config/rs6000/cell.md, config/rs6000/darwin.h,
15682         config/sh/sh.md, config/sh/sh4-300.md, config/spu/spu.c,
15683         config/spu/spu.md, cselib.c, expr.c, haifa-sched.c, hwint.h,
15684         jump.c, reload.c, sched-deps.c, sched-int.h, tree-inline.c,
15685         tree-profile.c, tree-ssa-live.h, tree-vrp.c: Fix comment
15686         typos.  Follow spelling conventions.
15687         * doc/invoke.texi: Follow spelling conventions.
15688
15689 2007-02-03  Roger Sayle  <roger@eyesopen.com>
15690
15691         * simplify-rtx.c (simplify_relational_operation_1): Implement some
15692         canonicalization transformations that attempt to simplify integer
15693         constant comparisons to become comparisons against zero.
15694
15695 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15696
15697         * builtins.c (fold_builtin_cabs): Fold cabs(x+xi) into
15698         fabs(x)*sqrt(2).
15699         * fold-const.c (fold_binary): Fix comment typos.  Fold complex
15700         (x,0)-(0,y) into (x,-y).  Likewise (0,y)-(x,0) into (-x,y).
15701
15702 2007-02-02  Mike Stump  <mrs@apple.com>
15703
15704         * config/darwin9.h (DARWIN_LINKER_GENERATES_ISLANDS): Add.
15705         * config/rs6000/rs6000.c (DARWIN_GENERATE_ISLANDS): Add.
15706         (output_call): Use DARWIN_GENERATE_ISLANDS to decide when to
15707         generate a branch island.
15708
15709 2007-02-02  Bob Wilson  <bob.wilson@acm.org>
15710
15711         * config/xtensa/xtensa.c (smalloffset_mem_p): Use BASE_REG_P.
15712         (xtensa_legitimate_address_p): New.
15713         (xtensa_legitimize_address): New.
15714         (xtensa_output_addr_const_extra): New.
15715         * config/xtensa/xtensa.h (REG_OK_STRICT_FLAG): Define.
15716         (BASE_REG_P): New.
15717         (REG_OK_FOR_BASE_P): Use BASE_REG_P.
15718         (GO_IF_LEGITIMATE_ADDRESS): Move code to xtensa_legitimate_address_p.
15719         (LEGITIMIZE_ADDRESS): Move code to xtensa_legitimize_address.
15720         (OUTPUT_ADDR_CONST_EXTRA): Move code to xtensa_output_addr_const_extra.
15721         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): New.
15722         (xtensa_legitimize_address): New.
15723         (xtensa_output_addr_const_extra): New.
15724
15725 2007-02-02  Steve Ellcey  <sje@cup.hp.com>
15726
15727         * config/ia64/ia64.c (ia64_print_operand): Fix compare strings.
15728
15729 2007-02-02  Ian Lance Taylor  <iant@google.com>
15730
15731         * expmed.c (expand_divmod): Add comment.
15732
15733 2007-02-02  Kazu Hirata  <kazu@codesourcery.com>
15734
15735         * emit-rtl.c (renumber_insns): Remove.
15736         * flags.h: Remove the extern for flag_renumber_insns.
15737         * rtl.h: Remove the prototype for renumber_insns.
15738         * toplev.c (flag_renumber_insns): Remove.
15739
15740 2007-02-02  Hui-May Chang  <hm.chang@apple.com>
15741
15742         Revert for x86 darwin:
15743         2005-06-19  Uros Bizjak  <uros@kss-loka.si>
15744
15745         * config/i386/i386.c (ix86_function_arg_regno_p): Put back the
15746         code before the following patch under TARGET_MACHO.
15747         (ix86_function_value_regno_p): Likewise.
15748
15749 2007-02-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15750
15751         * fold-const.c (negate_expr_p, fold_negate_expr): Handle
15752         COMPLEX_EXPR.
15753
15754 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
15755
15756         PR target/29682
15757         * config/ia64/ia64.c (ia64_speculate_insn): Restrict to memory
15758         loads to general or fp registers.  Add comments.
15759         * config/ia64/ia64.md (reg_pred_prefix): Add comment.
15760
15761 2007-02-02  Paolo Bonzini  <bonzini@gnu.org>
15762
15763         * pointer-set.c (insert_aux): Only return insertion slot.
15764         (pointer_set_insert): Adjust.
15765         (pointer_set_traverse, struct pointer_map_t, pointer_map_create,
15766         pointer_map_destroy, pointer_map_insert, pointer_map_contains,
15767         pointer_map_traverse): New.
15768         * pointer-set.h (pointer_set_traverse, struct pointer_map_t,
15769         pointer_map_create,  pointer_map_destroy, pointer_map_insert,
15770         pointer_map_contains, pointer_map_traverse): Declare.
15771
15772 2007-02-02  Jakub Jelinek  <jakub@redhat.com>
15773
15774         PR middle-end/30473
15775         * builtins.c (fold_builtin_sprintf): Do not attempt to optimize
15776         sprintf (str, "%s").  Do not optimize sprintf (str, "nopercent", p++).
15777
15778 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
15779
15780         * sched-int.h (ds_to_dk, dk_to_ds): Declare functions.
15781
15782         (struct _dep): New type.
15783         (dep_t): New typedef.
15784         (DEP_PRO, DEP_CON, DEP_KIND): New access macros.
15785         (DEP_STATUS): New access macro.  The macro with the same name was
15786         renamed to DEP_LINK_STATUS.
15787         (dep_init): Declare function
15788
15789         (struct _dep_link): New type.
15790         (dep_link_t): New typedef.
15791         (DEP_LINK_NODE, DEP_LINK_NEXT, DEP_LINK_PREV_NEXTP): New access macros.
15792         (DEP_LINK_DEP, DEP_LINK_PRO, DEP_LINK_CON, DEP_LINK_KIND): New macros.
15793         (DEP_LINK_STATUS): New macro.
15794         (debug_dep_links): New debug function.
15795
15796         (struct _deps_list): New type.
15797         (deps_list_t): New typedef.
15798         (DEPS_LIST_FIRST): New access macro.
15799         (FOR_EACH_DEP_LINK): New cycle macro.
15800         (create_deps_list, free_deps_list, delete_deps_list): Declare
15801         functions.
15802         (deps_list_empty_p, debug_deps_list, add_back_dep_to_deps_list): Ditto.
15803         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
15804         (copy_deps_list_change_con): Ditto.
15805
15806         (move_dep_link): Declare function.
15807
15808         (struct _dep_node): New type.
15809         (dep_node_t): New typedef.
15810         (DEP_NODE_BACK, DEP_NODE_DEP, DEP_NODE_FORW): New access macros.
15811
15812         (struct haifa_insn_data.back_deps): New field to hold backward
15813         dependencies of the insn.
15814         (struct haifa_insn_data.depend): Rename to forw_deps.  Change its type
15815         to deps_list_t.
15816         (struct haifa_insn_data.resolved_deps): Rename to resolved_back_deps.
15817         Change its type to deps_list_t.
15818         (INSN_BACK_DEPS): New access macro to use instead of LOG_LINKS.
15819         (INSN_DEPEND): Rename to INSN_FORW_DEPS.
15820         (RESOLVED_DEPS): Rename to INSN_RESOLVED_BACK_DEPS.
15821
15822         (INSN_COST): Move to haifa-sched.c.  Use insn_cost () instead.
15823
15824         (DEP_STATUS): Rename to DEP_LINK_STATUS.  Fix typo in the comment.
15825
15826         (add_forw_dep, delete_back_forw_dep, insn_cost): Update declaration
15827         and all callers.
15828         (dep_cost): Declare.
15829
15830         * sched-deps.c (CHECK): New macro to (en/dis)able sanity checks.
15831         (ds_to_dk, dk_to_ds): New functions.
15832
15833         (init_dep_1): New static function.
15834         (init_dep): New function.
15835         (copy_dep): New static function.
15836
15837         (dep_link_consistent_p, attach_dep_link, add_to_deps_list): New static
15838         functions.
15839         (detach_dep_link): New static function.
15840         (move_dep_link): New function.
15841
15842         (dep_links_consistent_p, dump_dep_links): New static functions.
15843         (debug_dep_links): New debugging function.
15844
15845         (deps_obstack, dl_obstack, dn_obstack): New static variables.
15846
15847         (alloc_deps_list, init_deps_list): New static functions.
15848         (create_deps_list): New function.
15849         (clear_deps_list): New static function.
15850         (free_deps_list, delete_deps_list, deps_list_empty_p): New functions.
15851         (deps_list_consistent_p, dump_deps_list): New static functions.
15852         (debug_deps_list): New function.
15853         (add_back_dep_to_deps_list, find_link_by_pro_in_deps_list): New
15854         functions.
15855         (find_link_by_con_in_deps_list, copy_deps_list_change_con): Ditto.
15856
15857         (maybe_add_or_update_back_dep_1, add_or_update_back_dep_1): Update to
15858         use new scheduler dependencies lists.
15859         (add_back_dep, delete_all_dependences, fixup_sched_groups): Ditto.
15860         (sched_analyze): Ditto.  Initialize dependencies lists.
15861         (add_forw_dep, compute_forward_dependences): Update to use new
15862         scheduler dependencies lists.
15863
15864         (init_dependency_caches): Init deps_obstack.
15865         (free_dependency_caches): Free deps_obstack.
15866
15867         (adjust_add_sorted_back_dep, adjust_back_add_forw_dep): Update to use
15868         new scheduler dependencies lists.
15869         (delete_forw_dep, add_or_update_back_forw_dep): Ditto.
15870         (add_back_forw_dep, delete_back_forw_dep): Ditto.
15871
15872         * sched-rgn.c (set_spec_fed, find_conditional_protection, is_pfree):
15873         Update to use new scheduler dependencies lists.
15874         (is_conditionally_protected, is_prisky, add_branch_dependences): Ditto.
15875         (debug_dependencies): Ditto.
15876         (schedule_region): Update comments.
15877
15878         * sched-ebb.c (earliest_block_with_similiar_load): Update to use new
15879         scheduler dependencies lists.
15880         (schedule_ebb): Update comments.
15881
15882         * rtl.def (DEPS_LIST): Remove.
15883
15884         * lists.c (unused_deps_list): Remove.
15885         (free_list): Update assertions.
15886
15887         (alloc_DEPS_LIST, free_DEPS_LIST_list, free_DEPS_LIST_node): Remove.
15888         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
15889
15890         * rtl.h (free_DEPS_LIST_list, alloc_DEPS_LIST): Remove declarations.
15891         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
15892
15893         * haifa-sched.c (comments): Update.
15894         (insn_cost1): Remove.  Inline the code into insn_cost ().
15895         (insn_cost): Update to use new scheduler dependencies lists.  Move
15896         processing of the dependency cost to dep_cost ().
15897         (dep_cost): New function.  Use it instead of insn_cost () when
15898         evaluating cost of the dependency.  Use compatible interface to
15899         interact with the target.
15900         (priority): Update to use new scheduler dependencies lists.
15901         (rank_for_schedule): Ditto.  Optimize heuristic that prefers the insn
15902         with greater number of insns that depend on the insn.
15903         (schedule_insn): Update to use new scheduler dependencies lists.  Add
15904         code to free backward dependencies lists.  Inline and optimize code
15905         from resolve_dep () - see PR28071.
15906         (ok_for_early_queue_removal): Update to use new scheduler dependencies
15907         lists.  Update call to targetm.sched.is_costly_dependence hook.
15908
15909         (fix_inter_tick, try_ready, fix_tick_ready): Update to use new
15910         scheduler dependencies lists.
15911
15912         (resolve_dep): Remove.  Move the logic to schedule_insn ().
15913         (init_h_i_d): Initialize dependencies lists.
15914
15915         (process_insn_depend_be_in_spec): Rename to
15916         process_insn_forw_deps_be_in_spec.  Update to use new scheduler
15917         dependencies lists.
15918         (add_to_speculative_block, create_check_block_twin, fix_recovery_deps):
15919         Update to use new scheduler dependencies lists.
15920         (clear_priorities, calc_priorities, add_jump_dependencies): Ditto.
15921
15922         * ddg.c (create_ddg_dependence, create_ddg_dep_no_link): Update to use
15923         new scheduler dependencies lists.
15924         (build_intra_loop_deps): Ditto.
15925
15926         * target.h (struct _dep): Declare to use in
15927         gcc_target.sched.is_costly_dependence.
15928         (struct gcc_target.sched.adjust_cost): Fix typo.
15929         (struct gcc_target.sched.is_costly_dependence): Change signature to
15930         use single dep_t parameter instead of an equivalent triad.
15931         (struct gcc_target.sched.adjust_cost_2): Remove.
15932
15933         * target-def.h (TARGET_SCHED_ADJUST_COST_2): Remove.
15934
15935         * reg-notes.def (DEP_TRUE, DEP_OUTPUT, DEP_ANTI): Update comments.
15936
15937         * doc/tm.texi (TARGET_SCHED_IS_COSTLY_DEPENDENCE): Update
15938         documentation.
15939         (TARGET_SCHED_ADJUST_COST_2): Remove documentation.
15940
15941         * doc/rtl.texi (LOG_LINKS): Remove part about instruction scheduler.
15942         (REG_DEP_TRUE): Document.
15943
15944         * config/ia64/ia64.c (ia64_adjust_cost_2): Rename to ia64_adjust_cost.
15945         Change signature to correspond to the targetm.sched.adjust_cost hook.
15946         Update use in TARGET_SCHED_ADJUST_COST_2.
15947         (TARGET_SCHED_ADJUST_COST_2): Rename to TARGET_SCHED_ADJUST_COST.
15948         (ia64_dependencies_evaluation_hook, ia64_dfa_new_cycle): Update to use
15949         new scheduler dependencies lists.
15950         (ia64_gen_check): Ditto.
15951
15952         * config/mips/mips.c (vr4130_swap_insns_p): Update to use new
15953         scheduler dependencies lists.
15954
15955         * config/rs6000/rs6000.c (rs6000_is_costly_dependence): Change
15956         signature to correspond to the targetm.sched.is_costly_dependence hook.
15957         (is_costly_group): Update to use new scheduler dependencies lists.
15958
15959         * config/spu/spu.c (spu_sched_adjust_cost): Use insn_cost () function
15960         instead of INSN_COST () macro.
15961
15962 2007-02-01  Ian Lance Taylor  <iant@google.com>
15963
15964         * lower-subreg.c (resolve_clobber): Handle a subreg of a concatn.
15965
15966 2007-02-01  Guy Martin  <gmsoft@gentoo.org>
15967
15968         * pa.md (tp_load): Correct mfctl instruction syntax.
15969
15970 2007-02-01  Geoffrey Keating  <geoffk@apple.com>
15971
15972         * config/rs6000/rs6000.c (rs6000_stack_info): Correct
15973         altivec_padding_size calculation on AIX.  Improve comment, add
15974         assert to verify that it's right.
15975
15976         * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Don't define for
15977         64-bit.
15978
15979 2007-2-01  Seongbae Park  <seongbae.park@gmail.com>
15980
15981         PR inline-asm/28686
15982         * global.c (global_alloc): Add mising initialization of
15983         ELIMINABLE_REGSET.
15984
15985 2007-02-01  Roger Sayle  <roger@eyesopen.com>
15986
15987         * alias.c (init_alias_analysis): Correct whitespace.
15988         * bb-reorder.c (fix_edges_for_rarely_executed_code,
15989         partition_hot_cold_basic_blocks): Likewise.
15990         * builtins.c (expand_builtin_printf, expand_builtin_fprintf,
15991         expand_builtin_sprintf, fold_builtin_carg, fold_builtin_sprintf,
15992         maybe_emit_sprintf_chk_warning, fold_builtin_sprintf_chk,
15993         fold_builtin_snprintf_chk, fold_builtin_printf,
15994         fold_builtin_fprintf, do_mpfr_ckconv, do_mpfr_arg1, do_mpfr_arg2,
15995         do_mpfr_arg3, do_mpfr_sincos): Likewise.
15996         * cfgcleanup.c (cleanup_cfg): Likewise.
15997         * cfgexpand.c (tree_expand_cfg): Likewise.
15998         * fold-const.c (fold_binary) <RDIV_EXPR>: Likewise.
15999         * function.c (get_next_funcdef_no): Likewise.
16000         * gengtype.c (main): Likewise.
16001         * genmodes.c (main): Likewise.
16002         * gcse.c (bypass_conditional_jumps, print_ldst_list): Likewise.
16003         * haifa-sched.c (schedule_block, extend_h_i_d): Likewise.
16004         * ifcvt.c (noce_emit_move_insn): Likewise.
16005         * modulo-sched.c (generate_prolog_epilog, sms_schedule_by_order):
16006         Likewise.
16007         * stor-layout.c (get_best_mode): Likewise.
16008         * tree-ssa-loop-niter.c (get_val_for): Likewise.
16009         * tree-ssa-structalias.c (get_varinfo, get_varinfo_fc,
16010         scc_visit, do_ds_constraint, do_complex_constraint, label_visit,
16011         perform_var_substitution, solve_graph): Likewise.
16012         * tree-vrp.c (vrp_finalize): Likewise.
16013
16014 2007-02-01  Ian Lance Taylor  <iant@google.com>
16015
16016         * lower-subreg.c (simplify_gen_subreg_concatn): If we ask for the
16017         high part of a paradoxical subreg, return a constant zero.
16018
16019 2007-02-01  Zdenek Dvorak <dvorakz@suse.cz>
16020
16021         * toplev.c (lang_dependent_init): Call init_set_costs.
16022         * loop-init.c (loop_optimizer_init): Do not call init_set_costs.
16023
16024 2007-02-01  Richard Guenther  <rguenther@suse.de>
16025
16026         PR middle-end/30656
16027         * fold-const.c (fold_negate_expr): Allow negating a
16028         constant if overflow does not change.
16029
16030 2007-02-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
16031
16032         * doc/c-tree.texi (Expression trees): Improve markup.
16033         * doc/tm.texi (Register Classes, Addressing Modes)
16034         (Floating Point): Fix spacing after abbreviations.  Fix some
16035         typos.
16036
16037 2007-02-01  Ben Elliston  <bje@au.ibm.com>
16038
16039         * doc/invoke.texi: Replace "bugfix" with "bug fix" throughout.
16040         * doc/contrib.texi: Likewise.
16041         * doc/install.texi: Likewise.
16042
16043 2007-01-31  Richard Henderson  <rth@redhat.com>
16044             Ian Lance Taylor  <iant@google.com>
16045
16046         * lower-subreg.c: New file.
16047         * rtl.def (CONCATN): Define.
16048         * passes.c (init_optimization_passes): Add pass_lower_subreg and
16049         pass_lower_subreg2.
16050         * emit-rtl.c (update_reg_offset): New static function, broken out
16051         of gen_rtx_REG_offset.
16052         (gen_rtx_REG_offset): Call update_reg_offset.
16053         (gen_reg_rtx_offset): New function.
16054         * regclass.c: Revert patch of 2006-03-05, restoring
16055         reg_scan_update.
16056         (clear_reg_info_regno): New function.
16057         * dwarf2out.c (concatn_loc_descriptor): New static function.
16058         (loc_descriptor): Handle CONCATN.
16059         * common.opt (fsplit_wide_types): New option.
16060         * opts.c (decode_options): Set flag_split_wide_types when
16061         optimizing.
16062         * timevar.def (TV_LOWER_SUBREG): Define.
16063         * rtl.h (gen_reg_rtx_offset): Declare.
16064         (reg_scan_update): Declare.
16065         * regs.h (clear_reg_info_regno): Declare.
16066         * tree-pass.h (pass_lower_subreg): Declare.
16067         (pass_lower_subreg2): Declare.
16068         * doc/invoke.texi (Option Summary): List -fno-split-wide-types.
16069         (Optimize Options): Add -fsplit-wide-types to -O1 list.  Document
16070         -fsplit-wide-types.
16071         * doc/rtl.texi (Regs and Memory): Document concat and concatn.
16072         * Makefile.in (OBJS-common): Add lower-subreg.o.
16073         (lower-subreg.o): New target.
16074
16075 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
16076
16077         * config/sh/sh.h (HAVE_SECONDARY_RELOADS): Remove.
16078
16079 2007-01-31  Anatoly Sokolov <aesok@post.ru>
16080
16081         PR target/19087
16082         * config/avr/avr.c (DWARF2_ADDR_SIZE): Define.
16083
16084 2007-01-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16085
16086         PR middle-end/29335
16087         * builtins.c (fold_builtin_sqrt): Use MPFR for constant args.
16088
16089 2007-01-31  Zdenek Dvorak <dvorakz@suse.cz>
16090
16091         * cfgloop.h: Include vec-prim.h.
16092         (enum li_flags): Remove LI_ONLY_OLD.
16093         (loop_iterator): Changed.
16094         (fel_next, fel_init): Iterate over loop tree.
16095         (FOR_EACH_LOOP_BREAK): New macro.
16096         * loop-unswitch.c (unswitch_loops): Do not pass LI_ONLY_OLD to
16097         FOR_EACH_LOOP.
16098         * tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops): Ditto.
16099         * modulo-sched.c (sms_schedule): Ditto.
16100         * tree-vectorizer.c (vectorize_loops): Ditto.
16101         * doc/loop.texi: Update information on loop numbering and behavior of
16102         FOR_EACH_LOOP wrto new loops.
16103         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop,
16104         add_to_evolution_1): Test nestedness of loops instead of comparing
16105         their numbers.
16106         * tree-chrec.c (chrec_fold_plus_poly_poly,
16107         chrec_fold_multiply_poly_poly, chrec_evaluate,
16108         hide_evolution_in_other_loops_than_loop, chrec_component_in_loop_num,
16109         reset_evolution_in_loop): Ditto.
16110         * Makefile.in (CFGLOOP_H): Add vecprim.h dependency.
16111
16112 2007-01-31  Dirk Mueller  <dmueller@suse.de>
16113
16114         * c-common.c (warn_about_parentheses): Separate warning about
16115         un-parenthized sequence of comparison operators from the one
16116         which is supposed to warn about x <= y <= z.
16117
16118 2007-01-31  Uros Bizjak  <ubizjak@gmail.com>
16119
16120         * optabs.h (enum optab_index): Add new OTI_isinf.
16121         (isinf_optab): Define corresponding macro.
16122         * optabs.c (init_optabs): Initialize isinf_optab.
16123         * genopinit.c (optabs): Implement isinf_optab using isinf?f2
16124         patterns.
16125         * builtins.c (mathfn_built_in): Handle BUILT_IN_ISINF{,F,L}.
16126         (expand_builtin_interclass_mathfn): Expand BUILT_IN_ISINF{,F,L}
16127         using isinf_optab.
16128         (expand_builtin): Expand BUILT_IN_ISINF{,F,L} using
16129         expand_builtin_interclass_mathfn.
16130         * reg_stack.c (subst_stack_regs_pat): Handle UNSPEC_FXAM.
16131         * config/i386/i386.md (UNSPEC_FXAM): New constant.
16132         (fxam<mode>2_i387): New insn pattern.
16133         (isinf<mode>2) New expander to implement isinf, isinff and isinfl
16134         built-in functions as x87 inline asm.
16135
16136 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
16137
16138         * config/arm/unwind-arm.h (_sleb128_t, _uleb128_t): New.
16139
16140 2007-01-30  Eric Christopher  <echristo@apple.com>
16141
16142         * config.gcc: Add geode.
16143
16144 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
16145
16146         * cgraphunit.c, config/arm/arm.c, config/m68k/m68k.c,
16147         ipa-inline.c, tree-profile.c, tree-ssa-live.c,
16148         tree-ssa-math-opts.c, tree-ssanames.c, tree-vect-analyze.c,
16149         value-prof.c: Fix comment typos.
16150
16151 2007-01-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
16152
16153         PR c++/24745
16154         * doc/invoke.texi (Wpointer-arith): Document warning.
16155
16156 2007-01-30  Janis Johnson  <janis187@us.ibm.com>
16157
16158         * doc/extend.texi (Decimal Floating Types): Remove decfloat.h from
16159         the list of discrepancies from the draft TR.
16160
16161 2007-01-30  Dirk Mueller  <dmueller@suse.de>
16162
16163         PR c++/30601
16164         * doc/invoke.texi (-Wreturn-type): Update description to
16165         match new behavior.
16166
16167 2007-01-30  Richard Sandiford  <richard@codesourcery.com>
16168
16169         * cfgrtl.c (try_redirect_by_replacing_jump): Check only_sets_cc0_p.
16170
16171 2007-01-30  Uros Bizjak  <ubizjak@gmail.com>
16172
16173         * builtins.c (expand_builtin_int_interclass_roundingfn): New function
16174         to handle optabs that operate on floating point input argument and
16175         output to integer output.
16176         (expand_builtin_mathfn) [BUILT_IN_ILOGB]: Move from here ...
16177         (expand_builtin_interclass_mathfn) [BUILT_IN_ILOGB]: ... to here.
16178         (expand_builtin): Expand BUILT_IN_ILOGB{,F,L} using
16179         expand_builtin_interclass_mathfn ().
16180         * config/i386/i386.md (fxtractxf3_i387): Rename from *fxtractxf3_i387.
16181         (ilogbsi2): Remove.
16182         (ilogbxf2, ilogb<mode>2): New expanders to implement ilogb, ilogbf and
16183         ilogbl built-in functions as x87 intrinsics.
16184
16185 2007-01-30  Richard Guenther  <rguenther@suse.de>
16186
16187         PR middle-end/27657
16188         * dwarf2out.c (reference_to_unused): Query varpool if the
16189         variable was output.
16190
16191 2007-01-30  Richard Guenther  <rguenther@suse.de>
16192
16193         PR middle-end/30313
16194         * passes.c (execute_one_pass): Reset in_gimple_form to not
16195         confuse non-unit-at-a-time mode.
16196
16197 2007-01-29  Roger Sayle  <roger@eyesopen.com>
16198             Richard Guenther  <rguenther@suse.de>
16199
16200         * fold-const.c (round_up): Make HIGH an unsigned HOST_WIDE_INT to
16201         avoid undefined behaviour on overflow.  Use force_fit_type_double
16202         to construct the constant with the specified TREE_OVERFLOW.
16203
16204 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
16205
16206         * config/dfp-bit.c: Add parameterized support for fp exceptions.
16207         * config/dfp-bit.h: Ditto.
16208
16209 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
16210
16211         * c-decl.c (pop_scope): Replace warnings with call to
16212         warn_for_unused_label.
16213         * c-common.h (warn_for_unused_label): Declare.
16214         * c-common.c (warn_for_unused_label): Define.
16215
16216 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
16217
16218         * tree-optimize.c (update_inlined_to_pointers): Delete unused
16219         function.
16220
16221 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
16222
16223         * Makefile.in (USER_H): Remove decfloat.h.
16224         * ginclude/decfloat.h: Delete, moving contents to ...
16225         * ginclude/float.h: Add support for decimal floating point,
16226         guarded by __STDC_WANT_DEC_FP__.
16227
16228 2007-01-29  Mike Stump  <mrs@apple.com>
16229
16230         * doc/gccint.texi (Top): Rename Loop Representation to Loop
16231         Analysis and Representation to resolve case insensitive conflict.
16232         * doc/loop.texi (Loop Analysis and Representation): Likewise.
16233
16234 2007-01-28  Daniel Berlin  <dberlin@dberlin.org>
16235
16236         * tree.h (struct tree_memory_tag): Add aliases member.
16237         (MTAG_ALIASES): New macro.
16238         * tree-ssa-alias.c (alias_bitmap_obstack): New variable.
16239         (add_may_alias): Remove pointer-set. Update for may_aliases being
16240         a bitmap.
16241         (mark_aliases_call_clobbered): Update for may_aliases being a
16242         bitmap.
16243         (compute_tag_properties): Ditto.
16244         (create_partition_for): Ditto.
16245         (compute_memory_partitions): Ditto.
16246         (dump_may_aliases_for): Ditto.
16247         (is_aliased_with): Ditto.
16248         (add_may_alias_for_new_tag): Ditto.
16249         (rewrite_alias_set_for): Rewrite for may_aliases being a bitmap.
16250         (compute_is_aliased): New function.
16251         (compute_may_aliases): Call compute_is_aliased).
16252         (init_alias_info): Initialize alias_bitmap_obstack.
16253         (union_alias_set_into): New function.
16254         (compute_flow_sensitive_aliasing): Use union_aliases_into.
16255         (have_common_aliases_p): Rewrite to take two bitmaps and use
16256         intersection.
16257         (compute_flow_insensitive_aliasing): Stop using pointer-sets.
16258         Update for bitmaps.
16259         (finalize_ref_all_pointers): Update for add_may_alias changes.
16260         (new_type_alias): Ditto.
16261         * tree-flow-inline.h (may_aliases): Return a bitmap.
16262         * tree-dfa.c (dump_variable): Check for MTAG_P'ness.
16263         * tree-ssa.c (verify_flow_insensitive_alias_info): Update for
16264         may_aliases being a bitmap.
16265         * tree-flow.h (struct var_ann_d): Remove may_aliases member.
16266         may_aliases now returns a bitmap.
16267         * tree-ssa-structalias.c (merge_smts_into): Update for may_aliases
16268         being a bitmap.
16269         * tree-ssa-operands.c (add_virtual_operand): Update for
16270         may_aliases being a bitmap.
16271
16272 2007-01-29  Daniel Berlin  <dberlin@dberlin.org>
16273
16274         PR tree-optimization/30630
16275         * tree-ssa-structalias.c (do_complex_constraint): Mark correct
16276         variable as changed.
16277
16278 2007-01-29  Simon Martin  <simartin@users.sourceforge.net>
16279
16280         PR c++/28266
16281         * gimplify.c (gimplify_target_expr): Make sure that the TARGET_EXPR is
16282         expanded only once even if an error occurs.
16283
16284 2007-01-29  Ben Elliston  <bje@au.ibm.com>
16285
16286         * gcov-io.h (__gcov_indirect_call_profiler): Declare.
16287         (__gcov_average_profiler): Likewise.
16288         (__gcov_ior_profiler): Likewise.
16289         (__gcov_merge_ior): Likewise.
16290
16291 2007-01-28  Jan Hubicka  <jh@suse.cz>
16292
16293         * builtins.c (expand_builtin_memset): Fix typo in my last patch.
16294         * value-prof.c (stringop_block_profile): Likewise.
16295
16296 2007-01-28  Jan Hubicka  <jh@suse.cz>
16297
16298         * expr.c (emit_block_move_via_movmem, emit_block_move_via_libcall):
16299         Add variant handling histograms; add wrapper.
16300         (clear_storage_via_libcall): Export.
16301         (emit_block_move_hints): Break out from ...; add histograms.
16302         (emit_block_move): ... this one.
16303         (clear_storage_hints): Break out from ...; add histograms.
16304         (clear_storage): ... this one.
16305         (set_storage_via_memset): Handle histogram.
16306         * expr.h (emit_block_move_via_libcall, emit_block_move_hints): Declare.
16307         (clear_storage_hints, clear_storage_via_libcall): Declare.
16308         (set_storage_via_setmem): Update prototype.
16309         * doc/md.texi (movmem, setmem): Document new arguments.
16310
16311         * value-prof.c (dump_histogram_value, tree_find_values_to_profile):
16312         Add new histograms.
16313         (stringop_block_profile): New global function.
16314         (tree_stringops_values_to_profile): Profile block size and alignment.
16315         * value-prof.h (enum hist_type): add HIST_TYPE_AVERAGE and
16316         HIST_TYPE_IOR.
16317         (struct profile_hooks): Add gen_average_profiler and gen_ior_profiler.
16318         (stringop_block_profile): Declare.
16319         * builtins.c: Include value-prof.h.
16320         (expand_builtin_memcpy, expand_builtin_memset): Pass block profile.
16321         * gcov-ui.h (GCOV_COUNTER_NAMES): Add new counter.
16322         (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): New constants.
16323         (GCOV_COUNTERS, GCOV_LAST_VALUE_COUNTER): Update.
16324         * profile.c (instrument_values): Add new counters.
16325         * cfgexpand.c (expand_gimple_basic_block): Propagate histograms to
16326         calls.
16327         * tree-profile.c (tree_average_profiler_fn, tree_ior_profiler_fn): New.
16328         (tree_init_edge_profiler): Build new profilers.
16329         (tree_gen_average_profiler, tree_gen_ior_profiler): New.
16330         (pass_tree_profile): Add dump.
16331         (tree_profile_hooks): Update.
16332         * Makefile.in (LIBGCOV): Add new constants.
16333         * libgcov.c (__gcov_merge_ior, __gcov_average_profiler,
16334         __gcov_ior_profiler): New.
16335         * i386.md (movmem/setmem expanders): Add new optional arguments.
16336
16337 2007-01-28  David Edelsohn  <edelsohn@gnu.org>
16338
16339         * doc/md.texi (Standard Pattern Names): Document blockage pattern.
16340
16341 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
16342
16343         * tree-ssa-loop-unswitch.c: Include tree-inline.h.
16344         (tree_unswitch_single_loop): Pass eni_size_weights to
16345         tree_num_loop_insns.
16346         * tree-ssa-loop-manip.c: Include tree-inline.h.
16347         (can_unroll_loop_p): Pass eni_size_weights to
16348         tree_num_loop_insns.
16349         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p):
16350         Pass eni_size_weights to estimate_num_insns.
16351         * tree.h (init_inline_once): Export.
16352         * toplev.c (backend_init): Call init_inline_once.
16353         * cgraphunit.c (cgraph_process_new_functions,
16354         cgraph_analyze_function): Pass eni_inlining_weights to
16355         estimate_num_insns.
16356         * ipa-inline.c (compute_inline_parameters): Ditto.
16357         * tree-ssa-loop-ivcanon.c (tree_num_loop_insns): Pass weights
16358         to estimate_num_insns.
16359         (try_unroll_loop_completely): Pass eni_size_weights to
16360         tree_num_loop_insns.
16361         * tree-eh.c (decide_copy_try_finally): Pass eni_size_weights
16362         ot estimate_num_insns.
16363         * tree-ssa-loop-prefetch.c: Include tree-inline.h.
16364         (loop_prefetch_arrays): Pass eni_time_weights to tree_num_loop_insns.
16365         * tree-inline.c (eni_inlining_weights, eni_size_weights,
16366         eni_time_weights): New variables.
16367         (init_inline_once): Initialize them.
16368         (struct eni_data): Mew.
16369         (estimate_num_insns_1, estimate_num_insns): Use weights.
16370         * tree-inline.h (struct eni_weights_d): New.
16371         (eni_inlining_weights, eni_size_weights, eni_time_weights): Declare.
16372         (estimate_num_insns): Declaration changed.
16373         * cfgloop.h (tree_num_loop_insns): Declaration changed.
16374         * Makefile.in (tree-ssa-loop-unswitch.o, tree-ssa-loop-prefetch.o,
16375         tree-ssa-loop-manip.o): Add TREE_INLINE_H dependency.
16376
16377 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
16378
16379         * tree-data-ref.c (conflict_fn): Assert that the number of affine
16380         relations in the conflict function is valid.
16381
16382 2007-01-27  Ian Lance Taylor  <iant@google.com>
16383
16384         * common.opt: Add fstrict-overflow.
16385         * opts.c (decode_options): Set flag_strict_overflow if -O2.
16386         * flags.h (TYPE_OVERFLOW_WRAPS): Define.
16387         (TYPE_OVERFLOW_UNDEFINED): Define.
16388         (TYPE_OVERFLOW_TRAPS): Define.  This replaces TYPE_TRAP_SIGNED.
16389         Replace all uses.
16390         * tree.h (TYPE_TRAP_SIGNED): Don't define.
16391         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_UNDEFINED.
16392         (fold_negate_expr): Likewise.
16393         (make_range): Likewise.
16394         (extract_muldiv_1): Likewise.
16395         (maybe_canonicalize_comparison): Likewise.
16396         (fold_comparison): Likewise.
16397         (fold_binary): Likewise.
16398         (tree_expr_nonnegative_p): Likewise.
16399         (tree_expr_nonzero_p): Likewise.
16400         * tree-vrp.c (compare_values): Likewise.
16401         (extract_range_from_binary_expr): Likewise.
16402         (extract_range_from_unary_expr): Likewise.
16403         * tree-ssa-loop-niter.c (infer_loop_bounds_from_signedness):
16404         Likewise.
16405         (nowrap_type_p): Likewise.
16406         * tree-scalar-evolution.c (simple_iv): Likewise.
16407         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_WRAPS.
16408         (build_range_check): Likewise.
16409         (extract_muldiv_1): Likewise.
16410         (fold_comparison): Likewise.
16411         * tree-vrp.c (vrp_int_const_binop): Likewise.
16412         (extract_range_from_unary_expr): Likewise.
16413         * convert.c (convert_to_integer): Likewise.
16414         * fold-const.c (fold_negate_expr): Use TYPE_OVERFLOW_TRAPS.
16415         (fold_comparison): Likewise.
16416         (fold_binary): Likewise.
16417         * optabs.c (optab_for_tree_code): Likewise.
16418         * tree-vectorizer.c (vect_is_simple_reduction): Likewise.
16419         * simplify-rtx.c (simplify_const_relational_operation): Check
16420         flag_strict_overflow and flag_trapv.
16421         (simplify_const_relational_operation): Likewise.
16422         * doc/invoke.texi (Option Summary): Mention -fstrict-overflow.
16423         (Optimize Options): Add -fstrict-overflow to -O2 list.  Document
16424         -fstrict-overflow.
16425
16426 2007-01-27  Roger Sayle  <roger@eyesopen.com>
16427
16428         * tree.c (tree_fold_gcd): Delete.
16429         * tree.h (tree_fold_gcd): Remove prototype.
16430         * tree-data-ref.c (tree_fold_divides_p): Don't use tree_fold_gcd to
16431         test whether one constant integer is a multiple of another.  Instead
16432         call int_const_binop with TRUNC_MOD_EXPR and test for a zero result.
16433         * fold-const.c (multiple_of_p):  We've determined both TOP and
16434         BOTTOM are integer constants so we can call int_const_binop directly
16435         instead of the more generic const_binop.
16436
16437 2007-01-27  Roger Sayle  <roger@eyesopen.com>
16438
16439         * fold-const.c (size_binop): In the fast-paths for X+0, 0+X, X-0 and
16440         1*X check that the constant hasn't overflowed, to preserve the
16441         TREE_OVERFLOW bit.
16442         (round_up): Provide an efficient implementation when rouding-up an
16443         INTEGER_CST to a power-of-two.
16444
16445 2007-01-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
16446
16447         * doc/sourcebuild.texi: Add comma for clarity.
16448         * doc/extend.texi: Fix some typos.
16449         * doc/passes.texi: Likewise.
16450         * doc/cppinternals.texi: Likewise.
16451         * doc/c-tree.texi: Likewise.
16452         * doc/tree-ssa.texi: Likewise.
16453         * doc/install.texi: Likewise.
16454
16455 2007-01-27  Jan Hubicka  <jh@suse.cz>
16456
16457         * tree-sra.c (sra_walk_function): Don't rely on aliases being build.
16458         (pass_sra): Do not require alias information.
16459         * passes.c (init_optimization_passes): Add SRA
16460
16461 2007-01-27  Steven Bosscher  <steven@gcc.gnu.org>
16462
16463         * tracer.c (rest_of_handle_tracer): We already cleaned
16464         up the CFG in tracer() so don't do it here again.
16465         * cfgcleanup.c (rest_of_handle_jump2): Don't repeat
16466         cleanup_cfg here, either.  And don't call renumber_insns.
16467
16468         * cfgrtl.c (rtl_verify_flow_info_1): Don't verify that BB_END
16469         and BB_HEAD are in the insn stream here.  Instead make sure
16470         that BB_INSN is valid on all insns.  Also, do check here that
16471         there are no pending branch predictions...
16472         (rtl_verify_flow_info): ...instead of doing it here.  Checks
16473         for BB_END and BB_HEAD moved from rtl_verify_flow_info_1 to
16474         here.
16475
16476 2007-01-26  Roger Sayle  <roger@eyesopen.com>
16477
16478         * config/i386/i386.c (ix86_swap_binary_operands_p): New helper
16479         function to simplify/factorize operand order canonicalization.
16480         (ix86_fixup_binary_operands): Reorganize using the above function.
16481         (ix86_binary_operator_ok): Likewise.
16482
16483 2007-01-27  Jakub Jelinek  <jakub@redhat.com>
16484
16485         * genattrtab.c (struct attr_value_list, insn_code_values): Move to
16486         file scope from optimize_attrs.
16487         (simplify_test_exp): If insn_code_values is not NULL, use it to speed
16488         up search.
16489         (optimize_attrs): Clear insn_code_values after freeing it.
16490
16491 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
16492
16493         * tree-ssa-address.c (create_mem_ref): Remove ", bsi" from
16494         a parts.base assignment.
16495
16496 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
16497
16498         * tree-data-ref.c (dump_subscript): Use dump_conflict_function.
16499         (compute_subscript_distance, initialize_data_dependence_relation,
16500         finalize_ddr_dependent, analyze_ziv_subscript,
16501         analyze_siv_subscript_cst_affine,
16502         compute_overlap_steps_for_affine_univar,
16503         compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
16504         analyze_siv_subscript, analyze_miv_subscript,
16505         analyze_overlapping_iterations, subscript_dependence_tester_1,
16506         compute_self_dependence, free_dependence_relation): Work
16507         with affine_fn instead of chrecs.
16508         (dump_affine_function, dump_conflict_function, affine_function_equal_p,
16509         common_affine_function, affine_function_base,
16510         affine_function_constant_p, affine_fn_op, affine_fn_plus,
16511         affine_fn_minus, affine_fn_free, conflict_fn_not_known,
16512         conflict_fn_no_dependence, free_conflict_function, free_subscripts,
16513         conflict_fn, affine_fn_cst, affine_fn_univar): New functions.
16514         (all_chrecs_equal_p): Removed.
16515         * tree-data-ref.h (affine_fn, conflict_function): New types.
16516         (struct subscript): Change type of conflicting_iterations_in_a
16517         and conflicting_iterations_in_b.
16518
16519 2007-01-26  Steve Ellcey  <sje@cup.hp.com>
16520
16521         PR other/30182
16522         * config/pa/pa.h (TARGET_HPUX_11): New.
16523         * config/pa/pa-hpux11.h (TARGET_HPUX_11): New.
16524         * config/pa/pa.c (pa_init_builtins): Use TARGET_HPUX_11.
16525
16526 2007-01-26  Daniel Berlin  <dberlin@dberlin.org>
16527         Richard Guenther  <rguenther@suse.de>
16528
16529         * tree-ssa-structalias.c (solve_graph): Handle case
16530         we merged the variable to another.
16531
16532 2007-01-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16533
16534         * builtins.c (fold_builtin_1): Treat ccos and ccosh as 'even'
16535         functions.
16536
16537         * fold-const.c (negate_mathfn_p): Treat casin, casinh, catan,
16538         catanh, cproj, csin, csinh, ctan and ctanh as 'odd' functions.
16539
16540 2007-01-25  DJ Delorie  <dj@redhat.com>
16541
16542         * config/m32c/m32c.c (m32c_cannot_change_mode_class): We don't
16543         allow changes to modes which don't fit in those registers.
16544
16545         * reload1.c (choose_reload_regs): Check for invalid subregs before
16546         computing their locations, not after.
16547
16548 2007-01-25  Geoffrey Keating  <geoffk@apple.com>
16549
16550         PR 25127
16551         * config/rs6000/rs6000.c (first_altivec_reg_to_save): On Darwin,
16552         save Altivec registers in an eh_return function.
16553         (compute_vrsave_mask): Likewise.
16554         (rs6000_stack_info): Correct AIX/Darwin stack alignment computation
16555         for saving Altivec registers.
16556         (rs6000_emit_prologue): Don't allocate stack twice in
16557         eh_return function.  Correct expected value of altivec_save_offset
16558         when using save_world.  Describe save of R0 to stack when using
16559         save_world.  Describe stack pointer adjustment when using
16560         save_world.  Remove duplicated eh_return parameter register saving.
16561         Update sp_offset variable after save_world.
16562         * config/rs6000/t-darwin (LIB2FUNCS_STATIC_EXTRA): Remove
16563         darwin-world.asm.
16564         (LIB2FUNCS_EXTRA): Add darwin-world.asm.
16565         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): -m64
16566         implies Altivec.
16567
16568 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
16569
16570         * config.gcc (ia64*-*-hpux*): Make posix threads the default.
16571
16572 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
16573
16574         PR other/30182
16575         * config/pa/pa.c (pa_init_builtins): Set asm names for finite routines.
16576         * config/ia64/ia64.c (ia64_init_builtins):  Ditto.
16577
16578 2007-01-25  Richard Guenther  <rguenther@suse.de>
16579
16580         * doc/invoke.texi (-Wcoverage-mismatch): Document.
16581         * common.opt (-Wcoverage-mismatch): New warning option.
16582         * coverage.c (get_coverage_counts): Ignore coverage mismatch
16583         if -Wcoverage-mismatch is given.
16584
16585 2007-01-25  Razya Ladelsky  <razya@il.ibm.com>
16586
16587         * ipa-cp.c (ipcp_insert_stage, ipcp_driver): Support for SSA.
16588         (ipcp_driver): Change to static definition.
16589         Add dumping of the ifunctions.
16590         (constant_val_insert): Remove unused parameter. Support for SSA.
16591         (ipcp_propagate_const): Support for SSA.
16592         (ipcp_profile_bb_print): Print only analyzed nodes.
16593         (ipcp_replace_map_create): Remove support for Fortran constant
16594         for now.
16595         * ipa-prop.c (ipa_method_modify_stmt,
16596         ipa_callsite_compute_param): Support for SSA.
16597         * ipa-prop.h (ipcp_driver): Remove declaration.
16598         (IS_VALID_TREE_MAP_INDEX): Add define.
16599
16600 2007-01-24  Geoffrey Keating  <geoffk@apple.com>
16601
16602         * unwind-dw2.c (execute_stack_op): Handle DW_OP_swap.
16603
16604 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16605
16606         PR middle-end/30447
16607         * builtins.c (fold_builtin_cabs): Use MPFR to evaluate a
16608         constant argument to cabs and do it without checking for
16609         -funsafe-math-optimizations.
16610
16611 2007-01-24  Douglas Gregor  <dgregor@osl.iu.edu>
16612
16613         * c-common.h (RID_FIRST_CXX0X): New.
16614         (RID_LAST_CXX0X): New.
16615         * c-opts.c (c_common_handle_option): -Wc++0x-compat is triggered
16616         by -Wall.
16617         * c.opt (Wc++0x-compat): New.
16618         * doc/invoke.texi (-Wc++0x-compat): Document.
16619
16620 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16621
16622         * builtins.c (fold_builtin_carg): New.
16623         (fold_builtin_1): Use it.
16624
16625 2007-01-24  Jan Hubicka  <jh@suse.cz>
16626
16627         * ipa-inline.c (cgraph_decide_inlining): Initialize initial_insns.
16628
16629         * ipa-inline.c (initial_insns, max_insns): Delete.
16630         (compute_max_insns): New function.
16631         (cgraph_decide_inlining_of_small_function): Use it; take minimal
16632         amount of insns as base for code growth.
16633         (cgraph_decide_inlining): Make initial_insns local; do not compute
16634         max_insns.
16635         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 60.
16636         * doc/invoke.texi (inline-unit-growth): Update docs.
16637
16638 2007-01-24  Jakub Jelinek  <jakub@redhat.com>
16639
16640         * config/i386/i386.h (x86_cmpxchg16b): Remove const.
16641         (TARGET_CMPXCHG16B): Define to x86_cmpxchg16b.
16642         * config/i386/i386.c (x86_cmpxchg16b): Remove const.
16643         (override_options): Add PTA_CX16 flag.  Set x86_cmpxchg16b
16644         for CPUs that have PTA_CX16 set.
16645
16646         PR middle-end/27416
16647         * gimplify.c (omp_check_private): New function.
16648         (gimplify_scan_omp_clauses): Use it for
16649         firstprivate/lastprivate/reduction.
16650
16651         PR middle-end/30494
16652         * gimplify.c (omp_add_variable): Don't call omp_notice_variable
16653         on TYPE_SIZE_UNIT for GOVD_LOCAL VLAs.
16654
16655         PR middle-end/30421
16656         * omp-low.c (lower_omp_for_lastprivate): Add dlist argument.
16657         If lower_lastprivate_clauses emits some statements, append them
16658         to dlist rather than body_p and to body_p append an initializer.
16659         (lower_omp_for): Adjust caller.
16660
16661 2007-01-24  Steve Ellcey  <sje@cup.hp.com>
16662
16663         * target.h (globalize_decl_name): New.
16664         * target-def.h (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
16665         * output.h (default_globalize_decl_name): New.
16666         * varasm.c (asm_output_bss): Use globalize_decl_name instead of
16667         globalize_label.
16668         (globalize_decl): Ditto.
16669         (default_globalize_decl_name): New.
16670         * config/ia64/ia64.c (ia64_globalize_decl_name): New.
16671         (ia64_handle_version_id_attribute): New.
16672         (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
16673         (ia64_asm_output_external): Use globalize_decl_name instead
16674         of globalize_label.
16675         * doc/extend.texi (version_id): New pragma.
16676         * doc/tm.texi (ARGET_ASM_GLOBALIZE_DECL_NAME): New target hook.
16677
16678 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
16679
16680         * unwind-dw2-fde.c (get_cie_encoding): Replaced _Unwind_Word with
16681         _uleb128_t and _Unwind_SWord with _sleb128_t.
16682         * unwind-dw2.c (extract_cie_info, execute_stack_op,
16683         execute_cfa_program, uw_frame_state_for, uw_update_context_1):
16684         Likewise.
16685         * unwind-c.c (parse_lsda_header, PERSONALITY_FUNCTION): Likewise.
16686         * unwind-pe.h (read_uleb128, read_sleb128,
16687         read_encoded_value_with_base): Likewise.
16688         * unwind-generic.h: Define _sleb128_t and _uleb128_t types.
16689
16690 2007-01-24  Richard Guenther  <rguenther@suse.de>
16691
16692         * builtins.c (expand_builtin_cexpi): Get the fndecl
16693         for cexp in the correct way.
16694
16695 2007-01-24  Jan Hubicka  <jh@suse.cz>
16696
16697         * tree-ssa-dce.c (eliminate_unnecesary_stmts): Remove dead LHS
16698         of calls.
16699
16700 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
16701
16702         * c-cppbuiltin.c (builtin_define_type_sizeof): New function.
16703         (c_cpp_builtins): New builtin macros: __SIZEOF_INT__, __SIZEOF_LONG__,
16704         __SIZEOF_LONG_LONG__, __SIZEOF_SHORT__, __SIZEOF_POINTER__,
16705         __SIZEOF_FLOAT__, __SIZEOF_DOUBLE__, __SIZEOF_LONG_DOUBLE__,
16706         __SIZEOF_SIZE_T__, __SIZEOF_WCHAR_T__, __SIZEOF_WINT_T__ and
16707         __SIZEOF_PTRDIFF_T__.
16708         * doc/cpp.texi: Documentation for the new builtin macros added.
16709
16710 2007-01-24  Uros Bizjak  <ubizjak@gmail.com>
16711
16712         * config/i386/i386.md (tanxf2, tan<mode>2, atan<mode>2, log<mode>2,
16713         log10<mode>2, log2<mode>2, expxf2, exp10xf2, exp2xf2): Use op2
16714         instead of operands[2] to avoid access past the end of array.
16715
16716 2007-01-24  Richard Sandiford  <richard@codesourcery.com>
16717
16718         * reload1.c (emit_reload_insns): Pass the reload register
16719         for a non-spill output reload through forget_old_reloads_1.
16720
16721 2007-01-23  Joseph Myers  <joseph@codesourcery.com>
16722
16723         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
16724         _SOFT_DOUBLE if doubles use software floating-point.
16725         * config/rs6000/libgcc-ppc-glibc.ver: Export additional long
16726         double functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
16727         * config/rs6000/darwin-ldouble.c: Also compile functions for
16728         hard-float without FPRs.  Use fmsub function for all __NO_FPRS__
16729         cases.  Compile extra functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
16730         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Remove
16731         commented-out long double override.
16732         (CPP_LONGDOUBLE_DEFAULT_SPEC): Likewise.
16733         * config/rs6000/eabispe.h: Likewise.
16734         * config/rs6000/rs6000.c (rs6000_override_options): Don't override
16735         long double for non-SPE.
16736         (rs6000_handle_option): Likewise.
16737         (invalid_e500_subreg): Disallow more subregs involding DImode,
16738         DFmode, TImode or TFmode.
16739         (rs6000_legitimate_offset_address_p): Check TFmode offsets for
16740         E500 double.
16741         (legitimate_lo_sum_address_p): Also check for TFmode for E500
16742         double.
16743         (rs6000_legitimize_address): Also handle TFmode for E500 double.
16744         (rs6000_legitimize_reload_address): Also handle TFmode for E500
16745         double.
16746         (rs6000_legitimate_address): Also check for TFmode for E500
16747         double.
16748         (rs6000_emit_move): Use DFmode subregs of TFmode for E500 double.
16749         (spe_build_register_parallel): Handle TFmode and TCmode.
16750         (rs6000_spe_function_arg): Handle TFmode and TCmode for E500
16751         double.
16752         (function_arg): Handle TFmode and TCmode for E500 double.
16753         (rs6000_init_libfuncs): Initialize extra libfuncs for soft double
16754         in general.
16755         (print_operand): Handle TFmode and TImode for %y.
16756         (rs6000_generate_compare): Handle TFmode comparisons for E500
16757         double.
16758         (spe_func_has_64bit_regs_p): Check for TFmode for E500 double.
16759         (rs6000_function_value): Handle TFmode and TCmode for E500 double.
16760         (rs6000_libcall_value): Handle TFmode and TCmode for E500 double.
16761         * config/rs6000/rs6000.h (CANNOT_CHANGE_MODE_CLASS): Check for
16762         TFmode for E500 double.
16763         * config/rs6000/rs6000.md (FP): Allow TF for E500 double.
16764         (floatsidf2): Enable for E500 double.
16765         (movtf_softfloat): Use rs6000_nonimmediate_operand.
16766         (extenddftf2): Change to extenddftf2_fprs.
16767         (extenddftf2): Call gen_spe_extenddftf2 or gen_extenddftf2_fprs
16768         depending on TARGET_E500_DOUBLE.
16769         (extendsftf2): Enable for E500 double.
16770         (trunctfdf2): Enable for E500 double.
16771         (trunctfsf2): Change to trunctfsf2_fprs.
16772         (trunctfsf2): Call gen_spe_trunctfsf2 or gen_trunctfsf2_fprs
16773         depending on TARGET_E500_DOUBLE.
16774         (floatsitf2): Enable for E500 double.
16775         (fix_trunctfsi2): Change to fix_trunctfsi2_fprs.
16776         (fix_trunctfsi2): Call gen_spe_fix_trunctfsi2 or
16777         gen_fix_trunctfsi2_fprs depending on TARGET_E500_DOUBLE.
16778         (negtf2): Change to negtf2_internal.
16779         (negtf2): New expander.
16780         (abstf2): Enable for E500 double.  Call gen_spe_abstf2_tst,
16781         gen_spe_abstf2_cmp or gen_abstf2_internal depending on
16782         TARGET_E500_DOUBLE and flag_unsafe_math_optimizations.
16783         (movdi_internal32): Use rs6000_nonimmediate_operand.
16784         (unnamed splitter): Likewise.
16785         * config/rs6000/spe.md (CMPTFEQ_GPR, TSTTFEQ_GPR, CMPTFGT_GPR,
16786         TSTTFGT_GPR, CMPTFLT_GPR, TSTTFLT_GPR): New unspecs.
16787         (SPE64TF, DITI): New mode macros.
16788         (frob_df_di): Change to frob_<SPE64:mode>_<DITI:mode>; allow more
16789         modes.
16790         (frob_tf_ti): New.
16791         (frob_<mode>_di_2): New.
16792         (frob_tf_di_8_2): New.
16793         (frob_di_df): Change to frob_di_<mode>; allow more modes.
16794         (frob_ti_tf): New.
16795         (frob_di_df_2): Change to frob_<DITI:mode>_<SPE64:mode>_2; allow
16796         more modes.
16797         (frob_ti_<mode>_8_2): New.
16798         (frob_ti_tf_2): New.
16799         (mov_si<mode>_e500_subreg0, mov_si<mode>_e500_subreg0_2,
16800         mov_si<mode>_e500_subreg4, mov_si<mode>_e500_subreg4_2): Allow
16801         TFmode.
16802         (mov_sitf_e500_subreg8, mov_sitf_e500_subreg8_2,
16803         mov_sitf_e500_subreg12, mov_sitf_e500_subreg12_2): New.
16804         (spe_trunctfdf2_internal1, spe_trunctfsf2, spe_extenddftf2,
16805         spe_fix_trunctfsi2, spe_fix_trunctfsi2_internal,
16806         spe_negtf2_internal, spe_abstf2_cmp, spe_abstf2_tst): New.
16807         (cmptfeq_gpr, tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr,
16808         tsttflt_gp): New.
16809
16810 2007-01-23  Ian Lance Taylor  <iant@google.com>
16811
16812         * Makefile.in (OBJS-common): Reformat, alphabetize, but put
16813         insn-*.o first.
16814         (OBJS-archive): Reformat, alphabetize.
16815         (OBJS): Change out_object_file to OBJS-md.
16816
16817 2007-01-23  Uros Bizjak  <ubizjak@gmail.com>
16818
16819         * config/i386/i386.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
16820         JUMP_P and CALL_P predicates where applicable.
16821         * config/i386/i386.c: Ditto.
16822         * config/i386/i386.md: Ditto.
16823         * config/i386/mmx.md: Ditto.
16824         * config/i386/predicates.md: Ditto.
16825
16826 2007-01-22  Andreas Schwab  <schwab@suse.de>
16827
16828         * config/m68k/m68k.h: Fix comment.
16829
16830 2007-01-22  Jan Hubicka  <jh@suse.cz>
16831
16832         * passes.c (init_optimization_passes): Do not rerun
16833         pass_early_warn_uninitialized.
16834
16835 2007-01-22  Richard Guenther  <rguenther@suse.de>
16836
16837         PR tree-optimization/30038
16838         * tree-ssa-math-opts.c (maybe_record_sincos): New static helper
16839         function.
16840         (execute_cse_sincos_1): Likewise.
16841         (execute_cse_sincos): Likewise.
16842         (gate_cse_sincos): Likewise.
16843         (pass_cse_sincos): New pass CSEing sin() and cos() calls using
16844         the cexpi() canonicalization of sincos().
16845         * tree-pass.h (pass_cse_sincos): Declare.
16846         * passes.c (init_optimization_passes): New pass pas_cse_sincos.
16847
16848 2007-01-21  Eric Botcazou  <ebotcazou@libertysurf.fr>
16849
16850         PR rtl-optimization/29329
16851         * combine.c (replaced_rhs_insn): Rename to i2mod.
16852         (replaced_rhs_value): Rename to i2mod_new_rhs.
16853         (i2mod_old_rhs): New global variable.
16854         (combine_instructions): Adjust for above change.  Save a copy of
16855         the old RHS into i2mod_old_rhs when the contents of a REG_EQUAL
16856         note are substituted in the second instruction.
16857         (distribute_notes) <REG_DEAD>: Adjust for above change.  Do not
16858         ditch the note if it pertains to the second eliminated register
16859         and this register is mentioned in i2mod_old_rhs.
16860
16861         Revert:
16862         2006-09-12  Eric Botcazou  <ebotcazou@libertysurf.fr>
16863
16864         * combine.c (distribute_notes) <REG_DEAD>: Do not consider SETs past
16865         the insn to which the note was originally attached.
16866
16867 2007-01-21  Jan Hubicka  <jh@suse.cz>
16868
16869         * ipa-inline.c (inlining_mode): Comment, move up.
16870         (cgraph_decide_inlining_incrementally): Do not perform inlining
16871         itself; fix handling of flattening of self recursive functions.
16872         (cgraph_find_cycles): Remove.
16873         (cgraph_flatten_node): Remove.
16874         (cgraph_decide_inlining): Use incremental inliner to handle flattening.
16875         (try_inline): New function.
16876         (cgraph_early_inlining): Update call of
16877         cgraph_decide_inlining_incrementally.  Apply inlining here.
16878         (apply_inline): Update call of cgraph_decide_inlining_incrementally.
16879
16880 2007-01-21  Dirk Mueller  <dmueller@suse.de>
16881
16882         PR bootstrap/30511
16883         * tree-vrp.c (check_array_bounds): do not warn
16884         about ADDR_EXPR's of ARRAY_REF's which are immediately
16885         used in binary expressions.
16886
16887 2007-01-21  Ira Rosen  <irar@il.ibm.com>
16888
16889         * tree-vectorizer.h (struct _stmt_vec_info): Add new field
16890         read_write_dep and macros for its access.
16891         * tree-vectorizer.c (new_stmt_vec_info): Initialize the new field.
16892         * tree-vect-analyze.c (vect_analyze_data_ref_dependence): Remove
16893         argument, call vect_check_interleaving for every independent pair of
16894         data-refs. Mark loads that access the same memory location as a store
16895         in the loop.
16896         (vect_check_dependences): Remove.
16897         (vect_analyze_data_ref_dependences): Remove  vect_check_dependences
16898         call, fix the call to vect_analyze_data_ref_dependence.
16899         (vect_analyze_data_ref_access): For statements that access the same
16900         data-ref, check that they are not stores; for loads, check that there
16901         is no store that access the same location.
16902
16903 2007-01-20  Roger Sayle  <roger@eyesopen.com>
16904             Joseph Myers  <joseph@codesourcery.com>
16905
16906         * doc/invoke.texi (-fdump-rtl-combine): Fix under/overfull hbox.
16907         (-fdump-rtl-stack): Likewise.
16908         (-fno-signed-zeros): Use @minus{} for a minus sign.  Correct typo.
16909         (-mcheck-zero-division, -mcpu): Fix under/overfull hbox.
16910         (-mpt-fixed): Use @minus{} for minus sign.
16911         (Using Precompiled Headers): Fix under/overfull hbox.
16912
16913 2007-01-20  Jan Hubicka  <jh@suse.cz>
16914
16915         * tree-flow.h (struct stmt_ann_d): Move references_memory to proper
16916         place within annotation.
16917
16918 2007-01-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
16919
16920         * pa.c (output_move_double): Change array size of xoperands to 4.
16921
16922 2007-01-20  Jan Hubicka  <jh@suse.cz>
16923
16924         * tree-tailcall.c (adjust_return_value): Do not use RESULT_DECL
16925         as temporary.
16926
16927 2007-01-19  Ian Lance Taylor  <iant@google.com>
16928
16929         * expmed.c (expand_divmod) [TRUNC_MOD_EXPR, TRUNC_DIV_EXPR]: Cast
16930         constant to unsigned HOST_WIDE_INT before negating.
16931
16932 2007-01-19  Ian Lance Taylor  <iant@google.com>
16933
16934         * tree-ssa-operands.h (struct vuse_vec_d): Change num_vuse field
16935         to unsigned.
16936         (VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Use unsigned comparison.
16937         (VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
16938         (SET_VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Likewise.
16939         (SET_VUSE_ELEMENT_VAR) [ENABLE_CHECKING]: Likewise.
16940         (SET_VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
16941         (realloc_vdef, realloc_vuse): Change second parameter to
16942         unsigned.
16943         (ssa_operand_iterator_d): Change vuse_index and mayuse_index
16944         fields to unsigned.
16945         * tree-ssa-operands.c (realloc_vop): Change num_elem parameter to
16946         unsigned. Change x and lim locals to unsigned.
16947         (realloc_vdef, realloc_vuse): Change num_elem parameter to
16948         unsigned.
16949         (finalize_ssa_vuse_ops): Change old_i local to unsigned.
16950         (copy_virtual_operands): Change i and n locals to unsigned.
16951
16952 2007-01-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16953
16954         PR middle-end/29335
16955         * builtins.c (fold_builtin_1): Handle builtin fdim.
16956
16957 2007-01-20  Jan Hubicka  <jh@suse.cz>
16958
16959         * tree-ssa.c (init_tree_ssa): Do not call init_alias_heapvars.
16960         * tree-ssa-structalias.c (compute_points_to_sets): Do call
16961         init_alias_heapvars.
16962         (init_alias_heapvars): Initialize only when not already initialized.
16963         (delete_alias_heapvars): Set heapvar_for_stmt to NULL.
16964
16965 2007-01-19  Roger Sayle  <roger@eyesopen.com>
16966
16967         * common.opt (fsigned-zeros): New command line option.
16968         * flags.h (HONOR_SIGNED_ZEROS): Control via flag_signed_zeros instead
16969         of flag_unsafe_math_optimizations.
16970         * opts.c (set_fast_math_flags): The -ffast-math command line option
16971         implies -fno-signed-zeros.
16972         (fast_math_flags_set_p): Likewise.
16973
16974         * doc/invoke.texi: Document new -fno-signed-zeros option, and update
16975         the documentation of -ffast-math appropriately.  Wrap long lines.
16976
16977 2007-01-19  Steve Ellcey  <sje@cup.hp.com>
16978
16979         * system.h (ASM_MAKE_LABEL_LINKONCE): Poison.
16980         * varasm.c (globalize_decl): Remove ASM_MAKE_LABEL_LINKONCE ifdef.
16981
16982 2007-01-19  Tomas Bily  <tbily@suse.cz>
16983
16984         * cgraphunit.c (cgraph_finalize_function): Updating of pid
16985         * tree-profile.c:
16986         (tree_init_ic_make_global_vars): New function
16987         (tree_init_edge_profiler): call of tree_init_ic_make_global_vars
16988         (tree_gen_ic_profiler): New function
16989         (tree_gen_ic_func_profiler): New function
16990         (tree_profiling): Added calling of tree_gen_ic_func_profiler
16991         (tree_profile_hooks): Added hook for indirec/virtual calls
16992         * value-prof.c (tree_find_values_to_profile): New case for
16993         indirect calls
16994         (tree_values_to_profile): Call for determining indirect/virtual
16995         counters
16996         (tree_indirect_call_to_profile): New function
16997         (tree_ic_transform): New function
16998         (tree_ic): New function
16999         (find_func_by_pid): New function
17000         (init_pid_map): New function
17001         (tree_value_profile_transformations): Added check for
17002         indirect/virtual call transformation
17003         * value-prof.h (enum hist_type): New counter type for
17004         indirect/virtual calls
17005         (profile_hooks): Added new hook for profiling indirect/virtual
17006         calls
17007         * profile.c (instrument_values): New case for indirect/virtual
17008         call added
17009         * gcov-io.h (GCOV_LAST_VALUE_COUNTER): Changed to 6
17010         (GCOV_COUNTER_V_INDIR): New counter type
17011         (GCOV_COUNTER_NAMES): New name of counter "indirect" added
17012         (GCOV_MERGE_FUNCTIONS): New merge function for indirect/virtual
17013         call added
17014         * cgraph.c: Definition of cgraph_max_pid
17015         (cgraph_create_node): Default init of pid attribute
17016         * cgraph.h: Declaration of cgraph_max_pid
17017         (struct cgraph_node): Added pid attribute
17018         * libgcov.c (__gcov_indirect_call_profiler): New function
17019         (__gcov_one_value_profiler_body): New function
17020         (__gcov_one_value_profiler): Body was moved to
17021         __gcov_one_value_profiler_body and calls it
17022
17023 2007-01-19  Basile Starynkevitch  <basile@starynkevitch.net>
17024
17025         * doc/gty.texi (Options): Document the mark_hook option to GTY.
17026         * gengtype.c (write_types_data, write_func_for_structure,
17027         write_types, ggc_wtd, pch_wtd): Add skip_hooks to
17028         write_types_data, ggc_wtd, pch_wtd for processing mark_hook.
17029         (walk_type, write_func_for_structure): Generate the mark_hook if
17030         needed.
17031
17032 2007-01-19  Jan Hubicka  <jh@suse.cz>
17033
17034         * ipa-inline.c (cgraph_decide_inlining_incrementally): Instead of
17035         'early' argument take inlining mode argument specifying whether to
17036         inline for size/speeed or all functions; add support for flattening;
17037         improve dumpting.
17038         (cgraph_early_inlining): Update call of decide_inlining_incrementally.
17039
17040 2007-01-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
17041
17042         PR c++/17947
17043         * toplev.c (warn_deprecated_use): Use %qD instead of %qs to print
17044         the name of the declared identifier.
17045
17046 2007-01-19  Dirk Mueller  <dmueller@suse.de>
17047
17048         * config/i386.h (CONDITIONAL_REGISTER_USAGE): Store
17049         result of PIC_OFFSET_TABLE_REGNUM in temporary variable to avoid
17050         duplicate evaluation.
17051
17052 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
17053
17054         * config/i386/i386.md (acos<mode>2): Rename from acossf2 and acosdf2.
17055         Macroize expander using X87MODEF12 mode macro.  Extend operand 1
17056         to XFMode, use acosxf2 and truncate result to requested mode.
17057         Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
17058         (asin<mode>2): Similarly, with asin expanders.
17059         (*fscalexf4_i387): Rename from *fscalexf4.
17060         (expNcorexf3): New expander.
17061         (expxf2, exp10xf2, exp2xf2): Use expNcorexf3 expander.
17062         (exp<mode>2): Rename from expsf2 and expdf2. Macroize expander using
17063         X87MODEF12 mode macro.  Extend operand 1 to XFMode, use expxf2 and
17064         truncate result to requested mode. Use SSE_FLOAT_MODE_P to disable
17065         patterns for SSE math.
17066         (exp10<mode>2): Similarly, with exp10 expanders.
17067         (exp2<mode>2): Similarly, with exp2 expanders.
17068         (expm1<mode>2): Similarly, with expm1 expanders.
17069         (ldexp<mode>3): Similarly, with ldexp expanders.
17070         (log<mode>2, log10<mode>2, log2<mode>2, log1p<mode>2, logb<mode>2):
17071         Use gen_truncxf<mode>2_i387_noop to truncate result.
17072
17073 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
17074
17075         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Define to 32
17076         for ColdFire targets.
17077
17078 2007-01-19  Nathan Sidwell  <nathan@codesourcery.com>
17079             Richard Sandiford  <richard@codesourcery.com>
17080
17081         * config/m68k/m68k.h (M68K_STATIC_CHAIN_REG_NAME): New macro.
17082         (INITIALIZE_TRAMPOLINE): Use STATIC_CHAIN_REGNUM.
17083         (__transfer_from_trampoline): Use M68K_STATIC_CHAIN_REG_NAME.
17084         * config/m68k/m68kelf.h (STATIC_CHAIN_REGNUM): Override.
17085         (M68K_STATIC_CHAIN_REG_NAME): Likewise.
17086         * config/m68k/netbsd-elf.h (M68K_STATIC_CHAIN_REG_NAME): Likewise.
17087
17088 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
17089
17090         * config/m68k/m68k.md (adddi_dilshr32): Rename to...
17091         (*adddi_dilshr32): ...this.  Fix formatting.  Remove commented-out
17092         non-canonical pattern.  Restrict to !TARGET_COLDFIRE.
17093         (*adddi_dilshr32_cf): New pattern.
17094         (adddi3, subdi3): Remove first alternatives.
17095
17096 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
17097
17098         * config/m68k/m68k.c (notice_update_cc): If an SFmode move is
17099         implemented using move.l, do not use its cc result for floating-point
17100         comparisons.
17101
17102 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
17103
17104         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Stop the 'T' constraint
17105         from accepting 's' constraints if flag_pic.
17106
17107 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
17108
17109         * config/m68k/m68k.md (bordered, bunordered, buneq, bunge, bungt)
17110         (bunle, bunlt, bltgt, bordered_rev, bunordered_rev, buneq_rev)
17111         (bunge_rev, bungt_rev, bunle_rev, bunlt_rev, bltgt_rev): Change
17112         condition from TARGET_68881 to TARGET_HARD_FLOAT.
17113
17114 2007-01-19  Sandra Loosemore  <sandra@codesourcery.com>
17115
17116         * longlong.h (count_leading_zeros, COUNT_LEADING_ZEROS_0): Add
17117         ColdFire alternatives.
17118         * config/m68k/m68k.h (CLZ_DEFINED_VALUE_AT_ZERO): New macro.
17119         * config/m68k/m68k.md (clzsi2):  Define for ColdFire
17120         architectures that support ff1 instruction.
17121
17122 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
17123             Julian Brown  <julian@codesourcery.com>
17124
17125         * config/m68k/m68k.h (CONST_OK_FOR_LETTER_P): Add an 'R' case.
17126         * config/m68k/m68k.md (*movsi_cfv4): Fold into...
17127         (*movsi_cf): ...here.  Remove unnecessary 'R' from 'Rg'.
17128         Add commentary.
17129
17130 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
17131
17132         * config/m68k/m68k-protos.h (valid_mov3q_const): Take a HOST_WIDE_INT
17133         and return a bool.
17134         (output_move_const_into_data_reg, output_move_simode_const): Delete.
17135         * config/m68k/m68k.c (const_method, const_int_cost): Take a
17136         HOST_WIDE_INT instead of an rtx.
17137         (m68k_rtx_costs): Update call accordingly.
17138         (output_move_const_into_data_reg): Likewise.  Fix formatting.
17139         (valid_mov3q_const): Take a HOST_WIDE_INT instead of an rtx.
17140         Return a bool.
17141         (output_move_simode_const): Update calls after above changes.
17142         Rework to use automatic variables and predicates like MEM_P.
17143         * config/m68k/m68k.md (pushexthisi_const): Update call to
17144         valid_mov3q_const.
17145
17146 2007-01-19  Dirk Mueller  <dmueller@suse.de>
17147
17148         * tree-ssa-alias.c (perform_var_substitution): Fix typo
17149         in dump_flags test.
17150
17151 2007-01-19  Richard Guenther  <rguenther@suse.de>
17152
17153         * builtins.c (expand_builtin_cexpi): Fall back to expanding
17154         via cexp in case sincos is not available.
17155
17156 2007-01-19  Richard Guenther  <rguenther@suse.de>
17157
17158         * doc/tm.texi (TARGET_HAS_SINCOS): Document new target macro.
17159         * defaults.h (TARGET_HAS_SINCOS): Default to off.
17160         * config/linux.h (TARGET_HAS_SINCOS): Set to on if we have glibc.
17161         * config/alpha/linux.h (TARGET_HAS_SINCOS): Likewise.
17162         * config/sparc/linux.h (TARGET_HAS_SINCOS): Likewise.
17163         * config/sparc/linux64.h (TARGET_HAS_SINCOS): Likewise.
17164         * config/rs6000/linux.h (TARGET_HAS_SINCOS): Likewise.
17165         * config/rs6000/linux64.h (TARGET_HAS_SINCOS): Likewise.
17166
17167 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
17168
17169         * config/i386/i386.md (*fpatanxf3_i387, fpatan_extend<mode>xf3_i387):
17170         New insn patterns.
17171         (atan2sf3_1, atan2df3_1, atan2xf3_1): Remove insn patterns.
17172         (atan2xf3): Directly generate RTL pattern.
17173         (atan2<mode>3): Rename from atan2sf3 and atan2df3 and macroize insn
17174         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
17175         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
17176         disable patterns for SSE math.
17177         (atan<mode>2): Rename from atansf2 and atandf2 and macroize insn
17178         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
17179         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
17180         disable patterns for SSE math.
17181
17182 2007-01-19  Alexandre Oliva  <aoliva@redhat.com>
17183
17184         * libgcc-std.ver: Fix typo in %inherit for GCC_4.3.0.
17185
17186 2007-01-18  Roger Sayle  <roger@eyesopen.com>
17187
17188         * fold-const.c (fold_unary) <VIEW_CONVERT_EXPR>: Optimize away a
17189         VIEW_CONVERT_EXPR to the same type as it's operand.
17190
17191 2007-01-18  David Edelsohn  <edelsohn@gnu.org>
17192
17193         * config/rs6000/darwin-ldouble.c: Only build _SOFT_FLOAT if
17194         configured for long double 128.
17195
17196 2007-01-18  Mike Stump  <mrs@apple.com>
17197
17198         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Fix build
17199         error.
17200
17201 2007-01-18  Michael Meissner  <michael.meissner@amd.com>
17202
17203         * i386.c (ix86_compute_frame_layout): Make fprintf's in #if 0 code
17204         type correct.
17205
17206 2007-01-18  Jan Hubicka  <jh@suse.cz>
17207
17208         * tree-ssa-operands.c (vop_free_bucket_size): Never return value
17209         greater than NUM_VOP_FREE_BUCKETS.
17210
17211 2007-01-18  Daniel Berlin  <dberlin@dberlin.org>
17212
17213         * tree-ssa-structalias.c: Update comments.
17214         (ptabitmap_obstack): Removed.
17215         (pta_obstack): New.
17216         (oldpta_obstack): Ditto.
17217         (stats): Add a few members.
17218         (struct variable_info): Remove node, complex, address_taken, and
17219         indirect_target members. Add oldsolution member.
17220         (new_var_info): Do not initialize removed members.
17221         (constraint_expr_type): Remove INCLUDES.
17222         (constraint_graph): Add size, implicit_preds, rep,
17223         indirect_cycles, eq_rep, label, direct_nodes, and complex members.
17224         (FIRST_REF_NODE): New macro.
17225         (LAST_REF_NODE): Ditto.
17226         (FIRST_ADDR_NODE): Ditto.
17227         (find): New function.
17228         (unite): Ditto.
17229         (dump_constraint): Do not handle INCLUDES.
17230         (insert_into_complex): Do not insert duplicate constraints.
17231         (condense_varmap_nodes): Renamed and rewritten into ...
17232         (merge_node_constraints): This. Also fix bug in handling of
17233         offseted copy constraints.
17234         (clear_edges_for_node): No longer need to deal with preds at all,
17235         or removing associated preds/succs.
17236         (merge_graph_nodes): Deal with indirect_cycles.
17237         Don't deal with predecessors.
17238         (add_implicit_graph_edge): New function.
17239         (add_pred_graph_edge): Ditto.
17240         (add_graph_edge): Don't deal with predecessors.
17241         (build_constraint_graph): Removed.
17242         (build_pred_graph): New function.
17243         (build_succ_graph): Ditto.
17244         (struct scc_info): Removed in_component. Added roots, dfs, and
17245         node_mapping. Remove visited_index, unification_queue.
17246         (scc_visit): Deal with union-find we do now.
17247         Deal with cycles with REF nodes.
17248         (collapse_nodes): Renamed and rewritten to ...
17249         (unify_nodes): This.
17250         (process_unification_queue): Removed.
17251         (topo_visit): Cleanup
17252         (do_da_constraint): Use find.
17253         (do_sd_constraint): Ditto.
17254         (do_ds_constraint): Ditto.
17255         (do_complex_constraint): Ditto.
17256         (init_scc_info): Update for removed and added members.
17257         (find_and_collapse_graph_cycles): Renamed and rewritten into ...
17258         (find_indirect_cycles): This.
17259         (equivalence_class): New variable.
17260         (label_visit): New function.
17261         (perform_variable_substitution): Rewritten.
17262         (free_var_substitution_info): New function.
17263         (find_equivalent_node): Ditto.
17264         (move_complex_constraints): Ditto.
17265         (eliminate_indirect_cycles): Ditto.
17266         (solve_graph): Only propagate changed bits.
17267         Use indirect cycle elimination.
17268         Use find.
17269         (tree_id_t): Rename to tree_vi_t, delete id member, add vi member.
17270         (tree_id_eq): Renamed to ...
17271         (tree_vi_eq): This. Update for member change
17272         (insert_id_for_tree): Renamed and rewritten to ...
17273         (insert_vi_for_tree): This.
17274         (lookup_id_for_tree): Renamed and rewritten to ...
17275         (lookup_vi_for_tree): This.
17276         (get_id_for_tree): Renamed and rewritten to ...
17277         (get_vi_for_tree): Ditto.
17278         (get_constraint_exp_from_ssa_var): Update to use get_vi_for_tree.
17279         (process_constraint): Don't handle INCLUDES.
17280         Remove special ADDRESSOF case.
17281         (find_func_aliases): Rewrite to use vi functions instead of id
17282         ones.
17283         (create_function_info_for): Ditto.
17284         (create_variable_info_for): Ditto.
17285         (intra_create_variable_infos): Ditto.
17286         (merge_smts_into): Ditto.
17287         (find_what_p_points_to): Ditto.
17288         (init_base_vars): Ditto.
17289         (init_alias_vars): Ditto.
17290         (remove_preds_and_fake_succs): New function.
17291         (dump_sa_points_to_info): Dump new stats.
17292         (dump_solution_for_var): Use find.
17293         (set_used_smts): Fix formatting.
17294         (compute_points_to_sets): Updated for new functions.
17295         (ipa_pta_execute): Ditto.
17296
17297 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
17298             Richard Sandiford  <richard@codesourcery.com>
17299
17300         * doc/tm.texi (TARGET_FUNCTION_VALUE): Expand documentation of
17301         parallels.
17302         * calls.c (expand_call): If the return value is a PARALLEL,
17303         extract its first member.
17304         * config/m68k/linux.h (FUNCTION_EXTRA_EPILOGUE): Remove.
17305         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
17306         use FUNCTION_EXTRA_EPILOGUE.
17307         (m68k_function_value): Return a PARALLEL if the return value
17308         is of a pointer type.
17309         * config/m68k/netbsd-elf.h (current_function_returns_pointer)
17310         (FUNCTION_EXTRA_EPILOGUE): Remove.
17311         * config/m68k/m68k.md (D0_REG): New constant.
17312
17313 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
17314
17315         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
17316         output a NOP for empty epilogues.
17317
17318 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
17319
17320         * config/m68k/m68k.c (m68k_use_return_insn): Update comments
17321         before function.  Extend register save check to include all
17322         registers, not just integer ones.
17323
17324 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
17325
17326         * config/m68k/m68k-protos.h (use_return_insn): Rename to...
17327         (m68k_use_return_insn): ...this.
17328         * config/m68k/m68k.h (USE_RETURN_INSN): Delete.
17329         * config/m68k/m68k.c (use_return_insn): Rename to...
17330         (m68k_use_return_insn): ...this.
17331         * config/m68k/m68k.md (return): Use m68k_use_return_insn instead
17332         of USE_RETURN_INSN.
17333
17334 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
17335
17336         * config/m68k/fpgnulib.c (__truncdfsf2): Implement round to
17337         nearest even, fix denormal rounding overflow.
17338
17339 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
17340
17341         * config/m68k/m68k.md (movsf_cf_hard): Use fsmove instead of
17342         f%$smove and f%$move.
17343         (movdf_cf_hard): Use fdmove for cases 0 and 3 and fmove for case 1.
17344         (extendsfdf2_cf): Use fdmove instead of f%&move.
17345         (truncdfsf2_cf): Use fsmove instead of f%$smove.
17346         (add<mode>3_cf, sub<mode>3_cf): Use <FP:prec> instead of <FP:round>.
17347
17348 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
17349
17350         * config/m68k/m68k.md (movdf_cf_hard): Use output_move_double for
17351         GPR<-GPR moves.
17352
17353 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
17354
17355         * real.h (real_format): Add a canonical_nan_lsbs_set field.
17356         (coldfire_single_format): Declare.
17357         (coldfire_double_format): Likewise.
17358         * real.c (encode_ieee_single): Use canonical_nan_lsbs_set instead
17359         of qnan_msb_set to determine the lower bits of a canonical
17360         NaN significand.
17361         (encode_ieee_double): Likewise.
17362         (encode_ieee_quad): Likewise.
17363         (ieee_single_format): Initialize canonical_nan_lsbs_set.
17364         (mips_single_format): Likewise.
17365         (ieee_double_format): Likewise.
17366         (mips_double_format): Likewise.
17367         (ieee_extended_motorola_format): Likewise.
17368         (ieee_extended_intel_96_format): Likewise.
17369         (ieee_extended_intel_128_format): Likewise.
17370         (ieee_extended_intel_96_round_53_format): Likewise.
17371         (ibm_extended_format): Likewise.
17372         (mips_extended_format): Likewise.
17373         (ieee_quad_format): Likewise.
17374         (mips_quad_format): Likewise.
17375         (vax_f_format): Likewise.
17376         (vax_d_format): Likewise.
17377         (vax_g_format): Likewise.
17378         (i370_single_format): Likewise.
17379         (i370_double_format): Likewise.
17380         (decimal_single_format): Likewise.
17381         (decimal_double_format): Likewise.
17382         (decimal_quad_format): Likewise.
17383         (c4x_single_format): Likewise.
17384         (c4x_extended_format): Likewise.
17385         (real_internal_format): Likewise.
17386         (coldfire_single_format): New real_format.
17387         (coldfire_double_format): Likewise.
17388         * config/pdp11/pdp11.c (pdp11_f_format): Initialize
17389         canonical_nan_lsbs_set.
17390         (pdp11_d_format): Likewise.
17391         * config/m68k/m68k.c (override_options): Override REAL_FORMAT_MODE
17392         if TARGET_COLDFIRE_CPU.
17393
17394 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
17395
17396         * config/m68k/m68k-protos.h (m68k_output_pic_call): Delete.
17397         (output_call, m68k_legitimize_call_address): Declare.
17398         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Remove unnecessary
17399         parenthesees.  Add support for a 'W' constraint.
17400         (LEGITIMATE_PIC_OPERAND_P): Remove SYMBOL_REF_FLAG handling.
17401         (PRINT_OPERAND_PUNCT_VALID_P): Remove comment about 'o'.
17402         (m68k_symbolic_call, m68k_symbolic_jump): Declare.
17403         * config/m68k/m68k.c (m68k_symbolic_call, m68k_symbolic_jump): New
17404         variables.
17405         (override_options): Initialize them.  Do not set flag_no_function_cse
17406         for TARGET_ID_SHARED_LIBRARY.
17407         (m68k_output_pic_call): Delete.
17408         (m68k_legitimize_call_address): New function.
17409         (print_operand): Remove the %o prefix.  Handle the %p prefix.
17410         (output_call): New function.
17411         (m68k_output_mi_thunk): Use m68k_symbolic_jump.  Always load the
17412         target address from the GOT if symbolic jumps are not allowed.
17413         * config/m68k/m68k.md (call, general_operand): Do not set
17414         SYMBOL_REF_FLAG.  Use m68k_legitimize_call_address instead.
17415         Merge separate flag_pic and !flag_pic define_insns into...
17416         (*call, *call_value): ...these new patterns.  Match the address
17417         rather than the containing MEM and require it to be a call_operand.
17418         Use output_call to generate the asm template.
17419         * config/m68k/predicates.md (const_call_operand): New predicate.
17420         (call_operand): Likewise.
17421
17422 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
17423
17424         * config/m68k/m68k.h (REGISTER_MOVE_COST): Simplify definition.
17425         (STACK_GROWS_DOWNWARD): Define to 1.
17426         (FUNCTION_VALUE, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P): Equivocate
17427         comments, emphasizing that these values are only defaults.
17428         * config/m68k/linux.h (LINK_SPEC): Fix formatting in #undef.
17429         * config/m68k/m68k.c (const_method): Remove trailing whitespace.
17430
17431 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
17432
17433         * config/m68k/m68k.md (cmpsi): Remove outdated flag_pic handling.
17434
17435 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
17436             Richard Sandiford  <richard@codesourcery.com>
17437
17438         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P)
17439         (FP_REGNO_P): New macros.
17440         (REGNO_OK_FOR_INDEX_P, REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_DATA_P)
17441         (REGNO_OK_FOR_FP_P, REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Use them.
17442         (EH_RETURN_STACKADJ_RTX): Use A0_REG.
17443         * config/m68k/m68k.c (m68k_regno_mode_ok): Use the new REGNO macros.
17444
17445 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
17446
17447         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
17448         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-rtems*): Add t-floatlib
17449         to $tmake_file.
17450         * config/m68k/t-floatlib: New file, extracting common code from...
17451         * config/m68k/t-m68kbare, config/m68k/t-m68kelf,
17452         * config/m68k/t-uclinux: Here.
17453         * config/m68k/fpgnulib.c: Do not compile extendeed precision
17454         routines on ColdFire targets.
17455
17456 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
17457
17458         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
17459         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*)
17460         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-linux*)
17461         (m68k-*-rtems*): Use tm_file rather than m68k/m68k.h and
17462         explicitly set MOTOROLA to 1.
17463         * config/m68k/m68k.h (MOTOROLA): Simplify definition accordingly.
17464
17465 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
17466             Nathan Sidwell  <nathan@codesourcery.com>
17467
17468         * config/m68k/m68k.h (PCC_STATIC_STRUCT_RETURN): Delete.
17469         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Add MOTOROLA cases.
17470         * config/m68k/coff.h (REGISTER_PREFIX_MD): Delete.
17471         * config/m68k/m68020-elf.h (LIB_SPEC): Delete.
17472         * config/m68k/m68k-none.h (CC1_SPEC, CPP_SUBTARGET_SPEC): Delete.
17473         * config/m68k/m68kelf.h (IMMEDIATE_PREFIX, REGISTER_PREFIX_MD)
17474         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Delete.
17475         (NO_DOLLAR_IN_LABEL, PCC_STATIC_STRUCT_RETURN): Don't undefine.
17476         (BSS_ASM_OP, ASM_OUTPUT_SKIP, ASM_OUTPUT_ASCII): Delete.
17477         * config/m68k/m68kemb.h (PCC_STATIC_STRUCT_RETURN): Don't undefine.
17478         * config/m68k/linux.h (SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE)
17479         (WCHAR_TYPE_SIZE, TARGET_OBJFMT_CPP_BUILTINS): Delete.
17480         (TARGET_OS_CPP_BUILTINS): Don't define mc68000 and mc68020 here.
17481         (DBX_REGISTER_NUMBER): Delete.
17482         * config/m68k/netbsd-elf.h (IMMEDIATE_PREFIX): Delete.
17483         (PCC_STATIC_STRUCT_RETURN): Don't undefine.
17484         * config/m68k/openbsd.h (PCC_STATIC_STRUCT_RETURN): Define.
17485
17486 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
17487
17488         * config.gcc (m68k-*-uclinux*): Add flat.h to $tm_file.
17489         * config/flat.h: New file.
17490         * crtstuff.c (USE_PT_GNU_EH_FRAME): Don't define if
17491         OBJECT_FORMAT_FLAT.
17492         * config/m68k/m68k.h (ASM_PREFERRED_EH_DATA_FORMAT): Do not use
17493         indirect references for -msep-data or -mid-shared-library.
17494         Do not use PC-relative code addresses either.
17495         * config/m68k/m68k.c (override_options): Restrict -fPIC error
17496         to -mpcrel.
17497         * config/m68k/uclinux.h (STARTFILE_SPEC): Define.  Use Scrt1.o
17498         for shared libraries and crt1.o for executables.  Use crti.o and
17499         crtbegin.o.
17500         (ENDFILE_SPEC): Use crtend.o and crtn.o.
17501         (LIB_SPEC): Suppress -Rlibc.gdb if -static-libc is given.
17502         Do not add -elf2flt or -shared-lib-id options here.
17503         (LINK_SPEC): Define.  Pass -elf2flt if no -elf2flt option is given.
17504         Pass -shared-lib-id if -mid-shared-library, taking the library
17505         identifier from -mshared-library-id if given, otherwise
17506         defaulting to 0.
17507         (EH_FRAME_IN_DATA_SECTION): Do not undefine.
17508         (INIT_SECTION_ASM_OP, FINI_SECTION_ASM_OP): Likewise.
17509         (TARGET_OS_CPP_BUILTINS): Define __GXX_MERGED_TYPEINFO_NAMES=0
17510         and __GXX_TYPEINFO_EQUALITY_INLINE=0 if -mid-shared-library.
17511         (DRIVER_SELF_SPECS): Map unadorned PIC options to -msep-data.
17512         * config/m68k/t-uclinux (EXTRA_MULTILIB_PARTS): Add crtbegin.o
17513         and crtend.o.
17514         * config/m68k/lb1sf68.asm (PICCALL): Use an lea and pc-relative
17515         jump sequence for ISA A and ISA A+.
17516         (PICJUMP): Likewise.
17517
17518 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
17519
17520         * config.gcc (m68k-*-uclinux*): Base the port on the common
17521         and m68k GNU/Linux files rather than on the generic ELF ones.
17522         * config/m68k/uclinux.h (TARGET_VERSION): Override.
17523         (TARGET_OS_CPP_BUILTINS): Use LINUX_TARGET_OS_CPP_BUILTINS.
17524
17525 2007-01-18  Julian Brown  <julian@codesourcery.com>
17526             Richard Sandiford  <richard@codesourcery.com>
17527
17528         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Make 64-bit on ColdFire.
17529         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
17530         * config/m68k/netbsd-elf.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Undefine
17531         before redefining.
17532         * config/m68k/uclinux-oldabi.h (LONG_DOUBLE_TYPE_SIZE): Redefine to
17533         80 unconditionally.
17534         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
17535
17536 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
17537
17538         * doc/install.texi: Document m68k-uclinuxoldabi.
17539         * config.gcc (m68k-*-uclinuxoldabi): New configuration.
17540         * config/m68k/uclinux-oldabi.h: New file, copied from
17541         config/m68k/uclinux.h.
17542
17543 2007-01-18  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
17544
17545         * config/m32r/m32r-protos.h (m32r_expand_epilogue): Declare it.
17546         * config/m32r/m32r.c (m32r_setup_incoming_varargs): Use gen_frame_mem.
17547         (m32r_compute_frame_size): Use unsigned for regno.
17548         (m32r_reload_lr): Use gen_frame_mem.
17549         (pop): New.
17550         (m32r_output_function_epilogue): Don't output the function epilogue
17551         textually here.
17552         (m32r_expand_epilogue): New.
17553         (direct_return): Return false if the function has the interrupt
17554         attribute.
17555         (m32r_hard_regno_rename_ok): Remove code for the textual epilogue.
17556         * config/m32r/m32r.md (epilogue): New expander.
17557         (return_lr, return_rte): New insns.
17558         (return): Make it expander.
17559         (return_normal): New expander.
17560
17561 2007-01-18  Josh Conner  <jconner@apple.com>
17562
17563         PR target/30485
17564         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Add
17565         support for UNLE, UNLT, UNGE, and UNGT.
17566
17567 2007-01-18  Jan Hubicka  <jh@suse.cz>
17568
17569         * tree-vrp.c (finalize_jump_threads): Do not call cleanup_cfg by hand.
17570         * tree-tailcall (add_virtual_phis): Likewise.
17571         (optimize_tail_call): Return TODOs.
17572         (execute_tail_calls): Return TODOs.
17573         * tree-ssa-ccp (execute_fold_all_builtins): Do cleanup_cfg via TODO.
17574         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Return if something
17575         changed.
17576         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
17577         Cleanup cfg using TODO.
17578         * tree-flow.h (cleanup_tree_cfg_loop): Update prototype.
17579         * passes.c (execute_function_todo): When cleanup did something, remove
17580         unused locals.
17581         * tree-cfg.c (pass_build_cfg): Add cleanup_cfg TODO.
17582         (make_edges): Don't cleanup_cfg.
17583
17584 2007-01-18  Uros Bizjak  <ubizjak@gmail.com>
17585
17586         * reg-stack.c (subst_stack_regs_pat) [UNSPEC_SINCOS_COS,
17587         UNSPEC_XTRACT_FRACT]: Use generic code for instructions that
17588         operate on the top of stack.
17589         [UNSPEC_SINCOS_SIN, UNSPEC_XTRACT_EXP, UNSPEC_TAN]: Rewrite
17590         register handling of instructions that output to the second
17591         stack slot.
17592         [UNSPEC_TAN_ONE, UNSPEC_TAN_TAN]: Remove.
17593         (move_for_stack_reg): Special-case check for dead destination
17594         stack slot for constant load of 1.0 inside UNSPEC_TAN.
17595
17596         * config/i386/i386.md (UNSPEC_TAN): New constant.
17597         (UNSPEC_TAN_ONE, UNSPEC_TAN_TAN): Remove.
17598         (fptanxf4_i387, fptan_extend<mode>xf4_i387): New patterns
17599         to correctly model move of constant 1.0 to top stack slot.
17600         (*tandf3_1, *tansf3_1, *tanxf3_1): Remove insn patterns.
17601         (unnamed peephole2 pattern): Remove corresponding peephole2
17602         pattern that optimizes tan insn and loading of constant 1.0.
17603         (tanxf2): Use fptanxf4_i387.
17604         (tan<mode>2): Rename from tansf2 and tandf2 and macroize insn
17605         patterns using X87MODEF12 mode macro.  Use fptan_extend<mode>xf4_i387
17606         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
17607         disable patterns for SSE math.
17608         (sincos<mode>3): Use truncxf<mode>2_i387_noop for truncation.
17609         (fyl2x_extend<mode>xf3_i387): Use X87MODEF12 for operand 1.
17610
17611 2007-01-18  Dirk Mueller  <dmueller@suse.de>
17612             Richard Guenther <rguenther@suse.de>
17613
17614         PR diagnostic/8268
17615         * doc/invoke.texi (Warray-bounds): Document -Warray-bounds.
17616         * common.opt (Warray-bounds): Add new warning option.
17617         * c-opts.c (c_common_handle_option): Define -Warray-bounds
17618         if -Wall is given.
17619         * Makefile.in: make tree-vrp.o depend on toplev.h
17620         * tree-vrp.c (vrp_finalize): Call check_array_refs if -Warray-bounds
17621         is enabled.
17622         (check_array_refs, check_array_bounds, check_array_ref): New.
17623
17624 2007-01-18  Jan Hubicka  <jh@suse.cz>
17625
17626         * tree-ssa-ccp.c (ccp_finalize): Return if something changed.
17627         (execute_ssa_ccp): Return flags conditionally.
17628         * tree-ssa-propagate.c (substitue_and_fold): Return if something was
17629         changed.
17630         * tree-ssa-propagate.h (substitute_and_fold): Update prototype.
17631
17632 2007-01-18  Steven Bosscher  <steven@gcc.gnu.org>
17633
17634         * cfgcleanup.c (cleanup_cfg): Detect cfglayout mode and set
17635         the CLEANUP_CFGLAYOUT flag when in cfglayout mode.
17636
17637         * Makefile.c (GTFILES): Add cfglayout.h.
17638         * gengtype.c (open_base_files): Likewise.
17639         * cfglayout.c (cfg_layout_function_footer,
17640         cfg_layout_function_header) Reindent to make gengtype happy.
17641         * cfglayout.h (cfg_layout_function_footer,
17642         cfg_layout_function_header): Add GTY(()) marker.
17643
17644         * ifcvt.c (noce_try_sign_mask): Make sure INSN_B is non-null.
17645
17646 2007-01-18  Ben Elliston  <bje@au.ibm.com>
17647
17648         * genautomata.c (write_automata): Include xstrerror output in the
17649         error message if writing the DFA description file fails.
17650
17651 2007-01-17  H.J. Lu  <hongjiu.lu@intel.com>
17652
17653         * config/mips/mips-protos.h (mips_output_external): Make it
17654         return void.
17655         * config/mips/iris.h (TARGET_ASM_EXTERNAL_LIBCALL): Removed.
17656         * config/mips/mips.c (irix_output_external_libcall): Likewise.
17657         (extern_list): Likewise.
17658         (extern_head): Likewise.
17659         (TARGET_ASM_FILE_END): Likewise.
17660         (mips_file_end): Likewise.
17661         (mips_output_external): Rewritten.
17662
17663 2007-01-18  Ben Elliston  <bje@au.ibm.com>
17664
17665         * genpreds.c (write_insn_preds_c): Only write out the function
17666         body for regclass_for_constraint if we have register constraints.
17667
17668 2007-01-17  Tom Tromey  <tromey@redhat.com>
17669
17670         * doc/sourcebuild.texi (libgcj Tests): Use sourceware.org.
17671         * doc/install.texi (Testing): Use sourceware.org.
17672         (Binaries): Likewise.
17673         (Specific): Likewise.
17674         * doc/contrib.texi (Contributors): Use sourceware.org.
17675
17676 2007-01-17  Anatoly Sokolov <aesok@post.ru>
17677
17678         * config/avr/avr.h (AVR_HAVE_LPMX): New macro.
17679         (AVR_ENHANCED): Rename to ...
17680         (AVR_HAVE_MUL): ... new.
17681         (avr_enhanced_p): Rename to ...
17682         (avr_have_mul_p): ... new.
17683         (TARGET_CPU_CPP_BUILTINS): Use 'avr_have_mul_p' instead of
17684         'avr_enhanced_p' for "__AVR_ENHANCED__". Define "__AVR_HAVE_MUL__".
17685         * config/avr/avr.c (avr_enhanced_p): Rename to ...
17686         (avr_have_mul_p): ... new.
17687         (base_arch_s): Rename 'enhanced' to 'have_mul'.
17688         (avr_override_options): Use 'avr_have_mul_p' and 'have_mul' instead of
17689         'avr_enhanced_p' and 'enhanced'.
17690         (ashlhi3_out, ashrhi3_out, lshrhi3_out, avr_rtx_costs): Use
17691         AVR_HAVE_MUL instead of AVR_ENHANCED.
17692         * avr.md (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
17693         (mulqi3, *mulqi3_enh, *mulqi3_call, mulqihi3, umulqihi3, mulhi3,
17694         *mulhi3_enh, *mulhi3_call, mulsi3, *mulsi3_call): Use AVR_HAVE_MUL
17695         instead of AVR_ENHANCED.
17696         (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
17697         * libgcc.S: Use __AVR_HAVE_MUL__ instead of __AVR_ENHANCED__.
17698         (__tablejump__): Use __AVR_HAVE_LPMX__ instead of __AVR_ENHANCED__.
17699
17700 2007-01-17  Ian Lance Taylor  <iant@google.com>
17701
17702         * vec.h (VEC_reserve_exact): Define.
17703         (vec_gc_p_reserve_exact): Declare.
17704         (vec_gc_o_reserve_exact): Declare.
17705         (vec_heap_p_reserve_exact): Declare.
17706         (vec_heap_o_reserve_exact): Declare.
17707         (VEC_OP (T,A,reserve_exact)): New static inline function, three
17708         versions.
17709         (VEC_OP (T,A,reserve)) [all versions]: Remove handling of
17710         negative parameter.
17711         (VEC_OP (T,A,alloc)) [all versions]: Call ...reserve_exact.
17712         (VEC_OP (T,A,copy)) [all versions]: Likewise.
17713         (VEC_OP (T,a,safe_grow)) [all versions]: Likewise.
17714         * vec.c (calculate_allocation): Add exact parameter.  Change all
17715         callers.
17716         (vec_gc_o_reserve_1): New static function, from vec_gc_o_reserve.
17717         (vec_gc_p_reserve, vec_gc_o_reserve): Call vec_gc_o_reserve_1.
17718         (vec_gc_p_reserve_exact, vec_gc_o_reserve_exact): New functions.
17719         (vec_heap_o_reserve_1): New static function, from vec_heap_o_reserve.
17720         (vec_heap_p_reserve, vec_heap_o_reserve): Call vec_heap_o_reserve_1.
17721         (vec_heap_p_reserve_exact): New function.
17722         (vec_heap_o_reserve_exact): New function.
17723
17724 2007-01-17  Jan Hubicka  <jh@suse.cz>
17725
17726         * ipa-type-escape.c (look_for_casts): Revamp using handled_component_p.
17727
17728 2007-01-17  Eric Christopher  <echristo@apple.com>
17729
17730         * config.gcc: Support core2 processor.
17731
17732 2007-01-16  Jan Hubicka  <jh@suse.cz>
17733
17734         * tree-ssanames.c (release_dead_ssa_names): Instead of ggc_freeing
17735         the names, just unlink the chain so we don't crash on dangling
17736         pointers
17737         to dead SSA names.
17738
17739 2007-01-16  Jan Hubicka  <jh@suse.cz>
17740
17741         * cgraph.h (cgraph_decide_inlining_incrementally): Kill.
17742         * tree-pass.h: Reorder to make IPA passes appear toegher.
17743         (pass_early_inline, pass_inline_parameters, pass_apply_inline):
17744         Declare.
17745         * cgraphunit.c (cgraph_finalize_function): Do not compute inling
17746         parameters, do not call early inliner.
17747         * ipa-inline.c: Update comments.  Include tree-flow.h
17748         (cgraph_decide_inlining): Do not compute inlining parameters.
17749         (cgraph_decide_inlining_incrementally): Return TODOs; assume to
17750         be called with function context set up.
17751         (pass_ipa_inline): Remove unreachable functions before pass.
17752         (cgraph_early_inlining): Simplify assuming to be called from the
17753         PM as local pass.
17754         (pass_early_inline): New pass.
17755         (cgraph_gate_ipa_early_inlining): New gate.
17756         (pass_ipa_early_inline): Turn into simple wrapper.
17757         (compute_inline_parameters): New function.
17758         (gate_inline_passes): New gate.
17759         (pass_inline_parameters): New pass.
17760         (apply_inline): Move here from tree-optimize.c
17761         (pass_apply_inline): New pass.
17762         * ipa.c (cgraph_remove_unreachable_nodes): Verify cgraph after
17763         transforming.
17764         * tree-inline.c (optimize_inline_calls): Return TODOs rather than
17765         doing them by hand.
17766         (tree_function_versioning): Do not allocate dummy struct function.
17767         * tree-inline.h (optimize_inline_calls): Update prototype.
17768         * tree-optimize.c (execute_fixup_cfg): Export.
17769         (pass_fixup_cfg): Remove
17770         (tree_rest_of_compilation): Do not apply inlines.
17771         * tree-flow.h (execute_fixup_cfg): Declare.
17772         * Makefile.in (gt-passes.c): New.
17773         * passes.c: Include gt-passes.h
17774         (init_optimization_passes): New passes.
17775         (nnodes, order): New static vars.
17776         (do_per_function_toporder): New function.
17777         (execute_one_pass): Dump current pass here.
17778         (execute_ipa_pass_list): Don't dump current pass here.
17779
17780 2007-01-16  Janis Johnson  <janis187@us.ibm.com>
17781
17782         * config/dfp-bit.c (dfp_compare_op): Return separate value for NaN.
17783         (DFP_NE, DFP_LE, DFP_GE): Return false for NaN.
17784
17785 2007-01-16  David Edelsohn  <edelsohn@gnu.org>
17786
17787         * config/rs6000/darwin-ldouble.c: Build file for SOFT_FLOAT.
17788         (strong_alias): Define.
17789         (__gcc_qmul): Provide non-FMA for soft-float.
17790         (__gcc_qdiv): Same.
17791         (__gcc_qneg): New.
17792         (__gcc_qeq): New.
17793         (__gcc_qle): New.
17794         (__gcc_qge): New.
17795         (__gcc_qunord): New.
17796         (__gcc_stoq): New.
17797         (__gcc_dtoq): New.
17798         (__gcc_qtos): New.
17799         (__gcc_qtod): New.
17800         (__gcc_qtoi): New.
17801         (__gcc_qtou): New.
17802         (__gcc_itoq): New.
17803         (__gcc_utoq): New.
17804         (fmsub): New.
17805         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Initialize
17806         soft-float functions.
17807         * config/rs6000/libgcc-ppc-glibc.ver: Version soft-float symbols.
17808         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Do not warn
17809         about long double soft float.
17810
17811 2007-01-16  Dorit Nuzman  <dorit@il.ibm.com>
17812             Tehila Meyzels  <tehila@il.ibm.com>
17813
17814         * tree-vectorizer.h (is_pattern_stmt_p): New.
17815         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fix
17816         formatting (tabs instead of spaces). Cleanup and clarify setting
17817         of STMT_VINFO_VECTYPE. Call is_pattern_stmt_p.
17818         * tree-vect-transform.c (vect_get_vec_def_for_operand): Fix typo.
17819         (vectorizable_type_demotion): Check that types are integral.
17820         (vectorizable_type_promotion): Likewise.
17821         (vectorizable_store): Fix typo.  Eliminate new-line at end of
17822         comments.
17823
17824 2007-01-16  Jan Hubicka  <jh@suse.cz>
17825
17826         * tree-ssanames.c (release_dead_ssa_names): Remove invalidated
17827         cgraph edges too.
17828
17829 2007-01-15  Eric Christopher  <echristo@apple.com>
17830
17831         * ifcvt.c: Include vec.h, vecprim.h.
17832         (check_cond_move_block): New argument regs.
17833         Reorganize. Add registers used to regs.
17834         (cond_move_process_if_block): Use regs set above as
17835         loop bounds.
17836
17837 2007-01-15  Eric Christopher  <echristo@apple.com>
17838
17839         * config/darwin.h: Update copyright.
17840         (TARGET_OPTION_TRANSLATE_TABLE): Add umbrella.
17841         (LINK_COMMAND_SPEC): Add -u.
17842         (LINK_SPEC): Fix umbrella for above.
17843
17844 2007-01-15  Joseph S. Myers  <joseph@codesourcery.com>
17845
17846         * config/soft-fp/op-common.h, config/soft-fp/op-4.h: Update from
17847         glibc CVS.
17848
17849 2007-01-15  Tom Tromey  <tromey@redhat.com>
17850
17851         * doc/sourcebuild.texi (libgcj Tests): Don't mention jacks.
17852         * doc/install.texi (Testing): Don't mention jacks.
17853         (Configuration): Document --enable-java-maintainer-mode.  Move
17854         --with-java-home to libgcj-specific section.  Document
17855         --with-ecj-jar.
17856         (Prerequisites): Mention --enable-java-maintainer-mode, ecj1.
17857
17858 2007-01-15  Jan Hubicka  <jh@suse.cz>
17859
17860         * tree-ssa-dce.c (DCE_TODOs): New.
17861         (propagate_necessity): Return if something changed.
17862         (eliminate_unnecessary_stmts): Likewise.
17863         (perform_tree_ssa_dce): Return TODO flags when needed.
17864         (pass_dce, pass_dce_loop, pass_cd_dce): Remove TODO flags.
17865
17866 2007-01-15  Uros Bizjak  <ubizjak@gmail.com>
17867
17868         * config/i386/i386.md (fyl2xxf3_i387): Rename from fyl2x_xf3.
17869         (fyl2x_extend<mode>xf3_i387): New insn pattern.
17870         (log<mode>2): Rename from logsf2 and logdf2 and macroize insn
17871         patterns using X87MODEF12 mode macro.  Extend operand 1
17872         to XFmode. Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
17873         (log10<mode>2): Ditto.
17874         (log2<mode>2): Ditto.
17875         (log1p<mode>2): Ditto.
17876         (logb<mode>2): Ditto.
17877         (fyl2xp1xf3_i387): Rename from fyl2xp1_xf3.
17878         (fyl2xp1_extend<mode>xf3_i387): New insn pattern.
17879         (*fxtractxf3_i387): Rename from *fxtractxf3.
17880         (fxtract_extend<mode>xf3_i387): New insn pattern.
17881         (ilogbsi2): Use match_dup 3, not match_operand:XF 3.
17882         * config/i386/i386.c (ix86_emit_i387_log1p): Use gen_fyl2xp1xf3_i387()
17883         and gen_fyl2xxf3_i387().
17884
17885 2007-01-14  Zdenek Dvorak <dvorakz@suse.cz>
17886
17887         * loop-unswitch.c (unswitch_loop): Do not call fix_loop_placement.
17888         * cfgloopmanip.c (fix_loop_placement): Made static.  Use
17889         get_loop_exit_edges.  Changed return type to bool.
17890         * cfgloop.h (fix_loop_placement): Declaration removed.
17891
17892 2007-01-14  Dorit Nuzman  <dorit@il.ibm.com>
17893
17894         * param.h (MIN_VECT_LOOP_BOUND): New.
17895         * params.def (MIN_VECT_LOOP_BOUND): New.
17896         * tree-vectorizer.c (slpeel_tree_peel_loop_to_edge): Takes another
17897         argument - minimum threshold for number of iterations.
17898         * tree-vectorizer.h (slpeel_tree_peel_loop_to_edge): Add another
17899         argument to declaration.
17900         * tree-vect-analyze.c (vect_analyze_operations): Check value of
17901         MIN_VECT_LOOP_BOUND.
17902         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Call
17903         slpeel_tree_peel_loop_to_edge with additional argument.
17904         (vect_do_peeling_for_alignment): Likewise.
17905         * doc/invoke.texi (min-vect-loop-bound): Document new param option.
17906
17907 2007-01-14  Uros Bizjak  <ubizjak@gmail.com>
17908
17909         PR target/30413
17910         * config/i386/i386.c (print_operand) ['z']: Output 'b' for
17911         operands of size 1.
17912
17913 2007-01-14  Jan Hubicka  <jh@suse.cz>
17914
17915         * tree-dfa.c (remove_referenced_var): New function.
17916         * tree-ssa-live.c (remove_unused_locals): Walk referenced vars and
17917         prune referenced vars list too.
17918         * tree-flow.h (remove_referenced_var): Declare.
17919
17920 2007-01-14  Jan Hubicka  <jh@suse.cz>
17921
17922         * tree-eh.c (add_stmt_to_eh_region_fn): Do not add call_exprs
17923         separately.
17924         (remove_stmt_from_eh_region_fn): Do not remove call_exprs.
17925         (verify_eh_throw_stmt_node, verify_eh_throw_table_statements): Kill.
17926         * except.h (verify_eh_throw_table_statements): Kill prototype.
17927         * cfgexpand.c (expand_gimple_basic_block): Propagate Eh regions
17928         into call exrepssions.
17929         * tree-optimize.c (execute_free_cfg_annotatiosn): Do not call
17930         eh trhow verifier.
17931         * tree-cfg.c: Include pointer-set.h.
17932         (verify_node_sharing): Work on pointer set.
17933         (verify_eh_throw_stmt_node): New.
17934         (verify_stmts): Use pointers sets, verify throw_stmt.
17935
17936 2007-01-13  Zdenek Dvorak <dvorakz@suse.cz>
17937
17938         * ipa-reference.c (analyze_function): Consider also addresses taken
17939         in phi nodes.
17940
17941 2007-01-12  Roger Sayle  <roger@eyesopen.com>
17942
17943         * c-typeck.c (null_pointer_constant_p): Replace use of
17944         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
17945         (build_c_cast): Likewise.
17946
17947 2007-01-12  Roger Sayle  <roger@eyesopen.com>
17948
17949         * tree.h (force_fit_type_double): Remove unused final argument.
17950         * c-common.c (constant_expression_warning): Replace use of
17951         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
17952         (convert_and_check): Likewise.
17953         (shorten_compare): Update call to force_fit_type_double.
17954         (c_common_truthvalue_conversion) <INTEGER_CST>: Use integer_zerop.
17955         * convert.c (convert_to_pointer): Update call to
17956         force_fit_type_double.
17957         * fold-const.c (force_fit_type_double): Remove overflowed_const
17958         argument.
17959         (int_const_binop, fold_convert_const_int_from_int,
17960         fold_convert_const_int_from_real, fold_div_compare,
17961         fold_sign_changed_comparison, fold_unary, fold_negate_const,
17962         fold_abs_const, fold_not_const): Remove the final argument from
17963         calls to force_fit_type_double.
17964
17965 2007-01-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
17966
17967         * configure.ac: Set insn to "nop" for spu-*-* also.
17968         * configure: Regenerate.
17969
17970 2007-01-12  Olga Golovanevsky  <olga@il.ibm.com>
17971
17972         * builtins.def : Add BUILT_IN_FREE.
17973
17974 2007-01-12  Jan Hubicka  <jh@suse.cz>
17975
17976         PR tree-optimization/30443
17977         * tree-inline.c (tree_function_versioning): Do not optimize when
17978         cloning for inlining.
17979
17980 2007-01-12  Zdenek Dvorak <dvorakz@suse.cz>
17981
17982         * doc/loop.texi: Document recording of loop exits.
17983         * cfgloopmanip.c (loopify, duplicate_loop): Use alloc_loop.
17984         (update_single_exits_after_duplication,
17985         update_single_exit_for_duplicated_loop,
17986         update_single_exit_for_duplicated_loops): Removed.
17987         (duplicate_loop_to_header_edge): Do not call
17988         update_single_exits_after_duplication and
17989         update_single_exit_for_duplicated_loops.
17990         (loop_version): Do not update single_exit information.
17991         (fix_loop_structure): Use record_loop_exits instead of
17992         mark_single_exit_loops.
17993         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update
17994         the lists of loop exits.
17995         * cfghooks.c (redirect_edge_and_branch, redirect_edge_and_branch_force,
17996         split_edge, merge_blocks): Update the lists of loop exits.
17997         * modulo-sched.c (sms_schedule): Pass LOOPS_HAVE_RECORDED_EXITS to
17998         loop_optimizer_init.
17999         * loop-init.c (loop_optimizer_init): Call record_loop_exits instead
18000         of mark_single_exit_loops.
18001         (loop_optimizer_finalize): Call release_recorded_exits.
18002         * tree-ssa-loop.c (tree_loop_optimizer_init): Pass
18003         LOOPS_HAVE_RECORDED_EXITS to loop_optimizer_init.
18004         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg): Do not
18005         update single exit information.
18006         * lambda-code.c (perfect_nestify): Ditto.
18007         * cfgloop.c (flow_loop_free): Destroy the list of exits of the loop.
18008         (mark_single_exit_loops): Removed.
18009         (alloc_loop, loop_exit_hash, loop_exit_eq, loop_exit_free,
18010         get_exit_descriptions, rescan_loop_exit, record_loop_exits,
18011         dump_recorded_exit, dump_recorded_exits, release_recorded_exits): New
18012         functions.
18013         (get_loop_exit_edges, single_exit): Use recorded exit lists.
18014         (add_bb_to_loop, remove_bb_from_loops): Update the lists of loop exits.
18015         (verify_loop_structure): Verify consistency of the exit lists.
18016         (flow_loops_find): Use alloc_loop.  Initialize exits hash.
18017         (set_single_exit): Removed.
18018         * cfgloop.h (struct loop_exit): New function.
18019         (struct loop): single_exit_ field replaced by exits field.
18020         (LOOPS_HAVE_MARKED_SINGLE_EXITS): Replaced by
18021         LOOPS_HAVE_RECORDED_EXITS.
18022         (struct loops): Added exits hash.
18023         (mark_single_exit_loops, set_single_exit): Declaration removed.
18024         (release_recorded_exits, record_loop_exits, rescan_loop_exit): Declare.
18025
18026 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
18027
18028         * doc/invoke.texi: Avoid use of @headitem.
18029
18030 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
18031
18032         * cse.c (cse_insn): Move HAVE_CC0 code after declarations.
18033
18034 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
18035
18036         * doc/install.texi: Fix m68k-*-* anchor and add m68k-*-* to the
18037         list of targets.
18038
18039 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
18040             Richard Sandiford  <richard@codesourcery.com>
18041
18042         * doc/invoke.texi: Document -mno-bitfield, -mno-rtd and -mno-short.
18043         * config/m68k/m68k.opt: Resort options.
18044         (mbitfield, mrtd, mshort): Remove RejectNegative properties.
18045
18046 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
18047             Richard Sandiford  <richard@codesourcery.com>
18048
18049         * doc/invoke.texi: Document the macros that are defined by
18050         m68k's -mtune and -mhard-float options.
18051         * config/m68k/m68k-protos.h (m68k_cpp_cpu_ident) Declare.
18052         (m68k_cpp_cpu_family): Likewise.
18053         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Add a full set
18054         of __ucfv*__ macros.  Define __mcffpu__ if generating code for
18055         ColdFire FPUs.  Define __mcf_cpu_* and __mcf_family_* macros.
18056         * config/m68k/m68k.c (m68k_cpp_cpu_ident): New function.
18057         (m68k_cpp_cpu_family): Likewise.
18058
18059 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
18060
18061         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Treat all mc68*
18062         macros besides mc68000 as tuning macros.  Use a switch statement
18063         to set them and mcpu32.
18064
18065 2007-01-12  Julian Brown  <julian@codesourcery.com>
18066
18067         * config/m68k/m68k.h: Use TARGET_68040 instead of TARGET_68040_ONLY.
18068         (TARGET_68040_ONLY): Rename to...
18069         (TARGET_68040): ...this.
18070         * config/m68k/m68k.c: Use TARGET_68040 instead of TARGET_68040_ONLY.
18071         * config/m68k/m68k.md: Likewise.
18072
18073 2007-01-12  Julian Brown  <julian@codesourcery.com>
18074             Nathan Sidwell  <nathan@codesourcery.com>
18075             Richard Sandiford  <richard@codesourcery.com>
18076
18077         * config.gcc (m680[012]0-*-*, m68k*-*-*): Set m68k_cpu_ident to
18078         the -mcpu= argument associated with the --with-cpu setting.
18079         Define M68K_DEFAULT_TUNE to the default -mtune= option,
18080         if different from the one implied by the -mcpu setting.
18081         Accept --with-cpu=FOO if FOO is listed in m68k-devices.def,
18082         using mcpu=FOO as the default CPU option.  Set target_cpu_default2.
18083         * doc/invoke.texi: Mention ColdFire in the introduction to the
18084         m68k options.  Document the new -march, -mcpu, -mtune, -mdiv,
18085         -mno-div and -mhard-float options.  Make -m68881 a synonym for
18086         -mhard-float.  Document the previously-undocumented -m5206e,
18087         -m528x, -m5307 and -m5407 options.  Tweak the existing option
18088         documentation for consistency.
18089         * doc/install.texi: Mention new --with-cpu arguments.
18090         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Only use the
18091         default CPU if neither -mcpu nor -march are specified.
18092         (ASM_CPU_SPEC): Pass down -mcpu and -march options.
18093         (TARGET_CPU_CPP_BUILTINS): Set __mcfisa*__ macros from
18094         TARGET_ISA*.  Set the legacy __mcf*__ cpu macros in the same way,
18095         using m68k_tune to decide between families that implement the
18096         same ISA.  Use m68k_tune to set __mcfv4e__.
18097         (FL_BITFIELD, FL_68881, FL_COLDFIRE, FL_CF_HWDIV, FL_CF_MAC)
18098         (FL_CF_EMAC, FL_CF_EMAC_B, FL_CF_USP, FL_CF_FPU, FL_ISA_68000)
18099         (FL_ISA_68010, FL_ISA_68020, FL_ISA_68040, FL_ISA_A, FL_ISA_B)
18100         (FL_ISA_C, FL_ISA_MMU): New macros.
18101         (MASK_COLDFIRE): Delete.
18102         (TARGET_68010, TARGET_68020, TARGET_68040_ONLY, TARGET_COLDFIRE)
18103         (TARGET_ISAB): Redefine in terms of m68k_cpu_flags.
18104         (TARGET_68881, TARGET_COLDFIRE_FPU): Redefine in terms of m68k_fpu.
18105         (TARGET_HARD_FLOAT): Do not define here.
18106         (TARGET_ISAAPLUS, TARGET_ISAC): New macros.
18107         (TUNE_68000): New macro.
18108         (TUNE_68000_10): Redefine in terms of TUNE_68000 and TUNE_68010.
18109         (TUNE_68010, TUNE_68030, TUNE_68040, TUNE_68060, TUNE_CPU32)
18110         (TUNE_CFV2): Redefine in terms of m68k_tune.
18111         (uarch_type, target_device, fpu_type): New enums.
18112         (m68k_cpu, m68k_tune, m68k_fpu, m68k_cpu_flags): Declare.
18113         * config/m68k/m68k.c (TARGET_DEFAULT): Remove MASK_68881.
18114         (FL_FOR_isa_00, FL_FOR_isa_10, FL_FOR_isa_20, FL_FOR_isa_40)
18115         (FL_FOR_isa_cpu32, FL_FOR_isa_a, FL_FOR_isa_aplus, FL_FOR_isa_b)
18116         (FL_FOR_isa_c): New macros.
18117         (m68k_isa): New enum.
18118         (m68k_target_selection): New structure.
18119         (all_devices, all_isas, all_microarchs): New tables.
18120         (m68k_cpu_entry, m68k_arch_entry, m68k_tune_entry, m68k_cpu)
18121         (m68k_tune, m68k_fpu, m68k_cpu_flags): New variables.
18122         (MASK_ALL_CPU_BITS): Delete.
18123         (m68k_find_selection): New function.
18124         (m68k_handle_option): Handle -mcpu=, -march= and -mtune=.
18125         Map the legacy target options to a combination of the new ones.
18126         (override_options): Set m68k_cpu, m68k_tune, m68k_fpu and
18127         m68k_cpu_flags.  Handle M68K_DEFAULT_TUNE.  Use m68k_cpu_flags
18128         to derive default MASK_BITFIELD, MASK_CF_HWDIV and MASK_HARD_FLOAT
18129         settings.
18130         * config/m68k/m68k.opt (m5200, m5206e, m528x, m5307, m5407, mcfv4e)
18131         (m68010, m68020, m68020-40, m68020-60, m68030, m68040): Remove Mask
18132         properties.
18133         (m68881, msoft-float): Change mask from 68881 to HARD_FLOAT.
18134         (march=, mcpu=, mdiv, mhard-float, mtune=): New options.
18135         * config/m68k/m68k-devices.def: New file.
18136
18137 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
18138             Nathan Sidwell  <nathan@codesourcery.com>
18139
18140         * config/m68k/m68k.h (ASM_CPU_SPEC, ASM_SPEC, EXTRA_SPECS)
18141         (SUBTARGET_EXTRA_SPECS): New macros.
18142         * config/m68k/linux.h (ASM_SPEC): Remove CPU flags;
18143         use %(asm_cpu_spec) instead.
18144         * config/m68k/m68k-none.h (ASM_SPEC): Likewise.
18145         * config/m68k/openbsd.h (ASM_SPEC): Likewise.
18146         * config/m68k/netbsd-elf.h (ASM_SPEC): Likewise.
18147         (EXTRA_SPECS): Rename to...
18148         (SUBTARGET_EXTRA_SPECS): ...this.
18149
18150 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
18151             Richard Sandiford  <richard@codesourcery.com>
18152             Julian Brown  <julian@codesourcery.com>
18153
18154         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
18155         (m68k-*-uclinux*, m68k-*-linux*, m68k-*-rtems*): Set default_m68k_cpu
18156         to the configuration's default CPU.
18157         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*): Likewise.
18158         Remove default masks.
18159         (m680[012]0-*-*): Set the default with_cpu to the first part of
18160         the target name.
18161         (m68k*-*-*): Set the default with_cpu to m$default_m68k_cpu.
18162         (m68k*-*-linux): Extend the --with-cpu handling to...
18163         (m680[012]0-*-*, m68k*-*-*): ...these configurations.  Allow m68000
18164         and m68010.  Don't set target_cpu_default2.
18165         * doc/install.texi: Document --with-cpu for m68k.
18166         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Define.
18167         * config/m68k/m68k-none.h (TARGET_CPU_DEFAULT, M68K_CPU_m68k)
18168         (M68K_CPU_m68000, M68K_CPU_m68010, M68K_CPU_m68020, M68K_CPU_m68030)
18169         (M68K_CPU_m68040, M68K_CPU_m68302, M68K_CPU_m68332, TARGET_DEFAULT)
18170         (ASM_CPU_DEFAULT_SPEC, CC1_CPU_DEFAULT_SPEC): Delete.
18171         (ASM_SPEC): Remove use of %(asm_cpu_default).
18172         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS, MULTILIB_DEFAULTS): Delete.
18173         * config/m68k/linux.h (TARGET_DEFAULT): Delete.
18174         (CPP_SPEC): Merge definitions.  Do not handle __HAVE_68881__ here.
18175         * config/m68k/netbsd-elf.h (TARGET_OS_CPP_BUILTINS): Define
18176         __HAVE_FPU__ if TARGET_HARD_FLOAT.
18177         (TARGET_DEFAULT): Delete.
18178         (EXTRA_SPECS): Delete cpp_cpu_default_spec, cpp_cpu_spec,
18179         cpp_fpu_spec, asm_default_spec and netbsd_cpp_spec.
18180         (CPP_CPU_SPEC): Delete.
18181         (TARGET_VERSION): Merge definitions, using TARGET_68010 to pick
18182         the appropriate string.
18183         (CPP_CPU_DEFAULT_SPEC, ASM_DEFAULT_SPEC, CPP_FPU_SPEC): Delete.
18184         (CPP_SPEC): Define to NETBSD_CPP_SPEC.
18185         (ASM_SPEC): Don't use %(asm_default_spec).
18186         * config/m68k/m68k.c (TARGET_DEFAULT_TARGET_FLAGS): Remove
18187         TARGET_DEFAULT and add MASK_68881.
18188         * config/m68k/m68k.md: Remove mention of TARGET_DEFAULT from comments.
18189
18190 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
18191
18192         * config.gcc (m68010-*-netbsdelf*): Add MASK_68010.
18193         (m68k*-*-netbsdelf*, m68k*-*-openbsd*, m68k*-linux*): Add
18194         MASK_68010 alongside MASK_68020.
18195         * doc/invoke.texi: Document -m68010.
18196         * config/m68k/m68k.opt (m68010): New.
18197         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define mc68010
18198         if TUNE_68010.
18199         (TUNE_68010): New macro.
18200         * config/m68k/m68k-none.h (M68K_CPU_m68k, M68K_CPU_m68010)
18201         (M68K_CPU_m68020, M68K_CPU_m68030, M68K_CPU_m68040)
18202         (M68K_CPU_m68332): Add MASK_68010.
18203         * config/m68k/linux.h (TARGET_DEFAULT): Add MASK_68010 to
18204         fallback definition.
18205         * config/m68k/netbsd-elf.h (CPP_CPU_SPEC): Remove now-redundant
18206         defines.
18207         * config/m68k/m68k.c (MASK_ALL_CPU_BITS): Add MASK_68010.
18208         (m68k_handle_option): Handle OPT_m68010.  Add MASK_68010
18209         to all entries that use MASK_68020.
18210         (output_move_simode_const, output_move_himode, output_move_qimode)
18211         (output_move_stricthi, output_move_strictqi): Use TARGET_68010
18212         instead of TARGET_68020 to select clr behavior.  Remove comment
18213         about there being no TARGET_68010.
18214         * config/m68k/m68k.md: Likewise throughout.
18215
18216 2007-01-12  Julian Brown  <julian@codesourcery.com>
18217
18218         * config/m68k/m68k.h (TARGET_ISAB): New macro.
18219         * config/m68k/m68k.c: Use TARGET_ISAB rather than TARGET_CFV4.
18220         * config/m68k/m68k.md: Likewise.
18221
18222 2007-01-12  Julian Brown  <julian@codesourcery.com>
18223
18224         * config/m68k/m68k.h (LEGITIMATE_INDEX_P, LEGITIMIZE_ADDRESS): Use
18225         TARGET_COLDFIRE_FPU instead of TARGET_CFV4E.
18226
18227 2007-01-12  Julian Brown  <julian@codesourcery.com>
18228
18229         * config/m68k/m68k.h (TUNE_68040_60): New macro.
18230         * config/m68k/m68k.c (standard_68881_constant_p): Use it.
18231         * config/m68k/m68k.md: Likewise.
18232
18233 2007-01-12  Julian Brown  <julian@codesourcery.com>
18234             Richard Sandiford  <richard@codesourcery.com>
18235
18236         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Use TUNE_68030
18237         instead of TARGET_68030, TUNE_68040 instead of TARGET_68040,
18238         TUNE_68060 instead of TARGET_68060 and TUNE_CPU32 instead of
18239         TARGET_CPU32.
18240         (TARGET_CPU32): Rename to...
18241         (TUNE_CPU32): ...this.
18242         (TUNE_68000_10, TUNE_68030, TUNE_68040, TUNE_68060)
18243         (TUNE_CFV2): New macros.
18244         * config/m68k/netbsd-elf.h (LONG_DOUBLE_TYPE_SIZE): Simplify;
18245         remove conditions that are implied by TARGET_68020.
18246         * config/m68k/m68k.c (m68k_output_function_prologue): Use TUNE_68040
18247         instead of TARGET_68040 and TUNE_CPU32 instead of TARGET_CPU32.
18248         (m68k_output_function_epilogue): Likewise.
18249         (m68k_rtx_costs): Likewise.  Use TUNE_68060 instead of TARGET_68060
18250         and TUNE_CFV2 instead of TARGET_5200.  Use TUNE_68000_10 instead of
18251         "!TARGET_68020 && !TARGET_COLDFIRE" to choose between 68000 and
18252         non-68000 timings.  Refactor multiplication and division costs.
18253         (output_addsi3): Use TUNE_68040 instead of TARGET_68040 and
18254         TUNE_CPU32 instead of TARGET_CPU32.
18255         (standard_68881_constant_p): Use TUNE_68040 instead of TARGET_68040
18256         and TUNE_68060 instead of TARGET_68060.
18257         * config/m68k/m68k.md: Use TUNE_68040 instead of TARGET_68040,
18258         TUNE_68060 instead of TARGET_68060, and TUNE_CPU32 instead of
18259         TARGET_CPU32.
18260         (movsi_const0): Use TUNE_68000_10 rather than "!TARGET_68020
18261         && !TARGET_COLDFIRE" to choose between moveq and clr.
18262         Likewise in the unnamed movsf pattern.
18263         (ashlsi_17_24, lshrsi_17_24): Guard with TUNE_68000_10 rather than
18264         "!TARGET_68020 && !TARGET_COLDFIRE".  Likewise the unnamed
18265         ashiftrt pattern.
18266
18267 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
18268
18269         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Increase amount
18270         of tabbing before backslashes.
18271
18272 2007-01-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
18273
18274         * pa-linux.h (ASM_OUTPUT_INTERNAL_LABEL): Undefine.
18275         * pa.h (ASM_OUTPUT_LABEL): Output colon when using GAS.
18276         (ASM_OUTPUT_INTERNAL_LABEL): Define.
18277
18278 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
18279
18280         * tree-ssa-loop-ivopts.c (extract_cond_operands): Split from
18281         find_interesting_uses_cond.
18282         (find_interesting_uses_cond): Use extract_cond_operands.
18283         (rewrite_use_compare): Use extract_cond_operands and
18284         force_gimple_operand_bsi.  Do not call update_stmt.
18285         (determine_use_iv_cost_condition): Use extract_cond_operands.
18286         Return cheaper of using original bound and changing the exit bound.
18287
18288 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
18289
18290         PR tree-optimization/29516
18291         * tree-ssa-address.c (tree_mem_ref_addr, add_to_parts,
18292         most_expensive_mult_to_index, addr_to_parts,
18293         create_mem_ref, maybe_fold_tmr): Make the type of
18294         fields of TARGET_MEM_REF sizetype.
18295         (move_fixed_address_to_symbol, move_pointer_to_base):
18296         New functions.
18297         * tree.def (TARGET_MEM_REF): Add comment on types of
18298         the operands.
18299
18300 2007-01-11  Joseph Myers  <joseph@codesourcery.com>
18301
18302         * c-common.c (vector_types_convertible_p): Treat opaque types as
18303         always convertible if they have the same size, but not otherwise.
18304
18305 2007-01-11  Steven Bosscher  <steven@gcc.gnu.org>
18306
18307         * ifcvt.c (struct noce_if_info): Add comments to the fields.
18308         Remove the b_unconditional field.
18309         (noce_try_sign_mask): Do not look at b_unconditional.
18310         (noce_process_if_block): Do not use merge_if_blocks.  Update
18311         the CFG here.  Do not set b_unconditional.
18312         (cond_move_process_if_block): Likewise.
18313         (find_cond_trap): Likewise.
18314         (check_cond_move_block): Require simple jump insns at the end
18315         of the basic block.
18316
18317 2007-01-11  Jan Hubicka  <jh@suse.cz>
18318
18319         PR tree-optimization/1046
18320         * tree-tailcall.c (suitable_for_tail_call_opt_p): Use TREE_ADDRESSABLE
18321         when alias info is not ready.
18322         (pass_tail_recursion): Do not require aliasing.
18323         * tree-ssa-copyrename.c (pass_rename_ssa_cop): Likewise.
18324         * tree-ssa-ccp.c (pass_ccp, pass_fold_builtins): Likewise.
18325         * tree-ssa-copy.c (pass_copy_prop): Likewise.
18326         * tree-ssa-forwprop.c (pass_forwprop): Likewise.
18327         * tree-ssa-dce.c (pass_dce, pass_dce_loop, pass_cd_dce): Likewise.
18328         * passes.c (init_optimization_passes): Execute rename_ssa_copies,
18329         ccp, forwprop, copy_prop, merge_phi, copy_prop, dce and tail recursion
18330         before inlining.
18331         * tree-ssa-operands.c (add_virtual_operand, get_indirect_ref_operand):
18332         When aliasing is not build, mark statement as volatile.
18333
18334 2007-01-11  Tom Tromey  <tromey@redhat.com>
18335
18336         PR preprocessor/15185, PR preprocessor/20989:
18337         * doc/cppopts.texi <-MT>: Update description of algorithm for
18338         computing default target.
18339         <-M, -MD>: Reword "basename" text.
18340
18341 2007-01-11  Roger Sayle  <roger@eyesopen.com>
18342
18343         * builtins.c (expand_builtin_pow, expand_builtin_powi,
18344         fold_builtin_cabs, fold_builtin_sqrt, fold_builtin_trunc,
18345         fold_builtin_floor, fold_builtin_ceil, fold_builtin_round,
18346         fold_builtin_int_int_roundingfn, fold_builtin_bitop,
18347         fold_builtin_bswap, real_constp, fold_builtin_pow,
18348         fold_builtin_powi, fold_builtin_signbit, fold_builtin_copysign,
18349         do_mpfr_arg1, do_mpfr_arg2, do_mpfr_arg3, do_mpfr_sincos): Replace
18350         uses of the macro TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
18351         * convert.c (convert_to_pointer): Likewise.
18352         * expr.c (highest_pow2_factor, expand_expr_real_1): Likewise.
18353         * fold-const.c (force_fit_type, fold_negate_expr, int_const_binop,
18354         const_binop, fold_convert_const_int_from_int,
18355         fold_convert_const_int_from_real,
18356         fold_convert_const_real_from_real, sign_bit_p,
18357         optimize_minmax_comparison, extract_muldiv_1, fold_div_compare,
18358         fold_sign_changed_comparison, fold_unary, fold_comparison,
18359         fold_binary, multiple_of_p, tree_Expr_non_zero_p,
18360         fold_negate_const, fold_abs_const, fold_not_const): Likewise.
18361         * print-tree.c (print_node_brief, print_node): Likewise.
18362         * stor-layout.c (place_field, layout_type): Likewise.
18363         * tree-chrec.c (keep_cast): Likewise.
18364         * tree.c (build_vector, build_real, build_real_from_int_cst,
18365         build_complex): Likewise.
18366
18367 2007-01-11  Roger Sayle  <roger@eyesopen.com>
18368
18369         * tree.h (TREE_CONSTANT_OVERFLOW): Obsolete.  For the time being,
18370         treat TREE_CONSTANT_OVERFLOW as a synonym of TREE_OVERFLOW.
18371
18372 2007-01-11  Paolo Bonzini  <bonzini@gnu.org>
18373
18374         * configure.ac (strict1_warn): Rename to strict_warn.
18375         (WERROR, --enable-werror, symlink hacks, stage1_cflags,
18376         cc_set_by_configure, quoted_cc_set_by_configure,
18377         stage_prefix_set_by_configure, quoted_stage_prefix_set_by_configure,
18378         all_boot_languages, all_stagestuff): Remove.
18379         (target_list): Remove bootstrap targets.
18380         * Makefile.in (quickstrap): Unconditionally make a synonym of all.
18381         (BOOT_LANGUAGES, STAGE1_CFLAGS, STAGE1_CHECKING,
18382         REMAKEFLAGS, FLAGS_TO_PASS, PREPEND_DOTDOT_TO_RELATIVE_PATHS,
18383         SUBDIR_FLAGS_TO_PASS, WERROR_FLAGS, STRICT2_WARN, LANG_STAGESTUFF,
18384         VOL_FILES, POSTSTAGE1_FLAGS_TO_PASS, STAGE2_FLAGS_TO_PASS,
18385         STAGEPROFILE_FLAGS_TO_PASS, STAGEFEEDBACK_FLAGS_TO_PASS, stage1_build,
18386         stage1_copy, stage2_build, stage2_copy, stageprofile_build,
18387         stageprofile_copy, stage3_build, stage3_copy, stagefeedback_build,
18388         stagefeedback_copy, stage4_build, clean_s1, clean_sw, bootstrap,
18389         bootstrap-lean, bootstrap2, bootstrap2-lean, bootstrap3,
18390         bootstrap3-lean, bootstrap4, bootstrap4-lean, unstage1, unstage2,
18391         unstage3, unstage4, unstageprofile, unstagefeedback, restage, restage2,
18392         restage3, restage4, restageprofile, restagefeedback, bubbleestrap,
18393         cleanstrap, unstrap, restrap, *compare, *compare3, *compare4,
18394         *compare-lean, *compare3-lean, *compare4-lean, stage1-start, stage1,
18395         stage2-start, stage2, stage3-start, stage3, stage4-start, stage4,
18396         stageprofile-start, stageprofile, stagefeedback-start, stagefeedback,
18397         risky-stage1, risky-stage2, risky-stage3, risky-stage4): Remove.
18398         (ORDINARY_FLAGS_TO_PASS): Rename to FLAGS_TO_PASS.
18399         (STAGECOPYSTUFF, STAGEMOVESTUFF): Consolidate into MOSTLYCLEANFILES.
18400         (mostlyclean): Adjust.
18401         (clean, distclean): Don't mention bootstrap stuff.
18402         * configure: Regenerate.
18403         * ada/config-lang.in, cp/config-lang.in, forttran/config-lang.in,
18404         java/config-lang.in, objc/config-lang.in, objcp/config-lang.in,
18405         treelang/config-lang.in (stagestuff): Remove.
18406         * doc/sourcebuild.texi (stage1, stage2, stage3, stage4,
18407         stageprofile, stagefeedback, stagestuff): Remove mention.
18408
18409 2007-01-11  Nick Clifton  <nickc@redhat.com>
18410
18411         * config/mcore/predicates.md (mcore_general_movesrc_operand):
18412         Accept CONSTs.
18413         (mcore_general_movdst_operand): Do not accept CONST_INTs.
18414         (mcore_arith_K_S_operand): Run the test for the S constraint not
18415         the test for the M constraint.
18416         (mcore_addsub_operand): Do not accept integer values that are
18417         larger than 32 bits.
18418         * config/mcore/mcore.md: Remove unused constraints from split.
18419         (andsi3): Use HOST_WIDE_INT instead of int to hold an INTVAL.
18420         (addsi3): Likewise.
18421         (allocate_stack): Likewise.
18422         * config/mcore/mcore.c (mcore_print_operand): Restrict output of P
18423         operands to 32 bits.
18424         (mcore_const_costs): Use HOST_WIDE_INT instead of int to hold an
18425         INTVAL.
18426         (mcore_and_cost, mcore_modify_comparison, const_ok_for_mcore,
18427         mcore_const_ok_for_inline, mcore_const_trick_uses_not,
18428         try_constant_tricks, mcore_num_ones, mcore_num_zeros,
18429         mcore_output_bclri, mcore_output_andn, output_inline_const,
18430         mcore_output_move, mcore_output_movedouble): Likewise.
18431         (mcore_output_cmov): Use CONST_OK_FOR_M and CONST_OK_FOR_N.
18432         (output_inline_const): Likewise.
18433         (output_inline_const): Fix format strings used in sprintf
18434         statements.
18435         * config/mcore/mcore-protos.h: Update prototypes for changed
18436         functions in mcore.c.
18437         * config/mcore/mcore.h (CONST_OK_FOR_I): Cast values to
18438         HOST_WIDE_INT and not int.
18439         (CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L, CONST_OK_FOR_M,
18440         CONST_OK_FOR_N): Likewise.
18441         (LEGITIMATE_CONSTANT_P): Also check CONSTANT_P.
18442         (GO_IF_LEGITIMATE_INDEX): Use HOST_WIDE_INT instead of int to hold
18443         an INTVAL.
18444
18445 2007-01-10  Jan Hubicka  <jh@suse.cz>
18446
18447         * tree-vrp.c (remove_range_assertions): Release defs.
18448         * tree-ssa-loop-ivopts.c (rmeove_statement): Likewise.
18449         * tree-ssa-dom.c (remove_stmt_or_phi): Likewise.
18450
18451 2007-01-10  Paul Brook  <paul@codesourcery.com>
18452
18453         * config/arm/arm.c (arm_rtx_costs_1): Handle mutiply-subtract.
18454         * config/arm/arm.md (mulsi3subsi): New insn.
18455
18456 2007-01-10  Zdenek Dvorak <dvorakz@suse.cz>
18457
18458         * tree-ssa-loop-manip.c (tree_unroll_loop): Make it a wrapper over ...
18459         (tree_transform_and_unroll_loop): New.
18460         * tree-flow.h (transform_callback, tree_transform_and_unroll_loop):
18461         Declare.
18462
18463 2007-01-10  Robert Kennedy <jimbob@google.com>
18464
18465         * fold-const.c (fold_comparison): Fold comparisons like (x *
18466         1000 < 0) to (x < 0).
18467
18468 2007-01-10  Ian Lance Taylor  <iant@google.com>
18469
18470         * tree-pretty-print.c (dump_generic_node): Print parentheses when
18471         operands have the same priority.
18472
18473 2007-01-10  Tom Tromey  <tromey@redhat.com>
18474
18475         * fold-const.c (fold_truthop): Don't check can_use_bit_fields_p.
18476         (fold_binary): Likewise.
18477         * langhooks.c (lhd_can_use_bit_fields_p): Removed.
18478         * langhooks-def.h (lhd_can_use_bit_fields_p): Removed.
18479         (LANG_HOOKS_CAN_USE_BIT_FIELDS_P): Removed.
18480         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_CAN_USE_BIT_FIELDS_P.
18481         * langhooks.h (struct lang_hooks): Removed field
18482         'can_use_bit_fields_p'.
18483
18484 2007-01-10  Ralf Corsépius <ralf.corsepius@rtems.org>
18485
18486         * config/bfin/t-bfin, config/bfin/t-bfin-elf: Remove GCC_CFLAGS.
18487
18488 2007-01-10  Razya Ladelsky  <razya@il.ibm.com>
18489
18490         * function.c (get_last_funcdef_no): New function.
18491         * function.h (get_last_funcdef_no): Declare.
18492         * tree-inline.c (initialize_cfun): Add initialization.
18493         (tree_function_versioning): Cleanup.
18494
18495 2007-01-10  Jan Hubicka  <jh@suse.cz>
18496
18497         * tree-inline.c (setup_one_parameter): Do not propagate into abnormal
18498         PHIs.
18499
18500 2007-01-10  Sa Liu  <saliu@de.ibm.com>
18501             Ben Elliston  <bje@au.ibm.com>
18502
18503         * spu.h (STACK_SAVE_AREA): Use VOIDmode for SAVE_FUNCTION, SImode
18504         for SAVE_NONLOCAL and Pmode for any other save level.
18505         * spu-protos.h (spu_restore_stack_block): Declare.
18506         * spu.md (save_stack_block): Remove.
18507         (restore_stack_block): Call spu_restore_stack_block.
18508         * spu.c (spu_restore_stack_block): New function.
18509         (spu_expand_epilogue): Remove old comment.
18510
18511 2007-01-09  Zdenek Dvorak <dvorakz@suse.cz>
18512
18513         PR tree-optimization/30322
18514         * tree-ssa-loop-ivopts.c (fold_affine_expr, iv_value): Removed.
18515         (cand_value_at): Return the value as aff_tree.
18516         (may_eliminate_iv): Convert the bound from aff_tree to tree.
18517         * tree-affine.c (aff_combination_add_cst, aff_combination_add_product,
18518         aff_combination_mult): New functions.
18519         (aff_combination_add): Use aff_combination_add_cst.
18520         (aff_combination_convert): Allow conversions to a wider type.
18521         (tree_to_aff_combination): Handle BIT_NOT_EXPR.
18522         * tree-affine.h (aff_combination_mult): Declare.
18523
18524 2007-01-09  Carlos O'Donell  <carlos@codesourcery.com>
18525
18526         * doc/tm.texi: Update documentation to reflect reality of exec
18527         and start file search behaviours. Update copyright year.
18528         * doc/invoke.texi: Explain how GCC_EXEC_PREFIX is used to find
18529         header file directories.
18530
18531 2007-01-09  Uros Bizjak  <ubizjak@gmail.com>
18532
18533         * config/i386/i386.md (*sinxf2): Rename to *sinxf2_i387.
18534         (*cosxf2): Rename to cosxf2_i387.
18535         (*sindf2, *sinsf2): Extend operand 1 to XFmode.  Macroize patterns
18536         using X87MODEF12 mode macro. Rename patterns to
18537         *sin_extend<mode>xf2_i387.  Use SSE_FLOAT_MODE_P to disable patterns
18538         for SSE math.
18539         (*cosdf2, *cossf2): Ditto.
18540         (sincosdf3, sincossf3): Ditto.  Rewrite corresponding splitters
18541         to match extended input operands.
18542         (sincos<mode>3): New expander.
18543         (*sinextendsfdf2, *cosextendsfdf2, *sincosextendsfdf3): Remove
18544         insn patterns and corresponding splitters.
18545
18546 2007-01-09  Kaz Kojima  <kkojima@gcc.gnu.org>
18547
18548         * config/sh/t-linux (TARGET_LIBGCC2_CFLAGS): Delete.
18549         (SHLIB_MAPFILES, SHLIB_LINK, SHLIB_INSTALL): Likewise.
18550
18551 2007-01-09  Nicolas Pitre  <nico@cam.org>
18552
18553         PR target/30173
18554         * arm/ieee754-df.S (Lad_s): Also test the low word of X for zero.
18555
18556 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
18557
18558         * target.h (struct gcc_target): New field library_rtti_comdat.
18559         * target-def.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): New.
18560         (TARGET_CXX): Add TARGET_CXX_LIBRARY_RTTI_COMDAT.
18561         * doc/tm.texi (C++ ABI): Document TARGET_CXX_LIBRARY_RTTI_COMDAT.
18562         * config/darwin.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): Define.
18563
18564 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
18565
18566         * doc/invoke.texi (Optimize Options): Correct description of -O0.
18567
18568 2007-01-08  Richard Guenther  <rguenther@suse.de>
18569
18570         * tree.h (force_fit_type_double): Export.
18571         (force_fit_type): Remove.
18572         * fold-const.c (force_fit_type_double): New function.
18573         (force_fit_type): Remove.
18574         (int_const_binop): Use it.
18575         (fold_convert_const_int_from_int): Likewise.
18576         (fold_convert_const_int_from_real): Likewise.
18577         (fold_div_compare): Likewise.
18578         (fold_sign_changed_comparison): Likewise.
18579         (fold_unary): Likewise.
18580         (fold_negate_const): Likewise.
18581         (fold_abs_const): Likewise.
18582         (fold_not_const): Likewise.
18583         * c-common.c (shorten_compare): Use force_fit_type_double.
18584         * convert.c (convert_to_pointer): Likewise.
18585
18586 2007-01-08  Richard Guenther  <rguenther@suse.de>
18587
18588         * tree.h (build_int_cst_wide_type): Export.
18589         * tree.c (build_int_cst_wide_type): New function.
18590         (build_int_cst_wide): Fix comment.
18591         * builtins.c (fold_builtin_object_size): Use build_int_cst
18592         to build -1 or 0 of the correct type.  Use fit_double_type
18593         to check for overflow.
18594         * fold-const.c (optimize_bit_field_compare): Use build_int_cst_type
18595         to build the mask.
18596         (decode_field_reference): Likewise.
18597         (all_ones_mask_p): Likewise.
18598         (native_interpret_int): Use build_int_cst_wide_type.
18599         (fold_binary): Use build_int_cst_type to build an all-ones
18600         value.
18601         * stor-layout.c (set_sizetype): Use build_int_cst_wide_type.
18602
18603 2007-01-08  Daniel Jacobowitz  <dan@codesourcery.com>
18604
18605         * config/pa/t-pa64 (libgcc_stub.a): Use $(T).
18606
18607 2007-01-09  Ben Elliston  <bje@au.ibm.com>
18608
18609         * genautomata.c (STATS_OPTION): New option.
18610         (stats_flag): New flag.
18611         (gen_automata_option): Handle it.
18612         (initiate_automaton_gen): Ditto.
18613         (write_automata): Output statistics only if stats_flag is
18614         set. Likewise, output time statistics only if time_flag is set.
18615         * doc/md.texi (Processor pipeline description): Document new flag.
18616
18617 2007-01-08  Richard Guenther  <rguenther@suse.de>
18618
18619         * builtins.c (fold_builtin_int_roundingfn): Use fit_double_type.
18620         * tree.c (build_int_cst_type): Likewise.
18621         (size_in_bytes): Don't call force_fit_type on the result.
18622         (int_fits_type_p): Use fit_double_type.
18623         * fold-const.c (fit_double_type): New function.
18624         (force_fit_type): Use it.
18625         * tree.h (fit_double_type): Export.
18626
18627 2007-01-08  Jan Hubicka  <jh@suse.cz>
18628
18629         * tree-vectorizer.c (gate_increase_alignment): Fix return type.
18630         * ipa.c (function_and_variable_visibility): Fix return type.
18631
18632 2007-01-08  Richard Guenther  <rguenther@suse.de>
18633
18634         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Use type
18635         of offset to build the index.
18636         * tree-pretty-print.c (dump_generic_node): Don't build negated
18637         const just for printing.
18638         * c-pretty-print.c (pp_c_integer_constant): Likewise.
18639         * builtins.c (fold_builtin_int_roundingfn): Check if result
18640         fits the type by using force_fit_type and comparing the result.
18641         * predict.c (predict_loops): Use compare_tree_int for comparison.
18642         * tree.c (build_int_cst): Fall back to integer_type_node for
18643         NULL_TREE type.
18644         (build_int_cst_wide): Assert type is non-null.
18645
18646 2007-01-08  Roberto Costa  <roberto.costa@st.com>
18647
18648         * tree-vrp.c (extract_range_from_cond_expr): New.
18649         (extract_range_from_expr): Handle COND_EXPR nodes used as expressions.
18650         * tree-ssa-ccp.c (get_maxval_strlen): Handle COND_EXPR nodes used
18651         as expressions.
18652         (fold_stmt): Bug fix, avoid infinite recursion when folding COND_EXPRs.
18653         * tree-ssa-forwprop.c (simplify_cond, forward_propagate_into_cond,
18654         tree_ssa_forward_propagate_single_use_vars): Handle COND_EXPR nodes
18655         used as expressions.
18656         * tree-object-size.c (cond_expr_object_size): New.
18657         (collect_object_sizes_for): Handle COND_EXPR nodes used as expressions.
18658
18659 2007-01-08  Jan Hubicka  <jh@suse.cz>
18660
18661         * tree-ssa-forwprop.c (forward_propagate_into_cond,
18662         tree_ssa_forward_propagate_single_use_va): Release defs of propagated
18663         statement.
18664
18665 2007-01-08  Richard Guenther  <rguenther@suse.de>
18666
18667         PR tree-optimization/23603
18668         * tree-vrp.c (set_value_range_to_truthvalue): New function.
18669         (extract_range_from_binary): Fall back to truthvalue instead of
18670         varying for TRUTH_*_EXPR.
18671         (extract_range_from_comparison): Fall back to truthvalue instead of
18672         varying.
18673         (vrp_visit_phi_node): Don't adjust new range bounds to +INF/-INF
18674         if all visited PHI values were constant.
18675
18676 2007-01-08  Jan Hubicka  <jh@suse.cz>
18677
18678         * cgraphunit.c (cgraph_process_new_functions): Reset reachable flag.
18679         (cgraph_analyze_function): break out from ...
18680         (cgraph_finalize_compilation_unit): ... here.
18681         (cgraph_expand_function): Remove forgoten commented out line.
18682         (cgraph_optimize): Analyze functions.
18683
18684 2007-01-08  Jan Hubicka  <jh@suse.cz>
18685
18686         * tree-pas.h (TODO_remove_function): New flag.
18687         (TODO_update*): Renumber.
18688         (pass_ipa_increase_alignment,
18689         pass_ipa_function_and_variable_visibility): New passes.
18690         * cgraphunit.c (cgraph_increase_alignment): Move to tree-vectorizer.c
18691         (cgraph_function_and_variable_visibility): Move to ipa.c
18692         (cgraph_optimize): Don't call cgraph_function_and_variable_visibility,
18693         cgraph_increase_alignment.
18694         * ipa-inline.c (cgraph_decide_inlining): Don't push timevar.
18695         (cgraph_decide_inlining_incrementally): Push TV_INTEGRATION before
18696         calling tree-inline.
18697         (cgraph_early_inlining): Do not call cgraph_remove_unreachable_nodes.
18698         (pass_ipa_inline, pass_early_ipa_inlining): Set TODO_remove_functions
18699         * tree-vectorizer.c (increase_alignment): Move here from cgraphunit.c
18700         (gate_increase_alignment): New function.
18701         (pass_ipa_increase_alignment): New pass.
18702         * ipa.c: Inline tree-pass.h and timevar.h
18703         (function_and_variable_visibility): Move here from cgraphunit.c
18704         * tree-optimize.c (pass_early_local_passes): Add TODO_remove_functions.
18705         * passes.c (init_optimization_passes): Add the two new passes.
18706         (execute_todo): Handle cgraph_remove_functions.
18707
18708 2007-01-08  Nick Clifton  <nickc@redhat.com>
18709
18710         * config/frv/predicates.md (reg_or_0_operand): Accept
18711         CONST_DOUBLEs.
18712
18713 2007-01-08  Ralf Corsépius <ralf.corsepius@rtems.org>
18714
18715         * config/bfin/rtems.h, config/bfin/t-rtems: New.
18716         * config.gcc: Add bfin*-rtems*.
18717
18718 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
18719
18720         * c.opt: Add -flax-vector-conversions.
18721         * c-typeck.c (convert_for_assignment): Pass flag to
18722         vector_types_convertible_p to allow emission of note.
18723         (digest_init): Likewise.
18724         * c-opts.c: Handle -flax-vector-conversions.
18725         * c-common.c (flag_lax_vector_conversions): New.
18726         (vector_types_convertible_p): Unless -flax-vector conversions
18727         has been passed, disallow conversions between vectors with
18728         differing numbers of subparts and/or element types.  If such
18729         a conversion is disallowed, possibly emit a note on the first
18730         occasion only to inform the user of -flax-vector-conversions.
18731         The new last argument specifies this.
18732         * c-common.h (flag_lax_vector_conversions): New.
18733         (vector_types_convertible_p): Add extra argument.
18734         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Use
18735         char_type_node for V*QI type vectors.
18736         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins):
18737         Update to satisfy new typechecking rules.
18738         * config/rs6000/altivec.h (vec_cmple): Use vec_cmpge, for both
18739         C and C++ variants.
18740         * doc/invoke.texi (C Dialect Options): Document
18741         -flax-vector-conversions.
18742
18743 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
18744
18745         PR tree-optimization/29877
18746         * tree-ssa-ter.c (is_replaceable_p): Deem assignments with
18747         a register variable on the RHS to not be replaceable.
18748
18749 2007-01-08  Chen Liqin  <liqin@sunnorth.com.cn>
18750         * config/score/t-score-elf (MULTILIB_OPTIONS): Change.
18751         * config/score/predicates.md (const_uimm5, sr0_operand, const_simm12,
18752         const_simm15, const_pow2, const_npow2): Added.
18753         * config/score/misc.md (insv, extv, extzv, movmemsi,
18754         move_lbu_a/b, mov_lhu_a/b etc): Added and fix some bug.
18755         * config/score/score.c (score_address_cost, score_select_cc_mode):
18756         Added.
18757         Change CONST_OK_FOR_LETTER_P/EXTRA_CONSTRAINT define.
18758         Update score_rtx_costs for MACRO TARGET_RTX_COSTS.
18759         Update score_print_operand.
18760         * config/score/score.h (DATA_ALIGNMENT, SELECT_CC_MODE): Added.
18761         Adjust register allocate order and update some macro define.
18762         * config/score/score-mdaux.c (mdx_unaligned_load, mdx_unsigned_store,
18763         mdx_block_move_straight, mdx_block_move_loop_head,
18764         mdx_block_move_loop_body, mdx_block_move_loop_foot,
18765         mdx_block_move_loop, mdx_block_move): Added.
18766         (mdx_movsicc, mdp_select_add_imm, mdp_select, mds_zero_extract_andi,
18767         mdp_limm): Updated and fix some bug and typo.
18768         * config/score/score.md (movqi/hi/si, add/sub/zero/ext): Updated.
18769         (movsf, movdf, doloop_end): Added.
18770
18771 2007-01-08  Kazu Hirata  <kazu@codesourcery.com>
18772
18773         * config/arm/arm.c, config/arm/arm.h, config/arm/arm.md,
18774         config/arm/thumb2.md: Fix comment typos.
18775         * doc/extend.texi: Fix a typo.
18776
18777 2007-01-07  Eric Christopher  <echristo@apple.com>
18778
18779         * configure.ac: Check for __stack_chk_fail for darwin.
18780         * configure: Regenerate.
18781
18782 2007-01-07  Richard Guenther  <rguenther@suse.de>
18783
18784         * tree-vrp.c (extract_range_from_assert): CSE calls to
18785         compare_values where possible.
18786         (extract_range_from_unary_expr): Likewise.
18787
18788 2007-01-07  Anatoly Sokolov <aesok@post.ru>
18789
18790         * config/avr/avr-protos.h (call_insn_operand): Delete prototype.
18791         * config/avr/avr.c (call_insn_operand): Delete function.
18792         * config/avr/avr.md (*pushqi, *pushhi, *pushsi, *pushsf): Use REG_SP
18793         instead of register number. Use predicates.
18794         * config/avr/predicates.md (const0_operand, reg_or_0_operand,
18795         call_insn_operand): Add.
18796
18797 2007-01-06  Jan Hubicka  <jh@suse.cz>
18798
18799         * tree-pass.h (pass_build_cgraph_edges): Declare.
18800         * cgraphunit.c (record_refernece): Move to cgraphbuild.c
18801         (visited_nodes): Remove.
18802         (cgraph_create_edges): Move to cgraphbuild.c; rename to
18803         build_cgrpah_edges; make visited_nodes local.
18804         (cgraph_process_new_functions): DO not call initialize_inline_failed.
18805         (record_references_in_initializer): Move to cgraphbuild.c
18806         (initialize_inline_failed, rebuild_cgraph_edges,
18807         pass_rebuild_cgraph_edges): Move to cgraphbuild.c.
18808         (verify_cgraph_node): Make visited_nodes local.
18809         (cgraph_analyze_function): Do not call cgraph_create_edges and
18810         initialize_inline_failed.
18811         (cgraph_expand_function): Do not call cgraph_lower_function;
18812         assert that function is already lowered.
18813         * Makefile.in (cgraphbuild.o): New.
18814         * passes.c (init_optimization_passes): Add pass_build_cgraph_edges
18815         at the end of lowering passes.
18816
18817 2007-01-06  Steven Bosscher  <steven@gcc.gnu.org>
18818
18819         * ifcvt.c (cond_move_convert_if_block): New function, code
18820         factored out from...
18821         (cond_move_process_if_block): ...here.  Call the new function
18822         on the THEN and ELSE blocks.
18823         (merge_if_block): Do not copy global_live_at_end, merge_blocks
18824         already takes care of this.
18825
18826 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
18827
18828         PR c/19978
18829         * tree.h (TREE_OVERFLOW_P): New.
18830         * c-typeck.c (parser_build_unary_op): Warn only if result
18831         overflowed and operands did not.
18832         (parser_build_binary_op): Likewise.
18833         (convert_for_assignment): Remove redundant overflow_warning.
18834         * c-common.c (overflow_warning): Don't check or set TREE_OVERFLOW.
18835
18836 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
18837
18838         * c-typeck.c (store_init_value): Split over two lines to follow
18839         the GNU coding style.
18840
18841 2007-01-05  Benjamin Kosnik  <bkoz@redhat.com>
18842
18843         * c-cppbuiltin.c (c_cpp_builtins): __GXX_EXPERIMENTAL_CPP0X__ to
18844         __GXX_EXPERIMENTAL_CXX0X__.
18845         * doc/cpp.texi: Same.
18846
18847 2007-01-05  Richard Guenther  <rguenther@suse.de>
18848
18849         PR middle-end/27826
18850         * tree.c (get_narrower): Do not construct COMPONENT_REFs
18851         with mismatched types.  Instead explicitly build a
18852         conversion NOP_EXPR.
18853
18854 2007-01-05  Ian Lance Taylor  <iant@google.com>
18855
18856         * c-common.c (decl_with_nonnull_addr_p): New function.
18857         (c_common_truthvalue_conversion): Call it.
18858         * c-typeck.c (build_binary_op): Likewise.
18859         * c-common.h (decl_with_nonnull_addr_p): Declare.
18860
18861 2007-01-05  Jakub Jelinek  <jakub@redhat.com>
18862
18863         PR c/30360
18864         * libgcc2.c (__divdc3): Compare c and d against 0.0 instead of
18865         denom against 0.0.
18866
18867 2007-01-05  Joel Brobecker  <brobecker@adacore.com>
18868
18869         * doc/install.texi (Final install): Document the fact that
18870         the GNAT runtime should not be stripped.
18871
18872 2007-01-04  Jan Hubicka  <jh@suse.cz>
18873
18874         * tree-inline.c (fold_marked_statements): Update operand caches
18875         and EH after folding
18876
18877 2007-01-04  Ian Lance Taylor  <iant@google.com>
18878
18879         * c-common.c (check_function_nonnull): Whitespace fix.
18880
18881 2007-01-04  Jan Hubicka  <jh@suse.cz>
18882
18883         * tree-optimize.c (execute_fixup_cfg): Correct previously mistakely
18884         comitted older version of patch.
18885         (pass_fixup_cfg): Add TODOs to verify flow and statements, dump
18886         function, celanup cfg and collect garbage.
18887
18888 2007-01-04  Mike Stump  <mrs@apple.com>
18889
18890         * Makefile.in (mostlyclean): Don't remove libgcc anymore.
18891         (clean): Likewise.
18892
18893 2007-01-04  Eric Christopher  <echristo@apple.com>
18894
18895         * libgcc2.c (__bswapsi2): Use SItype.
18896         (__bswapdi2): Use DItype.
18897         * libgcc2.h: Update for above.
18898
18899 2007-01-04  Paul Brook  <paul@codesourcery.com>
18900
18901         * config/arm/arm.md (arm_mulsi3, thumb_mulsi3, mulsi3_compare0,
18902         mulsi_compare0_scratch, mulsi3addsi, mulsi3addsi_compare0,
18903         mulsi3addsi_compare0_scratch, mulsidi3adddi, mulsidi3,
18904         umulsidi3, umulsidi3adddi, smulsi3_highpart,
18905         umulsi3_highpart): Make conditional on !arm_arch6.
18906         (arm_mulsi3_v6, thumb_mulsi3_v6, mulsi3_compare0_v6,
18907         mulsi_compare0_scratch_v6, mulsi3addsi_v6, mulsi3addsi_compare0_v6,
18908         mulsi3addsi_compare0_scratch_v6, mulsidi3adddi_v6, mulsidi3_v6,
18909         umulsidi3_v6, umulsidi3adddi_v6, smulsi3_highpart_v6,
18910         umulsi3_highpart_v6): New insns.
18911
18912 2007-01-04  Roger Sayle  <roger@eyesopen.com>
18913
18914         * fold-const.c (fold_convert): When casting an expression to void,
18915         fold_ignored_result may discover a GIMPLE_MODIFY_STMT which doesn't
18916         have a type.  Instead of attempting to build a NOP_EXPR, return
18917         these "special" trees directly.
18918
18919 2007-01-04  Joseph Myers  <joseph@codesourcery.com>
18920
18921         * config/rs6000/rs6000.c (rs6000_rtx_costs): Make adjustment for
18922         MULT inside MINUS as either argument.  Use rs6000_cost->dmul -
18923         rs6000_cost->fp not 0 as adjustment for outer NEG.
18924
18925 2007-01-04  Jan Hubicka  <jh@suse.cz>
18926
18927         * cgraph.c (cgraph_release_function_body): New function.
18928         (cgraph_remove_node): Use it.
18929         * cgraph.h (cgraph_release_function_body): Declare.
18930         * cgraphunit.c (cgraph_expand_function): Use it.
18931         * ipa.c (cgraph_remove_unreahchable_nodes): Use it.
18932         * tree-ssa.c (delete_tree_ssa): Allow to be called before aliasing
18933         is initialized and while compilation of other function is running.
18934         * tree-optimize.c (execute_free_cfg_annotations): Move code to clear
18935         statement CFG annotations from here to ...
18936         * tree-cfg.c (delete_tree_cfg_annotations): ... here.
18937
18938 2007-01-04  Zdenek Dvorak <dvorakz@suse.cz>
18939
18940         * cfgloop.h (enum li_flags): Make the constants powers of two.
18941
18942 2007-01-04  Jan Hubicka  <jh@suse.cz>
18943
18944         * tree-inline.c (copy_bb): Insert new statements to statements_to_fold
18945         set.
18946         (fold_marked_statements): New function.
18947         (optimize_inline_calls, tree_function_versioning): Fold new statements.
18948         * tree-inline.h (copy_body_data): Add statements_to_fold.
18949
18950 2007-01-03  Daniel Jacobowitz  <dan@codesourcery.com>
18951
18952         * config.gcc: Mention libgcc/config.host.
18953         * Makefile.in: Update comments mentioning libgcc.
18954         (LIBGCC, INSTALL_LIBGCC, GCC_PARTS, mklibgcc): Delete.
18955         (all.cross, start.encap, rest.encap, rest.cross): Update
18956         dependencies for libgcc move.
18957         (libgcc.mk, LIBGCC_DEPS, libgcov.a, libgcc.a, stmp-multilib)
18958         (clean-target, clean-target-libgcc): Delete.
18959         (srcdirify, GCC_EXTRA_PARTS): New macros.
18960         (libgcc-support, libgcc.mvars): New rules.
18961         (distclean): Remove mention of mklibgcc.
18962         (install): Don't reference INSTALL_LIBGCC.
18963         (install-common): Don't reference EXTRA_PARTS.
18964         (install-libgcc, install-multilib): Delete rules.
18965         * mklibgcc.in: Delete file.
18966         * doc/configfiles.texi: Don't mention mklibgcc.
18967
18968         * config/i386/t-darwin (SHLIB_VERPFX): Delete (moved to libgcc).
18969         * config/i386/t-darwin64 (SHLIB_VERPFX): Likewise.
18970         * config/rs6000/t-darwin (SHLIB_VERPFX): Likewise.
18971         * config/rs6000/t-ppccomm (TARGET_LIBGCC2_CFLAGS, SHLIB_MAPFILES)
18972         (mklibgcc, ldblspecs): Likewise.
18973
18974         * config/i386/t-nwld (libgcc.def, libc.def, libpcre.def)
18975         (posixpre.def): Use $(T).
18976         (SHLIB_EXT, SHLIB_NAME, SHLIB_SLIBDIR_QUAL, SHLIB_DEF, SHLIB_MAP)
18977         (SHLIB_SRC, SHLIB_INSTALL): Delete.
18978         (SHLIB_LINK): Make dummy.
18979         * config/t-slibgcc-darwin: Delete contents except for dummy SHLIB_LINK.
18980
18981         * config/frv/t-linux (EXTRA_MULTILIB_PARTS): Clear.
18982
18983         * config/alpha/t-crtfm: Use $(T) in rules for EXTRA_PARTS.
18984         * config/alpha/t-vms, config/alpha/t-vms64, config/fr30/t-fr30,
18985         config/i386/t-rtems-i386, config/ia64/t-ia64, config/rs6000/t-beos,
18986         config/rs6000/t-newas, config/sparc/t-elf: Likewise.
18987
18988         * configure.ac (all_outputs): Remove mklibgcc.
18989         * configure: Regenerated.
18990
18991 2007-01-03  Josh Conner  <jconner@apple.com>
18992
18993         PR middle-end/29683
18994         * calls.c (compute_argument_addresses): Set stack and stack_slot
18995         for partial args, too.
18996         (store_one_arg): Use locate.size.constant for the size when
18997         generating a save_area.
18998
18999 2007-01-03  Robert Kennedy <jimbob@google.com>
19000
19001         * tree-cfg.c (tree_merge_blocks): Release SSA_NAME phi results
19002         whose definitions are deleted due to basic block merging.
19003
19004 2007-01-03  Paul Brook  <paul@codesourcery.com>
19005
19006         PR target/16634
19007         * config/arm/arm.c (output_return_instruction): Pop PC in interrupt
19008         functions.
19009         (use_return_insn): Return 0 for Thumb interrupt functions.
19010         (print_multi_reg): Add rfe argument for IRQ returns.
19011         (arm_output_epilogue): Pop interrupt return address directly into PC.
19012         (arm_expand_prologue): Only adjust IRQ return address in Arm mode.
19013
19014 2007-01-03  Paul Brook  <paul@codesourcery.com>
19015
19016         Merge from sourcerygxx-4_1.
19017         * config/arm/thumb2.md: New file.
19018         * config/arm/elf.h (JUMP_TABLES_IN_TEXT_SECTION): Return True for
19019         Thumb-2.
19020         * config/arm/coff.h (JUMP_TABLES_IN_TEXT_SECTION): Ditto.
19021         * config/arm/aout.h (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
19022         (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump tables.
19023         * config/arm/aof.h (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump
19024         tables.
19025         (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
19026         * config/arm/ieee754-df.S: Use macros for Thumb-2/Unified asm
19027         comptibility.
19028         * config/arm/ieee754-sf.S: Ditto.
19029         * config/arm/arm.c (thumb_base_register_rtx_p): Rename...
19030         (thumb1_base_register_rtx_p): ... to this.
19031         (thumb_index_register_rtx_p): Rename...
19032         (thumb1_index_register_rtx_p): ... to this.
19033         (thumb_output_function_prologue): Rename...
19034         (thumb1_output_function_prologue): ... to this.
19035         (thumb_legitimate_address_p): Rename...
19036         (thumb1_legitimate_address_p): ... to this.
19037         (thumb_rtx_costs): Rename...
19038         (thumb1_rtx_costs): ... to this.
19039         (thumb_compute_save_reg_mask): Rename...
19040         (thumb1_compute_save_reg_mask): ... to this.
19041         (thumb_final_prescan_insn): Rename...
19042         (thumb1_final_prescan_insn): ... to this.
19043         (thumb_expand_epilogue): Rename...
19044         (thumb1_expand_epilogue): ... to this.
19045         (arm_unwind_emit_stm): Rename...
19046         (arm_unwind_emit_sequence): ... to this.
19047         (thumb2_legitimate_index_p, thumb2_legitimate_address_p,
19048         thumb1_compute_save_reg_mask, arm_dwarf_handle_frame_unspec,
19049         thumb2_index_mul_operand, output_move_vfp, arm_shift_nmem,
19050         arm_save_coproc_regs, thumb_set_frame_pointer, arm_print_condition,
19051         thumb2_final_prescan_insn, thumb2_asm_output_opcode, arm_output_shift,
19052         thumb2_output_casesi): New functions.
19053         (TARGET_DWARF_HANDLE_FRAME_UNSPEC): Define.
19054         (FL_THUMB2, FL_NOTM, FL_DIV, FL_FOR_ARCH6T2, FL_FOR_ARCH7,
19055         FL_FOR_ARCH7A, FL_FOR_ARCH7R, FL_FOR_ARCH7M, ARM_LSL_NAME,
19056         THUMB2_WORK_REGS): Define.
19057         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv, arm_condexec_count,
19058         arm_condexec_mask, arm_condexec_masklen)): New variables.
19059         (all_architectures): Add armv6t2, armv7, armv7a, armv7r and armv7m.
19060         (arm_override_options): Check new CPU capabilities.
19061         Set new architecture flag variables.
19062         (arm_isr_value): Handle v7m interrupt functions.
19063         (user_return_insn): Return 0 for v7m interrupt functions.  Handle
19064         Thumb-2.
19065         (const_ok_for_arm): Handle Thumb-2 constants.
19066         (arm_gen_constant): Ditto.  Use movw when available.
19067         (arm_function_ok_for_sibcall): Return false for v7m interrupt
19068         functions.
19069         (legitimize_pic_address, arm_call_tls_get_addr): Handle Thumb-2.
19070         (thumb_find_work_register, arm_load_pic_register,
19071         legitimize_tls_address, arm_address_cost, load_multiple_sequence,
19072         emit_ldm_seq, emit_stm_seq, arm_select_cc_mode, get_jump_table_size,
19073         print_multi_reg, output_mov_long_double_fpa_from_arm,
19074         output_mov_long_double_arm_from_fpa, output_mov_double_fpa_from_arm,
19075         output_mov_double_fpa_from_arm, output_move_double,
19076         arm_compute_save_reg_mask, arm_compute_save_reg0_reg12_mask,
19077         output_return_instruction, arm_output_function_prologue,
19078         arm_output_epilogue, arm_get_frame_offsets, arm_regno_class,
19079         arm_output_mi_thunk, thumb_set_return_address): Ditto.
19080         (arm_expand_prologue): Handle Thumb-2.  Use arm_save_coproc_regs.
19081         (arm_coproc_mem_operand): Allow POST_INC/PRE_DEC.
19082         (arithmetic_instr, shift_op): Use arm_shift_nmem.
19083         (arm_print_operand): Use arm_print_condition.  Handle '(', ')', '.',
19084         '!' and 'L'.
19085         (arm_final_prescan_insn): Use extract_constrain_insn_cached.
19086         (thumb_expand_prologue): Use thumb_set_frame_pointer.
19087         (arm_file_start): Output directive for unified syntax.
19088         (arm_unwind_emit_set): Handle stack alignment instruction.
19089         * config/arm/lib1funcs.asm: Remove default for __ARM_ARCH__.
19090         Add v6t2, v7, v7a, v7r and v7m.
19091         (RETLDM): Add Thumb-2 code.
19092         (do_it, shift1, do_push, do_pop, COND, THUMB_SYNTAX): New macros.
19093         * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __thumb2__.
19094         (TARGET_THUMB1, TARGET_32BIT, TARGET_THUMB2, TARGET_DSP_MULTIPLY,
19095         TARGET_INT_SIMD, TARGET_UNIFIED_ASM, ARM_FT_STACKALIGN, IS_STACKALIGN,
19096         THUMB2_TRAMPOLINE_TEMPLATE, TRAMPOLINE_ADJUST_ADDRESS,
19097         ASM_OUTPUT_OPCODE, THUMB2_GO_IF_LEGITIMATE_ADDRESS,
19098         THUMB2_LEGITIMIZE_ADDRESS, CASE_VECTOR_PC_RELATIVE,
19099         CASE_VECTOR_SHORTEN_MODE, ADDR_VEC_ALIGN, ASM_OUTPUT_CASE_END,
19100         ADJUST_INSN_LENGTH): Define.
19101         (TARGET_REALLY_IWMMXT, TARGET_IWMMXT_ABI, CONDITIONAL_REGISTER_USAGE,
19102         STATIC_CHAIN_REGNUM, HARD_REGNO_NREGS, INDEX_REG_CLASS,
19103         BASE_REG_CLASS, MODE_BASE_REG_CLASS, SMALL_REGISTER_CLASSES,
19104         PREFERRED_RELOAD_CLASS, SECONDARY_OUTPUT_RELOAD_CLASS,
19105         SECONDARY_INPUT_RELOAD_CLASS, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P,
19106         TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE, HAVE_PRE_INCREMENT,
19107         HAVE_POST_DECREMENT, HAVE_PRE_DECREMENT, HAVE_PRE_MODIFY_DISP,
19108         HAVE_POST_MODIFY_DISP, HAVE_PRE_MODIFY_REG, HAVE_POST_MODIFY_REG,
19109         REGNO_MODE_OK_FOR_BASE_P, LEGITIMATE_CONSTANT_P,
19110         REG_MODE_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P, GO_IF_LEGITIMATE_ADDRESS,
19111         LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS,
19112         GO_IF_MODE_DEPENDENT_ADDRESS, MEMORY_MOVE_COST, BRANCH_COST,
19113         ASM_APP_OFF, ASM_OUTPUT_CASE_LABEL, ARM_DECLARE_FUNCTION_NAME,
19114         FINAL_PRESCAN_INSN, PRINT_OPERAND_PUNCT_VALID_P,
19115         PRINT_OPERAND_ADDRESS): Adjust for Thumb-2.
19116         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv): New declarations.
19117         * config/arm/arm-cores.def: Add arm1156t2-s, cortex-a8, cortex-r4 and
19118         cortex-m3.
19119         * config/arm/arm-tune.md: Regenerate.
19120         * config/arm/arm-protos.h: Update prototypes.
19121         * config/arm/vfp.md: Enable patterns for Thumb-2.
19122         (arm_movsi_vfp): Add movw alternative.  Use output_move_vfp.
19123         (arm_movdi_vfp, movsf_vfp, movdf_vfp): Use output_move_vfp.
19124         (thumb2_movsi_vfp, thumb2_movdi_vfp, thumb2_movsf_vfp,
19125         thumb2_movdf_vfp, thumb2_movsfcc_vfp, thumb2_movdfcc_vfp): New.
19126         * config/arm/libunwind.S: Add Thumb-2 code.
19127         * config/arm/constraints.md: Update include Thumb-2.
19128         * config/arm/ieee754-sf.S: Add Thumb-2/Unified asm support.
19129         * config/arm/ieee754-df.S: Ditto.
19130         * config/arm/bpabi.S: Ditto.
19131         * config/arm/t-arm (MD_INCLUDES): Add thumb2.md.
19132         * config/arm/predicates.md (low_register_operand,
19133         low_reg_or_int_operand, thumb_16bit_operator): New.
19134         (thumb_cmp_operand, thumb_cmpneg_operand): Rename...
19135         (thumb1_cmp_operand, thumb1_cmpneg_operand): ... to this.
19136         * config/arm/t-arm-elf: Add armv7 multilib.
19137         * config/arm/arm.md: Update patterns for Thumb-2 and Unified asm.
19138         Include thumb2.md.
19139         (UNSPEC_STACK_ALIGN, ce_count): New.
19140         (arm_incscc, arm_decscc, arm_umaxsi3, arm_uminsi3,
19141         arm_zero_extendsidi2, arm_zero_extendqidi2): New
19142         insns/expanders.
19143         * config/arm/fpa.md: Update patterns for Thumb-2 and Unified asm.
19144         (thumb2_movsf_fpa, thumb2_movdf_fpa, thumb2_movxf_fpa,
19145         thumb2_movsfcc_fpa, thumb2_movdfcc_fpa): New insns.
19146         * config/arm/cirrus.md: Update patterns for Thumb-2 and Unified asm.
19147         (cirrus_thumb2_movdi, cirrus_thumb2_movsi_insn,
19148         thumb2_cirrus_movsf_hard_insn, thumb2_cirrus_movdf_hard_insn): New
19149         insns.
19150         * doc/extend.texi: Document ARMv7-M interrupt functions.
19151         * doc/invoke.texi: Document Thumb-2 new cores+architectures.
19152
19153 2007-01-03  Jakub Jelinek  <jakub@redhat.com>
19154
19155         * unwind-dw2.c (SIGNAL_FRAME_BIT, EXTENDED_CONTEXT_BIT): Define.
19156         (struct _Unwind_Context): Rename args_size to flags, remove
19157         signal_frame field, add a new args_size field and version field.
19158         (_Unwind_IsSignalFrame, _Unwind_SetSignalFrame,
19159         _Unwind_IsExtendedContext): New inline functions.
19160         (_Unwind_GetGR, _Unwind_SetGR, _Unwind_GetGRPtr, _Unwind_SetGRPtr):
19161         Assume by_value array is only present if _Unwind_IsExtendedContext.
19162         (_Unwind_GetIPInfo, execute_cfa_program, uw_frame_state_for): Use
19163         _Unwind_IsSignalFrame.
19164         (__frame_state_for): Initialize context.flags to EXTENDED_CONTEXT_BIT.
19165         (uw_update_context_1): Use _Unwind_SetSignalFrame.
19166         (uw_init_context_1): Initialize context->flags to
19167         EXTENDED_CONTEXT_BIT.
19168         * config/rs6000/linux-unwind.h (frob_update_context): Use
19169         _Unwind_SetSignalFrame.
19170
19171 2007-01-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
19172
19173         PR middle-end/30353
19174         * gimplify.c (gimplify_modify_expr_complex_part): Move below
19175         tree_to_gimple_tuple.  Call tree_to_gimple_tuple when we need
19176         the value.
19177
19178 2007-01-03  Kazu Hirata  <kazu@codesourcery.com>
19179
19180         * config/i386/i386.h (NON_STACK_REG_P, REGNO_OK_FOR_SIREG_P,
19181         REGNO_OK_FOR_DIREG_P, REWRITE_ADDRESS, ASM_OPERAND_LETTER,
19182         RET, AT_SP): Remove.
19183         * config/i386/i386.md (*sse_prologue_save_insn): Use return
19184         instead of RET.
19185
19186         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
19187         * cfgbuild.c (find_basic_blocks): Likewise.
19188         * cfgrtl.c (rtl_create_basic_block): Likewise.
19189         * function.c (temp_slots_at_level): Likewise.
19190         * reg-stack.c (stack_regs_mentioned): Likewise.
19191         * regclass.c (allocate_reg_info): Likewise.
19192         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
19193         set_bb_for_stmt, move_block_to_fn): Likewise.
19194         * tree-complex.c (tree_lower_complex): Likewise.
19195         * vec.h (VEC_safe_grow_cleared): New.
19196
19197         * cgraphunit.c, tree-ssa-alias.c: Fix comment typos.
19198
19199 2007-01-03  Zdenek Dvorak <dvorakz@suse.cz>
19200
19201         * loop-unswitch.c (unswitch_loop): Pass probabilities to loopify.
19202         * tree-ssa-loop-unswitch.c (tree_unswitch_loop): Pass probabilities
19203         to loop_version.
19204         * cfgloopmanip.c (scale_loop_frequencies): Export.
19205         (loopify): Scale the frequencies by prescribed coefficients.
19206         (set_zero_probability): New function.
19207         (duplicate_loop_to_header_edge): Improve updating of frequencies.
19208         (lv_adjust_loop_entry_edge, loop_version): Set probabilities
19209         and frequencies according to arguments.
19210         * tree-ssa-loop-manip.c (tree_unroll_loop): Set probabilities
19211         correctly.
19212         * cfg.c (scale_bbs_frequencies_int): Allow scaling the frequencies up.
19213         * modulo-sched.c (sms_schedule): Set probabilities for entering
19214         versioned loop correctly.
19215         * tree-vect-transform.c (vect_transform_loop): Ditto.
19216         * cfgloop.h (loopify, loop_version): Declaration changed.
19217         (scale_loop_frequencies): Declared.
19218
19219 2007-01-02  Jan Hubicka  <jh@suse.cz>
19220
19221         * cgraph.c: Include tree-flow.h
19222         (cgraph_add_new-function): Handle IPA_SSA mode; execute
19223         early_local_passes.
19224         * cgraph.h (enum cgraph_state): Add CGRAPH_STATE_IPA_SSA.
19225         * tree-pass.h (pass_all_early_optimizations): Declare.
19226         * cgraphunit.c (cgraph_process_new_functions): Add IPA_SSA; execute
19227         early_local_passes.
19228         (cgraph_analyze_function): Do early_local_passes.
19229         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
19230         Do not add referenced vars.
19231         * tree-optimize.c (gate_all_optimizations): Do not execute when not in
19232         SSA form.
19233         (gate_all_early_local_passes): New gate.
19234         (pass_early_local_passes): Use new gate.
19235         (execute_early_local_optimizations): New functions.
19236         (gate_all_early_optimizations): New gate.
19237         (pass_all_early_optimizations): New pass.
19238         (execute_free_datastructures): Free SSA only when initialized.
19239         (gate_init_datastructures): Init only when optimizing.
19240         (tree_lowering_passes): Do early local passes when called late.
19241         * tree-profile.c (do_tree_profiling): Don't profile functions added
19242         late.
19243         (do_early_tree_profiling, pass_early_tree_profile): Kill.
19244         * tree-cfg.c (update_modified_stmts): Do not update when operands are
19245         not active.
19246         * passes.c (init_optimizations_passes): Reorder so we go into SSA
19247         during early_local_passes.
19248         * Makefile.in (cgraph.o): Add dependency on tree-flow.h.
19249
19250
19251 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
19252
19253         * Makefile.in: Update copyright year.
19254
19255 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
19256
19257         * Makefile.in: Export GCC_EXEC_PREFIX before calling $(RUNTEST)
19258         in $(lang_checks) and check-consistency targets.
19259
19260 2007-01-02  Jan Hubicka  <jh@suse.cz>
19261
19262         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
19263         Do not add referenced vars.
19264         * tree-cfg.c (update_modified_stmts): Do not update when SSA operands
19265         are not active.
19266         * passes.c (init_optimization_passes): Put mudflap_2 after
19267         free_datastructures.
19268
19269 2007-01-02  Jan Hubicka  <jh@suse.cz>
19270
19271         * tree-optimize (execute_fixup_cfg): Set after_inlining flag.
19272         Set NOTHROW flag on call statements proved to be nothrow.
19273         Update statement of local calls so new pure/const functions are
19274         updated. Update_ssa when in ssa form. Mark PHI nodes of nonlocal
19275         goto receivers.
19276         (tree_rest_of_compilation): Register hooks and initialize bitmap
19277         early. Do not set after_inlining flag.
19278
19279 2007-01-02  Steve Ellcey  <sje@cup.hp.com>
19280
19281         * sbitmap.c (HOST_BITS_PER_LONG_LONG):  Change to
19282         HOST_BITS_PER_LONGLONG
19283
19284 2007-01-02  Manuel Lopez-Ibanez <manu@gcc.gnu.org>
19285
19286         PR c/19977
19287         * c-typeck.c (store_init_value): Don't emit pedantic overflow
19288         warning for non-static initializers.
19289
19290 2007-01-02  Steven Bosscher  <steven@gcc.gnu.org>
19291
19292         * config/alpha/alpha.md, arm/arm.c, darwin.c, frv/frv.md,
19293         m32r/m32r.c, m32r/m32r.c, mn10300/mn10300.md, pa/pa.c,
19294         rs6000/rs6000.c, s390/s390.md, sh/sh.md, sparc/sparc.c:
19295         Always use set_unique_reg_note to add REG_EQUAL notes.
19296
19297 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
19298
19299         Revert:
19300         2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
19301
19302         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
19303         * cfgbuild.c (find_basic_blocks): Likewise.
19304         * cfgrtl.c (rtl_create_basic_block): Likewise.
19305         * function.c (temp_slots_at_level): Likewise.
19306         * reg-stack.c (stack_regs_mentioned): Likewise.
19307         * regclass.c (allocate_reg_info): Likewise.
19308         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
19309         set_bb_for_stmt, move_block_to_fn): Likewise.
19310         * tree-complex.c (tree_lower_complex): Likewise.
19311         * vec.h (VEC_safe_grow_cleared): New.
19312
19313 2007-01-02  Ian Lance Taylor  <iant@google.com>
19314
19315         * c-common.c (c_common_truthvalue_conversion): When warning about
19316         using an assignment as a truth value, set TREE_NO_WARNING.
19317
19318 2007-01-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
19319
19320         PR middle-end/7651
19321         * c.opt (Wold-style-declaration): New.
19322         * doc/invoke.texi (C-only Warning Options): New.
19323         (Wold-style-declaration): Document it.
19324         (Wextra): Enabled by -Wextra.
19325         * c-opts.c (c_common_post_options): Enabled by -Wextra.
19326         * c-decl.c (declspecs_add_scspec): Replace -Wextra with
19327         -Wold-style-declaration.
19328
19329 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
19330
19331         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
19332         * cfgbuild.c (find_basic_blocks): Likewise.
19333         * cfgrtl.c (rtl_create_basic_block): Likewise.
19334         * function.c (temp_slots_at_level): Likewise.
19335         * reg-stack.c (stack_regs_mentioned): Likewise.
19336         * regclass.c (allocate_reg_info): Likewise.
19337         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
19338         set_bb_for_stmt, move_block_to_fn): Likewise.
19339         * tree-complex.c (tree_lower_complex): Likewise.
19340         * vec.h (VEC_safe_grow_cleared): New.
19341
19342 2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
19343
19344         * c-common.c (c_common_nodes_and_builtins): Since variants of
19345         void_type_node get built before it is given a name, we need to
19346         give those variants the name, too.
19347         (complete_array_type): We need to work with the canonical main
19348         type of the array, from which we will build the qualified version.
19349         * params.def (PARAM_VERIFY_CANONICAL_TYPES): New.
19350         * print-tree.c (print_node): Display canonical type information
19351         for each type.
19352         * stor-layout.c (layout_type): When we don't know the
19353         alignment of a type for which we're building an array, we end up
19354         guessing wrong, so make the type require structural equality.
19355         * tree.c (make_node_stat): When we build a new type, it is its
19356         own canonical type.
19357         (build_type_attribute_qual_variant): When building an attribute
19358         variant, its canonical type is the non-attribute variant. However,
19359         if the attributes are target-dependent and they differ, we need to
19360         use structural equality checks for this type.
19361         (build_qualified_type): A qualified type is not equivalent to its
19362         unqualified variant; set the canonical type appropriately.
19363         (build_distinct_type_copy): When building a distinct type from
19364         another type, the new type is its own canonical type.
19365         (build_variant_type_copy): When building a new type variant, we
19366         assume that it is equivalent to the original type.
19367         (build_pointer_type_for_mode): When building a pointer type, also
19368         build a canonical type pointer.
19369         (build_reference_type_for_mode): When building a reference type,
19370         also build a canonical type reference.
19371         (build_index_type): When we can't hash an index type (e.g.,
19372         because its maximum value is negative), the index type requires
19373         structural equality tests.
19374         (build_array_type): Build the canonical form of an array type.
19375         (build_function_type): Function types require structural equality,
19376         because they contain default arguments, attributes, etc.
19377         (build_method_type_directly): Ditto for method types.
19378         (build_offset_type): Build the canonical offset type.
19379         (build_complex_type): Build the canonical vector type.
19380         (make_vector_type): Build the canonical vector type.
19381         * tree.h (TYPE_CANONICAL): New.
19382         (TYPE_STRUCTURAL_EQUALITY_P): New.
19383         (SET_TYPE_STRUCTURAL_EQUALITY): New.
19384         (struct tree_type): Added "canonical" field.
19385         * params.h (VERIFY_CANONICAL_TYPES): New.
19386         * doc/c-tree.texi (TYPE_CANONICAL): Document.
19387         (TYPE_STRUCTURAL_EQUALITY_P): Document.
19388         (SET_TYPE_STRUCTURAL_EQUALITY): Document.
19389         * doc/invoke.texi (verify-canonical-types): Document --param
19390         parameter for verifying canonical types.
19391
19392 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
19393
19394         * config.gcc (powerpc-*-eabispe*, powerpc-*-eabisimaltivec*,
19395         powerpc-*-eabisim*, powerpc-*-eabialtivec*, powerpc-*-eabi*,
19396         powerpc-*-rtems*, powerpc-wrs-vxworks, powerpc-wrs-vxworksae,
19397         powerpcle-*-eabisim*, powerpcle-*-eabi*): Add rs6000/e500.h to
19398         tm_file.
19399         * config/rs6000/e500.h: New.
19400         * config/rs6000/eabi.h (TARGET_SPE_ABI, TARGET_SPE, TARGET_E500,
19401         TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE, TARGET_E500_DOUBLE):
19402         Remove.
19403         * config/rs6000/linuxspe.h (TARGET_SPE_ABI, TARGET_SPE,
19404         TARGET_E500, TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE,
19405         TARGET_E500_DOUBLE): Remove.
19406         * config/rs6000/vxworks.h (TARGET_SPE_ABI, TARGET_SPE,
19407         TARGET_E500, TARGET_ISEL, TARGET_FPRS): Remove.
19408         * config/rs6000/rs6000.h (CHECK_E500_OPTIONS): Define.
19409         * config/rs6000/rs6000.c (rs6000_override_options): Use
19410         CHECK_E500_OPTIONS.
19411
19412 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
19413
19414         * config/rs6000/rs6000.c (print_operand): Check (TARGET_SPE ||
19415         TARGET_E500_DOUBLE), not TARGET_E500, for %y.
19416         (rs6000_generate_compare, rs6000_emit_sCOND, output_cbranch,
19417         rs6000_emit_cmove): Don't check TARGET_E500.
19418         * config/rs6000/rs6000.md (bunordered, bordered, sunordered,
19419         sordered): Don't check TARGET_E500.
19420
19421 2007-01-01  Eric Christopher  <echristo@apple.com>
19422
19423         * config/mips/mips.c (mips_regno_mode_ok_for_base_p): Use
19424         HARD_REGISTER_NUM_P.
19425
19426 2007-01-01  Roger Sayle  <roger@eyesopen.com>
19427
19428         * fold-const.c (fold_binary) <EQ_EXPR>: Fold "(X^C1) eq/ne C2" into
19429         "X eq/ne (C1^C2)".  Fold "(X^Z) eq/ne (Y^Z)" as "X eq/ne Y" when Z
19430         has no side-effects.  Fold "(X^C1) eq/ne (Y^C2)" as "(X^(C1^C2))
19431         eq/ne Y".
19432
19433 2007-01-01  Mike Stump  <mrs@apple.com>
19434
19435         * configure.ac: Remove support for building with Apple's gcc-3.1.
19436
19437 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
19438
19439         PR middle-end/30311
19440         * caller-save.c (add_stored_regs): Only handle SUBREGs if inner
19441         REG is a hard register.  Do not modify REG before calling
19442         subreg_nregs.
19443         * rtlanal.c (subreg_get_info): Don't assert size of XMODE is a
19444         multiple of the size of YMODE for certain lowpart cases.
19445
19446 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
19447
19448         PR middle-end/30253
19449         * gimplify (voidify_wrapper_expr): Update for
19450         GIMPLE_MODIFY_STMT.
19451
19452 2007-01-01  Andreas Schwab  <schwab@suse.de>
19453
19454         PR target/29166
19455         * config/ia64/ia64.c (ia64_compute_frame_size): Account space for
19456         save of BR0 in extra_spill_size instead of spill_size.
19457         (ia64_expand_prologue): Save BR0 outside of the gr/br/fr spill
19458         area.
19459         (ia64_expand_epilogue): Restore BR0 from its new location.
19460
19461 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
19462
19463         * gimplify.c (gimplify_init_constructor <case VECTOR_TYPE>):
19464         Use a temporary variable if the left hand side is not a gimple
19465         register.
19466
19467 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
19468
19469         * gimplify.c (gimplify_return_expr): Make the temporary variable
19470         for the return expression, a gimple register variable.
19471
19472 2007-01-01  Jan Hubicka  <jh@suse.cz>
19473
19474         * emit-rtl.c (emit_copy_of_insn_after): Do not call copy_insn_1 for
19475         INSN_LIST.
19476
19477 2007-01-01  Mike Stump  <mrs@apple.com>
19478
19479         * configure.ac (HAVE_GAS_LITERAL16): Add autoconf check for
19480         .literal16.
19481         * config/darwin.c (machopic_select_rtx_section): Use
19482         HAVE_GAS_LITERAL16.
19483         (darwin_mergeable_constant_section): Likewise.
19484         * configure: Regenerate.
19485         * config.in: Regenerate.
19486
19487 2007-01-01  Jan Hubicka  <jh@suse.cz>
19488             Andrew Pinski  <pinskia@gmail.com>
19489
19490         * cgraphunit.c (cgraph_optimize): Call cgraph_add_new_functions
19491         before starting IPA passes.