OSDN Git Service

PR tree-optimization/33655
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2007-10-09  James E. Wilson  <wilson@specifix.com>
2
3         PR tree-optimization/33655
4         PR middle-end/22156
5         * tree-sra.c (bitfield_overlaps_p): When fld->element is INTEGER_CST,
6         convert it to bitsizetype before size_binop call.
7
8 2007-10-09  Alexandre Oliva  <aoliva@redhat.com>
9
10         PR tree-optimization/33572
11         * tree-inline.c (update_ssa_across_abnormal_edges): Tolerate
12         the absence of a corresponding edge from the exit block.
13
14 2007-10-09  Alexandre Oliva  <aoliva@redhat.com>
15
16         PR middle-end/22156
17         * tree-sra.c (instantiate_element): Use BYTES_BIG_ENDIAN for
18         bit-field layout.
19         (sra_build_assignment): Likewise.  Set up mask depending on
20         precision, not type.
21         (sra_build_bf_assignment): Use BYTES_BIG_ENDIAN.  Don't overflow
22         computing bit masks.
23         (sra_build_elt_assignment): Don't view-convert from signed to
24         unsigned.
25         (sra_explode_bitfield_assignment): Use bit-field type if
26         possible.  Use BYTES_BIG_ENDIAN.
27
28 2007-10-08  Alexandre Oliva  <aoliva@redhat.com>
29
30         PR middle-end/22156
31         * tree-sra.c (scalarize_lsdt): Fix thinko in testing whether
32         the original stmt can throw.
33         (sra_build_bf_assignment): Fix type mismatch when applying negated
34         mask.
35
36 2007-10-08  Geoffrey Keating  <geoffk@apple.com>
37
38         * config/darwin.h (DARWIN_REGISTER_TARGET_PRAGMAS): Register
39         '#pragma mark' to be executed at preprocessing time.
40
41 2007-10-08  Ollie Wild  <aaw@google.com>
42
43         * varasm.c (compare_constant): Removed call to
44         lang_hooks.expand_constant.
45         (copy_constants): Removed call to lang_hooks.expand_constant.
46         (compute_reloc_for_constant): Removed call to
47         lang_hooks.expand_constant.
48         (output_addressed_constants): Removed call to
49         lang_hooks.expand_constant.
50         (constructor_static_from_elts_p): Removed call to
51         lang_hooks.expand_constant.
52         (output_constant): Removed calls to lang_hooks.expand_constant.
53         * langhooks.h (struct lang_hooks): Removed field expand_constant.
54         * langhooks-def.h (lhd_return_tree): Removed.
55         (LANG_HOOKS_EXPAND_CONSTANT): Removed.
56         (LANG_HOOKS_INITIALIZER): Removed LANG_HOOKS_EXPAND_CONSTANT.
57         * langhooks.c (lhd_return_tree): Removed.
58
59 2007-10-08  Mark Shinwell  <shinwell@codesourcery.com>
60
61         * combine.c (setup_incoming_promotions): Ensure that
62         arguments that have not undergone mode promotions do not
63         incorrectly get marked as being sign- or zero-extended.
64
65 2007-10-08  Richard Guenther  <rguenther@suse.de>
66
67         PR middle-end/33693
68         PR middle-end/33695
69         PR middle-end/33697
70         * fold-const.c (fold_binary): Use correct types in folding
71         of a * (1 << b) to (a << b).  Likewise for ~A & ~B to ~(A | B)
72         and building of RROTATE_EXPR.
73
74 2007-10-08  Richard Guenther  <rguenther@suse.de>
75
76         PR middle-end/33691
77         PR middle-end/33694
78         PR middle-end/33696
79         * fold-const.c (fold_binary): Use the correct types when
80         folding (A | CST1) & CST2 to (A & CST2) | (CST1 & CST2).
81         (fold_binary): Use the correct types when folding
82         (-A) - B to (-B) - A.
83         (fold_unary): Use the correct types when folding ~(X).
84
85 2007-10-08  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
86
87         * doc/invoke.texi (Wall): fix formatting issues.
88         
89 2007-10-07  Richard Sandiford  <rsandifo@nildram.co.uk>
90
91         * simplify-rtx.c (simplify_binary_operation_1): Canonicalize
92         truncated shift counts.
93
94 2007-10-07  Kazu Hirata  <kazu@codesourcery.com>
95
96         * config/m68k/m68k.c, config/m68k/m68k.md: Use the assembly
97         syntax for ASSEMBLER_DIALECT.
98         * config/m68k/m68k.h (ASSEMBLER_DIALECT): New.
99
100 2007-10-06  Eric Botcazou  <ebotcazou@adacore.com>
101             Nathan Froyd  <froydnj@codesourcery.com>
102
103         * dwarf2out.c (dwarf2out_frame_init): Check for DWARF2_FRAME_INFO
104         when determining whether to record INCOMING_RETURN_ADDR_RTX.
105
106 2007-10-06  Eric Botcazou  <ebotcazou@adacore.com>
107
108         Revert:
109         2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
110
111         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
112         * cgraphunit.c (cgraph_expand_function): If DECL_IGNORED_P is set on
113         the function, temporarily point the debug interface to the null one.
114
115 2007-10-06  Alexandre Oliva  <aoliva@redhat.com>
116
117         PR tree-optimization/33655
118         PR middle-end/22156
119         * tree-sra.c (bitfield_overlaps_p): Handle array and complex
120         elements.
121
122 2007-10-06  Alexandre Oliva  <aoliva@redhat.com>
123
124         PR tree-optimization/33572
125         * tree-cfg.c (verify_stmts): Check for missing PHI defs.
126         * tree-inline.c (update_ssa_across_eh_edges): Renamed to...
127         (update_ssa_across_abnormal_edges): ... this.  Set slots in the
128         return PHI node.
129         (copy_edges_for_bb): Handle nonlocal label edges.
130         (make_nonlocal_label_edges): Deleted.
131         (optimize_inline_calls): Don't call it.
132
133 2007-10-05  Hans-Peter Nilsson  <hp@axis.com>
134
135         * gthr-single.h: Revert last change.
136
137 2007-10-05  Michael Matz  <matz@suse.de>
138
139         PR middle-end/33667
140         * lower-subreg.c (decompose_multiword_subregs): Use
141         validate_unshare_change().
142
143 2007-10-05  Peter Bergner  <bergner@vnet.ibm.com>
144
145         * ra-conflict.c: Include "sparseset.h".
146         (conflicts): Change to HOST_WIDEST_FAST_INT.
147         (allocnos_live): Redefine variable as a sparseset.
148         (SET_ALLOCNO_LIVE, CLEAR_ALLOCNO_LIVE, GET_ALLOCNO_LIVE): Delete macros.
149         (allocno_row_words): Removed global variable.
150         (partial_bitnum, max_bitnum, adjacency_pool, adjacency): New variables.
151         (CONFLICT_BITNUM, CONFLICT_BITNUM_FAST): New defines.
152         (conflict_p, set_conflict_p, set_conflicts_p): New functions.
153         (record_one_conflict_between_regnos): Cache allocno values and reuse.
154         Use set_conflict_p.
155         (record_one_conflict): Update uses of allocnos_live to use
156         the sparseset routines.  Use set_conflicts_p.
157         (mark_reg_store): Likewise.
158         (set_reg_in_live): Likewise.
159         (global_conflicts): Update uses of allocnos_live.
160         Use the new adjacency list to visit an allocno's neighbors
161         rather than iterating over all possible allocnos.
162         Call set_conflicts_p to setup conflicts rather than adding
163         them manually.
164         * global.c: Comments updated.  
165         (CONFLICTP): Delete define.
166         (regno_compare): New function.  Add prototype.
167         (global_alloc): Sort the allocno to regno mapping according to
168         which basic blocks the regnos are referenced in.  Modify the
169         conflict bit matrix to a compressed triangular bitmatrix.
170         Only allocate the conflict bit matrix and adjacency lists if
171         we are actually going to allocate something.
172         (expand_preferences): Use conflict_p.  Update uses of allocnos_live.
173         (prune_preferences): Use the FOR_EACH_CONFLICT macro to visit an
174         allocno's neighbors rather than iterating over all possible allocnos.
175         (mirror_conflicts): Removed function.
176         (dump_conflicts): Iterate over regnos rather than allocnos so
177         that all dump output will be sorted by regno number.
178         Use the FOR_EACH_CONFLICT macro.
179         * ra.h: Comments updated.
180         (conflicts): Update prototype to HOST_WIDEST_FAST_INT.
181         (partial_bitnum, max_bitnum, adjacency, adjacency_pool): Add prototypes.
182         (ADJACENCY_VEC_LENGTH, FOR_EACH_CONFLICT): New defines.
183         (adjacency_list_d, adjacency_iterator_d): New types.
184         (add_neighbor, adjacency_iter_init, adjacency_iter_done,
185         adjacency_iter_next, regno_basic_block): New static inline functions.
186         (EXECUTE_IF_SET_IN_ALLOCNO_SET): Removed define.
187         (conflict_p): Add function prototype.
188         * sparseset.h, sparseset.c: New files.
189         * Makefile.in (OBJS-common): Add sparseset.o.
190         (sparseset.o): New rule.
191
192 2007-10-05  Richard Guenther  <rguenther@suse.de>
193
194         PR middle-end/33666
195         * fold-const.c (fold_unary): Do not fold (long long)(int)ptr
196         to (long long)ptr.
197
198 2007-10-05  Michael Matz  <matz@suse.de>
199
200         PR inline-asm/33600
201         * function.c (match_asm_constraints_1): Check for input
202         being used in the outputs.
203
204 2007-10-05  Richard Guenther  <rguenther@suse.de>
205
206         * tree-cfg.c (verify_gimple_expr): Accept OBJ_TYPE_REF.
207
208 2007-10-05  Richard Sandiford  <rsandifo@nildram.co.uk>
209
210         PR target/33635
211         * config/mips/mips.c (mips_register_move_cost): Rewrite to use
212         subset checks.  Make the cost of FPR -> FPR moves depend on
213         mips_mode_ok_for_mov_fmt_p.
214
215 2007-10-04  Doug Kwan  <dougkwan@google.com>
216
217         * gthr-posix.h (__gthread_cond_broadcast, __gthread_cond_wait,
218         __gthread_cond_wait_recursive): Add to extend interface for POSIX
219         conditional variables. (__GTHREAD_HAS_COND): Macro defined to signify
220         support of conditional variables.
221         * gthr-posix95.h (__gthread_cond_broadcast, __gthread_cond_wait,
222         __gthread_cond_wait_recursive): Add to extend interface for POSIX
223         conditional variables. (__GTHREAD_HAS_COND): Macro defined to signify
224         support of conditional variables.
225         * gthr-single.h (__gthread_cond_broadcast, __gthread_cond_wait,
226         __gthread_cond_wait_recursive): Add to extend interface for POSIX
227         conditional variables.
228         * gthr.h: Update comments to document new interface.
229
230 2007-10-04  Geoffrey Keating  <geoffk@apple.com>
231
232         * cgraphunit.c (cgraph_build_static_cdtor): Don't set
233         DECL_IGNORED_P.
234
235 2007-10-04  Anatoly Sokolov <aesok@post.ru>
236
237         * config/avr/avr.c (expand_epilogue): Don't set RTX_FRAME_RELATED_P.
238
239 2007-10-04  Richard Guenther  <rguenther@suse.de>
240
241         PR middle-end/33641
242         * tree-cfg.c (verify_gimple_expr): Operand one of POINTER_PLUS_EXPR
243         does not need to be of INTEGER_TYPE.
244         (verify_gimple_2): New function split out from ...
245         (verify_gimple_1): ... here.  ICE if there was an error during
246         verification.
247
248 2007-10-04  Michael Matz  <matz@suse.de>
249
250         PR rtl-optimization/33653
251         * dce.c (deletable_insn_p_1): Use volatile_refs_p().
252         * dse.c (scan_insn): Same.
253
254 2007-10-04  Kazu Hirata  <kazu@codesourcery.com>
255
256         * config.gcc: Remove USE_GAS for m68k targets.
257
258 2007-10-04  Richard Guenther  <rguenther@suse.de>
259
260         PR tree-optimization/33627
261         * tree-gimple.h (canonicalize_cond_expr_cond): Declare.
262         * tree-gimple.c (canonicalize_cond_expr_cond): New function,
263         split out from ...
264         * tree-ssa-forwprop.c (combine_cond_expr_cond): ... here.
265         * tree-ssa-ifcombine.c (ifcombine_iforif): Use it.
266
267 2007-10-04  Anatoly Sokolov <aesok@post.ru>
268
269         * config/avr/avr.c (commands_in_file, commands_in_prologues, 
270         commands_in_epilogues): Remove variables.
271         (avr_file_start): Remove unneded initializations of commands_in_file,
272         commands_in_prologues and commands_in_epilogues variables.
273         (avr_file_end): Remove dead code.
274
275 2007-10-04  Kazu Hirata  <kazu@codesourcery.com>
276
277         * config/m68k/m68k.c (m68k_output_movem): Use the MOTOROLA if
278         MOTOROLA is to true.
279
280 2007-10-03  Richard Sandiford  <rsandifo@nildram.co.uk>
281
282         PR target/33635
283         * config/mips/mips-protos.h (mips_split_64bit_move): Rename to...
284         (mips_split_doubleword_move): ...this.
285         * config/mips/mips.c (mips_subword): Extend to handle 64-bit words;
286         use natural endianness for multi-format FPR values.
287         (mips_split_64bit_move): Rename to...
288         (mips_split_doubleword_move): ...this and extend to 64-bit words.
289         Use move_doubleword_fpr* patterns for moves involving FPRs.
290         (mips_save_reg): Update the call to mips_split_64bit_move.
291         (mips_secondary_reload_class): Return NO_REGS for any reload of a
292         nonzero constant into an FPR if the constant can be forced to memory.
293         * config/mips/mips.md: Update the splitter calls to
294         mips_split_64bit_move.
295         (UNSPEC_LOAD_DF_LOW): Rename to...
296         (UNSPEC_LOAD_LOW): ...this.
297         (UNSPEC_LOAD_DF_HIGH): Rename to...
298         (UNSPEC_LOAD_HIGH): ...this.
299         (UNSPEC_STORE_DF_HIGH): Rename to...
300         (UNSPEC_STORE_WORD): ...this.
301         (SPLITF): New mode iterator.
302         (HALFMODE): New mode attribute.
303         (movtf): New expander.
304         (*movtf_internal): New define_insn_and_split.
305         (move_doubleword_fpr<mode>): New expander.
306         (load_df_low, load_df_high, store_df_high, mthc1, mfhc1): Replace
307         with...
308         (load_low<mode>, load_high<mode>, store_word<mode>, mthc1<mode>)
309         (mfhc1<mode>): ...these more general patterns.
310
311 2007-10-03  Alexandre Oliva  <aoliva@redhat.com>
312
313         * cfgrtl.c (rtl_block_ends_with_call_p): Skip notes at the end.
314
315 2007-10-03  Alexandre Oliva  <aoliva@redhat.com>
316
317         * gcse.c (hash_scan_set): Insert set in insn before note at
318         the end of basic block.
319
320 2007-10-03  Sebastian Pop  <sebastian.pop@amd.com>
321
322         PR tree-optimization/33576
323         * testsuite/gcc.dg/tree-ssa/pr33576.c: New.
324         * tree-loop-linear.c (linear_transform_loops): Call remove_iv.
325         * lambda.h (lambda_loopnest_to_gcc_loopnest): New parameter.
326         (remove_iv): Declared.
327         * lambda-code.c (remove_iv): Not static.
328         (lambda_loopnest_to_gcc_loopnest): New parameter remove_ivs.
329         Don't remove ivs there, save ivs in the buffer.
330
331 2007-10-03  Jason Merrill  <jason@redhat.com>
332
333         PR c++/15764
334         * tree-eh.c (same_handler_p): New fn.
335         (optimize_double_finally): New fn.
336         (refactor_eh_r): New fn.
337         (refactor_eh): New fn.
338         (pass_refactor_eh): New pass.
339         * tree-pass.h: Declare it.
340         * passes.c (init_optimization_passes): Add it.
341
342 2007-10-03  Doug Kwan  <dougkwan@google.com>
343         Richard Guenther  <rguenther@suse.de>
344
345         PR debug/31899
346         * dwarf2out.c (reference_to_unused): Disable sanity checking,
347         be conservative instead.
348
349 2007-10-03  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
350
351         PR fortran/26682
352         * doc/invoke.texi (-fwhole-program): Document that Fortran
353         doesn't support this option.
354
355 2007-10-02  Richard Sandiford  <rsandifo@nildram.co.uk>
356
357         PR middle-end/33617
358         * expr.c (expand_expr_addr_expr_1): Pass CONSTRUCTORs to
359         expand_expr.
360
361 2007-10-02  David Daney  <ddaney@avtrex.com>
362
363         * config/mips/mips.md (sync_compare_and_swap<mode>): Handle compare
364         against constant zero.
365         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP):  Handle constant zero
366         operand.
367
368 2007-09-02  Kenneth Zadeck <zadeck@naturalbridge.com>
369
370         * ra-conflict.c: New file.
371         * ra.h: New file.
372         * reload.c (push_reload, find_dummy_reload): Change DF_RA_LIVE
373         usage to DF_LIVE usage.
374         * rtlanal.c (subreg_nregs_with_regno): New function.  
375         * df-scan.c (df_def_record_1, df_uses_record): Add code to set
376         DF_REF_EXTRACT, DF_REF_STRICT_LOWER_PART, and DF_REF_SUBREG flags.
377         (df_has_eh_preds): Removed.
378         (df_bb_refs_collect, df_bb_refs_collect, df_bb_refs_collect,
379         df_exit_block_uses_collect): Changed call from df_has_eh_preds to
380         bb_has_eh_pred.
381         * global.c (allocno, max_allocno, conflicts, allocno_row_words,
382         reg_allocno, EXECUTE_IF_SET_IN_ALLOCNO_SET): Moved to ra.h
383         (SET_ALLOCNO_LIVE, CLEAR_ALLOCNO_LIVE): Moved to ra-conflicts.c.
384         (regs_set, record_one_conflict, record_conflicts, mark_reg_store,
385         mark_reg_clobber, mark_reg_conflicts, mark_reg_death): Deleted.
386         (global_alloc): Turn off rescanning insns after call to
387         global_conflicts and added call to set_preferences.
388         (global_conflicts): Moved to ra-alloc.c.
389         (set_preferences_1, set_preferences): New function.
390         (mirror_conflicts): Changed types for various variables.
391         (mark_elimination): Change DF_RA_LIVE
392         usage to DF_LIVE usage.
393         (build_insn_chain): Rewritten from scratch and made local.
394         (print_insn_chain, print_insn_chains): New functions.
395         (dump_conflicts): Do not print conflicts for fixed_regs.
396         (rest_of_handle_global_alloc): Turn off insn rescanning.
397         * hard-reg-set.h: Fixed comment.
398         * local-alloc.c (update_equiv_regs): Change DF_RA_LIVE
399         usage to DF_LIVE usage and delete refs to TOP sets.
400         (block_alloc): Mark regs as live if they are in the artificial
401         defs at top of block.
402         (find_stack_regs): New function.
403         (rest_of_handle_local_alloc): Changed urec problem to live
404         problem and do not turn off df rescanning.
405         * df.h (DF_UREC, DF_UREC_BB_INFO, DF_LIVE_TOP, DF_RA_LIVE_IN,
406         DF_RA_LIVE_TOP, DF_RA_LIVE_OUT, df_urec_bb_info, df_urec,
407         df_urec_add_problem, df_urec_get_bb_info, df_has_eh_preds): Removed.
408         (DF_CHAIN, DF_NOTE, DF_CHAIN): Renumbered.
409         (DF_REF_EXTRACT, DF_REF_STRICT_LOWER_PART, DF_REF_SUBREG): New
410         fields in df_ref_flags.  The rest have been renumbered.  
411         * init-regs.c (initialize_uninitialized_regs): Enhanced debugging
412         at -O1.
413         * rtl.h (subreg_nregs_with_regno): New function.
414         * df-problems.c: (df_get_live_out, df_get_live_in,
415         df_get_live_top): Removed reference to DF_RA_LIVE.
416         (df_lr_reset, df_lr_transfer_function, df_live_free_bb_info,
417         df_live_alloc, df_live_reset, df_live_local_finalize,
418         df_live_free): Make top set only if different from in set.
419         (df_lr_top_dump, df_live_top_dump): Only print top set if
420         different from in set.
421         (df_lr_bb_local_compute): Removed unnecessary check.
422         (df_urec_problem_data, df_urec_set_bb_info, df_urec_free_bb_info, 
423         df_urec_alloc, df_urec_mark_reg_change, earlyclobber_regclass, 
424         df_urec_check_earlyclobber, df_urec_mark_reg_use_for_earlyclobber,
425         df_urec_mark_reg_use_for_earlyclobber_1, df_urec_bb_local_compute,
426         df_urec_local_compute, df_urec_init, df_urec_local_finalize, 
427         df_urec_confluence_n, df_urec_transfer_function, df_urec_free, 
428         df_urec_top_dump, df_urec_bottom_dump, problem_UREC,
429         df_urec_add_problem): Removed.
430         (df_simulate_fixup_sets): Changed call from df_has_eh_preds to
431         bb_has_eh_pred. 
432         * Makefile.in (ra-conflict.o, ra.h): New dependencies.
433         * basic_block.h (bb_has_abnormal_pred): New function.
434         * reload1.c (compute_use_by_pseudos): Change DF_RA_LIVE
435         usage to DF_LIVE usage.
436         
437 2007-10-02  Revital Eres  <eres@il.ibm.com>
438
439         * config/rs6000/predicates.md (easy_vector_constant): Return false
440         for 750CL paired vectors.
441         * config/rs6000/paired.md (movv2sf_paired): Fix move of easy
442         vector constant.
443         (vec_initv2sf): Add new description.
444         (vconcatsf): Likewise.
445         * config/rs6000/rs6000-protos.h: Declare paired_expand_vector_init.
446         * config/rs6000/rs6000.c (paired_expand_vector_init): New function.
447
448 2007-10-01  Alexandre Oliva  <aoliva@redhat.com>
449
450         * tree-ssa-sink.c (sink_code_in_bb): Don't stop sinking after
451         sinking the last stmt in a BB.
452
453 2007-10-01  Alexandre Oliva  <aoliva@redhat.com>
454
455         PR middle-end/22156
456         * tree-sra.c (struct sra_elt): Add in_bitfld_block.
457         (sra_hash_tree): Handle BIT_FIELD_REFs.
458         (sra_elt_hash): Don't hash bitfld blocks.
459         (sra_elt_eq): Skip them in parent compares as well.  Handle
460         BIT_FIELD_REFs.
461         (build_element_name_1): Handle BIT_FIELD_REFs.
462         (instantiate_element): Propagate nowarn from parents.  Create
463         BIT_FIELD_REF for variables that are widened by scalarization.
464         Gimple-zero-initialize all bit-field variables that are not
465         part of parameters that are going to be scalarized on entry.
466         (instantiate_missing_elements_1): Return the sra_elt.
467         (canon_type_for_field): New.
468         (try_instantiate_multiple_fields): New.  Infer widest possible
469         access mode from decl or member type, but clip it at word
470         size, and only widen it if a field crosses an alignment
471         boundary.
472         (instantiate_missing_elements): Use them.
473         (generate_one_element_ref): Handle BIT_FIELD_REFs.
474         (scalar_bitfield_p): New.
475         (sra_build_assignment): Optimize assignments from scalarizable
476         BIT_FIELD_REFs.  Use BITS_BIG_ENDIAN to determine shift
477         counts.
478         (REPLDUP): New.
479         (sra_build_bf_assignment): New.  Optimize assignments to
480         scalarizable BIT_FIELD_REFs.
481         (sra_build_elt_assignment): New.  Optimize BIT_FIELD_REF
482         assignments to full variables.
483         (generate_copy_inout): Use the new macros and functions.
484         (generate_element_copy): Likewise.  Handle bitfld differences.
485         (generate_element_zero): Don't recurse for blocks.  Use
486         sra_build_elt_assignment.
487         (generate_one_element_init): Take elt instead of var.  Use
488         sra_build_elt_assignment.
489         (generate_element_init_1): Adjust.
490         (bitfield_overlap_info): New struct.
491         (bitfield_overlaps_p): New.
492         (sra_explode_bitfield_assignment): New.  Adjust widened
493         variables to account for endianness.
494         (sra_sync_for_bitfield_assignment): New.
495         (scalarize_use): Re-expand assignment to/from scalarized
496         BIT_FIELD_REFs.  Explode or sync needed members for
497         BIT_FIELD_REFs accesses or assignments.  Use REPLDUP.
498         (scalarize_copy): Use REPLDUP.
499         (scalarize_ldst): Move assert before dereference.  Adjust EH
500         handling.
501         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
502
503 2007-10-01  Paolo Bonzini  <bonzini@gnu.org>
504
505         * simplify-rtx.c (comparison_result, simplify_relational_operation_1):
506         Rename CR_* constants to CMP_*.  Fix spacing.
507
508 2007-10-01  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
509
510         PR other/33585
511         * Makefile.in (build_html_dir/gccinstall): gccinstall.texi needs
512         to be processed with the special script doc/install.texi2html.
513         
514 2007-09-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
515
516         * doc/invoke.texi (Wall): List the options enabled by Wall.
517         (Wstrict-aliasing): Add missing @option.
518         
519 2007-09-30  Richard Sandiford  <rsandifo@nildram.co.uk>
520
521         * config/mips/mips.c (mips_split_64bit_move): Use gen_rtx_REG_offset
522         rather than gen_lowpart to change a register from DImode to DFmode.
523         (mips_cannot_change_mode_class): Only allow FPRs to change mode if
524         both FROM and TO are integer modes that are no bigger than 4 bytes.
525         (mips_mode_ok_for_mov_fmt_p): New function.
526         (mips_preferred_reload_class): Use it instead of FLOAT_MODE_P.
527         (mips_secondary_reload_class): Tweak formatting and comments.
528         Use reg_class_subset_p instead of direct comparisons with
529         classes.  Only allow direct FPR<->FPR moves for modes that
530         satisfy mips_mode_ok_for_mov_fmt_p.  Only allow loads and stores
531         for 4- and 8-byte types.  Handle reloads in which X is an FPR.
532         * config/mips/mips.md (*movdi_gp32_fp64): Remove f<-f alternative.
533         (*movdi_64bit): Likewise.
534         (*movsi_internal): Likewise.
535         (*movhi_internal): Likewise.
536         (*movqi_internal): Likewise.
537
538 2007-09-30  Diego Novillo  <dnovillo@google.com>
539
540         PR 33593
541         * tree-ssa-ter.c (is_replaceable_p): Return false if STMT may
542         throw an exception.
543
544 2007-09-30  Uros Bizjak  <ubizjak@gmail.com>
545
546         PR tree-optimization/33597
547         * tree-vect-analyze.c (vect_build_slp_tree): Check if optab handler
548         for LSHIFT_EXPR and RSHIFT_EXPR is available for vec_mode.
549
550 2007-09-28  Uros Bizjak  <ubizjak@gmail.com>
551
552         * config/i386/i386.c (ix86_expand_move): Use can_create_pseudo_p ()
553         instead of variants of (!reload_in_progress && !reload_completed).
554         (x86_expand_vector_move): Ditto.
555
556 2007-09-28  Ollie Wild  <aaw@google.com>
557
558         Revert
559         2007-09-27  Ollie Wild  <aaw@google.com>
560
561         * varasm.c (compare_constant): Removed call to
562         lang_hooks.expand_constant.
563         (copy_constants): Removed call to lang_hooks.expand_constant.
564         (compute_reloc_for_constant): Removed call to
565         lang_hooks.expand_constant.
566         (output_addressed_constants): Removed call to
567         lang_hooks.expand_constant.
568         (constructor_static_from_elts_p): Removed call to
569         lang_hooks.expand_constant.
570         (output_constant): Removed calls to lang_hooks.expand_constant.
571         * langhooks.h (struct lang_hooks): Removed field expand_constant.
572         * langhooks-def.h (lhd_return_tree): Removed.
573         (LANG_HOOKS_EXPAND_CONSTANT): Removed.
574         (LANG_HOOKS_INITIALIZER): Removed LANG_HOOKS_EXPAND_CONSTANT.
575         * langhooks.c (lhd_return_tree): Removed.
576
577 2007-09-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
578
579         PR target/33347
580         * config/spu/spu.c (spu_expand_insv): Call copy_rtx on the second
581         argument to gen_selb.
582
583 2007-09-28  Chao-ying Fu  <fu@mips.com>
584
585         * libgcc-std.ver: Add fixed-point routines to GCC_4.3.0 section.
586         * doc/libgcc.texi (Fixed-point fractional library routines):
587         Fix typos for neg and cmp functions.
588
589 2007-09-28  Michael Matz  <matz@suse.de>
590
591         PR rtl-optimization/33552
592         * function.c (match_asm_constraints_1): Check for overlap in
593         inputs and replace all occurences.
594
595 2007-09-28  Richard Sandiford  <rsandifo@nildram.co.uk>
596
597         * config/mips/mips.c (override_options): Fix comment typo.
598
599 2007-09-28  Jie Zhang  <jie.zhang@analog.com>
600
601         * config.gcc (bfin*-linux-uclibc*): Set extra_parts
602         to "crtbegin.o crtbeginS.o crtend.o crtendS.o".
603         * config/bfin/t-bfin-linux (crti.o): Don't build.
604         (crtn.o): Likewise.
605         (EXTRA_MULTILIB_PARTS): Remove crti.o and crtn.o.
606         * config/bfin/t-bfin-uclinux (crti.o): Don't build.
607         (crtn.o): Likewise.
608         (EXTRA_MULTILIB_PARTS): Remove crti.o and crtn.o.
609
610 2007-09-27  Ollie Wild  <aaw@google.com>
611
612         * varasm.c (compare_constant): Removed call to
613         lang_hooks.expand_constant.
614         (copy_constants): Removed call to lang_hooks.expand_constant.
615         (compute_reloc_for_constant): Removed call to
616         lang_hooks.expand_constant.
617         (output_addressed_constants): Removed call to
618         lang_hooks.expand_constant.
619         (constructor_static_from_elts_p): Removed call to
620         lang_hooks.expand_constant.
621         (output_constant): Removed calls to lang_hooks.expand_constant.
622         * langhooks.h (struct lang_hooks): Removed field expand_constant.
623         * langhooks-def.h (lhd_return_tree): Removed.
624         (LANG_HOOKS_EXPAND_CONSTANT): Removed.
625         (LANG_HOOKS_INITIALIZER): Removed LANG_HOOKS_EXPAND_CONSTANT.
626         * langhooks.c (lhd_return_tree): Removed.
627
628 2007-09-27  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
629
630         PR middle-end/33436
631         * expr.c (emit_group_load_1): Split constant double when destination
632         length is half source length.
633
634 2007-09-27  Richard Sandiford  <rsandifo@nildram.co.uk>
635
636         * config/mips/mips.h (PTF_AVOID_BRANCHLIKELY): New macro.
637         (mips_cpu_info): Add tune_flags.
638         (GENERATE_BRANCHLIKELY): Remove TARGET_SR71K check.
639         * config/mips/mips.c (mips_cpu_info_table): Add tune_flags fields.
640         Remove end marker.
641         (override_options): Remove deprecation code.  Use branch-likely
642         instructions for optimize_size or if the tuning flags do not
643         suggest otherwise.  Tweak warning.
644         (mips_matching_cpu_name_p, mips_parse_cpu): Use ARRAY_SIZE.
645
646 2007-09-27  Matthias Klose  <doko@ubuntu.com>
647
648         * config/i386/t-linux64 (MULTILIB_OSDIRNAMES): Use ../lib32 as the
649         multilib osdirname if it exists.
650         * config/rs6000/t-linux64 (MULTILIB_OSDIRNAMES): Likewise.
651
652 2007-09-27  Ian Lance Taylor  <iant@google.com>
653
654         PR tree-optimization/33565
655         * tree-ssa-loop-ch.c (copy_loop_headers): Set TREE_NO_WARNING on
656         assignments of comparisons.
657         * tree-ssa-sccvn.c (simplify_binary_expression): Add stmt
658         parameter.  Change caller.  Defer overflow warnings around call to
659         fold_binary.
660         * fold-const.c (fold_undefer_overflow_warnings): Don't warn if
661         TREE_NO_WARNING is set on the statement.
662         * tree-ssa-forwprop.c
663         (tree_ssa_forward_propagate_single_use_vars): Don't test
664         TREE_NO_WARNING when calling fold_undefer_overflow_warnings.
665         * tree-cfg.c (fold_cond_expr_cond): Likewise.
666
667 2007-09-27  Joseph Myers  <joseph@codesourcery.com>
668
669         * config/rs6000/rs6000.c (rs6000_legitimize_address): Do not
670         reduce offset by units of 0x10000 for SPE vector modes or modes
671         used with E500 double instructions.
672
673 2007-09-04  Paolo Bonzini  <bonzini@gnu.org>
674
675         * simplify-rtx.c (comparison_result): New.
676         (simplify_const_relational_operation): Use it instead of the five
677         "equal|op[01]ltu?" variables; consequently remove redundant "else"s.
678         Improve bounds-checking optimizations; remove subsumed POPCOUNT
679         optimizations.  Extract nonzero_address_p optimizations into a
680         separate "if" together with optimizations where op1 is const0_rtx.
681         Optimize comparing an IOR with zero.  Simplify op0 RELOP op0 for
682         floating-point arguments too when appropriate.  Hoist test for ABS
683         outside the final switch statement.
684         * cse.c (fold_rtx): Don't look for an IOR equivalent of
685         folded_arg0 if we found a constant equivalent.  Remove
686         transformations done in simplify-rtx.c for "op0 RELOP op0".
687
688 2007-09-27  Jakub Jelinek  <jakub@redhat.com>
689
690         * builtins.c (expand_builtin, expand_builtin_object_size,
691         expand_builtin_memory_chk, maybe_emit_chk_warning,
692         maybe_emit_sprintf_chk_warning): Use new %K format string specifier
693         for diagnostics.
694         * expr.c (expand_expr_real_1): Likewise.
695         * langhooks-def.h (struct diagnostic_info): Add forward decl.
696         (lhd_print_error_function): Add third argument.
697         * langhooks.h (struct diagnostic_info): Add forward decl.
698         (struct lang_hooks): Add third argument to print_error_function.
699         * diagnostic.h (diagnostic_info): Add abstract_origin field.
700         (diagnostic_last_function_changed, diagnostic_set_last_function): Add
701         second argument.
702         (diagnostic_report_current_function): Likewise.
703         * toplev.c (announce_function): Pass NULL as second argument to
704         diagnostic_set_last_function.
705         * diagnostic.c (diagnostic_report_current_function): Add second
706         argument, pass it as third argument to lang_hooks.print_error_function.
707         (default_diagnostic_starter): Pass DIAGNOSTIC as second argument
708         to diagnostic_report_current_function.
709         (diagnostic_report_diagnostic): Initialize diagnostic->abstract_origin
710         and message.abstract_origin.
711         (verbatim): Initialize abstract_origin.
712         * pretty-print.h (text_info): Add abstract_origin field.
713         * pretty-print.c (pp_base_format): Handle %K.
714         * langhooks.c (lhd_print_error_function): Add third argument.  If
715         diagnostic->abstract_origin, print virtual backtrace.
716         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
717         gcc_cdiag_char_table, gcc_cxxdiag_char_table): Support %K.
718         (init_dynamic_diag_info): Likewise.
719
720 2007-09-26  David Daney  <ddaney@avtrex.com>
721
722         PR target/33479
723         * config/mips/mips.md (sync_compare_and_swap<mode>, sync_old_add<mode>,
724         sync_new_add<mode>, sync_old_<optab><mode>, sync_new_<optab><mode>,
725         sync_old_nand<mode>, sync_new_nand<mode>,
726         sync_lock_test_and_set<mode>): Fix '&' constraint modifiers.
727         Update length attributes.
728         (sync_add<mode>, sync_sub<mode>, sync_old_sub<mode>,
729         sync_new_sub<mode>, sync_<optab><mode>, sync_nand<mode>): Update
730         length attributes.
731         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP, MIPS_SYNC_OP,
732         MIPS_SYNC_OLD_OP, MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND,
733         MIPS_SYNC_OLD_NAND, MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE): Add
734         post-loop sync.
735
736 2007-09-26  Richard Guenther  <rguenther@suse.de>
737
738         PR tree-optimization/33563
739         * tree-ssa-dse.c (get_use_of_stmt_lhs): Rename to ...
740         (get_kill_of_stmt_lhs): ... this.  Re-structure.  Handle
741         aggregate stores.
742         (dse_optimize_stmt): Call get_kill_of_stmt_lhs instead of
743         get_use_of_stmt_lhs.
744
745 2007-09-26  Joseph Myers  <joseph@codesourcery.com>
746
747         PR c/25309
748         * c-common.c (complete_array_type): Diagnose too-large arrays and
749         set type to error_mark_node.
750
751 2007-09-26  Richard Guenther  <rguenther@suse.de>
752
753         PR tree-optimization/30375
754         PR tree-optimization/33560
755         * tree-ssa-dse.c (get_use_of_stmt_lhs): Give up on uses
756         with calls.
757
758         Revert
759         2006-05-22  Aldy Hernandez  <aldyh@redhat.com>
760
761         * tree-ssa-dse.c (aggregate_vardecl_d): New.
762         (dse_global_data): Add aggregate_vardecl field.
763         (dse_possible_dead_store_p): New.
764         Add prev_defvar variable.
765         Allow immediate uses and previous immediate uses to differ
766         if they are setting different parts of the whole.
767         (get_aggregate_vardecl): New.
768         (dse_record_partial_aggregate_store): New.
769         (dse_whole_aggregate_clobbered_p): New.
770         (dse_partial_kill_p): New.
771         Call dse_maybe_record_aggregate_store().
772         When checking whether a STMT and its USE_STMT refer to the
773         same memory address, check also for partial kills that clobber
774         the whole.
775         Move some variable definitions to the block where they are used.
776         (aggregate_vardecl_hash): New.
777         (aggregate_vardecl_eq): New.
778         (aggregate_vardecl_free): New.
779         (aggregate_whole_store_p): New.
780         (tree_ssa_dse): Initialize and free aggregate_vardecl.
781         Mark which aggregate stores we care about.
782
783 2007-09-25  DJ Delorie  <dj@redhat.com>
784
785         PR target/33551
786         * config/m32c/m32c.c (m32c_immd_dbl_mov): Use INTVAL instead of
787         XINT.
788
789 2007-09-25  Michael Meissner  <michael.meissner@amd.com>
790
791         PR target/33524
792         * config/i386/i386.c (ix86_expand_sse5_unpack): Change to call
793         gen_sse5_pperm_sign_v4si_v2di and gen_sse5_pperm_zero_v4si_v2di
794         for vector int32 -> int64 conversions.  Don't write beyond the end
795         of the allocated vector for int32 -> int64 conversions.
796
797 2007-09-25  Revital Eres  <eres@il.ibm.com>
798
799         * config/rs6000/paired.h (paired_sel): New.
800         * config/rs6000/rs6000.c (bdesc_3arg): Add selv2sf4.
801         (rs6000_expand_ternop_builtin): Pass zero const_double operand
802         when expanding selv2sf.
803         * config/rs6000/rs6000.h (rs6000_builtins): Add
804         PAIRED_BUILTIN_SELV2SF4.
805
806 2007-09-25  Joseph Myers  <joseph@codesourcery.com>
807
808         PR c/32295
809         * c-typeck.c (default_conversion): Call require_complete_type
810         before perform_integral_promotions.
811         (build_unary_op): Call require_complete_type except for ADDR_EXPR.
812         (build_c_cast): Call require_complete_type except for casts to
813         void types.
814         (convert_for_assignment): Call require_complete_type.
815
816 2007-09-25  Revital Eres  <eres@il.ibm.com>
817
818         * config/spu/spu.md: Fix doloop pattern.
819
820 2007-09-25  Bernd Schmidt  <bernd.schmidt@analog.com>
821
822         * config/bfin/bfin.c (expand_prologue_reg_save,
823         expand_epilogue_reg_restore): Code to save and restore I/M/B/L regs and
824         ASTAT moved here...
825         (expand_interrupt_handler_prologue, expand_interrupt_handler_epilogue):
826         ... from here.  New argument ALL; callers changed.
827         (n_regs_saved_by_prologue): Count ASTAT for plain saveall functions.
828         (bfin_expand_prologue, bfin_expand_epilogue): Deal with functions that
829         have the "saveall" attribute.
830
831 2007-09-25  Hans-Peter Nilsson  <hp@bitrange.com>
832
833         * config/mmix/mmix.h (FUNCTION_INCOMING_ARG_REGNO_P): Don't define
834         bogus target macro.
835         (INCOMING_REGNO, OUTGOING_REGNO): Define.
836         * config/mmix/mmix.c (mmix_opposite_regno): New function.
837         * config/mmix/mmix-protos.h (mmix_opposite_regno): Prototype.
838
839         * config/mmix/mmix.md ("*cmpcc_folded"): In condition, gate
840         with REG_P tests before REGNO access.
841
842 2007-09-24  DJ Delorie  <dj@redhat.com>
843
844         PR target/31482
845         * config/m32c/cond.md (stzx_reversed_<mode>): Add an output
846         constraint.
847         (movqicc_<code>_<mode>): Likewise.
848         (movhicc_<code>_<mode>): Likewise.
849
850 2007-09-24  Rask Ingemann Lambertsen  <rask@sygehus.dk>
851
852         PR target/33184
853         * config/m32c/m32c.c (m32c_eh_return_data_regno): Leave an address
854         register for reload.
855
856 2007-09-24  Danny Smith  <dannysmith@user.sourceforge.net>
857
858         PR c++/14688
859         * config/i386/i386.c (ix86_comp_type_attributes): Check
860         METHOD_TYPE too.
861
862 2007-09-24  Roman Zippel <zippel@linux-m68k.org> 
863
864         * config/m68k/m68k.h (ASM_OUTPUT_ALIGN_WITH_NOP): New, use
865         "move.l %a4,%a4" to produce nops.
866         * config/m68k/m68k.c (override_options): Reset align options,
867         if neccessary align macro isn't avaible.
868
869 2007-09-24  Roman Zippel <zippel@linux-m68k.org> 
870
871         config/m68k/linux.h (PREFERRED_STACK_BOUNDARY): New.
872
873 2007-09-24  Roman Zippel <zippel@linux-m68k.org> 
874
875         * config/m68k/m68k.c (strict_low_part_peephole_ok): Don't leave
876         the basic block.
877         * config/m68k/m68k.md (movsi_m68k): Allow certain constant when
878         reload is completed.
879         (peephole pattern): Convert most of them to RTL peephole pattern.
880
881 2007-09-24  Roman Zippel <zippel@linux-m68k.org> 
882
883         * config/m68k/m68k.c (notice_update_cc): Recognize fp compare
884         (moved from fp compare patterns).
885         * config/m68k/m68k.md (cmp<mode>, cmp<mode>_68881, cmp<mode>_cf):
886         Cleanup predicates to relieve reload.
887         (conditional_trap): Reject conditional trap with fp condition.
888         * gcc/config/m68k/predicates.md (fp_src_operand): New, reject
889         certain constants early.
890
891 2007-09-24  Roman Zippel <zippel@linux-m68k.org>
892
893         * gcc/final.c (final_scan_insn): Remove accidentally duplicated code.
894
895 2007-09-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
896
897         * config.gcc (powerpc*-*-*): --with-cpu=cell is a 64bit CPU.
898         Allow --with-tune=cell and --with-cpu=cell.
899
900 2007-09-24  David Edelsohn  <edelsohn@gnu.org>
901
902         * config/rs6000/rs6000-protos.h (rs6000_emit_swrsqrtsf): Declare.
903         * config/rs6000/rs6000.opt (swdiv): Change option to ...
904         (recip): this.
905         * config/rs6000/rs6000.c (rs6000_builtin_reciprocal): New
906         function.
907         (TARGET_BUILTIN_RECIPROCAL): Use it.
908         (rs6000_builtin_expand): Expand recip, recipf, and rsqrtf.
909         (rs6000_init_builtins): Initialize recip, recipf, and rsqrtf.
910         (rs6000_emit_swrsqrtsf): New.
911         * config/rs6000/rs6000.h (rs6000_builtins): Add recip, recipf, and
912         rsqrtf. 
913         * config/rs6000/rs6000.md (UNSPEC_RSQRT): Define.
914         (divsf3): Remove swdiv support.
915         (recipsf3): New.
916         (rsqrtsf2): New.
917         (rsqrt_internal1): New.
918         (divdf3): Remove swdiv support.
919         (reciptdf3): New.
920
921 2007-09-24  Jakub Jelinek  <jakub@redhat.com>
922
923         PR c++/33506
924         * langhooks.h (struct lang_hooks_for_types): Add type_hash_eq
925         field.
926         * langhooks-def.h (LANG_HOOKS_TYPE_HASH_EQ): Define.
927         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_TYPE_HASH_EQ.
928         * tree.c (type_hash_eq): For FUNCTION_TYPE use
929         lang_hooks.type.type_hash_eq in addition to generic tests.
930
931 2007-09-24  Pranav Bhandarkar  <pranav.bhandarkar@celunite.com>
932         Ramana Radhakrishnan  <ramana@hercules.pun.celunite.com>
933
934         * tree-inline.h (eni_weights): Add field target_builtin_cost to
935         reflect the cost per call to a target specific builtin.
936         * tree-inline.c (estimate_num_insns_1): If it is a CALL_EXPR for a
937         call to a target specific builtin, then use target_builtin_call_cost.
938         (init_inline_once): Initialize target_builtin_call_cost field.
939
940 2007-09-24  Kai Tietz  <kai.tietz@onevision.com>
941
942         PR middle-end/33472
943         * config/i386/i386.c (return_in_memory_ms_64): Handle return types for
944         complex types.
945
946 2007-09-23  H.J. Lu  <hongjiu.lu@intel.com>
947
948         * configure.ac (ld_vers): Support GNU linker version xx.xx.*
949         * configure: Regenerated.
950
951 2007-09-23  Ollie Wild  <aaw@google.com>
952
953         * fold-const.c (fold_binary): Fold BIT_AND_EXPR's with a pointer
954         operand.
955         (get_pointer_modulus_and_residue): New function.
956
957 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
958
959         * config/mips/mips.c (build_mips16_call_stub): On 64-bit targets,
960         combine an SC return value into a single register.
961
962 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
963
964         * opth-gen.awk (target_flags_explicit): Declare.
965         * toplev.h (target_flags_explicit): Delete declaration.
966         * toplev.c (target_flags): Likewise.
967         * config/mips/mips.h (mips_llsc_setting, mips_llsc): Delete.
968         (GENERATE_SYNC, GENERATE_LL_SC): Redefine using target_explicit_flags.
969         Never return true for TARGET_MIPS16.
970         * config/mips/mips.c (mips_llsc): Delete.
971         (mips_handle_option): Remove -mllsc handling.
972         (mips_strip_unspec_address): Tweak comment.
973         * config/mips/mips.opt (mllsc): Use a target mask.
974
975 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
976
977         * doc/tm.texi (POINTERS_EXTEND_UNSIGNED): Document extensions to
978         word_mode as well as Pmode.
979
980 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
981
982         * function.c (assign_parm_setup_block): Explicitly convert BLKmode
983         parameters from word_mode to the subword type if such a truncation
984         is not a no-op.
985
986 2007-09-23  Jakub Jelinek  <jakub@redhat.com>
987
988         * configure.ac (MAKEINFO): Handle makeinfo version 4.10 and above.
989         * configure: Regenerated.
990
991 2007-09-23  Jan Hubicka  <jh@suse.cz>
992
993         * params.def (INLINE_CALL_COST): Set to 12.
994         * invoke.texi (inline-call-cost): Update default value.
995
996 2007-09-23  Eric Botcazou  <ebotcazou@adacore.com>
997
998         * config/alpha/alpha.md (movti): Use operand_subword for the split.
999
1000 2007-09-23  Ayal Zaks  <zaks@il.ibm.com>
1001             Revital Eres  <eres@il.ibm.com>
1002
1003         * modulo-sched.c (doloop_register_get): Rewrite the loop which
1004         checks whether the count_reg is found outside the control part.
1005
1006 2007-09-23  Jakub Jelinek  <jakub@redhat.com>
1007
1008         * expr.c (expand_expr_real_1) <case CALL_EXPR>: Use get_callee_fndecl
1009         instead of checking CALL_EXPR_FN directly to test for builtins.
1010         If error or warning attributes are present, print
1011         error resp. warning.
1012         * c-common.c (handle_error_attribute): New function.
1013         (c_common_attribute_table): Add error and warning
1014         attributes.
1015         * doc/extend.texi: Document error and warning attributes.
1016
1017         * tree.h (block_nonartificial_location): New prototype.
1018         * tree.c (block_nonartificial_location): New function.
1019         * dwarf2out.c (gen_subprogram_die): Add DW_AT_artificial
1020         if artificial attribute is present on abstract inline decl.
1021         * c-common.c (handle_artificial_attribute): New function.
1022         (c_common_attribute_table): Add artificial attribute.
1023         * final.c (override_filename, override_linenum): New variables.
1024         (final_scan_insn): For DBX_DEBUG or SDB_DEBUG, set override_filename
1025         and override_linenum if inside of a block inlined from
1026         __attribute__((__artificial__)) function.
1027         (notice_source_line): Honor override_filename and override_linenum.
1028         * doc/extend.texi: Document __attribute__((__artificial__)).
1029         * config/i386/emmintrin.h: Add __artificial__ attribute to
1030         all __always_inline__ functions.
1031         * config/i386/mmintrin.h: Likewise.
1032         * config/i386/tmmintrin.h: Likewise.
1033         * config/i386/mm3dnow.h: Likewise.
1034         * config/i386/pmmintrin.h: Likewise.
1035         * config/i386/ammintrin.h: Likewise.
1036         * config/i386/xmmintrin.h: Likewise.
1037         * config/i386/smmintrin.h: Likewise.
1038         * config/i386/bmmintrin.h: Likewise.
1039         * config/i386/mmintrin-common.h: Likewise.
1040
1041         PR middle-end/28755
1042         * expr.c (expand_constructor): New function.
1043         (expand_expr_real_1) <case CONSTRUCTOR>: Call it.
1044         (expand_expr_real_1) <case ARRAY_REF>: Call it if VALUE is
1045         CONSTRUCTOR.
1046
1047 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
1048
1049         * config/mips/mips.c (dump_constants_1): Generalize to include
1050         fractional and accumulator modes.
1051
1052 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
1053
1054         * config/mips/mips.h (ISA_HAS_DSP, ISA_HAS_DSPR2): New macros.
1055         * config/mips/mips.c (mips_set_mips16_mode): Don't clear the DSP
1056         flags for MIPS16.
1057         (override_options): Check TARGET_HARD_FLOAT_ABI instead of
1058         TARGET_HARD_FLOAT when testing whether -mpaired-single is
1059         supported.
1060         (mips_conditional_register_usage): Check ISA_HAS_DSP instead of
1061         TARGET_DSP.
1062         * config/mips/constraints.md (ka): Check ISA_HAS_DSPR2 instead of
1063         TARGET_DSPR2.
1064         * config/mips/mips.md (ANYF): Require TARGET_HARD_FLOAT for V2SF.
1065         (mulv2sf3, movv2sf, movv2sf_hardfloat_64bit): Require
1066         TARGET_HARD_FLOAT.
1067         (<u>mulsidi3_32bit_internal, <u>msubsidi4, <u>maddsidi4): Check
1068         ISA_HAS_DSPR2 instead of TARGET_HAS_DSPR2.
1069         * config/mips/mips-dsp.md: Use ISA_HAS_DSP instead of TARGET_HAS_DSP
1070         throughout.
1071         * config/mips/mips-dspr2.md: Likewise ISA_HAS_DSPR2 and
1072         TARGET_HAS_DSPR2.
1073         * config/mips/mips-fixed.md: Use ISA_HAS_DSP and ISA_HAS_DSPR2
1074         instead of TARGET_HAS_DSP and TARGET_HAS_DSPR2.
1075         * config/mips/mips-ps-3d.md: Add TARGET_HARD_FLOAT to V2SF patterns.
1076
1077 2007-09-22  Jason Merrill  <jason@redhat.com>
1078
1079         PR c++/19407
1080         * attribs.c (lookup_attribute_spec): Split out...
1081         (decl_attributes): From here.
1082         * tree.h: Declare it.
1083
1084 2007-09-22  Richard Sandiford  <rsandifo@nildram.co.uk>
1085
1086         * doc/sourcebuild.texi: Document dg-add-options mips16_attribute.
1087
1088 2007-09-22  Eric Botcazou  <ebotcazou@adacore.com>
1089
1090         * tree-inline.c (remap_type_1): Correctly chain variants.
1091
1092 2007-09-22  Richard Guenther  <rguenther@suse.de>
1093
1094         PR tree-optimization/33146
1095         * fold-const.c (fold_binary): Use the original tree
1096         for negating.
1097         * tree.h (STRIP_SIGN_NOPS): Converting from or to pointer
1098         also changes "sign".
1099
1100 2007-09-22  Eric Botcazou  <ebotcazou@adacore.com>
1101
1102         PR target/32325
1103         * except.c (finish_eh_generation): Call commit_edge_insertions if
1104         there are insns queued on the entry edge.
1105         * config/alpha/alpha.c (alpha_gp_save_rtx): Insert the insns on
1106         the entry edge.
1107
1108 2007-09-22  Richard Sandiford  <rsandifo@nildram.co.uk>
1109
1110         * doc/sourcebuild.texi (dg-add-c99-runtime-options): Document.
1111
1112 2007-09-19  Michael Meissner  <michael.meissner@amd.com>
1113
1114         * gcc/config/i386/i386.c: Delete trailing whitespace.
1115         * gcc/config/i386/i386.h: Ditto.
1116         * gcc/config/i386/bmmintrin.h: Ditto.
1117         * gcc/config/i386/sync.md: Ditto.
1118         * gcc/config/i386/ppro.md: Ditto.
1119         * gcc/config/i386/mmx.md: Ditto.
1120         * gcc/config/i386/constraints.md: Ditto.
1121         * gcc/config/i386/sse.md: Ditto.
1122         * gcc/config/i386/athlon.md: Ditto.
1123         * gcc/config/i386/i386.md: Ditto.
1124
1125 2007-09-21  Richard Guenther  <rguenther@suse.de>
1126
1127         PR tree-optimization/33508
1128         * tree-ssa-alias.c (mark_aliases_call_clobbered): Avoid
1129         quadratic loop by keeping a bitmap of variables we have
1130         to clobber all subvariables for.
1131         (set_initial_properties): Likewise.
1132
1133 2007-09-21  Richard Sandiford  <rsandifo@nildram.co.uk>
1134
1135         * config/mips/t-sde (TARGET_LIBGCC2_CFLAGS): Delete.
1136
1137 2007-09-20  Nigel Stephens  <nigel@mips.com>
1138             Chao-ying Fu  <fu@mips.com>
1139
1140         * c-decl.c (finish_declspecs): When _Sat is used without
1141         _Fract or _Accum, set the default type to cts_fract.
1142         This avoids a warning of "type defaults to int".
1143
1144 2007-09-20  Joseph Myers  <joseph@codesourcery.com>
1145
1146         * c-decl.c (check_bitfield_type_and_width): Don't allow _Bool
1147         bit-fields wider than one bit.
1148
1149 2007-09-20  Jakub Jelinek  <jakub@redhat.com>
1150
1151         PR debug/33316
1152         * dwarf2out.c (modified_type_die): Handle TYPE_DECL with NULL
1153         DECL_NAME.
1154         * dbxout.c (dbxout_type): Likewise.
1155
1156         PR c/33238
1157         PR c/27301
1158         * gimplify.c (gimplify_vla_decl): New function.
1159         (gimplify_decl_expr): Move VLA decl handling to gimplify_vla_decl.
1160         Call it.
1161         (gimplify_target_expr): Handle variable length TARGET_EXPRs.
1162
1163 2007-09-20  Richard Sandiford  <rsandifo@nildram.co.uk>
1164
1165         * doc/invoke.texi (-minterlink-mips16): Document.
1166         * config/mips/mips.opt (minterlink-mips16): New option.
1167         * config/mips/mips.c (mips_function_ok_for_sibcall): Handle
1168         -minterlink-mips16
1169
1170 2007-09-20  Joseph Myers  <joseph@codesourcery.com>
1171
1172         * doc/extend.texi (Attribute Syntax): Remove old speculative
1173         future direction.
1174
1175 2007-09-20  Mark Shinwell  <shinwell@codesourcery.com>
1176
1177         * combine.c: Include cgraph.h.
1178         (setup_incoming_promotions): Rework to allow more aggressive
1179         elimination of sign extensions when all call sites of the
1180         current function are known to lie within the current unit.
1181
1182 2007-09-20  Richard Sandiford  <rsandifo@nildram.co.uk>
1183
1184         * dse.c (find_shift_sequence): No-op rework of control flow.
1185
1186 2007-09-19  Richard Sandiford  <rsandifo@nildram.co.uk>
1187
1188         * config/mips/mips.c (build_mips16_call_stub): Tidy.  Fix second
1189         GPR for DCmode on 64-bit targets.  Remove redundant fallback.
1190
1191 2007-09-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1192
1193         * cfgexpand.c (dump_stack_var_partition): Use the correct
1194         index for the offset.
1195
1196 2007-09-19  Joseph Myers  <joseph@codesourcery.com>
1197
1198         * config/mips/sde.h: Switch to GPLv3.
1199
1200 2007-09-19  Eric Botcazou  <ebotcazou@adacore.com>
1201
1202         * tree-sra.c (decide_block_copy): Decide if there are groups.
1203
1204 2007-09-19  Roman Zippel <zippel@linux-m68k.org>
1205
1206         * config/m68k/m68k.c (output_move_himode): Remove jump table
1207         recognition.
1208         config/m68k/m68k.md (lea): Likewise.
1209         * config/m68k/m68k.c (print_operand_address): Use simple pc
1210         relative addressing.
1211
1212 2007-09-19  Bernd Schmidt  <bernd.schmidt@analog.com>
1213
1214         * doc/tm.texi (IS_ASM_LOGICAL_LINE_SEPARATOR): Document new argument.
1215         * final.c (IS_ASM_LOGICAL_LINE_SEPARATOR): Provide two-argument
1216         default definition.
1217         (asm_insn_count): Pass template as second argument to it.
1218         * config/avr/avr.h (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
1219         * config/pa/pa.h (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
1220         * config/stormy16/stormy16.h (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
1221         * config/cris/cris.h (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
1222         * config/sh/sh.c (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
1223         (sh_insn_length_adjustment): Pass template as second argument to it.
1224         * config/bfin/bfin.h (IS_ASM_LOGICAL_LINE_SEPARATOR): New macro.
1225
1226         * config/bfin/bfin.md (define_asm_attributes): New.
1227
1228 2007-09-19  Jie Zhang  <jie.zhang@analog.com>
1229
1230         * config.gcc (bfin*-linux-uclibc*): Add ./linux-sysroot-suffix.h
1231         to tm_file.
1232         * config/bfin/print-sysroot-suffix.sh: New.
1233         * config/bfin/t-bfin-elf (EXTRA_PARTS): Remove.
1234         (MULTILIB_OPTIONS, MULTILIB_DIRNAMES, MULTILIB_MATCHES,
1235         MULTILIB_EXCEPTIONS): Redefine with new multilibs.
1236         * config/bfin/t-bfin-uclinux (EXTRA_PARTS): Remove.
1237         (MULTILIB_OPTIONS, MULTILIB_DIRNAMES, MULTILIB_MATCHES,
1238         MULTILIB_EXCEPTIONS): Redefine with new multilibs.
1239         * config/bfin/t-bfin-linux (EXTRA_PARTS): Remove.
1240         (MULTILIB_OPTIONS, MULTILIB_DIRNAMES, MULTILIB_MATCHES,
1241         MULTILIB_EXCEPTIONS): Redefine with new multilibs.
1242         (linux-sysroot-suffix.h): New target.
1243         * config/bfin/bfin.opt (mcsync-anomaly): Use Var instead of Mask.
1244         (mspecld-anomaly): Likewise.
1245         * config/bfin/bfin-protos.h (enum bfin_cpu_type): Renamed from
1246         (enum bfin_cpu): ... this. Add BFIN_CPU_BF522, BFIN_CPU_BF525,
1247         BFIN_CPU_BF527, BFIN_CPU_BF538, BFIN_CPU_BF539, BFIN_CPU_BF542,
1248         BFIN_CPU_BF544, BFIN_CPU_BF548, and BFIN_CPU_BF549.
1249         (bfin_si_revision): Declare.
1250         (bfin_workarounds): Declare.
1251         (WA_SPECULATIVE_LOADS): Define.
1252         (ENABLE_WA_SPECULATIVE_LOADS): Define.
1253         (WA_SPECULATIVE_SYNCS): Define.
1254         (ENABLE_WA_SPECULATIVE_SYNCS): Define.
1255         * config/bfin/elf.h (STARTFILE_SPEC): Rename crt532.o to basiccrt.o.
1256         (LIB_SPEC): Add %s to the linker scripts.
1257         Use proper linker script for bf522, bf525, bf527,
1258         bf538, bf539, bf542, bf544, bf548, and bf549.
1259         * config/bfin/bfin.c (bfin_si_revision): Define.
1260         (bfin_workarounds): Define.
1261         (struct bfin_cpu): New.
1262         (bfin_cpus): New.
1263         (bfin_handle_option): Handle silicon revision part of -mcpu option.
1264         (override_options): Set bfin_workarounds.
1265         (length_for_loop): Replace TARGET_CSYNC_ANOMALY with
1266         ENABLE_WA_SPECULATIVE_SYNCS, TARGET_SPECLD_ANOMALY with
1267         ENABLE_WA_SPECULATIVE_LOADS.
1268         (bfin_reorg): Likewise.
1269         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
1270         macros for bf522, bf525, bf527, bf538, bf539,
1271         bf542, bf544, bf548, and bf549.
1272         Define __SILICON_REVISION__ and __WORKAROUND_* macros if needed.
1273         Don't define __ID_SHARED_LIB__ when -msep-data.
1274         (TARGET_DEFAULT): Define as 0.
1275         (DRIVER_SELF_SPECS): Add -mcpu=bf532 if no -mcpu option.
1276         * doc/invoke.texi (Blackfin Options): Document silicon
1277         revision part of -mcpu option and it now accepts bf522, bf525,
1278         bf527, bf538, bf539, bf542, bf544, bf548, and bf549.
1279
1280 2007-09-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1281
1282         * alias.c (memory_modified_1): Deconstify.
1283         (memory_modified_in_insn_p): Don't use const_note_stores.
1284         * rtl.h (const_note_stores): Delete.
1285         * rtlanal.c (const_note_stores): Likewise.
1286
1287 2007-09-18  Richard Sandiford  <rsandifo@nildram.co.uk>
1288
1289         * dse.c (find_shift_sequence): Temporarily revert to forbidding
1290         word shifts.
1291
1292 2007-09-18  Rask Ingemann Lambertsen  <rask@sygehus.dk>
1293
1294         PR target/33388
1295         PR target/33397
1296         * config/fr30/fr30.md (addsi3): Check REG_P() before calling REGNO().
1297         (addsi_small_int): Likewise.
1298         (addsi_big_int): Use rtx_equal_p() instead of REGNO() comparison.
1299         (one_cmplsi2): Likewise.
1300         (negsi2): Delete.
1301         (enter_func): Expand insn using hard_frame_pointer_rtx and
1302         stack_pointer_rtx.
1303         (*enter_func): New.
1304         * config/fr30/fr30.c (fr30_expand_prologue): Check for
1305         hard_frame_pointer_rtx instead of using REGNO() check.
1306         Properly sign extend GEN_INT() argument.
1307
1308 2007-09-18  Roman Zippel <zippel@linux-m68k.org>
1309
1310         * config/m68k/m68k.c (override_options): Remove USE_GAS,
1311         use %. syntax.
1312         (output_dbcc_and_branch, output_scc_di): Replace all jbcc
1313         alternatives with just jcc.
1314         * config/m68k/m68k.md (addsi_lshrsi_31, beq0_di, bne0_di,
1315         bge0_di, blt0_di, bgtu, bltu, bgeu, bleu, bgtu_rev,
1316         bltu_rev, bgeu_rev, bleu_rev, jump, dbne_hi, dbne_si,
1317         dbge_hi, dbge_si): Likewise.
1318
1319 2007-09-18  Roman Zippel <zippel@linux-m68k.org>
1320
1321         * config/m68k/m68k.md (beq, bne, bgt, blt, bge, ble, bordered,
1322         bunordered, buneq, bunge, bungt, bunle, bunlt, bltgt, beq_rev,
1323         bne_rev, bgt_rev, blt_rev, bge_rev, ble_rev, bordered_rev,
1324         bunordered_rev, buneq_rev, bunge_rev, bungt_rev, bunle_rev,
1325         bunlt_rev, bltgt_rev): Replace all fbcc with fjcc.
1326
1327 2007-09-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
1328
1329         * config/m68k/m68k-devices.def (51qe): New device.
1330         * config/m68k/m68k.c (FL_FOR_isa_c): Remove division unit.  Add it
1331         to all uses of FL_FOR_isa_c for compatibility.
1332         (all_microarchs): Add cfv1 microarchitecture.
1333         (m68k_handle_option): Handle m51qe option.
1334         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Handle 51QE.
1335         (TUNE_CFV1): New macro.
1336         (enum uarch_type): Add ucfv1.
1337         * doc/invoke.texi: Document 51qe device and cfv1 microarchitecture.
1338         
1339 2007-09-18  Richard Guenther  <rguenther@suse.de>
1340
1341         PR tree-optimization/31863
1342         * tree-ssa-structalias.c (create_variable_info_for): Always
1343         free the fieldstack.
1344
1345 2007-09-18  Dorit Nuzman  <dorit@il.ibm.com>
1346
1347         * opts.c (decode_options): Enable vectorization under -O3.
1348
1349 2007-09-18  Richard Guenther  <rguenther@suse.de>
1350
1351         PR tree-optimization/33340
1352         * tree-ssa-sccvn.c (set_ssa_val_to): Do not set values to
1353         SSA_NAMEs that occur in abnormal PHI nodes.
1354
1355 2007-09-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1356
1357         * tree-cfg.c (is_ctrl_altering_stmt, tree_block_ends_with_call_p):
1358         Don't use const_get_call_expr_in.
1359         * tree-gimple.c (const_get_call_expr_in): Delete.
1360         * tree-gimple.h (const_get_call_expr_in): Likewise.
1361
1362 2007-09-18  Richard Sandiford  <rsandifo@nildram.co.uk>
1363
1364         * df-scan.c (df_notes_rescan): Do nothing if the instruction does
1365         not yet have a basic block.
1366         * dse.c (find_shift_sequence): Don't set DF_NO_INSN_RESCAN.
1367
1368 2007-09-18  Richard Sandiford  <rsandifo@nildram.co.uk>
1369
1370         * config/mips/mips.c (mips_file_start): Add ".previous" directives
1371         to both ".section"s.
1372
1373 2007-09-17  Richard Sandiford  <rsandifo@nildram.co.uk>
1374
1375         * config/mips/mips.c (mips_output_mi_thunk): Use
1376         mips_function_ok_for_sibcall and const_call_insn_operand
1377         to determine if a direct sibcall is allowed.  Use
1378         mips_classify_symbol to determine a global pointer is needed.
1379
1380 2007-09-17  Richard Sandiford  <rsandifo@nildram.co.uk>
1381
1382         * config/mips/mips.md (*clear_upper32): Use "W" as the memory operand.
1383
1384 2007-09-17  Chao-ying Fu  <fu@mips.com>
1385             Nigel Stephens  <nigel@mips.com>
1386
1387         * config/fixed-bit.h: New file.
1388         * config/fixed-bit.c: New file.
1389         * doc/libgcc.texi (Fixed-point fractional library routines): New node.
1390
1391 2007-09-18  Jakub Jelinek  <jakub@redhat.com>
1392
1393         * c-format.h (format_kind_info): Add alloc_char field.
1394         * c-format.c (scanf_flag_specs): Add 'm'.
1395         (scanf_flag_pairs): Add 'a', 'm' pair.
1396         (scan_char_table): Allow 'm' modifier for c, s, [, C and S.
1397         (format_types_orig): Add alloc_char fields.
1398         (check_format_info_main): Rename aflag to alloc_flag.
1399         Handle fki->alloc_char. modifier after width and before length
1400         modifiers.  Move FMT_FLAG_SCANF_A_KLUDGE handling before
1401         length modifiers as well.
1402         * config/sol2-c.c (solaris_format_types): Add alloc_char field.
1403
1404         PR middle-end/33423
1405         * builtins.c (expand_builtin_memory_chk): Handle COMPOUND_EXPRs
1406         returned by build_call_expr.
1407
1408 2007-09-17  Eric Botcazou  <ebotcazou@adacore.com>
1409
1410         * tree-sra.c (maybe_lookup_element_for_expr) <COMPONENT_REF>: Return
1411         NULL for variable-sized records too.
1412         (sra_walk_expr) <COMPONENT_REF>: Stop at variable-sized records too.
1413
1414 2007-09-17  Tom Tromey  <tromey@redhat.com>
1415
1416         * c-decl.c (pushdecl): Don't set DECL_LANG_SPECIFIC.
1417         (c_builtin_function): Likewise.
1418         (grokdeclarator): Likewise.
1419
1420 2007-09-17  Zdenek Dvorak  <ook@ucw.cz>
1421
1422         PR rtl-optimization/26449
1423         * loop-invariant.c (move_invariant_reg): Do not use force_operand.
1424         (seq_insns_valid_p): Removed.
1425
1426 2007-09-17  Eric Botcazou  <ebotcazou@adacore.com>
1427
1428         * tree-nomudflap.c (gate_mudflap): New static function.
1429         (pass_mudflap_1): Use it as gate function.
1430         (pass_mudflap_2): Likewise.
1431
1432 2007-09-17  Jan Hubicka  <jh@suse.cz>
1433
1434         PR middle-end/33348
1435         PR target/33406
1436         * loop-invariant.c (move_invariant_reg): Unshare sequence.
1437
1438 2007-09-17  Victor Kaplansky  <victork@il.ibm.com>
1439
1440         PR tree-optimization/33319
1441         * tree-vect-analyze.c (vect_same_range_drs): New.
1442         (vect_vfa_range_equal): New.
1443         (vect_is_duplicate_ddr): Removed.
1444         (vect_mark_for_runtime_alias_test): Do not perform marking when
1445         optimizing for size or max_param for alias checking is zero.
1446         Move the function before vect_analyze_data_ref_dependence.
1447         (vect_analyze_data_ref_dependence): Add call to
1448         vect_mark_for_runtime_alias_test in two cases when dependence
1449         is not clear.
1450         (vect_analyze_data_ref_dependences): Do not call to
1451         vect_mark_for_runtime_alias_test.
1452         (vect_prune_runtime_alias_test_list): New.
1453         (vect_analyze_loop): Add call to vect_prune_runtime_alias_test_list.
1454         * tree-vect-transform.c (vect_estimate_min_profitable_iters):
1455         Update vec_outside_cost.
1456         (vect_vfa_segment_size): More compact code, use TYPE_SIZE_UNIT.
1457         (vect_create_cond_for_alias_checks): Build the base address of data
1458         reference from DR_GROUP_FIRST_DR.
1459         (vect_loop_versioning): New.
1460         (vect_transform_loop): Add a call to vect_loop_versioning.
1461         Remove factored out code.
1462
1463 2007-09-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1464
1465         PR middle-end/33273
1466         * expr.c (store_expr): Call adjust_address to change mode of dest_mem
1467         to BLKmode.
1468
1469 2007-09-16  Richard Sandiford  <rsandifo@nildram.co.uk>
1470
1471         * dse.c (find_shift_sequence): Allow word as well as subword shifts.
1472         Do the tentative shift expansion with the DF_NO_INSN_RESCAN flag set.
1473         Fix the call to insn_rtx_cost.  Skip access sizes that require a
1474         real truncation of the store register.  Use convert_move instead
1475         of gen_lowpart when narrowing the result.
1476         (replace_read): Use convert_move instead of gen_lowpart when
1477         narrowing the store rhs.
1478
1479 2007-09-16  Richard Sandiford  <rsandifo@nildram.co.uk>
1480
1481         * config/mips/mips.md (SHORT): Fix long line.
1482         (SUBDI): New mode iterator.  Extend the shift-and-truncate insns
1483         to QImode and HImode.
1484
1485 2007-09-16  Richard Sandiford  <rsandifo@nildram.co.uk>
1486
1487         * config/mips/mips.h (POINTERS_EXTEND_UNSIGNED): Define.
1488
1489 2007-09-15  Zdenek Dvorak  <ook@ucw.cz>
1490
1491         * tree-parloops.c: New file.
1492         * tree-ssa-operands.h (free_stmt_operands): Declare.
1493         * tree-ssa-loop-manip.c (split_loop_exit_edge): Return the new basic
1494         block.
1495         * tree-pass.h (pass_parallelize_loops): Declare.
1496         * omp-low.c (expand_omp_parallel, expand_omp_for): Update SSA form for
1497         virtual operands.
1498         (build_omp_regions_1): Allow analysing just a single OMP region and
1499         its subregions.
1500         ( build_omp_regions_root, omp_expand_local): New functions.
1501         (build_omp_regions): Add argument to build_omp_regions_1 call.
1502         * builtins.def (DEF_GOMP_BUILTIN): Initialize OMP builtins when
1503         autoparallelization is run.
1504         * timevar.def (TV_TREE_PARALLELIZE_LOOPS): New.
1505         * tree-ssa-loop.c (gate_tree_parallelize_loops, tree_parallelize_loops,
1506         pass_parallelize_loops): New.
1507         * common.opt (ftree-parallelize-loops): New.
1508         * tree-flow.h (omp_expand_local, tree_duplicate_sese_tail,
1509         parallelize_loops): Declare.
1510         (add_phi_args_after_copy, split_loop_exit_edge): Declaration changed.
1511         * Makefile.in (tree-parloops.o): Added.
1512         * tree-cfg.c (add_phi_args_after_copy_edge, tree_duplicate_sese_tail):
1513         New functions.
1514         (add_phi_args_after_copy_bb): Use add_phi_args_after_copy_edge.
1515         (add_phi_args_after_copy): Call add_phi_args_after_copy_edge for
1516         one extra edge as well.
1517         (tree_duplicate_sese_region): Add argument to add_phi_args_after_copy.
1518         Use VEC_free to free doms vector.
1519         (move_block_to_fn): Update loop info. Remove phi nodes for virtual
1520         operands.  Recompute operand caches in the new function.
1521         (move_sese_region_to_fn): Update loop info.
1522         * passes.c (init_optimization_passes): Add pass_parallelize_loops.
1523         * tree-ssa-operands.c (free_stmt_operands): New function.
1524
1525         * doc/passes.texi: Document autoparallelization.
1526         * doc/invoke.texi (-ftree-parallelize-loops): New option.
1527
1528 2007-09-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1529
1530         PR target/33062
1531         * pa.c (function_value): Use GET_MODE_BITSIZE instead of
1532         TYPE_PRECISION.
1533
1534 2007-09-15  Dorit Nuzman  <dorit@il.ibm.com>
1535
1536         * tree-vect-transform.c (vect_get_vec_defs_for_stmt_copy): check if 
1537         the VEC is not NULL.
1538         (vectorizable_type_demotion, vectorizable_type_promotion): Check that 
1539         get_vectype_for_scalar_type succeeded.
1540         (vectorizable_conversion): Likewise.
1541
1542 2007-09-14  Jan Hubicka  <jh@suse.cz>
1543
1544         * config/i386/i386.md (*floatdi<mode>2_i387): Guard against
1545         TARGET_64BIT.
1546
1547 2007-09-14  Uros Bizjak  <ubizjak@gmail.com>
1548
1549         PR target/33438
1550         * config/i386/i386.md (fmodxf3): Copy operands[2] to temporary
1551         register when operands[2] equals operands[1].
1552         (remainderxf3): Ditto.
1553
1554 2007-09-14  Sandra Loosemore  <sandra@codesourcery.com>
1555             Nigel Stephens  <nigel@mips.com>
1556
1557         * doc/tm.texi (LIBGCC2_UNWIND_ATTRIBUTE): Document.
1558         * unwind-generic.h (LIBGCC2_UNWIND_ATTRIBUTE): Define.
1559         (_Unwind_RaiseException): Add LIBGCC2_UNWIND_ATTRIBUTE to
1560         declaration.
1561         (_Unwind_ForcedUnwind): Likewise.
1562         (_Unwind_Resume): Likewise.
1563         (_Unwind_Resume_or_Rethrow): Likewise.
1564         (_Unwind_Backtrace): Likewise.
1565         (_Unwind_SjLj_RaiseException): Likewise.
1566         (_Unwind_SjLj_ForcedUnwind): Likewise.
1567         (_Unwind_SjLj_Resume): Likewise.
1568         (_Unwind_SjLj_Resume_or_Rethrow): Likewise.
1569         * unwind.inc (_Unwind_RaiseException): Add LIBGCC2_UNWIND_ATTRIBUTE
1570         to definition.
1571         (_Unwind_ForcedUnwind): Likewise.
1572         (_Unwind_Resume): Likewise.
1573         (_Unwind_Resume_or_Rethrow): Likewise.
1574         (_Unwind_Backtrace): Likewise.
1575         * unwind-compat.c (_Unwind_Backtrace): Likewise.
1576         (_Unwind_ForcedUnwind): Likewise.
1577         (_Unwind_RaiseException): Likewise.
1578         (_Unwind_Resume): Likewise.
1579         (_Unwind_Resume_or_Rethrow): Likewise.
1580
1581         * config/mips/mips.h (LIBGCC2_UNWIND_ATTRIBUTE): Define to force
1582         nomips16 mode when IN_LIBGCC2 with hard float.
1583
1584 2007-09-14  Richard Sandiford  <rsandifo@nildram.co.uk>
1585
1586         * config/mips/sdemtk.opt: Update to GPLv3.
1587         * config/mips/sdemtk.h: Likewise.
1588
1589 2007-09-14  Nigel Stephens  <nigel@mips.com>
1590
1591         * config.gcc (mips*-*-linux*): Recognise mipsisa32r2 and set
1592         MIPS_ISA_DEFAULT appropriately.  Don't make soft-float the default
1593         for mipsisa32-*-linux*.
1594
1595 2007-09-14  Nigel Stephens  <nigel@mips.com>
1596             David Ung  <davidu@mips.com>
1597             Thiemo Seufer  <ths@mips.com>
1598             Richard Sandiford  <richard@codesourcery.com>
1599
1600         * config.gcc (mips*-sde-elf*): Add support for the SDE C libraries.
1601         * configure.ac: Add a mipssde threading type.
1602         * configure: Regenerate.
1603         * config/mips/sdemtk.h: New file.
1604         * config/mips/t-sdemtk: Likewise.
1605         * config/mips/sdemtk.opt: Likewise.
1606         * gthr-mipssde.h: Likewise.
1607         * config/mips/sde.h (FUNCTION_PROFILER): Move to config/mips/sdemtk.h.
1608         * config/mips/mips.h (MIPS_SAVE_REG_FOR_PROFILING_P): New macro.
1609         (MIPS_ICACHE_SYNC): New macro, split from ...
1610         * config/mips/mips.md (clear_cache): ...here.
1611         * config/mips/mips.c (mips_save_reg_p): Check
1612         MIPS_SAVE_REG_FOR_PROFILING_P on profiled functions.
1613         (build_mips16_function_stub): Use targetm.strip_name_encoding.
1614         (build_mips16_call_stub): Likewise.
1615
1616 2007-09-14  Richard Sandiford  <richard@codesourcery.com>
1617
1618         * Makefile.in (stmp-int-hdrs): Depend on fixinc_list.
1619
1620 2007-09-14  Jakub Jelinek  <jakub@redhat.com>
1621
1622         PR target/32337
1623         * config/ia64/ia64.c (find_gr_spill): Don't decrement
1624         current_frame_info.n_local_regs.  Don't return emitted local
1625         regs.
1626         (ia64_compute_frame_size): Improve unwind hack to put
1627         RP, PFS, FP in that order by allowing some of the registers
1628         been already emitted, as long as they are emitted to the
1629         desired register.
1630
1631 2007-09-14  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1632
1633         * config/spu/vmx2spu.h (vec_extract, vec_insert, vec_lvlx,
1634         vec_lvlxl, vec_lvrx, vec_lvrxl, vec_promote, vec_splats,
1635         vec_stvlx, vec_stvlxl, vec_stvrx, vec_stvrxl): New intrinsics.
1636
1637 2007-09-13  Eric Christopher  <echristo@apple.com>
1638             Kenneth Zadeck <zadeck@naturalbridge.com>
1639
1640         * dse.c (find_shift_sequence): New function.
1641         (replace_read): Add case to remove read if it requires shift.
1642         * config/i386/i386.c (ix86_expand_prologue): Fixed typo in comment.
1643         
1644 2007-09-13  Tom Tromey  <tromey@redhat.com>
1645
1646         * c-common.c (fname_as_string): Update.
1647         * c-parser.c (c_parser) <lex_untranslated_string>: New field.
1648         (c_lex_one_token): Update.  Add 'parser' argument.
1649         (c_parser_simple_asm_expr): Update.
1650         (c_parser_attributes): Update.
1651         (c_parser_asm_statement): Update.
1652         (c_parser_asm_operands): Update.
1653         (c_parser_peek_token): Update.
1654         (c_parser_peek_2nd_token): Update.
1655         * c-lex.c (c_lex_string_translate): Remove.
1656         (c_lex_return_raw_strings): Likewise.
1657         (c_lex_with_flags): Added 'lex_flags' argument.
1658         (lex_string): Added 'translate' argument.
1659         * c-pragma.h (c_lex_with_flags): Update.
1660         (c_lex_string_translate, c_lex_return_raw_strings): Remove.
1661         (C_LEX_STRING_NO_TRANSLATE): New define.
1662         (C_LEX_RAW_STRINGS): Likewise.
1663
1664 2007-09-13  Bernd Schmidt  <bernd.schmidt@analog.com>
1665
1666         From Jie Zhang:
1667         * config/bfin/bfin.c (enum bfin_builtins): Add BFIN_BUILTIN_ONES,
1668         BFIN_BUILTIN_CPLX_MUL_16_S40, BFIN_BUILTIN_CPLX_MAC_16_S40,
1669         BFIN_BUILTIN_CPLX_MSU_16_S40, and BFIN_BUILTIN_CPLX_SQU.
1670         (bfin_init_builtins): Initialize __builtin_bfin_ones,
1671         __builtin_bfin_min_fr1x16, __builtin_bfin_max_fr1x16,
1672         __builtin_bfin_min_fr1x32, __builtin_bfin_max_fr1x32,
1673         __builtin_bfin_cmplx_add, __builtin_bfin_cmplx_sub,
1674         __builtin_bfin_cmplx_mul_s40, __builtin_bfin_cmplx_mac_s40,
1675         __builtin_bfin_cmplx_msu_s40 and __builtin_bfin_csqu_fr16.
1676         (bdesc_1arg): Add __builtin_bfin_ones.
1677         (bfin_expand_builtin): Expand __builtin_bfin_cmplx_mul_s40,
1678         __builtin_bfin_cmplx_mac_s40, __builtin_bfin_cmplx_msu_s40,
1679         and __builtin_bfin_csqu_fr16.
1680         * config/bfin/bfin.md (UNSPEC_ONES): New constant.
1681         (ones): New define_insn.
1682         (ssaddhi3_parts): New define_insn.
1683         (sssubhi3_parts): New define_insn.
1684         (flag_mulhi_parts): New define_insn.
1685
1686 2007-09-13  Seongbae Park <seongbae.park@gmail.com>
1687
1688         * common.opt (femit-class-debug-always): Turn off by default.
1689
1690 2007-09-13  Bernd Schmidt  <bernd.schmidt@analog.com>
1691
1692         * config/bfin/bfin.md (reload_outpdi, reload_inpdi): New patterns.
1693         * config/bfin/bfin.c (bfin_secondary_reload): Make sure we use them.
1694
1695 2007-09-13  James E. Wilson  <wilson@specifix.com>
1696
1697         PR tree-optimization/33389
1698         * tree-ssa-operands.c (append_vuse): If ann->in_vdef_list true,
1699         then set build_loads before returning.
1700
1701 2007-09-13  Sandra Loosemore  <sandra@codesourcery.com>
1702             David Ung  <davidu@mips.com>
1703
1704         * config/mips/mips.h (ASM_OUTPUT_REG_PUSH): Replace {d}subu with
1705         {d}addiu and a negative immediate such that it works with MIPS16
1706         instructions.
1707         
1708 2007-09-13  H.J. Lu  <hongjiu.lu@intel.com>
1709
1710         PR bootstrap/33418
1711         * configure.ac (ld_vers): Support Linux linker.
1712         * configure: Regenerated.
1713
1714 2007-09-13  Richard Sandiford  <richard@codesourcery.com>
1715             Sandra Loosemore <sandra@codesourcery.com>
1716
1717         * config/mips/mips.h (SYMBOL_FLAG_MIPS16_FUNC): Delete.
1718         (SYMBOL_REF_MIPS16_FUNC_P): Delete.
1719         * config/mips/mips.c (mips_attribute_table): Turn mips16 and
1720         nomips16 into decl attributes.
1721         (TARGET_INSERT_ATTRIBUTES): Override.
1722         (TARGET_MERGE_DECL_ATTRIBUTES): Likewise.
1723         (TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P): Always return true.
1724         (mips_mips16_type_p, mips_nomips16_type_p): Delete in favor of...
1725         (mips_mips16_decl_p, mips_nomips16_decl_p): ...these new functions.
1726         (mips_comp_type_attributes): Remove mips16 and nomips16 handling.
1727         (mips_use_mips16_mode_p): Reimplement as a function that takes
1728         a decl and considers only decl attributes.  If the decl is nested
1729         function, use its parent attributes.
1730         (mips_function_ok_for_sibcall): Use mips_use_mips16_mode_p
1731         instead of SYMBOL_REF_MIPS16_FUNC_P.
1732         (mips_set_mips16_mode): Move call to sorry here from old
1733         mips_use_mips16_mode_p.
1734         (mflip_mips16_entry): New structure.
1735         (mflip_mips16_htab): New variable.
1736         (mflip_mips16_htab_hash, mflip_mips16_htab_eq): New functions.
1737         (mflip_mips16_use_mips16_p, mips_insert_attributes): Likewise.
1738         (mips_merge_decl_attributes): New function.
1739         (mips_set_current_function): Reinstate call to mips_set_mips16_mode.
1740         Use mips_use_mips16_mode_p.
1741         (mips_output_mi_thunk): Use mips_use_mips16_mode_p instead of
1742         SYMBOL_REF_MIPS16_FUNC_P.
1743         (mips_encode_section_info): Don't set SYMBOL_FLAG_MIPS16_FUNC.
1744
1745 2007-09-13  Richard Sandiford  <richard@codesourcery.com>
1746
1747         * c-parser.c (c_parser_struct_declaration): Check for a null return.
1748
1749 2007-09-13  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
1750
1751         PR driver/33309
1752         * gcc.c (xputenv): Make argument const, and use CONST_CAST.
1753
1754 2007-09-12  Michael Meissner  <michael.meissner@amd.com>
1755             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
1756             Tony Linthicum  <tony.linthicum@amd.com>
1757
1758         * tree.h (function_args_iterator): New type to iterate over
1759         function arguments.
1760         (FOREACH_FUNCTION_ARGS_PTR): Iterator macros for iterating over
1761         function arguments providing a pointer to the argument.
1762         (FOREACH_FUNCTION_ARGS): Iterator macros for iterating over
1763         function arguments providing the argument.
1764         (function_args_iter_init): Inline function to initialize
1765         function_args_iterator.
1766         (function_args_iter_cond_ptr): Inline function to return the next
1767         pointer to hold the argument.
1768         (function_args_iter_cond): Inline function to return the next
1769         argument.
1770         (function_args_iter_cond_next): Advance the function args
1771         iterator.
1772         (stdarg_p): New function, return true if variable argument
1773         function.
1774         (prototype_p): New function, return true if function is
1775         prototyped.
1776         (function_args_count): New function, count the number of arguments
1777         of a function.
1778
1779         * tree.c (stdarg_p): New function, return true if variable
1780         argument function.
1781         (prototype_p): New function, return true if function is
1782         prototyped.
1783
1784         * config/i386/i386.h (TARGET_SSE5): New macro for SSE5.
1785         (TARGET_ROUND): New macro for the round/ptest instructions which
1786         are shared between SSE4.1 and SSE5.
1787         (OPTION_MASK_ISA_ROUND): Ditto.
1788         (OPTION_ISA_ROUND): Ditto.
1789         (TARGET_FUSED_MADD): New macro for -mfused-madd swtich.
1790         (TARGET_CPU_CPP_BUILTINS): Add SSE5 support.
1791
1792         * config/i386/i386.opt (-msse5): New switch for SSE5 support.
1793         (-mfused-madd): New switch to give users control over whether the
1794         compiler optimizes to use the multiply/add SSE5 instructions.
1795
1796         * config/i386/i386.c (m_AMD_MULTIPLE): Rename from
1797         m_ATHLON_K8_AMDFAM10, and change all uses.
1798         (enum pta_flags): Add PTA_SSE5.
1799         (ix86_handle_option): Turn off 3dnow if -msse5.
1800         (override_options): Add SSE5 support.
1801         (print_operand): %Y prints comparison codes for SSE5 com/pcom
1802         instructions.
1803         (ix86_expand_sse_movcc): Add SSE5 support.
1804         (ix86_expand_sse5_unpack): New function to use pperm to unpack a
1805         vector type to the next largest size.
1806         (ix86_expand_sse5_pack): New function to use pperm to pack a
1807         vector type to the next smallest size.
1808         (IX86_BUILTIN_FMADDSS): New for SSE5 intrinsic.
1809         (IX86_BUILTIN_FMADDSD): Ditto.
1810         (IX86_BUILTIN_FMADDPS): Ditto.
1811         (IX86_BUILTIN_FMADDPD): Ditto.
1812         (IX86_BUILTIN_FMSUBSS): Ditto.
1813         (IX86_BUILTIN_FMSUBSD): Ditto.
1814         (IX86_BUILTIN_FMSUBPS): Ditto.
1815         (IX86_BUILTIN_FMSUBPD): Ditto.
1816         (IX86_BUILTIN_FNMADDSS): Ditto.
1817         (IX86_BUILTIN_FNMADDSD): Ditto.
1818         (IX86_BUILTIN_FNMADDPS): Ditto.
1819         (IX86_BUILTIN_FNMADDPD): Ditto.
1820         (IX86_BUILTIN_FNMSUBSS): Ditto.
1821         (IX86_BUILTIN_FNMSUBSD): Ditto.
1822         (IX86_BUILTIN_FNMSUBPS): Ditto.
1823         (IX86_BUILTIN_FNMSUBPD): Ditto.
1824         (IX86_BUILTIN_PCMOV_V2DI): Ditto.
1825         (IX86_BUILTIN_PCMOV_V4SI): Ditto.
1826         (IX86_BUILTIN_PCMOV_V8HI): Ditto.
1827         (IX86_BUILTIN_PCMOV_V16QI): Ditto.
1828         (IX86_BUILTIN_PCMOV_V4SF): Ditto.
1829         (IX86_BUILTIN_PCMOV_V2DF): Ditto.
1830         (IX86_BUILTIN_PPERM): Ditto.
1831         (IX86_BUILTIN_PERMPS): Ditto.
1832         (IX86_BUILTIN_PERMPD): Ditto.
1833         (IX86_BUILTIN_PMACSSWW): Ditto.
1834         (IX86_BUILTIN_PMACSWW): Ditto.
1835         (IX86_BUILTIN_PMACSSWD): Ditto.
1836         (IX86_BUILTIN_PMACSWD): Ditto.
1837         (IX86_BUILTIN_PMACSSDD): Ditto.
1838         (IX86_BUILTIN_PMACSDD): Ditto.
1839         (IX86_BUILTIN_PMACSSDQL): Ditto.
1840         (IX86_BUILTIN_PMACSSDQH): Ditto.
1841         (IX86_BUILTIN_PMACSDQL): Ditto.
1842         (IX86_BUILTIN_PMACSDQH): Ditto.
1843         (IX86_BUILTIN_PMADCSSWD): Ditto.
1844         (IX86_BUILTIN_PMADCSWD): Ditto.
1845         (IX86_BUILTIN_PHADDBW): Ditto.
1846         (IX86_BUILTIN_PHADDBD): Ditto.
1847         (IX86_BUILTIN_PHADDBQ): Ditto.
1848         (IX86_BUILTIN_PHADDWD): Ditto.
1849         (IX86_BUILTIN_PHADDWQ): Ditto.
1850         (IX86_BUILTIN_PHADDDQ): Ditto.
1851         (IX86_BUILTIN_PHADDUBW): Ditto.
1852         (IX86_BUILTIN_PHADDUBD): Ditto.
1853         (IX86_BUILTIN_PHADDUBQ): Ditto.
1854         (IX86_BUILTIN_PHADDUWD): Ditto.
1855         (IX86_BUILTIN_PHADDUWQ): Ditto.
1856         (IX86_BUILTIN_PHADDUDQ): Ditto.
1857         (IX86_BUILTIN_PHSUBBW): Ditto.
1858         (IX86_BUILTIN_PHSUBWD): Ditto.
1859         (IX86_BUILTIN_PHSUBDQ): Ditto.
1860         (IX86_BUILTIN_PROTB): Ditto.
1861         (IX86_BUILTIN_PROTW): Ditto.
1862         (IX86_BUILTIN_PROTD): Ditto.
1863         (IX86_BUILTIN_PROTQ): Ditto.
1864         (IX86_BUILTIN_PROTB_IMM): Ditto.
1865         (IX86_BUILTIN_PROTW_IMM): Ditto.
1866         (IX86_BUILTIN_PROTD_IMM): Ditto.
1867         (IX86_BUILTIN_PROTQ_IMM): Ditto.
1868         (IX86_BUILTIN_PSHLB): Ditto.
1869         (IX86_BUILTIN_PSHLW): Ditto.
1870         (IX86_BUILTIN_PSHLD): Ditto.
1871         (IX86_BUILTIN_PSHLQ): Ditto.
1872         (IX86_BUILTIN_PSHAB): Ditto.
1873         (IX86_BUILTIN_PSHAW): Ditto.
1874         (IX86_BUILTIN_PSHAD): Ditto.
1875         (IX86_BUILTIN_PSHAQ): Ditto.
1876         (IX86_BUILTIN_FRCZSS): Ditto.
1877         (IX86_BUILTIN_FRCZSD): Ditto.
1878         (IX86_BUILTIN_FRCZPS): Ditto.
1879         (IX86_BUILTIN_FRCZPD): Ditto.
1880         (IX86_BUILTIN_CVTPH2PS): Ditto.
1881         (IX86_BUILTIN_CVTPS2PH): Ditto.
1882         (IX86_BUILTIN_COMEQSS): Ditto.
1883         (IX86_BUILTIN_COMNESS): Ditto.
1884         (IX86_BUILTIN_COMLTSS): Ditto.
1885         (IX86_BUILTIN_COMLESS): Ditto.
1886         (IX86_BUILTIN_COMGTSS): Ditto.
1887         (IX86_BUILTIN_COMGESS): Ditto.
1888         (IX86_BUILTIN_COMUEQSS): Ditto.
1889         (IX86_BUILTIN_COMUNESS): Ditto.
1890         (IX86_BUILTIN_COMULTSS): Ditto.
1891         (IX86_BUILTIN_COMULESS): Ditto.
1892         (IX86_BUILTIN_COMUGTSS): Ditto.
1893         (IX86_BUILTIN_COMUGESS): Ditto.
1894         (IX86_BUILTIN_COMORDSS): Ditto.
1895         (IX86_BUILTIN_COMUNORDSS): Ditto.
1896         (IX86_BUILTIN_COMFALSESS): Ditto.
1897         (IX86_BUILTIN_COMTRUESS): Ditto.
1898         (IX86_BUILTIN_COMEQSD): Ditto.
1899         (IX86_BUILTIN_COMNESD): Ditto.
1900         (IX86_BUILTIN_COMLTSD): Ditto.
1901         (IX86_BUILTIN_COMLESD): Ditto.
1902         (IX86_BUILTIN_COMGTSD): Ditto.
1903         (IX86_BUILTIN_COMGESD): Ditto.
1904         (IX86_BUILTIN_COMUEQSD): Ditto.
1905         (IX86_BUILTIN_COMUNESD): Ditto.
1906         (IX86_BUILTIN_COMULTSD): Ditto.
1907         (IX86_BUILTIN_COMULESD): Ditto.
1908         (IX86_BUILTIN_COMUGTSD): Ditto.
1909         (IX86_BUILTIN_COMUGESD): Ditto.
1910         (IX86_BUILTIN_COMORDSD): Ditto.
1911         (IX86_BUILTIN_COMUNORDSD): Ditto.
1912         (IX86_BUILTIN_COMFALSESD): Ditto.
1913         (IX86_BUILTIN_COMTRUESD): Ditto.
1914         (IX86_BUILTIN_COMEQPS): Ditto.
1915         (IX86_BUILTIN_COMNEPS): Ditto.
1916         (IX86_BUILTIN_COMLTPS): Ditto.
1917         (IX86_BUILTIN_COMLEPS): Ditto.
1918         (IX86_BUILTIN_COMGTPS): Ditto.
1919         (IX86_BUILTIN_COMGEPS): Ditto.
1920         (IX86_BUILTIN_COMUEQPS): Ditto.
1921         (IX86_BUILTIN_COMUNEPS): Ditto.
1922         (IX86_BUILTIN_COMULTPS): Ditto.
1923         (IX86_BUILTIN_COMULEPS): Ditto.
1924         (IX86_BUILTIN_COMUGTPS): Ditto.
1925         (IX86_BUILTIN_COMUGEPS): Ditto.
1926         (IX86_BUILTIN_COMORDPS): Ditto.
1927         (IX86_BUILTIN_COMUNORDPS): Ditto.
1928         (IX86_BUILTIN_COMFALSEPS): Ditto.
1929         (IX86_BUILTIN_COMTRUEPS): Ditto.
1930         (IX86_BUILTIN_COMEQPD): Ditto.
1931         (IX86_BUILTIN_COMNEPD): Ditto.
1932         (IX86_BUILTIN_COMLTPD): Ditto.
1933         (IX86_BUILTIN_COMLEPD): Ditto.
1934         (IX86_BUILTIN_COMGTPD): Ditto.
1935         (IX86_BUILTIN_COMGEPD): Ditto.
1936         (IX86_BUILTIN_COMUEQPD): Ditto.
1937         (IX86_BUILTIN_COMUNEPD): Ditto.
1938         (IX86_BUILTIN_COMULTPD): Ditto.
1939         (IX86_BUILTIN_COMULEPD): Ditto.
1940         (IX86_BUILTIN_COMUGTPD): Ditto.
1941         (IX86_BUILTIN_COMUGEPD): Ditto.
1942         (IX86_BUILTIN_COMORDPD): Ditto.
1943         (IX86_BUILTIN_COMUNORDPD): Ditto.
1944         (IX86_BUILTIN_COMFALSEPD): Ditto.
1945         (IX86_BUILTIN_COMTRUEPD): Ditto.
1946         (IX86_BUILTIN_PCOMEQUB): Ditto.
1947         (IX86_BUILTIN_PCOMNEUB): Ditto.
1948         (IX86_BUILTIN_PCOMLTUB): Ditto.
1949         (IX86_BUILTIN_PCOMLEUB): Ditto.
1950         (IX86_BUILTIN_PCOMGTUB): Ditto.
1951         (IX86_BUILTIN_PCOMGEUB): Ditto.
1952         (IX86_BUILTIN_PCOMFALSEUB): Ditto.
1953         (IX86_BUILTIN_PCOMTRUEUB): Ditto.
1954         (IX86_BUILTIN_PCOMEQUW): Ditto.
1955         (IX86_BUILTIN_PCOMNEUW): Ditto.
1956         (IX86_BUILTIN_PCOMLTUW): Ditto.
1957         (IX86_BUILTIN_PCOMLEUW): Ditto.
1958         (IX86_BUILTIN_PCOMGTUW): Ditto.
1959         (IX86_BUILTIN_PCOMGEUW): Ditto.
1960         (IX86_BUILTIN_PCOMFALSEUW): Ditto.
1961         (IX86_BUILTIN_PCOMTRUEUW): Ditto.
1962         (IX86_BUILTIN_PCOMEQUD): Ditto.
1963         (IX86_BUILTIN_PCOMNEUD): Ditto.
1964         (IX86_BUILTIN_PCOMLTUD): Ditto.
1965         (IX86_BUILTIN_PCOMLEUD): Ditto.
1966         (IX86_BUILTIN_PCOMGTUD): Ditto.
1967         (IX86_BUILTIN_PCOMGEUD): Ditto.
1968         (IX86_BUILTIN_PCOMFALSEUD): Ditto.
1969         (IX86_BUILTIN_PCOMTRUEUD): Ditto.
1970         (IX86_BUILTIN_PCOMEQUQ): Ditto.
1971         (IX86_BUILTIN_PCOMNEUQ): Ditto.
1972         (IX86_BUILTIN_PCOMLTUQ): Ditto.
1973         (IX86_BUILTIN_PCOMLEUQ): Ditto.
1974         (IX86_BUILTIN_PCOMGTUQ): Ditto.
1975         (IX86_BUILTIN_PCOMGEUQ): Ditto.
1976         (IX86_BUILTIN_PCOMFALSEUQ): Ditto.
1977         (IX86_BUILTIN_PCOMTRUEUQ): Ditto.
1978         (IX86_BUILTIN_PCOMEQB): Ditto.
1979         (IX86_BUILTIN_PCOMNEB): Ditto.
1980         (IX86_BUILTIN_PCOMLTB): Ditto.
1981         (IX86_BUILTIN_PCOMLEB): Ditto.
1982         (IX86_BUILTIN_PCOMGTB): Ditto.
1983         (IX86_BUILTIN_PCOMGEB): Ditto.
1984         (IX86_BUILTIN_PCOMFALSEB): Ditto.
1985         (IX86_BUILTIN_PCOMTRUEB): Ditto.
1986         (IX86_BUILTIN_PCOMEQW): Ditto.
1987         (IX86_BUILTIN_PCOMNEW): Ditto.
1988         (IX86_BUILTIN_PCOMLTW): Ditto.
1989         (IX86_BUILTIN_PCOMLEW): Ditto.
1990         (IX86_BUILTIN_PCOMGTW): Ditto.
1991         (IX86_BUILTIN_PCOMGEW): Ditto.
1992         (IX86_BUILTIN_PCOMFALSEW): Ditto.
1993         (IX86_BUILTIN_PCOMTRUEW): Ditto.
1994         (IX86_BUILTIN_PCOMEQD): Ditto.
1995         (IX86_BUILTIN_PCOMNED): Ditto.
1996         (IX86_BUILTIN_PCOMLTD): Ditto.
1997         (IX86_BUILTIN_PCOMLED): Ditto.
1998         (IX86_BUILTIN_PCOMGTD): Ditto.
1999         (IX86_BUILTIN_PCOMGED): Ditto.
2000         (IX86_BUILTIN_PCOMFALSED): Ditto.
2001         (IX86_BUILTIN_PCOMTRUED): Ditto.
2002         (IX86_BUILTIN_PCOMEQQ): Ditto.
2003         (IX86_BUILTIN_PCOMNEQ): Ditto.
2004         (IX86_BUILTIN_PCOMLTQ): Ditto.
2005         (IX86_BUILTIN_PCOMLEQ): Ditto.
2006         (IX86_BUILTIN_PCOMGTQ): Ditto.
2007         (IX86_BUILTIN_PCOMGEQ): Ditto.
2008         (IX86_BUILTIN_PCOMFALSEQ): Ditto.
2009         (IX86_BUILTIN_PCOMTRUEQ): Ditto.
2010         (bdesc_ptest): Change OPTION_MASK_ISA_SSE4_1 to
2011         OPTION_MASK_ISA_ROUND for instructions that are shared between
2012         SSE4.1 and SSE5.
2013         (bdesc_2arg): Ditto.
2014         (bdesc_sse_3arg): Ditto.
2015         (enum multi_arg_type): New enum for describing the various SSE5
2016         intrinsic argument types.
2017         (bdesc_multi_arg): New table for SSE5 intrinsics.
2018         (ix86_init_mmx_sse_builtins): Add SSE5 intrinsic support.
2019         (ix86_expand_multi_arg_builtin): New function for creating SSE5
2020         intrinsics.
2021         (ix86_expand_builtin): Add SSE5 intrinsic support.
2022         (ix86_sse5_valid_op_p): New function to validate SSE5 3 and 4
2023         operand instructions.
2024         (ix86_expand_sse5_multiple_memory): New function to split the
2025         second memory reference from SSE5 instructions.
2026         (type_has_variadic_args_p): Delete in favor of stdarg_p.
2027         (ix86_return_pops_args): Use stdarg_p to determine if the function
2028         has variable arguments.
2029         (ix86_setup_incoming_varargs): Ditto.
2030         (x86_this_parameter): Ditto.
2031
2032         * config/i386/i386-protos.h (ix86_expand_sse5_unpack): Add
2033         declaration.
2034         (ix86_expand_sse5_pack): Ditto.
2035         (ix86_sse5_valid_op_p): Ditto.
2036         (ix86_expand_sse5_multiple_memory): Ditto.
2037
2038         * config/i386/i386.md (UNSPEC_SSE5_INTRINSIC): Add new UNSPEC
2039         constant for SSE5 support.
2040         (UNSPEC_SSE5_UNSIGNED_CMP): Ditto.
2041         (UNSPEC_SSE5_TRUEFALSE): Ditto.
2042         (UNSPEC_SSE5_PERMUTE): Ditto.
2043         (UNSPEC_SSE5_ASHIFT): Ditto.
2044         (UNSPEC_SSE5_LSHIFT): Ditto.
2045         (UNSPEC_FRCZ): Ditto.
2046         (UNSPEC_CVTPH2PS): Ditto.
2047         (UNSPEC_CVTPS2PH): Ditto.
2048         (PCOM_FALSE): Add new constant for true/false SSE5 comparisons.
2049         (PCOM_TRUE): Ditto.
2050         (COM_FALSE_S): Ditto.
2051         (COM_FALSE_P): Ditto.
2052         (COM_TRUE_S): Ditto.
2053         (COM_TRUE_P): Ditto.
2054         (type attribute): Add ssemuladd, sseiadd1, ssecvt1, sse4arg types.
2055         (unit attribute): Add support for ssemuladd, ssecvt1, sseiadd1 sse4arg
2056         types.
2057         (memory attribute): Ditto.
2058         (sse4_1_round<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
2059         Use SSE4_1_ROUND_* constants instead of hard coded numbers.
2060         (rint<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
2061         (floor<mode>2): Ditto.
2062         (ceil<mode>2): Ditto.
2063         (btrunc<mode>2): Ditto.
2064         (nearbyintdf2): Ditto.
2065         (nearbyintsf2): Ditto.
2066         (sse_setccsf): Disable if SSE5.
2067         (sse_setccdf): Ditto.
2068         (sse5_setcc<mode>): New support for SSE5 conditional move.
2069         (sse5_pcmov_<mode>): Ditto.
2070
2071         * config/i386/sse.md (SSEMODE1248): New mode iterator for SSE5.
2072         (SSEMODEF4): Ditto.
2073         (SSEMODEF2P): Ditto.
2074         (ssemodesuffixf4): New mode attribute for SSE5.
2075         (ssemodesuffixf2s): Ditto.
2076         (ssemodesuffixf2c): Ditto.
2077         (sserotatemax): Ditto.
2078         (ssescalarmode): Ditto.
2079         (sse_maskcmpv4sf3): Disable if SSE5.
2080         (sse_maskcmpv2df3): Ditto.
2081         (sse_vmmaskcmpv4sf3): Ditto.
2082         (sse5_fmadd<mode>4): Add SSE5 floating point multiply/add
2083         instructions.
2084         (sse5_vmfmadd<mode>4): Ditto.
2085         (sse5_fmsub<mode>4): Ditto.
2086         (sse5_vmfmsub<mode>4): Ditto.
2087         (sse5_fnmadd<mode>4): Ditto.
2088         (sse5_vmfnmadd<mode>4): Ditto.
2089         (sse5_fnmsub<mode>4): Ditto.
2090         (sse5_vmfnmsub<mode>4): Ditto.
2091         (sse5i_fmadd<mode>4): Ditto.
2092         (sse5i_fmsub<mode>4): Ditto.
2093         (sse5i_fnmadd<mode>4): Ditto.
2094         (sse5i_fnmsub<mode>4): Ditto.
2095         (sse5i_vmfmadd<mode>4): Ditto.
2096         (sse5i_vmfmsub<mode>4): Ditto.
2097         (sse5i_vmfnmadd<mode>4): Ditto.
2098         (sse5i_vmfnmsub<mode>4): Ditto.
2099         (mulv16qi3): Add SSE5 support.
2100         (mulv4si3): Ditto.
2101         (sse5_mulv4si3): New insn for 32-bit multiply support on SSE5.
2102         (sse2_mulv4si3): Disable if SSE5.
2103         (sse4_1_roundpd): Use TARGET_ROUND instead of TARGET_SSE4_1.
2104         (sse4_1_roundps): Ditto.
2105         (sse4_1_roundsd): Ditto.
2106         (sse4_1_roundss): Ditto.
2107         (sse_maskcmpv4sf3): Disable if SSE5 so the SSE5 instruction will
2108         be generated.
2109         (sse_maskcmpsf3): Ditto.
2110         (sse_vmmaskcmpv4sf3): Ditto.
2111         (sse2_maskcmpv2df3): Ditto.
2112         (sse2_maskcmpdf3): Ditto.
2113         (sse2_vmmaskcmpv2df3): Ditto.
2114         (sse2_eq<mode>3): Ditto.
2115         (sse2_gt<mode>3): Ditto.
2116         (sse5_pcmov_<mode>): Add SSE5 support.
2117         (vec_unpacku_hi_v16qi): Ditto.
2118         (vec_unpacks_hi_v16qi): Ditto.
2119         (vec_unpacku_lo_v16qi): Ditto.
2120         (vec_unpacks_lo_v16qi): Ditto.
2121         (vec_unpacku_hi_v8hi): Ditto.
2122         (vec_unpacks_hi_v8hi): Ditto.
2123         (vec_unpacku_lo_v8hi): Ditto.
2124         (vec_unpacks_lo_v8hi): Ditto.
2125         (vec_unpacku_hi_v4si): Ditto.
2126         (vec_unpacks_hi_v4si): Ditto.
2127         (vec_unpacku_lo_v4si): Ditto.
2128         (vec_unpacks_lo_v4si): Ditto.
2129         (sse5_pmacsww): New SSE5 intrinsic insn.
2130         (sse5_pmacssww): Ditto.
2131         (sse5_pmacsdd): Ditto.
2132         (sse5_pmacssdd): Ditto.
2133         (sse5_pmacssdql): Ditto.
2134         (sse5_pmacssdqh): Ditto.
2135         (sse5_pmacsdqh): Ditto.
2136         (sse5_pmacsswd): Ditto.
2137         (sse5_pmacswd): Ditto.
2138         (sse5_pmadcsswd): Ditto.
2139         (sse5_pmadcswd): Ditto.
2140         (sse5_pcmov_<move>): Conditional move support on SSE5.
2141         (sse5_phaddbw): New SSE5 intrinsic insn.
2142         (sse5_phaddbd): Ditto.
2143         (sse5_phaddbq): Ditto.
2144         (sse5_phaddwd): Ditto.
2145         (sse5_phaddwq): Ditto.
2146         (sse5_phadddq): Ditto.
2147         (sse5_phaddubw): Ditto.
2148         (sse5_phaddubd): Ditto.
2149         (sse5_phaddubq): Ditto.
2150         (sse5_phadduwd): Ditto.
2151         (sse5_phadduwq): Ditto.
2152         (sse5_phaddudq): Ditto.
2153         (sse5_phsubbw): Ditto.
2154         (sse5_phsubwd): Ditto.
2155         (sse5_phsubdq): Ditto.
2156         (sse5_pperm): Ditto.
2157         (sse5_pperm_sign_v16qi_v8hi): New insns for pack/unpack with SSE5.
2158         (sse5_pperm_zero_v16qi_v8hi): Ditto.
2159         (sse5_pperm_sign_v8hi_v4si): Ditto.
2160         (sse5_pperm_zero_v8hi_v4si): Ditto.
2161         (sse5_pperm_sign_v4si_v2di): Ditto.
2162         (sse5_pperm_sign_v4si_v2di): Ditto.
2163         (sse5_pperm_pack_v2di_v4si): Ditto.
2164         (sse5_pperm_pack_v4si_v8hi): Ditto.
2165         (sse5_pperm_pack_v8hi_v16qi): Ditto.
2166         (sse5_perm<mode>): New SSE5 intrinsic insn.
2167         (rotl<mode>3): Ditto.
2168         (sse5_rotl<mode>3): Ditto.
2169         (sse5_ashl<mode>3): Ditto.
2170         (sse5_lshl<mode>3): Ditto.
2171         (sse5_frcz<mode>2): Ditto.
2172         (sse5s_frcz<mode>2): Ditto.
2173         (sse5_cvtph2ps): Ditto.
2174         (sse5_cvtps2ph): Ditto.
2175         (sse5_vmmaskcmp<mode>3): Ditto.
2176         (sse5_com_tf<mode>3): Ditto.
2177         (sse5_maskcmp<mode>3): Ditto.
2178         (sse5_maskcmp_uns<mode>3): Ditto.
2179         (sse5_maskcmp_uns2<mode>3): Ditto.
2180         (sse5_pcom_tf<mode>3): Ditto.
2181         
2182         * config/i386/predicates.md (const_0_to_31_operand): New predicate
2183         to match 0..31.
2184         (sse5_comparison_float_operator): New predicate to match the
2185         comparison operators supported by the SSE5 com instruction.
2186         (ix86_comparison_int_operator): New predicate to match just the
2187         signed int comparisons.
2188         (ix86_comparison_uns_operator): New predicate to match just the
2189         unsigned int comparisons.
2190
2191         * doc/invoke.texi (-msse5): Add documentation.
2192         (-mfused-madd): Ditto.
2193
2194         * doc/extend.texi (x86 intrinsics): Document new SSE5 intrinsics.
2195
2196         * config.gcc (i[34567]86-*-*): Include bmmintrin.h and
2197         mmintrin-common.h.
2198         (x86_64-*-*): Ditto.
2199
2200         * config/i386/cpuid.h (bit_SSE5): Define SSE5 bit.
2201
2202         * config/i386/bmmintrin.h: New file, provide common x86 compiler
2203         intrinisics for SSE5.
2204
2205         * config/i386/smmintrin.h: Move instructions shared with SSE5 to
2206         mmintrin-common.h.
2207
2208         * config/i386/mmintrin-common.h: New file, to contain common
2209         instructions between SSE4.1 and SSE5.
2210
2211         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration): Use
2212         FOREACH_FUNCTION_ARGS to iterate over the argument list.
2213         (gen_regparm_prefix): Ditto.
2214
2215         * config/i386/winnt.c (gen_stdcall_or_fastcall_suffix): Use
2216         FOREACH_FUNCTION_ARGS to iterate over the argument list.  Use
2217         prototype_p to determine if a function is prototyped.
2218
2219 2007-09-12  Janis Johnson  <janis187@us.ibm.com>
2220
2221         * config/dfp-bit.c (dfp_conversion_exception): New function.
2222         (DFP_TO_DFP) Add new variants to use direct conversions in decNumber.
2223         (DFP_TO_INT): Ditto.
2224         (INT_TO_DFP): Ditto.
2225         * config/dfp-bit.h (DEC_FLOAT_FROM_INT, DEC_FLOAT_TO_INT): New.
2226
2227 2007-09-12  Jakub Jelinek  <jakub@redhat.com>
2228
2229         PR target/32338
2230         * config/ia64/ia64.c (ia64_expand_epilogue): Emit blockage
2231         before sp restoration even when total_size is 0, but
2232         frame_pointer_needed.
2233
2234 2007-09-12  Bob Wilson  <bob.wilson@acm.org>
2235
2236         * config/xtensa/xtensa.c (machine_function): Add vararg_a7_copy.
2237         (xtensa_copy_incoming_a7): Use start_sequence instead of
2238         push_to_sequence.  Stash insns in vararg_a7_copy for builtin_saveregs.
2239         (xtensa_builtin_saveregs): Place code from vararg_a7_copy at the start
2240         of the saveregs sequence.
2241
2242 2007-09-12  Richard Sandiford  <richard@codesourcery.com>
2243
2244         * c-tree.h (grokfield): Add a "tree *" argument.
2245         * c-decl.c (grokdeclarator): Take a pointer to the decl's attributes.
2246         Chain nested decl attributes to it.  Don't call decl_attributes here.
2247         (groktypename): Pass grokdeclarator a pointer to the attribute list.
2248         (start_decl, grokparm, push_parm_decl, start_function): Likewise.
2249         (grokfield): Take a pointer to the decl's attributes and pass
2250         it to grokdeclarator.
2251         * c-parser.c (c_parser_struct_declaration): Update the calls to
2252         grokfield.  Call decl_attributes for anonymous struct and union
2253         fields.
2254
2255 2007-09-12  Jan Hubicka  <jh@suse.cz>
2256
2257         * c-objc-common.h (LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION): Kill.
2258
2259 2007-09-12  Ira Rosen  <irar@il.ibm.com>
2260
2261         PR tree-optimization/32377
2262         * tree-vect-analyze.c (vect_analyze_data_ref_dependence): Distinguish
2263         between positive and negative dependence distance using DDR_REVERSED_P.
2264
2265 2007-09-12  Dorit Nuzman  <dorit@il.ibm.com>
2266
2267         PR tree-optimization/33373
2268         * tree-vect-analyze (vect_determine_vectorization_factor): Call 
2269         TREE_INT_CST_LOW when comparing TYPE_SIZE_UNIT. 
2270
2271 2007-09-12  Jan Hubicka  <jh@suse.cz>
2272
2273         PR target/33393
2274         * i386.md (floatsisf2_mixed_memory, floatsisf2_sse_memory): Disable
2275         for !SSE_MATH
2276
2277 2007-09-12  Christian Bruel  <christian.bruel@st.com>
2278
2279         * sh.h (SH_DBX_REGISTER_NUMBER): Added fpscr, fixed sr/gbr regs.
2280         * linux-unwind.h (SH_DWARF_FRAME_GBR): fixed. 
2281         
2282 2007-09-12  Ira Rosen  <irar@il.ibm.com>
2283
2284         * tree-vect-transform.c (vect_get_slp_defs): Don't build a vector
2285         for oprnd1 if not required.
2286         (vectorizable_operation): Use scalar operand in SLP in case of 
2287         shift with scalar argument.
2288
2289 2007-09-12  Ira Rosen  <irar@il.ibm.com>
2290
2291         * params.def (PARAM_MIN_VECT_LOOP_BOUND): Change default and minimum 
2292         to 1.
2293
2294 2007-09-11  James E. Wilson  <wilson@specifix.com>
2295
2296         * defaults.h (DWARF2_UNWIND_INFO): Don't define if
2297         TARGET_UNWIND_INFO is defined.
2298         * config/ia64/ia64.h (INCOMING_RETURN_ADDR_RTX): Delete undef
2299         after definition.
2300
2301 2007-09-12  Kaz Kojima  <kkojima@gcc.gnu.org>
2302
2303         * config/sh/sh.c (calc_live_regs): Use
2304         current_function_saves_all_registers instead of
2305         current_function_has_nonlocal_label.
2306         (sh_allocate_initial_value): Likewise.
2307         (sh_get_pr_initial_val): Likewise.
2308         * config/sh/sh.h (SHMEDIA_REGS_STACK_ADJUST): Likewise.
2309         * config/sh/sh.md (load_ra): Likewise.
2310
2311 2007-09-12  Hans-Peter Nilsson  <hp@axis.com>
2312
2313         * config/cris/t-linux (LIMITS_H_TEST): Only define if not inhibit_libc.
2314
2315         PR target/33360
2316         * config/cris/cris.c (cris_expand_pic_call_address): Fix typo in
2317         GET_CODE (x) == CONST_INT to CONST_INT_P (x) transformation.
2318
2319 2007-09-12  Sa Liu  <saliu@de.ibm.com>
2320
2321         * config/spu/spu.c (spu_emit_branch_or_set): Handle NaN values as
2322         operands to DFmode GE or LE compares.
2323
2324 2007-09-12  Bernd Schmidt  <bernd.schmidt@analog.com>
2325
2326         * config/bfin/bfin.h (enum reg_class, REG_CLASS_CONTENTS,
2327         REG_CLASS_NAMES): Add P0REGS.
2328         (REGNO_REG_CLASS): Return it where appropriate.
2329         (REG_CLASS_FROM_CONSTRAINT): Add 'qA'.
2330         (CLASS_LIKELY_SPILLED_P): P0REGS is likely_spilled.
2331         * doc/md.texi (Blackfin family): Document 'q' constraints.
2332
2333 2007-09-11  Steve Kenton  <skenton@ou.edu>
2334
2335         * pa/linux-unwind.h: Guard with inhibit_libc.
2336         * pa/hpux-unwind.h: Likewise.
2337
2338 2007-09-11  David Daney  <ddaney@avtrex.com>
2339
2340         * doc/invoke.texi: Document new MIPS -mllsc and -mno-llsc options.
2341         * doc/install.texi: Document new --with-llsc and --without-llsc
2342         options.
2343         * config.gcc: Handle --with-llsc and --without-llsc configure options.
2344         * config/mips/mips.md (sync, memory_barrier): Wrap sync instrunction
2345         in %| and %- operand codes.  Depend on GENERATE_SYNC instead of
2346         ISA_HAS_SYNC.
2347         (sync_compare_and_swap<mode>, sync_add<mode>, sync_sub<mode>,
2348         sync_old_add<mode>, sync_old_sub<mode>, sync_new_add<mode>,
2349         sync_new_sub<mode>, sync_<optab><mode>, sync_old_<optab><mode>,
2350         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
2351         sync_new_nand<mode>, sync_lock_test_and_set<mode>): Depend on
2352         GENERATE_LL_SC instead of ISA_HAS_LL_SC.
2353         * config/mips/mips.opt (mllsc): New option.
2354         * config/mips/mips.c (mips_llsc): Define variable.
2355         (mips_handle_option): Handle mllsc option.
2356         (override_options): Set mips_print_operand_punct for '|' and '-'.
2357         (print_operand): Add new %| and %- operand codes.
2358         * config/mips/mips.h (mips_llsc_setting): New enum type.
2359         (mips_llsc): Declare.
2360         (OPTION_DEFAULT_SPECS): Add llsc handling.
2361         (GENERATE_SYNC): New macro.
2362         (GENERATE_LL_SC): New macro.
2363         (MIPS_COMPARE_AND_SWAP, MIPS_SYNC_OP, MIPS_SYNC_OLD_OP,
2364         MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND,
2365         MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE): Wrap instructions
2366         in %| and %- operand codes.
2367
2368 2007-09-11  Eric Botcazou  <ebotcazou@adacore.com>
2369
2370         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Deal with
2371         TYPE_NONALIASED_COMPONENT like with DECL_NONADDRESSABLE_P.
2372
2373 2007-09-11  Jason Merrill  <jason@redhat.com>
2374
2375         PR middle-end/27945
2376         * stor-layout.c (layout_decl): Do pack variable size fields.    
2377
2378 2007-09-11  Maxim Kuvyrkov  <maxim@codesourcery.com>
2379
2380         * config/m68k/predicates.md (movsi_const0_operand,
2381         non_symbolic_call_operand): New predicates.
2382
2383         * config/m68k/constraints.md (Cs, Ci, C0, Cj, CQ, CW, CZ, CS, Ap, Ac):
2384         New constraints.
2385         * doc/md.texi (Constraints for Particular Machines: Motorola 680x0):
2386         Document constraints N, O, P, R, S, T, Q, U, W, Cs, Ci, C0, Cj, CQ,
2387         CW, CZ, CS, Ap and Ac.
2388
2389         * config/m68k/m68k.md (UNSPEC_IB): New constant.
2390         (constraints.md): New include.
2391         (cpu, type, type1, opx, opy, opx_type, opy_type, size, opx_access,
2392         opx_mem, opy_mem, op_mem, guess, split): New attributes.
2393         (movdf_internal): Name pattern.  Fix to use alternatives.  Add split.
2394         Specify attributes.
2395         (pushdi): Add split.
2396         (tstsi_internal): Name pattern.  Fix to use alternatives.  Specify
2397         attributes.  Split tstsi_internal_68020_cf from it.
2398         (tstsi_internal_68020_cf): New pattern.
2399         (tsthi_internal, tstqi_internal): Name pattern.  Specify attributes.
2400         (tst<mode>_cf): Specify attributea.
2401         (cmpsi_cf): Name pattern.  Specify attributes.
2402         (cmp<mode>_68881, cmp<mode>_cf): Specify type attribute.
2403         (pushexthisi_const): Fix to use alternatives.  Specify
2404         attributes.
2405         (movsi_const0): Split movsi_const0_68000_10 and movsi_const0_68040_60
2406         from it.  Fix to use alternatives.  Specify attributes.
2407         (movsi_const0_68040_10, movsi_const0_68040_60): New patterns.
2408         (movsi_cf, movstrictqi_cf): Fix to use alternatives.  Specify
2409         attributes.
2410         (movsf_cf_soft): Specify attributes.
2411         (movdf_cf_soft): Add split.
2412         (pushasi, zero_extendhisi2_cf, zero_extendqisi2_cfv4,
2413         cfv4_extendhisi2, 68k_extendhisi2, extendqihi2, cfv4_extendqisi2,
2414         68k_extendqisi2, truncdfsf2_cf): Specify attributes.
2415         (truncdfsf2_68881): Name pattern.  Specify attributes.
2416         (floatsi<mode>2_cf, floathi<mode>2_68881, floathi<mode>2_cf,
2417         floatqi<mode>2_68881, floatqi<mode>2_cf, ftrunc<mode>2_cf,
2418         fix<mode>qi2_cf, fix<mode>hi2_cf, fix<mode>si2_cf, adddi_dishl32):
2419         Specify attributes.
2420         (addsi3_5200): Fix to use alternatives.  Specify attributes.
2421         Add splits.
2422         (add<mode>3_cf, subdi_dishl32): Specify attributes.
2423         (subsi3): Add alternative for subq.l.  Specify attributes.
2424         (sub<mode>3_cf, mulhi3, mulhisi3): Specify attributes.
2425         (mulhisisi3_s, mulsi3_68020, mulsi3_cf): Name pattern.  Specify
2426         attributes.
2427         (umulhisi3): Specify attributes.
2428         (mulhisisi3_z): Name pattern.  Specify attributes.
2429         (fmul<mode>3_cf, div<mode>3_cf, negsi2_internal, negsi2_5200,
2430         sqrt<mode>2_68881, clzsi2, one_cmplsi2_5200, subreghi1ashrdi_const32,
2431         subregsi1ashrdi_const32, ashrsi3, subreg1lshrdi_const32, lshrsi3,
2432         bsetmemqi): Specify attributes.
2433         (bsetmemqi_ext): Name pattern.  Specify attributes.
2434         (bclrmemqi): Specify attributes.
2435         (bclrmemqi_ext, scc, sls): Name pattern.  Specify attributes.
2436         (beq, bne, bgt, bgtu, blt, bltu, bge, bgeu, ble, bleu): Specify
2437         attributes.
2438         (beq2, bne2, bgt2, bgtu2, blt2, bltu2, bge2, bgeu2, ble2, bleu2): Name
2439         pattern.  Specify attributes.
2440         (jump): Specify attributes.
2441         (tablejump_internal): Name pattern.  Specify attributes.
2442         (call_value): Split into non_symbolic_call_value,
2443         symbolic_call_value_jsr, symbolic_call_value_bsr.  Fix to use
2444         alternatives.  Specify attributes.
2445         (non_symbolic_call_value, symbolic_call_value_jsr,
2446         symbolic_call_value_bsr): New patterns.
2447         (nop, return, unlink, indirect_jump): Specify attributes.
2448         (trap): Fix condition.  Specify attributes.
2449         (ib): New pattern.
2450
2451         * config/m68k/m68k.c (m68k_symbolic_call_var): New variable.
2452         (override_options): Initialize it.  Initialize m68k_sched_cpu.
2453         (CONST_METHOD): Rename to M68K_CONST_METHOD, move to m68k.h.
2454         (const_method): Make global, rename to m68k_const_method.
2455         (const_int_cost, output_move_const_into_data_reg): Update.
2456         (output_move_double): Parametrize to emit rtl code, rename to
2457         handle_move_double.
2458         (output_reg_adjust, emit_reg_adjust, output_compadr, output_movsi,
2459         emit_movsi): New static functions.
2460         (output_move_double): New function with semantics of old
2461         output_move_double.
2462         (m68k_emit_move_double): New function.
2463         (m68k_sched_cpu): New variable.
2464         (attr_op_type): New enum.
2465         (sched_guess_p): New variable.
2466         (sched_address_type, sched_operand_type, sched_attr_op_type):
2467         New static functions.
2468         (m68k_sched_attr_opx_type, m68k_sched_attr_opy_type,
2469         m68k_sched_attr_size, m68k_sched_attr_op_mem): New functions.
2470         (sched_branch_type): New static variable.
2471         (m68k_sched_branch_type): New function.
2472         * config/m68k/m68k.h (M68K_SYMBOLIC_CALL): New enum.
2473         (m68k_symbolic_call_var): Declare.
2474         (M68K_CONST_METHOD): Rename from CONST_METHOD.  Move here from m68k.c.
2475         (m68k_const_method, m68k_emit_move_double, m68k_sched_cpu,
2476         m68k_sched_attr_opx_type, m68k_sched_attr_opy_type,
2477         m68k_sched_attr_size, m68k_sched_attr_op_mem, m68k_sched_branch_type):
2478         Declare.
2479
2480 2007-09-11  Jakub Jelinek  <jakub@redhat.com>
2481
2482         * builtins.def (BUILT_IN_VA_ARG_PACK_LEN): New builtin.
2483         * builtins.c (expand_builtin) <case BUILT_IN_VA_ARG_PACK_LEN>: Issue
2484         error if __builtin_va_arg_pack_len () wasn't optimized out during
2485         inlining.
2486         * tree-inline.c (copy_bb): Replace __builtin_va_arg_pack_len ()
2487         with the number of inline's anonymous arguments.
2488         * doc/extend.texi: Document __builtin_va_arg_pack_len ().
2489
2490 2007-09-11  Zdenek Dvorak  <ook@ucw.cz>
2491
2492         * fold-const.c (extract_muldiv_1): Do not simplify
2493         var * c * c to var.
2494
2495 2007-09-11  Jan Hubicka <jh@suse.cz>
2496
2497         * i386.h (ix86_tune_indices): Add X86_TUNE_INTER_UNIT_CONVERSIONS.
2498         (TARGET_INTER_UNIT_CONVERSIONS): New.
2499         * i386.md (floatsi expanders): Remove redundant check for SImode
2500         source; offload to memory when asked for.
2501         (floatsisf2_mixed, floatsisf2_sse, floatsidf2_mixed, floatsidf2_sse
2502         floatdisf2_mixed, floatsisf2_sse, floatsidf2_mixed, floatsidf2_sse):
2503         Update conditions;
2504         (floatsisf2_mixed_memory, floatsisf2_sse_memory,
2505         floatsidf2_mixed_memory, floatsidf2_sse_memory
2506         floatdisf2_mixed_memory, floatsisf2_sse_memory,
2507         floatsidf2_mixed_memory, floatsidf2_sse_memory): New.
2508
2509 2007-09-11  Jan Hubicka <jh@suse.cz>
2510
2511         * toplev.c (process_options): all frontends now do unit-at-a-time.
2512         * cgraphunit.c: update comments.
2513         (cgraph_expand_function): call passmanager dirrectly; emit thunks.
2514         * c-decl.c (finish_function): use cgraph_add_new_function.
2515         * function.c (expand_function_end): We are always unit-at-a-time.
2516
2517 2007-09-11  Richard Sandiford  <richard@codesourcery.com>
2518
2519         * config/mips/mips.c (mips_set_mips16_mode): Use separate anchor
2520         settings for MIPS16.
2521         (mips_use_anchors_for_symbol_p): Use default_use_anchors_for_symbol_p.
2522
2523 2007-09-11  Richard Sandiford  <richard@codesourcery.com>
2524
2525         * config/mips/mips.c (mips_symbol_insns_1): Allow LEAs of
2526         SYMBOL_FORCE_TO_MEM constants.
2527         (mips_rtx_costs): Give a cost of 1 to force_to_mem_operands.
2528         (mips16_rewrite_pool_refs_info): New structure.
2529         (mips16_rewrite_pool_constant): New function, split out from...
2530         (mips16_rewrite_pool_refs): ...here.  Take a pointer to a
2531         mips16_rewrite_pool_refs_info structure rather than a pointer
2532         to a constant pool.  Force force_to_mem_operands into memory.
2533         (mips16_lay_out_constants): Update call to mips16_rewrite_pool_refs.
2534         * config/mips/predicates.md (force_to_mem_operand): New predicate.
2535         * config/mips/constraints.md (kf): New constraint.
2536         * config/mips/mips.md (*movdi_64bit_mips16): Add a d <- kf alternative.
2537         (*movsi_mips16): Likewise.
2538
2539 2007-09-11  Richard Sandiford  <richard@codesourcery.com>
2540             Nigel Stephens  <nigel@mips.com>
2541             David Ung  <davidu@mips.com>
2542
2543         * config/mips/mips.h (CONSTANT_POOL_COST): Move to...
2544         * config/mips/mips.c: ...here and set to 4 for TARGET_MIPS16.
2545         (mips16_constant_cost, mips_immediate_operand_p, mips_binary_cost)
2546         (mips_fp_mult_cost, mips_fp_div_cost, mips_sign_extend_cost)
2547         (mips_zero_extend_cost): New functions.
2548         (mips_rtx_costs): Treat COMPARE constants as having zero cost.
2549         Use the new functions.  Tweak many cost estimates, both here
2550         and in the new subroutines.  Return false when the cost of the
2551         operands has not been calculated.  Check for *clear_upper32.
2552         Check for floating-point multiply-add, reciprocal and rsqrt
2553         patterns.  Handle comparison and rotation codes.
2554
2555 2007-09-11  Danny Smith  <dannysmith@users.sourceforge.net>
2556
2557         * config/i386/cygming.h (TARGET_STRIP_NAME_ENCODING): Don't
2558         override default.
2559         * config/i386/i386.c (get_dllimport_decl): Don't strip
2560         FASTCALL_PREFIX.
2561
2562 2007-09-10  Janis Johnson  <janis187@us.ibm.com>
2563
2564         PR c/30013
2565         * config/dfp-bit.c: Don't skip TFmode conversions; move strto*
2566         declarations to top.
2567         (DFP_TO_BFP): Use for either XFmode or TFmode.
2568         (BFP_TO_DFP): Use for either XFmode or TFmode; always use cast
2569         of BFP_VIA_TYPE.
2570         * config/dfp-bit.h: Include float.h.
2571         (LONG_DOUBLE_HAS_XF_MODE, LONG_DOUBLE_HAS_TF_MODE): Define if long
2572         double is one of these modes, rather than using LIBGCC_HAS_*F_MODE
2573         which doesn't mean the same thing.
2574         (BFP_KIND): Use 4 to mean TFmode.
2575         (BFP_FMT): Specify the number of decimal digits based on the
2576         number of mantissa digits.
2577         (BFP_VIA_TYPE): Binary float type to use as cast for sprintf.
2578         (BFP_TO_DFP, DFP_TO_BFP): Define names for TFmode variants.
2579         (STR_TO_BFP): Use strtold for XFmode or TFmode.
2580         (TFtype): Define if TFmode is supported.
2581         * doc/libgcc.texi (Decimal float library routines): Document
2582         TF conversion functions.
2583
2584 2007-09-10  Chao-ying Fu  <fu@mips.com>
2585
2586         * config/mips/mips.c (mips_scalar_mode_supported_p): Declare.
2587         (TARGET_SCALAR_MODE_SUPPORTED_P): Define.
2588         (mips_emit_compare): Process fixed-point modes.
2589         (mips_pad_arg_upward): Support fixed-point types.
2590         (override_options): Allow fixed-point modes in accumulators.
2591         (mips_pass_by_reference): Pass DQ, UDQ, DA, and UDA modes in registers.
2592         (mips_vector_mode_supported_p): Support V2HQmode, V2UHQmode, V2HAmode,
2593         V2UHAmode, V4QQmode, and V4UQQmode when TARGET_DSP.
2594         (mips_scalar_mode_supported_p): New function to accept fixed-point
2595         modes if the width is not greater than two BITS_PER_WORD.
2596         * config/mips/mips.h (SHORT_FRACT_TYPE_SIZE, FRACT_TYPE_SIZE,
2597         LONG_FRACT_TYPE_SIZE, LONG_LONG_FRACT_TYPE_SIZE,
2598         SHORT_ACCUM_TYPE_SIZE, ACCUM_TYPE_SIZE, LONG_ACCUM_TYPE_SIZE,
2599         LONG_LONG_ACCUM_TYPE_SIZE): Define.
2600         * config/mips/mips.md ("d"): Update mode attribute for fixed-point
2601         modes.
2602         ("IMODE"): New mode attribute.
2603         (mips-fixed.md): Include.
2604         * config/mips/mips-modes.def: Create VECTOR_MODES for FRACT, UFRACT,
2605         ACCUM, UACCUM.
2606         * config/mips/mips-fixed.md: New file.
2607
2608 2007-09-11  Ben Elliston  <bje@au.ibm.com>
2609
2610         * config/spu/spu.md: Formatting fixes.
2611
2612 2007-09-10  Janis Johnson  <janis187@us.ibm.com>
2613
2614         * config/dfp-bit.c (dfp_unary_func): Delete.
2615         (dfp_unary_op): Delete.
2616         (dfp_binary_op): Use decFloat functions instead of decNumber
2617         functions for binary operations.
2618         (d32_binary_op): Convert 32-bit operands to 64 bits for evaluation.
2619         (dnn_binary_op): Call dfp_binary_op with decFloat rather than
2620         DFP_C_TYPE.
2621         (dfp_compare_op): Use decFloat functions insteadof decNumber
2622         functions for comparisons.
2623         (d32_compare_op): Convert 32-bit operands to 64 bits for evaluation.
2624         (dnn_binary_op): Call dfp_compare_op with decFloat rather than
2625         DFP_C_TYPE.
2626         (DFP_ADD, DFP_SUB, DFP_MULTIPLE, DFP_DIVIDE): Use macros for
2627         call to dxx_binary_op and decFloat function.
2628         (DFP_EQ, DFP_NE, DFP_LT, DFP_GT, DFP_LE, DFP_GE): Use macros for
2629         calls to dxx_binary_op and decFloat function.
2630         * config/dfp-bit.h: Include decFloat header files.
2631         (decFloat, DFP_BINARY_OP, DFP_COMPARE_OP, DEC_FLOAT_ADD,
2632         DEC_FLOAT_SUBTRACT, DEC_FLOAT_MULTIPLY, DEC_FLOAT_DIVIDE,
2633         DEC_FLOAT_COMPARE, DEC_FLOAT_IS_ZERO, DEC_FLOAT_IS_NAN,
2634         DEC_FLOAT_IS_SIGNED: Define for each of 3 operand widths.
2635
2636 2007-09-10  Harsha Jagasia <harsha.jagasia@amd.com>
2637             Jan Sjodin <jan.sjodin@amd.com>
2638
2639         * tree-vect-analyze.c (vect_analyze_operations): Change
2640         comparison of loop iterations with threshold to less than
2641         or equal to instead of less than. Reduce
2642         min_scalar_loop_bound by one.
2643         * tree-vect-transform.c (vect_estimate_min_profitable_iters): 
2644         Change prologue and epilogue iterations estimate to vf/2,
2645         when unknown at compile-time. Change versioning guard
2646         cost to taken_branch_cost. If peeling for alignment is
2647         unknown at compile-time, change peel guard costs to one
2648         taken branch and one not-taken branch per peeled loop.
2649         If peeling for alignment is known but number of scalar loop
2650         iterations is unknown at compile-time, change peel guard
2651         costs to one taken branch per peeled loop. Change the cost
2652         model equation to consider vector iterations as the loop
2653         iterations less the prologue and epilogue iterations.
2654         Change outside vector cost check to less than or equal to
2655         zero instead of equal to zero.
2656         (vect_do_peeling_for_loop_bound): Reduce
2657         min_scalar_loop_bound by one.
2658         * tree-vectorizer.h: Add TARG_COND_TAKEN_BRANCH_COST and
2659         TARG_COND_NOT_TAKEN_BRANCH_COST.        
2660         * config/i386/i386.h (processor_costs): Add
2661         scalar_stmt_cost, scalar_load_cost, scalar_store_cost,
2662         vec_stmt_cost, vec_to_scalar_cost, scalar_to_vec_cost,
2663         vec_align_load_cost, vect_unalign_load_cost,
2664         vec_store_cost, cond_taken_branch_cost,
2665         cond_not_taken_branch_cost.
2666         Define macros for x86 costs.
2667         * config/i386/i386.c:
2668         (size_cost): Set scalar_stmt_cost, scalar_load_cost,
2669         scalar_store_cost, vec_stmt_cost, vec_to_scalar_cost,
2670         scalar_to_vec_cost, vec_align_load_cost, 
2671         vect_unalign_load_cost, vec_store_cost,
2672         cond_taken_branch_cost, cond_not_taken_branch_cost to one. 
2673         (i386_cost, i486_cost, pentium_cost, pentiumpro_cost,
2674         geode_cost, k6_cost, athlon_cost, pentium4_cost, nocona_cost, 
2675         core2_cost, generic64_cost, generic32_cost): Set to default
2676         untuned costs.
2677         (k8_cost, amdfam10_cost): Costs for vectorization tuned.
2678         (x86_builtin_vectorization_cost): New.
2679
2680 2007-09-10  Janis Johnson  <janis187@us.ibm.com>
2681             Ben Elliston  <bje@au.ibm.com>
2682
2683         * dfp.c: Include decimal128Local.h; 
2684         (dfp_byte_swap): Remove.
2685         (encode_decimal32, decode_decimal32): Don't handle endianness.
2686         (encode_decimal64, decode_decimal64): Ditto.
2687         (encode_decimal128, decode_decimal128): Ditto.
2688         * config/dfp-bit.c (host_to_ieee32, ieee_to_host_32): Ditto.
2689         (__swap64): Remove.
2690         (host_to_ieee_64, ieee_to_host_64): Don't handle endianness.
2691         (__swap128): Remove
2692         (host_to_ieee_128, ieee_to_host_128): Don't handle endianness.
2693         * Makefile.in (DECNUM_H): Add decimal128Local.h.
2694
2695 2007-09-10  David Daney  <ddaney@avtrex.com>
2696
2697         * config/mips/mips.md (UNSPEC_MEMORY_BARRIER): New entry in
2698         define_constants.
2699         (memory_barrier): Rewrote as an insn that clobbers memory.
2700
2701 2007-09-10  Richard Sandiford  <richard@codesourcery.com>
2702
2703         * config/mips/mips.c (mips_global_pointer): Check
2704         call_really_used_regs instead of call_used_regs.
2705         (mips_save_reg_p): Likewise.  Save all call-saved registers
2706         if current_function_saves_all_registers.  Fix indentation.
2707         No longer treat $18 as a special case.
2708         (compute_frame_size): Guard FPR loop with TARGET_HARD_FLOAT.
2709
2710 2007-09-10  Richard Sandiford  <richard@codesourcery.com>
2711
2712         * config/mips/mips.h (MIPS_ARCH_FLOAT_SPEC): New macro.
2713         * config/mips/mips.c (mips_cpu_info_table): Mention it in the
2714         the introductory comment.
2715         (MIPS_MARCH_CONTROLS_SOFT_FLOAT): Delete.
2716         (override_options): Don't test for it.
2717         * config/mips/sde.h (MIPS_MARCH_CONTROLS_SOFT_FLOAT): Delete.
2718         (DRIVER_SELF_SPECS): Add MIPS_ARCH_FLOAT_SPEC.
2719         * config/mips/vr.h: As for config/mips/sde.h.
2720
2721 2007-09-10  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
2722             Revital Eres  <eres@il.ibm.com>
2723
2724         * target.h (struct gcc_target.sched): New field: sms_res_mii.
2725         (struct ddg): Define.
2726         * target-def.h (TARGET_SCHED_SMS_RES_MII): Define.
2727         (TARGET_SCHED): Add TARGET_SCHED_SMS_RES_MII.
2728         * config/spu/spu.c: Include ddg.h.
2729         (TARGET_SCHED_SMS_RES_MII): Define.
2730         (spu_sms_res_mii): New function to calculate mii.
2731         * modulo-sched (res_MII): Use it.
2732         * doc/tm.texi: Document TARGET_SCHED_SMS_RES_MII.
2733
2734 2007-09-10  Andreas Krebbel  <krebbel1@de.ibm.com>
2735
2736         * config/s390/s390.c (s390_dump_pool): Create copy of constant
2737         pool entries since they might hold values that must not be shared.
2738
2739 2007-09-10  Uros Bizjak  <ubizjak@gmail.com>
2740
2741         PR target/33369
2742         * gcc/config/i386/sse.md (ashr<mode>3): Change op2 mode to SImode.
2743         Use 'N' operand constraint for op2.
2744         (lshr<mode>3): Ditto.
2745         (ashl<mode>3): Ditto.
2746         (vec_shl_<mode>): Use const_0_to_255_mul_8_operand predicate for op2.
2747         (vec_shr_<mode>): Ditto.
2748         * gcc/config/i386/i386.c (ix86_expand_builtin) [IX86_BUILTIN_PSLL?128,
2749         IX86_BUILTIN_PSRA*?128, IX86_BUILTIN_PSRL?128]: Convert op1 to SImode.
2750
2751 2007-09-10  Andreas Krebbel  <krebbel1@de.ibm.com>
2752
2753         * config/s390/s390.md ("fixuns_trunc<BFP:mode><GPR:mode>2"):
2754         Change mode macro in the last real_2expN parameter to uppercase.
2755
2756 2007-09-10  Michael Matz  <matz@suse.de>
2757
2758         * tree-pass.h (pass_cselim): Declare new pass.
2759         * passes.c (init_optimization_passes): Link in pass_cselim.
2760         * tree-ssa-phiopt.c (tree_ssa_phiopt_worker): Renamed from
2761         tree_ssa_phiopt; add do_store_elim parameter, handle it by calling
2762         cond_store_replacement.
2763         (condstoretemp): New static variable.
2764         (cond_store_replacement): New function.
2765         (tree_ssa_phiopt, tree_ssa_cs_elim): New wrappers around
2766         tree_ssa_phiopt_worker.
2767         (struct name_to_bb): New.
2768         (get_non_trapping, name_to_bb_hash, name_to_bb_eq, add_or_mark_expr,
2769         nt_init_block, nt_fini_block): New static functions.
2770         (seen_ssa_names, nontrap_set): New static variables.
2771         (gate_cselim, pass_cselim): Define new pass.
2772         * common.opt (ftree-cselim): New flag.
2773         * toplev.c (process_options): Set flag_tree_cselim if required.
2774
2775 2007-09-10  Hans-Peter Nilsson  <hp@axis.com>
2776
2777         * simplify-rtx.c (simplify_relational_operation_1): For recent
2778         canonicalization, don't recurse if op1 equals both PLUS arguments.
2779
2780 2007-09-09  David Daney  <ddaney@avtrex.com>
2781
2782         * optabs.c (expand_sync_operation):  Use plus insn if minus
2783         CONST_INT_P(val).
2784         (expand_sync_fetch_operation):  Ditto.
2785
2786 2007-09-09  H.J. Lu  <hongjiu.lu@intel.com>
2787
2788         * i386.md (*floatsisf2_mixed_vector): Use cvtdq2ps instead
2789         of cvtpq2ps.
2790         (*floatsisf2_sse_vector): Likewise.
2791
2792 2007-09-09  Krister Walfridsson  <cato@df.lth.se>
2793
2794         * config/netbsd.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define to 1.
2795
2796 2007-09-09  H.J. Lu  <hongjiu.lu@intel.com>
2797
2798         * config/i386/i386.h (ix86_tune_indices): Rename
2799         X86_USE_VECTOR_CONVERTS to X86_TUNE_USE_VECTOR_CONVERTS.
2800         (TARGET_USE_VECTOR_CONVERTS): Updated.
2801         * config/i386/i386.c: Likewise.
2802
2803 2007-09-09  Sandra Loosemore  <sandra@codesourcery.com>
2804             Nigel Stephens <nigel@mips.com>
2805
2806         * doc/invoke.texi (Overall Options):  Add .sx file extension
2807         as a synonym for .S.
2808         * cppspec.c (known_suffixes): Likewise.
2809         * gcc.c (default_compilers): Likewise.
2810
2811 2007-09-09  Rask Ingemann Lambertsen  <rask@sygehus.dk>
2812
2813         PR target/30315
2814         * config/i386/i386.h (CANONICALIZE_COMPARISON): Delete.
2815         * simplify-rtx.c (simplify_relational_operation_1): Add the
2816         canonicalization from i386.h.
2817         * doc/md.texi (Canonicalization of Instructions): Document it.
2818
2819 2007-09-09  Jan Hubicka  <jh@suse.cz>
2820             Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
2821
2822         * i386.h (ix86_tune_indices): Add X86_USE_VECTOR_CONVERTS.
2823         (TARGET_USE_VECTOR_CONVERTS): New.
2824         * i386.md: New post-reload splitters for converting SF to DF and DF to
2825         SF.
2826         (floatsi* expander): Special case vector conversions.
2827         (floatsisf2_mixed_vector, floatsisf2_sse_vector_nointernunit,
2828         floatsisf2_sse_vector_internunit, floatsisf2_sse_vector,
2829         floatsidf2_mixed_vector, floatsidf2_sse_vector): New.
2830         (floatsisf2_mixed, floatsisf2_sse, floatsidf2_mixed, floatsidf2_sse):
2831         Disable when doing vector converts.
2832         (floatsi<mode>2_i387): Disable when
2833         * sse.md (vec_dupv2df): Export.
2834         * i386.c (ix86_tune_features): Enable SSE conversions.
2835
2836 2007-09-09  Richard Guenther  <rguenther@suse.de>
2837
2838         * tree-ssa-operands.c (add_virtual_operand): Only mark
2839         stores as has_volatile_ops if alias information is not available.
2840
2841 2007-09-09  Revital Eres  <eres@il.ibm.com>
2842
2843         * doc/contrib.texi: Add myself.
2844
2845 2007-09-09  Ira Rosen  <irar@il.ibm.com>
2846
2847         * tree-vectorizer.h (stmt_vinfo_set_inside_of_loop_cost,
2848         stmt_vinfo_set_outside_of_loop_cost): New functions.
2849         * tree-vect-transform.c (vect_get_cost_fields): Remove.
2850         (vect_model_simple_cost): Call
2851         stmt_vinfo_set_inside/outside_of_loop_cost to set the relevant cost
2852         field instead of calling vect_get_cost_fields.
2853         (vect_model_store_cost, vect_model_load_cost): Likewise.
2854
2855 2007-09-09  Revital Eres  <eres@il.ibm.com>
2856
2857         * config/rs6000/rs6000.c (paired_init_builtins): Add const
2858         declaration to bdesc_paired_preds variable.
2859         (paired_expand_builtin): Likewise.
2860
2861 2007-09-09  Revital Eres  <eres@il.ibm.com>
2862
2863         * dbgcnt.def (sms_sched_loop): New counter.
2864         * modulo-sched.c: Use sms_sched_loop instead of
2865         MAX_SMS_LOOP_NUMBER to determine the maximum number of loops to
2866         perform swing modulo scheduling on.  Include dbgcnt.h.
2867         * Makefile.in: Add DBGCNT_H to modulo-sched.o.
2868         * params.def: Remove PARAM_MAX_SMS_LOOP_NUMBER.
2869
2870 2007-09-09  Uros Bizjak  <ubizjak@gmail.com>
2871
2872         * config/i386/i386.md (X87MODEF12, SSEMODEF): Remove mode iterators.
2873         Substitute all uses with ...
2874         (MODEF): New mode iterator.
2875
2876         (fix_trunc<mode>_fisttp_i387_1): Remove operand constraints
2877         from pre-regalloc define_insn_and_split splitter pattern.
2878         (*fix_trunc<mode>_i387_1): Ditto.
2879         (*fistdi2_1): Ditto.
2880         (*fist<mode>2_1): Ditto.
2881         (frndintxf2_floor): Ditto.
2882         (*fist<mode>2_floor_1): Ditto.
2883         (frndintxf2_ceil): Ditto.
2884         (*fist<mode>2_ceil_1): Ditto.
2885         (frndintxf2_trunc): Ditto.
2886         (frndintxf2_mask_pm): Ditto.
2887
2888         (prologue): Use (const_int 0) as never generated filler insn.
2889         (epilogue): Ditto.
2890         (sibcall_epilogue): Ditto.
2891         (eh_return_si): Ditto.
2892         (eh_return_di): Ditto.
2893
2894         (add<mode>3): Rename from adddf3 and addsf3.  Macroize expander
2895         using MODEF mode iterator.
2896         (sub<mode>3): Rename from subdf3 and subsf3.  Macroize expander
2897         using MODEF mode iterator.
2898         (mul<mode>3): Rename from muldf3 and mulsf3.  Macroize expander
2899         using MODEF mode iterator.
2900         (nearbyint<mode>2): Rename from nearbyintdf2 and nearbyintsf2.
2901         Macroize expander using MODEF mode iterator.
2902
2903         (zero_extendsidi2): Remove operand constraints from expander.
2904         (smuldi3_highpart): Ditto.
2905         (indirect_jump): Ditto.
2906         (tablejump): Ditto.
2907         (rsqrtsf2): Ditto.
2908         * config/i386/sse.md (storentv4sf): Ditto.
2909         (storentv2df): Ditto.
2910         (storentv2di): Ditto.
2911         (storentsi): Ditto.
2912         (sse2_cvtpd2ps): Ditto.
2913         (vec_interleave_highv16qi): Ditto.
2914         (vec_interleave_lowv16qi): Ditto.
2915         (vec_interleave_highv8hi): Ditto.
2916         (vec_interleave_lowv8hi): Ditto.
2917         (vec_interleave_highv4si): Ditto.
2918         (vec_interleave_lowv4si): Ditto.
2919         (vec_interleave_highv2di): Ditto.
2920         (vec_interleave_lowv2di): Ditto.
2921         (sse2_maskmovdqu): Ditto.
2922         * config/i386/mmx.md (mmx_maskmovq): Ditto.
2923
2924 2007-09-09  Ira Rosen  <irar@il.ibm.com>
2925
2926         * tree-vectorizer.h (enum vect_def_type): Start enumeration from 1.
2927         (struct _slp_tree, struct _slp_instance): Define new data structures
2928         along macros for their access.
2929         (struct _loop_vec_info): Define new fields: strided_stores,
2930         slp_instances, and slp_unrolling_factor along macros for their access.
2931         (enum slp_vect_type): New.
2932         (struct _stmt_vec_info): Define new field, slp_type, and macros for
2933         its access.
2934         (STMT_VINFO_STRIDED_ACCESS): New macro.
2935         (vect_free_slp_tree): Declare.
2936         (vectorizable_load): Add an argument of type slp_tree.
2937         (vectorizable_store, vectorizable_operation, vectorizable_conversion,
2938         vectorizable_assignment): Likewise.
2939         (vect_model_simple_cost, vect_model_store_cost, vect_model_load_cost):
2940         Declare (make extern).
2941         * tree-vectorizer.c (new_stmt_vec_info): Initialize the new field.
2942         (new_loop_vec_info): Likewise.
2943         (destroy_loop_vec_info): Free memory allocated for SLP structures.
2944         * tree-vect-analyze.c: Include recog.h.
2945         (vect_update_slp_costs_according_to_vf): New.
2946         (vect_analyze_operations): Add argument for calls to vectorizable_ ()
2947         functions. For not pure SLP stmts with strided access check that the
2948         group size is power of 2. Update the vectorization factor according to
2949         SLP. Call vect_update_slp_costs_according_to_vf.
2950         (vect_analyze_group_access): New.
2951         (vect_analyze_data_ref_access): Call vect_analyze_group_access.
2952         (vect_free_slp_tree): New functions.
2953         (vect_get_and_check_slp_defs, vect_build_slp_tree, vect_print_slp_tree,
2954         vect_mark_slp_stmts, vect_analyze_slp_instance, vect_analyze_slp,
2955         vect_make_slp_decision, vect_detect_hybrid_slp_stmts,
2956         vect_detect_hybrid_slp): Likewise.
2957         (vect_analyze_loop): Call vect_analyze_slp, vect_make_slp_decision
2958         and vect_detect_hybrid_slp.
2959         * tree-vect-transform.c (vect_estimate_min_profitable_iters): Take
2960         SLP costs into account.
2961         (vect_get_cost_fields): New function.
2962         (vect_model_simple_cost): Make extern, add SLP parameter and handle
2963         SLP.
2964         (vect_model_store_cost, vect_model_load_cost): Likewise.
2965         (vect_get_constant_vectors): New function.
2966         (vect_get_slp_vect_defs, vect_get_slp_defs,
2967         vect_get_vec_defs_for_stmt_copy, vect_get_vec_defs_for_stmt_copy,
2968         vect_get_vec_defs): Likewise.
2969         (vectorizable_reduction): Don't handle SLP for now.
2970         (vectorizable_call): Don't handle SLP for now. Add argument to
2971         vect_model_simple_cost.
2972         (vectorizable_conversion): Handle SLP (call vect_get_vec_defs to
2973         get SLPed and vectorized defs). Fix indentation and spacing.
2974         (vectorizable_assignment): Handle SLP.
2975         (vectorizable_induction): Don't handle SLP for now.
2976         (vectorizable_operation): Likewise.
2977         (vectorizable_type_demotion): Add argument to
2978         vect_model_simple_cost.
2979         (vectorizable_type_promotion): Likewise.
2980         (vectorizable_store, vectorizable_load): Handle SLP.
2981         (vectorizable_condition): Don't handle SLP for now.
2982         (vect_transform_stmt): Add a new argument for SLP. Check that there is
2983         no SLP transformation required for unsupported cases. Add SLP
2984         argument for supported cases.
2985         (vect_remove_stores): New function.
2986         (vect_schedule_slp_instance, vect_schedule_slp): Likewise.
2987         (vect_transform_loop): Schedule SLP instances.
2988         * Makefile.in: (tree-vect-analyze.o): Depend on recog.h.
2989
2990 2007-09-09  Andrew Haley  <aph@redhat.com>
2991
2992         * optabs.c (sign_expand_binop): Set libcall_gen = NULL in the fake
2993         signed optab.
2994
2995 2007-09-09  Hans-Peter Nilsson  <hp@axis.com>
2996
2997         Divide REG_LABEL notes into REG_LABEL_OPERAND and REG_LABEL_TARGET.
2998         * doc/rtl.texi (Insns): Specify when a label_ref makes a jump_insn.
2999         Similar for what label_refs can go in the JUMP_TARGET field.  Split
3000         REG_LABEL documentation into REG_LABEL_TARGET and REG_LABEL_OPERAND.
3001         * reload.c (find_reloads): Generate REG_LABEL_OPERAND, not
3002         REG_LABEL when replacing an operand with a LABEL_REF for a
3003         non-jump insn.
3004         (subst_reloads): When replacing a LABEL_REG with a register,
3005         instead of generating a REG_LABEL note, assert that there already
3006         is one or that the label is a known target for the insn.
3007         * rtlanal.c (computed_jump_p): Instead of looking for a REG_LABEL
3008         note, check the JUMP_LABEL field.  Remove "else" after return.
3009         * reorg.c (emit_delay_sequence): Replace case for REG_LABEL with
3010         cases for REG_LABEL_OPERAND and REG_LABEL_TARGET.
3011         (fill_slots_from_thread): Handle both REG_LABEL_OPERAND and
3012         REG_LABEL_TARGET notes, including the JUMP_TARGET field on JUMP_P
3013         insns.  Iterate over all notes; don't assume there's only one.
3014         * cse.c (recorded_label_ref): Adjust comment to refer to
3015         REG_LABEL_OPERAND.
3016         (cse_extended_basic_block): Do LABEL_REF check for all INSN_P
3017         insns, not just NONJUMP_INSN_P.
3018         (check_for_label_ref): For JUMP_P insns, check that the LABEL_REF
3019         isn't a jump target.
3020         * jump.c (rebuild_jump_labels): Adjust head comment.
3021         (init_label_info): Ditto.  Remove REG_LABEL_OPERAND notes only;
3022         don't reset REG_LABEL_TARGET notes, including the JUMP_LABEL field.
3023         (mark_all_labels): For JUMP_P insns without a target, check if the
3024         the target is noted on the previous nonjump insn.
3025         (mark_jump_label_1): New function, guts from mark_jump_label.
3026         <case IF_THEN_ELSE>: Handle first operand as a non-target when
3027         marking jump target labels.
3028         <case LABEL_REF>: Adjust for whether to generate a
3029         REG_LABEL_TARGET or a REG_LABEL_OPERAND note.
3030         For 'E' format rtl, iterate in descending element order.
3031         (delete_related_insns): Handle both REG_LABEL_TARGET and
3032         REG_LABEL_OPERAND notes.  For JUMP_P insns with labels with zero
3033         reference count, delete and fallthrough.  Move finding-next-
3034         non-deleted insn last in the function.  Look at all INSN_P insns
3035         for REG_LABEL_OPERAND notes.
3036         (redirect_jump_2): Assert that OLABEL equals the old JUMP_LABEL of
3037         JUMP.
3038         * print-rtl.c (print_rtx): For JUMP_P insns and a non-NULL
3039         JUMP_LABEL, output the INSN_UID of it.
3040         * gcse.c: Adjust comments as appropriate to say REG_LABEL_OPERAND
3041         and/or REG_LABEL_TARGET.
3042         (add_label_notes): Only add REG_LABEL_OPERAND notes.  Put in line
3043         with jump.c copy by only adding notes for labels actually
3044         referenced in the insn.
3045         * emit-rtl.c (try_split): Don't assume only NONJUMP_INSN_P need
3046         usage count increment; handle all INSN_P trial insns.
3047         (emit_copy_of_insn_after): Change to not copy REG_LABEL_OPERAND
3048         notes.
3049         * rtl.h (struct rtx_def) <volatil>: Adjust to mention
3050         REG_LABEL_TARGET and REG_LABEL_OPERAND.
3051         (LABEL_REF_NONLOCAL_P): Allow REG_LABEL_TARGET and
3052         REG_LABEL_OPERAND.
3053         * combine.c (distribute_notes): Adjust for REG_LABEL_TARGET on
3054         JUMP_P insns and REG_LABEL_OPERAND everywhere.
3055         * sched-rgn.c (is_cfg_nonregular): Check for REG_LABEL_OPERANDS
3056         on all INSN_P insns.
3057         * reg-notes.def (LABEL_TARGET, LABEL_OPERAND): Split from LABEL.
3058         * cfgrtl.c (delete_insn): Adjust to handle REG_LABEL_TARGET and
3059         REG_LABEL_OPERAND notes.
3060         * reload1.c (calculate_needs_all_insns): Adjust comments.
3061         (set_label_offsets): Adjust to look for REG_LABEL_OPERAND notes.
3062         * config/alpha/alpha.md (split for load of an address into a
3063         four-insn sequence on Unicos/Mk): Adjust to use
3064         REG_LABEL_OPERAND.
3065         * config/sh/sh.md (sh_reorg, final_prescan_insn): Ditto.
3066
3067 2007-09-09  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
3068
3069         Revert:
3070         2007-09-05  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
3071         * regrename.c (copyprop_hardreg_forward_1): New variable next. Use
3072         FOR_BB_INSNS_SAFE instead of for loop.
3073         * cse.c (cse_extended_basic_block): Likewise.
3074         * postreload.c (reload_cse_regs_1): New variable next. Make sure
3075         that the for loop does not invoke NEXT_INSN on a deleted insn.
3076         * function.c (instantiate_virtual_regs): Likewise.
3077         * lower-subreg.c (remove_retval_note): Likewise.
3078         (decompose_multiword_subregs): Use FOR_BB_INSNS_SAFE instead of
3079         FOR_BB_INSNS.
3080         * emit-rtl.c (remove_insn): Set NEXT_INSN and PREV_INSN to NULL on
3081         a deleted insn.
3082         * cfgrtl.c (delete_insn): Set JUMP_LABEL to NULL on a deleted
3083         insn, if it's a jump.
3084         (try_redirect_by_replacing_jump): New variable jump_p. Call
3085         tablejump_p before delete_insn_chain.
3086         * reload1.c (reload): New variable next. Make sure that the for
3087         loop does not invoke NEXT_INSN on a deleted insn.
3088         (fixup_eh_region_note): Make the loop terminate if i becomes NULL.
3089         (delete_output_reload): New variable prev. Make sure the the for
3090         loops do not invoke PREV_INSN on a deleted insn.
3091
3092 2007-09-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3093
3094         * pa/constraints.md: Remove 'X' from unused letters comment.
3095
3096 2007-09-08  Richard Guenther  <rguenther@suse.de>
3097
3098         * tree-tailcall.c (find_tail_calls): If we don't have aliases
3099         computed check stmt_ann->references_memory instead of counting
3100         virtual operands.
3101  
3102 2007-09-08  Segher Boessenkool  <segher@kernel.crashing.org>
3103
3104         * cse.c (fold_rtx): Use validate_unshare_change() instead of
3105         validate_change() in one more case.
3106
3107 2007-09-08  Zdenek Dvorak  <ook@ucw.cz>
3108
3109         PR tree-optimization/32283
3110         * tree-ssa-loop-ivopts.c (may_eliminate_iv): Use
3111         estimated_loop_iterations.
3112         (determine_use_iv_cost_condition): Decrease cost of expressions
3113         used in iv elimination.
3114
3115 2007-09-08  Richard Guenther  <rguenther@suse.de>
3116
3117         * tree-cfg.c (verify_gimple_expr): Avoid building new
3118         pointer types, use TYPE_POINTER_TO if available instead.
3119
3120 2007-09-08  Uros Bizjak  <ubizjak@gmail.com>
3121
3122         PR target/33329
3123         PR rtl-optimization/26449
3124         * config/i386/sse.md (mulv4si3): Do not expand sse2 sequence.
3125         (*sse2_mulv4si3): New define_insn_and_split pattern. Split insn in
3126         split1 pass.
3127         (mulv16qi3): Implement as define_insn_and_split pattern instead of
3128         define_expand.  Split insn in split1 pass.
3129         (mulv2di3): Ditto.
3130
3131 2007-09-08  Dorit Nuzman  <dorit@il.ibm.com>
3132
3133         PR tree-optimization/33301
3134         * tree-vect-analyze (analyze_operations): Look at the type of the rhs
3135         when relevant.
3136
3137 2007-09-07  Zdenek Dvorak  <ook@ucw.cz>
3138
3139         PR tree-optimization/32183
3140         * Makefile.in (tree-ssa-reassoc.o): Also depend on $(CFGLOOP_H).
3141
3142         * tree-ssa-reassoc.c: Include cfgloop.h.
3143         (is_reassociable_op): Add a loop argument and return true only
3144         for inside loop.
3145         (linearize_expr): Updated.
3146         (should_break_up_subtract): Likewise.
3147         (linearize_expr_tree): Likewise.
3148         (init_reassoc): Call loop_optimizer_init with
3149         AVOID_CFG_MODIFICATIONS.  Remove calculate_dominance_info call
3150         with CDI_DOMINATORS.
3151         (fini_reassoc): Call loop_optimizer_finalize.
3152
3153 2007-09-07  Sterling Augustine  <sterling@tensilica.com>
3154
3155         * config/xtensa/lib2funcs.S (__xtensa_sync_caches): Use an ISYNC even
3156         if there is no i-cache.
3157
3158 2007-09-07  Richard Guenther  <rguenther@suse.de>
3159
3160         Reapply
3161         2007-09-06  Richard Guenther  <rguenther@suse.de>
3162
3163         PR tree-optimization/32586
3164         * tree-ssa-sccvn.c (simplify_binary_expression): Avoid
3165         folding if nothing changed.
3166         (simplify_unary_expression): New function.  Do tree combining
3167         on conversion like codes.
3168         (try_to_simplify): Call it.
3169
3170 2007-09-07  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3171
3172         PR target/33286
3173         * gthr-posix.h (__gthread_active_p): Add implementation for hppa-hpux.
3174         (__gthread_active,__gthread_start, __gthread_active_init): New.
3175         * gthr-posix95.h: Likewise.
3176
3177 2007-09-07  Roman Zippel <zippel@linux-m68k.org>
3178
3179         * function.h (struct function): Rename calls_unwind_init
3180         to saves_all_registers.
3181         (current_function_saves_all_registers): Renamed from
3182         current_function_calls_unwind_init.
3183         * reload1.c (reload): Set current_function_saves_all_registers.
3184         * except.c (expand_builtin_unwind_init): Likewise.
3185         * config/m68k/m68k.c (m68k_save_reg): Use
3186         current_function_saves_all_registers to save pic register.
3187
3188 2007-09-07  Janis Johnson  <janis187@us.ibm.com>
3189
3190         config/m68k/m68k.c (floating_exact_log2): Update call to real_2expN.
3191         config/s390/s390.md (fixuns_trunc<BFP:mode><GPR:mode>2): Ditto.
3192
3193         Reapply reverted changes:
3194
3195         2007-09-06  Jan Hubicka  <jh@suse.cz>
3196  
3197         * config/i386.c (ix86_expand_lround, ix86_expand_round): Update call
3198         of real_2expN.
3199
3200         2007-09-06  Richard Sandiford  <richard@codesourcery.com>
3201
3202         * config/mips/mips.md (fixuns_truncdfsi2, fixuns_truncdfdi2)
3203         (fixuns_truncsfsi2, fixuns_truncsfdi2): Update calls to real_2expN.
3204
3205         2007-09-05  Janis Johnson  <janis187@us.ibm.com>
3206
3207         * optabs.c (expand_float): Convert unsigned integer as signed only
3208         if it provides sufficient accuracy; add mode argument to real_2expN.
3209         (expand_fix): Fix comment typos; extend binary float into mode
3210         wider than destination for converion to unsigned integer; add mode
3211         argument to real_2expN.
3212         * real.c (real_2expN): Add mode argument to special-case decimal
3213         float values.
3214         * real.h (real_2expN): Ditto.
3215         * fixed-value.c (check_real_for_fixed_mode): Add mode argument to
3216         real_2expN.
3217         (fixed_from_string): Ditto.
3218         (fixed_to_decimal): Ditto.
3219         (fixed_convert_from_real): Ditto.
3220         (real_convert_from_fixed): Ditto.
3221         * config/rs6000/rs6000.md (FP): Include DD and TD modes.
3222         * config/rs6000/dfp.md (extendddtd2, adddd3, addtd3, subdd3, subtd3,
3223         muldd3, multd3, divdd3, divtd3, cmpdd_internal1, cmptd_internal1,
3224         floatditd2, ftruncdd2, fixdddi2, ftrunctd2, fixddi2): New.
3225
3226 2007-09-07  Diego Novillo  <dnovillo@google.com>
3227
3228         * tree-flow.h (const_block_stmt_iterator): Remove.
3229         Update all users to use block_stmt_iterator.
3230         * tree-iterator.h (const_tree_stmt_iterator): Remove.
3231         Update all users to use tree_stmt_iterator.
3232
3233 2007-09-07  Sandra Loosemore  <sandra@codesourcery.com>
3234
3235         * config/mips/mips.c (mips_set_current_function): Temporarily
3236         make this a no-op to fix bootstrap errors, pending rewrite.
3237
3238 2007-09-07  Jan Hubicka  <jh@suse.cz>
3239
3240         * reorg.c (dbr_schedule): Move code removing placeholder USEs later
3241         in the pass.
3242
3243 2007-09-07  Dorit Nuzman  <dorit@il.ibm.com>
3244
3245         PR tree-optimization/33299
3246         * tree-vect-transform.c (vect_create_epilog_for_reduction): Update
3247         uses for all relevant loop-exit phis, not just the first.
3248
3249 2007-09-07  Richard Guenther  <rguenther@suse.de>
3250
3251         PR middle-end/33330
3252         * tree-ssa-operands.c (access_can_touch_variable): An access
3253         of the form (*p)[0] can touch a variable of same size.
3254
3255 2007-09-07  Jan Hubicka  <jh@suse.cz>
3256
3257         * passes.c (init_optimization_passes): Add simple dce and addressable
3258         passes.
3259         * tree-ssa.c (execute_update_addresses_taken): New function.
3260         (pass_update_address_taken): New.
3261         * tree-ssa-dse.c (execute_simple_dse): New function.
3262         (pass_simple_dse): New.
3263         * tree-pass.h (pass_simple_dse, pass_update_address_taken): Declare.
3264
3265 2007-09-07  Tobias Burnus  <burnus@net-b.de>
3266
3267         PR middle-end/33321
3268         * doc/invoke.texi: Fix -Wstrict-overflow= table.
3269
3270 2007-09-07  Richard Guenther  <rguenther@suse.de>
3271
3272         Revert
3273         2007-09-06  Richard Guenther  <rguenther@suse.de>
3274
3275         PR tree-optimization/32586
3276         * tree-ssa-sccvn.c (simplify_binary_expression): Avoid
3277         folding if nothing changed.
3278         (simplify_unary_expression): New function.  Do tree combining
3279         on conversion like codes.
3280         (try_to_simplify): Call it.
3281
3282 2007-09-07  Richard Guenther  <rguenther@suse.de>
3283             Uros Bizjak  <ubizjak@gmail.com>
3284
3285         PR tree-optimization/32821
3286         * tree_if_conv.c (combine_blocks): Use alloc_stmt_list instead of
3287         NULL in the call to set_bb_stmt_list.
3288
3289 2007-09-07  Richard Sandiford  <richard@codesourcery.com>
3290
3291         * config/mips/mips.c (build_mips16_call_stub): Emit all direct
3292         float calls here, rather than leaving some to the caller.
3293         Use call_internal_direct and call_value_internal_direct.
3294         * config/mips/mips.md (call_internal_direct): New pattern.
3295         (call_value_internal_direct): Likewise.
3296
3297 2007-09-07  Richard Sandiford  <richard@codesourcery.com>
3298
3299         * config/mips/mips.c (mips_base_move_loop_invariants): New variable.
3300         (mips_set_mips16_mode): Restore flag_move_loop_invariants, then set
3301         to 0 for MIPS16.
3302         (override_options): Set mips_base_move_loop_invariants.
3303
3304 2007-09-07  Richard Sandiford  <richard@codesourcery.com>
3305
3306         * config/mips/mips.opt (mcode-readable=): Move to keep list
3307         alphabetical.
3308
3309 2007-09-07  Richard Sandiford  <richard@codesourcery.com>
3310
3311         * doc/invoke.texi: Document the MIPS -mlocal-sdata, -mextern-sdata
3312         and -mgpopt options.  Adjust the -G documentation to match.
3313         * config/mips/mips.opt (mextern-data, mgpopt, mlocal-data): New.
3314         * config/mips/mips.c (mips_rtx_constant_in_small_data_p): New
3315         function, split out from mips_classify_symbol.  Return false for
3316         !TARGET_LOCAL_SDATA.
3317         (mips_classify_symbol): Call mips_rtx_constant_in_small_data_p.
3318         Only use GP-relative accesses for non-pool symbols if TARGET_GPOPT.
3319         (override_options): Check whether the -mgpopt setting is consistent
3320         with the other flags.
3321         (symbolic_expression_p): Delete.
3322         (mips_select_rtx_section): Use mips_rtx_constant_in_small_data_p
3323         and default_elf_select_rtx_section.
3324         (mips_in_small_data_p): Honor section attributes for MIPS16 too.
3325         Return false for local data unless TARGET_LOCAL_SDATA.  Likewise
3326         external data and TARGET_EXTERN_SDATA.
3327
3328 2007-09-07  Tobias Burnus  <burnus@net-b.de>
3329
3330         PR fortran/33303
3331         * doc/cpp.texi (Common Predefined Macros): Add __GFORTRAN__.
3332
3333 2007-09-05  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
3334
3335         * regrename.c (copyprop_hardreg_forward_1): New variable next. Use
3336         FOR_BB_INSNS_SAFE instead of for loop.
3337         * cse.c (cse_extended_basic_block): Likewise.
3338         * postreload.c (reload_cse_regs_1): New variable next. Make sure
3339         that the for loop does not invoke NEXT_INSN on a deleted insn.
3340         * function.c (instantiate_virtual_regs): Likewise.
3341         * lower-subreg.c (remove_retval_note): Likewise.
3342         (decompose_multiword_subregs): Use FOR_BB_INSNS_SAFE instead of
3343         FOR_BB_INSNS.
3344         * emit-rtl.c (remove_insn): Set NEXT_INSN and PREV_INSN to NULL on
3345         a deleted insn.
3346         * cfgrtl.c (delete_insn): Set JUMP_LABEL to NULL on a deleted
3347         insn, if it's a jump.
3348         (try_redirect_by_replacing_jump): New variable jump_p. Call
3349         tablejump_p before delete_insn_chain.
3350         * reload1.c (reload): New variable next. Make sure that the for
3351         loop does not invoke NEXT_INSN on a deleted insn.
3352         (fixup_eh_region_note): Make the loop terminate if i becomes NULL.
3353         (delete_output_reload): New variable prev. Make sure the the for
3354         loops do not invoke PREV_INSN on a deleted insn.
3355
3356 2007-09-06  Zdenek Dvorak  <ook@ucw.cz>
3357
3358         * cgraphbuild.c (rebuild_cgraph_edges): Export.
3359         * cgraph.h (rebuild_cgraph_edges): Declare.
3360         * tree-pass.h (pass_expand_omp_ssa): New.
3361         * omp-low.c (find_omp_clause): Export.
3362         (copy_var_decl): Split from omp_copy_decl_2.
3363         (build_omp_barrier): Return the call to emit instead of emitting
3364         it directly.
3365         (lower_rec_input_clauses, expand_omp_single): Gimplify the result of
3366         build_omp_barrier.
3367         (extract_omp_for_data, expand_parallel_call, expand_omp_parallel,
3368         expand_omp_for_generic, expand_omp_for_static_nochunk,
3369         expand_omp_for_static_chunk, expand_omp_for, expand_omp_sections):
3370         Adapted to work on SSA form.
3371         (execute_expand_omp): Do not invalidate dominance information.
3372         (gate_expand_omp): Do not run with -fopenmp-ssa flag.
3373         (gate_expand_omp_ssa, pass_expand_omp_ssa): New.
3374         * gimplify.c (gimplify_omp_for): Ensure that the control variable is
3375         a gimple_reg.
3376         (force_gimple_operand): Allow gimplifying code expressions without
3377         value.
3378         * tree-predcom.c (mark_virtual_ops_for_renaming): Handle phi nodes.
3379         * common.opt (fopenmp-ssa): New.
3380         * tree-flow.h (find_omp_clause, copy_var_decl): Declare.
3381         * Makefile.in (tree-cfg.o): Add TREE_INLINE_H dependency.
3382         * tree-cfg.c: Include tree-inline.h.
3383         (struct move_stmt_d): Replace vars_to_remove by vars_map field.
3384         (replace_by_duplicate_decl, replace_ssa_name,
3385         mark_virtual_ops_in_region): New functions.
3386         (move_stmt_r, move_block_to_fn, move_sese_region_to_fn): Adapted
3387         to work on SSA form.
3388         * passes.c (init_optimization_passes): Add pass_expand_omp_ssa pass.
3389         * tree-ssa-operands.c (get_expr_operands): Handle operands of OMP
3390         constructs.
3391
3392 2007-09-06  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
3393
3394         * tree-loop-linear.c: Include obstack.h.
3395         (linear_transform_loops): New obstack lambda_obstack.
3396         Initialize it, pass it to gcc_loopnest_to_lambda_loopnest,
3397         lambda_loopnest_transform, lambda_loopnest_to_gcc_loopnest calls
3398         and free afterwards.
3399         * lambda.h (struct obstack): New forward declaration.<