OSDN Git Service

2008-12-08 Andrew Haley <aph@redhat.com>
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2008-12-08  Andrew Haley  <aph@redhat.com>
2             Kamaraju Kusumanchi <raju.mailinglists@gmail.com>
3
4         * gimple.h (gimple_build_try): Fix declaration.
5
6         * builtins.c (fold_builtin_sqrt): Don't use a conditional
7         operator.
8         * fixed-value.c (do_fixed_add): Likewise.
9         * tree-ssa-loop-ivopts.c (iv_ca_cost): Likewise.
10
11 2008-12-08  Jakub Jelinek  <jakub@redhat.com>
12
13         PR middle-end/36802
14         * omp-low.c (use_pointer_for_field): Only call maybe_lookup_decl
15         on parallel and task contexts.
16
17 2008-12-07  Eric Botcazou  <ebotcazou@adacore.com>
18
19         * gimple.c (recalculate_side_effects) <tcc_constant>: New case.
20
21 2008-12-07  Richard Guenther  <rguenther@suse.de>
22
23         PR tree-optimization/38405
24         * tree-vrp.c (simplify_truth_ops_using_ranges): Make sure to
25         not sign-extend truth values.
26
27 2008-12-07  Eric Botcazou  <ebotcazou@adacore.com>
28
29         * tree-sra.c (scalarize_use): Create another temporary with the proper
30         type for signed types in the use_all && !is_output bitfield case.
31
32 2008-12-06  Steven Bosscher  <steven@gcc.gnu.org>
33
34         PR rtl-optimization/36365
35         * df-core.c (df_worklist_dataflow_overeager): Remove.
36         (df_worklist_dataflow): Don't call it, use double-queue only.
37         * params.def (PARAM_DF_DOUBLE_QUQUQ_THRESHOLD_FACTOR): Remove.
38
39 2008-12-06  Jakub Jelinek  <jakub@redhat.com>
40
41         PR middle-end/38428
42         * tree-ssa-operands.c (get_expr_operands) <case BIT_FIELD_REF>: Set
43         gimple_set_has_volatile_ops if the BIT_FIELD_REF is volatile.
44
45 2008-12-07  Ben Elliston  <bje@au.ibm.com>
46
47         * gthr-single.h (__gthread_once): Adjust prototype to match all
48         other gthreads models.
49
50 2008-12-06  Jakub Jelinek  <jakub@redhat.com>
51
52         * config/i386/i386.c (override_options): Use CPU_AMDFAM10
53         instead of PROCESSOR_AMDFAM10 for barcelona's schedule.
54
55         PR middle-end/38422
56         * fold-const.c (fold_unary) <CASE_CONVERT>: Don't convert MULT_EXPR
57         operands to mult_type if it isn't narrower than op0's type.
58
59 2008-12-06  Jan Hubicka  <jh@suse.cz>
60             Jakub Jelinek <jakub@redhat.com>
61
62         PR tree-optimization/38074
63         * cgraphbuild.c (compute_call_stmt_bb_frequency): Fix handling of 0
64         entry frequency.
65         * predict.c (combine_predictions_for_bb): Ignore predictor predicting
66         in both dirrection for first match heuristics.
67         (tree_bb_level_predictions): Disable noreturn heuristic when there
68         is no returning path.
69
70 2008-12-05  Bernd Schmidt  <bernd.schmidt@analog.com>
71
72         PR rtl-optimization/38272
73         * reload1.c (choose_reload_regs): Keep reload_spill_index correct
74         in all cases.
75
76 2008-12-05  Jakub Jelinek  <jakub@redhat.com>
77
78         PR c++/35336
79         * c-pretty-print.c (pp_c_postfix_expression): Handle BIT_FIELD_REF.
80         (pp_c_expression): Likewise.
81
82 2008-12-05  Michael Meissner  <meissner@linux.vnet.ibm.com>
83
84         PR c/38416
85         * c-parser.c (struct c_token): Make pragma_kind 8 bits.
86
87 2008-12-05  Jakub Jelinek  <jakub@redhat.com>
88
89         PR middle-end/37248
90         * fold-const.c (make_bit_field_ref): Change bitpos and bitsize
91         arguments to HOST_WIDE_INT.  If type has different signedness
92         than unsignedp or different precision from bitsize, create
93         the right type for BIT_FIELD_REF and cast to type.
94         (fold_truthop): Change first_bit and end_bit to HOST_WIDE_INT.
95
96         Revert:
97         2008-03-05  Richard Guenther  <rguenther@suse.de>
98         PR c++/35336
99         * fold-const.c (fold_truthop): Remove code generating
100         BIT_FIELD_REFs of structure bases.
101         (fold_binary): Likewise.
102         (make_bit_field_ref): Remove.
103         (optimize_bit_field_compare): Remove.
104         (all_ones_mask_p): Remove.
105
106 2008-12-05  Jakub Jelinek  <jakub@redhat.com>
107
108         * tree-sra.c (sra_explode_bitfield_assignment): Always
109         call unsigned_type_for, if the precision is higher than
110         needed, call build_nonstandard_integer_type.
111
112         PR debug/38367
113         * function.c (assign_parm_find_stack_rtl): If promoted_mode
114         is wider than DECL_MODE, adjust MEM_OFFSET (stack_parm) for
115         big endian.
116
117         PR middle-end/38338
118         * builtins.c (expand_builtin_apply_args): Put before parm_birth_insn
119         only if internal_arg_pointer is a non-virtual pseudo.
120
121 2008-12-05  Joseph Myers  <joseph@codesourcery.com>
122
123         * config/rs6000/rs6000.md (move_from_CR_gt_bit): Enable for
124         TARGET_HARD_FLOAT && !TARGET_FPRS, not TARGET_E500.
125         * config/rs6000/spe.md (e500_cr_ior_compare): Likewise.
126
127 2008-12-05  Jakub Jelinek  <jakub@redhat.com>
128
129         PR tree-optimization/37716
130         * gimplify.c (gimplify_expr): Allow COND_EXPR if
131         gimplify_ctxp->allow_rhs_cond_expr.
132
133 2008-12-05  Uros Bizjak  <ubizjak@gmail.com>
134
135         * config/alpha/alpha.c (alpha_fold_vector_minmax): Create
136         VIEW_CONVERT_EXPR to convert output to long_integer_type_node.
137
138         (alpha_emit_conditional_branch): Do not generate direct branch
139         for UNORDERED comparisons.
140
141 2008-12-05  Andreas Schwab  <schwab@suse.de>
142
143         * config/rs6000/linux-unwind.h (frob_update_context): Check for
144         NULL lr.
145
146 2008-12-05  Jakub Jelinek  <jakub@redhat.com>
147
148         PR c/38408
149         * fold-const.c (fold_checksum_tree): Change buf type to union
150         tree_node.
151
152 2008-12-05  Sebastian Pop  <sebastian.pop@amd.com>
153
154         PR bootstrap/38262
155         * Makefile.in (LIBS): Remove GMPLIBS, CLOOGLIBS and PPLLIBS.
156         (BACKENDLIBS): New.
157         (cc1-dummy, cc1): Add BACKENDLIBS, remove GMPLIBS.
158
159 2008-12-05  Ben Elliston  <bje@au.ibm.com>
160
161         * c-parser.c (c_parser_enum_specifier): Initialise ident_loc and
162         comma_loc.
163         (c_parser_initelt): Initialise des_loc and ellipsis_loc.
164
165 2008-12-04  Eric Botcazou  <ebotcazou@adacore.com>
166             Gary Funck  <gary@intrepid.com>
167
168         * cse.c (lookup_as_function): Delete mode frobbing code.
169         (equiv_constant): Re-implement it there for SUBREGs.
170
171 2008-12-04  Richard Guenther  <rguenther@suse.de>
172
173         PR middle-end/36509
174         * Makefile.in (tree-ssa-alias-warnings.o): Remove.
175         (tree-ssa-structalias.o): Remove errors.h dependency.
176         (tree-ssa-reassoc.o): Likewise.
177         * tree-ssa-reassoc.c: Do not include errors.h.
178         * tree-ssa-alias-warnings.c: Remove.
179         * tree-ssa-alias.c (compute_may_aliases): Remove call to
180         strict_aliasing_warning_backend.
181         * tree-ssa-structalias.c (emit_pointer_definition): New function.
182         (emit_alias_warning): Likewise.
183         (set_uids_in_ptset): Warn for clear cases of type-punning.
184         * tree-inline.c (remap_gimple_op_r): Preserve TREE_NO_WARNING
185         on INDIRECT_REFs.
186
187 2008-12-04  Eric Botcazou  <ebotcazou@adacore.com>
188
189         * cse.c (equiv_constant): Fix pasto.
190
191 2008-12-04  Nick Clifton  <nickc@redhat.com>
192
193         * config/stormy16/stormy16.md: Remove extraneous spaces and quotes.
194         * config/stormy16/stormy16.c: Remove extraneous spaces and fix up
195         formatting of quotes.
196
197 2008-12-04  Jakub Jelinek  <jakub@redhat.com>
198
199         PR middle-end/38371
200         * fold-const.c (fold_checksum_tree): Allow modification of
201         TYPE_NEXT_VARIANT.
202
203 2008-12-03  Jakub Jelinek  <jakub@redhat.com>
204
205         PR middle-end/38360
206         * tree-ssa-ccp.c (ccp_fold_builtin): Bail out if the builtin doesn't
207         have the right number of arguments.
208
209 2008-12-03  Richard Guenther  <rguenther@suse.de>
210
211         PR middle-end/36326
212         * gimplify.c (is_gimple_mem_or_call_rhs): Remove work-around for
213         non-BLKmode types.
214
215 2008-12-03  Tomas Bily  <tbily@suse.cz>
216
217         PR middle-end/38250
218         * tree-loop-distribution.c (build_size_arg): New function.
219         (generate_memset_zero): Checks if dr_analyze_innermost succeed.
220         Reorganized generating of stmts.
221         * testsuite/gcc.dg/tree-ssa/pr38250.c: New file.
222         * tree-data-ref.c (dr_analyze_innermost): Returns bool.
223         Indicate if analysis succeed.
224         * tree-data-ref.h (dr_analyze_innermost): Returns bool.
225         * tree-predcom.c (valid_initializer_p, find_looparound_phi):
226         Uses new definition of dr_analyze_innermost.
227
228 2008-12-03  Ben Elliston  <bje@au.ibm.com>
229
230         * tree-ssa-pre.c (do_regular_insertion): Initialise edoubleprime.
231
232 2008-12-03  Jakub Jelinek  <jakub@redhat.com>
233
234         PR tree-optimization/37716
235         * tree-sra.c (sra_build_assignment): For scalar bitfield SRC construct
236         all the needed operations as trees and gimplify_assign it to dst.
237
238         PR target/37610
239         * configure.ac (gcc_cv_readelf): Look for readelf.
240         (gcc_cv_as_cfi_advance_working): Check for working
241         cfi advances with code alignment factor > 1.
242         (HAVE_GAS_CFI_DIRECTIVE): Don't define if cfi advances
243         don't work properly.
244         * configure: Regenerated.
245
246 2008-12-03  Eric Botcazou  <ebotcazou@adacore.com>
247             Jakub Jelinek  <jakub@redhat.com>
248             Andrew Pinski  <andrew_pinski@playstation.sony.com>
249
250         PR rtl-optimization/38281
251         * combine.c (distribute_notes): When invoking SET_INSN_DELETED on i2,
252         set it to NULL_RTX afterwards.
253
254         * emit-rtl.c (set_insn_deleted): Fix formatting.
255
256 2008-12-02  Richard Sandiford  <rdsandiford@googlemail.com>
257
258         * config/mips/mips.c (mips_expand_builtin): Fix the mode of the
259         error return value.
260         * config/mips/mips.md (IMOVE32): New mode iterator.
261         (movsi): Generalize with IMOVE32.
262         (*movsi_internal): Likewise.
263         (*mov<mode>_mips16): Likewise.
264         (*lwxs): Likewise.
265
266 2008-12-02  Nathan Sidwell  <nathan@codesourcery.com>
267             Maxim Kuvyrkov  <maxim@codesourcery.com>
268
269         * config/m68k/lb1sf68.asm (PICCALL, PICJUMP): Use GOT instead of
270         PC-relative addressing when compiling for uclinux PIC.
271         (__cmpdf_internal, __cmpsf_internal): Hide.
272         (__cmpdf, __cmpsf): Use PIC call sequence.
273
274 2008-12-02  Andreas Tobler  <a.tobler@schweiz.org>
275             Jack Howarth <howarth@bromo.med.uc.edu>
276
277         * config/i386/t-darwin64: Add m32 multilib support.
278
279 2008-12-02  Jack Howarth  <howarth@bromo.med.uc.edu>
280
281         * testsuite/gcc.dg/darwin-comm.c: Expand to darwin10 and later.
282
283 2008-12-02  Jakub Jelinek  <jakub@redhat.com>
284
285         PR middle-end/38343
286         * builtins.c (fold_builtin_memory_op): Convert len to sizetype
287         before using it in POINTER_PLUS_EXPR.
288
289 2008-12-02  Richard Guenther  <rguenther@suse.de>
290
291         PR tree-optimization/38359
292         * fold-const.c (fold_binary): Fold -1 >> x to -1 only for
293         non-negative x.
294
295 2008-12-02  Martin Jambor  <mjambor@suse.cz>
296
297         PR middle-end/37861
298         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do not check
299         for INDIRECT_REFs.
300         (forward_propagate_addr_into_variable_array_index): Check that the
301         offset is not computed from a MULT_EXPR, use is_gimple_assign rather
302         than the gimple code directly.
303
304 2008-12-02  Ben Elliston  <bje@au.ibm.com>
305
306         * config/spu/float_disf.c (__floatdisf): Prototype.
307         * config/spu/float_unsdisf.c (__float_undisf): Likewise.
308         * config/spu/float_unssidf.c (__float_unssidf): Constify cast.
309         * config/spu/float_unsdidf.c (__float_unsdidf): Likewise.
310
311 2008-12-02  DJ Delorie  <dj@redhat.com>
312
313         * config/stormy16/stormy16.h (INCOMING_FRAME_SP_OFFSET): Negate.
314         (DWARF_CIE_DATA_ALIGNMENT): Define.
315
316         * config/stormy16/stormy16.c (xstormy16_compute_stack_layout):
317         Invert add/sub for INCOMING_FRAME_SP_OFFSET.
318         (xstormy16_expand_prologue): Likewise.
319         (xstormy16_expand_builtin_va_start): Likewise.
320         (xstormy16_gimplify_va_arg_expr): Likewise.
321
322 2008-12-02  Jakub Jelinek  <jakub@redhat.com>
323
324         PR middle-end/38343
325         * builtins.c (expand_builtin_mempcpy_args): Handle COMPOUND_EXPRs
326         potentially returned from folding memcpy.
327         (expand_builtin_stpcpy_args): Similarly for folding strcpy.
328         (fold_builtin_2): Handle BUILT_IN_STPCPY if result is ignored.
329
330 2008-12-02  Danny Smith  <dannysmith@users.sourceforge.net>
331
332         PR target/38054
333         * config/i386/winnt.c (i386_pe_encode_section_info): Condition stdcall
334         decoration of function RTL names here on Ada language.
335
336 2008-12-01  Vladimir Makarov  <vmakarov@redhat.com>
337
338         PR rtl-optimization/38280
339         * ira-build.c (loop_is_inside_p, regno_allocno_order_compare_func,
340         ira_rebuild_regno_allocno_list): New functions.
341         (regno_allocnos): New static variable.
342         (remove_unnecessary_allocnos): Allocate/deallocate regno_allocnos.
343         Call ira_rebuild_regno_allocno_list.
344
345 2008-12-01  David Daney  <ddaney@caviumnetworks.com>
346             Adam Nemet  <anemet@caviumnetworks.com>
347
348         * config/mips/linux64.h (DRIVER_SELF_SPECS): Add
349         LINUX_DRIVER_SELF_SPECS.
350
351 2008-12-01  Vladimir Makarov  <vmakarov@redhat.com>
352
353         PR rtl-optimization/37514
354         * reload1.c (reload_as_needed): Invalidate reg_last_reload
355         from previous insns.
356
357 2008-12-01  Jakub Jelinek  <jakub@redhat.com>
358
359         PR c++/38348
360         * c-omp.c (c_finish_omp_for): Only transform pointer
361         ++ or -- into MODIFY_EXPR if second argument is non-NULL.
362
363         PR rtl-optimization/38245
364         * tree-vrp.c (abs_extent_range): New function.
365         (extract_range_from_binary_expr): Compute range
366         for *_DIV_EXPR even if vr1 is VR_VARYING, VR_ANTI_RANGE
367         or includes zero or if vr1 is VR_RANGE and op0 has some
368         other range.
369
370 2008-12-01  Uros Bizjak  <ubizjak@gmail.com>
371
372         PR middle-end/37908
373         * config/alpha/alpha.c (alpha_split_atomic_op): Properly handle NAND
374         case by calculating ~(new_reg & val) instead of (~new_reg & val).
375         * config/alpha/sync.md (sync_nand<mode>): Change insn RTX
376         to (not:I48MODE (and:I48MODE (...))).
377         (sync_old_nand<mode>): Ditto.
378         (sync_new_nand<mode>): Ditto.
379
380 2008-12-01  Nick Clifton  <nickc@redhat.com>
381
382         * config/stormy16/stormy16.md (CARRY_REG): New constant.
383         Replace uses of the "y" register class with direct references to
384         the CARRY_REG register.
385         * config/stormy16/stormy16.c: Replace clobbers of a BImode scratch
386         register with clobbers of the carry register.
387         (xstormy16_secondary_reload_class): Do not return CARRY_REGS.
388         (xstormy16_split_cbranch): Remove redundant carry parameter.
389         (xstormy16_expand_arith): Likewise.
390         * config/stormy16/stormy16.h (enum reg_class): Remove CARRY_REGS.
391         (IRA_COVER_CLASSES, REG_CLASS_NAMES, REG_CLASS_CONTENTS,
392         REGNO_REG_CLASS, REG_CLASS_FROM_LETTER): Likewise.
393         (CARRY_REGNUM): Define.
394         * config/stormy16/stormy16-protos.h (xstormy16_split_cbranch):
395         Update prototype.
396         (xstormy16_expand_arith): Likewise.
397
398 2008-12-01  Chen Liqin  <liqin.chen@sunplusct.com>
399
400         * config/score/score.h (IRA_COVER_CLASSES): Define.
401
402 2008-11-30  Eric Botcazou  <ebotcazou@adacore.com>
403
404         PR target/38287
405         * config/sparc/sparc.md (divsi3 expander): Remove constraints.
406         (divsi3_sp32): Add new alternative with 'K' for operand #2.
407         (cmp_sdiv_cc_set): Factor common string.
408         (udivsi3_sp32): Add new alternative with 'K' for operand #2.
409         Add TARGET_V9 case.
410         (cmp_udiv_cc_set): Factor common string.
411
412 2008-11-30  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
413
414         PR middle-end/38283
415         * varasm.c (emutls_finish): Fix common registration.
416
417 2008-11-29  Jakub Jelinek  <jakub@redhat.com>
418
419         PR target/29987
420         * config/sparc/sol2.h (ASM_OUTPUT_ALIGNED_COMMON): Redefine.
421
422 2008-11-29  David Edelsohn  <edelsohn@gnu.org>
423
424         * config/rs6000/rs6000.c (rs6000_emit_sync): Remove support for
425         operand wrapped in NOT.  Emit NAND as (ior (not X) (not Y)).
426         (rs6000_split_atomic_op): Emit NAND as (ior (not X) (not Y)).
427         * config/rs6000/sync.md (sync_nand<mode>): Represent NAND in RTL.
428         Call rs6000_emit_sync with CODE=NOT and unmodified operands.
429         Ignore sub-word case for now.
430         (sync_nand<mode>_internal): Represent NAND in RTL.
431         (sync_old_nand<mode): Same.
432         (sync_old_name<mode>_internal): Same.
433         (sync_new_nand<mode>): Same.
434         (sync_new_nand<mode>_internal): Same.
435         (sync_boolcshort_internal): Expect NAND.
436
437 2008-11-28  Richard Guenther  <rguenther@suse.de>
438
439         PR tree-optimization/37955
440         PR tree-optimization/37742
441         * tree-vect-transform.c (vectorizable_store): Remove assert for
442         compatible aliases.
443         (vectorizable_load): Likewise.
444
445 2008-11-27  Richard Guenther  <rguenther@suse.de>
446
447         * tree-ssa-structalias.c (intra_create_variable_infos): Make
448         a constraint for the static chain parameter.
449
450 2008-11-27  Bernd Schmidt  <bernd.schmidt@analog.com>
451
452         * config/bfin/bfin.opt (micplb): New option.
453         * config/bfin/linux.h (SUBTARGET_DRIVER_SELF_SPECS): Set it.
454         * config/bfin/bfin-protos.h (WA_INDIRECT_CALLS,
455         ENABLE_WA_INDIRECT_CALLS): New macros.
456         * config/bfin/bfin.c (bfin_cpus): Add WA_INDIRECT_CALLS to
457         all 54x CPUs.
458         (indirect_call_p): New function.
459         (workaround_speculation): Handle anomaly 05-00-0426 when
460         ENABLE_WA_INDIRECT_CALLS is true.
461         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
462         __WORKAROUND_INDIRECT_CALLS if ENABLE_WA_INDIRECT_CALLS.
463         * doc/invoke.texi (Blackfin Options): Document -micplb.
464
465 2008-11-26  DJ Delorie  <dj@redhat.com>
466
467         * config/m32c/mov.md ("extendhipsi2"): New.
468
469         * config/m32c/bitops.md (bset_qi): Add memsym_operand predicate.
470
471         * config/m32c/bitops.md (andhi3_24, iorhi3_24): Don't prefer HL class.
472         * config/m32c/mov.md (zero_extendqihi2): Likewise.
473
474 2008-11-26  Adam Nemet  <anemet@caviumnetworks.com>
475
476         * config/mips/mips.md (clear_hazard): Rename to
477         clear_hazard_<mode>.  Use mode-specific addition.
478         (clear_cache): Rename gen_clear_hazard to gen_clear_hazard_si
479         or gen_clear_hazard_di depending on the size of Pmode.
480
481 2008-11-26  DJ Delorie  <dj@redhat.com>
482
483         * configure.ac: Test m32c-elf-gas for .loc.
484         * configure: Likewise.
485
486 2008-11-26  Janis Johnson  <janis187@us.ibm.com>
487
488         PR testsuite/28870
489         * doc/sourcebuild.texi (Test Directives): Add dg-timeout and
490         dg-timeout-factor.
491
492 2008-11-26  Uros Bizjak  <ubizjak@gmail.com>
493
494         * config/i386/sync.md (memory_barrier_nosse): Disable also for
495         TARGET_64BIT.  Remove special asm template for TARGET_64BIT case.
496         (memory_barrier): Do not generate memory_barrier_nosse instruction
497         for TARGET_64BIT.
498         * config/i386/sse.md (*sse2_mfence): Also enable for TARGET_64BIT.
499
500 2008-11-26  Fredrik Unger  <fred@tree.se>
501
502         * config/soft-fp/floatuntisf.c (__floatuntisf): Correct
503         function name from __floatundisf.
504         * config/soft-fp/fixdfti.c (__fixdfti): Correct argument type to
505         DFtype.
506
507 2008-11-25  Daniel Berlin  <dberlin@dberlin.org>
508             Richard Guenther  <rguenther@suse.de>
509
510         PR tree-optimization/37869
511         * tree-ssa-structalias.c (struct constraint_graph): Remove
512         pt_used and number_incoming members.
513         (build_pred_graph): Do not allocate them.
514         (condense_visit): Do not use them.
515         (label_visit): Likewise.
516         (free_var_substitution_info): Do not free them.
517
518 2008-11-25  Vladimir Makarov  <vmakarov@redhat.com>
519
520         * doc/invoke.texi (ira-max-loops-num): Change semantics.
521
522         * ira-int.h (struct ira_loop_tree_node): New member to_remove_p.
523
524         * ira-color.c (allocno_spill_priority): New function.
525         (remove_allocno_from_bucket_and_push, push_allocno_to_spill):
526         Print more info about the spilled allocno.
527         (push_allocnos_to_stack): Use allocno_spill_priority.  Add more
528         checks on bad spill.
529
530         * ira-build.c (loop_node_to_be_removed_p): Remove.
531         (loop_compare_func, mark_loops_for_removal): New functions.
532         (remove_uneccesary_loop_nodes_from_loop_t): Use member
533         to_remove_p.
534         (remove_unnecessary_allocnos): Call mark_loops_for_removal.
535
536         * ira.c (ira): Don't change flag_ira_algorithm.
537
538         * params.def (ira-max-loops-num): Change the value.
539
540 2008-11-25  Maxim Kuvyrkov  <maxim@codesourcery.com>
541
542         * config/m68k/m68k.md (extendsidi2, extendsidi2_mem): Merge, clean up.
543         Disable unsupported alternative for ColdFire,
544         add new alternative that ColdFire can handle.
545
546 2008-11-25  Eric Botcazou  <ebotcazou@adacore.com>
547
548         * regrename.c (merge_overlapping_regs): Add registers artificially
549         defined at the top of the basic block to the set of live ones just
550         before the first insn.
551
552 2008-11-25  H.J. Lu  <hongjiu.lu@intel.com>
553             Joey Ye  <joey.ye@intel.com>
554
555         PR middle-end/37843
556         * config/i386/i386.c (ix86_function_ok_for_sibcall): Return
557         false if we need to align the outgoing stack.
558         (ix86_update_stack_boundary): Check parm_stack_boundary.
559
560 2008-11-25  Richard Guenther  <rguenther@suse.de>
561
562         PR middle-end/38151
563         PR middle-end/38236
564         * tree-ssa-alias.c (struct alias_info): Remove written_vars.
565         Remove dereferenced_ptrs_store and dereferenced_ptrs_load
566         in favor of dereferenced_ptrs.
567         (init_alias_info): Adjust.
568         (delete_alias_info): Likewise.
569         (compute_flow_insensitive_aliasing): Properly
570         include all aliased variables.
571         (update_alias_info_1): Use dereferenced_ptrs.
572         (setup_pointers_and_addressables): Likewise.
573         (get_smt_for): Honor ref-all pointers and pointers with known alias
574         set properly.
575         * config/i386/i386.c (ix86_gimplify_va_arg): Use ref-all pointers.
576
577 2008-11-25  Uros Bizjak  <ubizjak@gmail.com>
578
579         PR target/38254
580         * config/i386/sync.md (memory_barrier_nosse): New insn pattern.
581         (memory_barrier): Generate memory_barrier_nosse insn for !TARGET_SSE2.
582
583 2008-11-24  Maxim Kuvyrkov  <maxim@codesourcery.com>
584
585         * config/m68k/m68k.md (cmpdi): Use (scratch) instead of pseudo.
586
587 2008-11-24  Richard Sandiford  <rdsandiford@googlemail.com>
588
589         * config/mips/mips.h (ASM_OUTPUT_DEBUG_LABEL): Define.
590
591 2008-11-24  Maxim Kuvyrkov  <maxim@codesourcery.com>
592
593         PR target/35018
594         * config/m68k/m68k.md (ok_for_coldfire, enabled): New attributes.
595         (addsi_lshrsi_31): Add ColdFire-friendly alternatives.
596
597 2008-11-24  Uros Bizjak  <ubizjak@gmail.com>
598
599         * config/i386/i386.md (UNSPECV_CMPXCHG): Rename from
600         UNSPECV_CMPXCHG_[12].
601         * config/i386/sync.md: Use UNSPECV_CMPXCHG instead of
602         UNSPECV_CMPXCHG_[12].
603
604         PR target/36793
605         * config/i386/sync.md (memory_barrier): New expander.
606
607 2008-11-24  Jakub Jelinek  <jakub@redhat.com>
608
609         PR middle-end/37135
610         * dse.c (find_shift_sequence): Optimize extraction from a constant.
611
612 2008-11-23  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
613
614         * pa.c (function_arg): Revert 2008-10-26 change.
615
616 2008-11-23  Helge Deller  <deller@gmx.de>
617
618         * pa/linux-atomic.c (EBUSY): Define if not _LP64.
619         (__kernel_cmpxchg): Return -EBUSY if the kernel LWS call
620         succeeded and lws_ret is not equal to oldval.
621
622 2008-11-23  Kaz Kojima  <kkojima@gcc.gnu.org>
623
624         * config/sh/sh.md (consttable_4): Call mark_symbol_refs_as_used.
625
626 2008-11-22  Andreas Schwab  <schwab@suse.de>
627
628         * varasm.c (default_file_start): Suppress ASM_APP_OFF also with
629         -dA and -dP.
630
631 2008-11-22  Adam Nemet  <anemet@caviumnetworks.com>
632
633         * config/mips/mips.md (rdhwr): Rename to rdhwr_synci_step_<mode>.
634         Use constant 1 as the operand.
635         * config/mips/mips.c (mips_expand_synci_loop): Make INC Pmode.
636         Rename gen_rdhwr to gen_rdhwr_synci_step_si or
637         gen_rdhwr_synci_step_di depending on the size of Pmode.
638
639 2008-11-22  Uros Bizjak  <ubizjak@gmail.com>
640
641         PR target/38222
642         * config/i386/i386.md (SWI248): New mode iterator.
643         (SWI32): Remove mode iterator.
644         (popcount<mode>2): Rename from popcounthi2, popcountsi2 and
645         popcounthi2 insn patterns. Macroize pattern using SWI248 mode
646         iterator.  Generate popcnt mnemonic without mode extensions
647         for Darwin x86 targets.
648         (*popcount<mode>2_cmp): Ditto.
649         (*popcountsi2_cmp_zext): Generate popcnt mnemonic without mode
650         extensions for Darwin x86 targets.
651
652 2008-11-22  Eric Botcazou  <ebotcazou@adacore.com>
653
654         * config/sparc/sparc.c (TARGET_ASM_OUTPUT_DWARF_DTPREL): Define
655         only if HAVE_AS_SPARC_UA_PCREL is defined.
656
657 2008-11-22  Richard Sandiford  <rdsandiford@googlemail.com>
658
659         * ira-costs.c (find_allocno_class_costs): Work out the maximum
660         allocno_costs value of the classees with the lowest total_costs
661         value.  Use this to set ALLOCNO_COVER_CLASS_COST here...
662         (setup_allocno_cover_class_and_costs): ...rather than here.
663         Use the ALLOCNO_COVER_CLASS_COST for all registers in the
664         preferred class.
665
666 2008-11-22  Jakub Jelinek  <jakub@redhat.com>
667
668         PR middle-end/37323
669         * builtins.c (expand_builtin_apply_args): Emit sequence before
670         parm_birth_insn instead of after entry_of_function's first insn.
671
672         PR middle-end/37316
673         * function.c (assign_parm_remove_parallels): Pass
674         data->passed_type as third argument to emit_group_store.
675
676         PR target/37170
677         * final.c (mark_symbol_refs_as_used): New function.
678         * output.h (mark_symbol_refs_as_used): New prototype.
679         * config/s390/s390.c (s390_mark_symbol_ref_as_used): Removed.
680         (s390_output_pool_entry): Use mark_symbol_refs_as_used.
681         * config/arm/arm.md (consttable_4): Likewise.
682
683         PR target/37880
684         * doc/invoke.texi: Adjust wording of -mcmodel=medium description.
685
686 2008-11-21  Jakub Jelinek  <jakub@redhat.com>
687
688         PR middle-end/38200
689         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Only
690         propagate x = &a into *x = b if conversion from b to a's type is
691         useless.
692
693 2008-11-21  Eric Botcazou  <ebotcazou@adacore.com>
694
695         * caller-save.c (insert_one_insn): Take into account REG_INC notes
696         for the liveness computation of the new insn.
697
698 2008-11-21  DJ Delorie  <dj@redhat.com>
699
700         * config/stormy16/stormy16.md (movqi_internal, movhi_internal):
701         Moves to/from below100 space (W) can only use r0-r7.
702
703 2008-11-21  Paolo Carlini  <paolo.carlini@oracle.com>
704
705         PR other/38214
706         * doc/invoke.texi (Optimization Options): Fix typo.
707
708 2008-11-21  H.J. Lu  <hongjiu.lu@intel.com>
709             Xuepeng Guo  <xuepeng.guo@intel.com>
710
711         * config.gcc (extra_headers): For x86 and x86-64, remove
712         gmmintrin.h, add immintrin.h and avxintrin.h.
713
714         * config/i386/gmmintrin.h: Renamed to ...
715         * config/i386/avxintrin.h: This.  Issue an error if
716         _IMMINTRIN_H_INCLUDED is undedined.
717
718         * config/i386/immintrin.h: New.
719
720 2008-11-21  Jakub Jelinek  <jakub@redhat.com>
721
722         PR target/38208
723         * reload1.c (eliminate_regs_in_insn): For trunc_int_for_mode use
724         mode of PLUS, not mode of the eliminated register.
725
726 2008-11-21  Uros Bizjak  <ubizjak@gmail.com>
727
728         * config/i386/mmx.md (mmx_nand<mode>3): Rename to mmx_andnot<mode>3.
729         * config/i386/sse.md (avx_nand<mode>3): Rename to avx_andnot<mode>3.
730         (<sse>_nand<mode>3): Rename to <sse>_andnot<mode>3.
731         (sse2_nand<mode>3): Rename to sse2_andnot<mode>3.
732         (*sse_nand<mode>3): Rename to *sse_andnot<mode>3.
733         (*avx_nand<mode>3): Rename to *avx_andnot<mode>3.
734         (*nand<mode>3): Rename to *andnot<mode>3.
735         (*nandtf3): rename to *andnottf3.
736         * config/i386/i386.c (bdesc_args) [IX86_BUILTIN_PANDN]:
737         Use CODE_FOR_mmx_andnotv2si3.
738         [IX86_BUILTIN_ANDNPS]: Use CODE_FOR_sse_andnotv4sf3.
739         [IX86_BUILTIN_ANDNPD]: Use CODE_FOR_sse2_andnotv2df3.
740         [IX86_BUILTIN_PANDN128]: Use CODE_FOR_sse2_andnotv2di3.
741         [IX86_BUILTIN_ANDNPS256]: Use CODE_FOR_avx_andnotv8sf3.
742         [IX86_BUILTIN_ANDNPD256]: Use CODE_FOR_avx_andnotv4df3.
743
744 2008-11-21  Uros Bizjak  <ubizjak@gmail.com>
745
746         PR middle-end/37908
747         * config/ia64/ia64.c (ia64_expand_atomic_op): Properly handle NAND
748         case by calculating ~(new_reg & val) instead of (~new_reg & val).
749         * config/ia64/sync.md (sync_nand<mode>): Change insn RTX
750         to (not:IMODE (and:IMODE (...))).
751         (sync_old_nand<mode>): Ditto.
752         (sync_new_nand<mode>): Ditto.
753
754 2008-11-20  Joseph Myers  <joseph@codesourcery.com>
755
756         * config/arm/thumb2.md (thumb2_casesi_internal,
757         thumb2_casesi_internal_pic): Use earlyclobber for scratch operand 4.
758
759 2008-11-20  Andreas Krebbel  <krebbel1@de.ibm.com>
760
761         * gcc/config/s390/s390.c (s390_expand_atomic): Adjust QI/HI atomic
762         nand to the changed 4.4 semantic.
763
764 2008-11-20  Jakub Jelinek  <jakub@redhat.com>
765
766         PR middle-end/29215
767         * builtins.c (SLOW_UNALIGNED_ACCESS): Define if not defined.
768         (fold_builtin_memory_op): Handle even the case where just one
769         of src and dest is an address of a var decl component, using
770         TYPE_REF_CAN_ALIAS_ALL pointers.  Remove is_gimple_min_invariant
771         and readonly_data_expr src check.
772         * tree-ssa-sccvn.c (DFS): Use clear_and_done_ssa_iter to shut
773         up warnings.
774
775         PR rtl-optimization/36998
776         * dwarf2out.c (stack_adjust_offset): Add cur_args_size and cur_offset
777         arguments.  Handle sp = reg and (set (foo) (mem (pre_inc (reg sp)))).
778         (compute_barrier_args_size_1, dwarf2out_frame_debug_expr): Adjust
779         stack_adjust_offset callers.
780         (dwarf2out_stack_adjust): Likewise.  Handle insns in annulled
781         branches properly.
782         (compute_barrier_args_size): Handle insns in annulled branches
783         properly.
784
785 2008-11-20  Uros Bizjak  <ubizjak@gmail.com>
786
787         PR target/38151
788         * config/i386/i386.c (classify_argument) [integer mode size <= 64bit]:
789         Handle cases when integer argument crosses argument register boundary.
790
791 2008-11-20  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
792
793         PR bootstrap/33100
794         * config.gcc (i[34567]86-*-solaris2*): Don't include
795         i386/t-crtstuff here.
796         Move extra_parts, i386/t-sol2 in tmake_file to libgcc/config.host.
797         * config/i386/t-sol2: Move to libgcc/config/i386.
798
799 2008-11-20  Samuel Thibault  <samuel.thibault@ens-lyon.org>
800
801         PR driver/21706
802         * tlink.c: Include "libiberty.h".
803         (initial_cwd): Change type into char *.
804         (tlink_init): Call getpwd instead of getcwd.
805
806 2008-11-19  Zdenek Dvorak  <ook@ucw.cz>
807
808         PR rtl-optimization/32283
809         * tree-ssa-loop-niter.c (scev_probably_wraps_p): Use type of the base
810         of the induction variable to decide whether it may wrap.
811         * tree-ssa-loop-ivopts.c (rewrite_use_compare): Emit the
812         initialization of the bound before the loop.
813         * simplify-rtx.c (simplify_binary_operation_1): Add two
814         simplifications regarding AND.
815         (simplify_plus_minus): Only fail if no simplification is possible.
816         * loop-iv.c (simple_rhs_p): Consider reg + reg and reg << cst simple.
817
818 2008-11-20  Jakub Jelinek  <jakub@redhat.com>
819
820         PR c++/36631
821         * gimplify.c (gimplify_call_expr): Defer most of the cannot inline
822         checking until GIMPLE lowering.
823         * gimple-low.c (check_call_args): New function.
824         (lower_stmt) <case GIMPLE_CALL>: Call it.
825
826 2008-11-19  Adam Nemet  <anemet@caviumnetworks.com>
827
828         * config/mips/mips.c (mips_gimplify_va_arg_expr): Use -rsize
829         with the same type as the first operand of the AND expression.
830
831 2008-11-19  Vladimir Makarov  <vmakarov@redhat.com>
832
833         PR bootstrap/37859
834         * ira-int.h (struct ira_loop_tree_node): New member
835         entered_from_non_parent_p.
836
837         * ira-color.c (print_loop_title): Print loop bbs.
838
839         * ira-emit.c (entered_from_non_parent_p,
840         setup_entered_from_non_parent_p): New functions.
841         (not_modified_p): Rename to store_can_be_removed_p.  Check there
842         is no side entries.
843         (generate_edge_moves): Use store_can_be_removed_p instead of
844         not_modified_p.
845         (ira_emit): Call setup_entered_from_non_parent_p.
846
847         * ira-build.c (copy_info_to_removed_store_destinations):
848         Accumulate CALL_FREQ, CALL_CROSSED_NUM, and
849         ALLOCNO_EXCESS_PRESSURE_POINTS_NUM.
850         (ira_flattening): Don't CHECK MEM_OPTIMIZED_DEST[_P], always
851         update all accumulated attributes.
852
853 2008-11-19  Vladimir Makarov  <vmakarov@redhat.com>
854
855         PR bootstrap/37790
856         * ira-int.h (ira_copy_allocno_live_range_list,
857         ira_merge_allocno_live_ranges, ira_allocno_live_ranges_intersect_p,
858         ira_finish_allocno_live_range_list): New prototypes.
859         (ira_allocno_live_ranges_intersect_p,
860         ira_pseudo_live_ranges_intersect_p): Remove.
861
862         * ira-conflicts.c (ira_allocno_live_ranges_intersect_p,
863         ira_pseudo_live_ranges_intersect_p): Rename to
864         allocnos_have_intersected_live_ranges_p and
865         pseudos_have_intersected_live_ranges_p.  Move them from here to ...
866
867         * ira-color.c: ... here
868         (coalesced_allocno_conflict_p): Use
869         allocnos_have_intersected_live_ranges_p.
870         (coalesced_allocnos_living_at_program_points,
871         coalesced_allocnos_live_at_points_p,
872         set_coalesced_allocnos_live_points): Remove.
873         (slot_coalesced_allocnos_live_ranges,
874         slot_coalesced_allocno_live_ranges_intersect_p,
875         setup_slot_coalesced_allocno_live_ranges): New.
876         (coalesce_spill_slots): Use ranges of coalesced allocnos.
877         (ira_sort_regnos_for_alter_reg): Use
878         allocnos_have_intersected_live_ranges_p.
879         (ira_reuse_stack_slot): Use
880         pseudos_have_intersected_live_ranges_p.
881
882         * global.c (pseudo_for_reload_consideration_p): Check
883         flag_ira_share_spill_slots too.
884
885         * ira-build.c (copy_allocno_live_range_list): Rename to
886         ira_copy_allocno_live_range_list.  Make it external.
887         (merge_ranges): Rename to ira_merge_allocno_live_ranges.  Make it
888         external.
889         (ira_allocno_live_ranges_intersect_p): New.
890         (ira_finish_allocno_live_range_list): New.
891         (finish_allocno): Use it.
892         (remove_unnecessary_allocnos): Use ira_merge_allocno_live_ranges.
893         (copy_info_to_removed_store_destinations): Ditto.  Use
894         ira_copy_allocno_live_range_list.
895         (ira_flattening): Use ira_merge_allocno_live_ranges.
896
897         * ira.c (too_high_register_pressure_p): New function.
898         (ira): Switch off sharing spill slots if the pressure is too high.
899
900 2008-11-19  Richard Guenther  <rguenther@suse.de>
901
902         * tree.c (build2_stat): Allow non-POINTER_PLUS_EXPRs with
903         non-sizetype offsets if their precision matches that of the pointer.
904         * expr.c (expand_expr_real_1): Always sign-extend the offset
905         operand of a POINTER_PLUS_EXPR.
906
907 2008-11-19  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
908
909         * config.gcc: Unobsolete mips-sgi-irix[56]*.
910         (mips-sgi-irix[56]*): No need to use fixproto.
911
912 2008-11-19  Maxim Kuvyrkov  <maxim@codesourcery.com>
913             Paul Brook  <paul@codesourcery.com>
914
915         * config/m68k/lb1sf68.asm: Add GNU-stack annotation to avoid
916         executable stack.
917
918 2008-11-19  Maxim Kuvyrkov  <maxim@codesourcery.com>
919
920         * config/m68k/m68k.c (sched_attr_op_type): Handle all CONSTs.
921
922 2008-11-19  Razya Ladelsky  <razya@il.ibm.com>
923
924         PR target/38156
925         * tree-parloops.c (loop_parallel_p): NULL vect_dump.
926         (separate_decls_in_region): Create shared struct even when there
927         are only reductions.
928
929 2008-11-19  Hariharan Sandanagobalane <hariharan@picochip.com>
930
931         * config/picochip/picochip.c (headers): Remove an unnecessary
932         header file.
933
934 2008-11-19  Andrew Stubbs  <ams@codesourcery.com>
935
936         PR target/36133
937         * config/m68k/m68k.h (CC_OVERFLOW_UNUSABLE, CC_NO_CARRY): New defines.
938         * config/m68k/m68k.c (notice_update_cc): Set cc_status properly for
939         shift instructions.
940         * config/m68k/m68k.md: Adjust all conditional branches that use the
941         carry and overflow flags so they understand CC_OVERFLOW_UNUSABLE.
942
943 2008-11-18  Uros Bizjak  <ubizjak@gmail.com>
944
945         PR target/37362
946         * config/mips/mips.md (move_doubleword_fpr<mode>): Check that "high"
947         is a register or zero operand in the correct mode before generating
948         mtch1 insn or a register operand in the correct mode before generating
949         mfch1 insn.
950         (mtch1<mode>): Correct operand 1 predicate to reg_or_0_operand.
951
952 2008-11-18  Adam Nemet  <anemet@caviumnetworks.com>
953
954         * config.gcc (mips*-sde-elf*): Handle mipsisa64r2*.
955         (mipsisa64r2-*-elf*, mipsisa64r2el-*-elf*): Add new cases to
956         mipsisa*-*-elf*.  Handle mipsisa64r2*.
957         * config/mips/sde.h (LINK_SPEC): Handle -mips64r2.
958         * config/mips/t-isa3264 (MULTILIB_OPTIONS, MULTILIB_DIRNAMES): Add
959         mips64r2.
960         (MULTILIB_EXCLUSIONS): Add mips64r2/mfp64.
961         * config/mips/t-sde (MULTILIB_OPTIONS, MULTILIB_DIRNAMES): Add
962         mips64r2.
963         (MULTILIB_EXCLUSIONS): Add mips64r2/mfp64.  Add mips64r2/mips16.
964         Fix mips16 if mips64 or mips64r2 are multilib defaults.
965         * config/mips/t-sdemtk (MULTILIB_OPTIONS, MULTILIB_DIRNAMES): Add
966         mips64r2.
967
968 2008-11-18  Jakub Jelinek  <jakub@redhat.com>
969
970         PR target/38130
971         * config/i386/i386.md (allocate_stack_worker_32,
972         allocate_stack_worker_64): Don't use match_dup between input and
973         output operand.
974         (allocate_stack): Adjust gen_stack_worker_{32,64} caller.
975         * config/i386/i386.c (ix86_expand_prologue): Likewise.
976
977 2008-11-18  Kai Tietz  <kai.tietz@onevision.com>
978
979         * config/i386/t-cygming (SHLIB_LINK): Make sure that $(SHLIB_MAP).def
980         is forced when trying to do a symbol link for it.
981
982 2008-11-17  Adam Nemet  <anemet@caviumnetworks.com>
983
984         * expmed.c (extract_bit_field_1): Also use a temporary and
985         convert_extracted_bit_field when the conversion from ext_mode to
986         the target mode requires explicit truncation.
987
988 2008-11-17  Richard Sandiford  <rdsandiford@googlemail.com>
989
990         * config/mips/mips.h (REG_ALLOC_ORDER): Put accumulators first.
991         Tweak formatting.
992         * config/mips/mips.c (mips_ira_cover_classes): Don't use accumulator
993         registers when not optimizing.
994
995 2008-11-17  Richard Sandiford  <rdsandiford@googlemail.com>
996
997         * config/mips/mips.md (*mul_acc_si): Remove middle alternative
998         and its associated define_split.  Expose the all-d alternative
999         to the register allocator, but mark it with "?".  Mark the first
1000         alternative with "*?*?".
1001         (*mul_sub_si): Likewise.
1002         (*mul_acc_si_r3900): New pattern.
1003
1004 2008-11-17  Jakub Jelinek  <jakub@redhat.com>
1005
1006         PR middle-end/38140
1007         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): If
1008         propagating x = &a into *x = b, add a cast if not useless
1009         type conversion or don't optimize if another stmt would be
1010         needed.
1011
1012 2008-11-17  Uros Bizjak  <ubizjak@gmail.com>
1013
1014         PR middle-end/37908
1015         * optabs.c (expand_sync_operation): Properly handle NAND case
1016         by calculating ~(t1 & val) instead of (~t1 & val).
1017         * builtins.c (expand_builtin_sync_operation): Warn for changed
1018         semantics in NAND builtins.
1019         * c.opt (Wsync-nand): New warning option.  Describe -Wsync-nand.
1020
1021         * doc/invoke.texi (Warning options): Add Wsync-nand.
1022         * doc/extend.texi (Atomic Builtins) [__sync_fetch_and_nand]: Correct
1023         __sync_fetch_and_nand builtin operation in the example.  Add a note
1024         about changed semantics in GCC 4.4.
1025         [__sync_nand_and_fetch]: Correct __sync_nand_and_fetch builtin
1026         operation in the example.  Add a note about changed semantics in
1027         GCC 4.4.
1028
1029 2008-11-16  Jan Hubicka  <jh@suse.cz>
1030
1031         * cgraph.c (cgraph_function_body_availability): Fix test of externally
1032         visible.
1033
1034 2008-11-16  Joshua Kinard  <kumba@gentoo.org>
1035
1036         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Map -march=r1[0246]000
1037         to -mips4.
1038
1039 2008-11-16  Richard Sandiford  <rdsandiford@googlemail.com>
1040
1041         PR target/38052
1042         * config/mips/mips.c (mips_cfun_call_saved_reg_p)
1043         (mips_cfun_might_clobber_call_saved_reg_p): New functions,
1044         split out from...
1045         (mips_save_reg_p): ...here.  Always consult TARGET_CALL_SAVED_GP
1046         rather than call_really_used_regs when handling $gp.
1047
1048 2008-11-16  Richard Sandiford  <rdsandiford@googlemail.com>
1049
1050         PR target/38052
1051         * config/mips/mips.c (machine_function): Update the comment
1052         above global_pointer.
1053         (mips_global_pointer): Use INVALID_REGNUM rather than 0 to indicate
1054         that a function doesn't need a global pointer.
1055         (mips_current_loadgp_style): Update accordingly.
1056         (mips_restore_gp): Likewise.
1057         (mips_output_cplocal): Likewise.
1058         (mips_expand_prologue): Likewise.
1059
1060 2008-11-16  Eric Botcazou  <ebotcazou@adacore.com>
1061
1062         * config/sparc/sparc.c (function_arg_vector_value): Remove 'base_mode'
1063         parameter.  Use DImode for computing the number of registers.
1064         (function_arg): Adjust for above change.
1065         (function_value): Likewise.
1066
1067 2008-11-15  Zdenek Dvorak  <ook@ucw.cz>
1068
1069         PR tree-optimization/37950
1070         * tree-flow-inline.h (memory_partition): Return NULL when aliases were
1071         not computed for the current function.
1072
1073 2008-11-15  Jakub Jelinek  <jakub@redhat.com>
1074
1075         PR target/38123
1076         * config/i386/i386.c (ix86_gimplify_va_arg): Don't share valist between
1077         gpr and other COMPONENT_REFs.
1078
1079 2008-11-15  Richard Guenther  <rguenther@suse.de>
1080
1081         PR tree-optimization/38051
1082         * tree-ssa-alias.c (update_alias_info_1): Manually find
1083         written variables.
1084
1085 2008-11-15  Joshua Kinard  <kumba@gentoo.org>
1086
1087         * doc/invoke.texi (-mfix-r10000): Document.
1088         * config/mips/mips.opt (mfix-r10000): New option.
1089         * config/mips/mips-protos.h (mips_output_sync_loop): Declare.
1090         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP): Use %?.
1091         (MIPS_COMPARE_AND_SWAP_12): Likewise.
1092         (MIPS_SYNC_OP): Likewise.
1093         (MIPS_SYNC_OP_12): Likewise.
1094         (MIPS_SYNC_OLD_OP_12): Likewise.
1095         (MIPS_SYNC_NEW_OP_12): Likewise.
1096         (MIPS_SYNC_OLD_OP): Likewise.
1097         (MIPS_SYNC_NAND): Likewise.
1098         (MIPS_SYNC_OLD_NAND): Likewise.
1099         (MIPS_SYNC_EXCHANGE): Likewise.
1100         (MIPS_SYNC_EXCHANGE_12): Likewise.
1101         (MIPS_SYNC_NEW_OP): Likewise, using %~ to fill branch-likely
1102         delay slots.
1103         (MIPS_SYNC_NEW_NAND): Likewise.
1104         * config/mips/mips.c (mips_print_operand_punctuation): Handle '~'.
1105         (mips_init_print_operand_punct): Treat '~' as a punctuation character.
1106         (mips_output_sync_loop): New function.
1107         (mips_override_options): Make -march=r10000 imply -mfix-r10000.
1108         Make -mfix-r10000 require branch-likely instructions.
1109         * config/mips/sync.md (sync_compare_and_swap<mode>): Use
1110         mips_output_sync_loop.
1111         (compare_and_swap_12): Likewise.
1112         (sync_add<mode>): Likewise.
1113         (sync_<optab>_12): Likewise.
1114         (sync_old_<optab>_12): Likewise.
1115         (sync_new_<optab>_12): Likewise.
1116         (sync_nand_12): Likewise.
1117         (sync_old_nand_12): Likewise.
1118         (sync_new_nand_12): Likewise.
1119         (sync_sub<mode>): Likewise.
1120         (sync_old_add<mode>): Likewise.
1121         (sync_old_sub<mode>): Likewise.
1122         (sync_new_add<mode>): Likewise.
1123         (sync_new_sub<mode>): Likewise.
1124         (sync_<optab><mode>): Likewise.
1125         (sync_old_<optab><mode>): Likewise.
1126         (sync_new_<optab><mode>): Likewise.
1127         (sync_nand<mode>): Likewise.
1128         (sync_old_nand<mode>): Likewise.
1129         (sync_new_nand<mode>): Likewise.
1130         (sync_lock_test_and_set<mode>): Likewise.
1131         (test_and_set_12): Likewise.
1132
1133 2008-11-15  Eric Botcazou  <ebotcazou@adacore.com>
1134
1135         * gcc.c (cc1_options): Fix comment.
1136
1137 2008-11-15  Jakub Jelinek  <jakub@redhat.com>
1138
1139         PR c++/37561
1140         * c-typeck.c (build_unary_op): Don't call get_unwidened.  Use
1141         argtype instead of result_type.
1142
1143 2008-11-14  Adam Nemet  <anemet@caviumnetworks.com>
1144
1145         * ira-int.h (struct ira_loop_tree_node): Improve comments for
1146         subloop_next/next and subloops/childen fields.
1147
1148 2008-11-14  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1149
1150         * config/spu/spu-elf.h (STANDARD_STARTFILE_PREFIX_2): Disable default.
1151         (STANDARD_INCLUDE_DIR): Redefine to "/include".
1152         (LOCAL_INCLUDE_DIR): Undefine.
1153         * config/spu/t-spu-elf (NATIVE_SYSTEM_HEADER_DIR): Define.
1154
1155 2008-11-14  Vladimir Makarov  <vmakarov@redhat.com>
1156
1157         PR rtl-optimization/37397
1158         * ira-int.h (struct ira_allocno): New member bad_spill_p.
1159         (ALLOCNO_BAD_SPILL_P): New macro.
1160
1161         * ira-color.c (push_allocnos_to_stack): Check ALLOCNO_BAD_SPILL_P.
1162
1163         * ira-build.c (ira_create_allocno): Initialize ALLOCNO_BAD_SPILL_P.
1164         (create_cap_allocno, propagate_allocno_info,
1165         remove_unnecessary_allocnos): Set up or update ALLOCNO_BAD_SPILL_P.
1166         (update_bad_spill_attribute): New function.
1167         (ira_build): Call it.
1168
1169         * ira-costs.c (record_reg_classes): Set up ALLOCNO_BAD_SPILL_P.
1170
1171 2008-11-14  Jakub Jelinek  <jakub@redhat.com>
1172
1173         PR tree-optimization/38104
1174         * gimplify.c (gimple_regimplify_operands): Add referenced vars
1175         before calling mark_symbols_for_renaming, not after it.
1176
1177 2008-11-14  Kaz Kojima  <kkojima@gcc.gnu.org>
1178
1179         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Revert last change.
1180         (OVERRIDE_OPTIONS): Likewise.
1181
1182 2008-11-14  Maxim Kuvyrkov  <maxim@codesourcery.com>
1183             Andrew Stubbs  <ams@codesourcery.com>
1184             Gunnar Von Boehn  <gunnar@genesi-usa.com>
1185
1186         PR target/36134
1187         * config/m68k/m68k.md (addsi3_5200): Add a new alternative preferring
1188         the shorter LEA insn over ADD.L where possible.
1189
1190 2008-11-14  Thomas Schwinge  <tschwinge@gnu.org>
1191
1192         * configure.ac (gcc_cv_libc_provides_ssp): Also consider GNU/Hurd
1193         systems, which are assumend to always provide SSP-support in glibc.
1194         Also consider GNU/kFreeBSD, GNU/kNetBSD systems in the `*-*-linux*'
1195         case.
1196         * configure: Regenerate.
1197
1198 2008-11-14  Jakub Jelinek  <jakub@redhat.com>
1199
1200         PR middle-end/36125
1201         * function.c (gimplify_parameters): For callee copies parameters,
1202         move TREE_ADDRESSABLE flag from the PARM_DECL to the local copy.
1203
1204 2008-11-13  Thomas Schwinge  <tschwinge@gnu.org>
1205
1206         PR target/28102
1207         * config.gcc (*-*-gnu*): Move Alpha parts into the `alpha*-*-gnu*',
1208         x86 parts into the `i[34567]86-*-linux*' and parts that are
1209         independent of the processor architecture into the `*-*-linux*' cases.
1210         (*-*-linux*): Consider `linux.opt' only for Linux-based configurations.
1211         * config/i386/gnu.h (GLIBC_DYNAMIC_LINKER): Redefine.
1212         (TARGET_OS_CPP_BUILTINS, LINK_SPEC): Don't redefine.
1213         [TARGET_LIBC_PROVIDES_SSP] (TARGET_THREAD_SSP_OFFSET): Undefine.
1214         * config/gnu.h (NO_IMPLICIT_EXTERN_C): Don't redefine.
1215         (HURD_TARGET_OS_CPP_BUILTINS): Don't define, but instead...
1216         (LINUX_TARGET_OS_CPP_BUILTINS): Redefine.
1217
1218 2008-11-13  Ruan Beihong  <ruanbeihong@gmail.com>
1219
1220         * config/mips/loongson.md (<u>div<mode>3, <u>mod<mode>3): New patterns.
1221         * config/mips/loongson2ef.md (ls2_imult): Handle imul3nc.
1222         (ls2_idiv): Likewise idiv3.
1223         (ls2_prefetch): New reservation.
1224         * config/mips/mips.h (ISA_HAS_PREFETCH): Add TARGET_LOONGSON_2EF.
1225         * config/mips/mips.md (type): Add imul3nc and idiv3.
1226         (length): Handle idiv3.
1227         (any_mod): New code_iterator.
1228         (u): Handle MOD and UMOD.
1229         (mul<mode>3): Generate mul<mode>3_mul3_ls2ef on Loongson targets.
1230         (prefetch): Handle TARGET_LOONGSON_2EF.
1231
1232 2008-11-13  Jakub Jelinek  <jakub@redhat.com>
1233
1234         PR c++/27017
1235         * dwarf2out.c (prune_unused_types_walk_local_classes): New function.
1236         (prune_unused_types_walk): Call it for non-perennial local classes.
1237         Set die_mark to 2 if recursing on children.  If die_mark is 1 on
1238         entry, just set it to 2 and recurse on children, don't walk attributes
1239         again.
1240
1241 2008-11-13  Martin Michlmayr  <tbm@cyrius.com>
1242
1243         * c-common.c (warn_about_parentheses): Add missing whitespace
1244         in warning.
1245
1246 2008-11-13  Paul Brook  <paul@codesourcery.com>
1247
1248         * doc/invoke.texi: Document --fix-cortex-m3.
1249         * config/arm/arm.c (arm_override_options): Set fix_cm3_ldrd if
1250         Cortex-M3 cpu is selected.
1251         (output_move_double): Avoid overlapping base register and first
1252         destination register when fix_cm3_ldrd.
1253         * config/arm/arm.opt: Add mfix-cortex-m3-ldrd.
1254
1255 2008-11-13  Jakub Jelinek  <jakub@redhat.com>
1256
1257         PR bootstrap/38100
1258         * gimple.h (gimple_range_check_failed): Remove prototype.
1259         * gimple.c (gimple_check_failed): Don't check GCC_VERSION
1260         in guarding #if.
1261         (gimple_range_check_failed): Removed.
1262
1263 2008-11-13  Andrew Haley  <aph@redhat.com>
1264
1265         PR bootstrap/38088
1266         * mcf.c (CAP_INFINITY): Use HOST_WIDEST_INT maximum, not GCC specific
1267         __LONG_LONG_MAX__.
1268
1269 2008-11-12  Jakub Jelinek  <jakub@redhat.com>
1270
1271         PR c++/36478
1272         Revert:
1273         2007-05-07  Mike Stump  <mrs@apple.com>
1274         * doc/invoke.texi (Warning Options): Document that -Wempty-body
1275         also checks for and while statements in C++.
1276
1277 2008-11-12  Dodji Seketeli  <dodji@redhat.com>
1278
1279         PR debug/27574
1280         * cgraph.h: New abstract_and_needed member to struct cgraph_node.
1281         * cgraphunit.c (cgraph_analyze_functions): Flag abstract functions
1282         - which clones are reachable - as "abstract and needed".
1283         * cgraph.c (cgraph_release_function_body):  If a node is
1284         "abstract and needed", do not release its DECL_INITIAL() content
1285         that will be needed to emit debug info.
1286
1287 2008-11-12  Steve Ellcey  <sje@cup.hp.com>
1288
1289         PR target/27880
1290         * configure.ac (GCC_CHECK_UNWIND_GETIPINFO): Use this macro
1291         to set HAVE_GETIPINFO.
1292         * aclocal.m4: Include ../config/unwind_ipinfo.m4.
1293         * configure: Regenerate.
1294         * config.in: Regenerate.
1295
1296 2008-11-12  Jack Howarth  <howarth@bromo.med.uc.edu>
1297
1298         PR bootstrap/38010
1299         * gcc/config.gcc: Use darwin9.h on darwin10 as well.
1300
1301 2008-11-12  Jakub Jelinek  <jakub@redhat.com>
1302
1303         Revert:
1304         2008-10-21  Jakub Jelinek  <jakub@redhat.com>
1305         * gimplify.c (gimplify_expr): Drop TREE_OVERFLOW from INTEGER_CSTs.
1306
1307 2008-11-12  Jason Merrill  <jason@redhat.com>
1308
1309         PR c++/38007
1310         * c-common.c (c_common_signed_or_unsigned_type): Remove C++
1311         special casing.
1312
1313 2008-11-12  Anatoly Sokolov  <aesok@post.ru>
1314
1315         * config/avr/avr.c (avr_mcu_t): Add atmega16hvb, atmega32hvb,
1316         atmega4hvd, atmega8hvd, atmega64c1, atmega64m1, atmega16u4 and
1317         atmega32u6 devices.
1318         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
1319         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
1320
1321 2008-11-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1322
1323         * gcc/config/s390/s390.h (INITIAL_FRAME_ADDRESS_RTX): Remove
1324         packed-stack special handling.
1325         (FRAME_ADDR_RTX): Add definition.
1326
1327 2008-11-12  Jakub Jelinek  <jakub@redhat.com>
1328
1329         PR target/35366
1330         * fold-const.c (native_encode_string): New function.
1331         (native_encode_expr): Use it for STRING_CST.
1332
1333 2008-11-12  DJ Delorie  <dj@redhat.com>
1334
1335         * config/m32c/cond.md (cond_to_int peephole2): Don't eliminate the
1336         insns if the intermediate value will be used later.
1337
1338 2008-11-12  Andreas Schwab  <schwab@suse.de>
1339
1340         * config/m68k/m68k.c (print_operand): Mask off extra extension
1341         bits when writing out the representation of real values.
1342
1343 2008-11-12  Ira Rosen  <irar@il.ibm.com>
1344
1345         PR tree-optimization/38079
1346         * tree-vect-analyze.c (vect_analyze_data_refs): Replace dump_file
1347         with vect_dump.
1348
1349 2008-11-12  Jakub Jelinek  <jakub@redhat.com>
1350
1351         PR c++/35334
1352         * c-pretty-print.c (pp_c_complex_expr): New function.
1353         (pp_c_postfix_expression) <case COMPLEX_EXPR>: Call it.
1354
1355         PR target/35366
1356         * expr.c (expand_expr_addr_expr_1): If EXP needs bigger alignment
1357         than INNER and INNER is a constant, forcibly align INNER as much
1358         as needed.
1359
1360 2008-11-11  Richard Sandiford  <rdsandiford@googlemail.com>
1361
1362         * cse.c (fold_rtx): Remove redundant gen_rtx_CONST.
1363
1364 2008-11-11  Richard Sandiford  <rdsandiford@googlemail.com>
1365
1366         PR rtl-optimization/37363
1367         * simplify-rtx.c (simplify_plus_minus): Don't create
1368         (const (minus ...)) expresisons.
1369
1370 2008-11-11  Eric Botcazou  <ebotcazou@adacore.com>
1371
1372         * ira-lives.c (process_bb_node_lives): Restore EH_RETURN_DATA_REGNO
1373         handling.
1374
1375 2008-11-10  Catherine Moore  <clm@codesourcery.com>
1376
1377         * config.gcc (mips64vrel-*-elf*): Include the tm_file
1378         prior to vr.h.
1379         * config/mips/linux.h (LINUX_DRIVER_SELF_SPECS): New.
1380         (BASE_DRIVER_SELF_SPECS): Remove.
1381         (DRIVER_SELF_SPECS): New definition.
1382         * config/mips/elfoabi.h: (DRIVER_SELF_SPECS): Include
1383         BASE_DRIVER_SELF_SPECS.
1384         * config/mips/sde.h: Likewise.
1385         * config/mips/iris6.h: Likewise.
1386         * config/mips/vr.h: Likewise.
1387         * config/mips/mips.h (BASE_DRIVER_SELF_SPECS): New.
1388
1389 2008-11-10  Vladimir Makarov  <vmakarov@redhat.com>
1390
1391         PR rtl-optimizations/37948
1392         * ira-int.h (struct ira_allocno_copy): New member constraint_p.
1393         (ira_create_copy, ira_add_allocno_copy): New parameter.
1394
1395         * ira-conflicts.c (process_regs_for_copy): New parameter.  Pass it
1396         to ira_add_allocno_copy.
1397         (process_reg_shuffles, add_insn_allocno_copies): Pass a new
1398         parameter to process_regs_for_copy.
1399         (propagate_copies): Pass a new parameter to ira_add_allocno_copy.
1400         Fix typo in passing second allocno to ira_add_allocno_copy.
1401
1402         * ira-color.c (update_conflict_hard_regno_costs): Use head of
1403         coalesced allocnos list.
1404         (assign_hard_reg): Ditto.  Check that assigned allocnos are not in
1405         the graph.
1406         (add_ira_allocno_to_bucket): Rename to add_allocno_to_bucket.
1407         (add_ira_allocno_to_ordered_bucket): Rename to
1408         add_allocno_to_ordered_bucket.
1409         (push_ira_allocno_to_stack): Rename to push_allocno_to_stack.  Use
1410         head of coalesced allocnos list.
1411         (push_allocnos_to_stack): Remove calculation of ALLOCNO_TEMP.
1412         Check that it is aready calculated.
1413         (push_ira_allocno_to_spill): Rename to push_ira_allocno_to_spill.
1414         (setup_allocno_left_conflicts_num): Use head of coalesced allocnos
1415         list.
1416         (coalesce_allocnos): Do extended coalescing too.
1417
1418         * ira-emit.c (add_range_and_copies_from_move_list): Pass a new
1419         parameter to ira_add_allocno_copy.
1420
1421         * ira-build.c (ira_create_copy, ira_add_allocno_copy): Add a new
1422         parameter.
1423         (print_copy): Print copy origination too.
1424
1425         * ira-costs.c (scan_one_insn): Use alloc_pref for load from
1426         equivalent memory.
1427
1428 2008-11-10  Kaz Kojima  <kkojima@gcc.gnu.org>
1429
1430         PR rtl-optimization/37514
1431         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Set
1432         flag_ira_share_spill_slots to 2 if it's already non-zero.
1433         (OVERRIDE_OPTIONS): Clear flag_ira_share_spill_slots if
1434         flag_ira_share_spill_slots is 2.
1435
1436 2008-11-10  Kevin Buettner  <kevinb@redhat.com>
1437
1438         * config/m32c/prologue.md (prologue_enter_16): Set FB to SP - 2.
1439         (prologue_enter_32): Set FB to SP - 4.
1440
1441 2008-11-10  DJ Delorie  <dj@redhat.com>
1442
1443         * config/m32c/m32c.c (m32c_const_ok_for_constraint_p): Add ImB
1444         constraint for single-bit-clear in lower byte of HI constant, vs
1445         Imb which just ignores the upper byte.
1446         * config/m32c/predicates.md (m32c_1mask8_operand): Use it.
1447         * config/m32c/bitops.md (andhi3_16, andhi3_24): Use it.
1448         (iorhi3_16): Check for single bit set, not single bit clear.
1449
1450 2008-11-10  Janis Johnson  <janis187@us.ibm.com>
1451
1452         * doc/sourcebuild.texi (Torture Tests): Fix formatting for bullets.
1453
1454         * doc/sourcebuild.texi (Torture Tests): Fix formatting in example.
1455
1456 2008-11-10  Eric Botcazou  <ebotcazou@adacore.com>
1457
1458         * calls.c (store_unaligned_arguments_into_pseudos): Deal only with
1459         values living in memory and use more precise alignment information.
1460
1461 2008-11-10  Jakub Jelinek  <jakub@redhat.com>
1462
1463         PR middle-end/35314
1464         * tree-mudflap.c (mf_build_check_statement_for): Split then_block
1465         after __mf_check call if the call must end a bb.
1466
1467 2008-11-10  Ralph Loader  <suckfish@ihug.co.nz>
1468
1469         PR middle-end/37807
1470         PR middle-end/37809
1471         * combine.c (force_to_mode): Do not process vector types.
1472
1473         * rtlanal.c (nonzero_bits1): Do not process vector types.
1474         (num_sign_bit_copies1): Likewise.
1475
1476 2008-11-09  Thomas Schwinge  <tschwinge@gnu.org>
1477
1478         * config/i386/gnu.h: Add copyright and licensing header.
1479         * config/gnu.h: Likewise.
1480
1481 2008-11-07  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1482
1483         * fwprop.c (fwprop_done): Call df_remove_problem.
1484
1485 2008-11-07  Sebastian Pop  <sebastian.pop@amd.com>
1486
1487         PR middle-end/37379
1488         * tree-scalar-evolution.c (instantiate_scev_1): Return
1489         chrec_dont_know for VL_EXP_CLASS_P.
1490
1491 2008-11-06  Uros Bizjak  <ubizjak@gmail.com>
1492
1493         * reg-stack.c (reg_to_stack): Add missing braces in memset
1494         size calculation.
1495
1496 2008-11-06  Andrew Stubbs  <ams@codesourcery.com>
1497
1498         * config/arm/bpabi.h (PROFILE_HOOK): New undef.
1499         (NO_PROFILE_COUNTERS): New define.
1500
1501 2008-11-06  David Edelsohn  <edelsohn@gnu.org>
1502
1503         PR target/26397
1504         * config/rs6000/aix.h (LIBSTDCXX_STATIC): Define.
1505
1506 2008-11-06  Kazu Hirata  <kazu@codesourcery.com>
1507
1508         PR target/35574
1509         * config/sparc/constraints.md (D): New.
1510         * config/sparc/predicates.md (const_double_or_vector_operand): New.
1511         * config/sparc/sparc.c (sparc_extra_constraint_check): Handle the
1512         'D' constraint.
1513         * config/sparc/sparc.md (*movdf_insn_sp32_v9, *movdf_insn_sp64):
1514         Use the 'D' constraint in addition to 'F' in some alternatives.
1515         (DF splitter): Generalize for V64mode.
1516         * doc/md.texi (SPARC): Document the 'D' constraint.
1517
1518 2008-11-06  Uros Bizjak  <ubizjak@gmail.com>
1519
1520         * reg-stack.c (reg_to_stack): Generate +QNaN using real_nan.
1521
1522 2008-11-06  Ben Elliston  <bje@au.ibm.com>
1523
1524         * gcc.c: Remove ancient comment about a bug in Sun cc.
1525
1526 2008-11-05  Janis Johnson  <janis187@us.ibm.com>
1527
1528         * doc/sourcebuild.texi (Torture Tests): Add ADDITIONAL_TORTURE_OPTIONS.
1529
1530 2008-11-06  Ben Elliston  <bje@au.ibm.com>
1531
1532         * config/rs6000/rs6000.c (rs6000_override_options): Comment fix.
1533
1534 2008-11-06  Ben Elliston  <bje@au.ibm.com>
1535
1536         * config/rs6000/rs6000.opt (mwarn-cell-microcode): Improve option
1537         description.
1538
1539 2008-11-05  Hans-Peter Nilsson  <hp@axis.com>
1540
1541         PR target/38016
1542         * config/cris/cris.c (cris_order_for_addsi3): Test for !REG_P, not
1543         just MEM_P.
1544
1545 2008-11-05  Martin Jambor  <mjambor@suse.cz>
1546
1547         PR middle-end/37861
1548         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Don't turn
1549         pointer arithmetics into array_ref if the array is accessed
1550         through an indirect_ref.
1551
1552 2008-11-05  Richard Guenther  <rguenther@suse.de>
1553
1554         PR middle-end/37742
1555         * tree-ssa.c (useless_type_conversion_p_1): Check different restrict
1556         qualified pointer conversion before stripping qualifiers.
1557         * gimplify.c (create_tmp_from_val): Use correctly qualified type.
1558         * tree-flow.h (may_propagate_address_into_dereference): Declare.
1559         * tree-ssa-ccp.c (may_propagate_address_into_dereference): New
1560         function.
1561         (ccp_fold): Use it.
1562         * tree-ssa-forwprop.c (rhs_to_tree): Remove useless conversions,
1563         properly canonicalize binary ops.
1564         (forward_propagate_addr_expr_1): Use
1565         may_propagate_address_into_dereference.
1566
1567 2008-11-05  Uros Bizjak  <ubizjak@gmail.com>
1568
1569         PR middle-end/37286
1570         * reg-stack.c (subst_stack_regs_pat) [MINUS, DIV, MULT, PLUS]:
1571         Initialize uninitialized input registers with a NaN.
1572
1573 2008-11-05  Tobias Grosser  <grosser@fim.uni-passau.de>
1574
1575         PR middle-end/37833
1576
1577         * graphite.c (scan_tree_for_params): Add POINTER_PLUS_EXPR.
1578
1579 2008-11-05  Tobias Grosser  <grosser@fim.uni-passau.de>
1580
1581         PR middle-end/37943
1582
1583         * graphite.c (scopdet_basic_block_info): Fix loops with multiple
1584         exits and conditions.
1585         * testsuite/gcc.dg/graphite/pr37943.c: New.
1586
1587 2008-11-04  Jakub Jelinek  <jakub@redhat.com>
1588             Andrew Pinski  <andrew_pinski@playstation.sony.com>
1589
1590         PR c/35430
1591         * c-common.c (warn_for_sign_compare): For complex result_type
1592         use component's type.
1593
1594 2008-11-04  Jakub Jelinek  <jakuB@redhat.com>
1595
1596         * print-tree.c (print_node): Use code instead of TREE_CODE (node).
1597
1598         * print-tree.c (print_node): Don't print DECL_INITIAL
1599         for PARM_DECL.
1600
1601         PR c/37106
1602         * c-common.c (parse_optimize_options): Save and restore
1603         flag_strict_aliasing around decode_options call.
1604
1605 2008-11-04  Uros Bizjak  <ubizjak@gmail.com>
1606
1607         * config/i386/driver-i386.c (enum vendor_signatures): New enum.
1608         (host_detect_local_cpu): Use it instead of casted strings to
1609         compare vendor signatures.
1610
1611 2008-11-03  Mikael Pettersson  <mikpe@it.uu.se>
1612
1613         PR target/37989
1614         * config/i386/mingw32.h (REAL_LIBGCC_SPEC): Only add libgcc_s.a
1615         or libgcc_eh.a to spec if ENABLE_SHARED_LIBGCC.
1616
1617 2008-11-03  Catherine Moore  <clm@codesourcery.com>
1618
1619         * config/mips.c (mips_conditional_register_usage):  Handle the
1620         DSP control register.
1621         * doc/extend.texi: Document the DSP control register.
1622
1623 2008-11-03  Steve Ellcey <sje@cup.hp.com>
1624             Jakub Jelinek  <jakub@redhat.com>
1625
1626         * omp-low.c (expand_omp_for_generic): If iter_type has different
1627         precision than type and type is a pointer type, cast n1 and n2
1628         first to an integer type with the same precision as pointers
1629         and only afterwards to iter_type.
1630
1631 2008-11-03  Richard Sandiford  <rdsandiford@googlemail.com>
1632
1633         * config/arm/arm.md (UNSPEC_PIC_BASE): Update documentation.
1634         (UNSPEC_GOTSYM_OFF): New unspec.
1635         (pic_add_dot_plus_four): Simplify the UNSPEC_PIC_BASE operands.
1636         (pic_add_dot_plus_eight): Likewise.
1637         (tls_load_dot_plus_eight): Likewise.  Update peephole2.
1638         * config/arm/thumb2.md (pic_load_dot_plus_four): Simplify the
1639         UNSPEC_PIC_BASE operands.
1640         * config/arm/arm.c (arm_load_pic_register): Use UNSPEC_GOTSYM_OFF.
1641         (arm_output_addr_const_extra): Handle it.
1642
1643 2008-11-03  Eric Botcazou  <ebotcazou@adacore.com>
1644
1645         * config/i386/i386.c (classify_argument) <ARRAY_TYPE>: Promote partial
1646         integer class to full integer class if the offset is not word-aligned.
1647
1648 2008-11-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1649
1650         PR rtl-opt/37782
1651         * loop-doloop.c (doloop_modify): Add from_mode argument that says what
1652         mode count is in.
1653         (doloop_optimize): Update call to doloop_modify.
1654
1655 2008-11-03  Eric Botcazou  <ebotcazou@adacore.com>
1656
1657         * tree-sra.c (bitfield_overlaps_p): Fix oversight.
1658
1659 2008-11-03  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
1660
1661         PR other/37463
1662         * configure.ac (gcc_cv_ld_ro_rw_mix): Move before
1663         gcc_cv_as_cfi_directive.
1664         (gcc_cv_as_cfi_directive) [*-*-solaris*]: Check if linker supports
1665         merging read-only and read-write sections or assembler emits
1666         read-write .eh_frame sections.
1667         * configure: Regenerate.
1668
1669 2008-11-03  Nathan Froyd  <froydnj@codesourcery.com>
1670
1671         Revert:
1672         2008-10-31  Nathan Froyd  <froydnj@codesourcery.com>
1673
1674         * config/rs6000/rs6000.c (no_global_regs_above): Fix precedence
1675         problem.
1676         (rs6000_emit_prologue): Invert logic.
1677         * config/rs6000/rs6000.md (*save_gpregs_<mode>): Use explicit
1678         (reg:P 11) instead of match_operand.
1679         (*save_fpregs_<mode>): Likewise.
1680         (*restore_gpregs_<mode>): Likewise.
1681         (*return_and_restore_gpregs_<mode>): Likewise.
1682         (*return_and_restore_fpregs_<mode>): Likewise.
1683         * config/rs6000/spe.md (*save_gpregs_spe): Use explicit
1684         (reg:P 11) insted of match_operand.
1685         (*restore_gpregs_spe): Likewise.
1686         (*return_and_restore_gpregs_spe): Likewise.
1687
1688 2008-11-03  Harsha Jagasia  <harsha.jagasia@amd.com>
1689
1690         PR tree-optimization/37684
1691         * gcc.dg/graphite/pr37684.c: New.
1692         * graphite.c (exclude_component_ref): New.
1693         (is_simple_operand): Call exclude_component_ref.
1694
1695 2008-11-03  Sebastian Pop  <sebastian.pop@amd.com>
1696
1697         PR tree-optimization/36908
1698         * testsuite/gcc.dg/tree-ssa/pr36908.c: New.
1699         * tree-loop-distribution.c (number_of_rw_in_rdg): New.
1700         (number_of_rw_in_partition): New.
1701         (partition_contains_all_rw): New.
1702         (ldist_gen): Do not distribute when one of the partitions
1703         contains all the memory operations.
1704
1705 2008-11-03  Sebastian Pop  <sebastian.pop@amd.com>
1706
1707         * cfghooks.c (split_block): Set BB_IRREDUCIBLE_LOOP and
1708         EDGE_IRREDUCIBLE_LOOP.
1709
1710 2008-11-03  Bernd Schmidt  <bernd.schmidt@analog.com>
1711
1712         * config/bfin/bfin.c (bfin_optimize_loop): Properly handle case
1713         where we have one entry point in the loop which isn't the head.
1714
1715 2008-11-03  Richard Guenther  <rguenther@suse.de>
1716
1717         PR middle-end/37573
1718         * tree-data-ref.c (split_constant_offset_1): Fix tuplification.
1719
1720 2008-11-03  Jakub Jelinek  <jakub@redhat.com>
1721
1722         PR middle-end/37858
1723         * passes.c (execute_one_pass): Don't look at cfun->curr_properties
1724         for ipa and simple ipa passes.
1725
1726 2008-11-02  Richard Guenther  <rguenther@suse.de>
1727
1728         PR tree-optimization/37542
1729         * tree-ssa-pre.c (fully_constant_expression): Handle more cases.
1730         * tree-ssa-sccvn.c (vn_get_expr_for): Fix typo.
1731         (vn_nary_op_lookup_stmt): Adjust for unary reference trees.
1732         (vn_nary_op_insert_stmt): Likewise.
1733         (visit_use): Likewise.
1734
1735 2008-11-02  Anatoly Sokolov  <aesok@post.ru>
1736
1737         * config/avr/avr.md (UNSPEC_SWAP): Remove constants.
1738         (*swap): Remove.
1739         (rotlqi3, *rotlqi3_4, rotlhi3, *rotlhi3_8,
1740         rotlsi3, *rotlsi3_8, *rotlsi3_16, *rotlsi3_24): New patterns.
1741         (ashlqi3_const4, ashlqi3_const5, ashlqi3_const6, ashlqi3_l_const4,
1742         ashlqi3_l_const5, ashlqi3_l_const6, lshrqi3_const4, lshrqi3_const5,
1743         lshrqi3_const6, lshrqi3_l_const4, lshrqi3_l_const4, lshrqi3_l_const6
1744         peephole2's): Replace unspec with rotate.
1745         * config/avr/avr.c (avr_rtx_costs): Add ROTATE.
1746
1747 2008-11-02  Richard Guenther  <rguenther@suse.de>
1748
1749         PR tree-optimization/37991
1750         * tree-ssa-sccvn.h (copy_vuses_from_stmt): Remove.
1751         * tree-ssa-sccvn.c (copy_vuses_from_stmt): Make static.
1752         (set_ssa_val_to): Print if the value changed.
1753         (simplify_binary_expression): Strip useless conversions.
1754
1755 2008-11-01  Hans-Peter Nilsson  <hp@axis.com>
1756
1757         PR target/37939
1758         * config/cris/cris.c (cris_rtx_costs) <MULT>: Return 0 for an ADDI
1759         operand.
1760
1761 2008-11-01  Richard Guenther  <rguenther@suse.de>
1762
1763         PR middle-end/37976
1764         * builtins.c (fold_builtin_strspn): Return a size_t.
1765         (fold_builtin_strcspn): Likewise.
1766
1767 2008-10-31  Nathan Froyd  <froydnj@codesourcery.com>
1768
1769         * config/rs6000/rs6000.c (rs6000_file_start): Output gnu
1770         attribute for struct return convention.
1771
1772 2008-10-31  Nathan Froyd  <froydnj@codesourcery.com>
1773
1774         * config/rs6000/crtsavres.asm: Really, really delete.
1775
1776 2008-10-31  Nathan Froyd  <froydnj@codesourcery.com>
1777
1778         * config/rs6000/rs6000.c (no_global_regs_above): Fix precedence
1779         problem.
1780         (rs6000_emit_prologue): Invert logic.
1781         * config/rs6000/rs6000.md (*save_gpregs_<mode>): Use explicit
1782         (reg:P 11) instead of match_operand.
1783         (*save_fpregs_<mode>): Likewise.
1784         (*restore_gpregs_<mode>): Likewise.
1785         (*return_and_restore_gpregs_<mode>): Likewise.
1786         (*return_and_restore_fpregs_<mode>): Likewise.
1787         * config/rs6000/spe.md (*save_gpregs_spe): Use explicit
1788         (reg:P 11) insted of match_operand.
1789         (*restore_gpregs_spe): Likewise.
1790         (*return_and_restore_gpregs_spe): Likewise.
1791
1792 2008-10-28  Luis Machado  <luisgpm@br.ibm.com>
1793
1794         * gcc.h (DEFAULT_WORD_SWITCH_TAKES_ARG): Add "dumpbase" to the
1795         list of word switches that take args.
1796
1797 2008-10-30  Jakub Jelinek  <jakub@redhat.com>
1798
1799         * config/s390/s390.c (s390_mark_symbol_ref_as_used): New function.
1800         (s390_output_pool_entry): Call it through for_each_rtx.
1801
1802         PR middle-end/37730
1803         * expr.c (store_constructor): For vectors, if target is a MEM, use
1804         target's MEM_ALIAS_SET instead of elttype alias set.
1805
1806 2008-10-29  Kaz Kojima  <kkojima@gcc.gnu.org>
1807
1808         PR target/37909
1809         * config/sh/sh.c (untangle_mova): Return -1 when NEW_MOVA has
1810         no address.
1811
1812 2008-10-29  David Edelsohn  <edelsohn@gnu.org>
1813
1814         PR target/37878
1815         * config/rs6000/predicates.md (word_offset_memref_operand):
1816         Restructure code and look inside auto-inc/dec addresses.
1817
1818 2008-10-29  Steve Ellcey  <sje@cup.hp.com>
1819
1820         PR target/32277
1821         * libgcov.c ( __gcov_indirect_call_profiler): Check
1822         TARGET_VTABLE_USES_DESCRIPTORS.
1823
1824 2008-10-29  Stefan Schulze Frielinghaus  <xxschulz@de.ibm.com>
1825
1826         * config/spu/spu.h (FRAME_GROWS_DOWNWARD): Define.
1827         (INITIAL_FRAME_POINTER_OFFSET): Remove.
1828         * config/spu/spu.c (spu_initial_elimination_offset): Calculate new
1829         offset if eliminating soft frame pointer.
1830         * config/spu/spu.md (stack_protect_set, stack_protect_test)
1831         (stack_protect_test_si): Add initial machine description
1832         for Stack Smashing Protector
1833
1834 2008-10-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1835
1836         PR 11492
1837         * c-common.c (min_precision): Move to...
1838         * tree.c (tree_int_cst_min_precision): ... to here. Renamed.
1839         * tree.h (tree_int_cst_min_precision): Declare.
1840         * c-common.h (min_precision): Delete declaration.
1841         * fold-const.c (tree_binary_nonnegative_warnv_p): Handle
1842         multiplication of non-negative integer constants.
1843         * c-decl.c (check_bitfield_type_and_width): Rename min_precision to
1844         tree_int_cst_min_precision.
1845         (finish_enum): Likewise.
1846
1847 2008-10-29  Joseph Myers  <joseph@codesourcery.com>
1848
1849         PR middle-end/36578
1850         * convert.c (convert_to_real): Do not optimize conversions of
1851         binary arithmetic operations between binary and decimal
1852         floating-point types.  Consider mode of target type in determining
1853         decimal type for arithmetic.  Unless
1854         flag_unsafe_math_optimizations, do not optimize binary conversions
1855         where this may change rounding behavior.
1856         * real.c (real_can_shorten_arithmetic): New.
1857         * real.h (real_can_shorten_arithmetic): Declare.
1858
1859 2008-10-29  Bernd Schmidt  <bernd.schmidt@analog.com>
1860
1861         * config/bfin/bfin-protos.h (WA_05000257, WA_05000283, WA_05000315,
1862         ENABLE_WA_05000257, ENABLE_WA_05000283, ENABLE_WA_05000315): New.
1863         * config/bfin/bfin.c (bfin_cpus): Add these workaround bits as
1864         appropriate.
1865         (must_save_p): For some workarounds, interrupts need to clobber a
1866         P register.
1867         (expand_prologue_reg_save, expand_epilogue_reg_restore): Save LC0
1868         and LC1 for WA_05000257.
1869         (expand_interrupt_handler_prologue): Add dummy read of CHIPID for
1870         WA_05000283 and WA_05000315.
1871         * config/bfin/bfin.md (UNSPEC_VOLATILE_DUMMY): New constant.
1872         (movbi): Add alternative to set CC to 1; improve code for setting
1873         CC to 0.
1874         (dummy_load): New pattern.
1875
1876 2008-10-29  Jakub Jelinek  <jakub@redhat.com>
1877
1878         PR middle-end/37870
1879         * expmed.c (extract_bit_field_1): If int_mode_for_mode returns
1880         BLKmode for non-memory, convert using a wider MODE_INT mode
1881         or through memory.
1882
1883         PR middle-end/37913
1884         * tree-cfgcleanup.c (split_bbs_on_noreturn_calls): Only split bbs
1885         that haven't been removed yet.
1886
1887 2008-10-29  Bernd Schmidt  <bernd.schmidt@analog.com>
1888
1889         * config/bfin/bfin.c (struct machine_function): New member
1890         has_loopreg_clobber.
1891         (bfin_expand_movmem): Set it when generating memcpy insns.
1892         (n_regs_saved_by_prologue, expand_prologue_reg_save,
1893         expand_epilogue_reg_restore): If we have hardware loops,
1894         memcpy insns (indicated by has_loopreg_clobber) or function
1895         calls, we need to save the loop registers.
1896
1897 2008-10-28  H.J. Lu  <hongjiu.lu@intel.com>
1898
1899         * config/i386/i386.c (core2_cost): Fix typos in comments.
1900
1901 2008-10-28  Jakub Jelinek  <jakub@redhat.com>
1902
1903         PR c/37924
1904         * combine.c (make_compound_operation): Don't call make_extraction with
1905         non-positive length.
1906         (simplify_shift_const_1): Canonicalize count even if complement_p.
1907
1908 2008-10-28  Joseph Myers  <joseph@codesourcery.com>
1909
1910         * convert.c (strip_float_extensions): Do not remove or introduce
1911         conversions between binary and decimal floating-point types.
1912
1913 2008-10-28  Jakub Jelinek  <jakub@redhat.com>
1914
1915         PR middle-end/37931
1916         * fold-const.c (distribute_bit_expr): Convert common, left and
1917         right arguments to type.
1918
1919 2008-10-28  Nick Clifton  <nickc@redhat.com>
1920
1921         * config/mn10300/mn10300.h (CALL_REALLY_USED_REGISTERS): Define.
1922         * config/mn10300/mn10300.c (fp_regs_to_save): Test the
1923         call_really_used_regs array rather than the call_used_regs array.
1924         (mn10300_get_live_callee_saved_regs, expand_prologue,
1925         expand_epilogue, output_tst): Likewise.
1926
1927 2008-10-27  Jakub Jelinek  <jakub@redhat.com>
1928
1929         PR target/37378
1930         * df-scan.c (df_bb_refs_collect): Don't handle EH_USES here.
1931         (df_get_entry_block_def_set): Neither here.
1932         (df_get_regular_block_artificial_uses): Add EH_USES registers.
1933
1934         PR tree-optimization/37879
1935         * predict.c (tree_estimate_probability): Check if last_stmt is
1936         non-NULL before dereferencing it.
1937
1938 2008-10-27  Vladimir Makarov  <vmakarov@redhat.com>
1939
1940         * ira-int.h (ira_allocno): Add member updated_cover_class_cost.
1941         (ALLOCNO_UPDATED_COVER_CLASS_COST): New.
1942         (ira_fast_allocation): Remove the prototype.
1943
1944         * ira-color.c (update_copy_costs, allocno_cost_compare_func,
1945         assign_hard_reg, calculate_allocno_spill_cost): Use updated costs.
1946         (color_pass): Modify the updated costs.
1947         (ira_color): Rename to color.  Make it static.
1948         (ira_fast_allocation): Rename to fast_allocation.  Make it static.
1949         (ira_color): New function.
1950
1951         * ira-conflicts.c (process_regs_for_copy): Propagate hard reg cost
1952         change.
1953
1954         * ira-lives.c (last_call_num, allocno_saved_at_call): New
1955         variables.
1956         (set_allocno_live, clear_allocno_live, mark_ref_live,
1957         mark_ref_dead): Invalidate corresponding element of
1958         allocno_saved_at_call.
1959         (process_bb_node_lives): Increment last_call_num.  Setup
1960         allocno_saved_at_call.  Don't increase ALLOCNO_CALL_FREQ if the
1961         allocno was already saved.
1962         (ira_create_allocno_live_ranges): Initiate last_call_num and
1963         allocno_saved_at_call.
1964
1965         * ira-build.c (ira_create_allocno): Initiate
1966         ALLOCNO_UPDATED_COVER_CLASS_COST.
1967         (create_cap_allocno, propagate_allocno_info,
1968         remove_unnecessary_allocnos): Remove setting updated costs.
1969         (ira_flattening): Set up ALLOCNO_UPDATED_COVER_CLASS_COST.
1970
1971         * ira.c (ira):  Don't call ira_fast_allocation.
1972
1973         * ira-costs.c (setup_allocno_cover_class_and_costs): Don't set up
1974         updated costs.
1975
1976 2008-10-27  Vladimir Makarov  <vmakarov@redhat.com>
1977
1978         PR middle-end/37813
1979         * ira-conflicts.c (process_regs_for_copy): Remove class subset check.
1980
1981         * ira-int.h (ira_hard_regno_cover_class): New.
1982
1983         * ira-lives.c (mark_reg_live, mark_reg_dead,
1984         process_bb_node_lives): Use ira_hard_regno_cover_class.
1985
1986         * ira.c (reg_class ira_hard_regno_cover_class): New global variable.
1987         (setup_hard_regno_cover_class): New function.
1988         (ira_init): Call setup_hard_regno_cover_class.
1989
1990         * ira-costs.c (cost_class_nums): Add comment.
1991         (find_allocno_class_costs): Initiate cost_class_nums.
1992         (setup_allocno_cover_class_and_costs): Check cost_class_nums.
1993
1994 2008-10-27  Vladimir Makarov  <vmakarov@redhat.com>
1995
1996         PR middle-end/37884
1997         * ira-build.c (copy_live_ranges_to_removed_store_destinations):
1998         Rename to copy_info_to_removed_store_destinations.  Propagate
1999         conflict hard regs and register stack attribute.
2000
2001 2008-10-26  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2002
2003         PR middle-end/37316
2004         * pa.c (function_arg_padding):  Pad complex and vector types
2005         upward in 64-bit runtime.
2006         (function_arg): Use BLKmode for PARALLEL in 64-bit runtime.
2007
2008 2008-10-26  Matthias Klose  <doko@ubuntu.com>
2009
2010         * doc/install.texi: Document requirements on antlr.
2011
2012 2008-10-25  Richard Sandiford  <rdsandiford@googlemail.com>
2013
2014         * config/mips/mips.h (REG_ALLOC_ORDER): Put call-clobbered registers
2015         first.
2016
2017 2008-10-24  Michael Meissner  <meissner@linux.vnet.ibm.com>
2018
2019         PR target/37841
2020         * function.c (locate_and_pad_parm): If FUNCTION_ARG_ADJUST_OFFSET
2021         is defined, use it to modify the constant offset.
2022
2023         * doc/tm.texi (FUNCTION_ARG_OFFSET): Document new macro.
2024
2025         * config/spu/spu.h (FUNCTION_ARG_OFFSET): New macro to move char
2026         and short arguments to the correct location as mandated by the ABI.
2027
2028 2008-10-24  Kaz Kojima  <kkojima@gcc.gnu.org>
2029
2030         PR rtl-optimization/37769
2031         * regmove.c (optimize_reg_copy_2): Update REG_INC note if needed.
2032
2033 2008-10-24  Kaz Kojima  <kkojima@gcc.gnu.org>
2034
2035         * config/sh/t-sh: Use $(MULTILIB_CFLAGS) when compiling to
2036         unwind-dw2-Os-4-200.o.
2037
2038 2008-10-24  Joseph Myers  <joseph@codesourcery.com>
2039
2040         * c-typeck.c (enum impl_conv): Remove ic_argpass_nonproto.
2041         (convert_for_assignment): Remove ic_argpass_nonproto cases.
2042
2043 2008-10-24  Jakub Jelinek  <jakub@redhat.com>
2044
2045         PR tree-optimization/36038
2046         * tree-ssa-loop-ivopts.c (add_old_iv_candidates): For pointer bases
2047         add sizetype IV with initial value zero instead of pointer type.
2048
2049 2008-10-24  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2050
2051         PR c/7543
2052         * value-prof.c (gimple_stringop_fixed_value): Use parentheses
2053         around bit operation.
2054         * profile.c (is_edge_inconsistent): Likewise.
2055         * fold-const.c (truth_value_p): Move from here...
2056         * tree.h (truth_value_p): ... to here.
2057         * c-tree.h (c_expr): Update description of original_code.
2058         * c-typeck.c (parser_build_unary_op): Set original_code.
2059         (parser_build_binary_op): Update call to warn_about_parentheses.
2060         * c-common.c (warn_about_parentheses): Take two additional
2061         arguments of the operands. Use a switch. Quote operators
2062         appropriately. Define macro APPEARS_TO_BE_BOOLEAN_EXPR_P.
2063         Add warning about !x | y and !x & y.
2064         * c-common.h (warn_about_parentheses): Update declaration.
2065
2066 2008-10-24  Jakub Jelinek  <jakub@redhat.com>
2067
2068         * Makefile.in (lang_checks_parallelized, check_gcc_parallelize,
2069         check_p_tool, check_p_vars, check_p_subno, check_p_comma,
2070         check_p_subwork, check_p_numbers, check_p_subdir, check_p_subdirs):
2071         New variables.
2072         (check-subtargets, check-%-subtargets, check-parallel-%): New targets.
2073         (check-%): For test targets listed in lang_checks_parallelized
2074         if -j is used and RUNTESTFLAGS doesn't specify tests to execute,
2075         run the testing in multiple make goals, possibly parallel, and
2076         afterwards run dg-extract-results.sh to merge the sum and log files.
2077
2078 2008-10-24  Richard Sandiford  <rdsandiford@googlemail.com>
2079
2080         * config/mips/mips.c (mips_canonicalize_move_class): New function.
2081         (mips_move_to_gpr_cost): Likewise.
2082         (mips_move_from_gpr_cost): Likewise.
2083         (mips_register_move_cost): Make more fine-grained.
2084
2085 2008-10-23  Tobias Grosser  <grosser@fim.uni-passau.de>
2086
2087         * graphite.c (graphite_apply_transformations): Check for
2088         -fgraphite-identity.
2089         * toplev.c (process_options): Add graphite_identity.
2090         * tree-ssa-loop.c (gate_graphite_transforms): Add graphite_identity.
2091
2092 2008-10-23  Bernd Schmidt  <bernd.schmidt@analog.com>
2093
2094         * config/bfin/bfin.c (bdesc_2arg): Add mulhisill, mulhisilh,
2095         mulhisihl and mulhisihh builtins.
2096
2097         From Jie Zhang  <jie.zhang@analog.com>
2098         * config/bfin/bfin.md (composev2hi): Put operands into vector
2099         with correct order.
2100
2101 2008-10-22  Chao-ying Fu  <fu@mips.com>
2102
2103         * config/mips/mips.opt (msmartmips): Accept -mno-smartmips.
2104
2105 2008-10-22  Bernd Schmidt  <bernd.schmidt@analog.com>
2106
2107         From Mike Frysinger  <michael.frysinger@analog.com>
2108         * config/bfin/bfin-protos.h (bfin_cpu_type): Add BFIN_CPU_BF512,
2109         BFIN_CPU_BF514, BFIN_CPU_BF516, and BFIN_CPU_BF518.
2110         * config/bfin/bfin.c (bfin_cpus[]): Add 0.0 for bf512, bf514, bf516,
2111         and bf518.  Add 0.2 for bf522, bf523, bf524, bf526, and bf527.
2112         Add 0.6 for bf533, bf532, and bf531.  Add 0.5 for bf538 and bf539.
2113         Add 0.2 for bf542, bf544, bf547, bf548, and bf549.
2114         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF512__
2115         for BFIN_CPU_BF512, __ADSPBF514__ for BFIN_CPU_BF514, __ADSPBF516__
2116         for BFIN_CPU_BF516, and __ADSPBF518__ for BFIN_CPU_BF518.  Define
2117         __ADSPBF51x__ for all of them.
2118         * config/bfin/elf.h (LIB_SPEC): Select proper linker scripts for
2119         -mcpu bf512, bf514, bf516, and bf518.
2120         * config/bfin/t-bfin-elf (MULTILIB_MATCHES): Select bf532-none for
2121         bf512-none, bf514-none, bf516-none, and bf518-none.
2122         * config/bfin/t-bfin-linux (MULTILIB_MATCHES): Likewise.
2123         * config/bfin/t-bfin-uclinux (MULTILIB_MATCHES): Likewise.
2124         * doc/invoke.texi (Blackfin Options): Document that
2125         -mcpu now accepts bf512, bf514, bf516, and bf518.
2126
2127 2008-10-22  Jakub Jelinek  <jakub@redhat.com>
2128
2129         PR middle-end/37882
2130         * fold-const.c (build_range_type): For 1 .. signed_max
2131         range call build_nonstandard_inter_type if signed_type_for
2132         returned a type with bigger precision.
2133
2134 2008-10-22  Richard Guenther  <rguenther@suse.de>
2135
2136         * tree.def (COMPLEX_TYPE): Constrain element type.
2137         * tree.c (build_complex_type): Assert that.
2138         * tree-ssa-structalias.c (could_have_pointers): Complex types
2139         cannot have pointers.
2140
2141 2008-10-22  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2142
2143         PR c/30949
2144         * c-typeck.c (convert_for_assignment): Do not give declaration's
2145         location for builtins. Spell out which type was expected and which
2146         was given.
2147
2148 2008-10-22  Nick Clifton  <nickc@redhat.com>
2149
2150         * config/frv/frv.h (HARD_REGNO_RENAME_OK): Define.  Do not allow
2151         the fdpic register to be a target when running in fdpic mode.
2152
2153 2008-10-22 Rafael Espindola  <espindola@google.com>
2154
2155         * ipa-struct-reorg.c (create_new_alloc_sites): Properly insert the
2156         newly created statements.
2157
2158 2008-10-22  Kaz Kojima  <kkojima@gcc.gnu.org>
2159
2160         PR target/37633
2161         * config/sh/sh.c (sh_hard_regno_mode_ok): New function.
2162         * config/sh/sh.h (HARD_REGNO_MODE_OK): Use it.
2163         * config/sh/sh-protos.h (sh_hard_regno_mode_ok): Declare.
2164
2165 2008-10-22  Jakub Jelinek  <jakub@redhat.com>
2166
2167         PR target/37880
2168         * doc/invoke.texi: Fix spelling of -mlarge-data-threshold option.
2169         Adjust -mcmodel=medium description for 2005-07-31 changes.
2170
2171 2008-10-22  Jan Hubicka  <jh@suse.cz>
2172             Jakub Jelinek  <jakub@redhat.com>
2173
2174         PR middle-end/35853
2175         * doc/invoke.texi: Remove references to obsoleted -d dumps.
2176
2177 2008-10-21  Richard Henderson  <rth@redhat.com>
2178
2179         PR 37815
2180         * emit-rtl.c (get_spill_slot_decl): Export.
2181         * emit-rtl.h (get_spill_slot_decl): Declare.
2182         * var-tracking.c (vt_add_function_parameters): Relax assertion
2183         on the contents of MEM_EXPR in a PARM_DECL to include a spill slot.
2184
2185 2008-10-21  Bob Wilson  <bob.wilson@acm.org>
2186
2187         * var-tracking.c (insn_stack_adjust_offset_pre_post): If insn has a
2188         REG_FRAME_RELATED_EXPR note, examine the pattern from the note instead
2189         of from insn.
2190
2191 2008-10-21  Adam Nemet  <anemet@caviumnetworks.com>
2192
2193         PR middle-end/37669
2194         * tree-ssa-ccp.c (ccp_fold_builtin): Only allow one argument to be
2195         processed by get_maxval_strlen.
2196
2197 2008-10-21  David Edelsohn  <edelsohn@gnu.org>
2198
2199         PR target/35485
2200         * tree.c (get_file_function_name): Copy first_global_object_name.
2201         Centralize call to clean_symbol_name.
2202
2203 2008-10-21  Sandra Loosemore  <sandra@codesourcery.com>
2204
2205         * config.gcc (powerpc-*): Make t-ppcgas imply usegas.h.
2206         * config/svr4.h (SVR4_ASM_SPEC): New.
2207         (ASM_SPEC): Inherit from SVR4_ASM_SPEC.
2208         * config/rs6000/sysv4.h (ASM_SPEC): Inherit from SVR4_ASM_SPEC.
2209
2210         * doc/invoke.texi (Option Summary): Add -T to linker options.
2211         (Link Options): Document -T.
2212
2213 2008-10-21  Jakub Jelinek  <jakub@redhat.com>
2214
2215         * tree-inline.c (tree_inlinable_function_p): Remove tuples
2216         debugging hack.
2217
2218         * gimplify.c (gimplify_expr): Drop TREE_OVERFLOW from INTEGER_CSTs.
2219
2220         PR debug/37020
2221         * c-decl.c (merge_decls): Don't call outlining_inline_function hook.
2222
2223 2008-10-20  Daniel Berlin  <dberlin@dberlin.org>
2224
2225         * tree-ssa-pre.c (insert_into_preds_of_block): Don't rewrite constant
2226         part of expression.
2227
2228 2008-10-20  Tobias Schlüter  <tobi@gcc.gnu.org>
2229
2230         * doc/install.texi: Fix typos in previous patch.
2231
2232 2008-10-19  Tobias Schlüter  <tobi@gcc.gnu.org>
2233
2234         * doc/install.texi: Document in-tree building of gcc and mpfr.
2235
2236 2008-10-19  Richard Guenther  <rguenther@suse.de>
2237
2238         * tree-ssa-alias.c (may_alias_p): Remove bogus shortcut.
2239
2240 2008-10-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2241
2242         PR c/30260
2243         * c-decl.c (finish_enum): Convert non-integer enumerators to enum type.
2244         (build_enumerator): Convert enumerators that fit in integer to
2245         integer type.
2246
2247 2008-10-18  Uros Bizjak  <ubizjak@gmail.com>
2248
2249         * config/i386/i386.md (unnamed peephole2): Do not force memory
2250         operands of arith or logical instructions into registers for
2251         non-TARGET_READ_MODIFY targets.
2252
2253         (ffs_cmove): Change operand 0 predicate to register_operand.
2254         Change operand 1 predicate to nonimmediate_operand.
2255         (ffsdi2): Ditto.
2256         (*ffs_no_cmove): Change operand 0 predicate to register_operand.
2257
2258 2008-10-18  Richard Guenther  <rguenther@suse.de>
2259
2260         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Guard
2261         VIEW_CONVERT_EXPR case against invalid gimple.
2262
2263 2008-10-17  Andreas Krebbel  <krebbel1@de.ibm.com>
2264
2265         * c-parser.c (c_parser_binary_expression): Silence the
2266         uninitialized variable warning emitted for binary_loc.
2267
2268 2008-10-16  Daniel Berlin  <dberlin@dberlin.org>
2269
2270         * tree-ssa-pre.c (phi_translate_set): Add constants to phi
2271         translation cache.
2272
2273 2008-10-16  Joseph Myers  <joseph@codesourcery.com>
2274
2275         PR c/33192
2276         * c-typeck.c (build_unary_op): Use omit_one_operand for
2277         IMAGPART_EXPR of real argument.
2278
2279 2008-10-16  Jakub Jelinek  <jakub@redhat.com>
2280
2281         PR tree-optimization/37664
2282         * fold-const.c (fold_binary): When optimizing comparison with
2283         highest or lowest type's value, don't consider TREE_OVERFLOW.
2284
2285 2008-10-16  David Edelsohn  <edelsohn@gnu.org>
2286
2287         PR target/35483
2288         * Makefile.in (coverage.o): Depend on $(TM_P_H).
2289         * coverage.c: Include tm_p.h.
2290         * config/rs6000/x-aix (jc1): Override LDFLAGS.
2291         * config/rs6000/xcoff.h (ASM_GENERATE_INTERNAL_LABEL): Strip
2292         dollar signs from PREFIX.
2293         * config/rs6000/rs6000.c (output_toc): Use RS6000_OUTPUT_BASENAME
2294         instead of manual strip_name_encoding.
2295
2296 2008-10-16  Richard Guenther  <rguenther@suse.de>
2297
2298         PR middle-end/37418
2299         * tree-ssa.c (useless_type_conversion_p_1): Do not treat
2300         volatile qualified functions or methods as relevant.
2301
2302 2008-10-16  Jakub Jelinek  <jakub@redhat.com>
2303
2304         PR tree-optimization/37525
2305         * tree.c (int_fits_type_p): Rewrite using double_int.  Zero extend
2306         sizetype unsigned constants, both in the case of C and bounds.
2307
2308 2008-10-15  Jan Hubicka  <jh@suse.cz>
2309
2310         * ira-emit.c (change_regs): Return false when replacing reg by itself.
2311
2312 2008-10-14  Vladimir Makarov  <vmakarov@redhat.com>
2313
2314         PR target/37633
2315         * ira-costs.c (ira_tune_allocno_costs_and_cover_classes): Check
2316         HARD_REGNO_CALL_PART_CLOBBERED.
2317
2318 2008-10-15  Vladimir Makarov  <vmakarov@redhat.com>
2319
2320         PR middle-end/37535
2321         * ira-lives.c (mark_early_clobbers): Remove.
2322         (make_pseudo_conflict, check_and_make_def_use_conflicts,
2323         check_and_make_def_conflicts,
2324         make_early_clobber_and_input_conflicts,
2325         mark_hard_reg_early_clobbers): New functions.
2326         (process_bb_node_lives): Call
2327         make_early_clobber_and_input_conflicts and
2328         mark_hard_reg_early_clobbers.  Make hard register inputs live again.
2329
2330         * doc/rtl.texi (clobber): Change descriotion of RA behaviour for
2331         early clobbers of pseudo-registers.
2332
2333 2008-10-15  Vladimir Makarov  <vmakarov@redhat.com>
2334
2335         PR middle-end/37674
2336         * ira-build.c (ira_flattening): Recalculate
2337         ALLOCNO_TOTAL_NO_STACK_REG_P and ALLOCNO_TOTAL_CONFLICT_HARD_REGS
2338         from the scratch instead of the propagation.
2339
2340 2008-10-15  Richard Sandiford  <rdsandiford@googlemail.com>
2341
2342         * doc/rtl.texi (const_double): Remove the "addr" operand.
2343         Describe CONST_DOUBLE_* macros under const_double rather
2344         than const_vector.
2345         (const_fixed): Fix the operand description.
2346         (const): Add an @findex directive.
2347         (CONST0_RTX, CONST1_RTX, CONST2_RTX): Move description
2348         after the constant rtl table.
2349         (fix): Combine floating-point and fixed-point descriptions.
2350         Fix hyphenation.
2351         * sched-deps.c (sched_analyze_2): Remove reference to
2352         CONST_DOUBLE_CHAIN.
2353
2354 2008-10-15  Richard Sandiford  <rdsandiford@googlemail.com>
2355
2356         * config/mn10300/mn10300.h (OUTPUT_ADDR_CONST_EXTRA): Handle
2357         UNSPEC_GOTSYM_OFFs.
2358         * config/mn10300/mn10300.c (legitimate_pic_operand_p): Return true
2359         for UNSPEC_GOTSYM_OFFs.
2360         * config/mn10300/mn10300.md (UNSPEC_GOTSYM_OFF): New unspec.
2361         (add_GOT_to_pic_reg): Use it.
2362         * config/mn10300/constraints.md (S): Allow UNSPEC_GOTSYM_OFF.
2363
2364 2008-10-15  Jan Sjodin  <jan.sjodin@amd.com>
2365             Harsha Jagasia  <harsha.jagasia@amd.com>
2366
2367         PR tree-optimization/37485
2368         * graphite.c (gmp_cst_to_tree): Moved.
2369         (iv_stack_entry_is_constant): New.
2370         (iv_stack_entry_is_iv): New.
2371         (loop_iv_stack_push): Renamed to loop_iv_stack_push_iv.
2372         (loop_iv_stack_insert_constant): New.
2373         (loop_iv_stack_pop): Use new datatpype.
2374         (loop_iv_stack_get_iv): Same.
2375         (loop_iv_stack_get_iv_from_name): Same.
2376         (loop_iv_stack_debug): Renamed to debug_loop_iv_stack.
2377         (loop_iv_stack_patch_for_consts): New.
2378         (loop_iv_stack_remove_constants): New.
2379         (graphite_create_new_loop): Use loop_iv_stack_push_iv.
2380         (translate_clast): Call loop_iv_stack_patch_for_consts and
2381         loop_iv_stack_remove_constants.
2382         (gloog): Use new datatype.  Redirect construction edge to end
2383         block to avoid accidental deletion.
2384         * graphite.h (enum iv_stack_entry_kind): New.  Tag for data in
2385         iv stack entry.
2386         (union iv_stack_entry_data): New.  Data in iv stack entry.
2387         (struct iv_stack_entry): New.  Datatype for iv stack entries.
2388
2389 2008-10-15  Sebastian Pop  <sebastian.pop@amd.com>
2390
2391         * tree-data-ref.c (stmt_simple_memref_p): Fix memleak.
2392         * graphite.c (free_scop): Same.
2393         (build_scops): Same.
2394         (free_scattering): New.
2395         (build_cloog_prog): Call free_scattering.
2396         (patch_phis_for_virtual_defs): Fix memleak.
2397         (graphite_trans_bb_strip_mine): Same.
2398         (limit_scops): Same.
2399
2400 2008-10-15  Sebastian Pop  <sebastian.pop@amd.com>
2401             Harsha Jagasia  <harsha.jagasia@amd.com>
2402
2403         PR tree-optimization/37828
2404         * graphite.c (graphite_trans_loop_block): Do not loop block
2405         single nested loops.
2406
2407 2008-10-15  Sebastian Pop  <sebastian.pop@amd.com>
2408
2409         PR tree-optimization/37686
2410         * tree-loop-linear.c (linear_transform_loops): Build a
2411         loop nest vector.  Pass it to lambda_compute_access_matrices.
2412         * tree-data-ref.h (struct access_matrix): Store the loop nest
2413         relative to which it encodes the information.
2414         (AM_LOOP_NEST_NUM): Renamed AM_LOOP_NEST.
2415         (am_vector_index_for_loop): Reimplemented: iterate over the
2416         loop nest for finding the loop index in the access matrix.
2417         (lambda_compute_access_matrices): Update declaration.
2418         * lambda-code.c (build_access_matrix): Pass the loop nest and
2419         record it.
2420         (lambda_compute_access_matrices): Same.
2421
2422 2008-10-15  Andreas Krebbel  <krebbel1@de.ibm.com>
2423
2424         * config/s390/s390.h: (TARGET_DFP): This requires TARGET_HARD_FLOAT.
2425         * config/s390/s390.md: Replace "TARGET_HARD_FLOAT &&
2426         TARGET_(HARD_)DFP" with only TARGET_(HARD_)DFP since this
2427         already implies hard float.  Also fix several insn condition
2428         with TARGET_DFP which shall require TARGET_HARD_DFP instead.
2429
2430 2008-10-15  David Edelsohn  <edelsohn@gnu.org>
2431
2432         PR target/35483
2433         Based on patches by Laurent Vivier.
2434         * xcoffout.h (DBX_FINISH_STABS): Translate dollar sign to underscore.
2435         * config/rs6000/rs6000-protos.h (rs6000_xcoff_strip_dollar): Declare.
2436         * config/rs6000/xcoff.h (ASM_DECLARE_FUNCTION_NAME): Translate
2437         dollar sign to underscore.
2438         (ASM_OUTPUT_EXTERNAL): Same.
2439         (ASM_OUTPUT_LABELREF): New.
2440         * config/rs6000/rs6000.c (rs6000_xcoff_strip_dollar): New.
2441
2442         * config/rs6000/aix51.h (TARGET_USE_JCR_SECTION): Define.
2443         * config/rs6000/aix52.h (TARGET_USE_JCR_SECTION): Define.
2444         * config/rs6000/aix53.h (TARGET_USE_JCR_SECTION): Define.
2445         * config/rs6000/aix61.h (TARGET_USE_JCR_SECTION): Define.
2446
2447 2008-10-15  Jakub Jelinek  <jakub@redhat.com>
2448
2449         PR tree-optimization/36881
2450         * tree-switch-conversion.c (check_final_bb): For flag_pic, check
2451         that each value doesn't need runtime relocations, for !flag_pic
2452         check that each value is just a valid initializer constant.
2453
2454 2008-10-14  Richard Sandiford  <rdsandiford@googlemail.com>
2455
2456         * config/mips/mips.h (reg_class): Remove HI_AND_GR_REGS,
2457         LO_AND_GR_REGS, HI_AND_FP_REGS, COP0_AND_GR_REGS, COP2_AND_GR_REGS,
2458         COP3_AND_GR_REGS, ALL_COP_REGS and ALL_COP_AND_GR_REGS.
2459         Add GR_AND_MD0_REGS, GR_AND_MD1_REGS, GR_AND_MD_REGS and
2460         GR_AND_ACC_REGS.
2461         (REG_CLASS_NAMES): Update accordingly.
2462         (REG_CLASS_CONTENTS): Likewise.  Use the class name in the comments,
2463         rather than an unpredictable descriptive string.
2464         * config/mips/mips.c (mips_register_move_cost): Remove comment.
2465         (mips_register_move_cost): Check for specific COP*_REGS classes,
2466         instead of ALL_COP_AND_GR_REGS.
2467         (mips_ira_cover_classes): New function.
2468         (mips_secondary_reload_class): Remove MTLO and MTHI workarounds.
2469         (TARGET_IRA_COVER_CLASSES): Define.
2470
2471 2008-10-14  Douglas Gregor  <doug.gregor@gmail.com>
2472
2473         PR c++/37553
2474         * tree.c (build_type_attribute_qual_variant): Hash on the
2475         unqualified type, and don't overwrite an existing
2476         (type_hash_eq): Make the TYPE_NAME of the types significant, to
2477         allow distinguishing between wchar_t and its underlying type. This
2478         also means that we'll retain a little more typedef information.
2479
2480 2008-10-14  Andrey Belevantsev  <abel@ispras.ru>
2481             Dmitry Melnik  <dm@ispras.ru>
2482             Dmitry Zhurikhin  <zhur@ispras.ru>
2483             Alexander Monakov  <amonakov@ispras.ru>
2484             Maxim Kuvyrkov  <maxim@codesourcery.com>
2485
2486         * target.h (struct gcc_target): Update prototypes of needs_block_p
2487         and gen_spec_check.
2488         * haifa-sched.c (create_check_block_twin): Update calls to the above.
2489         * sel-sched.c (create_speculation_check): Likewise.
2490         * doc/tm.texi: Provide documentation for new target hooks.
2491
2492         * config/ia64/ia64.c: Include sel-sched.h.  Rewrite speculation hooks.
2493         (ia64_gen_spec_insn): Removed.
2494         (get_spec_check_gen_function, insn_can_be_in_speculative_p,
2495         ia64_gen_spec_check): New static functions.
2496         (ia64_alloc_sched_context, ia64_init_sched_context,
2497         ia64_set_sched_context, ia64_clear_sched_context,
2498         ia64_free_sched_context, ia64_get_insn_spec_ds,
2499         ia64_get_insn_checked_ds, ia64_skip_rtx_p): Declare functions.
2500         (ia64_needs_block_p): Change prototype.
2501         (ia64_gen_check): Rename to ia64_gen_spec_check.
2502         (ia64_adjust_cost): Rename to ia64_adjust_cost_2.  Add new parameter
2503         into declaration, add special memory dependencies handling.
2504         (TARGET_SCHED_ALLOC_SCHED_CONTEXT, TARGET_SCHED_INIT_SCHED_CONTEXT,
2505         TARGET_SCHED_SET_SCHED_CONTEXT, TARGET_SCHED_CLEAR_SCHED_CONTEXT,
2506         TARGET_SCHED_FREE_SCHED_CONTEXT, TARGET_SCHED_GET_INSN_SPEC_DS,
2507         TARGET_SCHED_GET_INSN_CHECKED_DS, TARGET_SCHED_SKIP_RTX_P):
2508         Define new target hooks.
2509         (TARGET_SCHED_GEN_CHECK): Rename to TARGET_SCHED_GEN_SPEC_CHECK.
2510         (ia64_optimization_options): Turn on selective scheduling with -O3,
2511         disable -fauto-inc-dec. Set mflag_sched_control_spec to true by
2512         default with selective scheduling.
2513         (ia64_override_options): Initialize align_loops and align_functions
2514         to 32 and 64, respectively.  Set global selective scheduling flags
2515         according to target-dependent flags.
2516         (rtx_needs_barrier): Support UNSPEC_LDS_A.
2517         (group_barrier_needed): Use new mstop-bit-before-check flag.
2518         Add heuristic.
2519         (dfa_state_size): Make global.
2520         (spec_check_no, max_uid): Remove.
2521         (mem_ops_in_group, current_cycle): New variables.
2522         (ia64_sched_init): Disable checks for !SCHED_GROUP_P after reload.
2523         Initialize new variables.
2524         (is_load_p, record_memory_reference): New functions.
2525         (ia64_dfa_sched_reorder): Lower priority of loads when limit is
2526         reached.
2527         (ia64_variable_issue): Change use of current_sched_info to
2528         sched_deps_info.  Update comment.  Note if a load or a store is issued.
2529         (ia64_first_cycle_multipass_dfa_lookahead_guard_spec): Require a cycle
2530         advance if maximal number of loads or stores was issued on current
2531         cycle.
2532         (scheduled_good_insn): New static helper function.
2533         (ia64_dfa_new_cycle): Assert that last_scheduled_insn is set when
2534         a group barrier is needed.  Fix vertical spacing.  Guard the code
2535         doing state transition with last_scheduled_insn check.
2536         Mark that a stop bit should be before current insn if there was a
2537         cycle advance.  Update current_cycle and mem_ops_in_group.
2538         (ia64_h_i_d_extended): Change use of current_sched_info to
2539         sched_deps_info. Reallocate stops_p by larger chunks.
2540         (struct _ia64_sched_context): New structure.
2541         (ia64_sched_context_t): New typedef.
2542         (ia64_alloc_sched_context, ia64_init_sched_context,
2543         ia64_set_sched_context, ia64_clear_sched_context,
2544         ia64_free_sched_context): New static functions.
2545         (gen_func_t): New typedef.
2546         (get_spec_load_gen_function): New function.
2547         (SPEC_GEN_EXTEND_OFFSET): Declare.
2548         (ia64_set_sched_flags): Check common_sched_info instead of *flags.
2549         (get_mode_no_for_insn): Change the condition that prevents use of
2550         special hardware registers so it can now handle pseudos.
2551         (get_spec_unspec_code): New function.
2552         (ia64_skip_rtx_p, get_insn_spec_code, ia64_get_insn_spec_ds,
2553         ia64_get_insn_checked_ds, ia64_gen_spec_load): New static functions.
2554         (ia64_speculate_insn, ia64_needs_block_p): Support branchy checks
2555         during selective scheduling.
2556         (ia64_speculate_insn): Use ds_get_speculation_types when
2557         determining whether we need to change the pattern.
2558         (SPEC_GEN_LD_MAP, SPEC_GEN_CHECK_OFFSET): Declare.
2559         (ia64_spec_check_src_p): Support new speculation/check codes.
2560         (struct bundle_state): New field.
2561         (issue_nops_and_insn): Initialize it.
2562         (insert_bundle_state): Minimize mid-bundle stop bits.
2563         (important_for_bundling_p): New function.
2564         (get_next_important_insn): Use important_for_bundling_p.
2565         (bundling): When shifting TImode from unimportant insns, ignore
2566         also group barriers.  Assert that best state is found before
2567         the backward bundling pass.  Print number of mid-bundle stop bits.
2568         Minimize mid-bundle stop bits.  Check correct calculation of
2569         mid-bundle stop bits.
2570         (ia64_sched_finish, final_emit_insn_group_barriers): Fix formatting.
2571         (final_emit_insn_group_barriers): Emit stop bits before insns starting
2572         a new cycle.
2573         (sel2_run): New variable.
2574         (ia64_reorg): When flag_selective_scheduling2 is set, run the
2575         selective scheduling pass instead of schedule_ebbs.
2576
2577         * config/ia64/ia64.md (speculable1, speculable2): New attributes.
2578         (UNSPEC_LDS_A): New UNSPEC.
2579         (movqi_internal, movhi_internal, movsi_internal, movdi_internal,
2580         movti_internal, movsf_internal, movdf_internal,
2581         movxf_internal): Make visible.  Add speculable* attributes.
2582         (output_c_nc): New mode attribute.
2583         (mov<mode>_speculative_a, zero_extend<mode>di2_speculative_a,
2584         mov<mode>_nc, zero_extend<mode>di2_nc,
2585         advanced_load_check_nc_<mode>): New insns.
2586         (zero_extend*): Add speculable* attributes.
2587
2588         * config/ia64/ia64.opt (msched_fp_mem_deps_zero_cost): New option.
2589         (msched-stop-bits-after-every-cycle): Likewise.
2590         (msched-max-memory-insns, msched-max-memory-insns-hard-limit):
2591         Likewise.
2592         (msched-spec-verbose): Remove.
2593         (msched-prefer-non-data-spec-insns,
2594         msched-prefer-non-control-spec-insns,
2595         msched-count-spec-in-critical-path,
2596         msel-sched-dont-check-control-spec): Use Target  Report Var
2597         instead of Common Report Var.
2598
2599         * config/ia64/itanium2.md: Remove incorrect bypass.
2600
2601         * config/ia64/t-ia64 (ia64.o): Add dependency on sel-sched.h.
2602
2603 2008-10-14  Jakub Jelinek  <jakub@redhat.com>
2604
2605         PR middle-end/37805
2606         * opts.c (common_handle_option): Don't ICE on -fhelp=joined
2607         and -fhelp=separate.
2608
2609 2008-10-14  Ben Elliston  <bje@au.ibm.com>
2610
2611         * config/rs6000/rs6000.md (cell_micro): Fix formatting.
2612
2613 2008-10-13  Joseph Myers  <joseph@codesourcery.com>
2614
2615         * combine.c (simplify_set): Avoid calling LOAD_EXTEND_OP on
2616         non-integer modes.
2617
2618 2008-10-13  Matthias Klose  <doko@ubuntu.com>
2619
2620         * config/pa/linux-atomic.c: Work around missing header file
2621         for hppa64-linux-gnu targets.
2622
2623 2008-10-13  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2624             Kaushal Kantawala <Kaushal_Kantawala@playstation.sony.com>
2625             Trevor Smigiel  <Trevor_Smigiel@playstation.sony.com>
2626             Grace Cao  <grace_cao@playstation.sony.com>
2627
2628         * doc/invoke.texi (-mgen-cell-microcode): Document.
2629         (-mwarn-cell-microcode): Document.
2630         * cfglayout.c (locator_location): Export.
2631         * rtl.h (locator_location): Define prototype.
2632         * config/rs6000/predicates.md (cc_reg_not_micro_cr0_operand):
2633         New predicate.
2634         * rs6000/rs6000-protos.h (rs6000_final_prescan_insn): Define prototype.
2635         * config/rs6000/rs6000.opt (mgen-cell-microcode): New option.
2636         (mwarn-cell-microcode): New option.
2637         * rs6000/rs6000.c (rs6000_cell_dont_microcode): Delete unused variable.
2638         (rs6000_override_options): Set rs6000_gen_cell_microcode if tuning for
2639         cell and not already set.
2640         Turn off string instructions if not generating cell microcode.
2641         (rs6000_final_prescan_insn): New function that warns about microcoded
2642         instructions.
2643         * config/rs6000/rs6000.h (FINAL_PRESCAN_INSN): Define.
2644         * config/rs6000/rs6000.md
2645         Replace cc_reg_not_cr0_operand with cc_reg_not_micro_cr0_operand if
2646         the instruction would have been microcoded on the Cell.  Set
2647         cell_micro to always on unnamed patterns for the string instructions.
2648         (cell_micro): Update definition, remove load/store conditional
2649         microcoded.
2650         (sign_extend:DI): Define new pattern for non microcoded version.
2651         (sign_extend:SI): Likewise.
2652         (compare (div:P)): Set cell_micro to not.
2653         (andsi3): Define as an expand.
2654         (andsi3_mc): New pattern.
2655         (andsi3_nomc): New pattern.
2656         (andsi3_internal0_nomc): New pattern.
2657         (andsi3_internal2): Rename to ...
2658         (andsi3_internal2_mc): this and enable iff generating microcode.
2659         (andsi3_internal3): Rename to ...
2660         (andsi3_internal3_mc): this and enable iff generating microcode.
2661         (andsi3_internal4): Enable iif generating microcode.
2662         (andsi3_internal5): Rename to ..
2663         (andsi3_internal5_mc): this and enable iff generating microcode.
2664         (andsi3_internal5_nomc): New pattern.
2665         (extzvdi_internal1): Enable iff generating microcode.
2666         (extzvdi_internal2): Likewise.
2667         (rotlsi3_internal7): Set cell_micro to always if non immediate form.
2668         (anddi3): Change to expand.
2669         (anddi3_mc): Rename from anddi3.
2670         (anddi3_no_mc): New pattern.
2671         (anddi3_internal2): Rename to ..
2672         (anddi3_internal2_mc): this and enable iff generating microcode.
2673         (anddi3_internal2_nomc): New pattern.
2674         (anddi3_internal3): Rename to ..
2675         (anddi3_internal3_mc): this and enable iff generating microcode.
2676         (anddi3_internal3_nomc): New pattern.
2677         (movti_string): Set cell_micro to always if TARGET_STRING.
2678         (stmsi8): Set cell_micro to always.
2679         (stmsi7): Likewise.
2680         (stmsi6): Likewise.
2681         (stmsi5): Likewise.
2682         (stmsi4): Likewise.
2683         (stmsi3): Likewise.
2684         (stmsi8_power): Likewise.
2685         (stmsi7_power): Likewise.
2686         (stmsi6_power): Likewise.
2687         (stmsi5_power): Likewise.
2688         (stmsi4_power): Likewise.
2689         (stmsi3_power): Likewise.
2690         (movsi_update2): Enable iff generating microcode.
2691         (movhi_update3): Likewise.
2692         (lmw): Set cell_micro to always.
2693
2694 2008-10-13  Richard Sandiford  <rdsandiford@googlemail.com>
2695
2696         * config/s390/s390.md (UNSPEC_POOL_OFFSET): New constant.
2697         * config/s390/s390.c (machine_function): Remove
2698         decomposed_literal_pool_addresses_ok_p.
2699         (s390_decompose_address): Check for UNSPEC_POOL_OFFSET instead of
2700         the difference of two labels.
2701         (s390_output_addr_const_extra): Handle UNSPEC_POOL_OFFSET.
2702         (s390_pool_offset): New function.
2703         (s390_find_constant, s390_find_execute, s390_dump_pool): Use it.
2704         (s390_reorg): Don't set decomposed_literal_pool_addresses_ok_p.
2705
2706 2008-10-13  Nathan Froyd  <froydnj@codesourcery.com>
2707
2708         * doc/install.texi (powerpc-*-*): Require binutils 2.15.
2709         (powerpc*-*-linux-gnu*): Describe.
2710         * config/rs6000/ppc-asm.h (HIDDEN_FUNC): New macro.
2711         * config/rs6000/crtresfpr.asm, config/rs6000/crtresgpr.asm,
2712         config/rs6000/crtresxfpr.asm, config/rs6000/crtresxgpr.asm,
2713         config/rs6000/crtsavfpr.asm, config/rs6000/crtsavgpr.asm,
2714         config/rs6000/e500crtres32gpr.asm,
2715         config/rs6000/e500crtres64gpr.asm,
2716         config/rs6000/e500crtres64gprctr.asm,
2717         config/rs6000/e500crtrest32gpr.asm,
2718         config/rs6000/e500crtrest64gpr.asm,
2719         config/rs6000/e500crtresx32gpr.asm,
2720         config/rs6000/e500crtresx64gpr.asm,
2721         config/rs6000/e500crtsav32gpr.asm,
2722         config/rs6000/e500crtsav64gpr.asm,
2723         config/rs6000/e500crtsav64gprctr.asm,
2724         config/rs6000/e500crtsavg32gpr.asm,
2725         config/rs6000/e500crtsavg64gpr.asm,
2726         config/rs6000/e500crtsavg64gprctr.asm: Use it.
2727         * config/rs6000/crtsavres.asm: Really remove.
2728
2729 2008-10-13  Kai Tietz  <kai.tietz@onevision.com>
2730
2731         Fix PR/25502
2732         * c-format.c (convert_format_name_to_system_name): Use
2733         TARGET_OVERRIDES_FORMAT_INIT.
2734         * config.gcc (extra_options): Add for mingw targets mingw.opt.
2735         * config/i386/mingw.opt: New.
2736         * config/i386/mingw32.h (TARGET_OVERRIDES_FORMAT_INIT): New.
2737         * config/i386/msformat-c.c (TARGET_OVERRIDES_FORMAT_INIT): New.
2738         (ms_printf_length_specs): Removed const specifier.
2739         * doc/tm.texi (TARGET_OVERRIDES_FORMAT_INIT): New.
2740         * doc/invoke.texi (Wno-pedantic-ms-format): New.
2741
2742 2008-10-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2743
2744         * builtins.c: Remove MPFR_VERSION_NUM(2,3,0) conditionals.
2745         * doc/install.texi: Bump recommended MPFR to 2.3.2.
2746
2747 2008-10-12  Kenneth Zadeck <zadeck@naturalbridge.com>
2748
2749         PR middle-end/37808
2750         * df-scan.c (df_ref_change_reg_with_loc_1): Added test to make
2751         sure that ref has valid bb.
2752
2753 2008-10-12  Richard Henderson  <rth@redhat.com>
2754
2755         PR middle-end/37447
2756         * Makefile.in (reload1.o): Depend on EMIT_RTL_H.
2757         * alias.c (value_addr_p, stack_addr_p): Remove.
2758         (nonoverlapping_memrefs_p): Remove IRA special case.
2759         * emit-rtl.c (get_spill_slot_decl, set_mem_attrs_for_spill): New.
2760         * emit-rtl.h (set_mem_attrs_for_spill): Declare.
2761         * reload1.c (alter_reg): Use it.
2762
2763 2008-10-12  Uros Bizjak  <ubizjak@gmail.com>
2764
2765         * config/i386/driver-i386.c (detect_caches_cpuid2): Use array
2766         of registers instead of eax, ebx, ecx and edx.  Use for loop
2767         and check register for non-zero value before the call
2768         to decode_caches_intel.
2769
2770 2008-10-11  Kenneth Zadeck <zadeck@naturalbridge.com>
2771
2772         PR rtl-optimization/37448
2773         * df.h: (df_ref_class): New enum.
2774         (DF_REF_TYPE_NAMES, df_ref_extract): Removed.
2775         (struct df_ref): Replaced with union df_ref_d.
2776         (df_base_ref, df_artificial_ref, df_regular_ref, df_extract_ref):
2777         New members of df_ref_d union.
2778         (DF_REF_REAL_REG, DF_REF_REGNO, DF_REF_REAL_LOC, DF_REF_REG,
2779         DF_REF_LOC, DF_REF_BB, DF_REF_INSN_INFO, DF_REF_INSN,
2780         DF_REF_CLASS, DF_REF_TYPE, DF_REF_CHAIN, DF_REF_ID, DF_REF_FLAGS,
2781         DF_REF_ORDER, DF_REF_IS_ARTIFICIAL, DF_REF_NEXT_REG,
2782         DF_REF_PREV_REG, DF_REF_EXTRACT_WIDTH, DF_REF_EXTRACT_OFFSET,
2783         DF_REF_EXTRACT_MODE): Replaced definition to access union df_ref_d.
2784         (DF_MWS_REG_DEF_P, DF_MWS_REG_USE_P, DF_MWS_TYPE): New macros.
2785         (df_scan_bb_info, df_bb_regno_first_def_find,
2786         df_bb_regno_last_def_find, df_find_def, df_find_use,
2787         df_refs_chain_dump, df_regs_chain_dump, df_ref_debug,
2788         debug_df_ref, df_chain_create, df_chain_unlink, df_chain_copy,
2789         df_ref_create, df_ref_remove, df_compute_accessed_bytes,
2790         df_get_artificial_defs, df_get_artificial_uses, union_defs)
2791         Replaced struct df_ref * with df_ref.
2792         * df-scan.c (df_collection_rec, df_null_ref_rec,
2793         df_ref_chain_delete_du_chain, df_ref_chain_delete, df_install_ref,
2794         df_grow_ref_info, df_ref_create, df_reg_chain_unlink,
2795         df_ref_compress_rec, df_ref_remove, df_ref_chain_delete_du_chain,
2796         df_ref_chain_delete, df_free_collection_rec, df_insn_rescan,
2797         df_reorganize_refs_by_reg_by_reg,
2798         df_reorganize_refs_by_reg_by_insn, df_reorganize_refs_by_reg,
2799         df_ref_change_reg_with_loc_1, df_notes_rescan, df_swap_refs,
2800         df_sort_and_compress_refs, df_install_ref, df_install_refs,
2801         df_ref_record, df_get_conditional_uses, df_get_call_refs,
2802         df_bb_refs_record, df_exit_block_uses_collect,
2803         df_record_exit_block_uses, df_reg_chain_mark,
2804         df_reg_chain_verify_unmarked, df_refs_verify): Replaced struct
2805         df_ref * with df_ref.
2806         (df_ref_record, df_uses_record, df_ref_create_structure): Added
2807         df_ref_class parameter.
2808         (df_scan_problem_data): Added new pools for different types of refs.
2809         (df_scan_free_internal, df_scan_alloc, df_free_ref,
2810         df_ref_create_structure): Processed new ref pools.
2811         (df_scan_start_dump): Added counts of refs and insns.
2812         (df_ref_create, df_notes_rescan, df_def_record_1, df_uses_record,
2813         df_get_call_refs, df_insn_refs_collect, df_bb_refs_collect,
2814         df_entry_block_defs_collect, df_exit_block_uses_collect): Added
2815         code to pass df_ref_class down to ref creation functions.
2816         (df_reg_chain_unlink, df_ref_remove, df_ref_change_reg_with_loc_1,
2817         df_reg_chain_mark): Use macros to hide references to df_refs.
2818         (df_ref_chain_change_bb): Removed.
2819         (df_insn_change_bb): Remove calls to df_ref_insn_change_bb.
2820         (df_ref_equal_p, df_ref_compare, df_ref_create_structure):
2821         Enhanced to understand df_ref union structure.
2822         * fwprop.c (local_ref_killed_between_p, use_killed_between,
2823         all_uses_available_at, update_df, try_fwprop_subst,
2824         forward_propagate_subreg, forward_propagate_and_simplify,
2825         forward_propagate_into, fwprop, fwprop_addr): Replaced struct
2826         df_ref * with df_ref.
2827         (use_killed_between, all_uses_available_at): Use macros to hide
2828         references to df_refs.
2829         * regstat.c (regstat_bb_compute_ri,
2830         regstat_bb_compute_calls_crossed): Replaced struct df_ref * with
2831         df_ref.
2832         * see.c (see_handle_relevant_defs, see_handle_relevant_uses,
2833         see_handle_relevant_refs, see_analyze_one_def,
2834         see_update_relevancy, see_propagate_extensions_to_uses): Replaced
2835         struct df_ref * with df_ref.
2836         * ra-conflict.c (record_one_conflict, clear_reg_in_live,
2837         global_conflicts): Replaced struct df_ref * with df_ref.
2838         * ddg.c (create_ddg_dep_from_intra_loop_link,
2839         add_cross_iteration_register_deps, build_inter_loop_deps):
2840         Replaced struct df_ref * with df_ref.
2841         (create_ddg_dep_from_intra_loop_link,
2842         add_cross_iteration_register_deps): Use macros to hide references
2843         to df_refs.
2844         * auto-inc-dec.c (find_inc, merge_in_block): Replaced struct
2845         df_ref * with df_ref.
2846         * df-core.c (df_bb_regno_first_def_find,
2847         df_bb_regno_last_def_find, df_find_def, df_find_use,
2848         df_refs_chain_dump, df_regs_chain_dump, df_ref_debug,
2849         debug_df_ref): Replaced struct df_ref * with df_ref.
2850         (df_mws_dump, df_ref_debug): Use macros to hide references to df_refs.
2851         * cse.c (cse_extended_basic_block): Replaced struct df_ref * with
2852         df_ref.
2853         * web.c (union_defs, entry_register, replace_ref, web_main):
2854         Replaced struct df_ref * with df_ref.
2855         (union_defs, replace_ref): Use macros to hide references to df_refs.
2856         * global.c (compute_regs_asm_clobbered, build_insn_chain):
2857         Replaced struct df_ref * with df_ref.
2858         * ifcvt.c (dead_or_predicable): Replaced struct df_ref * with df_ref.
2859         * sel-sched-ir.c (maybe_downgrade_id_to_use, setup_id_reg_sets, ):
2860         Replaced struct df_ref * with df_ref.
2861         * ira-lives.c (mark_ref_live, def_conflicts_with_inputs_p,
2862         mark_ref_dead, process_bb_node_lives): Replaced struct df_ref *
2863         with df_ref.
2864         * local-alloc.c (block_alloc): Replaced struct df_ref * with df_ref.
2865         * df-byte-scan.c (df_compute_accessed_bytes_extract,
2866         df_compute_accessed_bytes_strict_low_part,
2867         df_compute_accessed_bytes_subreg, df_compute_accessed_bytes):
2868         Replaced struct df_ref * with df_ref.
2869         (df_compute_accessed_bytes): Use macros to hide references to df_refs.
2870         * init-regs.c (initialize_uninitialized_regs): Replaced struct
2871         df_ref * with df_ref.
2872         * loop-invariant.c (invariant_for_use, hash_invariant_expr_1,
2873         check_dependency, check_dependencies, record_uses): Replaced
2874         struct df_ref * with df_ref.
2875         (invariant_for_use, check_dependency): Use macros to hide
2876         references to df_refs.
2877         * loop-iv.c (iv_analysis_loop_init, iv_get_reaching_def,
2878         get_biv_step_1, get_biv_step, record_iv, iv_analyze_def,
2879         iv_analyze, biv_p): Replaced struct df_ref * with df_ref.
2880         (iv_analysis_loop_init, iv_get_reaching_def): Use macros to hide
2881         references to df_refs.
2882         * ira.c (compute_regs_asm_clobbered): Replaced struct df_ref *
2883         with df_ref.
2884         * combine.c (create_log_links): Replaced struct df_ref * with df_ref.
2885         * df-problems.c (df_rd_bb_local_compute_process_def,
2886         df_lr_bb_local_compute, df_live_bb_local_compute, df_chain_create,
2887         df_chain_unlink_1, df_chain_unlink, df_chain_copy,
2888         df_chain_remove_problem, df_chain_create_bb_process_use,
2889         df_chain_create_bb, df_chain_top_dump, df_chain_bottom_dump,
2890         df_byte_lr_check_regs, df_byte_lr_bb_local_compute,
2891         df_byte_lr_simulate_defs, df_byte_lr_simulate_uses,
2892         df_byte_lr_simulate_artificial_refs_at_top,
2893         df_byte_lr_simulate_artificial_refs_at_end, df_create_unused_note,
2894         df_note_bb_compute, df_note_add_problem, df_simulate_defs,
2895         df_simulate_uses, df_simulate_artificial_refs_at_end,
2896         df_simulate_artificial_refs_at_top): Replaced struct df_ref * with
2897         df_ref.
2898         (df_chain_dump): Use macros to hide references to df_refs.
2899         * config/mips/mips.c (r10k_simplify_address): Replaced struct
2900         df_ref * with df_ref.
2901         * dce.c (mark_nonreg_stores, delete_corresponding_reg_eq_notes,
2902         mark_artificial_uses, mark_reg_dependencies,
2903         byte_dce_process_block): Replaced struct df_ref * with df_ref.
2904
2905 2008-10-11  Eric Botcazou  <ebotcazou@adacore.com>
2906
2907         * tree.h (contains_packed_reference): Mention ARRAY_RANGE_REF in
2908         head comment.
2909         (array_ref_element_size): Likewise.
2910         (array_ref_low_bound): Likewise.
2911         (array_ref_up_bound): Likewise.
2912         * expr.c (contains_packed_reference): Likewise.
2913         (array_ref_element_size): Likewise.
2914         (array_ref_low_bound): Likewise.
2915         (array_ref_up_bound): Likewise.
2916         * tree-ssa-loop-ivopts.c (idx_contains_abnormal_ssa_name_p): Deal
2917         with ARRAY_RANGE_REF.
2918         (idx_find_step): Likewise.
2919         (idx_record_use): Likewise.
2920         (strip_offset_1): Likewise.
2921         (idx_remove_ssa_names): Likewise.
2922
2923 2008-10-11  Uros Bizjak  <ubizjak@gmail.com>
2924             Andi Kleen  <ak@linux.intel.com>
2925
2926         * config/i386/cpuid.h (__cpuid_count): New defines.
2927         * config/i386/driver-i386.c (struct cache_desc): New structure.
2928         (describe_cache): Use struct cache_desc to pass cache descriptions.
2929         (detect_l2_cache): Ditto. Rename from decode_l2_cache.
2930         (detect_caches_amd): Use struct cache_desc to describe caches.
2931         (decode_caches_intel): Use struct cache_desc to pass cache
2932         descriptions.  Update descriptions to match latest (rev -032,
2933         December 2007) CPUID documentation.  Do not check valid bit here.
2934         Check for Xeon MP value 0x49 problems.
2935         (detect_caches_cpuid2): New function, split from detect_caches_intel.
2936         Check valid bit before calling decode_caches_intel.  Detect number
2937         of times to repeat CPUID instruction.
2938         (detect_caches_cpuid4): New function.
2939         (detect_caches_intel): Depending on max_level, call
2940         detect_caches_cpuid2 or detect_caches_cpuid4.  Call detect_l2_cache
2941         only when other methods fail to provide valid L2 cache description.
2942
2943 2008-10-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2944
2945         PR middle-end/37608
2946         * pa.md (call, call_value): Generate an rtx for register r4 and pass
2947         it to PIC call patterns.
2948         (call_symref_pic): Revise pattern to expose PIC register save.  Remove
2949         code generation and attributes from pattern.  Change peephole2 to
2950         split for noreturn case.  Revise split pattern for non noreturn case.
2951         (call_symref_64bit, call_reg_pic, call_reg_64bit, call_val_symref_pic,
2952         call_val_symref_64bit, call_val_reg_pic, call_val_reg_64bit): Likewise.
2953         * pa.c (attr_length_call): Simplify extraction of call rtx.  Add some
2954         asserts.
2955
2956 2008-10-11  David Edelsohn  <edelsohn@gnu.org>
2957
2958         * config/rs6000/rs6000.md (aux_truncdfsf2): Remove TARGET_SINGLE_FLOAT.
2959         (addsf3, subsf3, mulsf3 ! TARGET_POWERPC): Remove TARGET_SINGLE_FLOAT
2960         and fp_type.
2961         (divdf3): Reformat long line.
2962
2963 2008-10-11  Michael J. Eager  <eager@eagercon.com>
2964
2965         * config/rs6000/rs6000.c (rs6000_parse_fpu_option): Interpret
2966         -mfpu options.
2967         (rs6000_handle_option): Process -mfpu options.
2968         * config/rs6000/rs6000.h: (TARGET_XILINX_FPU): New.
2969         (enum fpu_type_t): New.
2970         * config/rs6000/rs6000.md (attr fp_type): New.  Include xfpu.md.
2971         (addsf3, subsf3, mulsf3, adddf3, subdf3, muldf3, trunctfdf2): Set
2972         fp_type.
2973         (floatsisf2): Remove TARGET_SINGLE_FPU condition.
2974         (floatdidf2): Add TARGET_SINGLE_FPU condition.
2975         * config/rs6000/rs6000.opt (-mfpu): New.
2976         (-mxilinx-fpu): New.
2977         * config/rs6000/sysv4.h: (DRIVER_SELF_SPECS): New.
2978         * config/rs6000/xfpu.h: New. Define TARGET_XILINX_FPU.
2979         * config/rs6000/xfpu.md: New. Define Xilinx pipeline.
2980         * gcc/config.gcc: powerpc-xilinx-eabi target: New.
2981         * gcc/doc/invoke.texi (RS/6000 and PowerPC Options): Add -mfpu option.
2982
2983 2008-10-11  Jakub Jelinek  <jakub@redhat.com>
2984
2985         PR target/35760
2986         * config/rs6000/rs6000.c (rs6000_legitimize_address): Only create
2987         LO_SUM on Darwin if mode has just one unit.
2988
2989 2008-10-10  H.J. Lu  <hongjiu.lu@intel.com>
2990
2991         PR debug/37002
2992         * dwarf2out.c (mem_loc_descriptor): Use DRAP for vDRAP which
2993         has been optimized out.
2994
2995 2008-10-10  Richard Sandiford  <rdsandiford@googlemail.com>
2996
2997         * config/sh/sh.h (PREFERRED_RELOAD_CLASS): Test PIC_ADDR_P
2998         instead of PIC_DIRECT_ADDR_P.
2999         (SECONDARY_INPUT_RELOAD_CLASS): Likewise.
3000         (IS_LITERAL_OR_SYMBOLIC_S16_P, IS_LITERAL_OR_SYMBOLIC_U16_P): Delete.
3001         (IS_NON_EXPLICIT_CONSTANT_P): Don't test PIC_OFFSET_P.
3002         (PIC_OFFSET_P): Rename to...
3003         (PCREL_SYMOFF_P): ...this.
3004         (PIC_DIRECT_ADDR_P): Delete.
3005         (MOVI_SHORI_BASE_OPERAND_P): Check PCREL_SYMOFF_P instead of
3006         PIC_OFFSET_P.
3007         (OUTPUT_ADDR_CONST_EXTRA): Don't require unspecs to have a
3008         single argument.  Handle UNSPEC_EXTRACT_S16, UNSPEC_EXTRACT_U16,
3009         UNSPEC_SYMOFF and UNSPEC_PCREL_SYMOFF.
3010         * config/sh/sh.c (print_operand): Remove CONST handling.
3011         (unspec_caller_rtx_p): Rewrite to use split_const and check
3012         the operands of UNSPEC bases.
3013         (fixup_mova): Replace (unspec [(minus A B)] UNSPEC_PIC)
3014         with (unspec [A B] UNSPEC_SYMOFF).
3015         (nonpic_symbol_mentioned_p): Check for UNSPEC_SYMOFF and
3016         UNSPEC_PCREL_SYMOFF.
3017         (sh_secondary_reload): Test PIC_ADDR_P instead of PIC_DIRECT_ADDR_P.
3018         * config/sh/sh.md (UNSPEC_EXTRACT_S16): New unspec.
3019         (UNSPEC_EXTRACT_U16): Likewise.
3020         (UNSPEC_SYMOFF): Likewise.
3021         (UNSPEC_PCREL_SYMOFF): Likewise.
3022         (movsi_const): Use UNSPEC_EXTRACT_*16s to extract 16-bit portions
3023         of constants.
3024         (movsi_const_16bit): Likewise.
3025         (movdi_const, movdi_const_32bit, movdi_const_16bit): Likewise.
3026         (GOTaddr2picreg): Replace (unspec [(minus A (minus B pc))] UNSPEC_PIC)
3027         with (unspec [A B] UNSPEC_PCREL_SYMOFF).
3028         (sym_label2reg): Replace (minus (const (unspec [A] UNSPEC_PIC)) B)
3029         with (unspec [A B] UNSPEC_SYMOFF).
3030         (symPLT_label2reg): Replace (minus A (minus B pc)) with
3031          (unspec [A B] PCREL_UNSPEC_SYMOFF).
3032         * config/sh/constraints.md (Css): Check for an UNSPEC_EXTRACT_S16.
3033         (Csu): Likewise UNSPEC_EXTRACT_U16.
3034         (Csy): Test PIC_ADDR_P instead of PIC_DIRECT_ADDR_P.
3035         (Cpg): Update after changes to IS_NON_EXPLICIT_CONSTANT_P.
3036
3037 2008-10-10  Stepan Kasal  <skasal@redhat.com>
3038
3039         * gcc/doc/invoke.texi (Optimize Options): Fix typo in examples
3040         for loop strip mining and loop blocking.
3041
3042 2008-10-10  Alexandre Oliva  <aoliva@redhat.com>
3043
3044         * fortran/trans-types.c (gfc_get_nodesc_array_type): Don't
3045         vary types depending on debug info.
3046
3047 2008-10-10  Alexandre Oliva  <aoliva@redhat.com>
3048
3049         * c-gimplify.c (c_genericize): Don't refer to DECL_ASSEMBLER_NAME
3050         before ensuring it's already computed.
3051
3052 2008-10-09  Jakub Jelinek  <jakub@redhat.com>
3053
3054         * rtl.h (locator_eq): New decl.
3055         * cfglayout.c (locator_scope): New function.
3056         (insn_scope): Use it.
3057         (locator_eq): New function.
3058         (fixup_reorder_chain): Search for last insn in src bb
3059         that has locator set or first insn in dest bb.  Use
3060         locator_eq instead of == to compare locators.
3061         * cfgrtl.c (cfg_layout_merge_blocks): Likewise.
3062         * cfgcleanup.c (try_forward_edges): Use locator_eq instead of
3063         == to compare locators.
3064
3065         * tree-ssa-live.c (remove_unused_locals): Mark all edge's goto_block
3066         as used.
3067         * gimple-low.c (lower_function_body, lower_gimple_return,
3068         lower_builtin_setjmp): Set gimple_block on the newly created stmts.
3069         * tree-cfg.c (make_cond_expr_edges, make_goto_expr_edges): Only set
3070         goto_block on edges if goto_locus is known.
3071
3072         PR middle-end/37774
3073         * tree.h (get_object_alignment): Declare.
3074         * emit-rtl.c (set_mem_attributes_minus_bitpos): Call
3075         get_object_alignment if needed.
3076         * builtins.c (get_pointer_alignment): Move ADDR_EXPR operand
3077         handling to ...
3078         (get_object_alignment): ... here.  New function.  Try harder to
3079         determine alignment from get_inner_reference returned offset.
3080
3081 2008-10-08  Jakub Jelinek  <jakub@redhat.com>
3082
3083         * graphite.c (gloog): Don't call find_unreachable_blocks
3084         before delte_unreachable_blocks.
3085
3086         * cfgexpand.c (expand_gimple_cond): Convert also goto_block and
3087         goto_locus of true_edge into RTL locator.
3088
3089 2008-10-08  Uros Bizjak  <ubizjak@gmail.com>
3090
3091         * config/i386/i386.md (*jcc_btdi_rex64): Clobber FLAGS_REG.
3092         (*jcc_btdi_mask_rex64): Ditto.
3093         (*jcc_btsi): Ditto.
3094         (*jcc_btsi_mask): Ditto.
3095         (*jcc_btsi_1): Ditto.
3096         (*jcc_btsi_mask_1): Ditto.
3097
3098 2008-10-08  Paul Brook  <paul@codesourcery.com>
3099
3100         * config/arm/bpabi.h (ARM_FUNCTION_PROFILER): Define new EABI
3101         compatible profiler (__gnu_mcount_nc).
3102         (SUBTARGET_FRAME_POINTER_REQUIRED): Define.
3103
3104 2008-10-08  H.J. Lu  <hongjiu.lu@intel.com>
3105
3106         * config/i386/i386.c (initial_ix86_tune_features): Add
3107         X86_TUNE_USE_VECTOR_FP_CONVERTS.
3108         * config/i386/i386.h (ix86_tune_indices): Likewise.
3109         (TARGET_USE_VECTOR_FP_CONVERTS): New.
3110
3111         * config/i386/i386.md: Check TARGET_USE_VECTOR_FP_CONVERTS
3112         instead of (TARGET_USE_VECTOR_CONVERTS || TARGET_GENERIC)
3113         for FP to FP splitters.
3114
3115 2008-10-08  H.J. Lu  <hongjiu.lu@intel.com>
3116
3117         * config/i386/i386.md: Add missing gen_sse2_cvtdq2p to convert
3118         splitter.
3119
3120 2008-10-08  Jakub Jelinek  <jakub@redhat.com>
3121
3122         PR target/36635
3123         PR target/37290
3124         PR rtl-optimization/37341
3125         * cse.c (cse_cc_succs): Add ORIG_BB argument, don't follow edges
3126         to ORIG_BB, pass through ORIG_BB recursively.
3127         (cse_condition_code_reg): Adjust caller.
3128
3129 2008-10-08  Kai Tietz  <kai.tietz@onevision.com>
3130
3131         * sdbout.c (sdbout_one_type): Treat the value type
3132         CONST_DECL for enumerals.
3133
3134 2008-10-07  H.J. Lu  <hongjiu.lu@intel.com>
3135
3136         * config/i386/i386.md: Remove trailing white spaces.
3137
3138 2008-10-07  Kenneth Zadeck <zadeck@naturalbridge.com>
3139
3140         PR rtl-optimization/37448
3141         * alloc-pool.c (struct alloc_pool_descriptor) [elt_size]: New field.
3142         (stuct alloc_pool_descriptor) [created, allocated, current, peak]:
3143         Make unsigned long.
3144         (struct output_info) [count]: Renamed total_created and made
3145         unsigned long.
3146         (struct output_info) [size]: Renamed total_allocated and made
3147         unsigned long.
3148         (create_alloc_pool, empty_alloc_pool, pool_alloc, pool_free):
3149         Properly keep track of desc->size.
3150         (print_statistics, dump_alloc_pool_statistics): Enhance the
3151         printing of statistics to print the number of elements and to use
3152         unsigned longs.
3153
3154 2008-10-07  Jakub Jelinek  <jakub@redhat.com>
3155
3156         PR middle-end/37576
3157         * opts.h (CL_SAVE): Move up to flags range.
3158         (CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_TARGET,
3159         CL_COMMON): Renumber.
3160         (CL_MIN_OPTION_CLASS): Set to CL_PARAMS.
3161         * opts.c (common_handle_option): Revert last change.
3162
3163 2008-10-07  H.J. Lu  <hongjiu.lu@intel.com>
3164
3165         * config/i386/i386-protos.h (ix86_schedule): New.
3166
3167         * config/i386/i386.c (ix86_schedule): New.
3168         (override_options): Add schedule to processor_alias_table.  Set
3169         ix86_schedule from the schedule field in processor_alias_table.
3170         (ix86_function_specific_save): Save ix86_schedule.
3171         (ix86_function_specific_restore): Restore ix86_schedule.
3172
3173         * config/i386/i386.md (cpu): Map to ix86_schedule instead of
3174         ix86_tune.  Add none and remove i386, i486, pentium4, nocona
3175         and generic32.
3176
3177         * config/i386/i386.opt: Add schedule.
3178
3179         * config/i386/ppro.md: Remove generic32.
3180
3181 2008-10-07  Simon Martin  <simartin@users.sourceforge.net>
3182
3183         PR c/35437
3184         * expr.c (count_type_elements): Handle ERROR_MARK.
3185
3186 2008-10-07  Jakub Jelinek  <jakub@redhat.com>
3187
3188         PR debug/29609
3189         PR debug/36690
3190         PR debug/37616
3191         * basic-block.h (struct edge_def): Add goto_block field.
3192         * cfglayout.c (fixup_reorder_chain): Ensure that there is at least
3193         one insn with locus corresponding to edge's goto_locus if !optimize.
3194         * profile.c (branch_prob): Copy edge's goto_block.
3195         * cfgrtl.c (force_nonfallthru_and_redirect): Use goto_locus for
3196         emitted jumps.
3197         (cfg_layout_merge_blocks): Emit a nop with edge's goto_locus
3198         locator in between the merged basic blocks if !optimize and needed.
3199         * cfgexpand.c (expand_gimple_cond): Convert goto_block and
3200         goto_locus into RTL locator.  For unconditional jump use that
3201         locator for the jump insn.
3202         (expand_gimple_cond): Convert goto_block and goto_locus into
3203         RTL locator for all remaining edges.  For unconditional jump
3204         use that locator for the jump insn.
3205         * cfgcleanup.c (try_forward_edges): Avoid the optimization if
3206         there is more than one edge or insn locator along the forwarding
3207         edges and !optimize.  If there is just one, set e->goto_locus.
3208         * tree-cfg.c (make_cond_expr_edges, make_goto_expr_edges): Set also
3209         edge's goto_block.
3210         (move_block_to_fn): Adjust edge's goto_block.
3211
3212 2008-10-07  H.J. Lu  <hongjiu.lu@intel.com>
3213
3214         PR middle-end/37731
3215         * expmed.c (expand_mult): Properly check DImode constant in
3216         CONST_DOUBLE.
3217
3218 2008-10-07  Jakub Jelinek  <jakub@redhat.com>
3219
3220         PR debug/37738
3221         * dwarf2out.c (common_block_die_table): New variable.
3222         (common_block_die_table_hash, common_block_die_table_eq): New
3223         functions.
3224         (gen_variable_die): Look up a DW_TAG_common_block die for a particular
3225         COMMON block in the current scope rather than globally.  Optimize
3226         DW_OP_addr SYMBOL_REF DW_OP_plus_uconst off into
3227         DW_OP_addr SYMBOL_REF+off.
3228
3229 2008-10-07  Eric Botcazou  <ebotcazou@adacore.com>
3230
3231         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p) <VIEW_CONVERT_EXPR>:
3232         Return true for non-addressable GIMPLE operands.
3233
3234 2008-10-07  H.J. Lu  <hongjiu.lu@intel.com>
3235
3236         PR target/24765
3237         * config/i386/i386.c (initial_ix86_tune_features): Remove
3238         X86_TUNE_USE_BIT_TEST.
3239         * config/i386/i386.h (ix86_tune_indices): Likewise.
3240         (TARGET_USE_BIT_TEST): Removed.
3241
3242 2008-10-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
3243
3244         * config.gcc (arm*-*-*): Add aapcs-linux to supported ABIs.
3245
3246 2008-10-06  Adam Nemet  <anemet@caviumnetworks.com>
3247
3248         * config/mips/mips.md (mulsi3_mul3, muldi3_mul3): Merge these ...
3249         (mul<mode>3_mul3): ... into this new template.
3250
3251 2008-10-06  Aldy Hernandez  <aldyh@redhat.com>
3252
3253         * gimplify.c (gimplify_arg): Add location argument.  Use it.
3254         (gimplify_call_expr): Pass location to gimplify_arg.
3255         (gimplify_modify_expr_to_memcpy): Same.
3256         (gimplify_modify_expr_to_memset): Same.
3257
3258 2008-10-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3259
3260         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
3261         Update calls to build_unary_op and build_indirect_ref for location
3262         changes.
3263
3264 2008-10-06  Aldy Hernandez  <aldyh@redhat.com>
3265
3266         build_modify_expr.
3267         * c-decl.c (finish_decl): Pass input_location to build_unary_op.
3268         * c-typeck.c (array_to_pointer_conversion): Pass location to
3269         build_unary_op.
3270         (function_to_pointer_conversion): Use error_at and warning_at.
3271         (build_indirect_ref): Same.
3272         (build_array_ref): Pass location to build_binary_op.
3273         (parser_build_unary_op): Do not set location after calling
3274         build_unary_op.
3275         (build_unary_op): Add location argument.  Use it throughout.  Set
3276         EXPR_LOCATION before returning new tree.
3277         (build_modify_expr): Same.
3278         (build_binary_op): Use location throughout.  Set EXPR_LOCATION before
3279         returning node.
3280         * c-omp.c (c_finish_omp_atomic): Pass location to build_unary_op,
3281         build_indirect_ref, build_modify_expr.
3282         (c_finish_omp_for): Same.  Use error_at instead of error.
3283         * c-common.c (c_common_truthvalue_conversion): Pass location to
3284         build_unary_op.
3285         (warn_for_div_by_zero): Add location argument.
3286         * c-common.h: Add argument to build_modify_expr, build_indirect_ref,
3287         build_unary_op, warn_for_div_by_zero.
3288         * c-parser.c (c_parser_typeof_specifier): Use
3289         protected_set_expr_location.
3290         (c_parser_statement_after_labels): Same.
3291         (c_parser_condition): Same.
3292         (c_parser_expr_no_commas): Pass correct location to build_modify_expr.
3293         (c_parser_conditional_expression): Use protected_set_expr_location.
3294         (c_parser_unary_expression): Pass location to build_indirect_ref.
3295         (c_parser_postfix_expression_after_primary): Pass location to
3296         build_indirect_ref, build_unary_op.
3297         (c_parser_omp_for_loop): Set the increment expression's EXPR_LOCATION.
3298
3299 2008-10-06  Joshua Kinard  <kumba@gentoo.org>
3300
3301         * doc/invoke.texi: List r1x000 family under the -march MIPS option.
3302         * config/mips/mips.h (PROCESSOR_R10000): New processor_type.
3303         * config/mips/mips.c (mips_cpu_info_table): Add r10000, r12000,
3304         r14000 and r16000.
3305         (mips_rtx_cost_data): Add a PROCESSOR_R10000 entry.
3306         (mips_issue_rate): Handle PROCESSOR_R10000.
3307         * config/mips/mips.md (cpu): Add r10000.
3308         Include r10000.md.
3309         * config/mips/10000.md: New file.
3310
3311 2008-10-06  Richard Sandiford  <rdsandiford@googlemail.com>
3312
3313         * config/rs6000/rs6000-protos.h (rs6000_find_base_term): Declare.
3314         * config/rs6000/rs6000.h (FIND_BASE_TERM): New macro.
3315         * config/rs6000/rs6000.c (rs6000_find_base_term): New function.
3316
3317 2008-10-06  Richard Sandiford  <rdsandiford@googlemail.com>
3318
3319         * config/darwin-protos.h (machopic_function_base_name): Delete.
3320         (machopic_function_base_sym): Likewise.
3321         (machopic_gen_offset): Declare.
3322         * config/darwin.h (MACHOPIC_FUNCTION_BASE_NAME): New macro.
3323         (ASM_OUTPUT_LABELREF): Use it instead of a hard-coded string constant.
3324         * config/darwin.c (machopic_function_base_name): Delete.
3325         (machopic_function_base_sym): Likewise.
3326         (gen_pic_offset): Rename to...
3327         (machopic_gen_offset): ...this and remove the pic_base argument.
3328         Instead use MACHO_DYNAMIC_NO_PIC_P to decide whether a PIC offset
3329         is needed.  Create an UNSPEC_MACHOPIC_OFFSET if so, and set
3330         crtl->uses_pic_offset_table.
3331         (machopic_indirect_data_reference): Use new machopic_gen_offset
3332         interface.
3333         (machopic_legitimize_pic_address): Likewise.
3334         (machopic_operand_p): Check for UNSPEC_MACHOPIC_OFFSET.
3335
3336         * config/i386/darwin.h (GOT_SYMBOL_NAME): Use
3337         MACHOPIC_FUNCTION_BASE_NAME instead of machopic_function_base_name.
3338         * config/i386/i386.c (output_set_got): Likewise.
3339         (darwin_local_data_pic): Check for an UNSPEC_MACHOPIC_OFFSET
3340         instead of a MINUS.
3341         (legitimate_pic_operand_p): Handle UNSPEC_MACHOPIC_OFFSET.
3342         (legitimate_address_p): Likewise.
3343         (output_pic_addr_const): Likewise.
3344         (output_addr_const_extra): Likewise.
3345         (ix86_delegitimize_address): Expect darwin_local_data_pic to
3346         match an UNSPEC rather than a MINUS.
3347         * config/i386/i386.md (UNSPEC_MACHOPIC_OFFSET): Define.
3348         (builtin_setjmp_receiver): Use machopic_gen_offset.
3349         * config/i386/predicates.md (pic_symbolic_operand): Handle
3350         UNSPEC_MACHOPIC_OFFSET.
3351
3352         * config/rs6000/rs6000.c (rs6000_legitimize_reload_address):
3353         Use machopic_gen_offset and machopic_operand_p.
3354         (rs6000_output_addr_const_extra): Handle UNSPEC_MACHOPIC_OFFSET.
3355         (rs6000_emit_prologue): Use MACHOPIC_FUNCTION_BASE_NAME.
3356         * config/rs6000/rs6000.md (UNSPEC_MACHOPIC_OFFSET): Define.
3357         (builtin_setjmp_receiver): Use MACHOPIC_FUNCTION_BASE_NAME.
3358         Set crtl->uses_pic_offset_table.
3359
3360 2008-10-06  Richard Sandiford  <rdsandiford@googlemail.com>
3361
3362         * config/rs6000/rs6000-protos.h (rs6000_output_addr_const_extra):
3363         Declare.
3364         * config/rs6000/rs6000.h (OUTPUT_ADDR_CONST_EXTRA): New macro.
3365         * config/rs6000/rs6000.md (UNSPEC_TOCREL): New constant.
3366         * config/rs6000/rs6000.c (constant_pool_expr_1): Delete.
3367         (constant_pool_expr_p): Use split_const and check the base.
3368         (toc_relative_expr_p): Likewise, checking for an UNSPEC_TOCREL
3369         instead of a MINUS.
3370         (legitimate_constant_pool_address_p): Check toc_relative_p
3371         instead of constant_pool_expr_p.
3372         (print_operand_address): Always use output_addr_const for
3373         constant pool addresses.
3374         (rs6000_output_addr_const_extra): New function.
3375         (create_TOC_reference): Create an UNSPEC_TOCREL instead of a MINUS.
3376
3377 2008-10-06  Vladimir Makarov  <vmakarov@redhat.com>
3378
3379         PR middle-end/37535
3380
3381         * ira-lives.c (mark_reg_live, mark_reg_dead): New functions.
3382         (mark_ref_live, mark_ref_dead): Use them.
3383         (def_conflicts_with_inputs_p): Remove.
3384         (mark_early_clobbers): New function.
3385         (process_bb_node_lives): Call preprocess_constraints and
3386         mark_early_clobbers.
3387
3388         * doc/rtx.texi (clobber): Change how RA deals with clobbers.
3389
3390 2008-10-06  Danny Smith  <dannysmith@users.sourceforge.net>
3391
3392         * config/i386/mingw32.h (REAL_LIBGCC_SPEC): Add thread cleanup
3393         lib with -mthread switch.
3394
3395 2008-10-05  Dodji Seketeli  <dodji@redhat.com>
3396
3397         PR c++/37410
3398         * dwarf2out.c (dwarf2out_imported_module_or_decl): Split this
3399         function in two, making it call a new and reusable
3400         dwarf2out_imported_module_or_decl() that takes the containing
3401         BLOCK of the declaration in argument.
3402         (dwarf2out_imported_module_or_decl_real): New function.
3403         (decls_for_scope, gen_decl_die, dwarf2out_decl): Take
3404         IMPORTED_DECL in account.
3405         * tree.def: Added IMPORTED_DECL node type.
3406         * tree.h: Added accessors for IMPORTED_DECL nodes.
3407         * tree.c (init_ttree): Initialise IMPORTED_DECL node type.
3408
3409 2008-10-05  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
3410
3411         * doc/gimple.texi: Fix some typos, wrap some long lines,
3412         fix some broken wraps with continuations.
3413         * tree-ssa-reassoc.c: Fix comment typos.
3414
3415 2000-10-04  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3416
3417         PR target/37603
3418         * pa.c (legitimize_pic_address): Force function labels to memory in
3419         word mode.
3420
3421 2008-10-04  Anton Blanchard  <anton@samba.org>
3422
3423         * config/rs6000/rs6000.c (rs6000_emit_sync): Use gen_lwsync().
3424         (rs6000_split_atomic_op): Same.
3425         (rs6000_split_compare_and_swap): Same.
3426         (rs6000_split_compare_and_swapqhi): Same.
3427
3428 2008-10-04  Richard Guenther  <rguenther@suse.de>
3429
3430         * tree-ssa-sccvn.c (vn_reference_op_eq): Use types_compatible_p
3431         instead of pointer equality.
3432         (vn_nary_op_eq): Likewise.
3433
3434 2008-10-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3435
3436         * config/rs6000/rs6000.md (fseldfsf4): Add TARGET_SINGLE_FLOAT
3437         condition.
3438         (fselsfdf4): Make condition on "TARGET_HARD_FLOAT && TARGET_FPRS &&
3439         TARGET_DOUBLE_FLOAT && TARGET_SINGLE_FLOAT".
3440
3441 2008-10-03  Danny Smith  <dannysmith@users.sourceforge.net>
3442
3443         * config/i386/winnt.c (i386_pe_strip_name_encoding_full):
3444         Revert previous change.
3445
3446 2008-10-03  Tom Tromey  <tromey@redhat.com>
3447
3448         * stringpool.c (ggc_alloc_string): Terminate string.
3449
3450 2008-10-03  Jakub Jelinek  <jakub@redhat.com>
3451
3452         * gimplify.c (gimplify_function_tree): For -finstrument-functions
3453         use gimple_bind_{,set_}block instead of gimple_{,set_}block.
3454         * gimple.h (gimple_bind_set_block): Allow second argument to be NULL.
3455
3456         PR debug/37726
3457         * gimplify.c (declare_vars): Use gimple_bind_block instead of
3458         gimple_block.
3459
3460 2008-10-03  Pascal Obry  <obry@adacore.com>
3461
3462         * gcov.c (create_file_names): Properly handle UNIX and DOS
3463         directory separators.
3464         (make_gcov_file_name): Likewise + convert the ':' DOS drive
3465         separator to '~' to ensure clean filenames on Windows.
3466
3467 2008-10-02  Danny Smith  <dannysmith@users.sourceforge.net>
3468
3469         * config/i386/winnt.c (i386_pe_strip_name_encoding_full):
3470         Add a null terminator to the stripped name.
3471
3472 2008-10-02  David Edelsohn  <edelsohn@gnu.org>
3473
3474         * config/rs6000/rs6000.c (USE_FP_FOR_ARG_P): Revert
3475         TARGET_DOUBLE_FLOAT, TARGET_SINGLE_FLOAT.
3476         (function_arg_advance): Condition on TARGET_DOUBLE_FLOAT,
3477         TARGET_SINGLE_FLOAT.  Revert SCALAR_FLOAT_MODE_P condition.
3478         (function_arg): Condition on TARGET_DOUBLE_FLOAT, TARGET_SINGLE_FLOAT.
3479         (rs6000_function_value): Revert TARGET_DOUBLE_FLOAT,
3480         TARGET_SINGLE_FLOAT.
3481
3482 2008-10-02  Daniel Jacobowitz  <dan@codesourcery.com>
3483
3484         * builtins.c (fold_builtin_pow): Check for 0 ** NEGATIVE.
3485
3486 2008-10-02  Richard Guenther  <rguenther@suse.de>
3487
3488         PR middle-end/37713
3489         * tree-ssa.c (useless_type_conversion_p_1): For COMPLEX_TYPE
3490         and VECTOR_TYPE recurse with useless_type_conversion_p which
3491         properly handles void pointer conversion.
3492
3493 2008-10-02  Danny Smith  <dannysmith@users.sourceforge.net>
3494
3495         PR target/37528
3496         * config/i386/mingw32.h (LIBGCC_SPEC) : Replace with ..
3497         (REAL_LIBGCC_SPEC): New.  Always include -lgcc.
3498
3499 2008-10-01  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3500
3501         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
3502         Handle ALTIVEC_BUILTIN_VEC_SPLATS, ALTIVEC_BUILTIN_VEC_PROMOTE,
3503         ALTIVEC_BUILTIN_VEC_EXTRACT, and ALTIVEC_BUILTIN_VEC_INSERT specially,
3504         they translate to non builtins.
3505         * config/rs6000/rs6000.c (altivec_init_builtins): Add new variable
3506         opaque_ftype_opaque.  Define builtins __builtin_vec_splats,
3507         __builtin_vec_promote, __builtin_vec_extract, and
3508         __builtin_vec_insert.
3509         * config/rs6000/rs6000.h (enum rs6000_builtins): Add
3510         ALTIVEC_BUILTIN_VEC_EXTRACT, ALTIVEC_BUILTIN_VEC_PROMOTE,
3511         ALTIVEC_BUILTIN_VEC_INSERT, and ALTIVEC_BUILTIN_VEC_SPLATS.
3512         * config/rs6000/altivec.h (vec_extract): Define
3513         (vec_insert): Define.
3514         (vec_splats): Define.
3515         (vec_promote): Define.
3516
3517 2008-10-01  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3518             Yukishige Shibata  <shibata@rd.scei.sony.co.jp>
3519             Trevor Smigiel  <Trevor_Smigiel@playstation.sony.com>
3520
3521         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add Cell
3522         Altivec intrinsics.
3523         * config/rs6000/rs6000.c (altivec_expand_lv_builtin): Delete
3524         prototype.  Add new parameter, blk.
3525         Use BLKmode for the MEM if blk is true.
3526         (altivec_expand_builtin): Handle ALTIVEC_BUILTIN_STVLX,
3527         ALTIVEC_BUILTIN_STVLXL, ALTIVEC_BUILTIN_STVRX, and
3528         ALTIVEC_BUILTIN_STVRXL.
3529         Update usage of altivec_expand_lv_builtin.
3530         Handle ALTIVEC_BUILTIN_LVLX, ALTIVEC_BUILTIN_LVLXL,
3531         ALTIVEC_BUILTIN_LVRX, and ALTIVEC_BUILTIN_LVRXL.
3532         (altivec_init_builtins): If compiling for the Cell, also define the
3533         cell VMX builtins.
3534         * config/rs6000/rs6000.h (rs6000_builtins): Define
3535         ALTIVEC_BUILTIN_LVLX, ALTIVEC_BUILTIN_LVLXL, ALTIVEC_BUILTIN_LVRX,
3536         ALTIVEC_BUILTIN_LVRXL, ALTIVEC_BUILTIN_STVLX, ALTIVEC_BUILTIN_STVLXL,
3537         ALTIVEC_BUILTIN_STVRX, ALTIVEC_BUILTIN_STVRXL,
3538         ALTIVEC_BUILTIN_VEC_LVLX, ALTIVEC_BUILTIN_VEC_LVLXL,
3539         ALTIVEC_BUILTIN_VEC_LVRX, ALTIVEC_BUILTIN_VEC_LVRXL,
3540         ALTIVEC_BUILTIN_VEC_STVLX, ALTIVEC_BUILTIN_VEC_STVLXL,
3541         ALTIVEC_BUILTIN_VEC_STVRX, and ALTIVEC_BUILTIN_VEC_STVRXL.
3542         * config/rs6000/altivec.md (define_constants): Define UNSPEC_LVLX,
3543         UNSPEC_LVLXL, UNSPEC_LVRX, UNSPEC_LVRXL, UNSPEC_STVLX, UNSPEC_STVLXL,
3544         UNSPEC_STVRX, and UNSPEC_STVRXL.
3545         (altivec_lvlx): New pattern.
3546         (altivec_lvlxl): New pattern.
3547         (altivec_lvrx): New pattern.
3548         (altivec_lvrxl): New pattern.
3549         (altivec_stvlx): New pattern.
3550         (altivec_stvlxl): New pattern.
3551         (altivec_stvrx): New pattern.
3552         (altivec_stvrxl): New pattern.
3553         * config/rs6000/altivec.h (vec_lvlx): Define if PPU is defined.
3554         (vec_lvlxl): Likewise.
3555         (vec_lvrx): Define if PPU is defined.
3556         (vec_lvrxl): Likewise.
3557         (vec_stvlx): Define if PPU is defined.
3558         (vec_stvlxl): Likewise.
3559         (vec_stvrx): Define if PPU is defined.
3560         (vec_stvrxl): Likewise.
3561
3562 2008-10-01  Geert Bosch  <bosch@adacore.com>
3563
3564         * tree.c (contains_placeholder_p): Return 0 for a SAVE_EXPR.
3565
3566 2008-10-01  Richard Guenther  <rguenther@suse.de>
3567
3568         PR tree-optimization/37617
3569         * tree-ssa-pre.c (create_expression_by_pieces): During FRE
3570         do not add to the NEW_SETS.
3571
3572 2008-10-01  Richard Guenther  <rguenther@suse.de>
3573
3574         PR middle-end/37285
3575         * tree-vrp.c (execute_vrp): If we optimized away the default
3576         case make sure to promote the label that got in place of it
3577         to a default case label.
3578
3579 2008-10-01  Richard Henderson  <rth@redhat.com>
3580
3581         PR tree-opt/35737
3582         * tree-complex.c (set_component_ssa_name): Don't optimize
3583         is_gimple_min_invariant values with ssa_names in abnormal phis.
3584
3585 2008-09-30  Paolo Bonzini  <bonzini@gnu.org>
3586
3587         PR tree-optimization/37662
3588         * tree-ssa-ccp.c (fold_gimple_assign): Invert the operands of a
3589         commutative binary operation if they are in the wrong order and
3590         fold_build2 produces non-GIMPLE.
3591
3592 2008-09-30  Jakub Jelinek  <jakub@redhat.com>
3593
3594         PR tree-optimization/37662
3595         PR tree-optimization/37663
3596         * tree-vrp.c (simplify_truth_ops_using_ranges): Don't call
3597         get_value_range with non-SSA_NAME.  Don't assert operands have been
3598         folded, instead just bail out.
3599
3600 2008-09-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3601
3602         * config/rs6000/rs6000.md (fnmadds combiner): Revert typo.
3603
3604 2008-09-30  Richard Guenther  <rguenther@suse.de>
3605
3606         PR middle-end/37491
3607         * tree-vect-transform.c (vect_create_data_ref_ptr): Properly
3608         build restrict-qualified pointers.
3609         (vectorizable_store): Move alias check later.
3610         (vectorizable_load): Likewise.
3611
3612 2008-09-30  Paolo Bonzini  <bonzini@gnu.org>
3613
3614         * c-common.c (empty_if_body_warning): Remove.
3615         * c-common.h (empty_if_body_warning): Remove.
3616         * c-parser.c (c_parser_if_body, c_parser_else_body): Implement
3617         here the -Wempty-body warning for `if' and `else' statements.
3618         * c-typeck.c (c_finish_if_stmt): Do not call empty_body_warning.
3619
3620 2008-09-29  H.J. Lu  <hongjiu.lu@intel.com>
3621
3622         * config/i386/i386.opt: Add msse2avx.
3623
3624         * config/i386/linux.h (ASM_SPEC): New.  Support -msse2avx.
3625         * config/i386/linux64.h (ASM_SPEC): Likewise.
3626
3627         * doc/invoke.texi: Document -msse2avx.
3628
3629 2008-09-29  Eric Botcazou  <ebotcazou@adacore.com>
3630
3631         * dwarf2out.c (constant_size): Use HOST_WIDE_INT in parameter type.
3632
3633 2008-09-29  Joseph Myers  <joseph@codesourcery.com>
3634
3635         * ifcvt.c (noce_emit_store_flag): If using condition from original
3636         jump, reverse it if if_info->cond was reversed.
3637
3638 2008-09-29  Eric Botcazou  <ebotcazou@adacore.com>
3639
3640         * expr.c (expand_expr_real_1) <normal_inner_ref>: Force op0 to
3641         non-constant memory if it cannot be forced to constant memory.
3642         Overhaul surrounding code and factor out common condition.
3643
3644 2008-09-29  Jeff Law <law@redhat.com>
3645
3646         * reload1.c (alter_reg): Add missing curly braces.
3647
3648 2008-09-29  Michael J. Eager  <eager@eagercon.com>
3649
3650         * config/rs6000/predicates.md (easy_fp_constant): Single FP consts
3651         are easy.
3652         * config/rs6000/rs6000.c (rs6000_override_options): Move
3653         rs6000_init_hard_regno_mode_ok after all options changed.
3654         Set rs6000_single_float, rs6000_double_float if TARGET_HARD_FLOAT.
3655         (rs6000_handle_option): Process -msingle-float, -mdouble-float,
3656         -msimple-fpu flags.  Add warning messages if single FP not configured.
3657         (rs6000_file_start): Output gnu_attribute for single-float.
3658         (legitimate_lo_sum_address_p): Condition on TARGET_DOUBLE_FLOAT.
3659         (rs6000_legitimize_address): Likewise.
3660         (rs6000_legitimize_reload_address): Likewise.
3661         (rs6000_emit_move): Condition on TARGET_DOUBLE_FLOAT,
3662         TARGET_SINGLE_FLOAT.
3663         (function_arg_advance): Likewise (partial conversion).
3664         (setup_incoming_varargs): Condition on TARGET_DOUBLE_FLOAT.
3665         (rs6000_gimplify_va_arg): Condition on TARGET_DOUBLE_FLOAT,
3666         TARGET_SINGLE_FLOAT.
3667         (rs6000_split_multireg_move): Condition on TARGET_DOUBLE_FLOAT.
3668         (rs6000_emit_prologue): Likewise.
3669         (rs6000_function_value): Condition on TARGET_DOUBLE_FLOAT,
3670         TARGET_SINGLE_FLOAT.
3671         (rs6000_libcall_value): Likewise.
3672         * config/rs6000/rs6000.h (TARGET_SINGLE_FLOAT): New default to 1.
3673         (TARGET_DOUBLE_FLOAT): New default to 1
3674         (TARGET_SIMPLE_FPU): New default to 0
3675         (TARGET_SINGLE_FPU): New default to 0
3676         (TARGET_SINGLE_FLOAT_MODE): New.
3677         (TARGET_DOUBLE_FLOAT_MODE): New.
3678         * config/rs6000/singlefp.h: New; redefine TARGET_SINGLE_FLOAT,
3679         TARGET_DOUBLE_FLOAT, TARGET_SIMPLE_FPU, TARGET_SINGLE_FPU,
3680         UNITS_PER_FP_WORD
3681         * config/rs6000/rs6000.md (define_mode_iterator): Condition on
3682         TARGET_DOUBLE_FLOAT, TARGET_SINGLE_FLOAT.
3683         (extendsfdf2, extendsfdf2_fpr, truncdfsf2, truncdfsf2_fpr,
3684         copysigndf3,fseldfsf4, negdf2, negdf2_fpr, absdf2, absdf2_fpr,
3685         nabsdf2_fpr, adddf3, adddf3_fpr, subdf3, subdf3_fpr, muldf3,
3686         muldf3_fpr, divdf3, divdf3_fpr, sqrtdf2, smaxdf3, smindf3,
3687         movdfcc, *fseldfdf4, floatsidf2, *floatsidf2_internal,
3688         floatunssidf2, *floatunssidf2_internal, fix_truncdfsi2,
3689         *fix_truncdfsi2_internal, fix_truncdfsi2_internal_gfxopt,
3690         fix_truncdfsi2_mfpgpr, fctiwz, btruncdf2, ceildf2, floordf2,
3691         rounddf2, floatdidf2, floatsidf_ppc64_mfpgpr, floatsidf_ppc64,
3692         floatunssidf_ppc64, fix_truncdfdi2, movdf_hardfloat32,
3693         movdf_hardfloat64_mfpgpr, movdf_hardfloat64, extenddftf2_fprs,
3694         extenddftf2_internal, trunctfdf2_internal2, fix_trunc_helper,
3695         abstf2_internal, movdf_update1, movdf_update2, cmpdf_internal1,
3696         cmptf_internal1, *cmptf_internal2): Condition on
3697         TARGET_DOUBLE_FLOAT.
3698         (aux_truncdfsf2, negsf2, *negsf2, abssf2, *abssf2, addsf3, subsf3,
3699         mulsf3, divsf3, sqrtsf2, copysignsf3, smaxsf3, sminsf3, movsfcc,
3700         *fselsfsf4, fixuns_truncsfsi2, fix_truncsfsi2, floatunssisf2,
3701         btruncsf2, ceilsf2, floorsf2, roundsf2, floatdisf2_internal1,
3702         floatdisf2_internal2, *movsf_hardfloat, trunctfsf2_fprs,
3703         *movsf_update1, *movsf_update2, *cmpsf_internal1): Condition on
3704         TARGET_SINGLE_FLOAT.
3705         (divsf3, sqrtsf2, divdf3, divdf3_fpr): Condition on TARGET_SIMPLE_FPU.
3706         * config/rs6000/rs6000.opt (-msingle-float): New.
3707         (-mdouble-float): New.
3708         (-msimple-fpu): New.
3709         * doc/invoke.texi (RS/6000 and PowerPC Options): Add
3710         -msingle-float, -mdouble-float, -msimple-fpu options.
3711         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Set
3712         _SOFT_DOUBLE for -msingle-float.
3713         * config.gcc: New config for target=powerpc-xilinx-eabi.
3714
3715 2008-09-29  Tobias Grosser  <grosser@fim.uni-passau.de>
3716
3717         * graphite.c (dot_all_scops_1): Remove unused checks. SCoPs always
3718         have exit and entry.
3719         (new_scop): Take entry and exit edge to define new SCoP.
3720         (sd_region_p): New structure used during SCoP detection.
3721         (move_scops): Delete.
3722         (move_sd_regions): New.
3723         (scopdet_info): Change the definition from edges back to basic_blocks.
3724         (scopdet_edge_info):  Work on basic_blocks and rename to
3725         scopdet_basic_block_info.
3726         (split_difficult_bb): At the moment removed. We should later
3727         add it at another place.
3728         (build_scops_1): Work on basic_blocks.
3729         (bb_in_sd_region): New.
3730         (find_single_entry_edge): New.
3731         (find_single_exit_edge): New.
3732         (create_single_entry_edge): New.
3733         (sd_region_without_exit): New.
3734         (create_single_exit_edge): New.
3735         (unmark_exit_edges): New.
3736         (mark_exit_edges): New.
3737         (create_sese_edges): New.
3738         (build_graphite_scops): New.
3739         (build_scops): Make SCoPs SESE.
3740         (limit_scops): Use the new functions.
3741
3742 2008-09-29  Hans-Peter Nilsson  <hp@axis.com>
3743
3744         * config/cris/cris.h (IRA_COVER_CLASSES): Define.
3745
3746 2008-09-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3747
3748         PR target/37640
3749         * config/rs6000/rs6000.c (rs6000_expand_compare_and_swapqhi): Force
3750         address to a register before taking the lower part.
3751
3752 2008-09-28  Kaz Kojima  <kkojima@gcc.gnu.org>
3753
3754         * config/sh/sh.h (OVERRIDE_OPTIONS): Unset flag_dwarf2_cfi_asm
3755         for SHmedia.
3756
3757 2008-09-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3758             Kaushal Kantawala  <kaushal_kantawala@playstation.sony.com>
3759
3760         PR tree-opt/36891
3761         * tree-ssa-loop-im.c (rewrite_reciprocal): Set DECL_GIMPLE_REG_P on
3762         the newly created variable.
3763         Create a VECTOR_CST of all 1s for vector types.
3764
3765 2008-09-28  Eric Botcazou  <ebotcazou@adacore.com>
3766
3767         PR middle-end/36575
3768         * fold-const.c (div_and_round_double) <ROUND_DIV_EXPR>: Fix typo.
3769
3770 2008-09-28  Eric Botcazou  <ebotcazou@adacore.com>
3771
3772         * expmed.c (store_fixed_bit_field): Always use convert_to_mode in
3773         order to convert between modes.
3774         (extract_bit_field_1): Test TRULY_NOOP_TRUNCATION on the right mode.
3775
3776 2008-09-27  Kaz Kojima  <kkojima@gcc.gnu.org>
3777
3778         * config/sh/sh.c (sh_gimplify_va_arg_expr): Use VIEW_CONVERT_EXPR
3779         if needed.
3780
3781 2008-09-26  Vladimir Makarov  <vmakarov@redhat.com>
3782
3783         Revert:
3784         2008-09-25  Vladimir Makarov  <vmakarov@redhat.com>
3785         * ira-lives.c:...
3786         * doc/rtl.texi:...
3787
3788 2008-09-26  Adam Nemet  <anemet@caviumnetworks.com>
3789
3790         * config/mips/mips.h (ISA_HAS_DMUL3, ISA_HAS_BADDU, ISA_HAS_BBIT,
3791         ISA_HAS_CINS, ISA_HAS_EXTS, ISA_HAS_SEQ_SNE, ISA_HAS_POP): Change
3792         them to yield false with MIPS16.
3793
3794 2008-09-26  Jakub Jelinek  <jakub@redhat.com>
3795
3796         PR middle-end/37275
3797         * dwarf2out.c (tls_mem_loc_descriptor): New function.
3798         (mem_loc_descriptor): Use it for MEM.  For PLUS fail if second
3799         mem_loc_descriptor failed.  Accept UNSPEC.
3800         (loc_descriptor): Use tls_mem_loc_descriptor for MEM.  For PARALLEL
3801         fail if one of the loc_descriptor calls for pieces failed.
3802         (loc_descriptor_from_tree_1): Handle even DECL_EXTERNAL __thread vars,
3803         as long as they bind locally.  For COMPONENT_REF, ARRAY_REF etc. fail
3804         if loc_descriptor_from_tree_1 on offset failed.
3805
3806         PR middle-end/37576
3807         * opts.c (common_handle_option): Don't call print_specific_help with
3808         CL_SAVE as first argument.
3809
3810 2008-09-26  Peter O'Gorman  <pogma@thewrittenword.com>
3811             Steve Ellcey  <sje@cup.hp.com>
3812
3813         * configure: Regenerate for new libtool.
3814         * aclocal.m4: Ditto.
3815
3816 2008-09-26  Pat Haugen  <pthaugen@us.ibm.com>
3817
3818         * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Use correct
3819         alias set on MEM when saving stack pointer.
3820         * config/rs6000/rs6000.md (allocate_stack): Likewise
3821
3822 2008-09-26  Dorit Nuzman  <dorit@il.ibm.com>
3823
3824         PR tree-optimization/37574
3825         * tree-vectorizer.c (vect_is_simple_use): Fix indentation.
3826         * tree-vect-transform.c (vect_get_constant_vectors): Use vectype
3827         instead of vector_type for constants. Take computation out of loop.
3828         (vect_get_vec_def_for_operand): Use only vectype for constant case,
3829         and use only vector_type for invariant case.
3830         (get_initial_def_for_reduction): Use vectype instead of vector_type.
3831
3832 2008-09-25  Jakub Jelinek  <jakub@redhat.com>
3833
3834         PR c/37645
3835         * c-common.c (handle_weakref_attribute): Ignore the attribute unless
3836         the decl is a VAR_DECL or FUNCTION_DECL.
3837
3838 2008-09-25  Vladimir Makarov  <vmakarov@redhat.com>
3839
3840         PR middle-end/37535
3841         * ira-lives.c (mark_reg_live, mark_reg_dead): New functions.
3842         (mark_ref_live, mark_ref_dead): Use them.
3843         (def_conflicts_with_inputs_p): Remove.
3844         (mark_early_clobbers): New function.
3845         (process_bb_node_lives): Call preprocess_constraints and
3846         mark_early_clobbers.
3847
3848         * doc/rtl.texi (clobber): Change how RA deals with clobbers.
3849
3850 2008-09-25  Vladimir Makarov  <vmakarov@redhat.com>
3851
3852         PR middle-end/37448
3853         * ira-int.h (IRA_ALLOCNO_TEMP): Rename to ALLOCNO_TEMP.
3854         (ira_compress_allocno_live_ranges): New prototype.
3855
3856         * ira-color.c: Rename IRA_ALLOCNO_TEMP to ALLOCNO_TEMP.
3857         (coalesced_allocnos_living_at_program_points): New.
3858         (coalesced_allocnos_live_at_points_p,
3859         set_coalesced_allocnos_live_points): New functions.
3860         (coalesce_spill_slots): Rewrite.
3861
3862         * ira-lives.c (remove_some_program_points_and_update_live_ranges,
3863         ira_compress_allocno_live_ranges): New functions.
3864
3865         * ira-build.c (ira_flattening): Call
3866         ira_compress_allocno_live_ranges.
3867         (ira_build): Ditto.
3868
3869 2008-09-25  H.J. Lu  <hongjiu.lu@intel.com>
3870
3871         * config/i386/i386.md: Check cmp/branch fuse for cmp peephole
3872         optimization.
3873
3874 2008-09-25  Richard Sandiford  <rdsandiford@googlemail.com>
3875
3876         * combine.c (make_compound_operation): Handle the 'E' format.
3877         (count_rtxs): Likewise.
3878         (update_table_tick): Likewise.
3879         (get_last_value_validate): Likewise.
3880
3881 2008-09-25  Eric Botcazou  <ebotcazou@adacore.com>
3882
3883         * dbxout.c (dbxout_parms): Fetch the inner REG inside a PARALLEL.
3884
3885 2008-09-25 Sergei Dyshel <sergeid@il.ibm.com>
3886
3887         * matrix-reorg.c (transform_allocation_sites): Initializers
3888         added to avoid the warning.
3889
3890 2008-09-25  Martin Jambor  <mjambor@suse.cz>
3891
3892         * cgraph.c (free_nodes): New variable.
3893         (NEXT_FREE_NODE): New macro.
3894         (cgraph_create_node): Reuse nodes from the free list.  Do not
3895         update uid if doing so.
3896         (cgraph_remove_node): Add the node to the free list.
3897
3898 2008-09-25  Gerald Pfeifer  <gerald@pfeifer.com>
3899
3900         * config/freebsd.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define.
3901
3902 2008-09-24  Richard Henderson  <rth@redhat.com>
3903
3904         * dwarf2.h (DW_OP_GNU_encoded_addr): New.
3905         * unwind-dw2.c (execute_stack_op): Handle it.
3906
3907 2008-09-24  David Edelsohn  <edelsohn@gnu.org>
3908
3909         Revert:
3910         2008-09-24  Michael J. Eager  <eager@eagercon.com>
3911
3912 2008-09-24  Aldy Hernandez  <aldyh@redhat.com>
3913
3914         * c-common.c (fname_decl): New location argument.
3915         * c-common.h (fname_decl): Same.
3916         * c-parser.c (c_lex_one_token): Use {warning,error}_at instead of
3917         {warning,error}.
3918         (c_parser_typeof_specifier): Same.
3919         (c_parser_parms_list_declarator): Same.
3920         (c_parser_asm_string_literal): Same.
3921         (c_parser_compound_statement_nostart): Same.
3922         (c_parser_label): Same.
3923         (c_parser_do_statement): Same.
3924         (c_parser_asm_statement): Same.
3925         (c_parser_unary_expression): Same.
3926         (c_parser_sizeof_expression): Same.
3927         (c_parser_postfix_expression): Same.
3928         (c_parser_pragma): Same.
3929         (c_parser_omp_clause_collapse): Same.
3930         (c_parser_omp_clause_num_threads): Same.
3931         (c_parser_omp_clause_schedule): Same.
3932         (c_parser_omp_all_clauses): Same.
3933         (c_parser_omp_sections_scope): Same.
3934         (c_parser_omp_for_loop): Same.  Pass condition's location to
3935         c_objc_common_truthvalue_conversion.
3936         (c_parser_enum_specifier): Remove comment.
3937
3938 2008-09-24  Michael J. Eager  <eager@eagercon.com>
3939
3940         * config/rs6000/predicates.md (easy_fp_constant): Single FP consts
3941         are easy.
3942         * config/rs6000/rs6000.c (rs6000_override_options): Move
3943         rs6000_init_hard_regno_mode_ok after all options changed.
3944         Set rs6000_single_float, rs6000_double_float if TARGET_HARD_FLOAT.
3945         (rs6000_handle_option): Process -msingle-float, -mdouble-float,
3946         -msimple-fpu flags.  Add warning messages if single FP not configured.
3947         (rs6000_file_start): Output gnu_attribute for single-float.
3948         (legitimate_lo_sum_address_p): Condition on TARGET_DOUBLE_FLOAT.
3949         (rs6000_legitimize_address): Likewise.
3950         (rs6000_legitimize_reload_address): Likewise.
3951         (rs6000_emit_move): Condition on TARGET_DOUBLE_FLOAT,
3952         TARGET_SINGLE_FLOAT.
3953         (function_arg_advance): Likewise.
3954         (function_arg): Likewise.
3955         (setup_incoming_varargs): Condition on TARGET_DOUBLE_FLOAT.
3956         (rs6000_gimplify_va_arg): Condition on TARGET_DOUBLE_FLOAT,
3957         TARGET_SINGLE_FLOAT.
3958         (rs6000_split_multireg_move): Condition on TARGET_DOUBLE_FLOAT.
3959         (rs6000_emit_prologue): Likewise.
3960         (rs6000_function_value): Condition on TARGET_DOUBLE_FLOAT,
3961         TARGET_SINGLE_FLOAT.
3962         (rs6000_libcall_value): Likewise.
3963         * config/rs6000/rs6000.h (TARGET_SINGLE_FLOAT): New default to 1.
3964         (TARGET_DOUBLE_FLOAT): New default to 1
3965         (TARGET_SIMPLE_FPU): New default to 0
3966         (TARGET_SINGLE_FPU): New default to 0
3967         (TARGET_SINGLE_FLOAT_MODE): New.
3968         (TARGET_DOUBLE_FLOAT_MODE): New.
3969         * config/rs6000/singlefp.h: New; redefine TARGET_SINGLE_FLOAT,
3970         TARGET_DOUBLE_FLOAT, TARGET_SIMPLE_FPU, TARGET_SINGLE_FPU,
3971         UNITS_PER_FP_WORD
3972         * config/rs6000/rs6000.md (define_mode_iterator): Condition on
3973         TARGET_DOUBLE_FLOAT, TARGET_SINGLE_FLOAT.
3974         (extendsfdf2, extendsfdf2_fpr, truncdfsf2, truncdfsf2_fpr,
3975         copysigndf3,fseldfsf4, negdf2, negdf2_fpr, absdf2, absdf2_fpr,
3976         nabsdf2_fpr, adddf3, adddf3_fpr, subdf3, subdf3_fpr, muldf3,
3977         muldf3_fpr, divdf3, divdf3_fpr, sqrtdf2, smaxdf3, smindf3,
3978         movdfcc, *fseldfdf4, floatsidf2, *floatsidf2_internal,
3979         floatunssidf2, *floatunssidf2_internal, fix_truncdfsi2,
3980         *fix_truncdfsi2_internal, fix_truncdfsi2_internal_gfxopt,
3981         fix_truncdfsi2_mfpgpr, fctiwz, btruncdf2, ceildf2, floordf2,
3982         rounddf2, floatdidf2, floatsidf_ppc64_mfpgpr, floatsidf_ppc64,
3983         floatunssidf_ppc64, fix_truncdfdi2, movdf_hardfloat32,
3984         movdf_hardfloat64_mfpgpr, movdf_hardfloat64, extenddftf2_fprs,
3985         extenddftf2_internal, trunctfdf2_internal2, fix_trunc_helper,
3986         abstf2_internal, movdf_update1, movdf_update2, cmpdf_internal1,
3987         cmptf_internal1, *cmptf_internal2): Condition on
3988         TARGET_DOUBLE_FLOAT.
3989         (aux_truncdfsf2, negsf2, *negsf2, abssf2, *abssf2, addsf3, subsf3,
3990         mulsf3, divsf3, sqrtsf2, copysignsf3, smaxsf3, sminsf3, movsfcc,
3991         *fselsfsf4, fixuns_truncsfsi2, fix_truncsfsi2, floatunssisf2,
3992         btruncsf2, ceilsf2, floorsf2, roundsf2, floatdisf2_internal1,
3993         floatdisf2_internal2, *movsf_hardfloat, trunctfsf2_fprs,
3994         *movsf_update1, *movsf_update2, *cmpsf_internal1): Condition on
3995         TARGET_SINGLE_FLOAT.
3996         (divsf3, sqrtsf2, divdf3, divdf3_fpr): Condition on TARGET_SIMPLE_FPU.
3997         * config/rs6000/rs6000.opt (-msingle-float): New.
3998         (-mdouble-float): New.
3999         (-msimple-fpu): New.
4000         * doc/invoke.texi (RS/6000 and PowerPC Options): Add
4001         -msingle-float, -mdouble-float, -msimple-fpu options.
4002         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Set
4003         _SOFT_DOUBLE for -msingle-float.
4004         * config.gcc: New config for target=powerpc-xilinx-eabi.
4005
4006 2008-09-23  Eric Botcazou  <ebotcazou@adacore.com>
4007
4008         * config/sparc/constraints.md: New file.
4009         * config/sparc/sparc.md: Include it.
4010         * config/sparc/sparc-protos.h (memory_ok_for_ldd): Declare.
4011         (sparc_extra_constraint_check): Delete.
4012         * config/sparc/sparc.c (register_ok_for_ldd): Minor tweaks.
4013         (memory_ok_for_ldd): New predicate.
4014         (sparc_extra_constraint_check): Delete.
4015         * config/sparc/sparc.h (REG_CLASS_FROM_LETTER): Likewise.
4016         (CONST_OK_FOR_LETTER_P): Likewise.
4017         (CONST_DOUBLE_OK_FOR_LETTER_P): Likewise.
4018         (EXTRA_CONSTRAINT): Likewise.
4019
4020 2008-08-23  Steve Ellcey  <sje@cup.hp.com>
4021
4022         * regrename.c (do_replace): Copy REG_POINTER value to new reg.
4023
4024 2008-09-23  Richard Sandiford  <rdsandiford@googlemail.com>
4025
4026         * alias.c (find_base_value): Use FIND_BASE_TERM.
4027         * doc/tm.texi (FIND_BASE_TERM): Update documentation.
4028
4029 2008-09-23  Richard Sandiford  <rdsandiford@googlemail.com>
4030
4031         * config/i386/i386.c: Include cselib.h.
4032         (ix86_pic_register_p): New function.
4033         (ix86_delegitimize_address): Use it to check for the PIC register.
4034
4035 2008-09-23  Richard Sandiford  <rdsandiford@googlemail.com>
4036
4037         * doc/tm.texi (FIND_BASE_TERM): Expand documentation.
4038         * config/i386/i386.c (ix86_find_base_term): Don't check for
4039         SYMBOL_REF and LABEL_REF.
4040
4041 2008-09-23  Richard Sandiford  <rdsandiford@googlemail.com>
4042
4043         * config/i386/i386.c (ix86_delegitimize_address): Wrap the
4044         constant PLUS in a CONST.
4045
4046 2008-09-23  Kai Tietz  <kai.tietz@onevision.com>
4047
4048         * config/i386/i386.c (ix86_function_ok_for_sibcall): Correct
4049         check for sibcall support for w64.
4050
4051 2008-09-23  Eric Botcazou  <ebotcazou@adacore.com>
4052
4053         * c-ppoutput.c (cb_used_define): Do nothing for a builtin node.
4054
4055 2008-09-23  Aldy Hernandez  <aldyh@redhat.com>
4056
4057         * c-tree.h: Add argument to c_objc_common_truthvalue_conversion,
4058         parser_build_binary_op.
4059         * c-decl.c (build_enumerator): Pass location to build_binary_op.
4060         * c-typeck.c (build_array_ref): Same.
4061         (parser_build_unary_op): New location argument.
4062         (pointer_diff): Pass location to build_binary_op,
4063         c_objc_common_truthvalue_conversion.
4064         (build_modify_expr): Same.
4065         (build_unary_op): New location argument.
4066         (build_binary_op): New location argument.
4067         (c_objc_common_truthvalue_conversion): Pass location to
4068         c_*common_truthvalue_conversion.
4069         * c-convert.c (convert): Same.
4070         * c-common.c (binary_op_error): New location argument.
4071         (pointer_int_sum): Pass location to build_binary_op.
4072         (c_common_truthvalue_conversion): New location argument.
4073         (warn_for_sign_compare): Same.
4074         * c-common.h: Add location argument to c_common_truthvalue_conversion,
4075         binary_op_error, build_binary_op, warn_for_sign_compare.
4076         * c-parser.c (c_parser_condition): Pass location to
4077         c_*common_truthvalue_conversion.
4078         (c_parser_conditional_expression): Save condition's location and pass
4079         it on down.
4080         (c_parser_binary_expression): Same, but for the binary operator's
4081         location.
4082         (c_parser_omp_for_loop): Pass location to
4083         c_objc_common_truthvalue_conversion.
4084
4085 2008-09-23  Martin Jambor  <mjambor@suse.cz>
4086
4087         * cgraph.c (cgraph_free_edge): Use sizeof(*e).
4088         (cgraph_node_remove_callees): New temporary f.  Hold the next item
4089         in f when looping.
4090         (cgraph_node_remove_callers): Likewise.
4091
4092         * ipa-prop.c (ipa_edge_removal_hook): Use ATTRIBUTE_UNUSED.
4093         (ipa_node_removal_hook): Likewise.
4094
4095         * doc/gimple.texi (gimple_copy_call_skip_args): Changed to
4096         gimple_call_copy_skip_args and moved to the gimple_call section.
4097         * gimple.c (gimple_copy_call_skip_args): Renamed to
4098         gimple_call_copy_skip_args.  Changed al users.
4099
4100 2008-09-22  Vladimir Makarov  <vmakarov@redhat.com>
4101
4102         * ira-color.c (start_allocno_priorities): Rename to
4103         setup_allocno_priorities.  Use costs and
4104         ALLOCNO_EXCESS_PRESSURE_POINTS_NUM instead of frequencies and
4105         range lengths.  Get rid off doubles.
4106         (ira_fast_allocations): Call start_allocno_priorities.
4107
4108 2008-09-22  David Daney  <ddaney@avtrex.com>
4109
4110         PR target/37593
4111         * config/mips/mips.h (FUNCTION_PROFILER): Call _mcount via a
4112         register if TARGET_LONG_CALLS.
4113
4114 2008-09-22  Richard Guenther  <rguenther@suse.de>
4115
4116         PR tree-optimization/37145
4117         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Re-enable
4118         value-numbering union accesses with their offset and size only.
4119         (visit_reference_op_load): Fix simplification of inserted conversions.
4120         * tree-ssa-pre.c (find_or_generate_expression): Do not
4121         recursively generate expressions if running FRE.
4122
4123 2008-09-22  Adam Nemet  <anemet@caviumnetworks.com>
4124
4125         * config/mips/mips.h (ISA_HAS_BADDU): New macro.
4126         * config/mips/mips.md (*baddu_si_eb, *baddu_si_el, *baddu_di<mode>):
4127         New patterns.
4128
4129 2008-09-22  Richard Guenther  <rguenther@suse.de>
4130
4131         PR tree-optimization/37145
4132         * tree-ssa-pre.c (fully_constant_expression): Simplify builtin calls.
4133         (phi_translate_1): Constant fold references.
4134
4135 2008-09-22  Ira Rosen  <irar@il.ibm.com>
4136
4137         PR tree-optimization/37482
4138         * tree-vectorizer.h (struct _slp_instance): Add new field.
4139         (SLP_INSTANCE_FIRST_LOAD_STMT): New.
4140         (get_earlier_stmt): New function.
4141         * tree-vect-analyze.c (vect_find_first_load_in_slp_instance): New
4142         function.
4143         (vect_analyze_slp_instance): Set SLP_INSTANCE_FIRST_LOAD_STMT.
4144         * tree-vect-transform.c (vect_finish_stmt_generation): Remove the
4145         asserts that GSI points to the scalar statement being vectorized.
4146         Set new statement location according to GSI.
4147         (vect_schedule_slp_instance): Use GSI of
4148         SLP_INSTANCE_FIRST_LOAD_STMT when vectorizing loads.
4149
4150 2008-09-21  Jan Hubicka  <jh@suse.cz>
4151
4152         * ipa-cp.c (ipcp_estimate_growth): Check recursive calls.
4153         (ipcp_insert_stage): Update dead_nodes bitmap.
4154
4155 2008-09-22  Danny Smith  <dannysmith@users.sourceforge.net>
4156
4157         PR target/37528
4158         * config/i386/t-cygming (SHLIB_LC): Remove.
4159         (SHLIB_LINK): Don't add static objects to SHLIB_IMPLIB
4160         * config/i386/t-cygwin (SHLIB_LC): Specify all required libraries.
4161
4162 2008-09-22  Hans-Peter Nilsson  <hp@axis.com>
4163
4164         PR middle-end/37170
4165         PR middle-end/37280
4166         * final.c (mark_symbol_ref_as_used): New helper function.
4167         (output_operand): Instead of just looking inside MEMs for
4168         SYMBOL_REFs, use new helper function and for_each_rtx.
4169         * varasm.c (assemble_external): Move #ifndef ASM_OUTPUT_EXTERNAL
4170         to after weak-handling.  Don't mark decls with TREE_STATIC as weak.
4171         Make head comment more general.
4172         * config/darwin.c (machopic_output_indirection): Handle weak
4173         references here, like in assemble_external.
4174
4175 2008-09-21  Eric Botcazou  <ebotcazou@adacore.com>
4176
4177         * config/sparc/sparc-protos.h (gen_compare_operator): Declare.
4178         (sparc_emit_float_lib_cmp): Change return type.
4179         * config/sparc/sparc.c (gen_compare_reg): Add comment about TFmode.
4180         (gen_compare_operator): New function.
4181         (sparc_emit_float_lib_cmp): Return the new operator to be used in
4182         the comparison sequence.  Minor tweaks.
4183         * config/sparc/sparc.md (seq, sne, sgt, slt, sge, sle): Assert
4184         that the final operator and the result of sparc_emit_float_lib_cmp
4185         match for software TFmode; use emit_insn in lieu of emit_jump_insn.
4186         (beq, bne, bgt, blt, bge, ble, bunordered, bordered, bungt, bunlt,
4187         buneq, bunge, bunle, bltgt): Assert that the final operator and the
4188         result of sparc_emit_float_lib_cmp match for software TFmode.
4189         (movqicc, movhicc, movsicc, movdicc): Merge into...
4190         (mov<I:mode>cc): ...this.
4191         (movsfcc, movdfcc, movtfcc): Merge into...
4192         (mov<F:mode>cc): ...this.
4193         (movqi_cc_sp64, movhi_cc_sp64, movsi_cc_sp64, movdi_cc_sp64): Merge
4194         into...
4195         (mov<I:mode>_cc_v9): ...this.
4196         (movdi_cc_sp64_trunc): Delete.
4197         (movqi_cc_reg_sp64, movhi_cc_reg_sp64, movsi_cc_reg_sp64,
4198         movdi_cc_reg_sp64): Merge into...
4199         (mov<I:mode>_cc_reg_sp64): ...this.
4200         (movsf_cc_sp64): Rename into...
4201         (movsf_cc_v9): ...this.
4202         (movdf_cc_sp64): Rename into...
4203         (movdf_cc_v9): ...this.
4204         (movtf_cc_hq_sp64): Rename into...
4205         (movtf_cc_hq_v9): ...this.
4206         (movtf_cc_sp64): Rename into...
4207         (movtf_cc_v9): ...this.  Adjust for renaming of movdf_cc_sp64.
4208
4209 2008-09-21  Diego Novillo  <dnovillo@google.com>
4210
4211         * doc/gccint.texi: Include generic.texi and gimple.texi.
4212         Re-order index.
4213         * doc/tree-ssa.texi (GENERIC): Move to generic.texi.
4214         (GIMPLE): Move to gimple.texi.
4215         (Annotations): Remove references to to stmt_ann_t and
4216         ssa_name_ann_t.
4217         (SSA Operands): Rename from 'Statement Operands'.
4218         * doc/generic.texi: New.
4219         * doc/gimple.texi: New.
4220         * Makefile.in (TEXI_GCCINT_FILES): Add generic.texi and gimple.texi.
4221         * Makefile.in (TEXI_GCCINT_FILES):
4222         * gimple.c (gimple_copy_call_skip_args): Rename from
4223         giple_copy_call_skip_args.  Update all users.
4224         * doc/gimple.texi (gimple_copy_call_skip_args): Document.
4225
4226 2008-09-21  Ira Rosen  <irar@il.ibm.com>
4227
4228         PR tree-optimization/37539
4229         * tree-vect-transform.c (vect_transform_strided_load): Save vector
4230         statement in related statement field only for the first load of the
4231         group of loads with the same data reference.
4232
4233 2008-09-20  Adam Nemet  <anemet@caviumnetworks.com>
4234
4235         * config/mips/mips.h (TUNE_OCTEON): New macro.
4236         * config/mips/mips.c (mips_issue_rate): Return 2 for Octeon.
4237         (mips_multipass_dfa_lookahead): Return 2 for Octeon.
4238         * config/mips/octeon.md: New file.
4239         * config/mips/mips.md: Include octeon.md.  Restore
4240         semi-alphabetical order of include files.
4241
4242 2008-09-20  H.J. Lu  <hongjiu.lu@intel.com>
4243
4244         PR target/37571
4245         * config/i386/i386.md (*jcc_fused_1): Removed.
4246         (*jcc_fused_2): Likewise.
4247         (*jcc_fused_3): Likewise.
4248         (*jcc_fused_4): Likewise.
4249
4250 2008-09-20  Richard Sandiford  <rdsandiford@googlemail.com>
4251
4252         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Define.
4253         (IRA_COVER_CLASSES): Refer to TARGET_IRA_COVER_CLASSES.
4254         * target.h (gcc_target): Add ira_cover_classes.
4255         * ira.c: Remove IRA_COVER_CLASSES guards.
4256         (setup_cover_and_important_classes): Use targetm.ira_cover_classes
4257         instead of IRA_COVER_CLASSES.
4258         (setup_cover_and_important_classes): Remove IRA_COVER_CLASSES guard.
4259         (setup_class_translate): Likewise.
4260         (setup_reg_class_intersect_union): Likewise.
4261         (find_reg_class_closure): Replace IRA_COVER_CLASSES guard with a
4262         test of targetm.ira_cover_classes.
4263         * opts.c (decode_options): Use targetm.ira_cover_classes instead
4264         of IRA_COVER_CLASSES.
4265         * target-def.h (TARGET_IRA_COVER_CLASSES): Define.
4266         (TARGET_INITIALIZER): Include it.
4267         * targhooks.h (default_ira_cover_classes): Declare.
4268         * targhooks.c (default_ira_cover_classes): New function.
4269
4270 2008-09-19  Bob Wilson  <bob.wilson@acm.org>
4271
4272         * config/xtensa/xtensa.md (reload<mode>_literal): Handle MEM operands.
4273
4274 2008-09-19  Ian Lance Taylor  <iant@google.com>
4275
4276         * varasm.c (narrowing_initializer_constant_valid_p): Return
4277         NULL_TREE if ENDTYPE is not an integer.
4278
4279 2008-09-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4280
4281         PR tree-opt/30930
4282         * tree-ssa.c (execute_update_addresses_taken): Also update
4283         DECL_GIMPLE_REG_P for vector and complex types.
4284
4285 2008-09-19  Andrew MacLeod  <amacleod@redhat.com>
4286             Jan Hubicka  <jh@suse.cz>
4287
4288         PR middle-end/37567
4289         * tree-ssa-ter.c (free_temp_expr_table): Make sure fields are actually
4290         empty before freeing them.
4291         (find_replaceable_exprs): Move asserts to free_temp_expr_table.
4292
4293 2008-09-18  Bob Wilson  <bob.wilson@acm.org>
4294
4295         * configure.ac: Add HAVE_AS_TLS check for Xtensa.
4296         * config/xtensa/predicates.md (tls_symbol_operand): New.
4297         * config/xtensa/xtensa.c (TARGET_HAVE_TLS): Define.
4298         (TARGET_CANNOT_FORCE_MEM): Define.
4299         (xtensa_tls_symbol_p): New.
4300         (xtensa_emit_move_sequence): Check for and legitimize TLS addresses.
4301         (xtensa_legitimate_address_p): Disallow constant pool TLS references.
4302         (xtensa_tls_module_base): New.
4303         (xtensa_call_tls_desc): New.
4304         (xtensa_legitimize_tls_address): New.
4305         (xtensa_legitimize_address): Handle TLS symbols.
4306         (xtensa_tls_referenced_p_1): New.
4307         (xtensa_tls_referenced_p): New.
4308         (xtensa_output_addr_const_extra): Handle UNSPEC_TPOFF and
4309         UNSPEC_DTPOFF.
4310         (XTENSA_BUILTIN_THREAD_POINTER): New.
4311         (XTENSA_BUILTIN_SET_THREAD_POINTER): New.
4312         (xtensa_init_builtins): Set NOTHROW and READONLY for umulsidi3
4313         builtin.  Add declarations for __builtin_thread_pointer and
4314         __builtin_set_thread_pointer.
4315         (xtensa_fold_builtin): Recognize new builtins.
4316         (xtensa_expand_builtin): Expand new builtins.
4317         * config/xtensa/xtensa.h (XCHAL_HAVE_THREADPTR): Define default value.
4318         (TARGET_THREADPTR): Define.
4319         (HAVE_AS_TLS): Define default value.
4320         (LEGITIMATE_CONSTANT_P): Disallow TLS references.
4321         * config/xtensa/xtensa.md (UNSPEC_TPOFF, UNSPEC_DTPOFF): New.
4322         (UNSPEC_TLS_FUNC, UNSPEC_TLS_ARG, UNSPEC_TLS_CALL, UNSPEC_TP): New.
4323         (UNSPECV_SET_TP): New.
4324         (sym_TPOFF, sym_DTPOFF): New.
4325         (load_tp, set_tp, tls_func, tls_arg, tls_call): New.
4326         * config/xtensa/xtensa-protos.h (xtensa_tls_referenced_p): Declare.
4327         * configure: Regenerated.
4328
4329 2008-09-18  H.J. Lu  <hongjiu.lu@intel.com>
4330
4331         PR target/37394
4332         * config/ia64/ia64.c (ia64_optimization_options): Move
4333         checking and setting flag_schedule_insns_after_reload and
4334         ia64_flag_schedule_insns2 back to ...
4335         (ia64_override_options): Here.
4336
4337 2008-09-18  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4338
4339         PR rtl-opt/37451
4340         * loop-doloop.c (doloop_modify): New argument zero_extend_p and
4341         zero extend count after the correction to it is done.
4342         (doloop_optimize): Update call to doloop_modify, don't zero extend
4343         count before call.
4344
4345 2008-09-18  Martin Jambor  <mjambor@suse.cz>
4346
4347         * ipa-cp.c (ipcp_estimate_growth): Return 0 instead of false.
4348
4349         * ipa-prop.c: Correct comments.
4350         * ipa-prop.h: Likewise.
4351
4352 2008-09-18  Jan Hubicka  <jh@suse.cz>
4353
4354         PR middle-end/37448
4355         * ipa-reference.c (ipa_reference_local_vars_info_d,
4356         ipa_reference_global_vars_info_d,
4357         ipa_reference_local_vars_info_t, ipa_reference_global_vars_info_t,
4358         ipa_reference_vars_info_t): Move here from ipa-reference.h
4359         (node_duplication_hook_holder, node_removal_hook_holder): New.
4360         (get_reference_vars_info_from_cgraph): Rename to ...
4361         (get_reference_vars_info): ... this one, use cgraph uids.
4362         (get_local_reference_vars_info, get_global_reference_vars_info):
4363         Use cgraph instead of decl.
4364         (ipa_reference_get_read_local, ipa_reference_get_written_local):
4365         Remove.
4366         (ipa_reference_get_read_global, ipa_reference_get_not_read_global
4367         ipa_reference_get_written_global,
4368         ipa_reference_get_not_written_global): Use cgraph argument.
4369         (check_call): Simplify avail check.
4370         (scan_stmt_for_static_refs): Update.
4371         (propagate_bits): Update.
4372         (merge_callee_local_info): Remove.
4373         (init_function_info): Use cgraph nodes.
4374         (clean_function_local_data): Break out from ...
4375         (clean_function): ... here.
4376         (copy_local_bitmap, copy_global_bitmap): New functions.
4377         (duplicate_node_data, remove_node_data): New functions.
4378         (generate_summary): Register hooks; use visibility instead of
4379         master clones.
4380         (propafate): Use cgraph nodes; copy bitmap to each node in cycle.
4381         * ipa-reference.h (ipa_reference_local_vars_info_d,
4382         ipa_reference_global_vars_info_d,
4383         ipa_reference_local_vars_info_t, ipa_reference_global_vars_info_t,
4384         ipa_reference_vars_info_t): Move to ipa-reference.c
4385         (ipa_reference_get_read_local, ipa_reference_get_written_local):
4386         Remove.
4387         (ipa_reference_get_read_global, ipa_reference_get_written_global,
4388         ipa_reference_get_not_read_global,
4389         ipa_reference_get_not_written_global): Update prototype.
4390         * ipa-pure-const.c (funct_state_vec): Turn into VECtor.
4391         (init_state): Remove.
4392         (node_duplication_hook_holder, node_removal_hook_holder): New.
4393         (get_function_state, set_function_state): Use VECtor.
4394         (analyze_function): Check body availability.
4395         (add_new_function): Likewise.
4396         (duplicate_node_data, remove_node_data): New.
4397         (generate_summary): Register hooks; do not care about clones.
4398         (propafate): Do not care about clones; recursive functions are
4399         not looping.
4400         * ipa-utils.c (searchc, ipa_utils_reduced_inorder): Do not skip clones.
4401         * ipa-prop.c (edge_removal_hook_holder, node_removal_hook_holder,
4402         * edge_duplication_hook_holder, node_duplication_hook_holder): Make
4403         static.
4404         * tree-flow.h (function_ann_d): Remove reference_vars_info.
4405         * tree-ssa-opreands.c (add_call_clobber_ops, add_call_read_ops):
4406         Update call of ipa-reference accesors.
4407
4408 2008-09-18  Simon Baldwin  <simonb@google.com>
4409
4410         * c-opts.c (c_common_handle_option): Add handling for
4411         -Wbuiltin-macro-redefined command line option.
4412         * c.opt: Added builtin-macro-redefined option.
4413         * doc/invoke.texi (Warning Options): Add -Wbuiltin-macro-redefined
4414         documentation.
4415
4416 2008-09-18  Richard Guenther  <rguenther@suse.de>
4417
4418         PR tree-optimization/37258
4419         * tree-ssa-sccvn.c (vn_phi_compute_hash): Include the precision
4420         and signedness for integral types.
4421         (vn_phi_eq): Require compatible types.
4422
4423 2008-09-18  Jakub Jelinek  <jakub@redhat.com>
4424
4425         PR debug/34037
4426         * gimplify.c (gimplify_type_sizes): When not optimizing, ensure
4427         TYPE_MIN_VALUE and TYPE_MAX_VALUE is not is not DECL_IGNORED_P
4428         VAR_DECL.
4429         * cfgexpand.c (expand_used_vars): Keep DECL_ARTIFICIAL
4430         !DECL_IGNORED_P vars in local_decls list for instantiate_decls,
4431         ggc_free other TREE_LIST nodes from that chain.
4432         * function.c (instantiate_decls): Instantiate also DECL_RTL
4433         of vars in cfun->local_decls, free that list afterwards.
4434
4435 2008-09-18  Eric Botcazou  <ebotcazou@adacore.com>
4436
4437         * config/sparc/sol2.h (WIDEST_HARDWARE_FP_SIZE): Move to...
4438         * config/sparc/sparc.h (WIDEST_HARDWARE_FP_SIZE): ...here.
4439
4440 2008-09-18  Andrew MacLeod  <amacleod@redhat.com>
4441
4442         * tree-outof-ssa.c (eliminate_useless_phis): Fix formatting.
4443         * tree-flow-.h (struct immediate_use_iterator_d): Fix comment.
4444
4445 2008-09-18  Andrew MacLeod  <amacleod@redhat.com>
4446
4447         PR tree-optimization/37102
4448         * tree-outof-ssa.c (remove_gimple_phi_args): Remove all the PHI args
4449         from a node. Check to see if another PHI is dead.
4450         (eliminate_useless_phis): Rename from eliminate_virtual_phis and
4451         remove real PHIs which have no uses.
4452         (rewrite_out_of_ssa): Call eliminate_useless_phis.
4453
4454 2008-09-18  Richard Guenther  <rguenther@suse.de>
4455
4456         PR middle-end/37284
4457         * tree-cfg.c (remove_useless_stmts_1): Remove
4458         GIMPLE_CHANGE_DYNAMIC_TYPE if not optimizing.
4459
4460 2008-09-18  Nick Clifton  <nickc@redhat.com>
4461
4462         * config/frv/frv.h (IRA_COVER_CLASSES): Define.
4463         (SECONDARY_INPUT_RELOAD_CLASS): Omit unused argument in call
4464         to frv_secondary_reload_class.
4465         (SECONDARY_OUTPUT_RELOAD_CLASS): Likewise.
4466         * config/frv/frv.c (TARGET_SECONDARY_RELOAD): Define.
4467         (frv_secondary_reload_class): Omit unused parameter.
4468         (frv_secondary_reload): New function.  Handle the case when
4469         secondary_reload_class() is called before the reload_(in|out)
4470         _optabs have been initialised.
4471         * config/frv/frv-protos.h (frv_secondary_reload_class): Omit
4472         unused parameter.
4473         * config/frv/frv.md: Define an exclusion set between fr550_m0
4474         and fr550_f0.
4475
4476 2008-09-18  Richard Guenther  <rguenther@suse.de>
4477
4478         PR tree-optimization/37456
4479         * tree-ssa-reassoc.c (build_and_add_sum): If the stmt we
4480         want to insert after ends a BB insert on the single fallthru
4481         outgoing edge.
4482
4483 2008-09-18  Andreas Krebbel  <krebbel1@de.ibm.com>
4484
4485         * doc/invoke.texi: Document -mhard-dfp, -mno-hard-dfp.
4486         Mention -march=z9-109, z9-ec and z10.
4487
4488 2008-09-18  Uros Bizjak  <ubizjak@gmail.com>
4489
4490         PR rtl-optimization/37544
4491         * regrename.c (maybe_mode_change): Exit early when copy_mode
4492         is narrower than orig_mode and narrower than new_mode.
4493
4494 2008-09-18  Alexander Monakov  <amonakov@ispras.ru>
4495
4496         PR middle-end/37499
4497         * sched-int.h (struct _haifa_insn_data): Remove unused field ref_count.
4498
4499         * sched-rgn.c (ref_counts): Remove.
4500         (insn_referenced): New static variable.
4501         (INSN_REF_COUNT): Remove.
4502         (sched_run_compute_dependencies): Use insn_referenced instead of
4503         INSN_REF_COUNT.
4504         (add_branch_dependences): Likewise.  Delete dead assignment.
4505
4506 2008-09-17  Adam Nemet  <anemet@caviumnetworks.com>
4507
4508         * haifa-sched.c (dep_cost_1): Recognize the producer even if the
4509         consumer is an asm.  Add comment why this is important.
4510         (choose_ready): Add comment to the "INSN_CODE (insn) >= 0 ||
4511         recog_memoized (insn) < 0" assert.  Put ENABLE_CHECKING around it.
4512
4513 2008-09-17  Joseph Myers  <joseph@codesourcery.com>
4514
4515         * expr.c (emit_group_store): Do not shift before moving via a
4516         stack slot.
4517
4518 2008-09-17  Eric Botcazou  <ebotcazou@adacore.com>
4519
4520         * varasm.c (initializer_constant_valid_p): Forbid view-conversions
4521         from aggregate to non-aggregate type if the bit pattern is not fully
4522         preserved afterwards.
4523
4524 2008-09-17  Richard Guenther  <rguenther@suse.de>
4525
4526         * tree-cfg.c (verify_types_in_gimple_assign): Rename to ...
4527         (verify_gimple_assign): ... this.  Split into ...
4528         (verify_gimple_assign_unary): ... this,
4529         (verify_gimple_assign_binary): ... that,
4530         (verify_gimple_assign_single): ... and this.
4531         (verify_types_in_gimple_stmt): Call verify_gimple_assign.
4532         Fix GIMPLE_CHANGE_DYNAMIC_TYPE handling.
4533         (verify_types_in_gimple_min_lval): Handle TARGET_MEM_REF.
4534         (verify_types_in_gimple_reference): Be forgiving with
4535         VIEW_CONVERT_EXPRs.
4536         (verify_gimple_phi): Deal with virtual operands.
4537
4538         * tree.def (PREDICT_EXPR): Change to tcc_expression.
4539
4540 2008-09-17  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4541
4542         * tree.c (get_callee_fndecl): Don't call the language hook.
4543         * langhooks.h (lang_hooks): Remove lang_get_callee_fndecl.
4544         * langhooks-def.h (LANG_HOOKS_GET_CALLEE_FNDECL): Kill.
4545         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_GET_CALLEE_FNDECL.
4546
4547 2008-09-17  Jakub Jelinek  <jakub@redhat.com>
4548
4549         * tree.c (protected_set_expr_location): Don't unnecessarily
4550         check for error_mark_node.
4551
4552 2008-09-17  Art Haas  <ahaas@impactweather.com>
4553
4554         * ipa-reference.c (analyze_function): Declare step only if
4555         ENABLE_CHECKING is defined.
4556
4557 2008-09-17  Jan Hubicka  <jh@suse.cz>
4558
4559         PR c++/18071
4560         * tree.h (DECL_INLINE): remove.
4561         (DECL_DECLARED_INLINE_P): Update docs.
4562         (DECL_NO_INLINE_WARNING_P): new.
4563         (tree_function_decl): Replace inline_flag by no_inline_warning_flag.
4564         * tree-inline.c (inlinable_function_p): Set DECL_NO_INLINE_WARNING_P.
4565
4566 2008-09-17  Jakub Jelinek  <jakub@redhat.com>
4567             Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
4568
4569         PR bootstrap/37441
4570         * dwarf2out.c (dwarf2out_do_cfi_asm) [MIPS_DEBUGGING_INFO]: Return
4571         false.
4572
4573 2008-09-17  Jan Hubicka  <jh@suse.cz>
4574
4575         * ipa-reference.c (ipa_obstack): Remove.
4576         (local_info_obstack, global_info_obstack): New.
4577         (add_static_var): We now handle variables only.
4578         (mark_address_taken, mark_load, mark_store): New functions based on ...
4579         (check_operand): ... remove.
4580         (get_asm_stmt_operands): Rename to ...
4581         (check_asm_memory_clobber): ... this. Look only for memory clobber.
4582         (scan_stmt_for_static_refs): Rewrite.
4583         (scan_op_for_static_refs): Rename to ...
4584         (scan_initializer_for_static_refs): do not look for VAR_DECL
4585         initializers; stop recursion on types and decls.
4586         (ipa_init): Use proper obstacks.
4587         (analyze_variable): Use scan_initializer_for_static_refs.
4588         (init_function_info): Use local obstack.
4589         (analyze_function): Simplify.
4590         (add_new_function): We don't need visited_nodes obstack.
4591         (generate_summary): Use proper obstacks; cleanup after propagation.
4592
4593 2008-09-17  Richard Guenther  <rguenther@suse.de>
4594
4595         PR middle-end/37385
4596         PR tree-optimization/37491
4597         * alias.c (get_alias_set): Use the canonical type.
4598         * tree-vect-transform.c (vectorizable_store): Use the type of
4599         the lhs for the vector type.  Adjust checking.
4600         (vectorizable_load): Adjust checking.
4601
4602 2008-09-16  Jakub Jelinek  <jakub@redhat.com>
4603             Adam Nemet  <anemet@caviumnetworks.com>
4604
4605         PR rtl-optimization/37483
4606         * ifcvt.c (noce_try_sign_mask): Use if_info->test_bb instead of
4607         if_info->insn_b's bb as argument to optimize_bb_for_speed_p.
4608         Rearrange code to better match the original comment.  Check
4609         t_unconditional first.  Improve comment.
4610
4611 2008-09-16  Jakub Jelinek  <jakub@redhat.com>
4612
4613         PR c/37529
4614         * gimplify.c (gimplify_expr) <case GOTO_EXPR>: If gimplification of
4615         GOTO_DESTINATION failed, don't create GIMPLE_GOTO.
4616
4617         PR c++/37530
4618         * gimplify.c (gimplify_expr) <case TRY_CATCH_EXPR>: Don't create
4619         GIMPLE_TRY if cleanup sequence is empty.
4620
4621 2008-09-16  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4622
4623         PR middle-end/37263
4624         * tree-ssa-loop-ivopts.c (determine_use_iv_cost_condition): Prefer the
4625         eliminate IV if the cost are the same.
4626
4627 2008-09-16  Richard Guenther  <rguenther@suse.de>
4628
4629         PR middle-end/37380
4630         * tree-sra.c (sra_build_assignment): Do not call the gimplifier
4631         if not necessary.
4632
4633 2008-09-16  Richard Guenther  <rguenther@suse.de>
4634
4635         PR tree-optimization/37508
4636         * tree-vrp.c (simplify_truth_ops_using_ranges): Also allow -1.
4637
4638 2008-09-15  Kaz Kojima  <kkojima@gcc.gnu.org>
4639
4640         * config/sh/sh.md (movsf_ie): Fix length for TARGET_SH2A.
4641
4642 2008-09-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4643
4644         * config/rs6000/rs6000.md (floatsidf2): Rewrite PowerPC64 case to
4645         use gen_floatdidf2 directly.
4646         (floatunssidf2): Likewise.
4647         (floatsidf_ppc64_mfpgpr): Remove.
4648         (floatsidf_ppc64): Remove.
4649         (floatunssidf_ppc64): Remove.
4650
4651 2008-09-15  Jakub Jelinek  <jakub@redhat.com>
4652
4653         * ira-color.c (finish_cost_update): Free update_cost_queue_elems
4654         rather than update_cost_queue.
4655
4656         * tree-ssa-alias.c (init_alias_info): Call bitmap_obstack_release
4657         in every call starting with the second one, instead of only when
4658         alias_bitmap_obstack.elements != NULL.
4659
4660         * tree-predcom.c (filter_suitable_components): Free all refs in
4661         act->refs vector before calling release_component.
4662         (add_ref_to_chain): Free ref if not adding it to chain->refs.
4663
4664         * tree-data-ref.c (free_subscripts): Free all subscript objects.
4665
4666         * tree-loop-linear.c (linear_transform_loops): Initialize
4667         lambda_obstack only after calling perfect_loop_nest_depth.
4668         Goto free_and_continue instead of just continue for later failures.
4669
4670         PR middle-end/37479
4671         * doc/invoke.texi: Document -fno-dwarf2-cfi-asm.
4672
4673         PR libmudflap/36397
4674         * tree-mudflap.c (mf_xform_derefs_1): Handle VIEW_CONVERT_EXPR.
4675
4676 2008-09-14  Andreas Schwab  <schwab@suse.de>
4677
4678         * tree-call-cdce.c (check_target_format): Accept Motorola formats.
4679
4680 2008-09-14  Jan Hubicka  <jh@suse.cz>
4681
4682         * invoke.texi (-fconserve-stack): Document.
4683         * opts.c (decode_options): Handle conserve_stack.
4684         * common.opt (fconvserve_stack): New.
4685
4686 2008-09-14  David Edelsohn  <edelsohn@gnu.org>
4687
4688         * config.host: Add x-aix to host_xmake_file.
4689         * config/rs6000/t-aix52: Do not override LDFLAGS.
4690         * config/rs6000/x-aix: New file.
4691
4692 2008-09-14  Andy Hutchinson  <hutchinsonandy@aim.com>
4693
4694         PR target/19636
4695         PR target/24894
4696         PR target/31644
4697         PR target/31786
4698         * config/avr/avr.c (legitimate_address_p): Fix problem where subreg
4699         is not recognized as a valid register usage. Allow REG_X to be used
4700         as a base pointer.
4701         * config/avr/avr.h (LEGITIMIZE_RELOAD_ADDRESS): Remove code that
4702         forces a reload when using a base register.
4703
4704 2008-09-14  Danny Smith  <dannysmith@users.sourceforge.net>
4705
4706         * config/i386/cygming-crtend.c (register_frame_ctor): If
4707         DEFAULT_USE_CXA_ATEXIT, register __gcc_deregister_frame
4708         directly with atexit.
4709         (deregister_frame_ctor): Rename to ...
4710         (deregister_frame_dtor): Use to call __gcc_deregister_frame
4711         if !DEFAULT_USE_CXA_ATEXIT.
4712
4713 2008-09-13  Jan Hubicka  <jh@suse.cz>
4714
4715         * cgraph.c: Include value-prof.h
4716         * Makefile.in (cgraph.o): Add value-prof.h dependency.
4717
4718 2008-09-13  Jan Hubicka  <jh@suse.cz>
4719
4720         PR middle-end/32581
4721         * tree-profile.c (add_abnormal_goto_call_edges): New function.
4722         (tree_gen_interval_profiler, tree_gen_pow2_profiler,
4723         tree_gen_one_value_profiler, tree_gen_average_profiler,
4724         tree_gen_ic_func_profiler, tree_gen_ior_profiler): Use it.
4725
4726 2008-09-13  Jan Hubicka  <jh@suse.cz>
4727
4728         * i386.c (ix86_expand_movmem, ix86_expand_movstr): Avoid processing
4729         too many bytes on misalligned blocks.
4730
4731 2008-09-13  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
4732
4733         * doc/cfg.texi: Fix some typos.
4734         * doc/extend.texi: Likewise.
4735         * doc/install.texi: Likewise.
4736         * doc/invoke.texi: Likewise.
4737         * doc/rtl.texi: Likewise.
4738         * doc/tree-ssa.texi: Likewise.
4739
4740 2008-09-13  Richard Guenther  <rguenther@suse.de>
4741
4742         PR middle-end/30141
4743         * tree-nested.c (finalize_nesting_tree_1): Generate valid
4744         gimple stores for memory rhs.
4745
4746 2008-09-13  H.J. Lu  <hongjiu.lu@intel.com>
4747
4748         PR rtl-optimization/37489
4749         * cse.c (fold_rtx): Don't return const_true_rtx for float
4750         compare if FLOAT_STORE_FLAG_VALUE is undefined.
4751
4752 2008-09-13  Jan Hubicka  <jh@suse.cz>
4753
4754         PR tree-optimization/37392
4755         * tree-inline.c (remap_gimple_stmt): Do not remap return value.
4756
4757 2008-09-13  Martin Jambor  <mjambor@suse.cz>
4758             Jan Hubicka  <jh@suse.cz>
4759
4760         * cgraph.c (free_edges): New variable.
4761         (NEXT_FREE_EDGE): New macro.
4762         (cgraph_free_edge): New function.
4763         (cgraph_remove_edge): Call cgraph_remove_edge_1.
4764         (cgraph_node_remove_callees): Likewise.
4765         (cgraph_node_remove_callers): Likewise.
4766         (cgraph_create_edge): Reuse edges from the free list.  Do not
4767         update uid if doing so.
4768         (cgraph_remove_*_hook): Add free call.
4769
4770 2008-09-13  Richard Sandiford  <rdsandiford@googlemail.com>
4771
4772         * ira-color.c (conflict_allocno_vec): Delete.
4773         (update_cost_queue_elem): New structure.
4774         (update_cost_queue): New variable.
4775         (update_cost_queue_tail): Likewise.
4776         (update_cost_queue_elems): Likewise.
4777         (allocno_update_cost_check): Delete.
4778         (initiate_cost_update): Allocate update_cost_queue_elems
4779         instead of allocno_update_cost_check.
4780         (finish_cost_update): Update the free()s accordingly.
4781         (start_update_cost): New function.
4782         (queue_update_cost): Likewise.
4783         (get_next_update_cost): Likewise.
4784         (update_copy_costs_1): Inline into...
4785         (update_copy_costs): ...here.  Use a queue instead of recursive calls.
4786         Use cover_class instead of ALLOCNO_COVER_CLASS (another_allocno),
4787         once we've established they are equal.  Don't allocate update
4788         costs if there is nothing to add to them.
4789         (update_conflict_hard_regno_costs): Remove ALLOCNO and
4790         DIVISOR arguments.  Use a queue instead of recursive calls;
4791         process all the allocnos in the initial queue, rather than
4792         a single allocno.
4793         (assign_hard_reg): Use queue_update_cost instead of
4794         conflict_allocno_vec.  Queue coalesced allocnos instead
4795         of calling update_conflict_hard_regno_costs for each one.
4796         Just call update_conflict_hard_regno_costs once for the
4797         entire queue.
4798         (ira_color): Remove conflict_allocno_vec handling.
4799
4800 2008-09-12  Sebastian Pop  <sebastian.pop@amd.com>
4801
4802         PR tree-optimization/37484
4803         * graphite.c (scop_record_loop): Use snprintf instead of sprintf.
4804         (save_var_name): Same.
4805         (initialize_cloog_names): Same.
4806         (initialize_cloog_names): Same.
4807
4808 2008-09-12  Sebastian Pop  <sebastian.pop@amd.com>
4809
4810         * tree-scalar-evolution.c (set_instantiated_value): Set
4811         instantiated_below.
4812
4813 2008-09-12  Vladimir Makarov  <vmakarov@redhat.com>
4814
4815         PR rtl-opt/37377
4816
4817         * ira-build.c (common_loop_tree_node_dominator): Remove.
4818         (copy_live_ranges_to_removed_store_destinations): New function.
4819         (regno_top_level_allocno_map): Move to top level from ...
4820         (ira_flattening): ... here.  Use
4821         copy_live_ranges_to_removed_store_destinations.
4822
4823         * ira-emit.c (generate_edge_moves): Fix a comment.
4824
4825 2008-09-12  Anatoly Sokolov  <aesok@post.ru>
4826
4827         PR target/37466
4828         * config/avr/avr.md (movsi_lreg_const peephole2): Add match_dup for
4829         scratch register after 'set' pattern.
4830
4831 2008-09-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
4832
4833         * emit-rtl.c (set_reg_attrs_from_value): Fix invalid alignment
4834         information passed to mark_reg_pointer.
4835         * explow.c (force_reg): Likewise.
4836
4837 2008-09-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
4838
4839         * config/spu/spu.c (spu_override_options): Default to -mno-safe-hints
4840         when building for the celledp architecture.
4841
4842 2008-09-12  Richard Guenther  <rguenther@suse.de>
4843
4844         * tree-vrp.c (simplify_truth_ops_using_ranges): Fix types.
4845
4846 2008-09-12  Eric Botcazou  <ebotcazou@adacore.com>
4847
4848         PR rtl-optimization/37424
4849         * ira-color.c (coalesced_pseudo_reg_slot_compare): Untie by comparing
4850         the regnos instead of the addresses.
4851
4852 2008-09-11  Janis Johnson  <janis187@us.ibm.com>
4853
4854         * ginclude/float.h (DEC_EVAL_METHOD): Correct the macro name.
4855
4856 2008-09-11  Richard Guenther  <rguenther@suse.de>
4857
4858         * tree-ssa-uncprop.c (associate_equivalences_with_edges): Avoid
4859         entering the weaker equivalence recording.
4860
4861         * tree-ssa-phiprop.c (propagate_with_phi): Fix tuplification.
4862
4863 2008-09-11  Jeff Law <law@redhat.com>
4864
4865         * reload1.c (alter_reg): Undo the BYTE_BIG_ENDIAN correction performed
4866         by assign_stack_local on the IRA path for stack slot sharing
4867         as well as the non-IRA path.
4868
4869 2008-09-11  Uros Bizjak  <ubizjak@gmail.com>
4870
4871         * config/i386/i386.h: Fix whitespace issues.
4872
4873 2008-09-11  Martin Jambor  <mjambor@suse.cz>
4874
4875         * ipa-prop.h (struct ipa_param_flags): Removed.
4876         (struct ipa_param_descriptor): New structure.
4877         (struct ipa_node_params): ipcp_lattices, param_decls and
4878         param_flags moved to ipa_param_description.
4879         (ipa_get_ith_param): Renamed to ipa_get_param, changed to access
4880         descriptors.  Renamed all users.
4881         (ipa_is_ith_param_modified): Renamed to ipa_is_param_modified,
4882         changed to access descriptors.  Renamed all users.
4883         (ipa_is_ith_param_called): Renamed to ipa_is_param_called, changed
4884         to access descriptors. Renamed all users.
4885         * ipa-cp.c (ipcp_init_cloned_node): Call
4886         ipa_initialize_node_params instead of ipa_count_formal_params and
4887         ipa_create_param_decls_array.
4888         (ipcp_analyze_node): Likewise.
4889         (ipcp_get_ith_lattice): Renamed to ipcp_get_lattice, changed to access
4890         descriptors.  Renamed all users.
4891         (ipcp_initialize_node_lattices): Remove allocation.
4892         * ipa-inline.c (inline_indirect_intraprocedural_analysis): Call
4893         ipa_initialize_node_params instead of ipa_count_formal_params and
4894         ipa_create_param_decls_array.
4895         * ipa-prop.c (ipa_create_param_decls_array): Renamed to
4896         ipa_populate_param_decls, made static, added parameter info,
4897         renamed mt to node, removed allocation, changed to use
4898         descriptors.
4899         (ipa_count_formal_params): Made static, added parameter info,
4900         renamed mt to node.
4901         (ipa_initialize_node_params): New function.
4902         (ipa_check_stmt_modifications): Changed to use descriptors.
4903         (ipa_detect_param_modifications): Removed allocation, changed to
4904         use descriptors.
4905         (ipa_note_param_call): Changed to use descriptors.
4906         (ipa_analyze_params_uses): Removed allocation.
4907         (ipa_free_node_params_substructures): Changed to use descriptors.
4908         (ipa_edge_duplication_hook): Use the unused attribute.
4909         (ipa_node_duplication_hook): Use the unused attribute, changed to
4910         use descriptors, changed to duplicate descriptors.
4911
4912         * ipa-inline.c (cgraph_mark_inline_edge): New parameter new_edges,
4913         changed all callers.  Call ipa_propagate_indirect_call_infos if doing
4914         indirect inlining.  Made static.
4915         (cgraph_decide_inlining): Freeing ipa-prop structures after inlining
4916         functions called only once.
4917         (cgraph_decide_recursive_inlining): Don't call
4918         ipa_propagate_indirect_call_infos, pass new_edges to
4919         cgraph_mark_inline_edge instead.
4920         (cgraph_decide_inlining_of_small_functions): Don't call
4921         ipa_propagate_indirect_call_infos, pass new_edges to
4922         cgraph_mark_inline_edge instead.
4923         (cgraph_decide_inlining): Don't call
4924         ipa_propagate_indirect_call_infos.
4925         * ipa-prop.c: Check that vectors are allocated.
4926
4927         * ipa-inline.c (cgraph_mark_inline_edge): Returns boolean, true
4928         iff a new cgraph edges have been created.
4929         (cgraph_decide_inlining): New variable redo_always_inline.
4930         Flattening and always_inlining loop until callgraph stabilizes.
4931         * ipa-prop.c (update_call_notes_after_inlining): Returns boolean,
4932         true iff new cgraph edges have been created.
4933         (propagate_info_to_inlined_callees): Likewise.
4934         (ipa_propagate_indirect_call_infos): Likewise.
4935
4936 2008-09-11  Richard Guenther  <rguenther@suse.de>
4937
4938         * tree-vectorizer.c (slpeel_add_loop_guard): Fix types.
4939         (set_prologue_iterations): Likewise.
4940         * tree-vect-transform.c (vect_create_addr_base_for_vector_ref):
4941         Likewise.
4942         (vect_update_init_of_dr): Likewise.
4943         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Fix
4944         type verification.
4945         * fold-const.c (fold_unary): Do not generate calculations
4946         in sub-types.
4947
4948 2008-09-11  Paolo Bonzini  <bonzini@gnu.org>
4949
4950         * dojump.c (do_jump) [BIT_AND_EXPR]: Move below.  Fall through to
4951         TRUTH_AND_EXPR for boolean (1-bit precision) expressions.
4952         (do_jump) [BIT_IOR_EXPR]: Compile as TRUTH_OR_EXPR.
4953
4954         * tree-flow.h (simplify_stmt_using_ranges): Accept a GSI, return
4955         a bool.
4956         * tree-ssa-propagate.c (substitute_and_fold): Pass a GSI to
4957         VRP's simplify_stmt_using_ranges.  Do simplify_stmt_using_ranges
4958         before finalizing the changes.
4959         * tree-vrp.c (extract_range_from_binary_expr): Add limited support
4960         for BIT_IOR_EXPR.
4961         (simplify_truth_ops_using_ranges): New.
4962         (simplify_div_or_mod_using_ranges, simplify_abs_using_ranges,
4963         simplify_cond_using_ranges, simplify_switch_using_ranges): Return
4964         whether a simplification was made.
4965         (simplify_stmt_using_ranges): Ditto, and accept a GSI.  For GS_ASSIGN,
4966         use a switch statement and also call simplify_truth_ops_using_ranges.
4967
4968 2008-09-11  Jan Hubicka  <jh@suse.cz>
4969
4970         * ggc-common.c (loc_array): Make static.
4971         * dce.c (rest_of_handle_ud_dce): Free worklist.
4972
4973 2008-09-11  Jan Hubicka  <jh@suse.cz>
4974
4975         * cgraph.c (cgraph_release_function_body): Plug memory leak on
4976         ipa_transforms_to_apply and CFG; ggc_free gimple df and struct
4977         function so we are sure we do not dangle it forever.
4978         * function.c (outer_function_chain, find_function_data): Remove.
4979         (function_context_stack): New.
4980         (push_function_context, pop_function_context): Update.
4981         * function.h (struct function): Remove pointer outer.
4982         (outer_function_chain, find_function_data): Remove.
4983         * stmt.c (force_label_rtx): Remove dead call of find_function_data.
4984
4985 2008-09-11  Jan Hubicka  <jh@suse.cz>
4986
4987         PR middle-end/37448
4988         * cgraph.c (cgraph_create_edge): Use !cgraph_edge for sanity check.
4989
4990 2008-09-11  Jan Hubicka  <jh@suse.cz>
4991
4992         * tree-ssa-pre.c (phi_translate_1): Fix memory leak
4993
4994 2008-09-11  Jan Hubicka  <jh@suse.cz>
4995
4996         * tree-ssa.c (redirect_edge_var_map_clear): Fix formatting.
4997         (free_var_map_entry): New function.
4998         (redirect_edge_var_map_destroy): Use it.
4999
5000 2008-09-11  Jan Hubicka  <jh@suse.cz>
5001
5002         PR middle-end/37448
5003         * tree-inline.c (add_lexical_block): Replace with ...
5004         (prepend_lexical_block): ... prepend at begginig.
5005         (remap_blocks): Use it and reverse later.
5006         (expand_call_inline): Use prepend_lexical_block.
5007
5008 2008-09-11  Jan Hubicka  <jh@suse.cz>
5009
5010         * gimplify.c (pop_gimplify_context): Free bind_expr_stack.
5011
5012 2008-09-11  Jan Hubicka  <jh@suse.cz>
5013
5014         * function.c (free_after_compilation): Call insn_locators_free.
5015         * cfglayout.c (insn_locators_free): New function.
5016         * rtl.h (insn_locators_free): Declare.
5017
5018 2008-09-11  Jan Hubicka  <jh@suse.cz>
5019
5020         * ifcvt.c (check_cond_move_block): Make regs argument pointer to
5021         vector pointer.
5022         (cond_move_process_if_block): Update call.
5023
5024 2008-09-11  Jan Hubicka  <jh@suse.cz>
5025
5026         * toplev.c (dump_memory_report): Call dump_vec_loc_statistics.
5027         * vec.c: Include hashtab.h
5028         (vec_descriptor, ptr_hash_entry): New structures.
5029         (vec_desc_hash, vec_ptr_map): New static variables.
5030         (hash_descriptor, eq_descriptor, hash_ptr, eq_ptr, vec_descriptor,
5031         register_overhead, free_overhead, vec_heap_free): New functions.
5032         (vec_gc_o_reserve_1): ggc_free when resizing to 0.
5033         (vec_heap_o_reserve_1): free when resizing to 0; add statistics.
5034         (cmp_statistic, add_statistics, dump_vec_loc_statistics):
5035         New functions.
5036
5037 2008-09-11  Ira Rosen  <irar@il.ibm.com>
5038
5039         PR tree-optimization/37474
5040         * tree-vect-analyze.c (vect_supported_load_permutation_p): Check the
5041         length of load permutation.
5042
5043 2008-09-11  Andreas Schwab  <schwab@suse.de>
5044
5045         * config/m68k/m68k.h (IRA_COVER_CLASSES): Define.
5046
5047 2008-09-11  Jakub Jelinek  <jakub@redhat.com>
5048
5049         PR target/37382
5050         * expmed.c (extract_low_bits): Avoid creating invalid subregs.
5051         * dse.c (find_shift_sequence): Use extract_low_bits instead of
5052         simplify_gen_subreg.
5053
5054 2008-09-11  Ira Rosen  <irar@il.ibm.com>
5055
5056         * tree-vect-transform.c (vectorizable_store): Use the rhs vector type
5057         for alias check.
5058
5059 2008-09-10  Jakub Jelinek  <jakub@redhat.com>
5060
5061         PR middle-end/37338
5062         * gimplify.c (gimplify_body): Call default_rtl_profile.
5063
5064         PR target/36904
5065         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): Return NULL
5066         instead of tok->val.node if not expanding to something else.  Handle
5067         intervening CPP_PADDING tokens.
5068         (altivec_categorize_keyword): Remove unneeded comparisons.
5069
5070 2008-09-10  Richard Guenther  <rguenther@suse.de>
5071
5072         * tree-ssa-pre.c (phi_translate_1): Fix memory leak.
5073
5074 2008-09-10  Richard Guenther  <rguenther@suse.de>
5075
5076         PR middle-end/37432
5077         * tree-inline.c (insert_init_stmt): Make sure to not
5078         insert invalid gimple stores.
5079
5080 2008-09-10  Sebastian Pop  <sebastian.pop@amd.com>
5081
5082         PR tree-optimization/37388
5083         * toplev.c (process_options): Fail and warn when graphite
5084         flags are used, but the compiler has not been configured
5085         with graphite libraries.
5086         * graphite.c (graphite_transform_loops): Remove printfs
5087         to dump_file for the case when graphite is not available.
5088
5089 2008-09-10  H.J. Lu  <hongjiu.lu@intel.com>
5090
5091         PR target/37434:
5092         * config/i386/i386.c (ix86_expand_vector_init_interleave): Force
5093         the even element into register.
5094         (ix86_expand_vector_init_general): Don't use
5095         ix86_expand_vector_init_interleave on V16QImode and V8HImode
5096         if we can't move from GPR to SSE register directly.
5097
5098 2008-09-10  Bernd Schmidt  <bernd.schmidt@analog.com>
5099
5100         * config/bfin/bfin.c (workaround_speculation): Correct algorithm to
5101         not lose track of the number of NOPs needed.  Number of NOPs needed
5102         for sync vs. loads workaround was switched; corrected.  Run second
5103         pass for all workarounds.  No NOPs needed after call insns.  Change
5104         second pass to use find_next_insn_start and find_load helpers in order
5105         to properly detect parallel insns.
5106         * config/bfin/bfin.md (cbranch_with_nops): Increase length.
5107
5108 2008-09-10  Jan Hubicka  <jh@suse.cz>
5109
5110         * value-prof.c (gimple_ic): Fix tuplification bug.
5111         * sched-deps.c (sched_insns_conditions_mutex_p): Silence unitialized
5112         var warning.
5113
5114 2008-09-10  Jakub Jelinek  <jakub@redhat.com>
5115
5116         PR tree-optimization/37353
5117         * tree-call-cdce.c (cond_dead_built_in_calls): Remove.
5118         (shrink_wrap_conditional_dead_built_in_calls): Add calls argument, use
5119         calls instead of cond_dead_built_in_calls.
5120         (tree_call_cdce): Add cond_dead_built_in_calls automatic variable,
5121         initalize the vector only before adding first entry.  Use VEC_safe_push
5122         instead of VEC_quick_push.  Pass cond_dead_built_in_calls to
5123         shrink_wrap_conditional_dead_built_in_calls call.
5124
5125 2008-09-10  Ira Rosen  <irar@il.ibm.com>
5126
5127         PR tree-optimization/37385
5128         * tree-vect-transform.c (vect_create_data_ref_ptr): Add a new
5129         argument, and use it as a vector type if not NULL.
5130         (vectorizable_store): Call vect_create_data_ref_ptr with the type of
5131         vectorized rhs.
5132         (vect_setup_realignment): Call vect_create_data_ref_ptr with
5133         additional argument.
5134         (vectorizable_load): Likewise.
5135
5136 2008-09-10  Jakub Jelinek  <jakub@redhat.com>
5137
5138         * config/i386/i386.md (SWI32): New mode iterator.
5139         (jcc_fused_1, jcc_fused_2, jcc_fused_3, jcc_fused_4): Use it instead
5140         of SWI.
5141
5142 2008-09-09  Vladimir Makarov  <vmakarov@redhat.com>
5143
5144         PR rtl-optimization/37435
5145         * caller-save.c (insert_restore, insert_save): Check the mode by
5146         reg_save_code.
5147
5148 2008-09-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
5149
5150         PR other/37265
5151         * dwarf2asm.c (dw2_force_const_mem): Use unstripped symbol name for
5152         splay tree lookup.
5153         (dw2_output_indirect_constant_1): Use unstripped name in symbol
5154         reference.
5155
5156 2008-09-09  Sandra Loosemore  <sandra@codesourcery.com>
5157
5158         * doc/invoke.texi (ARM Options): Correct errors in discussion
5159         of -mfloat-abi, -mhard-float, and -msoft-float.
5160
5161 2008-09-09  Jakub Jelinek  <jakub@redhat.com>
5162             Jan Hubicka  <jh@suse.cz>
5163
5164         PR middle-end/37356
5165         * tree-inline.c (copy_bb): Insert stmt into copy_basic_block before
5166         calling gimple_regimplify_operands on it.  Iterate over all newly
5167         added statements, not just the last one.
5168         (insert_init_stmt): Insert stmt into seq first, then call
5169         gimple_regimplify_operands on it.  Don't create new gimplification
5170         context, nor find referenced vars.
5171
5172 2008-09-09  Jakub Jelinek  <jakub@redhat.com>
5173
5174         PR other/37419
5175         * ipa-prop.h (ipa_propagate_indirect_call_infos): Change last argument
5176         to pointer to vector pointer.
5177         * ipa-prop.c (ipa_propagate_indirect_call_infos,
5178         propagate_info_to_inlined_callees): Likewise.
5179         (update_call_notes_after_inlining): Likewise.  Push new indirect edge
5180         to *new_edges instead of new_edges.  Reread IPA_EDGE_REF after
5181         ipa_check_create_edge_args.
5182         * ipa-inline.c (cgraph_decide_recursive_inlining): Change last
5183         argument to pointer to vector pointer.
5184         (cgraph_decide_inlining_of_small_function): Adjust
5185         cgraph_decide_recursive_inlining and ipa_propagate_indirect_call_infos
5186         calls.
5187
5188         PR target/37438
5189         * config/i386/i386.md (zero_extendqihi2_movzbl): Enable when
5190         optimizing for size, not speed.
5191
5192         PR rtl-optimization/37408
5193         * function.c (assign_parm_find_stack_rtl): Set correct MEM_SIZE
5194         if parm is promoted.
5195
5196 2008-09-09  Sebastian Pop  <sebastian.pop@amd.com>
5197
5198         PR tree-optimization/37375
5199         * tree-scalar-evolution.c (scev_info_str): Add field
5200         instantiated_below.
5201         (new_scev_info_str, eq_scev_info, find_var_scev_info,
5202         set_scalar_evolution, get_scalar_evolution, get_instantiated_value,
5203         set_instantiated_value): Pass instantiated_below.
5204         (analyze_scalar_evolution_1, analyze_scalar_evolution): Update calls
5205         to above functions.
5206         (instantiate_scev_1, instantiate_scev): Pass a basic block above which
5207         the definitions are not instantiated.
5208
5209         * tree-scalar-evolution.h (instantiate_scev): Update declaration.
5210         (block_before_loop): New.
5211         * tree-data-ref.c (dr_analyze_indices): Update uses of
5212         instantiate_scev.
5213         * graphite.c (block_before_scop): New.
5214         (loop_affine_expr, stmt_simple_for_scop_p, harmful_stmt_in_bb): Pass a
5215         basic block, not a loop for determining the parameters.
5216         (scopdet_edge_info, build_scops_1): Do not pass outermost loop in the
5217         scop.
5218         (idx_record_params, find_params_in_bb, find_scop_parameters,
5219         build_loop_iteration_domains, add_conditions_to_domain): Update calls
5220         to instantiate_scev.
5221
5222         * Makefile.in (cfgloopmanip.o): Add missing dependency on TREE_FLOW_H.
5223
5224 2008-09-09  Vladimir Makarov  <vmakarov@redhat.com>
5225
5226         PR rtl-opt/37333
5227
5228         * ira-build.c (ira_create_allocno): Setup frequency to 0.
5229
5230         * ira-color.c (update_conflict_hard_regno_costs): Remove assert.
5231         Check zero freq and increase if necessary.
5232
5233 2008-09-09  Vladimir Makarov  <vmakarov@redhat.com>
5234
5235         * ira-conflicts.c (process_regs_for_copy): Check that the hard
5236         regno is in the right range.  Add comments.
5237
5238 2008-09-09  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
5239
5240         * Makefile.in (mips-tfile.o-warn): Don't error out on mips-tfile.c
5241         warnings.
5242         * mips-tfile.c (copy_object): Cast alloca result to int *.
5243         * mips-tdump.c (print_symbol): Cast xmalloc return values to
5244         proper types.
5245         Rename class to sclass.
5246         (read_tfile): Cast read_seek return values to proper types.
5247         Cast xcalloc return value to proper type.
5248
5249 2008-09-09  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
5250
5251         * config/sol2.h (REGISTER_TARGET_PRAGMAS): Move ...
5252         * config/i386/sol2.h (REGISTER_SUBTARGET_PRAGMAS): ... here.
5253         * config/sparc/sol2.h (REGISTER_TARGET_PRAGMAS): ... and here.
5254
5255 2008-09-09  Jan Hubicka  <jh@suse.cz>
5256
5257         * profile.c (is_edge_inconsistent): Add debug output; ignore
5258         negative count on fake edges.
5259         (is_inconsistent): Add debug output.
5260
5261 2008-09-09  Andrey Belevantsev  <abel@ispras.ru>
5262
5263         * haifa-sched.c (advance_one_cycle): Do not print '\n' before printing
5264         dump message.
5265         (choose_ready): When first insn is chosen from the ready list, also
5266         dump it.
5267
5268 2008-09-09  Andrey Belevantsev  <abel@ispras.ru>
5269
5270         PR rtl-optimization/37360
5271         * haifa-sched.c (max_issue): Do not assert that we never issue more
5272         insns than issue_rate.  Add comment.
5273
5274 2008-09-09  Richard Guenther  <rguenther@suse.de>
5275
5276         * tree-cfg.c (verify_types_in_gimple_op): Remove.
5277         (verify_types_in_gimple_call): Rename to ...
5278         (verify_gimple_call): ... this.  Enhance.
5279         (verify_types_in_gimple_cond): Remove.
5280         (verify_gimple_comparison): New function ...
5281         (verify_types_in_gimple_assign): ... split out from here.
5282         (verify_types_in_gimple_return): Rename to ...
5283         (verify_gimple_return): ... this.  Enhance.
5284         (verify_types_in_gimple_switch): Rename to ...
5285         (verify_gimple_switch): ... this.  Enhance.
5286         (verify_gimple_goto): New function.
5287         (verify_types_in_gimple_phi): Rename to ...
5288         (verify_gimple_phi): ... this.  Enhance.
5289         (verify_types_in_gimple_stmt): Adjust calls to helper functions.
5290         Fold in single-statement cases from verify_types_in_gimple_seq_2.
5291         (verify_types_in_gimple_seq_2): Remove cases handled in
5292         verify_types_in_gimple_stmt.
5293
5294 2008-09-09  Bernd Schmidt  <bernd.schmidt@analog.com>
5295
5296         * config/bfin/bfin.c (n_regs_to_save): New static variable.
5297         (push_multiple_operation, pop_multiple_operation): Set it.
5298         (workaround_rts_anomaly): New function.
5299         (workaround_speculation): New function, broken out of bfin_reorg.
5300         (bfin_reorg): Call the new functions.
5301
5302 2008-09-09  Richard Guenther  <rguenther@suse.de>
5303
5304         PR middle-end/37354
5305         PR middle-end/30165
5306         * gimplify.c (gimplify_conversion): Change conversions of
5307         non-register type to VIEW_CONVERT_EXPRs.
5308         (gimplify_addr_expr): If we need to make the operand
5309         addressable make sure to use a properly initialized
5310         temporary for that so it gets a valid gimple store.
5311
5312 2008-09-09  Aldy Hernandez  <aldyh@redhat.com>
5313
5314         * function.h (struct function): Add function_start_locus.
5315         * cfgexpand.c (gimple_expand_cfg): Use it.
5316         * c-parser.c (c_parser_declaration_or_fndef): Set it.
5317
5318 2008-09-09  Richard Guenther  <rguenther@suse.de>
5319
5320         PR tree-optimization/37433
5321         * tree-ssa-ccp.c (ccp_fold): Properly guard folding of
5322         function calls.
5323
5324 2008-09-09  Richard Guenther  <rguenther@suse.de>
5325
5326         PR tree-optimization/37387
5327         * tree-ssa-ifcombine.c (ifcombine_iforif): Convert the name
5328         and bits to a common type.
5329
5330 2008-09-09  Nick Clifton  <nickc@redhat.com>
5331
5332         * config/v850/v850.md (return): Restore frame size restriction.
5333
5334 2008-09-09  Paolo Bonzini  <bonzini@gnu.org>
5335
5336         * c-common.c (c_expand_decl): Remove.
5337         * c-common.h (anon_aggr_type_p): Remove prototype.
5338         (DECL_ANON_UNION_ELEMS): Remove.
5339         * c-objc-common.h (LANG_HOOKS_EXPAND_DECL): Remove.
5340         * c-decl.c (anon_aggr_type_p): Remove.
5341         * langhooks-def.h (LANG_HOOKS_EXPAND_DECL): Remove.
5342         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_EXPAND_DECL.
5343         * langhooks.h (struct lang_hooks): Remove expand_decl.
5344         * langhooks.c (lhd_expand_decl): Remove.
5345         * stmt.c (expand_anon_union_decl): Remove.
5346         * tree.h (expand_anon_union_decl): Remove prototype.
5347
5348 2008-08-09  Andy Hutchinson  <hutchinsonandy@aim.com>
5349
5350         PR target/36609
5351         * config/avr/avr.c (avr_reorg): Create RTL for reversed compare with
5352         zero.
5353         * config/avr/avr.md  (QISI) : Define mode iterator.
5354         (negated_tst<mode>) : Redefine as split using mode macro.
5355         (reversed_tstqi): Define insn as reversed compare with zero.
5356         (reversed_tsthi): Ditto.
5357         (reversed_tstsi): Ditto.
5358
5359 2008-09-08  Jakub Jelinek  <jakub@redhat.com>
5360
5361         PR middle-end/37393
5362         * tree-inline.c (copy_bb): When replacing a gimple_call_va_arg_pack_p
5363         call stmt by new_call, clear gimple_bb on stmt after gsi_replace.
5364
5365         PR middle-end/37414
5366         * predict.c (optimize_function_for_size_p): Don't segfault if
5367         FUN is NULL.
5368         * fold-const.c (LOGICAL_OP_NON_SHORT_CIRCUIT, fold_truthop,
5369         tree_swap_operands_p): Don't test cfun != NULL before calling
5370         optimize_function_for_s*_p.
5371
5372 2008-09-08  Eric Botcazou  <ebotcazou@adacore.com>
5373
5374         * ira-color.c (ira_reuse_stack_slot): Set slot_num on success at the
5375         end of the search.
5376
5377 2008-09-08  M R Swami Reddy <MR.Swami.Reddy@nsc.com>
5378
5379         * crx/crx.h (IRA_COVER_CLASSES): Define.
5380
5381 2008-09-08  Jakub Jelinek  <jakub@redhat.com>
5382
5383         PR middle-end/37337
5384         * tree-ssa-dom.c (optimize_stmt): Call maybe_clean_or_replace_eh_stmt
5385         even when a stmt has been gimple_modified_p, but after fold_stmt is
5386         not any longer.  Remove unneeded may_have_exposed_new_symbols
5387         initializations.
5388
5389 2008-09-08  Richard Guenther  <rguenther@suse.de>
5390
5391         PR tree-optimization/37421
5392         * tree-ssa-sccvn.c (visit_copy): Make sure to fully
5393         valueize the RHS.
5394
5395 2008-09-08  Jakub Jelinek  <jakub@redhat.com>
5396
5397         PR middle-end/37415
5398         * opts.c (common_handle_option): Handle OPT_ftree_store_ccp.
5399
5400 2008-09-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
5401
5402         PR driver/37409
5403         * pa-hpux.h (LINK_SPEC): Strip -fwhole-program.
5404         * pa-hpux10.h (LINK_SPEC): Likewise.
5405         * pa-hpux11.h (LINK_SPEC): Likewise.
5406
5407 2008-09-07  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
5408
5409         * pa32-regs.h (IRA_COVER_CLASSES): Define.
5410         * pa64-regs.h (IRA_COVER_CLASSES): Define.
5411
5412 2008-09-07  Helge Deller  <deller@gmx.de>
5413
5414         * pa/linux-atomic.c: New file.
5415         * pa/t-linux (LIB2FUNCS_STATIC_EXTRA): Define.
5416         * pa/t-linux64 (LIB2FUNCS_STATIC_EXTRA): Define.
5417
5418 2008-09-07  Richard Guenther  <rguenther@suse.de>
5419             Ira Rosen  <irar@il.ibm.com>
5420
5421         PR tree-optimization/36630
5422         * tree-vect-transform.c (vect_update_ivs_after_vectorizer):
5423         Call STRIP_NOPS before calling evolution_part_in_loop_num.
5424
5425 2008-09-07  Dorit Nuzman  <dorit@il.ibm.com>
5426             Ira Rosen  <irar@il.ibm.com>
5427
5428         PR tree-optimization/35642
5429         * config/rs6000/altivec.md (mulv8hi3): Implement.
5430
5431 2008-09-06  Jeff Law <law@redhat.com>
5432
5433         * h8300/h8300.h (IRA_COVER_CLASSES): Define.
5434
5435 2008-09-06  Jan Hubicka  <jh@suse.cz>
5436
5437         PR tree-optimization/14703
5438         * tree-ssa-live.c (remove_unused_scope_block_p): Remove ignored
5439         declarations.
5440         * passes.c (init_optimization_passes): Recompute inline parameters.
5441
5442 2008-09-06  Richard Sandiford  <rdsandiford@googlemail.com>
5443
5444         * config/mips/mips.c (mips_function_ok_for_sibcall): Check for
5445         DECL being null.
5446
5447 2008-09-06  Richard Sandiford  <rdsandiford@goolemail.com>
5448             Peter Fuerst  <post@pfrst.de>
5449
5450         * doc/invoke.texi: Document -mr10k-cache-barrier=.
5451         * doc/extend.texi: Document __builtin_mips_cache.
5452         * config/mips/mips-ftypes.def: Add a (VOID, SI, CVPOINTER) entry.
5453         * config/mips/mips.opt (mr10k-cache-barrier=): New option.
5454         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define
5455         __GCC_HAVE_BUILTIN_MIPS_CACHE.
5456         (TARGET_CACHE_BUILTIN, ISA_HAS_CACHE): New macros.
5457         * config/mips/mips.c (mips_r10k_cache_barrier_setting): New enum.
5458         (set_push_mips_isas): New variable.
5459         (mips_r10k_cache_barrier): New variable.
5460         (cache): New availability predicate.
5461         (mips_builtins): Add an entry for __builtin_mips_cache.
5462         (mips_build_cvpointer_type): New function.
5463         (MIPS_ATYPE_CVPOINTER): New macro.
5464         (mips_prepare_builtin_arg): Only use the insn's mode if the rtx's
5465         mode is VOIDmode.
5466         (r10k_simplified_address_p, r10k_simplify_address)
5467         (r10k_uncached_address_p, r10k_safe_address_p)
5468         (r10k_needs_protection_p_1, r10k_needs_protection_p_store)
5469         (r10k_needs_protection_p_call, r10k_needs_protection_p)
5470         (r10k_insert_cache_barriers): New functions.
5471         (mips_reorg_process_insns): Delete cache barriers after a
5472         branch-likely instruction.
5473         (mips_reorg): Call r10k_insert_cache_barriers.
5474         (mips_handle_option): Handle OPT_mr10k_cache_barrier_.
5475         * config/mips/mips.md (UNSPEC_MIPS_CACHE): New constant.
5476         (UNSPEC_R10K_CACHE_BARRIER): Likewise.
5477         (mips_cache, r10k_cache_barrier): New define_insns.
5478
5479 2008-09-06  Richard Sandiford  <rdsandiford@googlemail.com>
5480
5481         * ira-int.h (ira_zero_hard_reg_set, ira_one_hard_reg_set): Delete.
5482         * ira-color.c (setup_allocno_left_conflicts_num): Use
5483         hard_reg_set_equal_p instead of a comparison with
5484         ira_zero_hard_reg_set.
5485         * ira.c (setup_reg_subclasses): Likewise.
5486         (setup_cover_and_important_classes): Likewise.
5487         (setup_class_translate): Likewise.
5488         (setup_reg_class_intersect_union): Likewise.
5489         (ira_zero_hard_reg_set, ira_one_hard_reg_set): Delete.
5490         (ira_init_once): Don't initialize them.
5491
5492 2008-09-05  Vladimir Makarov  <vmakarov@redhat.com>
5493
5494         * doc/tm.texi (IRA_COVER_CLASSES): Fix a typo.
5495
5496 2008-09-05  Vladimir Makarov  <vmakarov@redhat.com>
5497
5498         * ira-color.c (ira_fast_allocation): Permit global allocno allocation.
5499
5500 2008-09-05  Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
5501
5502         Improved branch hints, safe hints, and scheduling.
5503
5504         * haifa-sched.c (sched_emit_insn) : Define.
5505         * sched-int.h (sched_emit_insn) : Add prototype.
5506         * doc/invoke.texi (-mdual-nops, -mhint-max-nops,
5507         -mhint-max-distance -msafe-hints) : Document.
5508         * config/spu/spu.c (spu_flag_var_tracking): New.
5509         (TARGET_SCHED_INIT_GLOBAL, TARGET_SCHED_INIT,
5510         TARGET_SCHED_REORDER, TARGET_SCHED_REORDER2,
5511         TARGET_ASM_FILE_START): Define.
5512         (TARGET_SCHED_ADJUST_PRIORITY): Remove.
5513         (STOP_HINT_P, HINTED_P, SCHED_ON_EVEN_P): Define.
5514         (spu_emit_branch_hint): Add blocks argument.
5515         (insert_branch_hints, insert_nops): Remove.
5516         (pad_bb, insert_hbrp_for_ilb_runout, insert_hbrp, in_spu_reorg,
5517         uses_ls_unit, spu_sched_init_global, spu_sched_init,
5518         spu_sched_reorder, asm_file_start): New functions.
5519         (clock_var, spu_sched_length, pipe0_clock,
5520         pipe1_clock, prev_clock_var, prev_priority,
5521         spu_ls_first, prev_ls_clock): New static variables.
5522         * config/spu/spu.h (TARGET_DEFAULT): Add MASK_SAFE_HINTS.
5523         * config/spu.md (iprefetch): Add operand, make it clobber MEM.
5524         (nopn_nv): Add a non-volatile version of nop.
5525         * config/spu/spu.opt (-mdual-nops, -mhint-max-nops,
5526         -mhint-max-distance, -msafe-hints): New options.
5527
5528 2008-09-05  Janis Johnson  <janis187@us.ibm.com>
5529             Samuel Tardieu  <sam@rfc1149.net>
5530
5531         * opts.c (decode_options): Combine nested if statements.
5532
5533         PR target/37283
5534         * opts.c (decode_options): Handle more relationships among
5535         unit-at-a-time, toplevel-reorder, and section-anchors.
5536
5537 2008-09-05  David Daney  <ddaney@avtrex.com>
5538
5539         * doc/install.texi (--enable-reduced-reflection): Document new option.
5540
5541 2008-09-05  Bob Wilson  <bob.wilson@acm.org>
5542
5543         * config/xtensa/predicates.md (nonimmed_operand, mem_operand): Use
5544         constantpool_mem_p.
5545         (constantpool_operand): New.
5546         (move_operand): Disallow sub-word modes for the constant pool.
5547         * config/xtensa/xtensa.c (TARGET_SECONDARY_RELOAD): Define.
5548         (xtensa_secondary_reload_class): Replace with....
5549         (xtensa_secondary_reload): this function.  Remove SIGN_EXTEND check.
5550         Set icode for sub-word reloads from the constant pool.
5551         * config/xtensa/xtensa.h (SECONDARY_INPUT_RELOAD_CLASS): Delete.
5552         (SECONDARY_OUTPUT_RELOAD_CLASS): Delete.
5553         * config/xtensa/xtensa.md (reload<mode>_literal): New.
5554         * config/xtensa/xtensa-protos.h: Update prototypes.
5555
5556 2008-09-05  Joseph Myers  <joseph@codesourcery.com>
5557
5558         * config/mips/mips.h (enum reg_class): Add FRAME_REGS.
5559         (REG_CLASS_NAMES): Update.
5560         (REG_CLASS_CONTENTS): Update.
5561         * config/mips/mips.c (mips_regno_to_class): Use FRAME_REGS instead
5562         of ALL_REGS for regs 77 and 78.
5563         * function.c (instantiate_virtual_regs_in_insn): Assert that
5564         return value of simplify_gen_subreg is not NULL.
5565
5566 2008-09-05  Paolo Bonzini  <bonzini@gnu.org>
5567
5568         * emit-rtl.c (gen_rtvec): Rewrite not using gen_rtvec_v.
5569         (gen_rtvec_v): Fix coding standards.
5570
5571 2008-09-04  Jan Hubicka  <jh@suse.cz>
5572
5573         * i386.c (decide_alg): Be more conservative about optimizing for size.
5574
5575 2008-09-04  Ian Lance Taylor  <iant@google.com>
5576
5577         * varasm.c (narrowing_initializer_constant_valid_p): New
5578         static function.
5579         (initializer_constant_valid_p): Call it.
5580
5581 2008-09-04  Jeff Law  <law@redhat.com>
5582
5583         * fold-const.c (native_encode_real): Fix computation of WORDS.
5584         (native_interpret_real): Likewise.
5585
5586 2008-09-04  Janis Johnson  <janis187@us.ibm.com>
5587
5588         * config/rs6000/t-rs6000: Remove target gt-rs6000.h.
5589
5590 2008-09-04  Vladimir Makarov  <vmakarov@redhat.com>
5591
5592         * ira-conflicts.c (process_regs_for_copy): Check insn to check
5593         that the cost is already taken into account in ira-costs.c
5594
5595         * ira-int.h (ira_debug_copy, ira_debug_copies): New.
5596
5597         * ira-build.c (print_copy, print_copies, ira_debug_copy,
5598         ira_debug_copies): New.
5599         (ira_bulid): Call print_copies.
5600
5601         * doc/tm.texi (IRA_COVER_CLASSES): Fix the description.
5602
5603 2008-09-04  Samuel Tardieu  <sam@rfc1149.net>
5604
5605         PR target/32783
5606         * config/rs6000/rs6000.c (optimization_options): Remove check of
5607         flag_toplevel_order.
5608
5609 2008-09-04  Adam Nemet  <anemet@caviumnetworks.com>
5610
5611         * config/mips/mips.h (ISA_HAS_SEQ_SNE): New macro.
5612         * config/mips/mips.c (mips_expand_scc): Also expand seq and sne if
5613         second operand is a reg_imm10_operand.
5614         * config/mips/mips.md (*seq_<GPR:mode><GPR2:mode>_seq,
5615         *sne_<GPR:mode><GPR2:mode>_sne): New patterns.
5616         (*seq_<GPR:mode><GPR2:mode>): Rename to
5617         *seq_zero_<GPR:mode><GPR2:mode>.  Don't match if
5618         ISA_HAS_SEQ_SNE.
5619         (*seq_<GPR:mode><GPR2:mode>_mips16): Rename to
5620         *seq_zero_<GPR:mode><GPR2:mode>_mip16.  Don't match if
5621         ISA_HAS_SEQ_SNE.
5622         (*sne_<GPR:mode><GPR2:mode>): Rename to
5623         *sne_zero_<GPR:mode><GPR2:mode>.  Don't match if
5624         ISA_HAS_SEQ_SNE.
5625
5626 2008-09-04  Adam Nemet  <anemet@caviumnetworks.com>
5627
5628         * config/mips/mips.h (ISA_HAS_EXTS): New macro.
5629         * config/mips/mips.md (*ashr_trunc<mode>): Name the pattern
5630         combining an arithmetic right shift by more than 31 and a
5631         trunction.  Don't match for out-of-range shift amounts.  Set
5632         attribute mode to <MODE>.
5633         (*lshr32_trunc<mode>): Name the pattern combining a logical right
5634         shift by 32 and and a truncation.  Set attribute mode to <MODE>.
5635         (*<optab>_trunc<mode>_exts): New pattern for truncated right
5636         shifts by less than 32.
5637         (extv): Change predicate on first operand to accept registers.
5638         Change predicate of the other operands from immediate_operand to
5639         const_int_operand.  Expand exts when source is a register.
5640         (extzv): Change predicate of the constant operands from
5641         immediate_operand to const_int_operand.
5642         (extzv<mode>): Change predicate of the constant operands from
5643         immediate_operand to const_int_operand and no constraint. Also
5644         remove mode.
5645         (*extzv_trunc<mode>_exts): New pattern.
5646
5647 2008-09-04  Adam Nemet  <anemet@caviumnetworks.com>
5648
5649         * config/mips/mips.h (ISA_HAS_CINS): New macro.
5650         * config/mips/mips-protos.h (mask_low_and_shift_p,
5651         mask_low_and_shift_len): Declare.
5652         * config/mips/mips.c (mask_low_and_shift_p,
5653         mask_low_and_shift_len): New functions.
5654         (mips_print_operand): Handle new operand prefix "m".
5655         * config/mips/mips.md (*cins<mode>): New pattern.
5656
5657 2008-09-04  Bernd Schmidt  <bernd.schmidt@analog.com>
5658
5659         * config/bfin/bfin.c (gen_one_bundle): Don't create new nops when
5660         optimizing for size.
5661
5662 2008-09-04  Richard Sandiford  <rdsandiford@googlemail.com>
5663
5664         * df-scan.c (df_get_entry_block_def_set): Add STACK_POINTER_REGNUM
5665         regardless of epilogue_completed.
5666
5667 2008-09-04  Vladimir Makarov  <vmakarov@redhat.com>
5668
5669         PR middle-end/37359
5670         * ira-lives.c (process_bb_node_lives): Check setjmp.
5671
5672 2008-09-04  Richard Sandiford  <rdsandiford@googlemail.com>
5673
5674         PR middle-end/37243
5675         * ira-build.c (form_loop_tree): Reverse BB walk.
5676         (create_bb_allocnos): Likewise.
5677         * ira-lives.c (make_regno_born_and_dead, regs_set): Delete.
5678         (mark_reg_store): Rename to...
5679         (mark_ref_live): ...this and take a df_ref argument instead of
5680         note_stores arguments.  Assert that we have a register.
5681         (mark_reg_clobber): Delete.
5682         (def_conflicts_with_inputs_p): New function.
5683         (mark_reg_conflicts): Delete.
5684         (mark_reg_death): Rename to...
5685         (mark_ref_dead): ...this and take a df_ref argument instead of
5686         a register.  Assert that we have a register.
5687         (process_bb_node_lives): Hoist frequency calculation out of
5688         instruction walk.  Convert from a forwards scan to a backwards scan.
5689         Use DF_REF_USES and DF_REF_DEFS instead of register notes and
5690         note_stores.  Remove EH_RETURN_DATA_REGNO and regs_set handling.
5691         (create_allocno_live_ranges): Don't create regs_set.
5692
5693 2008-09-04  Ian Lance Taylor  <iant@google.com>
5694
5695         * rtl.h (LABEL_REF_NONLOCAL_P): Don't check for REG_LABEL_OPERAND
5696         or REG_LABEL_TARGET.
5697         * calls.c (emit_library_call_value_1): Use MEM_P rather than
5698         comparing MODE with MEM.
5699         * gimple.c (gimple_build_predict): Cast END_PREDICTORS before
5700         comparing with GF_PREDICT_TAKEN.
5701         (gimple_get_lhs): Change code to enum gimple_code.
5702         (gimple_set_lhs): Likewise.
5703         * ifcvt.c (noce_process_if_block): Correct GET_MODE to GET_CODE.
5704         * omp-low.c (find_omp_clause): Change kind parameter to enum
5705         omp_clause_code.
5706         * tree-flow.h (find_omp_clause): Update declaration.
5707         * regrename.c (clear_dead_regs): Change kind parameter to enum
5708         reg_note.
5709         * reload1.c (eliminate_regs_1): Use REG_NOTE_KIND rather than
5710         GET_MODE.
5711         * see.c (see_get_extension_data): Change return type to enum
5712         entry_type.  Change UNKNOWN to NOT_RELEVANT, SIGN_EXTEND to
5713         SIGNED_EXTENDED_DEF, ZERO_EXTEND to ZERO_EXTENDED_DEF.
5714         (see_gen_normalized_extension): Change extension_code parameter to
5715         enum entry_type.
5716         (see_seek_pre_extension_expr): Change extension_code to enum
5717         entry_type.
5718         (see_merge_one_def_extension): Likewise.
5719         (see_handle_relevant_defs): Likewise.
5720         (see_handle_relevant_uses): Likewise.
5721         (see_analyze_one_def): Likewise.
5722         * tree-cfg.c (need_fake_edge_p): Compare gimple code with
5723         GIMPLE_ASM rather than ASM_EXPR.
5724         * tree-ssa-alias.c (is_escape_site): Compare gimple code with
5725         GIMPLE_RETURN rather than RETURN_EXPR.
5726         * tree-ssa-ccp.c (likely_value): Change code to enum gimple_code.
5727         (evaluate_stmt): Likewise.
5728         * tree-vect-analyze.c (vect_analyze_operations): Change relevance
5729         to enum vect_relevant.
5730         (vect_mark_stmts_to_be_vectorized): Change assertion to not
5731         compare gimple codes with tree codes.
5732
5733 2008-09-04  Paul Brook  <paul@codesourcery.com>
5734
5735         * config/arm/arm.c (arm_size_rtx_costs): Call cost function.
5736
5737 2008-09-04  Bernd Schmidt  <bernd.schmidt@analog.com>
5738
5739         * config/bfin/bfin.c (bfin_function_ok_for_sibcall): Restore a null
5740         pointer check lost in the recent no-unit-at-a-time patch.
5741
5742 2008-09-04  Jan Hubicka  <jh@suse.cz>
5743
5744         PR middle-end/37343
5745         * tree-switch-conversion.c (check_final_bb): Accept only IP
5746         invariants.
5747
5748 2008-09-04  Jan Hubicka  <jh@suse.cz>
5749
5750         * tree-vrp.c (vrp_evaluate_conditional_warnv_with_ops_using_ranges):
5751         Break out from ...
5752         (vrp_evaluate_conditional_warnv_with_ops): ... this one.  Add
5753         using_ranges argument.
5754         (vrp_evaluate_conditional): Avoid bogus warning for type range.
5755         (vrp_visit_cond_stmt): Update call of
5756         vrp_evaluate_conditional_warnv_with_ops
5757
5758 2008-09-04  Jan Hubicka  <jh@suse.cz>
5759
5760         PR tree-optimization/37345
5761         PR tree-optimization/37358
5762         PR tree-optimization/37357
5763         * tree.c (build_function_type_skip_args): Build distinct type copy;
5764         set TYPE_CONTEXT.
5765         (build_function_decl_skip_args): Set type of new decl not orig decl;
5766         clear DECL_VINDEX for methods turned into functions.
5767
5768 2008-09-04  Nick Clifton  <nickc@redhat.com>
5769
5770         * configure.ac (HAVE_GAS_LCOMM_WITH_ALIGNMENT): New assembler check.
5771         * configure: Regenerate.
5772         * config.in: Regenerate.
5773         * config/i386/bsd.h (ASM_OUTPUT_ALIGNED_LOCAL): Use .lcomm with an
5774         alignment field, if it is supported.
5775
5776 2008-09-04  Kai Tietz  <kai.tietz@onevision.com>
5777
5778         * config/i386/t-mingw32 (SHLIB_LC): Change order of import
5779         libraries.
5780
5781 2008-09-03  David Edelsohn  <edelsohn@gnu.org>
5782
5783         * config/rs6000/rs6000.c (processor_target_table): Do not
5784         enable VMX for POWER6.
5785
5786 2008-09-03  Anton Blanchard  <anton@samba.org>
5787
5788         * config/rs6000/rs6000.c (rs6000_split_lock_test_and_set): Do not
5789         emit memory barrier before operation.
5790
5791 2008-09-03  John David Anglin  <dave.anglin@nrc.cnrc.gc.ca>
5792
5793         PR testsuite/37325
5794         * config/pa/pa64-hpux.h (ASM_OUTPUT_EXTERNAL_REAL): Call
5795         default_elf_asm_output_external.
5796
5797 2008-09-03  Jeff Law  <law@redhat.com>
5798
5799         * h8300.c (expand_a_shift): Avoid invalid RTL sharing.
5800
5801 2008-09-03  Richard Henderson  <rth@redhat.com>
5802
5803         * config/alpha/alpha.c (alpha_split_lock_test_and_set): Move
5804         memory barrier to below the test-and-set.
5805         (alpha_split_lock_test_and_set_12): Likewise.
5806
5807 2008-09-03  Vladimir Makarov  <vmakarov@redhat.com>
5808
5809         PR rtl-opt/37243
5810
5811         * ira-int.h (ira_loop_tree_node): Rename mentioned_allocnos to
5812         all_allocnos.
5813
5814         * ira-color.c (print_loop_title): Use all_allocnos.
5815         (color_pass): Ditto.  Don't add border_allocnos.  Check that
5816         subloop allocno in the correspdoning bitmap all_allocnos.
5817
5818         * ira-emit.c (change_loop): Use all_allocnos.
5819
5820         * ira-build.c (create_loop_tree_nodes, finish_loop_tree_node): Ditto.
5821         (ira_create_allocno): Set up all_allocnos bit for the created allocno.
5822         (create_cap_allocno): Remove setting mentioned_allocnos.
5823         (create_insn_allocnos): Ditto.
5824         (remove_unnecessary_allocnos): Use all_allocnos.
5825         (check_allocno_creation): Check that allocnos are in the
5826         corresponding bitmap all_allocnos.
5827
5828 2008-09-03  Vladimir Makarov  <vmakarov@redhat.com>
5829
5830         PR rtl-opt/37243
5831
5832         * ira-conflicts.c (REG_SUBREG_P, go_through_subreg): New.
5833         (process_regs_for_copy): Process subregs.  Refine check when cost
5834         is taken into account in ira-costs.c.
5835         (process_reg_shuffles): Use REG_SUBREG_P.
5836         (add_insn_allocno_copies): Ditto.  Ignore modes.
5837
5838         * ira-color.c (conflict_allocno_vec): New.
5839         (COST_HOP_DIVISOR): New macro.
5840         (update_copy_costs_1): Use it.
5841         (update_conflict_hard_regno_costs): New function.
5842         (assign_hard_reg): Use it.
5843         (ira_color): Allocate and free conflict_allocno_vec.
5844
5845 2008-09-03  Vladimir Makarov  <vmakarov@redhat.com>
5846
5847         PR rtl-opt/37296
5848
5849         * ira-int.h (ira_sort_insn_chain): Remove.
5850
5851         * ira.c (basic_block_order_nums, chain_insn_order,
5852         chain_freq_compare, chain_bb_compare, ira_sort_insn_chain): Remove.
5853         (ira): Don't call ira_sort_insn_chain.
5854
5855         * reload1.c (reload): Don't call ira_sort_insn_chain.
5856
5857 2008-09-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5858
5859         PR middle-end/37293
5860         * cgraphunit.c (update_call_expr): Remove eh regions from statements
5861         which become non throw.
5862         (cgraph_function_versioning): Also clear DECL_WEAK.  Call
5863         update_call_expr after updating the flags on the decl.
5864
5865 2008-09-03  Jan Hubicka  <jh@suse.cz>
5866
5867         PR tree-optimization/37315
5868         * cgraph.c (cgraph_create_edge): Use gimple_has_body_p.
5869         * cgraphunit.c (verify_cgraph_node): drop gimple_body check.
5870         (cgraph_analyze_functions): Use node->analyzed
5871         (cgraph_mark_functions_to_output): Likewise.
5872         (cgraph_expand_function): All functions can be released after
5873         expanding.
5874         (cgraph_optimize): Use gimple_has_body_p.
5875         * ipa-inline.c (cgraph_clone_inlined_nodes): Use analyzed flag.
5876         (cgraph_decide_inlining_incrementally): Likewise.
5877         (inline_transform): Inline transform.
5878         * tree-inline.c (initialize_cfun): Do now shallow copy structure;
5879         copy fields needed.
5880         (inlinable_function_p): Drop gimple_body check.
5881         (expand_call_inline): Use gimple_has_body_p.
5882         * gimple.c (gimple_has_body_p): New.
5883         * gimple.h (gimple_has_body_p): Add prototype.
5884         * tree-cfg.c (execute_build_cfg): Remove gimple_body.
5885         (dump_function_to_file): Use gimple_has_body_p check.
5886
5887 2008-09-03  Jakub Jelinek  <jakub@redhat.com>
5888
5889         PR c++/37346
5890         * gimple.h (gimple_has_substatements): GIMPLE_OMP_CRITICAL has
5891         substatements.
5892         * tree-inline.c (remap_gimple_stmt): Handle GIMPLE_OMP_CRITICAL.
5893
5894 2008-09-03  Bernd Schmidt  <bernd.schmidt@analog.com>
5895
5896         From Michael Frysinger  <michael.frysinger@analog.com>
5897         * config/bfin/bfin.c (bfin_cpus[]): Add 0.1 for bf522, bf523, bf524,
5898         bf525, bf526, bf527, bf542, bf544, bf547, bf548, and bf549.  Add 0.2
5899         for bf538.
5900
5901 2008-09-03  Hari Sandanagobalane  <hariharan@picochip.com>
5902
5903         Add picoChip port.
5904         * doc/extend.texi: Document picoChip builtin functions.
5905         * doc/invoke.texi: Document picoChip options.
5906         * doc/contrib.texi: Add picoChip contribution.
5907         * doc/md.texi: Document picoChip constraints.
5908         * config.gcc: Add picochip-*-*.
5909         * config/picochip/: Add new port.
5910
5911 2008-09-03  Richard Guenther  <rguenther@suse.de>
5912
5913         PR tree-optimization/37328
5914         * tree-sra.c (sra_build_assignment): Gimplify properly.
5915         (generate_copy_inout): Take the correct stmt as definition,
5916         remove bogus assert.
5917
5918 2008-09-03  Bernd Schmidt  <bernd.schmidt@analog.com>
5919
5920         * config/bfin/bfin.c (bfin_expand_prologue): Honour no_stack_limit
5921         attributes.
5922
5923         From Michael Frysinger  <michael.frysinger@analog.com>
5924         * config/bfin/bfin.c (bfin_handle_option): Remove BF561 warning.
5925
5926 2008-09-03 Danny Smith  <dannysmith@usrs.sourceforge.net>
5927
5928         * gthr-win32.h (CONST_CAST2): Really make sure CONST_CAST2 is defined.
5929         (__gthread_setspecific): Revert 2008-08-31 change to
5930         __GTHREAD_HIDE_W32API case.  Apply it to !__GTHREAD_HIDE_W32API case.
5931
5932 2008-09-02  Aldy Hernandez  <aldyh@redhat.com>
5933
5934         * diagnostic.c (error_at): New.
5935         * toplev.h (error_at): New prototype.
5936         * c-typeck.c (build_array_ref): Call error_at instead of error.
5937         Pass location to pedwarn.
5938
5939 2008-09-02  Adam Nemet  <anemet@caviumnetworks.com>
5940
5941         * sel-sched.c (sel_hard_regno_rename_ok): Mark arguments unused.
5942
5943 2008-09-02  Jakub Jelinek  <jakub@redhat.com>
5944
5945         * dwarf2out.c (tree_add_const_value_attribute): Only handle
5946         VAR_DECL and CONST_DECL.
5947
5948 2008-09-02  H.J. Lu  <hongjiu.lu@intel.com>
5949             Jakub Jelinek  <jakub@redhat.com>
5950
5951         * config/i386/i386.c (X86_64_VARARGS_SIZE): Removed.
5952         (setup_incoming_varargs_64): Assume cum != NULL. Set/check
5953         ix86_varargs_gpr_size and ix86_varargs_fpr_size.  Use
5954         ix86_varargs_gpr_size instead of X86_64_REGPARM_MAX.
5955         Don't set ix86_save_varrargs_registers.
5956         (ix86_setup_incoming_varargs): Assume cum != NULL.
5957         (ix86_va_start): Check ix86_varargs_gpr_size and
5958         ix86_varargs_fpr_size instead of cfun->va_list_gpr_size and
5959         cfun->va_list_fpr_size, respectively.  Subtract 8*X86_64_REGPARM_MAX
5960         from frame pointer if ix86_varargs_gpr_size == 0.
5961         (ix86_compute_frame_layout): Updated.
5962         * config/i386/i386.h (ix86_save_varrargs_registers): Removed.
5963         (ix86_varargs_gpr_size): Define.
5964         (ix86_varargs_fpr_size): Likewise.
5965         (machine_function): Remove save_varrargs_registers.
5966         Add varargs_gpr_size and varargs_fpr_size.
5967
5968 2008-09-02  Jakub Jelinek  <jakub@redhat.com>
5969
5970         * config/alpha/alpha.c (va_list_skip_additions,
5971         alpha_stdarg_optimize_hook, alpha_gimplify_va_arg_1): Tuplify.
5972         (alpha_gimplify_va_arg): Call unshare_expr on second use of
5973         offset_field.
5974
5975         PR tree-optimization/36766
5976         * tree-cfg.c (gimple_purge_all_dead_eh_edges): Do nothing
5977         for already removed basic blocks.
5978
5979         PR target/36332
5980         * real.c (real_maxval): Clear a lower bit to make real_maxval
5981         match get_max_float for IBM long double format.
5982
5983 2008-09-02  Andreas Schwab  <schwab@suse.de>
5984
5985         * configure.ac: Use m4_quote to quote the expansion of m4_do.
5986         * configure: Regenerate.
5987
5988 2008-09-02  Richard Sandiford  <rdsandiford@googlemail.com>
5989
5990         * simplify-rtx.c (simplify_binary_operation_1): Check for CONST,
5991         SYMBOL_REF and LABEL_REF when applying plus_constant, instead of
5992         checking for a non-VOID CONSTANT_P.
5993
5994 2008-09-02  Jan Hubicka  <jh@suse.cz>
5995
5996         * predict.c (pass_strip_predict_hints): Avoid bugs dump file.
5997         * expmed.c (expand_divmod): Fix test of smod_pow2_cheap and
5998         sdiv_pow2_cheap
5999
6000 2008-09-02  H.J. Lu  <hongjiu.lu@intel.com>
6001
6002         * expr.c (emit_group_store): Don't assert stack temp mode size.
6003
6004 2008-09-02  Sebastian Pop  <sebastian.pop@amd.com>
6005             Tobias Grosser  <grosser@fim.uni-passau.de>
6006             Jan Sjodin  <jan.sjodin@amd.com>
6007             Harsha Jagasia  <harsha.jagasia@amd.com>
6008             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
6009             Konrad Trifunovic  <konrad.trifunovic@inria.fr>
6010             Adrien Eliche  <aeliche@isty.uvsq.fr>
6011
6012         Merge from graphite branch.
6013         * graphite.c: New.
6014         * graphite.h: New.
6015         * tree-loop-linear.c (perfect_loop_nest_depth): Export.
6016         * doc/invoke.texi (-floop-block, -floop-interchange,
6017         -floop-strip-mine): Document new flags.
6018         * tree-into-ssa.c (gimple_vec): Moved...
6019         * tree-loop-distribution.c (rdg_component): Moved...
6020         * cfgloopmanip.c: Include tree-flow.h.
6021         (update_dominators_in_loop): New.
6022         (create_empty_if_region_on_edge): New.
6023         (create_empty_loop_on_edge): New.
6024         (loopify): Use update_dominators_in_loop.
6025         * tree-pass.h (pass_graphite_transforms): Declared.
6026         * configure: Regenerate.
6027         * tree-phinodes.c (make_phi_node): Export.
6028         (add_phi_node_to_bb): New, split from create_phi_node.
6029         * tree-chrec.c (for_each_scev_op): New.
6030         * tree-chrec.h (for_each_scev_op): Declared.
6031         * tree-ssa-loop-ivopts.c (get_phi_with_result): New.
6032         (remove_statement): Call get_phi_with_result.
6033         * config.in (HAVE_cloog): Undef.
6034         * gdbinit.in (pgg): New.
6035         * timevar.def (TV_GRAPHITE_TRANSFORMS): New.
6036         * tree-ssa-loop.c (graphite_transforms): New.
6037         (gate_graphite_transforms): New.
6038         (pass_graphite_transforms): New.
6039         * configure.ac (PPLLIBS, PPLINC, CLOOGLIBS, CLOOGINC,
6040         HAVE_cloog): Defined.
6041         * tree-vectorizer.c (rename_variables_in_bb): Export.
6042         * tree-data-ref.c (dr_may_alias_p): Export.
6043         (stmt_simple_memref_p): New.
6044         (find_data_references_in_stmt): Export.
6045         (find_data_references_in_loop): Export.
6046         (create_rdg_edge_for_ddr): Initialize RDGE_RELATION.
6047         (create_rdg_edges_for_scalar): Initialize RDGE_RELATION.
6048         (create_rdg_vertices): Export.
6049         (build_empty_rdg): New.
6050         (build_rdg): Call build_empty_rdg.  Free dependence_relations.
6051         * tree-data-ref.h (rdg_component): ... here.
6052         (scop_p): New.
6053         (struct data_reference): Add a field scop.
6054         (DR_SCOP): New.
6055         (find_data_references_in_loop): Declared.
6056         (find_data_references_in_stmt): Declared.
6057         (create_rdg_vertices): Declared.
6058         (dr_may_alias_p): Declared.
6059         (stmt_simple_memref_p): Declared.
6060         (struct rdg_edge): Add a field ddr_p relation.
6061         (build_empty_rdg): Declared.
6062         * lambda.h (lambda_matrix): Declare a VEC of.
6063         (find_induction_var_from_exit_cond): Declared.
6064         (lambda_vector_compare): New.
6065         * common.opt (fgraphite, floop-strip-mine,
6066         floop-interchange, floop-block): New flags.
6067         * lambda-code.c (find_induction_var_from_exit_cond): Export.
6068         * cfgloop.c (is_loop_exit): New.
6069         * cfgloop.h (is_loop_exit): Declared.
6070         (create_empty_if_region_on_edge): Declared.
6071         (create_empty_loop_on_edge): Declared.
6072         * tree-flow.h (add_phi_node_to_bb): Declared.
6073         (make_phi_node): Declared.
6074         (rename_variables_in_bb): Declared.
6075         (perfect_loop_nest_depth): Declared.
6076         (graphite_transform_loops): Declared.
6077         * Makefile.in (cfgloopmanip.o): Depend on TREE_FLOW_H.
6078         (graphite.o-warn): Add -Wno-error.
6079         (PPLLIBS, PPLINC, CLOOGLIBS, CLOOGINC): Declared.
6080         (LIBS): Add GMPLIBS, CLOOGLIBS, PPLLIBS.
6081         (INCLUDES): Add PPLINC, CLOOGINC.
6082         (OBJS-common): Add graphite.o.
6083         (graphite.o): Add rule.
6084         * gimple.h (gimple_vec): ... here.
6085         * tree-cfg.c (print_loops): Start printing at ENTRY_BLOCK_PTR.
6086         * passes.c (init_optimization_passes): Schedule
6087         pass_graphite_transforms.
6088
6089 2008-09-02  Samuel Tardieu  <sam@rfc1149.net>
6090
6091         PR target/37283
6092         * opts.c (decode_options): Move processing of -fno-unit-at-a-time
6093         and -fno-toplevel-reorder after handle_options.
6094
6095 2008-09-02  Paul Brook  <paul@codesourcery.com>
6096
6097         * config/arm/arm.c (arm_tune_cortex_a9): Define.
6098         (arm_override_options): Set arm_tune_cortex_a9.
6099         (arm_rtx_costs_1): Make register shifts more expensive on Cortex-A9.
6100         (arm_issue_rate): Handle cortexa9.
6101         * config/arm/arm.h (arm_tune_cortex_a9): Declare.
6102         * config/arm/arm-cores.def: Add cortex-a9.
6103         * config/arm/arm-tune.md: Regenerate.
6104         * config/arm/arm.md: Include cortex-a9.md.
6105         (generic_sched, generic_vfp): Add cortexa9.
6106         * config/arm/cortex-a9.md: New file.
6107
6108 2008-09-02  Richard Guenther  <rguenther@suse.de>
6109
6110         PR tree-optimization/37327
6111         * tree-vrp.c (register_new_assert_for): Make sure to not have
6112         TREE_OVERFLOW set on the bound.
6113
6114 2008-09-02  Alexander Monakov  <amonakov@ispras.ru>
6115
6116         Fixed typo in date of the 2008-09-01 MOVE_RATIO commit.
6117
6118         * config/ia64/ia64.opt (msched-ar-data-spec): Default to 1.
6119         * config/ia64/ia64.c (ia64_set_sched_flags): Always initialize
6120         spec_info->mask.
6121
6122 2008-09-02  Victor Kaplansky  <victork@il.ibm.com>
6123
6124         * gcc/config/spu/spu.md (divdf3): Removed.
6125
6126 2008-09-02  Jakub Jelinek  <jakub@redhat.com>
6127
6128         PR tree-optimization/37095
6129         * cgraph.c (cgraph_node): When creating new cgraph node after
6130         assembler_name_hash has been populated, record it in the hash
6131         table.
6132
6133 2008-09-01  Paul Brook  <paul@codesourcery.com>
6134
6135         * doc/invoke.texi: Document -mword-relocations.
6136         * config/arm/uclinux-elf.h (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
6137         * config/arm/symbian.h (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
6138         * config/arm/vxworks.h (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
6139         * config/arm/arm.c (arm_split_constant): Use arm_emit_movpair.
6140         (arm_rtx_costs_1, arm_size_rtx_costs): Handle HIGH and LO_SUM.
6141         (arm_emit_movpair): New function.
6142         (arm_print_operand <c>): Handle sybolic addresses.
6143         * config/arm/arm.h (TARGET_USE_MOVT): Define.
6144         (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
6145         * config/arm/arm-protos.h (arm_emit_movpair): Add prototype.
6146         * config/arm/arm.opt: Add -mword-relocations.
6147         * config/arm/arm.md (movsi): Use arm_emit_movpair.
6148         (arm_movt, arm_movw): New.
6149
6150 2008-09-01  Paul Brook  <paul@codesourcery.com>
6151
6152         * config/arm/arm.c (arm_override_options): Set arm_abi earlier.
6153         Allow Interworking on ARMv4 EABI based targets.
6154         * config/arm/bpabi.h (TARGET_FIX_V4BX_SPEC): Define.
6155         (SUBTARGET_EXTRA_ASM_SPEC, LINK_SPEC): Add TARGET_FIX_V4BX_SPEC.
6156
6157 2008-09-01  Paul Brook  <paul@codesourcery.com>
6158
6159         * config/arm/thumb2.md (thumb2_negscc): Match the correct operand for
6160         optimized LT0 test.  Remove optimization for GT.
6161
6162 2008-09-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6163
6164         * pa64-hpux.h (LIB_SPEC): Link against librt when building static
6165         openmp applications.
6166         * pa-hpux11.h (LIB_SPEC): Likewise.
6167
6168         * ira.c (setup_eliminable_regset): Only declare i if ELIMINABLE_REGS
6169         is defined.
6170
6171 2008-09-01  Jan Hubicka  <jh@suse.cz>
6172
6173         * predict.c (maybe_hot_count_p, maybe_hot_edge_p): When profile is
6174         present, use only counts; when guessed use only frequencies.
6175         (estimate_bb_frequencies): Use function_frequency.
6176         * profile.c (compute_branch_probabilities): Exit early when
6177         profile reading failed. Set profile_status.
6178         (branch_prob): Do not set profile_status.
6179
6180 2008-09-01  Aldy Hernandez  <aldyh@redhat.com>
6181
6182         * tree.c (protected_set_expr_location): New.
6183         * tree.h (protected_set_expr_location): New prototype.
6184         * c-tree.h (build_array_ref): Add argument.
6185         (parser_build_unary_op): Same.
6186         * c-typeck.c (build_indirect_ref): Handle new location argument.
6187         (build_array_ref): Same.
6188         (parser_build_unary_op): Same.
6189         * gimplify.c (gimplify_asm_expr): Set input_location before calling
6190         error.
6191         * c-omp.c (c_finish_omp_atomic): Pass location when calling
6192         build_indirect_ref.
6193         * c-common.c (finish_label_address_expr): Handle new location argument.
6194         * c-common.h (build_indirect_ref): Add argument.
6195         (finish_label_address_expr): Same.
6196         * c-parser.c (c_parser_unary_expression): Pass location to build
6197         functions.
6198         (c_parser_postfix_expression): Same.
6199
6200 2008-09-01  Paul Brook  <paul@codesourcery.com>
6201
6202         * config/arm/arm.md: Include cortex-r4f.md.
6203         (attr fpu): Update type list.
6204         (attr type): Add fcpys, ffariths, ffarithd, fadds, faddd, fconsts,
6205         fconstd, fcmps and fcmpd.
6206         (attr tune_cortexr4): Define.
6207         (attr generic_sched, attr generic_vfp): Use tune_cortexr4.
6208         * config/arm/vfp.md: Document fcpys, ffariths, ffarithd, fadds, faddd,
6209         fconsts, fconstd, fcmps and fcmpd.  Use them in insn patterns.
6210         * config/arm/arm.c (arm_issue_rate): Add cortexr4f.
6211         * config/arm/arm1020e.md (v10_ffarith, v10_farith): Use new insn types.
6212         * config/arm/cortex-a8-neon.md (cortex_a8_vfp_add_sub,
6213         cortex_a8_vfp_farith: Ditto.
6214         * config/arm/vfp11.md (vfp_ffarith, vfp_farith): Ditto.
6215         * config/arm/cortex-r4.md: Use tune_cortexr4.
6216         * config/arm/cortex-r4f.md: New file.
6217
6218 2008-09-01  Richard Guenther  <rguenther@suse.de>
6219
6220         PR tree-optimization/37305
6221         * tree-ssa-ccp.c (ccp_fold): Do not set TREE_OVERFLOW on
6222         the result of constant conversions.
6223         (fold_gimple_assign): Likewise.
6224
6225 2008-09-01  Andrey Belevantsev  <abel@ispras.ru>
6226
6227         * sel-sched-ir.c (cmp_v_in_regset_pool): Surround with
6228         #ifdef ENABLE_CHECKING.
6229
6230 2008-09-01  Andrey Belevantsev  <abel@ispras.ru>
6231
6232         * sel-sched-dump.c: Surround with #ifdef INSN_SCHEDULING.
6233         * sched-int.h (print_insn, print_pattern, print_value): Declare also
6234         when !INSN_SCHEDULING.
6235
6236 2008-09-01  Andreas Schwab  <schwab@suse.de>
6237
6238         * config/ia64/ia64.c (TARGET_ADDRESS_COST): Update.
6239
6240 2008-09-01  Paul Brook  <paul@codesourcery.com>
6241
6242         * config/arm/arm.c (arm_no_early_mul_dep): Handle multiply-subtract.
6243
6244 2008-09-01  Jan Hubicka  <jh@suse.cz>
6245
6246         * config/spu/spu.c (spu_expand_block_move) Update call of MOVE_RATIO.
6247
6248         * expr.c (MOVE_BY_PIECES_P, CLEAR_BY_PIECES_P, SET_BY_PIECES_P):
6249         Pass speed operand.
6250         * expr.h (MOVE_RATIO, CLEAR_RATIO, SET_RATIO): Update.
6251         * gimplify.c (gimplify_init_constructor): Add speed operand.
6252         * tree-sra.c (decide_block_copy): Likewise.
6253         * tree-inline.c (estimate_move_cost): Likewise.
6254         * config/alpha/alpha.h (MOVE_RATIO): Update.
6255         * config/frv/frv.c (MOVE_RATIO): Update.
6256         * config/spu/spu.h (MOVE_RATIO): Update.
6257         * config/sparc/sparc.h (MOVE_RATIO): Update.
6258         * config/i386/i386.h (MOVE_RATIO, CLEAR_RATIO): Update.
6259         * config/m68hc11/m68hc11.h (MOVE_RATIO): Update.
6260         * config/cris/cris.h (MOVE_RATIO): Update.
6261         * config/mn10300/mn10300.h (MOVE_RATIO): Update.
6262         * config/arm/arm.h (MOVE_RATIO): Update.
6263         * config/pa/pa.md: Update uses of MOVE_RATIO
6264         * config/pa/pa.h (MOVE_RATIO): Update.
6265         * config/mips/mips.h (MOVE_RATIO, MOVE_BY_PIECES,
6266         CLEAR_RATIO, SET_RATIO): Update.
6267         * config/h8300/h8300.h (MOVE_RATIO): Update.
6268         * config/v850/v850.h (MOVE_RATIO): Update.
6269         * config/bfin/bfin.h (MOVE_RATIO): Update.
6270
6271 2008-08-31  Andrey Belevantsev  <abel@ispras.ru>
6272             Dmitry Melnik  <dm@ispras.ru>
6273             Dmitry Zhurikhin  <zhur@ispras.ru>
6274             Alexander Monakov  <amonakov@ispras.ru>
6275             Maxim Kuvyrkov  <maxim@codesourcery.com>
6276
6277         * sel-sched.h, sel-sched-dump.h, sel-sched-ir.h, sel-sched.c,
6278         sel-sched-dump.c, sel-sched-ir.c: New files.
6279         * Makefile.in (OBJS-common): Add selective scheduling object files.
6280         (sel-sched.o, sel-sched-dump.o, sel-sched-ir.o): New entries.
6281         (SEL_SCHED_IR_H, SEL_SCHED_DUMP_H): New entries.
6282         (sched-vis.o): Add dependency on $(INSN_ATTR_H).
6283         * cfghooks.h (get_cfg_hooks, set_cfg_hooks): New prototypes.
6284         * cfghooks.c (get_cfg_hooks, set_cfg_hooks): New functions.
6285         (make_forwarder_block): Update loop latch if we have redirected
6286         the loop latch edge.
6287         * cfgloop.c (get_loop_body_in_custom_order): New function.
6288         * cfgloop.h (LOOPS_HAVE_FALLTHRU_PREHEADERS): New enum field.
6289         (CP_FALLTHRU_PREHEADERS): Likewise.
6290         (get_loop_body_in_custom_order): Declare.
6291         * cfgloopmanip.c (has_preds_from_loop): New.
6292         (create_preheader): Honor CP_FALLTHRU_PREHEADERS.
6293         Assert that the preheader edge will be fall thru when it is set.
6294         * common.opt (fsel-sched-bookkeeping, fsel-sched-pipelining,
6295         fsel-sched-pipelining-outer-loops, fsel-sched-renaming,
6296         fsel-sched-substitution, fselective-scheduling): New flags.
6297         * cse.c (hash_rtx_cb): New.
6298         (hash_rtx): Use it.
6299         * dbgcnt.def (sel_sched_cnt, sel_sched_region_cnt,
6300         sel_sched_insn_cnt): New counters.
6301         * final.c (compute_alignments): Export.  Free dominance
6302         info after loop_optimizer_finalize.
6303         * genattr.c (main): Output maximal_insn_latency prototype.
6304         * genautomata.c (output_default_latencies): New.
6305         Factor its code from ...
6306         (output_internal_insn_latency_func): ... here.
6307         (output_internal_maximal_insn_latency_func): New.
6308         (output_maximal_insn_latency_func): New.
6309         * hard-reg-set.h (UHOST_BITS_PER_WIDE_INT): Define unconditionally.
6310         (struct hard_reg_set_iterator): New.
6311         (hard_reg_set_iter_init, hard_reg_set_iter_set,
6312         hard_reg_set_iter_next): New functions.
6313         (EXECUTE_IF_SET_IN_HARD_REG_SET): New macro.
6314         * lists.c (remove_free_INSN_LIST_node,
6315         remove_free_EXPR_LIST_node): New functions.
6316         * loop-init.c (loop_optimizer_init): When
6317         LOOPS_HAVE_FALLTHRU_PREHEADERS, set CP_FALLTHRU_PREHEADERS when
6318         calling create_preheaders.
6319         (loop_optimizer_finalize): Do not verify flow info after reload.
6320         * recog.c (validate_replace_rtx_1): New parameter simplify.
6321         Default it to true.  Update all uses.  Factor out simplifying
6322         code to ...
6323         (simplify_while_replacing): ... this new function.
6324         (validate_replace_rtx_part,
6325         validate_replace_rtx_part_nosimplify): New.
6326         * recog.h (validate_replace_rtx_part,
6327         validate_replace_rtx_part_nosimplify): Declare.
6328         * rtl.c (rtx_equal_p_cb): New.
6329         (rtx_equal_p): Use it.
6330         * rtl.h (rtx_equal_p_cb, hash_rtx_cb): Declare.
6331         (remove_free_INSN_LIST_NODE, remove_free_EXPR_LIST_node,
6332         debug_bb_n_slim, debug_bb_slim,    print_rtl_slim): Likewise.
6333         * vecprim.h: Add a vector type for unsigned int.
6334         * haifa-sched.c: Include vecprim.h and cfgloop.h.
6335         (issue_rate, sched_verbose_param, note_list, dfa_state_size,
6336         ready_try, cycle_issued_insns, spec_info): Make global.
6337         (readyp): Initialize.
6338         (dfa_lookahead): New global variable.
6339         (old_max_uid, old_last_basic_block): Remove.
6340         (h_i_d): Make it a vector.
6341         (INSN_TICK, INTER_TICK, QUEUE_INDEX, INSN_COST): Make them work
6342         through HID macro.
6343         (after_recovery, adding_bb_to_current_region_p):
6344         New variables to handle correct insertion of the recovery code.
6345         (struct ready_list): Move declaration to sched-int.h.
6346         (rgn_n_insns): Removed.
6347         (rtx_vec_t): Move to sched-int.h.
6348         (find_insn_reg_weight): Remove.
6349         (find_insn_reg_weight1): Rename to find_insn_reg_weight.
6350         (haifa_init_h_i_d, haifa_finish_h_i_d):
6351         New functions to initialize / finalize haifa instruction data.
6352         (extend_h_i_d, init_h_i_d): Rewrite.
6353         (unlink_other_notes): Move logic to add_to_note_list.  Handle
6354         selective scheduler.
6355         (ready_lastpos, ready_element, ready_sort, reemit_notes,
6356         find_fallthru_edge): Make global, remove static prototypes.
6357         (max_issue): Make global.  Add privileged_n and state parameters.  Use
6358         them.
6359         (extend_global, extend_all): Removed.
6360         (init_before_recovery): Add new param.  Fix the handling of the case
6361         when we insert a recovery code before the EXIT which has a predecessor
6362         with a fallthrough edge to it.
6363         (create_recovery_block): Make global.  Rename to
6364         sched_create_recovery_block.  Update.
6365         (change_pattern): Rename to sched_change_pattern.  Make global.
6366         (speculate_insn): Rename to sched_speculate_insn.  Make global.
6367         Split haifa-specific functionality into ...
6368         (haifa_change_pattern): New static function.
6369         (sched_extend_bb): New static function.
6370         (sched_init_bbs): New function.
6371         (current_sched_info): Change type to struct haifa_sched_info.
6372         (insn_cost): Adjust for selective scheduling.
6373         (dep_cost_1): New function.  Move logic from ...
6374         (dep_cost): ... here.
6375         (dep_cost): Use dep_cost_1.
6376         (contributes_to_priority_p): Use sched_deps_info instead of
6377         current_sched_info.
6378         (priority): Adjust to work with selective scheduling.  Process the
6379         corner case when all dependencies don't contribute to priority.
6380         (rank_for_schedule): Use ds_weak instead of dep_weak.
6381         (advance_state): New function.  Move logic from ...
6382         (advance_one_cycle): ... here.
6383         (add_to_note_list, concat_note_lists): New functions.
6384         (rm_other_notes): Make static.  Adjust for selective scheduling.
6385         (remove_notes, restore_other_notes): New functions.
6386         (move_insn): Add two arguments.  Update assert.  Don't call
6387         reemit_notes.
6388         (choose_ready): Remove lookahead variable, use dfa_lookahead.
6389         Remove more_issue, max_points.  Move the code to initialize
6390         max_lookahead_tries to max_issue.
6391         (schedule_block): Remove rgn_n_insns1 parameter.  Don't allocate
6392         ready.  Adjust use of move_insn.  Call restore_other_notes.
6393         (luid): Remove.
6394         (sched_init, sched_finish): Move Haifa-specific initialization/
6395         finalization to ...
6396         (haifa_sched_init, haifa_sched_finish): ... respectively.
6397         New functions.
6398         (setup_sched_dump): New function.
6399         (haifa_init_only_bb): New static function.
6400         (haifa_speculate_insn): New static function.
6401         (try_ready): Use haifa_* instead of speculate_insn and change_pattern.
6402         (extend_ready, extend_all): Remove.
6403         (sched_extend_ready_list, sched_finish_ready_list): New functions.
6404         (create_check_block_twin, add_to_speculative_block): Use
6405         haifa_insns_init instead of extend_global.  Update to use new
6406         initialization functions.  Change parameter.  Factor out code from
6407         create_check_block_twin to ...
6408         (sched_create_recovery_edges) ... this new function.
6409         (add_block): Remove.
6410         (sched_scan_info): New.
6411         (extend_bb): Use sched_scan_info.
6412         (init_bb, extend_insn, init_insn, init_insns_in_bb, sched_scan): New
6413         static functions for walking through scheduling region.
6414         (sched_luids): New vector variable to replace uid_to_luid.
6415         (luids_extend_insn): New function.
6416         (sched_max_luid): New variable.
6417         (luids_init_insn): New function.
6418         (sched_init_luids, sched_finish_luids): New functions.
6419         (insn_luid): New debug function.
6420         (sched_extend_target): New function.
6421         (haifa_init_insn): New static function.
6422         (sched_init_only_bb): New hook.
6423         (sched_split_block): New hook.
6424         (sched_split_block_1): New function.
6425         (sched_create_empty_bb): New hook.
6426         (sched_create_empty_bb_1): New function.
6427         (common_sched_info, ready): New global variables.
6428         (current_sched_info_var): Remove.
6429         (move_block_after_check): Use common_sched_info.
6430         (haifa_luid_for_non_insn): New static function.
6431         (init_before_recovery): Use haifa_init_only_bb instead of add_block.
6432         (increase_insn_priority): New.
6433         * modulo-sched.c: (issue_rate): Remove static declaration.
6434         (sms_sched_info): Change type to haifa_sched_info.
6435         (sms_sched_deps_info, sms_common_sched_info): New variables.
6436         (setup_sched_infos): New.
6437         (sms_schedule): Initialize them.  Call haifa_sched_init/finish.
6438         Do not call regstat_free_calls_crossed.
6439         (sms_print_insn): Use const_rtx.
6440         * params.def (PARAM_MAX_PIPELINE_REGION_BLOCKS,
6441         PARAM_MAX_PIPELINE_REGION_INSNS, PARAM_SELSCHED_MAX_LOOKAHEAD,
6442         PARAM_SELSCHED_MAX_SCHED_TIMES, PARAM_SELSCHED_INSNS_TO_RENAME,
6443         PARAM_SCHED_MEM_TRUE_DEP_COST): New.
6444         * sched-deps.c (sched_deps_info): New.  Update all relevant uses of
6445         current_sched_info to use it.
6446         (enum reg_pending_barrier_mode): Move to sched-int.h.
6447         (h_d_i_d): New variable. Initialize to NULL.
6448         ({true, output, anti, spec, forward}_dependency_cache): Initialize
6449         to NULL.
6450         (estimate_dep_weak): Remove static declaration.
6451         (sched_has_condition_p): New function.  Adjust users of
6452         sched_get_condition to use it instead.
6453         (conditions_mutex_p): Add arguments indicating which conditions are
6454         reversed.  Use them.
6455         (sched_get_condition_with_rev): Rename from sched_get_condition.  Add
6456         argument to indicate whether returned condition is reversed.  Do not
6457         generate new rtx when condition should be reversed; indicate it by
6458         setting new argument instead.
6459         (add_dependence_list_and_free): Add deps parameter.
6460         Update all users.  Do not free dependence list when
6461         deps context is readonly.
6462         (add_insn_mem_dependence, flush_pending_lists): Adjust for readonly
6463         contexts.
6464         (remove_from_dependence_list, remove_from_both_dependence_lists): New.
6465         (remove_from_deps): New. Use the above functions.
6466         (cur_insn, can_start_lhs_rhs_p): New static variables.
6467         (add_or_update_back_dep_1): Initialize present_dep_type.
6468         (haifa_start_insn, haifa_finish_insn, haifa_note_reg_set,
6469         haifa_note_reg_clobber, haifa_note_reg_use, haifa_note_mem_dep,
6470         haifa_note_dep): New functions implementing dependence hooks for
6471         the Haifa scheduler.
6472         (note_reg_use, note_reg_set, note_reg_clobber, note_mem_dep,
6473         note_dep): New functions.
6474         (ds_to_dt, extend_deps_reg_info, maybe_extend_reg_info_p): New
6475         functions.
6476         (init_deps): Initialize last_reg_pending_barrier and deps->readonly.
6477         (free_deps): Initialize deps->reg_last.
6478         (sched_analyze_reg, sched_analyze_1, sched_analyze_2,
6479         sched_analyze_insn): Update to use dependency hooks infrastructure
6480         and readonly contexts.
6481         (deps_analyze_insn): New function.  Move part of logic from ...
6482         (sched_analyze): ... here.  Also move some logic to ...
6483         (deps_start_bb): ... here.  New function.
6484         (add_forw_dep, delete_forw_dep): Guard use of INSN_DEP_COUNT with
6485         sel_sched_p.
6486         (sched_deps_init): New function.  Move code from ...
6487         (init_dependency_caches): ... here.  Remove.
6488         (init_deps_data_vector): New.
6489         (sched_deps_finish): New function.  Move code from ...
6490         (free_dependency_caches): ... here.  Remove.
6491         (init_deps_global, finish_deps_global): Adjust for use with
6492         selective scheduling.
6493         (get_dep_weak): Move logic to ...
6494         (get_dep_weak_1): New function.
6495         (ds_merge): Move logic to ...
6496         (ds_merge_1): New static function.
6497         (ds_full_merge, ds_max_merge, ds_get_speculation_types): New functions.
6498         (ds_get_max_dep_weak): New function.
6499         * sched-ebb.c (sched_n_insns): Rename to sched_rgn_n_insns.
6500         (n_insns): Rename to rgn_n_insns.
6501         (debug_ebb_dependencies): New function.
6502         (init_ready_list): Use it.
6503         (begin_schedule_ready): Use sched_init_only_bb.
6504         (ebb_print_insn): Indicate when an insn starts a new cycle.
6505         (contributes_to_priority, compute_jump_reg_dependencies,
6506         add_remove_insn, fix_recovery_cfg): Add ebb_ prefix to function names.
6507         (add_block1): Remove to ebb_add_block.
6508         (ebb_sched_deps_info, ebb_common_sched_info): New variables.
6509         (schedule_ebb): Initialize them.  Use remove_notes instead of
6510         rm_other_notes.  Use haifa_local_init/finish.
6511         (schedule_ebbs): Use haifa_sched_init/finish.
6512         * sched-int.h: Include vecprim.h, remove rtl.h.
6513         (struct ready_list): Delete declaration.
6514         (sched_verbose_param, enum sched_pass_id_t,
6515         bb_vec_t, insn_vec_t, rtx_vec_t): New.
6516         (struct sched_scan_info_def): New structure.
6517         (sched_scan_info, sched_scan, sched_init_bbs,
6518         sched_init_luids, sched_finish_luids, sched_extend_target,
6519         haifa_init_h_i_d, haifa_finish_h_i_d): Declare.
6520         (struct common_sched_info_def): New.
6521         (common_sched_info, haifa_common_sched_info,
6522         sched_emulate_haifa_p): Declare.
6523         (sel_sched_p): New.
6524         (sched_luids): Declare.
6525         (INSN_LUID, LUID_BY_UID, SET_INSN_LUID): Declare.
6526         (sched_max_luid, insn_luid): Declare.
6527         (note_list, remove_notes, restore_other_notes, bb_note): Declare.
6528         (sched_insns_init, sched_insns_finish, xrecalloc, reemit_notes,
6529         print_insn, print_pattern, print_value, haifa_classify_insn,
6530         sel_find_rgns, sel_mark_hard_insn, dfa_state_size, advance_state,
6531         setup_sched_dump, sched_init, sched_finish,
6532         sel_insn_is_speculation_check): Export.
6533         (struct ready_list): Move from haifa-sched.c.
6534         (ready_try, ready, max_issue): Export.
6535         (ebb_compute_jump_reg_dependencies, find_fallthru_edge,
6536         sched_init_only_bb, sched_split_block, sched_split_block_1,
6537         sched_create_empty_bb, sched_create_empty_bb_1,
6538         sched_create_recovery_block, sched_create_recovery_edges): Export.
6539         (enum reg_pending_barrier_mode): Export.
6540         (struct deps): New fields `last_reg_pending_barrier' and `readonly'.
6541         (deps_t): New.
6542         (struct sched_info): Rename to haifa_sched_info.  Use const_rtx for
6543         print_insn field.  Move add_block and fix_recovery_cfg to
6544         common_sched_info_def.  Move compute_jump_reg_dependencies,
6545         use_cselib  ...
6546         (struct sched_deps_info_def): ... this new structure.
6547         (sched_deps_info): Declare.
6548         (struct spec_info_def): Remove weakness_cutoff, add
6549         data_weakness_cutoff and control_weakness_cutoff.
6550         (spec_info): Declare.
6551         (struct _haifa_deps_insn_data): Split from haifa_insn_data.  Add
6552         dep_count field.
6553         (struct haifa_insn_data): Rename to struct _haifa_insn_data.
6554         (haifa_insn_data_def, haifa_insn_data_t): New typedefs.
6555         (current_sched_info): Change type to struct haifa_sched_info.
6556         (haifa_deps_insn_data_def, haifa_deps_insn_data_t): New typedefs.
6557         (h_d_i_d): New variable.
6558         (HDID): New accessor macro.
6559         (h_i_d): Change type to VEC (haifa_insn_data_def, heap) *.
6560         (HID): New accessor macro.  Rewrite h_i_d accessor macros through HID
6561         and HDID.
6562         (IS_SPECULATION_CHECK_P): Update for selective scheduler.
6563         (enum SCHED_FLAGS): Update for selective scheduler.
6564         (enum SPEC_SCHED_FLAGS): New flag SEL_SCHED_SPEC_DONT_CHECK_CONTROL.
6565         (init_dependency_caches, free_dependency_caches): Delete declarations.
6566         (deps_analyze_insn, remove_from_deps, get_dep_weak_1,
6567         estimate_dep_weak, ds_full_merge, ds_max_merge, ds_weak,
6568         ds_get_speculation_types, ds_get_max_dep_weak, sched_deps_init,
6569         sched_deps_finish, haifa_note_reg_set, haifa_note_reg_use,
6570         haifa_note_reg_clobber, maybe_extend_reg_info_p, deps_start_bb,
6571         ds_to_dt): Export.
6572         (rm_other_notes): Delete declaration.
6573         (schedule_block): Remove one argument.
6574         (cycle_issued_insns, issue_rate, dfa_lookahead, ready_sort,
6575         ready_element, ready_lastpos, sched_extend_ready_list,
6576         sched_finish_ready_list, sched_change_pattern, sched_speculate_insn,
6577         concat_note_lists): Export.
6578         (struct region): Move from sched-rgn.h.
6579         (nr_regions, rgn_table, rgn_bb_table, block_to_bb, containing_rgn,
6580         RGN_NR_BLOCKS, RGN_BLOCKS, RGN_DONT_CALC_DEPS, RGN_HAS_REAL_EBB,
6581         BLOCK_TO_BB, CONTAINING_RGN): Export.
6582         (ebb_head, BB_TO_BLOCK, EBB_FIRST_BB, EBB_LAST_BB, INSN_BB): Likewise.
6583         (current_nr_blocks, current_blocks, target_bb): Likewise.
6584         (dep_cost_1, sched_is_disabled_for_current_region_p, sched_rgn_init,
6585         sched_rgn_finish, rgn_setup_region, sched_rgn_compute_dependencies,
6586         sched_rgn_local_init, extend_regions,
6587         rgn_make_new_region_out_of_new_block, compute_priorities,
6588         debug_rgn_dependencies, free_rgn_deps, contributes_to_priority,
6589         extend_rgns, deps_join rgn_setup_common_sched_info,
6590         rgn_setup_sched_infos, debug_regions, debug_region, dump_region_dot,
6591         dump_region_dot_file, haifa_sched_init, haifa_sched_finish): Export.
6592         (get_rgn_sched_max_insns_priority, sel_add_to_insn_priority,
6593         increase_insn_priority): Likewise.
6594         * sched-rgn.c: Include sel-sched.h.
6595         (ref_counts): New static variable.  Use it ...
6596         (INSN_REF_COUNT): ... here.  Rewrite and move closer to uses.
6597         (FED_BY_SPEC_LOAD, IS_LOAD_INSN): Rewrite to use HID accessor macro.
6598         (sched_is_disabled_for_current_region_p): Delete static declaration.
6599         (struct region): Move to sched-int.h.
6600         (nr_regions, rgn_table, rgn_bb_table, block_to_bb, containing_rgn,
6601         ebb_head): Define and initialize.
6602         (RGN_NR_BLOCKS, RGN_BLOCKS, RGN_DONT_CALC_DEPS, RGN_HAS_REAL_EBB,
6603         BLOCK_TO_BB, CONTAINING_RGN, debug_regions, extend_regions,
6604         BB_TO_BLOCK, EBB_FIRST_BB, EBB_LAST_BB): Move to
6605         sched-int.h.
6606         (find_single_block_region): Add new argument to indicate that EBB
6607         regions should be constructed.
6608         (debug_live): Delete declaration.
6609         (current_nr_blocks, current_blocks, target_bb):
6610         Remove static qualifiers.
6611         (compute_dom_prob_ps, check_live, update_live, set_spec_fed): Delete
6612         declaration.
6613         (init_regions): Delete declaration.
6614         (debug_region, bb_in_region_p, dump_region_dot_file, dump_region_dot,
6615         rgn_estimate_number_of_insns): New.
6616         (too_large): Use estimate_number_of_insns.
6617         (haifa_find_rgns): New. Move the code from ...
6618         (find_rgns): ... here.  Call either sel_find_rgns or haifa_find_rgns.
6619         (free_trg_info): New.
6620         (compute_trg_info): Allocate candidate tables here instead of ...
6621         (init_ready_list): ... here.
6622         (rgn_print_insn): Use const_rtx.
6623         (contributes_to_priority, extend_regions): Delete static declaration.
6624         (add_remove_insn, fix_recovery_cfg): Add rgn_ to function names.
6625         (add_block1): Rename to rgn_add_block.
6626         (debug_rgn_dependencies): Delete static qualifier.
6627         (new_ready): Use sched_deps_info.  Simplify.
6628         (rgn_common_sched_info, rgn_const_sched_deps_info,
6629         rgn_const_sel_sched_deps_info, rgn_sched_deps_info, rgn_sched_info):
6630         New.
6631         (region_sched_info): Rename to rgn_const_sched_info.
6632         (deps_join): New, extracted from ...
6633         (propagate_deps): ... here.
6634         (compute_block_dependences, debug_dependencies): Update for selective
6635         scheduling.
6636         (free_rgn_deps, compute_priorities): New functions.
6637         (sched_rgn_init, sched_rgn_finish, rgn_setup_region,
6638         sched_rgn_compute_dependencies): New functions.
6639         (schedule_region): Use them.
6640         (sched_rgn_local_init, sched_rgn_local_free, sched_rgn_local_finish,
6641         rgn_setup_common_sched_info, rgn_setup_sched_infos):
6642         New functions.
6643         (schedule_insns): Call new functions that were split out.
6644         (rgn_make_new_region_out_of_new_block): New.
6645         (get_rgn_sched_max_insns_priority): New.
6646         (rest_of_handle_sched, rest_of_handle_sched2): Call selective
6647         scheduling when appropriate.
6648         * sched-vis.c: Include insn-attr.h.
6649         (print_value, print_pattern): Make global.
6650         (print_rtl_slim, debug_bb_slim, debug_bb_n_slim): New functions.
6651         * target-def.h (TARGET_SCHED_ADJUST_COST_2,
6652         TARGET_SCHED_ALLOC_SCHED_CONTEXT, TARGET_SCHED_INIT_SCHED_CONTEXT,
6653         TARGET_SCHED_SET_SCHED_CONTEXT, TARGET_SCHED_CLEAR_SCHED_CONTEXT,
6654         TARGET_SCHED_FREE_SCHED_CONTEXT, TARGET_SCHED_GET_INSN_CHECKED_DS,
6655         TARGET_SCHED_GET_INSN_SPEC_DS, TARGET_SCHED_SKIP_RTX_P): New target
6656         hooks.  Initialize them to 0.
6657         (TARGET_SCHED_GEN_CHECK): Rename to TARGET_SCHED_GEN_SPEC_CHECK.
6658         * target.h (struct gcc_target): Add them.  Rename gen_check field to
6659         gen_spec_check.
6660         * flags.h (sel_sched_switch_set): Declare.
6661         * opts.c (sel_sched_switch_set): New variable.
6662         (decode_options): Unset flag_sel_sched_pipelining_outer_loops if
6663         pipelining is disabled from command line.
6664         (common_handle_option): Record whether selective scheduling is
6665         requested from command line.
6666         * doc/invoke.texi: Document new flags and parameters.
6667         * doc/tm.texi: Document new target hooks.
6668         * config/ia64/ia64.c (TARGET_SCHED_GEN_SPEC_CHECK): Define to
6669         ia64_gen_check.
6670         (dfa_state_size): Do not declare locally.
6671         * config/ia64/ia64.opt (msched-ar-data-spec): Default to 0.
6672         * config/rs6000/rs6000.c (rs6000_init_sched_context,
6673         rs6000_alloc_sched_context, rs6000_set_sched_context,
6674         rs6000_free_sched_context): New functions.
6675         (struct _rs6000_sched_context): New.
6676         (rs6000_sched_reorder2): Do not modify INSN_PRIORITY for selective
6677         scheduling.
6678         (rs6000_sched_finish): Do not run for selective scheduling.
6679
6680 2008-08-31  Jan Hubicka  <jh@suse.cz>
6681
6682         * frv.c (frv_rtx_costs): Update forward declaration.
6683         * spu.c (spu_rtx_costs): Likewise.
6684         * pdp11.c: Include df.h
6685         (pdp11_output_function_epilogue): Use df_set_regs_ever_live.
6686         * m68hc11.c (m68hc11_gen_highpart): Fix call of gen_rtx_SUBREG.
6687         (m68hc11_rtx_costs_1): Fix call of rtx_cost.
6688         * iq2000.c (iq2000_address_cost): Add speed argument.
6689         (iq2000_rtx_costs): Likewise.
6690         * mn10300.c (mn10300_address_cost_1): Remove speed argument;
6691         update call of mn10300_address_cost.
6692         * mcore.c: Include df.h
6693         (mcore_rtx_costs): Update prototype.
6694         * score3.c: Include df.h
6695         (score3_rtx_costs): Remove speed argument.
6696         * score7.c: Include df.h
6697         (score7_address_cost): Remove speed argument.
6698         * score-protos.h (score_address_cost): Update prototype.
6699         * score.c: Include df.h
6700         (score_rtx_costs): Update call of costs functions.
6701         * v850.c (v850_rtx_costs): Add bool argument.
6702
6703 2008-08-31  Hans-Peter Nilsson  <hp@axis.com>
6704
6705         * config/cris/cris.c (cris_rtx_costs): Correct call to rtx_costs.
6706
6707 2008-08-31  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
6708
6709         * gthr-win32.h (__gthread_setspecific): Use CONST_CAST2.
6710         * config/i386/gthr-win32.c (__gthread_setspecific): Same.
6711
6712 2008-08-31  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
6713
6714         * mkmap-flat.awk: Add option pe_dll.
6715         * config/i386/t-cygming (SHLIB_LINK): Support building libgcc_s.
6716         * config/i386/t-cygwin (SHLIB_LC): Add.
6717         * config/i386/t-mingw32 (SHLIB_LC): Add.
6718         * config/i386/mingw32.h (SHARED_LIBGCC_UNDEFS_SPEC): New.
6719         (SUBTARGET_EXTRA_SPECS): Use SHARED_LIBGCC_UNDEFS_SPEC.
6720         (LINK_SPEC): Support libgcc_s.
6721         (LIBGCC_SPEC): Support libgcc_s.
6722         (LIBGCC_SONAME): New.
6723
6724 2008-08-31  Jan Hubicka  <jh@suse.cz>
6725
6726         * predict.c (maybe_hot_bb_p, maybe_hot_edge_p): Previous commit
6727         mistakely had old version of patch.
6728
6729         * ipa-cp.c (ipcp_need_original_clone_p): Remove.
6730         (ipcp_estimate_growth): New.
6731         (ipcp_insert_stage): Use ipcp_estimate_growth.
6732         * profile.c (branch_prob): When reading failed, do not consider
6733         profile as read.
6734
6735 2008-08-31  Jan Hubicka  <jh@suse.cz>
6736
6737         * tree-ssa-loop-unswitch.c (tree_unswitch_single_loop): Check that
6738         loop is optimized for speed.
6739
6740 2008-08-31  Richard Guenther  <rguenther@suse.de>
6741
6742         PR middle-end/37289
6743         * fold-const.c (fold_binary): Retain conversions in folding
6744         ~A + 1 to -A.
6745
6746 2008-08-31  Jan Hubicka  <jh@suse.cz>
6747
6748         * postreload-gcse.c (eliminate_partially_redundant_loads):
6749         Use optimize_bb_for_size_p.
6750         * predict.c (maybe_hot_frequency_p): Make inline.
6751         (maybe_hot_count_p): Break out from ...
6752         (maybe_hot_bb_p): ... this one.
6753         (maybe_hot_edge_p): Simplify.
6754         * basic-block.h (probably_cold_bb_p): Remove.
6755
6756 2008-08-31  Jakub Jelinek  <jakub@redhat.com>
6757
6758         PR target/37168
6759         * config/rs6000/rs6000-protos.h (const_vector_elt_as_int): Add
6760         prototype.
6761         * config/rs6000/rs6000.c (const_vector_elt_as_int): No longer static.
6762         * config/rs6000/altivec.md (easy_vector_constant_add_self splitter):
6763         Also split V4SFmode.
6764         * config/rs6000/predicates.md (easy_vector_constant_add_self): Handle
6765         vector float modes.
6766
6767 2008-08-31  Jan Hubicka  <jh@suse.cz>
6768
6769         * predict.c (PROB_VERY_LIKELY): Make small enough so things
6770         become cold.
6771         * predict.def (PRED_NORETURN_CALL, PRED_COLD_CALL): Use it.
6772
6773 2008-08-31  Jakub Jelinek  <jakub@redhat.com>
6774
6775         PR debug/37287
6776         * dwarf2out.c (gen_namespace_die): For DECL_EXTERNAL modules don't
6777         add source coords.
6778
6779         * dwarf2out.c (native_encode_initializer): Subtract min_index for
6780         non-range array index.  Handle VIEW_CONVERT_EXPR and NON_LVALUE_EXPR.
6781
6782 2008-08-31  Jan Hubicka  <jh@suse.cz>
6783
6784         * sparc.h (BRANCH_COST): Fix macro definition.
6785         * avr.c (avr_operand_rtx_cost): Add speed argument.
6786         (avr_rtx_costs): Update calls of avr_operand_rtx_cost.
6787
6788 2008-08-31  Richard Guenther  <rguenther@suse.de>
6789
6790         * tree-cfg.c (verify_types_in_gimple_assign): Dump mismatched
6791         types instead of operands.  Re-instantiate verifying of
6792         binary expression operands.
6793
6794 2008-08-30  Jan Hubicka  <jh@suse.cz>
6795
6796         * fwprop.c (should_replace_address): Add speed attribute.
6797         (PR_OPTIMIZE_FOR_SPEED): New flag.
6798         (propagate_rtx_1): Use it.
6799         (propagate_rtx): Set it.
6800         (try_fwprop_subst): Update call of rtx_costs.
6801         (forward_propagate_and_simplify): LIkewise.
6802         * hooks.c (hook_int_rtx_bool_0): New
6803         (hook_bool_rtx_int_int_intp_false): Replace by ...
6804         (hook_bool_rtx_int_int_intp_bool_false): .. thisone.
6805         * hooks.h (hook_int_rtx_bool_0): New
6806         (hook_bool_rtx_int_int_intp_false): Replace by ...
6807         (hook_bool_rtx_int_int_intp_bool_false): .. thisone.
6808         * optabs.c (avoid_expensive_constant): UPdate call of rtx_cost.
6809         (prepare_cmp_insn): UPdate call of rtx_cost.
6810         * postreload.c (reload_cse_simplify_set): Update call of rtx_cost.
6811         (reload_cse_simplify_operands): Update call of rtx_cost.
6812         (reload_cse_move2add): call of rtx_cost.
6813         * target.h (struct gcc_target): Update rtx_costs and address_costs.
6814         * rtlanal.c (rtx_cost): Add speed argument.
6815         (address_cost): Add speed argument
6816         (default_address_cost): Likewise.
6817         (insn_rtx_cost): Likewise.
6818         * cfgloopanal.c (seq_cost): Add speed argument.
6819         (target_reg_cost, target_spill_cost): Turn to array.
6820         (init_set_costs): Update for speed.
6821         (estimate_reg_pressure_cost): Add speed argument.
6822         * auto-inc-dec.c (attempt_change): Update call of rtx_cost.
6823         * dojump.c (prefer_and_bit_test): UPdate call of rtx_cost.
6824         * tree-ssa-loop-ivopts.c (struct ivopts_data): New field speed.
6825         (seq_cost): Add speed argument.
6826         (computation_cost): Add speed arugment.
6827         (add_cost, multiply_by_const, get_address_cost): add speed argument.
6828         (force_expr_to_var_cost): Update for profile info.
6829         (force_var_cost): Likewise.
6830         (split_address_cost): Likewise.
6831         (ptr_difference_cost): Likewise.
6832         (difference_cost): Likewise.
6833         (get_computation_cost_at): Likewise.
6834         (determine_iv_cost): Likewise.
6835         (ivopts_global_cost_for_size): Likewise.
6836         (rewrite_use_address): Likewise.
6837         (tree_ssa_iv_optimize_loop): Initialize speed field.
6838         * cse.c (optimize_this_for_speed_p): New static var.
6839         (notreg_cost): Update call of rtx_cost.
6840         (cse_extended_basic_block): set optimize_this_for_speed_p.
6841         * ifcvt.c (cheap_bb_rtx_cost_p): Update call of rtx_cost.
6842         (noce_try_cmove_arith): Likewise.
6843         (noce_try_sign_mask): LIkewise.
6844         * expr.c (compress_float_constant): Update rtx_cost calls.
6845         * tree-ssa-address.c (most_expensive_mult_to_index): Add speed
6846         argument.
6847         (addr_to_parts): Likewise.
6848         (create_mem_ref): Likewise.
6849         * dse.c (find_shift_sequence): Add speed argument.
6850         (replace_read): Update call.
6851         * calls.c (precompute_register_parameters): Update call of rtx_cost.
6852         * expmed.c (sdiv_pow2_cheap, smod_pow2_cheap, zero_cost, add_cost,
6853         * neg_cost, shift_cost, shiftadd_cost,
6854         shiftsub_cost, mul_cost, sdiv_cost, udiv_cost ,mul_widen_cost,
6855         mul_highpart_cost): Increase dimension.
6856         (init_expmed): Initialize for both size and speed.
6857         (expand_shift): Use profile.
6858         (synth_mult): Use profile.
6859         (choose_mult_variant): Use profile.
6860         (expand_mult): Use profile.
6861         (expand_mult_highpart_optab): Use profile.
6862         (expand_mult_highpart): Use profile.
6863         (expand_smod_pow2): Use profile.
6864         (expand_divmod): Use profile.
6865         * simplify-rtx.c (simplify_binary_operation_1): Update call of
6866         rtx_cost.
6867         * loop-invariant.c (create_new_invariant): Use profile.
6868         (gain_for_invariant): Add speed parameter.
6869         (best_gain_for_invariant): Likewise.
6870         (find_invariants_to_move): Likewise.
6871         (move_single_loop_invariants): Set it.
6872         * target-def.h (TARGET_RTX_COSTS): Use hook.
6873         * rtl.h (rtx_cost, address_cost, insn_rtx_cost): Update prototpe.
6874         (optimize_insn_for_size_p, optimize_insn_for_speed_p): Declare.
6875         * output.h (default_address_cost): Update prototype.
6876         * combine.c (optimize_this_for_speed_p): New static var.
6877         (combine_validate_cost): Update call of rtx_cost.
6878         (combine_instructions): Set optimize_this_for_speed_p.
6879         (expand_compound_operation): Update call of rtx_cost.
6880         (make_extraction):Update call of rtx_cost.
6881         (force_to_mode):Update call of rtx_cost.
6882         (distribute_and_simplify_rtx):Update call of rtx_cost.
6883         * cfgloop.h (target_reg_cost, target_spill_cost): Turn to array.
6884         (estimate_reg_pressure_cost): Update prototype.
6885         * tree-flow.h (multiply_by_cost, create_mem_ref): Update prototype.
6886         * basic-block.h (optimize_insn_for_size_p, optimize_insn_for_speed_p):
6887         Remove.
6888         * config/alpha/alpha.c (alpha_rtx_costs): Update.
6889         (alpha_rtx_costs): Update.
6890         * config/frv/frv.c (frv_rtx_costs): Update.
6891         * config/s390/s390.c (s390_rtx_costs): Update.
6892         * config/m32c/m32c.c (m32c_memory_move_cost): Update.
6893         (m32c_rtx_costs): Update.
6894         * config/spu/spu.c (TARGET_ADDRESS_COST): Upate.
6895         (spu_rtx_costs): Update.
6896         * config/sparc/sparc.c (sparc_rtx_costs): Update.
6897         * config/m32r/m32r.c (m32r_rtx_costs): Update.
6898         * config/i386/i386.c (:ix86_address_cost): Update.
6899         (ix86_rtx_costs): Update.
6900         * config/sh/sh.c (sh_rtx_costs, sh_address_cost): Update.
6901         * config/pdp11/pdp11.c (pdp11_rtx_costs): Update.
6902         * config/avr/avr.c (avr_rtx_costs, avr_address_cost): Update.
6903         * config/crx/crx.c (crx_address_cost): Update.
6904         * config/xtensa/xtensa.c (xtensa_rtx_costs): Update.
6905         * config/stormy16/stormy16.c
6906         (xstormy16_address_cost, xstormy16_rtx_costs): Update.
6907         * config/m68hc11/m68hc11.c
6908         (m68hc11_address_cost, m68hc11_rtx_costs): Update.
6909         * config/cris/cris.c (cris_rtx_costs, cris_address_cost): Update.
6910         * config/iq2000/iq2000.c (iq2000_rtx_costs, iq2000_address_cost):
6911         Update.
6912         * config/mn10300/mn10300.c (mn10300_address_cost, mn10300_rtx_costs):
6913         Update
6914         * config/ia64/ia64.c (ia64_rtx_costs): Update.
6915         * config/m68k/m68k.c (m68k_rtx_costs): Update.
6916         * config/rs6000/rs6000.c (rs6000_rtx_costs): Update.
6917         * config/arc/arc.c (arc_rtx_costs, arc_address_cost): Update.
6918         * config/mcore/mcore.c (TARGET_ADDRESS_COST): Update.
6919         (mcore_rtx_costs): update.
6920         * config/score/score3.c (score3_rtx_costs): Update.
6921         * config/score/score7.c (score7_rtx_costs): Update.
6922         * config/score/score3.h (score3_rtx_costs):Update.
6923         * config/score/score7.h (score7_rtx_costs): Update.
6924         * config/score/score.c (score_rtx_costs): Update.
6925         * config/arm/arm.c (arm_address_cost): Update.
6926         (arm_rtx_costs_1): Update.
6927         (arm_rtx_costs_1): Update.
6928         (arm_size_rtx_costs): Update.
6929         (arm_size_rtx_costs): Update.
6930         (arm_size_rtx_costs): Update.
6931         (arm_xscale_rtx_costs): Update.
6932         (arm_thumb_address_cost): Update.
6933         * config/pa/pa.c (hppa_address_cost): Update.
6934         * config/mips/mips.c (mips_rtx_costs): Update.
6935         * config/vax/vax.c (vax_address_cost): Update.
6936         * config/h8300/h8300.c (h8300_shift_costs): Update.
6937         (h8300_rtx_costs): Update.
6938         * config/v850/v850.c (TARGET_ADDRESS_COST): Update.
6939         (v850_rtx_costs): Update.
6940         * config/mmix/mmix.c (mmix_rtx_costs, mmix_rtx_costs): Update.
6941         * config/bfin/bfin.c
6942         (bfin_address_cost): Update.
6943         (bfin_rtx_costs): Update.
6944         * stmt.c (lshift_cheap_p): Update.
6945
6946 2008-08-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6947
6948         PR middle-end/36444
6949         * expmed.c (extract_bit_field_1): Check the mode size to make
6950         sure the vector modes have the same size.
6951
6952 2008-08-29  Michael Meissner  <gnu@the-meissners.org>
6953
6954         * dojump.c (top level): Include basic-block.h to declare
6955         optimize_insn_for_speed_p
6956
6957         * Makefile.in (dodump.h): Add $(BASIC_BLOCK_H) dependency.
6958
6959         * opts.h (CL_SAVE): New option class for marking options that are
6960         target specific options usable in the target attribute.
6961         (CL_MIN_OPTION_CLASS): CL_SAVE is now the minimum option.
6962
6963         * opt-functions.awk (switch_flags): Add CL_SAVE flag so backends
6964         can easily find the target specific options that are safe to use
6965         in the attribute or pragma.
6966
6967         * attribs.c (decl_attributes): Change #pragma GCC option to
6968         #pragma GCC target, and attribute((option(...))) to
6969         attribute((target(...))).
6970
6971         * doc/extend.texi (target attribute): Change from option
6972         attribute.  Delete push/pop/reset.
6973         (#pragma GCC target): Change from #pragma GCC option.  Delete
6974         push/pop/reset.
6975         (#pragma GCC push_options): Document new pragma.
6976         (#pragma GCC pop_options): Document new pragma.
6977         (#pragma GCC reset_options): Document new pragma.
6978
6979         * targhooks.c (default_target_option_valid_attribute_p): Add
6980         warning about port not supporting target attributes.
6981         (default_target_option_pragma_parse): New function, warn about
6982         #pragma GCC target not being supported.
6983
6984         * targhooks.h (default_target_option_pragma_parse): Add
6985         declaration.
6986
6987         * tree.h (TI_CURRENT_TARGET_PRAGMA): Rename from
6988         TI_CURRENT_OPTION_PRAGMA.
6989         (current_target_pragma): Rename from current_option_pragma.
6990
6991         * target.h: (struct target_option): Delete booleans for changing
6992         the optimization level on hot/cold functions.  Change signature of
6993         pragma_parse hook to take a second tree.
6994
6995         * c-tree.h (c_builtin_function_ext_scope): Add declaration.
6996
6997         * c-decl.c (c_builtin_function_ext_scope): New function, guarantee
6998         that the declaration is done at global scope.
6999
7000         * langhooks.c (add_builtin_function_common): Move most of the code
7001         from add_builtin_function here, calling the hook passed in.
7002         (add_builtin_function): Call add_builtin_function_common with
7003         standard builtin hook.
7004         (add_builtin_function_ext_scope): New function to add builtins to
7005         global scope.
7006
7007         * langhooks.h (struct lang_hooks): Add builtin_function_ext_scope
7008         hook.
7009         (add_builtin_function_ext_scope): Add declaration.
7010
7011         * c-pragma.c (handle_pragma_target): Rename from
7012         handle_pragma_option, #pragma GCC option is now #pragma GCC
7013         target.  Move warning about port not supporting target options to
7014         default pragma parse hook.  Remove push/pop/reset from this
7015         pragma.
7016         (handle_pragma_optimize): Remove push/pop/reset from this pragma.
7017         (option_stack): Delete static variable.
7018         (optimize_stack): Ditto.
7019         (optons_stack): New stack of saved target and optimization
7020         options.
7021         (handle_pragma_push_options): New function to handle pushing both
7022         target and optimization options.
7023         (handle_pragma_pop_options): New function to handle popping both
7024         target and optimization options.
7025         (handle_pragma_reset_options): New function to handle resetting
7026         both target and optimization options to their initial state.
7027         (init_pragma): Rename handle_pragma_option to
7028         handle_pragma_target.  Add support for push_options, pop_options,
7029         and reset_options pragmas.
7030
7031         * target-def.h (TARGET_OPTION_PRAGMA_PARSE): Change default to
7032         default_target_option_pragma_parse.
7033         (TARGET_OPTION_VALID_ATTRIBUTE_P): Change default to
7034         default_target_option_valid_attribute_p.
7035         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Delete.
7036         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Ditto.
7037         (TARGET_OPTION_HOOKS): Delete the fields for whether to change
7038         optimization level on hot/cold functions.
7039
7040         * tree-inline.c (tree_can_inline_p): Disable suppressing inlining
7041         if the caller and callee have different optimization levels.
7042
7043         * c-common.c (handle_target_attribute): Rename from
7044         handle_option_attribute, attribute((option(...))) is now
7045         attribute((target(...))).  Move warning if the port does not
7046         support target attributes to the default hook.
7047         (handle_hot_attribute): Delete code to change the optimization
7048         level of hot functions.
7049         (handle_cold_attribute): Ditto.
7050
7051         * config/i386/i386-c.c (ix86_pragma_target_parse): Take a second
7052         argument that is the binary tree options to use if there are no
7053         arguments.  Call ix86_valid_target_attribute_tree instead of
7054         ix86_valid_option_attribute_tree.
7055         (ix86_pragma_target_parse): Rename from ix86_pragma_option_parse.
7056         (ix86_register_pragmas): Use ix86_pragma_target_parse instead of
7057         ix86_pragma_option_parse.
7058
7059         * config/i386/i386-protos.h (ix86_valid_target_attribute_tree):
7060         Rename from ix86_valid_option_attribute_tree.
7061
7062         * config/i386/i386.c (ix86_add_new_builtins): New function to add
7063         new builtins when the ISA changes.
7064         (ix86_valid_target_attribute_tree): Rename from
7065         ix86_valid_option_attribute_tree.  Change callers.  If the
7066         function specified optimization options, use those as the starting
7067         point before setting up the target attributes.  If the
7068         optimization options were changed in the course of setting the
7069         target attributes, record the new optimization options.
7070         (ix86_valid_target_attribute_tree_inner_p): Rename from
7071         ix86_valid_option_attribute_tree_inner_p.  Change callers.  Call
7072         ix86_add_new_builtins if the ISA changed.
7073         (ix86_valid_target_attribute_p): Rename from
7074         ix86_valid_option_attribute_p.  Change callers.
7075         (enum ix86_builtins): Add IX86_BUILTIN_PCMOV to allow both
7076         __builtin_ia32_pcmov and __builtin_ia32_pcmov_v2di to be declared
7077         as delayed builtin functions.
7078         (struct builtin_isa): New structure to record builtin functions
7079         that should be delayed until the ISA for that function is used.
7080         (ix86_builtins_isa): Change from int to struct to track builtin
7081         functions we want to declare at some point.
7082         (def_builtin): If the front end can delay defining the builtin
7083         functions, don't create builtins for ISAs not part of the default
7084         options.
7085         (def_builtin_const): Ditto.
7086         (bdesc_multi_arg): Declare __builtin_ia32_pcmov and
7087         __builtin_ia32_pcmov_v2di to be different builtin functions.
7088         (ix86_expand_builtin): Changes due to ix86_builtins_isa now being
7089         a structure instead of an int.
7090         (TARGET_OPTION_VALID_ATTRIBUTE_P): Use
7091         ix86_valid_target_attribute_p, not ix86_valid_option_attribute_p.
7092         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Delete.
7093         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Ditto.
7094
7095         * config/ia64/ia64.h
7096         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Delete.
7097         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Ditto.
7098
7099         * langhooks-def.h (LANG_HOOKS_BUILTIN_FUNCTION_EXT_SCOPE): New
7100         hook, default to being the same as LANG_HOOKS_BUILTIN_FUNCTION.
7101         (LANG_HOOKS_INITIALIZER): Add
7102         LANG_HOOKS_BUILTIN_FUNCTION_EXT_SCOPE hook.
7103
7104 2008-08-30  Kaz Kojima  <kkojima@gcc.gnu.org>
7105
7106         PR target/37270
7107         * config/sh/sh.h (LEGITIMIZE_RELOAD_ADDRESS): Generate
7108         the reload address with the index register for SFmode
7109         access with a displacement.
7110
7111 2008-08-30  Jan Hubicka  <jh@suse.cz>
7112
7113         * optabs.c (expand_abs_nojump): Update BRANCH_COST call.
7114         * fold-cost.c (LOGICAL_OP_NON_SHORT_CIRCUIT, fold_truthop): Likewise.
7115         * dojump.c (do_jump): Likewise.
7116         * ifcvt.c (MAX_CONDITIONAL_EXECUTE): Likewise.
7117         (note-if_info): Add BRANCH_COST.
7118         (noce_try_store_flag_constants, noce_try_addcc,
7119         noce_try_store_flag_mask, noce_try_cmove_arith, noce_try_cmove_arith,
7120         noce_try_cmove_arith, noce_find_if_block, find_if_case_1,
7121         find_if_case_2): Use computed branch cost.
7122         * expr.h (BRANCH_COST): Update default.
7123         * predict.c (predictable_edge_p): New function.
7124         * expmed.c (expand_smod_pow2, expand_sdiv_pow2, emit_store_flag):
7125         Update BRANCH_COST call.
7126         * basic-block.h (predictable_edge_p): Declare.
7127         * config/alpha/alpha.h (BRANCH_COST): Update.
7128         * config/frv/frv.h (BRANCH_COST): Update.
7129         * config/s390/s390.h (BRANCH_COST): Update.
7130         * config/spu/spu.h (BRANCH_COST): Update.
7131         * config/sparc/sparc.h (BRANCH_COST): Update.
7132         * config/m32r/m32r.h (BRANCH_COST): Update.
7133         * config/i386/i386.h (BRANCH_COST): Update.
7134         * config/i386/i386.c (ix86_expand_int_movcc): Update use of
7135         BRANCH_COST.
7136         * config/sh/sh.h (BRANCH_COST): Update.
7137         * config/pdp11/pdp11.h (BRANCH_COST): Update.
7138         * config/avr/avr.h (BRANCH_COST): Update.
7139         * config/crx/crx.h (BRANCH_COST): Update.
7140         * config/xtensa/xtensa.h (BRANCH_COST): Update.
7141         * config/stormy16/stormy16.h (BRANCH_COST): Update.
7142         * config/m68hc11/m68hc11.h (BRANCH_COST): Update.
7143         * config/iq2000/iq2000.h (BRANCH_COST): Update.
7144         * config/ia64/ia64.h (BRANCH_COST): Update.
7145         * config/rs6000/rs6000.h (BRANCH_COST): Update.
7146         * config/arc/arc.h (BRANCH_COST): Update.
7147         * config/score/score.h (BRANCH_COST): Update.
7148         * config/arm/arm.h (BRANCH_COST): Update.
7149         * config/pa/pa.h (BRANCH_COST): Update.
7150         * config/mips/mips.h (BRANCH_COST): Update.
7151         * config/vax/vax.h (BRANCH_COST): Update.
7152         * config/h8300/h8300.h (BRANCH_COST): Update.
7153         * params.def (PARAM_PREDICTABLE_BRANCH_OUTCOME): New.
7154         * doc/invoke.texi (predictable-branch-cost-outcome): Document.
7155         * doc/tm.texi (BRANCH_COST): Update.
7156
7157 2008-08-30  Samuel Tardieu  <sam@rfc1149.net>
7158
7159         PR target/37283
7160         * config/arm/arm.c (arm_optimization_options): Set
7161         flag_section_anchors to 2 instead of 1 to distinguish it from
7162         -fsection-anchors given explicitely on the command line.
7163
7164 2008-08-30  Richard Sandiford  <rdsandiford@googlemail.com>
7165
7166         * recog.c (split_insn): Consider attaching a REG_EQUAL note to the
7167         final insn of a split.
7168
7169 2008-08-30  Jan Hubicka  <jh@suse.cz>
7170
7171         * postreload-gcse.c (gate_handle_gcse2): Disable for functions
7172         optimized for speed.
7173         * final.c (compute_alignments): Use optimize_bb_for_size_p.
7174         * tree-call-cdce.c (gate_call_cdce): Use optimize_function_for_speed_p.
7175         * opts.c (flag_predictive_commoning_set, flag_unswitch_loops_set,
7176         flag_gcse_after_reload_set): New static vars.
7177         (common_handle_option): Enable those flags for profile-use.
7178         (decode_options): Remove optimize_size flags that are handled
7179         on higher granuality.
7180         * tree-vectorizer.c (vectorize_loops): Use
7181         optimize_loop_nest_for_speed_p.
7182         * tree-ssa-pre.c (do_pre): Use optimize_function_for_speed_p.
7183         * tree-predcom.c (tree_predictive_commoning): Use
7184         optimize_loop_for_speed_p.
7185         * varasm.c (assemble_start_function): Use
7186         optimize_function_for_speed_p.
7187         * bb-reorder.c (rest_of_handle_reorder_blocks): Likewise.
7188         * predict.c (optimize_loop_for_speed_p): Fix walk.
7189
7190 2008-08-30  Jan Hubicka  <jh@suse.cz>
7191
7192         * ipa-inline.c (cgraph_estimate_growth): Discover self recursive
7193         functions.
7194         (cgraph_decide_inlining_of_small_function): Use edge->count to detect
7195         profile presence locally.
7196
7197 2008-08-29  Joseph Myers  <joseph@codesourcery.com>
7198
7199         PR bootstrap/37086
7200         * tree-vrp.c (find_switch_asserts): Make idx volatile for GCC
7201         versions before 4.0.
7202
7203 2008-08-29  Jan Hubicka  <jh@suse.cz>
7204
7205         * tree-inline.c (insert_init_stmt): Insert sequence even when
7206         not in SSA form.
7207
7208 2008-08-29  Jeff Law  <law@redhat.com>
7209
7210         * mn10300.c (mn10300_secondary_reload_class): We need secondary
7211         reloads for AM33-2 if IN is a pseudo with an equivalent memory
7212         location and class is an FP register.
7213
7214 2008-08-29  Jan Hubicka  <jh@suse.cz>
7215
7216         * see.c (see_merge_one_def_extension): Silence used uninitialized
7217         warning.
7218         * matrix-reorg.c (check_allocation_function): Likewise.
7219         * config/i386/driver-i386.c (detect_caches_amd): Likewise.
7220
7221 2008-08-29  Jakub Jelinek  <jakub@redhat.com>
7222
7223         PR c/37261
7224         * fold-const.c (fold_binary): In (X | C1) & C2 canonicalization
7225         compute new & and | in type rather than TREE_TYPE (arg0).
7226
7227         * dwarf2out.c (fortran_common): Update comment.
7228         (gen_variable_die): Swap com_die and var_die variables in Fortran
7229         COMMON block handling code.
7230
7231         * dwarf2out.c (descr_info_loc): Handle VAR_DECL.
7232
7233         * dwarf2out.c (gen_const_die): New function.
7234         (size_of_die, value_format, output_die): Output larger
7235         dw_val_class_vec using DW_FORM_block2 or DW_FORM_block4.
7236         (native_encode_initializer): New function.
7237         (tree_add_const_value_attribute): Call it.
7238         (gen_decl_die, dwarf2out_decl): Handle CONST_DECLs if is_fortran ().
7239
7240         * dwarf2out.c (gen_formal_parameter_die, gen_variable_die): For
7241         DECL_BY_REFERENCE decls don't pass TREE_READONLY and
7242         TREE_THIS_VOLATILE to add_type_attribute.
7243
7244         * dwarf2out.c (add_subscript_info): Stop on Fortran TYPE_STRING_FLAG
7245         types.
7246         (gen_array_type_die): Emit DW_TAG_string_type for Fortran character
7247         types.
7248
7249         * dwarf2out.c (loc_by_reference): New function.
7250         (add_location_or_const_value_attribute): Use it.
7251
7252         PR fortran/23057
7253         * dwarf2out.c (gen_variable_die): Represent Fortran COMMON vars
7254         as DW_TAG_variable children of DW_TAG_common_block rather than
7255         DW_TAG_member children.  Put DW_AT_external to individual
7256         DW_TAG_variable DIEs, not to DW_TAG_common_block.
7257
7258         * dwarf2out.c (add_bound_info): If lookup_decl_die failed, try
7259         loc_descriptor_from_tree_1.
7260
7261         PR fortran/29635
7262         PR fortran/23057
7263         * debug.h (struct gcc_debug_hooks): Add NAME and CHILD
7264         arguments to imported_module_or_decl.
7265         (debug_nothing_tree_tree): Removed.
7266         (debug_nothing_tree_tree_tree_bool): New prototype.
7267         * debug.c (do_nothing_debug_hooks): Adjust.
7268         (debug_nothing_tree_tree): Removed.
7269         (debug_nothing_tree_tree_tree_bool): New function.
7270         * dwarf2out.c (is_symbol_die): Handle DW_TAG_module.
7271         (gen_variable_die): Put all common vars for the
7272         same COMMON block under one DW_TAG_common_block.
7273         (declare_in_namespace): Return new context_die, for Fortran
7274         return the module DIE instead of adding extra declarations into
7275         the namespace.
7276         (gen_type_die_with_usage): Adjust declare_in_namespace caller.
7277         (gen_namespace_die): If is_fortran (), generate DW_TAG_module
7278         instead of DW_TAG_namespace.  If DECL_EXTERNAL is set, add
7279         DW_AT_declaration.
7280         (dwarf2out_global_decl): Don't skip Fortran global vars.
7281         (gen_decl_die): Likewise.  Adjust declare_in_namespace callers.
7282         (dwarf2out_imported_module_or_decl): Add NAME and CHILD arguments.
7283         If NAME is non-NULL, add DW_AT_name.  If CHILD is non-NULL, put
7284         DW_TAG_imported_declaration as child of previous
7285         DW_TAG_imported_module.
7286         * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Adjust.
7287         * sdbout.c (sdb_debug_hooks): Likewise.
7288         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
7289
7290 2008-08-29  Jan Hubicka  <jh@suse.cz>
7291
7292         * cgraph.c (cgraph_remove_node): Do not remove nested nodes.
7293
7294         * cgraph.h (cgraph_maybe_hot_edge_p): Declare.
7295         * ipa-cp.c (n_cloning_candidates): New static variable.
7296         (ipcp_print_profile_data, ipcp_function_scale_print): Forward declare.
7297         (ipcp_print_all_lattices): Improve debug output.
7298         (ipcp_cloning_candidate_p): New function.
7299         (ipcp_initialize_node_lattices): Use it.
7300         (ipcp_init_stage): Do only analyzis here; prettier debug output.
7301         (ipcp_propagate_stage): Prettier debug output.
7302         (ipcp_iterate_stage): Initialize latices here; prettier debug output.
7303         (ipcp_print_all_structures): Remove.
7304         (ipcp_need_redirect_p): Test !n_cloning_candidates.
7305         (ipcp_insert_stage): Prettier debug output; call
7306         cgraph_remove_unreachable_nodes before propagating.
7307         (pass_ipa_cp): Schedule function removal pass.
7308         * ipa-inline.c (inline_indirect_intraprocedural_analysis): Better
7309         debug output.
7310         (cgraph_maybe_hot_edge_p): Move to ...
7311         * predict.c (cgraph_maybe_hot_edge_p) ... here.
7312         * opts.c (flag_ipa_cp_set, flag_ipa_cp_clone_set): New.
7313         (common_handle_option): Set them; enable ipa-cp when profiling.
7314         * ipa-prop.c (ipa_print_node_jump_functions): Prettier output.
7315         (ipa_print_all_jump_functions): Likewise.
7316         (ipa_print_all_tree_maps, ipa_print_node_param_flags): Remove.
7317         (ipa_print_node_params, ipa_print_all_params): New.
7318         * ipa-prop.h (ipa_print_all_tree_maps, ipa_print_node_param_flags,
7319         ipa_print_all_param_flags): Remove.
7320         (ipa_print_node_params, ipa_print_all_params): New.
7321
7322 2008-08-29  Bob Wilson  <bob.wilson@acm.org>
7323
7324         * config/xtensa/xtensa.c (xtensa_secondary_reload_class): Revert
7325         change from 2008-04-03.
7326         * config/xtensa/xtensa.h (IRA_COVER_CLASSES): Define.
7327
7328 2008-08-29  Vladimir Makarov  <vmakarov@redhat.com>
7329
7330         PR rtl-opt/37251
7331         * ira-color.c (push_allocnos_to_stack): Truncate
7332         removed_splay_allocno_vec.
7333
7334 2008-08-29  Vladimir Makarov  <vmakarov@redhat.com>
7335
7336         PR rtl-opt/37243
7337         * ira-color (ira_fast_allocation): Don't assign hard registers to
7338         global allocnos.
7339
7340 2008-08-29  Jan Hubicka  <jh@suse.cz>
7341
7342         PR middle-end/37278
7343         * predict.c (optimize_loop_nest_for_speed_p): Do not ICE
7344         for cold internal loops.
7345
7346 2008-08-29  Richard Guenther  <rguenther@suse.de>
7347
7348         * tree-ssa-structalias.c (create_variable_info_for): Do not
7349         create fields for heap vars or vars with a noalias state.
7350         For NO_ALIAS_ANYTHING variables add a self-constraint, not one
7351         from ESCAPED.
7352
7353 2008-08-29  Richard Guenther  <rguenther@suse.de>
7354
7355         * common.opt (ftree-store-ccp): Mark as preserved for
7356         backward compatibility.
7357         * doc/invoke.texi (-ftree-store-ccp): Remove documentation.
7358         * tree-pass.h (pass_store_ccp): Remove.
7359         * tree-ssa-propagate.h (struct prop_value_d): Remove mem_ref field.
7360         (first_vdef): Remove declaration.
7361         (get_value_loaded_by): Likewise.
7362         * tree-ssa-ccp.c (do_store_ccp): Remove.
7363         (get_default_value): Simplify as do_store_ccp is always false
7364         now.  Do not initialize mem_ref.
7365         (set_value_varying): Likewise.
7366         (canonicalize_float_value): Likewise.
7367         (set_lattice_value): Likewise.
7368         (likely_value): Likewise.
7369         (surely_varying_stmt_p): Likewise.
7370         (ccp_initialize): Likewise.
7371         (ccp_lattice_meet): Likewise.
7372         (ccp_visit_phi_node): Likewise.
7373         (ccp_fold): Likewise.
7374         (evaluate_stmt): Likewise.
7375         (visit_assignment): Likewise.
7376         (ccp_visit_stmt): Likewise.
7377         (execute_ssa_ccp): Fold into ...
7378         (do_ssa_ccp): ... this.
7379         (do_ssa_store_ccp): Remove.
7380         (gate_store_ccp): Likewise.
7381         (pass_store_ccp): Likewise.
7382         * tree-ssa-copy.c (copy_prop_visit_phi_node): Do not
7383         initialize mem_ref.
7384         * tree-ssa-propagate.c (first_vdef): Remove.
7385         (get_value_loaded_by): Likewise.
7386         (replace_vuses_in): Likewise.
7387         (substitute_and_fold): Do not call replace_vuses_in.
7388         * opts.c (decode_options): Do not set flag_tree_store_ccp.
7389
7390 2008-08-29  Richard Guenther  <rguenther@suse.de>
7391
7392         PR middle-end/37236
7393         * tree-ssa-structalias.c (intra_create_variable_infos): Mark
7394         PARAM_NOALIAS tags with is_heapvar.
7395         * tree-ssa-operands.c (access_can_touch_variable): Offset
7396         based tests do not apply for heapvars.  Fix offset test.
7397
7398 2008-08-29  Jan Hubicka  <jh@suse.cz>
7399
7400         * doc/invoke.texi (-fipa-cp): Enabled by default at -O2/-Os/-O3
7401         (-fipa-cp-clone): Enabled by default at -O3.
7402         * opts.c (decode_options): Enable ipa-cp at -O2, ipa-cp-clone at -O3;
7403         make ipa-cp-clone to imply ipa-cp; disable cloning at -Os.
7404
7405 2008-08-29  Jan Hubicka  <jh@suse.cz>
7406
7407         * tree.c (build_function_type_skip_args,
7408         build_function_decl_skip_args): New functions.
7409         * tree.h (build_function_type_skip_args,
7410         build_function_decl_skip_args): Declare.
7411         * gimple.c (giple_copy_call_skip_args): New function.
7412         (giple_copy_call_skip_args): Declare.
7413
7414         * cgraph.h (cgraph_function_versioning): Add skip_args arugmnet
7415         * ipa-cp.c (ipcp_node_not_modifiable_p): Rename to ...
7416         (ipcp_node_modifiable_p): ... this one; use
7417         tree_versionable_function_p.
7418         (ipcp_create_replace_map): Improve debug output.
7419         (ipcp_need_redirect_p): Return false when not clonning.
7420         (ipcp_update_callgraph): Skip args.
7421         (ipcp_insert_stage): UPdate call of !ipcp_node_modifiable_p;
7422         skip args.
7423         * cgraphunit.c (cgraph_function_versioning): Add skip_args argument.
7424         (save_inline_function_body): Update call of tree_function_versioning.
7425         * ipa-prop.c (ipa_edge_removal_hook): Do not ICE on unanalyzed nodes.
7426         * tree-inline.c (copy_arguments_for_versioning): Add skip_args
7427         argument.
7428         (tree_function_versioning): Likewise.
7429         * tree-inline.h (tree_function_versioning): Update prototype.
7430
7431 2008-08-29  Jan Hubicka  <jh@suse.cz>
7432
7433         * loop-unswitch.c (unswitch_single_loop): Use
7434         optimize_loop_for_speed_p.
7435         * tree-ssa-threadupdate.c (mark_threaded_blocks):
7436         Use optimize_function_for_size_p.
7437         * tracer.c (ignore_bb_p): Use optimize_bb_for_size_p.
7438         * postreload-gcse.c (eliminate_partially_redundant_load):
7439         Use optimize_bb_for_size_p.
7440         * value-prof.c (gimple_divmod_fixed_value_transform,
7441         gimple_mod_pow2_value_transform, gimple_mod_subtract_transform,
7442         gimple_stringops_transform): Use optimize_bb_for_size_p.
7443         * ipa-cp.c (ipcp_insert_stage): Use optimize_function_for_size_p.
7444         * final.c (compute_alignments): Use optimize_function_for_size_p.
7445         * builtins.c (fold_builtin_cabs): Use optimize_function_for_speed_p.
7446         (fold_builtin_strcpy, fold_builtin_fputs): Use
7447         optimize_function_for_size_p.
7448         * fold-const.c (tree_swap_operands_p): Use
7449         optimize_function_for_size_p.
7450         * recog.c (relax_delay_slots): Likewise.
7451         * tree-ssa-math-opts.c (replace_reciprocal):
7452         Use optimize_bb_for_speed_p.
7453         (execute_cse_reciprocals): Use optimize_bb_for_size_p.
7454         * ipa-inline.c (cgraph_decide_recursive_inlining): Use
7455         optimize_function_for_size_p.
7456         (cgraph_decide_inlining_of_small_function): Use
7457         optimize_function_for_size_p.
7458         * global.c (find_reg): Use optimize_function_for_size_p.
7459         * opts.c (decode_options): Do not clear flag_tree_ch,
7460         flag_inline_functions, flag_unswitch_loops, flag_unroll_loops,
7461         flag_unroll_all_loops and flag_prefetch_loop_arrays. Those can
7462         work it out from profile.
7463         * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely): Use
7464         optimize_loop_for_speed_p.
7465         * predict.c (optimize_bb_for_size_p, optimize_bb_for_speed_p):
7466         Constify argument.
7467         (optimize_loop_nest_for_size_p, optimize_loop_nest_for_speed_p): New.
7468         * tree-parloops.c (parallelize_loops): Use optimize_loop_for_size_p.
7469         * tree-eh.c (decide_copy_try_finally): Use
7470         optimize_function_for_size_p.
7471         * local-alloc.c (block_alloc): Pass BB pointer.
7472         (find_free_reg): Add BB pointer, use optimize_bb_for_size_p.
7473         * gcse.c (gcse_main): Use optimize_function_for_size_p.
7474         * loop-unroll.c (decide_unrolling_and_peeling):
7475         Use optimize_loop_for_size_p.
7476         (decide_peel_completely): Likewise.
7477         * tree-vect-analyze.c (vect_mark_for_runtime_alias_test): Use
7478         optimize_loop_for_size_p.
7479         (vect_enhance_data_refs_alignment): Likewise.
7480         * tree-ssa-coalesce.c (coalesce_cost): Add optimize_for_size argument.
7481         (coalesce_cost_bb, coalesce_cost_edge, create_outofssa_var_map):
7482         Update call.
7483         * cfgcleanup.c (outgoing_edges_match): Use optimize_bb_for_speed_p.
7484         (try_crossjump_bb): Use optimize_bb_for_size_p.
7485         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Use
7486         optimize_loop_for_speed_p.
7487         * bb-reorder.c (find_traces_1_round): Likewise.
7488         (copy_bb): Use optimize_bb_for_speed_p.
7489         (duplicate_computed_gotos): Likewise.
7490         * basic-block.h (optimize_loop_nest_for_size_p,
7491         optimize_loop_nest_for_speed_p): New.
7492         * stmt.c (expand_case): Use optimize_insn_for_size_p.
7493
7494 2008-08-29  Tristan Gingold  <gingold@adacore.com>
7495
7496         * gcov.c (main): Call expandargv.
7497
7498 2008-08-29  Jan Hubicka  <jh@suse.cz>
7499
7500         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Check that loop
7501         is not cold.
7502         * predict.c (optimize_bb_for_size_p, optimize_bb_for_speed_p):
7503         Constify arguments.
7504         (optimize_loop_for_size_p, optimize_loop_for_speed_p): New functions.
7505         * basic-block.h (optimize_bb_for_size_p, optimize_bb_for_speed_p):
7506         Constify.
7507         (optimize_loop_for_size_p, optimize_loop_for_speed_p): Declare.
7508
7509 2008-08-29  Jan Hubicka  <jh@suse.cz>
7510
7511         * tree-pass.h (pass_strip_predict_hints): Declare.
7512         * predict.c (strip_builtin_expect): Rename to ...
7513         (strip_predict_hints): ... this one; strip also GIMPLE_PREDICT.
7514         (tree_bb_level_predictions): Do not remove GIMPLE_PREDICT.
7515         (tree_estimate_probability): Do not strip builtin_expect.
7516         (pass_strip_predict_hints): New pass.
7517         * tree-inline.c (expand_call_inline): When inlining cold function,
7518         predict it as unlikely.
7519         * passes.c (init_optimization_passes): Add pass_strip_predict_hints.
7520
7521 2008-08-29  Richard Guenther  <rguenther@suse.de>
7522
7523         PR tree-optimization/37207
7524         * tree-vrp.c (extract_range_from_binary_expr): Also try
7525         to constant fold if only one of the operands is a constant.
7526
7527 2008-08-29  Nick Clifton  <nickc@redhat.com>
7528
7529         * config/m32r/m32r.h (LEGITIMATE_CONSTANT_P): Treat LABEL_REFs in
7530         the same way as SYMBOL_REFs.
7531
7532 2008-08-28  Bob Wilson  <bob.wilson@acm.org>
7533
7534         * config/xtensa/xtensa.md (<u>mulsidi3): Use a temporary register.
7535
7536 2008-08-28  Adam Nemet  <anemet@caviumnetworks.com>
7537
7538         * config/mips/mips.h (ISA_HAS_BBIT): New macro.
7539         * config/mips/mips.md (branch_likely): Remove const.  Fix
7540         comment formatting.
7541         (define_delay for type "branch"): Change to only apply for branch
7542         with likely variant.
7543         (define_delay for type "branch" and "branch_likely" no).  New delay
7544         definition.
7545         (equality_op): New code iterator.
7546         (bbv, bbinv): New code attributes.
7547         (*branch_bit<bbv><mode>, *branch_bit<bbv><mode>_inverted): New
7548         patterns.
7549
7550 2008-08-28  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7551             Andrew Pinski  <pinskia@gcc.gnu.org>
7552
7553         PR 18050
7554         * c-common.c (verify_tree): Fix handling of ADDR_EXPR.
7555
7556 2008-08-28  Paolo Carlini  <paolo.carlini@oracle.com>
7557
7558         * gtrh-posix.h: Fix uses of _POSIX_TIMEOUTS per the normal Posix
7559         rule that a symbolic constant must be defined and >= 0 for the
7560         corresponding facility to be present at compile-time.
7561         * gthr-posix.c: Likewise.
7562
7563 2008-08-28  Adam Nemet  <anemet@caviumnetworks.com>
7564
7565         * config/mips/mips.h (ISA_HAS_DMUL3): New macro.
7566         * config/mips/mips.md (D): New mode attribute.
7567         (mulsi3, muldi3): Merge it into ...
7568         (mul<mode>3): ... new template.  Use _mul3 ending for 3-op patterns.
7569         (muldi3_mul3): New pattern.
7570         (mulsi3_mult3): Rename to mulsi3_mul3.
7571
7572 2008-08-28  Jan Hubicka  <jh@suse.cz>
7573
7574         * expmed.c (store_bit_field_1): Be prepared for movstrict expander
7575         to fail.
7576         * predict.c (always_optimize_for_size_p): Rename to ...
7577         (optimize_function_for_size): ... this one; make extern.
7578         (optimize_function_for_speed_p): New.
7579         (optimize_bb_for_size_p, optimize_bb_for_size_p,
7580         optimize_edge_for_size_p,optimize_edge_for_size_p,
7581         optimize_insn_for_size_p, optimize_insn_for_size_p): Update.
7582         * basic-block.h (optimize_function_for_size_p,
7583         optimize_function_for_speed_p): Declare.
7584         * i386.md (optimize_size checks): Replace them by appropriate
7585         predicate.
7586         (standard_80387_constant_p, ix86_compute_frame_layout,
7587         ix86_expand_epilogue, ix86_decompose_address,
7588         print_operand, emit_i387_cw_initialization,
7589         inline_memory_move_cost, ix86_pad_returns,
7590         ix86_reorg): Replace optimize_size checks.
7591
7592 2008-08-28  Richard Sandiford  <rdsandiford@googlemail.com>
7593
7594         * rtl.h (simplify_subreg_regno): Declare.
7595         * rtlanal.c (simplify_subreg_regno): New function, split out from...
7596         * simplify-rtx.c (simplify_subreg): ...here.
7597         * reload.c (find_reloads): Use simplify_subreg_regno instead of
7598         subreg_offset_representable_p.
7599
7600 2008-08-28  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7601
7602         PR c/30949
7603         * c-typeck.c (convert_for_assignment): Give a note describing what
7604         was passed and what was expected.
7605
7606 2008-08-28  Joey Ye  <joey.ye@intel.com>
7607
7608         * doc/extend.texi: Document AVX built-in functions.
7609         * doc/invoke.texi: Document -mavx.
7610
7611 2008-08-28  H.J. Lu  <hongjiu.lu@intel.com>
7612             Joey Ye  <joey.ye@intel.com>
7613             Xuepeng Guo  <xuepeng.guo@intel.com>
7614
7615         * config.gcc (extra_headers): Add gmmintrin.h for x86 and x86-64.
7616
7617         * config/i386/cpuid.h (bit_FMA): New.
7618         (bit_XSAVE): Likewise.
7619         (bit_OSXSAVE): Likewise.
7620         (bit_AVX): Likewise.
7621
7622         * config/i386/gas.h (ASM_OUTPUT_OPCODE): Undefine before
7623         define.  Use ASM_OUTPUT_AVX_PREFIX.
7624
7625         * config/i386/gmmintrin.h: New.
7626
7627         * config/i386/i386.c (x86_64_reg_class): Add X86_64_AVX_CLASS.
7628         (OPTION_MASK_ISA_AVX_SET): New.
7629         (OPTION_MASK_ISA_FMA_SET): Likewise.
7630         (OPTION_MASK_ISA_AVX_UNSET): Likewise.
7631         (OPTION_MASK_ISA_FMA_SET): Likewise.
7632         (OPTION_MASK_ISA_SSE4_2_UNSET): Updated.
7633         (ix86_handle_option): Handle OPT_mavx and OPT_mfma.
7634         (pta_flags): Add PTA_AVX and PTA_FMA.
7635         (override_options): Handle PTA_AVX and PTA_FMA.
7636         (init_cumulative_args): Handle warn_avx.
7637         (classify_argument): Return 0 for COImode and OImode.  Return
7638         1 and X86_64_AVX_CLASS for 256bit vector types.
7639         (examine_argument): Handle X86_64_AVX_CLASS.
7640         (construct_container): Likewise.
7641         (function_arg_advance_32): Pass OImode and 256bit vector types
7642         in AVX register.
7643         (function_arg_advance_64): Take a new argument to indicate if a
7644         parameter is named.  Handle 256bit vector types.  Return
7645         immediately for unnamed 256bit vector mode parameters.
7646         (function_arg_advance): Updated.
7647         (function_arg_32): Add comments for TImode.  Handle OImode
7648         and 256bit vector types.
7649         (function_arg_64): Take a new argument to indicate if a
7650         parameter is named.  Handle 256bit vector types.  Return NULL
7651         for unnamed 256bit vector mode parameters.
7652         (function_arg): Updated.
7653         (setup_incoming_varargs_64): Support
7654         AVX encoding for *sse_prologue_save_insn.
7655         (ix86_gimplify_va_arg): Handle 256bit vector mode parameters.
7656         (standard_sse_constant_p): Return -2 for all 1s if SSE2 isn't
7657         enabled.  For all 1s in 256bit vector modes, return 3 if AVX is
7658         enabled, otherwise return -3.
7659         (standard_sse_constant_opcode): Handle AVX and 256bit vector
7660         modes.
7661         (print_reg): Support AVX registers.  Handle 'x' and 't'.
7662         Handle 'd' to duplicate the operand.
7663         (print_operand): Likewise.  Also support AVX vector compare
7664         instructions.
7665         (output_387_binary_op): Support AVX.
7666         (output_fp_compare): Likewise.
7667         (ix86_expand_vector_move_misalign): Likewise.
7668         (ix86_attr_length_vex_default): New.
7669         (ix86_builtins): Add IX86_BUILTIN_ADDPD256,
7670         IX86_BUILTIN_ADDPS256, IX86_BUILTIN_ADDSUBPD256,
7671         IX86_BUILTIN_ADDSUBPS256, IX86_BUILTIN_ANDPD256,
7672         IX86_BUILTIN_ANDPS256, IX86_BUILTIN_ANDNPD256,
7673         IX86_BUILTIN_ANDNPS256, IX86_BUILTIN_BLENDPD256,
7674         IX86_BUILTIN_BLENDPS256, IX86_BUILTIN_BLENDVPD256,
7675         IX86_BUILTIN_BLENDVPS256, IX86_BUILTIN_DIVPD256,
7676         IX86_BUILTIN_DIVPS256, IX86_BUILTIN_DPPS256,
7677         IX86_BUILTIN_HADDPD256, IX86_BUILTIN_HADDPS256,
7678         IX86_BUILTIN_HSUBPD256, IX86_BUILTIN_HSUBPS256,
7679         IX86_BUILTIN_MAXPD256, IX86_BUILTIN_MAXPS256,
7680         IX86_BUILTIN_MINPD256, IX86_BUILTIN_MINPS256,
7681         IX86_BUILTIN_MULPD256, IX86_BUILTIN_MULPS256,
7682         IX86_BUILTIN_ORPD256, IX86_BUILTIN_ORPS256,
7683         IX86_BUILTIN_SHUFPD256, IX86_BUILTIN_SHUFPS256,
7684         IX86_BUILTIN_SUBPD256, IX86_BUILTIN_SUBPS256,
7685         IX86_BUILTIN_XORPD256, IX86_BUILTIN_XORPS256,
7686         IX86_BUILTIN_CMPSD, IX86_BUILTIN_CMPSS, IX86_BUILTIN_CMPPD,
7687         IX86_BUILTIN_CMPPS, IX86_BUILTIN_CMPPD256,
7688         IX86_BUILTIN_CMPPS256, IX86_BUILTIN_CVTDQ2PD256,
7689         IX86_BUILTIN_CVTDQ2PS256, IX86_BUILTIN_CVTPD2PS256,
7690         IX86_BUILTIN_CVTPS2DQ256, IX86_BUILTIN_CVTPS2PD256,
7691         IX86_BUILTIN_CVTTPD2DQ256, IX86_BUILTIN_CVTPD2DQ256,
7692         IX86_BUILTIN_CVTTPS2DQ256, IX86_BUILTIN_EXTRACTF128PD256,
7693         IX86_BUILTIN_EXTRACTF128PS256, IX86_BUILTIN_EXTRACTF128SI256,
7694         IX86_BUILTIN_VZEROALL, IX86_BUILTIN_VZEROUPPER,
7695         IX86_BUILTIN_VZEROUPPER_REX64, IX86_BUILTIN_VPERMILVARPD,
7696         IX86_BUILTIN_VPERMILVARPS, IX86_BUILTIN_VPERMILVARPD256,
7697         IX86_BUILTIN_VPERMILVARPS256, IX86_BUILTIN_VPERMILPD,
7698         IX86_BUILTIN_VPERMILPS, IX86_BUILTIN_VPERMILPD256,
7699         IX86_BUILTIN_VPERMILPS256, IX86_BUILTIN_VPERMIL2PD,
7700         IX86_BUILTIN_VPERMIL2PS, IX86_BUILTIN_VPERMIL2PD256,
7701         IX86_BUILTIN_VPERMIL2PS256, IX86_BUILTIN_VPERM2F128PD256,
7702         IX86_BUILTIN_VPERM2F128PS256, IX86_BUILTIN_VPERM2F128SI256,
7703         IX86_BUILTIN_VBROADCASTSS, IX86_BUILTIN_VBROADCASTSD256,
7704         IX86_BUILTIN_VBROADCASTSS256, IX86_BUILTIN_VBROADCASTPD256,
7705         IX86_BUILTIN_VBROADCASTPS256, IX86_BUILTIN_VINSERTF128PD256,
7706         IX86_BUILTIN_VINSERTF128PS256, IX86_BUILTIN_VINSERTF128SI256,
7707         IX86_BUILTIN_LOADUPD256, IX86_BUILTIN_LOADUPS256,
7708         IX86_BUILTIN_STOREUPD256, IX86_BUILTIN_STOREUPS256,
7709         IX86_BUILTIN_LDDQU256, IX86_BUILTIN_LOADDQU256,
7710         IX86_BUILTIN_STOREDQU256, IX86_BUILTIN_MASKLOADPD,
7711         IX86_BUILTIN_MASKLOADPS, IX86_BUILTIN_MASKSTOREPD,
7712         IX86_BUILTIN_MASKSTOREPS, IX86_BUILTIN_MASKLOADPD256,
7713         IX86_BUILTIN_MASKLOADPS256, IX86_BUILTIN_MASKSTOREPD256,
7714         IX86_BUILTIN_MASKSTOREPS256, IX86_BUILTIN_MOVSHDUP256,
7715         IX86_BUILTIN_MOVSLDUP256, IX86_BUILTIN_MOVDDUP256,
7716         IX86_BUILTIN_SQRTPD256, IX86_BUILTIN_SQRTPS256,
7717         IX86_BUILTIN_SQRTPS_NR256, IX86_BUILTIN_RSQRTPS256,
7718         IX86_BUILTIN_RSQRTPS_NR256, IX86_BUILTIN_RCPPS256,
7719         IX86_BUILTIN_ROUNDPD256, IX86_BUILTIN_ROUNDPS256,
7720         IX86_BUILTIN_UNPCKHPD256, IX86_BUILTIN_UNPCKLPD256,
7721         IX86_BUILTIN_UNPCKHPS256, IX86_BUILTIN_UNPCKLPS256,
7722         IX86_BUILTIN_SI256_SI, IX86_BUILTIN_PS256_PS,
7723         IX86_BUILTIN_PD256_PD, IX86_BUILTIN_SI_SI256,
7724         IX86_BUILTIN_PS_PS256, IX86_BUILTIN_PD_PD256,
7725         IX86_BUILTIN_VTESTZPD, IX86_BUILTIN_VTESTCPD,
7726         IX86_BUILTIN_VTESTNZCPD, IX86_BUILTIN_VTESTZPS,
7727         IX86_BUILTIN_VTESTCPS, IX86_BUILTIN_VTESTNZCPS,
7728         IX86_BUILTIN_VTESTZPD256, IX86_BUILTIN_VTESTCPD256,
7729         IX86_BUILTIN_VTESTNZCPD256, IX86_BUILTIN_VTESTZPS256,
7730         IX86_BUILTIN_VTESTCPS256, IX86_BUILTIN_VTESTNZCPS256,
7731         IX86_BUILTIN_PTESTZ256, IX86_BUILTIN_PTESTC256,
7732         IX86_BUILTIN_PTESTNZC256, IX86_BUILTIN_MOVMSKPD256
7733         and IX86_BUILTIN_MOVMSKPS256,
7734         (ix86_special_builtin_type): Add V32QI_FTYPE_PCCHAR,
7735         V8SF_FTYPE_PCV4SF, V8SF_FTYPE_PCFLOAT, V4DF_FTYPE_PCV2DF,
7736         V4DF_FTYPE_PCDOUBLE, V8SF_FTYPE_PCV8SF_V8SF,
7737         V4DF_FTYPE_PCV4DF_V4DF, V4SF_FTYPE_PCV4SF_V4SF,
7738         V2DF_FTYPE_PCV2DF_V2DF, VOID_FTYPE_PCHAR_V32QI,
7739         VOID_FTYPE_PFLOAT_V8SF, VOID_FTYPE_PDOUBLE_V4DF,
7740         VOID_FTYPE_PV8SF_V8SF_V8SF, VOID_FTYPE_PV4DF_V4DF_V4DF,
7741         VOID_FTYPE_PV4SF_V4SF_V4SF and VOID_FTYPE_PV2DF_V2DF_V2DF,
7742         (ix86_builtin_type): Add INT_FTYPE_V8SF_V8SF_PTEST,
7743         INT_FTYPE_V4DI_V4DI_PTEST, INT_FTYPE_V4DF_V4DF_PTEST,
7744         INT_FTYPE_V4SF_V4SF_PTEST, INT_FTYPE_V2DF_V2DF_PTEST,
7745         INT_FTYPE_V8SF, INT_FTYPE_V4DF, V8SI_FTYPE_V8SF, V8SI_FTYPE_V4SI,
7746         V8SF_FTYPE_V8SF, V8SF_FTYPE_V8SI, V8SF_FTYPE_V4SF,
7747         V4SI_FTYPE_V8SI, V4SI_FTYPE_V4DF, V4DF_FTYPE_V4DF,
7748         V4DF_FTYPE_V4SI, V4DF_FTYPE_V4SF, V4DF_FTYPE_V2DF,
7749         V4SF_FTYPE_V4DF, V4SF_FTYPE_V8SF, V2DF_FTYPE_V4DF,
7750         V8SF_FTYPE_V8SF_V8SF, V8SF_FTYPE_V8SF_V8SI,
7751         V4DF_FTYPE_V4DF_V4DF, V4DF_FTYPE_V4DF_V4DI,
7752         V4SF_FTYPE_V4SF_V4SI, V2DF_FTYPE_V2DF_V2DI,
7753         V8SF_FTYPE_V8SF_INT, V4SI_FTYPE_V8SI_INT, V4SF_FTYPE_V8SF_INT,
7754         V2DF_FTYPE_V4DF_INT, V4DF_FTYPE_V4DF_INT,
7755         V8SF_FTYPE_V8SF_V8SF_V8SF, V4DF_FTYPE_V4DF_V4DF_V4DF,
7756         V8SI_FTYPE_V8SI_V8SI_INT, V8SF_FTYPE_V8SF_V8SF_INT,
7757         V4DF_FTYPE_V4DF_V4DF_INT, V4DF_FTYPE_V4DF_V2DF_INT,
7758         V8SF_FTYPE_V8SF_V8SF_V8SI_INT, V4DF_FTYPE_V4DF_V4DF_V4DI_INT,
7759         V4SF_FTYPE_V4SF_V4SF_V4SI_INT and V2DF_FTYPE_V2DF_V2DF_V2DI_INT.
7760         (bdesc_special_args): Add IX86_BUILTIN_VZEROALL,
7761         IX86_BUILTIN_VZEROUPPER. IX86_BUILTIN_VZEROUPPER_REX64,
7762         IX86_BUILTIN_VBROADCASTSS, IX86_BUILTIN_VBROADCASTSD256,
7763         IX86_BUILTIN_VBROADCASTSS256, IX86_BUILTIN_VBROADCASTPD256,
7764         IX86_BUILTIN_VBROADCASTPS256, IX86_BUILTIN_LOADUPD256,
7765         IX86_BUILTIN_LOADUPS256, IX86_BUILTIN_STOREUPD256,
7766         IX86_BUILTIN_STOREUPS256, IX86_BUILTIN_LOADDQU256,
7767         IX86_BUILTIN_STOREDQU256, IX86_BUILTIN_LDDQU256,
7768         IX86_BUILTIN_MASKLOADPD, IX86_BUILTIN_MASKLOADPS,
7769         IX86_BUILTIN_MASKLOADPD256, IX86_BUILTIN_MASKLOADPS256,
7770         IX86_BUILTIN_MASKSTOREPD, IX86_BUILTIN_MASKSTOREPS,
7771         IX86_BUILTIN_MASKSTOREPD256 and IX86_BUILTIN_MASKSTOREPS256.
7772         (ix86_builtins): Add IX86_BUILTIN_ADDPD256,
7773         IX86_BUILTIN_ADDPS256, IX86_BUILTIN_ADDSUBPD256,
7774         IX86_BUILTIN_ADDSUBPS256, IX86_BUILTIN_ANDPD256,
7775         IX86_BUILTIN_ANDPS256, IX86_BUILTIN_ANDNPD256,
7776         IX86_BUILTIN_ANDNPS256, IX86_BUILTIN_DIVPD256,
7777         IX86_BUILTIN_DIVPS256, IX86_BUILTIN_HADDPD256,
7778         IX86_BUILTIN_HSUBPS256, IX86_BUILTIN_HSUBPD256,
7779         IX86_BUILTIN_HADDPS256, IX86_BUILTIN_MAXPD256,
7780         IX86_BUILTIN_MAXPS256, IX86_BUILTIN_MINPD256,
7781         IX86_BUILTIN_MINPS256, IX86_BUILTIN_MULPD256,
7782         IX86_BUILTIN_MULPS256, IX86_BUILTIN_ORPD256,
7783         IX86_BUILTIN_ORPS256, IX86_BUILTIN_SUBPD256,
7784         IX86_BUILTIN_SUBPS256, IX86_BUILTIN_XORPD256,
7785         IX86_BUILTIN_XORPS256, IX86_BUILTIN_VPERMILVARPD,
7786         IX86_BUILTIN_VPERMILVARPS, IX86_BUILTIN_VPERMILVARPD256,
7787         IX86_BUILTIN_VPERMILVARPS256, IX86_BUILTIN_BLENDPD256,
7788         IX86_BUILTIN_BLENDPS256, IX86_BUILTIN_BLENDVPD256,
7789         IX86_BUILTIN_BLENDVPS256, IX86_BUILTIN_DPPS256,
7790         IX86_BUILTIN_SHUFPD256, IX86_BUILTIN_SHUFPS256,
7791         IX86_BUILTIN_CMPSD, IX86_BUILTIN_CMPSS, IX86_BUILTIN_CMPPD,
7792         IX86_BUILTIN_CMPPS,
7793         IX86_BUILTIN_CMPPD256,IX86_BUILTIN_CMPPS256,
7794         IX86_BUILTIN_EXTRACTF128PD256, IX86_BUILTIN_EXTRACTF128PS256,
7795         IX86_BUILTIN_EXTRACTF128SI256, IX86_BUILTIN_CVTDQ2PD256,
7796         IX86_BUILTIN_CVTDQ2PS256, IX86_BUILTIN_CVTPD2PS256,
7797         IX86_BUILTIN_CVTPS2DQ256, IX86_BUILTIN_CVTPS2PD256,
7798         IX86_BUILTIN_CVTTPD2DQ256, IX86_BUILTIN_CVTPD2DQ256,
7799         IX86_BUILTIN_CVTTPS2DQ256, IX86_BUILTIN_VPERM2F128PD256,
7800         IX86_BUILTIN_VPERM2F128PS256, IX86_BUILTIN_VPERM2F128SI256,
7801         IX86_BUILTIN_VPERMILPD, IX86_BUILTIN_VPERMILPS,
7802         IX86_BUILTIN_VPERMILPD256, IX86_BUILTIN_VPERMILPS256,
7803         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMILPS,
7804         IX86_BUILTIN_VPERMILPD256, IX86_BUILTIN_VPERMILPS256,
7805         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMIL2PS,
7806         IX86_BUILTIN_VPERMIL2PD256, IX86_BUILTIN_VPERMIL2PS256,
7807         IX86_BUILTIN_VINSERTF128PD256, IX86_BUILTIN_VINSERTF128PS256,
7808         IX86_BUILTIN_VINSERTF128SI256, IX86_BUILTIN_MOVSHDUP256,
7809         IX86_BUILTIN_MOVSLDUP256, IX86_BUILTIN_MOVDDUP256,
7810         IX86_BUILTIN_SQRTPD256, IX86_BUILTIN_SQRTPS256,
7811         IX86_BUILTIN_SQRTPS_NR256, IX86_BUILTIN_RSQRTPS256,
7812         IX86_BUILTIN_RSQRTPS_NR256, IX86_BUILTIN_RCPPS256,
7813         IX86_BUILTIN_ROUNDPD256, IX86_BUILTIN_ROUNDPS256,
7814         IX86_BUILTIN_UNPCKHPD256, IX86_BUILTIN_UNPCKLPD256,
7815         IX86_BUILTIN_UNPCKHPS256, IX86_BUILTIN_UNPCKLPS256,
7816         IX86_BUILTIN_SI256_SI, IX86_BUILTIN_PS256_PS,
7817         IX86_BUILTIN_PD256_PD, IX86_BUILTIN_SI_SI256,
7818         IX86_BUILTIN_PS_PS256, IX86_BUILTIN_PD_PD256,
7819         IX86_BUILTIN_VTESTZPD, IX86_BUILTIN_VTESTCPD,
7820         IX86_BUILTIN_VTESTNZCPD, IX86_BUILTIN_VTESTZPS,
7821         IX86_BUILTIN_VTESTCPS, IX86_BUILTIN_VTESTNZCPS,
7822         IX86_BUILTIN_VTESTZPD256, IX86_BUILTIN_VTESTCPD256,
7823         IX86_BUILTIN_VTESTNZCPD256, IX86_BUILTIN_VTESTZPS256,
7824         IX86_BUILTIN_VTESTCPS256, IX86_BUILTIN_VTESTNZCPS256,
7825         IX86_BUILTIN_PTESTZ256, IX86_BUILTIN_PTESTC256,
7826         IX86_BUILTIN_PTESTNZC256, IX86_BUILTIN_MOVMSKPD256 and
7827         IX86_BUILTIN_MOVMSKPS256.
7828         (ix86_init_mmx_sse_builtins): Support AVX builtins.
7829         (ix86_expand_args_builtin): Likewise.
7830         (ix86_expand_special_args_builtin): Likewise.
7831         (ix86_hard_regno_mode_ok): Handle AVX modes.
7832         (ix86_expand_vector_init_duplicate): Likewise.
7833         (ix86_expand_vector_init_one_nonzero): Likewise.
7834         (ix86_expand_vector_init_one_var): Likewise.
7835         (ix86_expand_vector_init_concat): Likewise.
7836         (ix86_expand_vector_init_general): Likewise.
7837         (ix86_expand_vector_set): Likewise.
7838         (ix86_vector_mode_supported_p): Likewise.
7839         (x86_extended_reg_mentioned_p): Check INSN_P before using
7840         PATTERN.
7841
7842         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
7843         OPTION_MASK_ISA_AVX and OPTION_MASK_ISA_FMA.
7844
7845         * config/i386/i386.h (TARGET_AVX): New.
7846         (TARGET_FMA): Likewise.
7847         (TARGET_CPU_CPP_BUILTINS): Handle TARGET_AVX and TARGET_FMA.
7848         (BIGGEST_ALIGNMENT): Set to 256 for TARGET_AVX.
7849         (VALID_AVX256_REG_MODE): New.
7850         (AVX256_VEC_FLOAT_MODE_P): Likewise.
7851         (AVX_FLOAT_MODE_P): Likewise.
7852         (AVX128_VEC_FLOAT_MODE_P): Likewise.
7853         (AVX256_VEC_FLOAT_MODE_P): Likewise.
7854         (AVX_VEC_FLOAT_MODE_P): Likewise.
7855         (ASM_OUTPUT_AVX_PREFIX): Likewise.
7856         (ASM_OUTPUT_OPCODE): Likewise.
7857         (UNITS_PER_SIMD_WORD): Add a FIXME for 32byte vectorizer
7858         support.
7859         (SSE_REG_MODE_P): Allow 256bit vector modes.
7860         (ix86_args): Add a warn_avx field.
7861
7862         * config/i386/i386.md (UNSPEC_PCMP): New.
7863         (UNSPEC_VPERMIL): Likewise.
7864         (UNSPEC_VPERMIL2): Likewise.
7865         (UNSPEC_VPERMIL2F128): Likewise.
7866         (UNSPEC_MASKLOAD): Likewise.
7867         (UNSPEC_MASKSTORE): Likewise.
7868         (UNSPEC_CAST): Likewise.
7869         (UNSPEC_VTESTP): Likewise.
7870         (UNSPECV_VZEROALL): Likewise.
7871         (UNSPECV_VZEROUPPER): Likewise.
7872         (XMM0_REG): Likewise.
7873         (XMM1_REG): Likewise.
7874         (XMM2_REG): Likewise.
7875         (XMM3_REG): Likewise.
7876         (XMM4_REG): Likewise.
7877         (XMM5_REG): Likewise.
7878         (XMM6_REG): Likewise.
7879         (XMM8_REG): Likewise.
7880         (XMM9_REG): Likewise.
7881         (XMM10_REG): Likewise.
7882         (XMM11_REG): Likewise.
7883         (XMM12_REG): Likewise.
7884         (XMM13_REG): Likewise.
7885         (XMM14_REG): Likewise.
7886         (XMM15_REG): Likewise.
7887         (prefix): Likewise.
7888         (prefix_vex_imm8): Likewise.
7889         (prefix_vex_w): Likewise.
7890         (length_vex): Likewise.
7891         (maxmin): Likewise.
7892         (movoi): Likewise.
7893         (*avx_ashlti3): Likewise.
7894         (*avx_lshrti3): Likewise.
7895         (*avx_setcc<mode>): Likewise.
7896         (*fop_<mode>_comm_mixed_avx): Likewise.
7897         (*fop_<mode>_comm_avx): Likewise.
7898         (*fop_<mode>_1_mixed_avx): Likewise.
7899         (*fop_<mode>_1_avx): Likewise.
7900         (*avx_<code><mode>3): Likewise.
7901         (*avx_ieee_smin<mode>3): Likewise.
7902         (*avx_ieee_smax<mode>3): Likewise.
7903         (mode): Add OI, V8SF and V4DF.
7904         (length): Support VEX prefix.
7905         (*cmpfp_i_mixed): Set prefix attribute.
7906         (*cmpfp_i_sse): Likewise.
7907         (*cmpfp_iu_mixed): Likewise.
7908         (*cmpfp_iu_sse): Likewise.
7909         (*movsi_1): Support AVX.
7910         (*movdi_2): Likewise.
7911         (*movdi_1_rex64): Likewise.
7912         (*movti_internal): Likewise.
7913         (*movti_rex64): Likewise.
7914         (*movsf_1): Likewise.
7915         (*movdf_nointeger): Likewise.
7916         (*movdf_integer_rex64): Likewise.
7917         (*movtf_internal): Likewise.
7918         (zero_extendsidi2_32): Likewise.
7919         (zero_extendsidi2_rex64): Likewise.
7920         (*extendsfdf2_mixed): Likewise.
7921         (*extendsfdf2_sse): Likewise.
7922         (*truncdfsf_fast_mixed): Likewise.
7923         (*truncdfsf_fast_sse): Likewise.
7924         (*truncdfsf_mixed): Likewise.
7925         (fix_trunc<mode>di_sse): Likewise.
7926         (fix_trunc<mode>si_sse): Likewise.
7927         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit): Likewise.
7928         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit): Likewise.
7929         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit): Likewise.
7930         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Likewise.
7931         (*rcpsf2_sse): Likewise.
7932         (*rsqrtsf2_sse): Likewise.
7933         (*sqrt<mode>2_sse): Likewise.
7934         (sse4_1_round<mode>2): Likewise.
7935         (*sse_prologue_save_insn): Disallow REX prefix for AVX.
7936         Support AVX.  Set length attribute properly for AVX.
7937
7938         * config/i386/i386-modes.def (VECTOR_MODES (INT, 32)): New.
7939         (VECTOR_MODES (FLOAT, 32)): Likewise.
7940         (VECTOR_MODE (INT, DI, 8)): Likewise.
7941         (VECTOR_MODE (INT, HI, 32)): Likewise.
7942         (VECTOR_MODE (INT, QI, 64)): Likewise.
7943         (VECTOR_MODE (FLOAT, DF, 8)): Likewise.
7944         (VECTOR_MODE (FLOAT, SF, 16)): Likewise.
7945         (VECTOR_MODE (INT, DI, 4)): Removed.
7946         (VECTOR_MODE (INT, SI, 8)): Likewise.
7947         (VECTOR_MODE (INT, HI, 16)): Likewise.
7948         (VECTOR_MODE (INT, QI, 32)): Likewise.
7949         (VECTOR_MODE (FLOAT, SF, 8)): Likewise.
7950         (INT_MODE (OI, 32)): Likewise.
7951
7952         * config/i386/i386.opt (mavx): New.
7953         (mfma): Likewise.
7954
7955         * config/i386/i386-protos.h (ix86_attr_length_vex_default): New.
7956
7957         * config/i386/mmx.md (*mov<mode>_internal_rex64): Support AVX.
7958         (*mov<mode>_internal_avx): New.
7959         (*movv2sf_internal_rex64_avx): Likewise.
7960         (*movv2sf_internal_avx): Likewise.
7961
7962         * config/i386/predicates.md (const_4_to_5_operand): New.
7963         (const_6_to_7_operand): Likewise.
7964         (const_8_to_11_operand): Likewise.
7965         (const_12_to_15_operand): Likewise.
7966         (avx_comparison_float_operator): Likewise.
7967
7968         * config/i386/sse.md (AVX256MODEI): New.
7969         (AVX256MODE): Likewise.
7970         (AVXMODEQI): Likewise.
7971         (AVXMODE): Likewise.
7972         (AVX256MODEF2P): Likewise.
7973         (AVX256MODE2P): Likewise.
7974         (AVX256MODE4P): Likewise.
7975         (AVX256MODE8P): Likewise.
7976         (AVXMODEF2P): Likewise.
7977         (AVXMODEF4P): Likewise.
7978         (AVXMODEDCVTDQ2PS): Likewise.
7979         (AVXMODEDCVTPS2DQ): Likewise.
7980         (avxvecmode): Likewise.
7981         (avxvecpsmode): Likewise.
7982         (avxhalfvecmode): Likewise.
7983         (avxscalarmode): Likewise.
7984         (avxcvtvecmode): Likewise.
7985         (avxpermvecmode): Likewise.
7986         (avxmodesuffixf2c): Likewise.
7987         (avxmodesuffixp): Likewise.
7988         (avxmodesuffixs): Likewise.
7989         (avxmodesuffix): Likewise.
7990         (vpermilbits): Likewise.
7991         (pinsrbits): Likewise.
7992         (mov<mode>): Likewise.
7993         (*mov<mode>_internal): Likewise.
7994         (push<mode>1): Likewise.
7995         (movmisalign<mode>): Likewise.
7996         (avx_movup<avxmodesuffixf2c><avxmodesuffix>): Likewise.
7997         (avx_movdqu<avxmodesuffix>): Likewise.
7998         (avx_lddqu<avxmodesuffix>): Likewise.
7999         (<plusminus_insn><mode>3): Likewise.
8000         (*avx_<plusminus_insn><mode>3): Likewise.
8001         (*avx_vm<plusminus_insn><mode>3): Likewise.
8002         (mul<mode>3): Likewise.
8003         (*avx_mul<mode>3): Likewise.
8004         (*avx_vmmul<mode>3): Likewise.
8005         (divv8sf3): Likewise.
8006         (divv4df3): Likewise.
8007         (avx_div<mode>3): Likewise.
8008         (*avx_div<mode>3): Likewise.
8009         (*avx_vmdiv<mode>3): Likewise.
8010         (avx_rcpv8sf2): Likewise.
8011         (*avx_vmrcpv4sf2): Likewise.
8012         (sqrtv8sf2): Likewise.
8013         (avx_sqrtv8sf2): Likewise.
8014         (*avx_vmsqrt<mode>2): Likewise.
8015         (rsqrtv8sf2): Likewise.
8016         (avx_rsqrtv8sf2): Likewise.
8017         (*avx_vmrsqrtv4sf2): Likewise.
8018         (<code><mode>3): Likewise.
8019         (*avx_<code><mode>3_finite): Likewise.
8020         (*avx_<code><mode>3): Likewise.
8021         (*avx_vm<code><mode>3): Likewise.
8022         (*avx_ieee_smin<mode>3): Likewise.
8023         (*avx_ieee_smax<mode>3): Likewise.
8024         (avx_addsubv8sf3): Likewise.
8025         (avx_addsubv4df3): Likewise.
8026         (*avx_addsubv4sf3): Likewise.
8027         (*avx_addsubv2df3): Likewise.
8028         (avx_h<plusminus_insn>v4df3): Likewise.
8029         (avx_h<plusminus_insn>v8sf3): Likewise.
8030         (*avx_h<plusminus_insn>v4sf3): Likewise.
8031         (*avx_h<plusminus_insn>v2df3): Likewise.
8032         (avx_cmpp<avxmodesuffixf2c><mode>3): Likewise.
8033         (avx_cmps<ssemodesuffixf2c><mode>3): Likewise.
8034         (*avx_maskcmp<mode>3): Likewise.
8035         (avx_nand<mode>3): Likewise.
8036         (*avx_<code><mode>3): Likewise.
8037         (*avx_nand<mode>3): Likewise.
8038         (*avx_<code><mode>3): Likewise.
8039         (*avx_cvtsi2ss): Likewise.
8040         (*avx_cvtsi2ssq): Likewise.
8041         (*avx_cvtsi2sd): Likewise.
8042         (*avx_cvtsi2sdq): Likewise.
8043         (*avx_cvtsd2ss): Likewise.
8044         (avx_cvtss2sd): Likewise.
8045         (avx_cvtdq2ps<avxmodesuffix>): Likewise.
8046         (avx_cvtps2dq<avxmodesuffix>): Likewise.
8047         (avx_cvttps2dq<avxmodesuffix>): Likewise.
8048         (*avx_cvtsi2sd): Likewise.
8049         (*avx_cvtsi2sdq): Likewise.
8050         (avx_cvtdq2pd256): Likewise.
8051         (avx_cvtpd2dq256): Likewise.
8052         (avx_cvttpd2dq256): Likewise.
8053         (*avx_cvtsd2ss): Likewise.
8054         (*avx_cvtss2sd): Likewise.
8055         (avx_cvtpd2ps256): Likewise.
8056         (avx_cvtps2pd256): Likewise.
8057         (*avx_movhlps): Likewise.
8058         (*avx_movlhps): Likewise.
8059         (avx_unpckhps256): Likewise.
8060         (*avx_unpckhps): Likewise.
8061         (avx_unpcklps256): Likewise.
8062         (*avx_unpcklps): Likewise.
8063         (avx_movshdup256): Likewise.
8064         (avx_movsldup256): Likewise.
8065         (avx_shufps256): Likewise.
8066         (avx_shufps256_1): Likewise.
8067         (*avx_shufps_<mode>): Likewise.
8068         (*avx_loadhps): Likewise.
8069         (*avx_storelps): Likewise.
8070         (*avx_loadlps): Likewise.
8071         (*avx_movss): Likewise.
8072         (*vec_dupv4sf_avx): Likewise.
8073         (*vec_concatv2sf_avx): Likewise.
8074         (*vec_concatv4sf_avx): Likewise.
8075         (*vec_setv4sf_0_avx): Likewise.
8076         (*vec_setv4sf_avx): Likewise.
8077         (*avx_insertps): Likewise.
8078         (avx_vextractf128<mode>): Likewise.
8079         (vec_extract_lo_<mode>): Likewise.
8080         (vec_extract_hi_<mode>): Likewise.
8081         (vec_extract_lo_<mode>): Likewise.
8082         (vec_extract_hi_<mode>): Likewise.
8083         (vec_extract_lo_v16hi): Likewise.
8084         (vec_extract_hi_v16hi): Likewise.
8085         (vec_extract_lo_v32qi): Likewise.
8086         (vec_extract_hi_v32qi): Likewise.
8087         (avx_unpckhpd256): Likewise.
8088         (*avx_unpckhpd): Likewise.
8089         (avx_movddup256): Likewise.
8090         (*avx_movddup): Likewise.
8091         (avx_unpcklpd256): Likewise.
8092         (*avx_unpcklpd): Likewise.
8093         (avx_shufpd256): Likewise.
8094         (avx_shufpd256_1): Likewise.
8095         (*avx_punpckhqdq): Likewise.
8096         (*avx_punpcklqdq): Likewise.
8097         (*avx_shufpd_<mode>): Likewise.
8098         (*avx_storehpd): Likewise.
8099         (*avx_loadhpd): Likewise.
8100         (*avx_loadlpd): Likewise.
8101         (*avx_movsd): Likewise.
8102         (*vec_concatv2df_avx): Likewise.
8103         (*avx_<plusminus_insn><mode>3): Likewise.
8104         (*avx_<plusminus_insn><mode>3): Likewise.
8105         (*avx_mulv8hi3): Likewise.
8106         (*avxv8hi3_highpart): Likewise.
8107         (*avx_umulv8hi3_highpart): Likewise.
8108         (*avx_umulv2siv2di3): Likewise.
8109         (*avx_mulv2siv2di3): Likewise.
8110         (*avx_pmaddwd): Likewise.
8111         (*avx_mulv4si3): Likewise.
8112         (*avx_ashr<mode>3): Likewise.
8113         (*avx_lshr<mode>3): Likewise.
8114         (*avx_ashl<mode>3): Likewise.
8115         (*avx_<code><mode>3): Likewise.
8116         (*avx_eq<mode>3): Likewise.
8117         (*avx_gt<mode>3): Likewise.
8118         (*avx_nand<mode>3): Likewise.
8119         (*avx_nand<mode>3): Likewise.
8120         (*avx_<code><mode>3): Likewise.
8121         (*avx_<code><mode>3): Likewise.
8122         (*avx_packsswb): Likewise.
8123         (*avx_packssdw): Likewise.
8124         (*avx_packuswb): Likewise.
8125         (*avx_punpckhbw): Likewise.
8126         (*avx_punpcklbw): Likewise.
8127         (*avx_punpckhwd): Likewise.
8128         (*avx_punpcklwd): Likewise.
8129         (*avx_punpckhdq): Likewise.
8130         (*avx_punpckldq): Likewise.
8131         (*avx_pinsr<avxmodesuffixs>): Likewise.
8132         (*avx_pinsrq): Likewise.
8133         (*avx_loadld): Likewise.
8134         (*vec_extractv2di_1_rex64_avx): Likewise.
8135         (*vec_extractv2di_1_avx): Likewise.
8136         (*vec_dupv2di_avx): Likewise.
8137         (*vec_concatv2si_avx): Likewise.
8138         (*vec_concatv4si_1_avx): Likewise.
8139         (*vec_concatv2di_avx): Likewise.
8140         (*vec_concatv2di_rex64_avx): Likewise.
8141         (*avx_uavgv16qi3): Likewise.
8142         (*avx_uavgv8hi3): Likewise.
8143         (*avx_psadbw): Likewise.
8144         (avx_movmskp<avxmodesuffixf2c>256): Likewise.
8145         (*avx_phaddwv8hi3): Likewise.
8146         (*avx_phadddv4si3): Likewise.
8147         (*avx_phaddswv8hi3): Likewise.
8148         (*avx_phsubwv8hi3): Likewise.
8149         (*avx_phsubdv4si3): Likewise.
8150         (*avx_phsubswv8hi3): Likewise.
8151         (*avx_pmaddubsw128): Likewise.
8152         (*avx_pmulhrswv8hi3): Likewise.
8153         (*avx_pshufbv16qi3): Likewise.
8154         (*avx_psign<mode>3): Likewise.
8155         (*avx_palignrti): Likewise.
8156         (avx_blendp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
8157         (avx_blendvp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
8158         (avx_dpp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
8159         (*avx_mpsadbw): Likewise.
8160         (*avx_packusdw): Likewise.
8161         (*avx_pblendvb): Likewise.
8162         (*avx_pblendw): Likewise.
8163         (avx_vtestp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
8164         (avx_ptest256): Likewise.
8165         (avx_roundp<avxmodesuffixf2c>256): Likewise.
8166         (*avx_rounds<ssemodesuffixf2c>): Likewise.
8167         (*avx_aesenc): Likewise.
8168         (*avx_aesenclast): Likewise.
8169         (*avx_aesdec): Likewise.
8170         (*avx_aesdeclast): Likewise.
8171         (avx_vzeroupper): Likewise.
8172         (avx_vzeroupper_rex64): Likewise.
8173         (avx_vpermil<mode>): Likewise.
8174         (avx_vpermilvar<mode>3): Likewise.
8175         (avx_vpermil2<mode>3): Likewise.
8176         (avx_vperm2f128<mode>3): Likewise.
8177         (avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>): Likewise.
8178         (avx_vbroadcastss256): Likewise.
8179         (avx_vbroadcastf128_p<avxmodesuffixf2c>256): Likewise.
8180         (avx_vinsertf128<mode>): Likewise.
8181         (vec_set_lo_<mode>): Likewise.
8182         (vec_set_hi_<mode>): Likewise.
8183         (vec_set_lo_<mode>): Likewise.
8184         (vec_set_hi_<mode>): Likewise.
8185         (vec_set_lo_v16hi): Likewise.
8186         (vec_set_hi_v16hi): Likewise.
8187         (vec_set_lo_v32qi): Likewise.
8188         (vec_set_hi_v32qi): Likewise.
8189         (avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
8190         (avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>): Likewise.
8191         (avx_<avxmodesuffixp><avxmodesuffix>_<avxmodesuffixp>): Likewise.
8192         (avx_<avxmodesuffixp>_<avxmodesuffixp><avxmodesuffix>): Likewise.
8193         (vec_init<mode>): Likewise.
8194         (*vec_concat<mode>_avx): Likewise.
8195         (blendbits): Support V8SF and V4DF.
8196         (sse2_movq128): Support AVX.
8197         (<sse>_movnt<mode>): Likewise.
8198         (sse2_movntv2di): Likewise.
8199         (sse_rcpv4sf2): Likewise.
8200         (sse_sqrtv4sf2): Likewise.
8201         (sse_rsqrtv4sf2): Likewise.
8202         (<sse>_comi): Likewise.
8203         (<sse>_ucomi): Likewise.
8204         (sse_cvtss2si): Likewise.
8205         (sse_cvtss2si_2): Likewise.
8206         (sse_cvtss2siq): Likewise.
8207         (sse_cvtss2siq_2): Likewise.
8208         (sse_cvttss2si): Likewise.
8209         (sse_cvttss2siq): Likewise.
8210         (sse2_cvtsd2si): Likewise.
8211         (sse2_cvtsd2si_2): Likewise.
8212         (sse2_cvtsd2siq): Likewise.
8213         (sse2_cvtsd2siq_2): Likewise.
8214         (sse2_cvttsd2si): Likewise.
8215         (sse2_cvttsd2siq): Likewise.
8216         (sse2_cvtdq2pd): Likewise.
8217         (*sse2_cvtpd2dq): Likewise.
8218         (*sse2_cvttpd2dq): Likewise.
8219         (*sse2_cvtpd2ps): Likewise.
8220         (sse2_cvtps2pd): Likewise.
8221         (sse3_movshdup): Likewise.
8222         (sse3_movsldup): Likewise.
8223         (sse_storehps): Likewise.
8224         (*sse4_1_extractps): Likewise.
8225         (sse2_storelpd): Likewise.
8226         (vec_dupv2df_sse3): Likewise.
8227         (*vec_concatv2df_sse3): Likewise.
8228         (*sse4_1_pextrb): Likewise.
8229         (*sse4_1_pextrb_memory): Likewise.
8230         (*sse2_pextrw): Likewise.
8231         (*sse4_1_pextrw_memory): Likewise.
8232         (*sse4_1_pextrd): Likewise.
8233         (*sse4_1_pextrq): Likewise.
8234         (sse2_pshufd_1): Likewise.
8235         (sse2_pshuflw_1): Likewise.
8236         (sse2_pshufhw_1): Likewise.
8237         (*sse2_storeq_rex64): Likewise.
8238         (*vec_dupv4si): Likewise.
8239         (<sse>_movmskp<ssemodesuffixf2c>): Likewise.
8240         (sse2_pmovmskb): Likewise.
8241         (*sse2_maskmovdqu): Likewise.
8242         (*sse2_maskmovdqu_rex64): Likewise.
8243         (sse_ldmxcsr): Likewise.
8244         (sse_stmxcsr): Likewise.
8245         (abs<mode>2): Likewise.
8246         (sse4_1_movntdqa): Likewise.
8247         (sse4_1_phminposuw): Likewise.
8248         (sse4_1_extendv8qiv8hi2): Likewise.
8249         (*sse4_1_extendv8qiv8hi2): Likewise.
8250         (sse4_1_extendv4qiv4si2): Likewise.
8251         (*sse4_1_extendv4qiv4si2): Likewise.
8252         (sse4_1_extendv2qiv2di2): Likewise.
8253         (*sse4_1_extendv2qiv2di2): Likewise.
8254         (sse4_1_extendv4hiv4si2): Likewise.
8255         (*sse4_1_extendv4hiv4si2): Likewise.
8256         (sse4_1_extendv2hiv2di2): Likewise.
8257         (*sse4_1_extendv2hiv2di2): Likewise.
8258         (sse4_1_extendv2siv2di2): Likewise.
8259         (*sse4_1_extendv2siv2di2): Likewise.
8260         (sse4_1_zero_extendv8qiv8hi2): Likewise.
8261         (*sse4_1_zero_extendv8qiv8hi2): Likewise.
8262         (sse4_1_zero_extendv4qiv4si2): Likewise.
8263         (*sse4_1_zero_extendv4qiv4si2): Likewise.
8264         (sse4_1_zero_extendv2qiv2di2): Likewise.
8265         (*sse4_1_zero_extendv2qiv2di2): Likewise.
8266         (sse4_1_zero_extendv4hiv4si2): Likewise.
8267         (*sse4_1_zero_extendv4hiv4si2): Likewise.
8268         (sse4_1_zero_extendv2hiv2di2): Likewise.
8269         (*sse4_1_zero_extendv2hiv2di2): Likewise.
8270         (sse4_1_zero_extendv2siv2di2): Likewise.
8271         (*sse4_1_zero_extendv2siv2di2): Likewise.
8272         (sse4_1_ptest): Likewise.
8273         (sse4_1_roundp<ssemodesuffixf2c>): Likewise.
8274         (sse4_2_pcmpestri): Likewise.
8275         (sse4_2_pcmpestrm): Likewise.
8276         (sse4_2_pcmpistri): Likewise.
8277         (sse4_2_pcmpistrm): Likewise.
8278         (aesimc): Likewise.
8279         (aeskeygenassist): Likewise.
8280
8281 2008-08-28  Uros Bizjak  <ubizjak@gmail.com>
8282
8283         * config/i386/predicates.md (vzeroall_operation): New.
8284
8285         * config/i386/sse.md (avx_vzeroall): New.
8286         (*avx_vzeroall): Likewise.
8287
8288 2008-08-28  Paul Brook  <paul@codesourcery.com>
8289             Mark Shinwell  <shinwell@codesourcery.com>
8290             Richard Earnshaw  <richard.earnshaw@arm.com>
8291
8292         * config/arm/arm.c (TARGET_MAX_ANCHOR_OFFSET): New.
8293         (TARGET_MIN_ANCHOR_OFFSET): New.
8294         (arm_override_options): Set correct anchor ranges for Thumb-1
8295         and Thumb-2 if required.
8296         (legitimize_pic_address): Handle case involving a TLS symbol
8297         reference with an addend.
8298         (arm_optimization_options): Enable section anchors at -O1 and
8299         above.
8300         * config/arm/arm.h (OPTIMIZATION_OPTIONS): New.
8301         * config/arm/arm-protos.h (arm_optimization_options): New.
8302
8303 2008-08-28  Nick Clifton  <nickc@redhat.com>
8304
8305         * config/stormy16/stormy16.h (IRA_COVER_CLASSES): Define.
8306         * config/stormy16/stormy16.md (zero_extendqihi2): Fix length
8307         attribute.
8308
8309         * config/v850/v850.h (IRA_COVER_CLASSES): Define.
8310         * config/v850/v850.md (return): Remove frame size restriction.
8311
8312         * config/mcore/mcore.h (IRA_COVER_CLASSES): Define.
8313
8314         * config/iq2000/iq2000.h (IRA_COVER_CLASSES): Define.
8315
8316         * config/fr30/fr30.h (IRA_COVER_CLASSES): Define.
8317
8318         * config/m32r/m32r.h (IRA_COVER_CLASSES): Define.
8319
8320 2008-08-28  Paul Brook  <paul@codesourcery.com>
8321
8322         * config/arm/vfp11.md: Update license notice.
8323         * config/arm/cortex-r4.md: Ditto.
8324
8325 2008-08-28  Richard Guenther  <rguenther@suse.de>
8326
8327         PR tree-optimization/37207
8328         * tree-ssa-ifcombine.c (recognize_single_bit_test): Fix
8329         tuplification bug.
8330
8331 2008-08-28  Dodji Seketeli  <dodji@redhat.com>
8332
8333         PR c++/36741
8334         * tree.c (int_fits_type_p): Don't forget unsigned integers
8335           of type sizetype which higher end word equals -1.
8336
8337 2008-08-28  Ira Rosen  <irar@il.ibm.com>
8338
8339         * target.h (struct vectorize): Add new target builtin.
8340         * tree-vectorizer.c (destroy_loop_vec_info): Call
8341         vect_free_slp_instance instead of vect_free_slp_node.
8342         * tree-vectorizer.h (enum slp_load_perm_type): New.
8343         (struct _slp_instance): Add new fields.
8344         (SLP_INSTANCE_LOAD_PERMUTATION): New.
8345         (SLP_INSTANCE_LOADS): New.
8346         (vect_free_slp_tree): Remove.
8347         (vect_free_slp_instance): Declare.
8348         (SLP_TREE_LOADS_PERM_TYPE, TARG_VEC_PERMUTE_COST): New.
8349         (vectorizable_load): Add argument.
8350         (vect_transform_slp_perm_load): New.
8351         * tree-vect-analyze.c (vect_analyze_operations): Add an argument to
8352         vectorizable_load.
8353         (vect_get_place_in_interleaving_chain): New function.
8354         (vect_free_slp_tree): Make static.
8355         (vect_free_slp_instance): New function.
8356         (vect_build_slp_tree): Add new arguments. Allow load permutations and
8357         collect the load location in the interleaving chain.
8358         (vect_supported_slp_permutation_p): New function.
8359         (vect_supported_load_permutation_p): Likewise.
8360         (vect_analyze_slp_instance): In case of loads permutation, call
8361         vect_supported_load_permutation_p to check that the permutation is
8362         supported.
8363         * target-def.h (TARGET_VECTORIZE_BUILTIN_VEC_PERM): New.
8364         * tree-vect-transform.c (vect_transform_stmt): Add new argument.
8365         (vect_create_mask_and_perm): New function.
8366         (vect_get_mask_element, vect_transform_slp_perm_load): Likewise.
8367         (vectorizable_load): Add an argument. Don't keep the created vectors
8368         statements in the node if permutation is required. Call
8369         vect_transform_slp_perm_load to generate the permutation.
8370         (vect_transform_stmt): Add new argument. Call vectorizable_load with
8371         additional argument.
8372         (vect_schedule_slp_instance): In case of loads permutation, allocate
8373         vectorized statements structure for all the related SLP nodes. Call
8374         vect_transform_stmt with addditional argument.
8375         (vect_transform_loop): Call vect_transform_stmt with correct arguments.
8376         * config/spu/spu.c (spu_builtin_vec_perm): New.
8377         (TARGET_VECTORIZE_BUILTIN_VEC_PERM): Redefine.
8378         * config/spu/spu.h (TARG_VEC_PERMUTE_COS): Define.
8379         * config/rs6000/rs6000.c (rs6000_builtin_vec_perm): New.
8380         (TARGET_VECTORIZE_BUILTIN_VEC_PERM): Redefine.
8381
8382 2008-08-28  Chris Fairles  <chris.fairles@gmail.com>
8383
8384         * gthr-posix.h (__gthread_create,  __gthread_join, __gthread_detach,
8385         __gthread_mutex_timed_lock, __gthread_recursive_mutex_timed_lock,
8386         __gthread_cond_signal, __gthread_cond_timedwait,
8387         __gthread_cond_timedwait_recursive): New functions.
8388         * gthr-posix.c (pthread_mutex_timedlock, pthread_cond_timedwait):
8389         Likewise.
8390         * gthr.h: Comment on defining __GTHREADS_CXX0X macro in conforming
8391         thread interfaces.
8392
8393 2008-08-28  Richard Guenther  <rguenther@suse.de>
8394
8395         PR middle-end/37005
8396         * fold-const.c (maybe_canonicalize_comparison_1): Require
8397         undefined overflow only for canonicalizing A +- CST cmp CST.
8398         Make sure to not generate new constants that are not inside
8399         their TYPE_MIN/MAX_VALUE range.
8400         (maybe_canonicalize_comparison): Remove undefined overflow
8401         checking from here.
8402         (fold_binary): Remove now duplicate folding.
8403
8404 2008-08-27  Paolo Carlini  <paolo.carlini@oracle.com>
8405
8406         * c-typeck.c (convert_for_assignment): Adjust WARN_FOR_ASSIGNMENT
8407         use not updated in the last change.
8408
8409 2008-08-27  Kaz Kojima  <kkojima@gcc.gnu.org>
8410
8411         * config/sh/sh.h (REG_CLASS_CONTENTS): Drop fr32 from FPUL_REGS.
8412         (IRA_COVER_CLASSES): Add FPUL_REGS.
8413
8414 2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8415
8416         PR 37217
8417         * c-common.c (conversion_warning): Check for null operands.
8418
8419 2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8420
8421         PR c/31673
8422         * c-decl.c (check_for_loop_decls): Improve error message. Give
8423         hint.
8424
8425 2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8426
8427         PR c/37186
8428         * c-typeck.c (WARN_FOR_ASSIGNMENT): Add OPT parameter.
8429         (convert_for_assignment): Pass corrent OPT_W* parameter to
8430         WARN_FOR_ASSIGNMENT.
8431
8432 2008-08-27  Paolo Carlini  <paolo.carlini@oracle.com>
8433
8434         PR c++/35321
8435         * c-common.c (fold_offsetof_1): Handle TARGET_EXPR like CALL_EXPR.
8436
8437 2008-08-27  Paul Brook  <paul@codesourcery.com>
8438
8439         * config.gcc: Loosen checks for arm uclinux eabi targets.
8440
8441 2008-08-27  Paul Brook  <paul@codesourcery.com>
8442
8443         * config/arm/t-arm-coff (LIB1ASMFUNCS): Add missing undescrore on
8444         _clzsi2.
8445         * config/arm/t-linux (LIB1ASMFUNCS): Ditto.
8446
8447 2008-08-26  Douglas Gregor  <doug.gregor@gmail.com>
8448
8449         * c-common.c (do_switch_warnings): Look through the CONST_DECLs in
8450         the enumerators of an ENUMERAL_TYPE.
8451         * dbxout.c (dbxout_type): Ditto.
8452
8453 2008-08-26  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8454
8455         PR rtl-opt/37219
8456         * fwprop.c (fwprop): Check that the loop_father is the outer loop.
8457         (fwprop_addr): Check that the loop_father is not the outer loop.
8458
8459 2008-08-26  Paul Brook  <paul@codesourcery.com>
8460
8461         * config/arm/vfp.md: Document fmul{s,d} and fmac{s,d} types.
8462         Remove documentation entry for fmul type.
8463         Use fmuls to annotate single-precision multiplication patterns,
8464         fmuld to annotate double-precision multiplication patterns,
8465         fmacs to annotate single-precision multiply-accumulate patterns
8466         and fmacd to annotate double-precision multiply-accumulate patterns.
8467         * config/arm/vfp11.md: Update reservations accordingly.
8468         * config/arm/arm.md: Note that certain values of the "type"
8469         attribute are documented in vfp.md.
8470         * config/arm/arm1020e.md: Remove out of date duplicate comment.
8471         (v10_cvt): Use new fmul types.
8472
8473 2008-08-26  Paul Brook  <paul@codesourcery.com>
8474
8475         * config/arm/vfp.md: Move pipeline description for VFP11 to...
8476         * config/arm/vfp11.md: ...here.  New.
8477         * config/arm/arm.md: Include vfp11.md.
8478
8479 2008-08-26  Hans-Peter Nilsson  <hp@axis.com>
8480
8481         * opts.c (decode_options) [!IRA_COVER_CLASSES]: Add missing
8482         parameter to inform call.
8483
8484 2008-08-26  Jeff Law  <law@redhat.com>
8485
8486         * mn10300.md (movqi, movhi): Split i->d*a case into two cases to
8487         avoid the possibility of getting DATA_OR_ADDRESS_REGS as the
8488         preferred class when copying a constant into a partial word register.
8489
8490 2008-08-26  Ben Elliston  <bje@au.ibm.com>
8491
8492         * rtlanal.c: Fix uses of "it's" with "its" where appropriate.
8493         * cp/typeck.c: Likewise.
8494         * cp/tree.c: Likewise.
8495         * gimple-low.c: Likewise.
8496         * jump.c: Likewise.
8497
8498 2008-08-26  Vladimir Makarov  <vmakarov@redhat.com>
8499
8500         * ira-build.c, ira-color.c, ira-costs.c, ira.h, ira-lives.c,
8501         ira.c, ira-conflicts.c, ira-emit.c, ira-int.h: New files.
8502
8503         * doc/passes.texi: Describe IRA.
8504
8505         * doc/tm.texi (IRA_COVER_CLASSES,
8506         IRA_HARD_REGNO_ADD_COST_MULTIPLIER): Describe the new macros.
8507
8508         * doc/invoke.texi (ira-max-loops-num): Describe the new parameter.
8509         (-fira, -fira-algorithm, -fira-coalesce, -fno-ira-move-spills,
8510         -fira-propagate-cost, -fno-ira-share-save-slots,
8511         -fno-ira-share-spill-slots, -fira-verbose): Describe new options.
8512
8513         * flags.h (ira_algorithm): New enumeration.
8514         (flag_ira_algorithm, flag_ira_verbose): New external variable
8515         declarations.
8516
8517         * postreload.c (gate_handle_postreload): Don't do post reload
8518         optimizations unless the reload is completed.
8519
8520         * reload.c (push_reload, find_dummy_reload): Use DF_LR_OUT for
8521         IRA.
8522
8523         * tree-pass.h (pass_ira): New external variable declaration.
8524
8525         * reload.h: Add 2008 to the Copyright.
8526
8527         * cfgloopanal.c: Include params.h.
8528         (estimate_reg_pressure_cost): Decrease cost for IRA optimization
8529         mode.
8530
8531         * params.h (IRA_MAX_LOOPS_NUM): New macro.
8532
8533         * toplev.c (ira.h): New include.
8534         (flag_ira_algorithm, flag_ira_verbose): New external variables.
8535         (backend_init_target): Call ira_init.
8536         (backend_init): Call ira_init_once.
8537         (finalize): Call finish_ira_once.
8538
8539         * toplev.h (flag_ira, flag_ira_coalesce, flag_ira_move_spills,
8540         flag_ira_share_save_slots, flag_ira_share_spill_slots): New
8541         external variables.
8542
8543         * regs.h (contains_reg_of_mode, move_cost, may_move_in_cost,
8544         may_move_out_cost): New external variable declarations.
8545         (move_table): New typedef.
8546
8547         * caller-save.c: Include headers output.h and ira.h.
8548         (no_caller_save_reg_set): New global variable.
8549         (save_slots_num, save_slots): New variables.
8550         (reg_save_code, reg_restore_code, add_stored_regs): Add
8551         prototypes.
8552         (init_caller_save): Set up no_caller_save_reg_set.
8553         (init_save_areas): Reset save_slots_num.
8554         (saved_hard_reg): New structure.
8555         (hard_reg_map, saved_regs_num, all_saved_regs): New variables.
8556         (initiate_saved_hard_regs, new_saved_hard_reg,
8557         finish_saved_hard_regs, saved_hard_reg_compare_func): New
8558         functions.
8559         (setup_save_areas): Add code for sharing stack slots.
8560         (all_blocks): New variable.
8561         (save_call_clobbered_regs): Process pseudo-register too.
8562         (mark_set_regs): Process pseudo-register too.
8563         (insert_one_insn): Put the insn after bb note in a empty basic
8564         block.  Add insn check.
8565
8566         * global.c (eliminable_regset): Make it external.
8567         (mark_elimination): Use DF_LR_IN for IRA.
8568         (pseudo_for_reload_consideration_p): New.
8569         (build_insn_chain): Make it external.  Don't ignore spilled
8570         pseudos for IRA.  Use pseudo_for_reload_consideration_p.
8571         (gate_handle_global_alloc): New function.
8572         (pass_global_alloc): Add the gate function.
8573
8574         * opts.c (decode_options): Set up flag_ira.  Print the warning for
8575         -fira.
8576         (common_handle_option): Process -fira-algorithm and -fira-verbose.
8577
8578         * timevar.def (TV_IRA, TV_RELOAD): New passes.
8579
8580         * regmove.c (regmove_optimize): Don't do replacement of output for
8581         IRA.
8582
8583         * hard-reg-set.h (no_caller_save_reg_set, reg_class_subclasses):
8584         New external variable declarations.
8585
8586         * local-alloc.c (update_equiv_regs): Make it external.  Return
8587         true if jump label rebuilding should be done.  Rescan new_insn for
8588         notes.
8589         (gate_handle_local_alloc): New function.
8590         (pass_local_alloc): Add the gate function.
8591
8592         * alias.c (value_addr_p, stack_addr_p): New functions.
8593         (nonoverlapping_memrefs_p): Use them for IRA.
8594
8595         * common.opt (fira, fira-algorithm, fira-coalesce,
8596         fira-move-spills, fira-share-save-slots, fira-share-spill-slots,
8597         fira-verbose): New options.
8598
8599         * regclass.c (reg_class_subclasses, contains_reg_of_mode,
8600         move_cost, may_move_in_cost, may_move_out_cost): Make the
8601         variables external.
8602         (move_table): Remove typedef.
8603         (init_move_cost): Make it external.
8604         (allocate_reg_info, resize_reg_info, setup_reg_classes): New
8605         functions.
8606
8607         * rtl.h (init_move_cost, allocate_reg_info, resize_reg_info,
8608         setup_reg_classes): New function prototypes.
8609         (eliminable_regset): New external variable declaration.
8610         (build_insn_chain, update_equiv_regs): New function prototypes.
8611
8612         * Makefile.in (IRA_INT_H): New definition.
8613         (OBJS-common): Add ira.o, ira-build.o, ira-costs.o,
8614         ira-conflicts.o, ira-color.o, ira-emit.o, and ira-lives.o.
8615         (reload1.o, toplev.o): Add dependence on ira.h.
8616         (cfgloopanal.o): Add PARAMS_H.
8617         (caller-save.o): Add dependence on output.h and ira.h.
8618         (ira.o, ira-build.o, ira-costs.o, ira-conflicts.o, ira-color.o,
8619         ira-emit.o, ira-lives.o): New entries.
8620
8621         * passes.c (pass_ira): New pass.
8622
8623         * params.def (PARAM_IRA_MAX_LOOPS_NUM): New parameter.
8624
8625         * reload1.c (ira.h): Include the header.
8626         (changed_allocation_pseudos): New bitmap.
8627         (init_reload): Initiate the bitmap.
8628         (compute_use_by_pseudos): Permits spilled registers in FROM.
8629         (temp_pseudo_reg_arr): New variable.
8630         (reload): Allocate and free temp_pseudo_reg_arr.  Sort pseudos for
8631         IRA.  Call alter_reg with the additional parameter.  Don't clear
8632         spilled_pseudos for IRA.  Restore original insn chain for IRA.
8633         Clear changed_allocation_pseudos at the end of reload.
8634         (calculate_needs_all_insns): Call IRA's mark_memory_move_deletion.
8635         (hard_regno_to_pseudo_regno): New variable.
8636         (count_pseudo): Check spilled pseudos.  Set up
8637         hard_regno_to_pseudo_regno.
8638         (count_spilled_pseudo): Check spilled pseudos. Update
8639         hard_regno_to_pseudo_regno.
8640         (find_reg): Use better_spill_reload_regno_p.  Check
8641         hard_regno_to_pseudo_regno.
8642         (alter_reg): Set up spilled_pseudos.  Add a new parameter.  Add
8643         code for IRA.
8644         (eliminate_regs_1): Use additional parameter for alter_reg.
8645         (finish_spills): Set up pseudo_previous_regs only for spilled
8646         pseudos.  Call reassign_pseudos once for all spilled pseudos, pass
8647         more arguments.  Don't clear live_throughout and dead_or_set for
8648         spilled pseudos.  Use additional parameter for alter_reg.  Call
8649         mark_allocation_change.  Set up changed_allocation_pseudos.
8650         Remove sanity check.
8651         (emit_input_reload_insns, delete_output_reload): Use additional
8652         parameter for alter_reg.  Call mark_allocation_change.
8653         (substitute, gen_reload_chain_without_interm_reg_p): New
8654         functions.
8655         (reloads_conflict): Use gen_reload_chain_without_interm_reg_p.
8656
8657         * testsuite/gcc.dg/20080410-1.c: New file.
8658
8659         * config/s390/s390.h (IRA_COVER_CLASSES,
8660         IRA_HARD_REGNO_ADD_COST_MULTIPLIER): Define.
8661
8662         * config/sparc/sparc.h (IRA_COVER_CLASSES): New macro.
8663
8664         * config/i386/i386.h (IRA_COVER_CLASSES): Ditto.
8665
8666         * config/ia64/ia64.h (IRA_COVER_CLASSES): Ditto.
8667
8668         * config/rs6000/rs6000.h (IRA_COVER_CLASSES): Ditto.
8669
8670         * config/arm/arm.h (IRA_COVER_CLASSES): Ditto.
8671
8672         * config/alpha/alpha.h (IRA_COVER_CLASSES): Ditto.
8673
8674         2008-08-24  Jeff Law  <law@redhat.com>
8675         * ira.c (setup_reg_class_intersect_union): Prefer smallest class
8676         when ignoring unavailable registers.
8677
8678         2008-08-24  Jeff Law  <law@redhat.com>
8679         * ira-color.c (coalesced_pseudo_reg_slot_compare): Check
8680         FRAME_GROWS_DOWNWARD and STACK_GROWS_DOWNWARD.
8681         * ira.c (setup_eliminable_regset): Check stack_realign_needed.
8682         * config/mn10300/mn10300.h (IRA_COVER_CLASSES): New macro.
8683
8684         2008-06-03 Steve Chamberlain <steve.chamberlain@gmail.com>
8685         * ira-build.c (allocno_range_compare_func): Stabilize sort.
8686
8687         2008-05-29 Andy Hutchinson <hutchinsonandy@aim.com>
8688         * config/avr/avr.h (IRA_COVER_CLASSES): New macro.
8689         * reload1.c (find_reg): Process registers in register allocation order.
8690
8691         2008-05-10 Richard Sandiford <rsandifo@nildram.co.uk>
8692         * toplev.c (backend_init_target): Move ira_init call from
8693         here...
8694         (lang_dependent_init_target): ...to here.
8695
8696         2008-05-10 Richard Sandiford <rsandifo@nildram.co.uk>
8697         * ira.c (setup_class_subset_and_memory_move_costs): Don't
8698         calculate memory move costs for NO_REGS.
8699
8700         2008-05-05 Kaz Kojima <kkojima@gcc.gnu.org>
8701         * ira-color.c (ira_fast_allocation): Use no_stack_reg_p only if
8702         STACK_REGS is defined.
8703
8704         2008-04-08 Andrew Pinski <andrew_pinski@playstation.sony.com>
8705         * config/spu/spu.h (IRA_COVER_CLASSES): New macro.
8706
8707         2008-04-04 Bernd Schmidt <bernd.schmidt@analog.com>
8708         * config/bfin/bfin.h (IRA_COVER_CLASSES): New macro.
8709
8710         2008-04-04 Kaz Kojima <kkojima@gcc.gnu.org>
8711         * config/sh/sh.h (IRA_COVER_CLASSES): Define.
8712         * config/sh/sh.md (movsicc_true+3): Check if emit returns a
8713         barrier.
8714
8715 2008-08-26  Victor Kaplansky  <victork@il.ibm.com>
8716             Dorit Nuzman  <dorit@il.ibm.com>
8717
8718         * gcc/config/spu/spu.md (vec_extract_evenv4si,
8719         vec_extract_evenv4sf, vec_extract_evenv8hi,
8720         vec_extract_evenv16qi, vec_extract_oddv4si,
8721         vec_extract_oddv4sf, vec_extract_oddv8hi, vec_extract_oddv16qi,
8722         vec_interleave_highv4sf, vec_interleave_lowv4sf,
8723         vec_interleave_highv4si, vec_interleave_lowv4si,
8724         vec_interleave_highv8hi, vec_interleave_lowv8hi,
8725         vec_interleave_highv16qi, vec_interleave_lowv16qi,
8726         vec_pack_trunc_v8hi, vec_pack_trunc_v4si): Implement.S
8727
8728 2008-08-25  Janis Johnson  <janis187@us.ibm.com>
8729
8730         PR target/36756
8731         * config/rs6000/rs6000.c (optimization_options): Don't default to
8732         section anchors without toplevel reorder.
8733
8734 2008-08-25  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
8735
8736         * config/spu/spu_mfcio.h (mfc_begin_critical_section): New function.
8737         (mfc_end_critical_section): Likewise.
8738
8739 2008-08-25  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
8740
8741         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Propagate
8742         all type qualifiers from element type to vector type.
8743
8744 2008-08-25  David Daney  <ddaney@avtrex.com>
8745
8746         * config/mips/mips.md (immediate_insn): Move up in file, fix
8747         comment typo, reformat.
8748         (fetchop_bit, atomic_hiqi_op memory_barrier,
8749         sync_compare_and_swap<mode>, compare_and_swap_12, sync_add<mode>,
8750         sync_<optab><mode>, sync_<optab>_12, sync_old_<optab><mode>,
8751         sync_old_<optab>_12, sync_new_<optab><mode>, sync_new_<optab>_12,
8752         sync_nand<mode>, sync_nand_12, sync_old_nand<mode>,
8753         sync_old_nand_12, sync_new_nand<mode>, sync_new_nand_12,
8754         sync_sub<mode>, sync_old_add<mode>, sync_old_sub<mode>,
8755         sync_new_add<mode>, sync_new_sub<mode>, sync_<optab><mode>,
8756         sync_old_<optab><mode>, sync_new_<optab><mode>, sync_nand<mode>,
8757         sync_old_nand<mode>, sync_new_nand<mode>,
8758         sync_lock_test_and_set<mode>, sync_lock_test_and_set<mode>,
8759         test_and_set_12): Moved to sync.md.
8760         (sync.md): Include.
8761         * config/mips/sync.md: New file.
8762
8763 2008-08-25  Richard Henderson  <rth@redhat.com>
8764
8765         * dwarf2out.c (def_cfa_1): Don't scale by DWARF_CIE_DATA_ALIGNMENT.
8766         (regsave): Likewise.
8767         (lookup_cfa_1): Don't rescale by DWARF_CIE_DATA_ALIGNMENT.
8768         (output_cfi_directive): Likewise.
8769         (div_data_align): New.
8770         (output_cfi): Use it.
8771
8772 2008-08-24  Adam Nemet  <anemet@caviumnetworks.com>
8773
8774         * config.gcc (mips64*-*-linux*): Handle mips64octeon*-*-linux*.
8775         * config/mips/mips.h (enum processor_type): Add PROCESSOR_OCTEON.
8776         (TARGET_OCTEON): New macro.
8777         (TARGET_CPU_CPP_BUILTINS): Define __OCTEON__ for Octeon.
8778         (MIPS_ISA_LEVEL_SPEC, MIPS_ARCH_FLOAT_SPEC): Handle -march=octeon.
8779         (ISA_HAS_POP): New macro.
8780         * config/mips/driver-native.c (host_detect_local_cpu): Handle
8781         Octeon.
8782         * config/mips/mips.c (mips_cpu_info_table, mips_rtx_cost_data):
8783         Handle Octeon.
8784         * config/mips/mips.md (cpu): Add octeon.
8785         (type): Add pop attribute value.
8786         (popcount<mode>2): New pattern.
8787         * doc/invoke.texi (-march=@var{arch}): Add octeon.
8788
8789 2008-08-24  Jan Hubicka  <jh@suse.cz>
8790
8791         * doc/invoke.texi (-fipa-cp-clone): New option.
8792         (-fipa-cp): Update docs.
8793         (--param ipcp-unit-growth):New.
8794         * ipa-cp.c: Include fibheap.h, params.h
8795         (ipcp_initialize_node_lattices): When not cloning, all externally
8796         visible functions are bottom.
8797         (ipcp_need_redirect_p): Accept clones.
8798         (ipcp_insert_stage): Use cost driven heuristics.
8799         (max_count, dead_nodes): New static vars.
8800         (ipcp_need_original_clone_p, ipcp_estimate_cloning_cost,
8801         ipcp_const_param_count): New functions.
8802         * common.opt (ipa-cp-clone): New command line option.
8803         * params.def (ipcp-unit-growth): New.
8804
8805 2008-08-24  Jan Hubicka  <jh@suse.cz>
8806
8807         * tree-inline.c (tree_function_versioning): Look harder
8808         for referenced vars.
8809
8810 2008-08-24  Razya Ladelsky  <razya@il.ibm.com>
8811
8812         PR tree-optimization/37185
8813         * matrix-reorg.c (transform_access_sites): Update changed stmt.
8814
8815 2008-08-23  Jan Hubicka  <jh@suse.cz>
8816
8817         * ipa-cp.c (ipcp_analyze_node): New function.
8818         (ipcp_update_cloned_node): Use it.
8819         (ipcp_init_stage): Likewise.
8820         * ipa-inline.c (function_insertion_hook_holder): New static var.
8821         (analyze_function): Break out from ....
8822         (inline_generate_summary): Here; register insertion hook.
8823         (cgraph_decide_inlining): Remove hook.
8824         (add_new_function): New function.
8825
8826 2008-08-23  Jan Hubicka  <jh@suse.cz>
8827
8828         * opts.c (decode_options): Revert accidental change enabling ipa-cp.
8829
8830 2008-08-23  Jan Hubicka  <jh@suse.cz>
8831
8832         * ipa-cp.c (constant_val_insert): Remove.
8833         (ipcp_propagate_one_const): Remove.
8834         (ipcp_create_replace_map): Always insert replacements to the map.
8835         (ipcp_insert_stage): Do not try to insert statements by hand.
8836         * tree-inline.c (insert_init_stmt): Break out from ...
8837         (setup_one_parameter): ... here; allow NULL BB pointer.
8838         (tree_function_versioning): Use setup_one_parameter to process
8839         replacement map.
8840
8841 2008-08-23  Jan Hubicka  <jh@suse.cz>
8842
8843         * tree.c (decl_address_ip_invariant_p): New function.
8844         * tree.h (decl_address_ip_invariant_p): Declare.
8845         * gimple.c (strip_invariant_refs): Break out from ...
8846         (is_gimple_invariant_address): ... here
8847         (is_gimple_ip_invariant_address): New function.
8848         (is_gimple_ip_invariant): New function.
8849         * gimple.h (is_gimple_ip_invariant_address, is_gimple_ip_invariant):
8850         Declare.
8851
8852         * ipa-cp.c (ipcp_lat_is_const): Remove handling of IPA_CONST_VALUE_REF.
8853         (ipcp_lat_is_insertable): All constants are insertable.
8854         (ipcp_lattice_from_jfunc, ipcp_print_all_lattices): Remove handling of
8855         IPA_CONST_VALUE_REF.
8856         (ipcp_initialize_node_lattices): Propagate all types of operands.
8857         (build_const_val): Do not handle IPA_CONST_VALUE_REF.
8858         (ipcp_create_replace_map): Reformat.
8859         (ipcp_need_redirect_p): Simplify.
8860         (ipcp_insert_stage): Check that argument is used before clonning.
8861         * ipa-prop.c (ipa_print_node_jump_functions): Do not handle
8862         IPA_CONST_REF.
8863         (compute_scalar_jump_functions): Simplify using is_gimple_ip_invariat.
8864         (determine_cst_member_ptr): Keep wrapping ADDR_EXPR of members.
8865         (update_call_notes_after_inlining): Expect ADDR_EXPR in operand.
8866         * ipa-prop.h (jump_func_type): Remove IPA_CONST_REF.
8867         (jump_func_type): Remove IPA_CONST_VALUE_REF.
8868         * tree-inline.c (tree_function_versioning): Add variables referenced
8869         by replacing trees.
8870
8871 2008-08-23  Jan Hubicka  <jh@suse.cz>
8872
8873         PR target/37094
8874         * i386.c (standard_80387_constant_p): Use optimize_size.
8875
8876 2008-08-23  Ira Rosen  <irar@il.ibm.com>
8877
8878         PR tree-optimization/37161
8879         * tree-vectorizer.h (vect_get_smallest_scalar_type): Declare.
8880         * tree-vect-analyze.c (vect_get_smallest_scalar_type): New function.
8881         (vect_determine_vectorization_factor): Move the scalar type
8882         retrieval to vect_get_smallest_scalar_type.
8883         (vect_build_slp_tree): Call vect_get_smallest_scalar_type to get
8884         scalar type. Remove redundant computation.
8885         * tree-vect-transform.c (vect_get_constant_vectors): Add argument.
8886         (vect_get_slp_defs): Take the type of RHS into account if
8887         necessary by calling vect_get_smallest_scalar_type. Call
8888         vect_get_constant_vectors with additional argument.
8889
8890 2008-08-23  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8891
8892         PR 35648
8893         * doc/invoke.texi (Wwrite-strings): Clarify description.
8894
8895 2008-08-23  Ira Rosen  <irar@il.ibm.com>
8896
8897         PR tree-optimization/37174
8898         * tree-vect-analyze.c (vect_get_and_check_slp_defs): Check that the
8899         def stmt is a part of the loop before accessing its stmt_vec_info.
8900
8901 2008-08-22  Anatoly Sokolov  <aesok@post.ru>
8902
8903         PR target/11259
8904         * config/avr/avr.md (UNSPEC_SWAP): New constants.
8905         (*swap): New insn pattern.
8906         (*ashlqi3): Rename from ashlqi3 insn pattern.
8907         (ashlqi3): New expanders.
8908         (*lshrqi3): Rename from lshrqi3 insn pattern.
8909         (lshrqi3): New expanders.
8910         (ashlqi3_const4, ashlqi3_const5, ashlqi3_const6, lshrqi3_const4,
8911         lshrqi3_const5, lshrqi3_const6): New splitters.
8912         (andi, ashlqi3_l_const4, ashlqi3_l_const5, ashlqi3_l_const6,
8913         lshrqi3_l_const4, lshrqi3_l_const5, lshrqi3_l_const6): Define
8914         peephole2 patterns.
8915
8916 2008-08-22  Richard Guenther  <rguenther@suse.de>
8917
8918         PR tree-optimization/37078
8919         * tree-vrp.c (extract_range_from_unary_expr): Avoid generating
8920         [+INF, +INF] ranges.
8921
8922 2008-08-22  Richard Guenther  <rguenther@suse.de>
8923
8924         PR tree-optimization/37143
8925         * tree-vect-transform.c (vect_create_cond_for_align_checks): Build
8926         a conversion statement instead of a copy.
8927
8928 2008-08-22  Uros Bizjak  <ubizjak@gmail.com>
8929
8930         PR target/37184
8931         * config/i386/i386.c (ix86_match_ccmode): Handle CCAmode,
8932         CCCmode, CCOmode and CCSmode destination modes.
8933
8934         PR target/37191
8935         * config/i386/mmx.md (*vec_extractv2sf_0): Avoid combining registers
8936         from different units in a single alternative.
8937         (*vec_extractv2sf_1): Ditto.
8938         (*vec_extractv2si_0): Ditto.
8939         (*vec_extractv2si_1): Ditto.
8940         * config/i386/sse.md (sse2_storehpd): Ditto.
8941         (sse2_storelpd): Ditto.
8942         (sse2_loadhpd): Ditto.
8943         (sse2_loadlpd): Ditto.
8944
8945         PR target/37197
8946         * config/i386/i386.md (clzsi2_abm): Fix operand 1 constraints.
8947         (popcountsi2): Ditto.
8948         (clzdi2_abm): Ditto.
8949         (popcountdi2): Ditto.
8950         (clzhi2_abm): Ditto.
8951         (popcounthi2): Ditto.
8952
8953 2008-08-22  Richard Guenther  <rguenther@suse.de>
8954
8955         PR middle-end/36548
8956         PR middle-end/37125
8957         * fold-const.c (extract_muldiv_1): Optimize (X * C1) % C2 only
8958         if the multiplication does not overflow.
8959
8960 2008-08-21  Nathan Sidwell  <nathan@codesourcery.com>
8961
8962         * c-ppoutput.c (init_pp_output): Initialize src_line to 1.
8963
8964 2008-08-21  Richard Henderson  <rth@redhat.com>
8965
8966         * configure.ac (HAVE_GAS_CFI_PERSONALITY_DIRECTIVE): Remove
8967         spurrious comma from test.
8968         * configure: Rebuild.
8969
8970 2008-08-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8971
8972         PR 30457
8973         * builtins.c (fold_builtin_next_arg): Add warning about undefined
8974         behaviour.
8975
8976 2008-08-21  Aldy Hernandez  <aldyh@redhat.com>
8977
8978         * c-tree.h (grokfield): New argument.
8979         * c-decl.c (grokfield): Handle new location argument.
8980         * c-parser.c (c_parser_struct_declaration): Pass location to grokfield.
8981
8982 2008-08-21  Richard Guenther  <rguenther@suse.de>
8983
8984         * tree-ssa-ccp.c (ccp_fold): Fold VIEW_CONVERT_EXPRs of constants.
8985
8986 2008-08-21  Jan Hubicka  <jh@suse.cz>
8987
8988         * cgraph.c (first_cgraph_function_insertion_hook): New variable.
8989         (cgraph_add_function_insertion_hook,
8990         cgraph_remove_function_insertion_hook,
8991         cgraph_call_function_insertion_hooks): New functions.
8992         * cgraph.h (cgraph_add_function_insertion_hook,
8993         cgraph_remove_function_insertion_hook,
8994         cgraph_call_function_insertion_hooks): Declare.
8995         * ipa-reference.c (function_insertion_hook_holder): New variable.
8996         (check_operand, look_for_address_of): When checking late, do not care
8997         about module bitmaps.
8998         (add_new_function): New function.
8999         (generate_summary): Register hooks; zero module bitmaps.
9000         (propagate): Unregister hooks.
9001         * ipa-pure-const.c (function_insertion_hook_holder): New variable.
9002         (add_new_function): New function.
9003         (generate_summary): Register hook.
9004         (propagate): Remove hook.
9005
9006         * ipa-cp.c (ipcp_need_redirect_p): Fix to not be constant 0.
9007
9008         * tree-pass.h (pass_ipa_cp): Make ipa_opt_pass.
9009         * ipa-cp.c (ipcp_update_cloned_node): New function.
9010         (build_const_val): Handle functions correctly; bring type logic
9011         into sync with tree-inline.c
9012         (ipcp_init_stage):  Take care of computing stuff needed by
9013         indirect inlining; update clones.
9014         (ipcp_generate_summary): Break out of ipcp_driver.
9015         (ipcp_driver): Do only execution and transformation.
9016         (pass_ipa_cp): Make IPA_PASS.
9017         * tree-ssa-ccp.c (fold_stmt_r): Check type before trying to fold
9018         offset to address.
9019         * ipa-inline.c (inline_indirect_intraprocedural_analysis): When doing
9020         ipcp, some info is already available.
9021         * ipa-prop.c (ipa_count_arguments): Grow edge lists as needed.
9022         * tree-inline.c (remap_ssa_name): Unshare expression.
9023
9024 2008-08-21  Richard Guenther  <rguenther@suse.de>
9025
9026         * tree-ssa-pre.c (insert_into_preds_of_block): Before inserting
9027         a PHI ask VN if it is already available.
9028         * tree-ssa-sccvn.h (vn_phi_lookup): Declare.
9029         * tree-ssa-sccvn.c (vn_phi_lookup): Export.
9030
9031 2008-08-21  Richard Guenther  <rguenther@suse.de>
9032
9033         PR middle-end/36817
9034         * tree-chrec.c (chrec_apply): Always call chrec_fold_plus which
9035         makes sure to produce a result of the correct type.
9036
9037 2008-08-21  Jan Hubicka  <jh@suse.cz>
9038         Backport from LTO branch:
9039
9040         2008-05-05  Kenneth Zadeck <zadeck@naturalbridge.com>
9041                     Jan Hubicka  <jh@suse.cz>
9042
9043         * ipa-pure-const.c
9044         (init_state, finish_state, set_function_state, generate_summary):
9045         New functions.
9046         (scan_stmt): Renamed from scan_function.  Changed to keep state in
9047         local static vars rather than cgraph aux field.
9048         (propagate): Renamed from static_execute. Changed to keep state in
9049         local static vars rather than cgraph aux field.
9050         (pass_ipa_pure_const): Changed from SIMPLE_IPA_PASS to IPA_PASS.
9051         * tree-pass.h (pass_ipa_pure_const): Turn into IPA_PASS.
9052
9053         2008-07-15  Kenneth Zadeck <zadeck@naturalbridge.com>
9054
9055         * tree-pass.h (pass_ipa_reference): Make into ipa_opt_pass.
9056         * ipa-reference.c (init_function_info, generate_summary,
9057         propagate): New functions.
9058         (analyze_function):  Call init_function_info.
9059         (static_execute): Stripped into generate_summary and propagate.
9060         (pass_ipa_reference): Made into ipa_opt_pass.
9061
9062 2008-08-21  Richard Guenther  <rguenther@suse.de>
9063
9064         PR tree-optimization/37181
9065         * tree-vrp.c (extract_range_from_binary_expr): Check for NULL
9066         folding result.
9067         (extract_range_from_unary_expr): Likewise.
9068
9069 2008-08-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9070
9071         * diagnostic.c (pedwarn_at): Rename as pedwarn.
9072         (pedwarn): Delete.
9073         * toplev.h (pedwarn_at): Likewise.
9074         * builtins.c: Update all calls to pedwarn.
9075         * c-lex.c: Likewise.
9076         * toplev.c: Likewise.
9077         * c-tree.h: Likewise.
9078         * c-decl.c: Likewise.
9079         * c-errors.c: Likewise.
9080         * c-typeck.c: Likewise.
9081         * c-common.c: Likewise.
9082         * c-parser.c: Likewise.
9083
9084 2008-08-20  Joseph Myers  <joseph@codesourcery.com>
9085
9086         PR target/31070
9087         * config/sparc/sparc.c (function_arg_slotno): Handle structure
9088         with MODE_VECTOR_INT mode.
9089
9090 2008-08-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9091
9092         PR middle-end/179
9093         * tree-ssa.c (warn_uninit): Do not warn for variables that can be
9094         initialized outside the current module.
9095         (warn_uninitialized_var): Ignore left-hand side when walking the
9096         trees. Ignore address expressions. Examine VUSE operands in gimple
9097         statements with a variable declaration on the right-hand side.
9098
9099 2008-08-20  Richard Sandiford  <rdsandiford@googlemail.com>
9100
9101         PR bootstrap/37155
9102         * rtlanal.c (subreg_offset_representable_p): Revert last change.
9103
9104 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9105
9106         PR 35701
9107         * c-common.c (conversion_warning): Do not warn if applying bit-and
9108         operator to unsigned constant that fits in the target type.
9109
9110 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9111
9112         PR c++/35602
9113         * c-common.c (conversion_warning): Do not warn for artificial
9114         expressions.
9115
9116 2008-08-20  Richard Guenther  <rguenther@suse.de>
9117
9118         * tree-vrp.c (op_with_constant_singleton_value_range): New function.
9119         (extract_range_from_binary_expr): Fall back to constant propagation.
9120         (extract_range_from_unary_expr): Likewise.
9121
9122 2008-08-20  Richard Guenther  <rguenther@suse.de>
9123
9124         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Do not mess
9125         with TREE_THIS_VOLATILE on shared nodes.
9126         (fold_stmt_r): Likewise.
9127
9128 2008-08-20  Jakub Jelinek  <jakub@redhat.com>
9129
9130         PR c/37171
9131         * c-parser.c (c_parser_attributes): For keywords use canonical
9132         spelling for attr_name.
9133
9134 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9135
9136         * value-prof.c (check_counter): Revert wrong call to error.
9137
9138 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9139
9140         * profile.c: Update calls to inform.
9141         * value-prof.c: Update calls to inform.
9142
9143 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9144
9145         * diagnostic.c (inform): Add an explicit location_t parameter.
9146         * toplev.h (inform): Update declaration.
9147         * builtins.c: Update all calls to inform.
9148         * c-common.c: Likewise.
9149         * c-decl.c: Likewise.
9150         * c-opts.c: Likewise.
9151         * c-pch.c: Likewise.
9152         * c-pragma.c: Likewise.
9153         * c-typeck.c: Likewise.
9154         * coverage.c: Likewise.
9155         * opts.c: Likewise.
9156         * toplev.c: Likewise.
9157         * tree-cfg.c: Likewise.
9158         * tree-ssa.c: Likewise.
9159
9160 2008-08-20  H.J. Lu  <hongjiu.lu@intel.com>
9161
9162         PR target/37169
9163         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): In
9164         V2DI mode, for SSE4.1, use movq instead of vector set if the
9165         second element is zero and inter-unit moves are OK.
9166
9167 2008-08-20  Richard Guenther  <rguenther@suse.de>
9168
9169         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): More
9170         properly handle conversion/copy chains after tuplification.
9171
9172 2008-08-20  Richard Guenther  <rguenther@suse.de>
9173
9174         * passes.c (init_optimization_passes): Move the second
9175         forwprop pass before alias computation.  Remove the second
9176         DCE pass.  Remove the first dominator and phi copy/const
9177         prop passes.
9178
9179 2008-08-20  Nick Clifton  <nickc@redhat.com>
9180
9181         * configure.ac (HAVE_GAS_CFI_DIRECTIVE): Always test for assembler
9182         support of this feature.  Do not assume that a sufficiently new
9183         assembler will support the feature regardless of the target type.
9184         (HAVE_GAS_CFI_PERSONALITY_DIRECTIVE): Likewise.
9185         * configure: Regenerate.
9186
9187 2008-08-20  Richard Guenther  <rguenther@suse.de>
9188
9189         * tree-vrp.c (found_in_subgraph): Remove.
9190         (live): New global static.
9191         (live_on_edge): New function.
9192         (blocks_visited): Remove.
9193         (register_edge_assert_for_2): Use live_on_edge.
9194         (find_conditional_asserts): Remove code dealing with
9195         found_in_subgraph.  Do not walk the CFG.
9196         (find_switch_asserts): Likewise.
9197         (find_assert_locations_1): Renamed from find_assert_locations.
9198         Move finding assert locations for conditional and switch
9199         statements first.  Update live bitmap.  Do not walk the CFG.
9200         (find_assert_locations): New function.
9201         (insert_range_assertions): Remove entry of CFG walk.
9202         Adjust call to find_assert_locations.
9203         * tree-ssa-pre.c (do_regular_insertion): Ignore critical edges
9204         that only can appear because of fake exit edges but assert we
9205         never try to insert on those.
9206         (fini_pre): Do not remove fake exit edges here...
9207         (execute_pre): ...but here, before committing edge inserts.
9208
9209 2008-08-19  Richard Guenther  <rguenther@suse.de>
9210
9211         * passes.c (init_optimization_passes): Exchange store-ccp
9212         with a ccp pass.
9213
9214 2008-08-19  Rafael Espíndola  <espindola@google.com>
9215
9216         * varasm.c (weak_decls): Move earlier in the file.
9217         (assemble_external): Add weak decls to the weak_decls list.
9218         (declare_weak): Don't add decls to the weak_decls list.
9219
9220 2008-08-19  H.J. Lu  <hongjiu.lu@intel.com>
9221
9222         PR target/37157
9223         * config/i386/sse.md (sse2_punpckhqdq, sse2_punpcklqdq): Moved
9224         before (sse2_shufpd_<mode>).
9225
9226 2008-08-19  Jakub Jelinek  <jakub@redhat.com>
9227
9228         PR debug/37156
9229         * pretty-print.c (pp_base_format): Deal with recursive BLOCK trees.
9230         * tree.c (block_nonartificial_location): Likewise.
9231
9232 2008-08-19  Richard Guenther  <rguenther@suse.de>
9233
9234         PR tree-optimization/35972
9235         PR tree-optimization/23094
9236         * tree-ssa-sccvn.h (vn_reference_lookup_pieces): Add maywalk
9237         parameter.
9238         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Properly
9239         handle MISALIGNED_INDIRECT_REF.
9240         (get_ref_from_reference_ops): New helper.
9241         (vn_reference_lookup_pieces): Walk the use-def chain using the
9242         alias-oracle if requested.
9243         * tree-ssa-pre.c (phi_translate_1): Do reference lookup with
9244         walking the use-def chain.
9245         (compute_avail): But not here.
9246         (create_component_ref_by_pieces_1): Properly handle
9247         MISALIGNED_INDIRECT_REF.
9248         (do_regular_insertion): Handle fully redundant
9249         expressions after PHI-translation also for SSA_NAME values, not
9250         only constants.  Correctly use edoubleprime for that.
9251
9252 2008-08-19  Ira Rosen  <irar@il.ibm.com>
9253
9254         * tree-vectorizer.c (supportable_widening_operation): Support
9255         multi-step conversion, return the number of steps in such conversion
9256         and the required intermediate types.
9257         (supportable_narrowing_operation): Likewise.
9258         * tree-vectorizer.h (vect_pow2): New function.
9259         (supportable_widening_operation): Change argument types.
9260         (supportable_narrowing_operation): Likewise.
9261         (vectorizable_type_promotion): Add an argument.
9262         (vectorizable_type_demotion): Likewise.
9263         * tree-vect-analyze.c (vect_analyze_operations): Call
9264         vectorizable_type_promotion and vectorizable_type_demotion with
9265         additional argument.
9266         (vect_get_and_check_slp_defs): Detect patterns.
9267         (vect_build_slp_tree): Add an argument, don't fail in case of multiple
9268         types.
9269         (vect_analyze_slp_instance): Don't fail in case of multiple types.
9270         Call vect_build_slp_tree with correct arguments. Calculate unrolling
9271         factor according to the smallest type in the loop.
9272         (vect_detect_hybrid_slp_stmts): Include statements from patterns.
9273         * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Call
9274         supportable_widening_operation with correct arguments.
9275         * tree-vect-transform.c (vect_get_slp_defs): Allocate output vector
9276         operands lists according to the number of vector statements in left
9277         or right node, if exists.
9278         (vect_gen_widened_results_half): Remove unused argument.
9279         (vectorizable_conversion): Call supportable_widening_operation,
9280         supportable_narrowing_operation, and vect_gen_widened_results_half
9281         with correct arguments.
9282         (vectorizable_assignment): Change documentation, support multiple
9283         types in SLP.
9284         (vectorizable_operation): Likewise.
9285         (vect_get_loop_based_defs): New function.
9286         (vect_create_vectorized_demotion_stmts): Likewise.
9287         (vectorizable_type_demotion): Support loop-aware SLP and general
9288         multi-step conversion. Call vect_get_loop_based_defs and
9289         vect_create_vectorized_demotion_stmts for transformation.
9290         (vect_create_vectorized_promotion_stmts): New function.
9291         (vectorizable_type_promotion): Support loop-aware SLP and general
9292         multi-step conversion. Call vect_create_vectorized_promotion_stmts
9293         for transformation.
9294         (vectorizable_store): Change documentation, support multiple
9295         types in SLP.
9296         (vectorizable_load): Likewise.
9297         (vect_transform_stmt): Pass SLP_NODE to
9298         vectorizable_type_promotion and vectorizable_type_demotion.
9299         (vect_schedule_slp_instance): Move here the calculation of number
9300         of vectorized statements for each node from...
9301         (vect_schedule_slp): ... here.
9302         (vect_transform_loop): Call vect_schedule_slp without the last
9303         argument.
9304
9305 2008-08-19  Dorit Nuzman  <dorit@il.ibm.com>
9306
9307         PR bootstrap/37152
9308         * tree-vect-transform.c (vect_create_epilog_for_reduction): Change =
9309         to == in assert statement.
9310         (vectorizable_reduction): Fix typo.
9311
9312 2008-08-18  H.J. Lu  <hongjiu.lu@intel.com>
9313
9314         PR bootstrap/37153
9315         * value-prof.c (check_counter): Dereference pointer to overall
9316         count when printing it.
9317
9318 2008-08-18  H.J. Lu  <hongjiu.lu@intel.com>
9319
9320         * profile.h: Really add it.
9321
9322 2008-08-18  H.J. Lu  <hongjiu.lu@intel.com>
9323
9324         * mcf.c: Really add it.
9325
9326 2008-08-18  Paul Yuan  <yingbo.com@gmail.com>
9327             Vinodha Ramasamy  <vinodha@google.com>
9328
9329         * cgraph.c (cgraph_edge): Handle inconsistent counts when setting
9330         count_scale.
9331         * value-prof.c (check_counter): Fix the counter if
9332         flag_profile_correction is true.
9333         (tree_divmod_fixed_value_transform, tree_mod_pow2_value_transform,
9334         tree_mod_subtract_transform):
9335         Follow check_counter parameter change.
9336         * common.opt (fprofile-correction): New option.
9337         * mcf.c: New file.
9338         * profile.h: Likewise.
9339         * profile.c (edge_info, EDGE_INFO): Moved to new file profile.h.
9340         (sum_edge_counts, is_edge_inconsistent, correct_negative_edge_counts,
9341         is_inconsistent, set_bb_counts, read_profile_edge_counts): New
9342         functions.
9343         (compute_branch_probabilities): Refactored. Invokes mcf_smooth_cfg if
9344         flag_profile_correction is set.
9345
9346 2008-08-18  Richard Sandiford  <rdsandiford@googlemail.com>
9347
9348         * rtlanal.c (subreg_offset_representable_p): Check HARD_REGNO_MODE_OK.
9349
9350 2008-08-18  Tomas Bily  <tbily@suse.cz>
9351
9352         * tree.h (IS_CONVERT_EXPR_CODE_P): Renamed to CONVERT_EXPR_CODE_P.
9353         * tree-ssa-threadedge.c (simplify_control_stmt_condition): Use
9354         CONVERT_EXPR_P.
9355         * tree-data-ref.c (split_constant_offset_1): Likewise.
9356         * tree-inline.c (estimate_operator_cost): Use CASE_CONVERT.
9357         * tree-sra.c (sra_walk_expr): Likewise.
9358         * matrix-reorg.c (ssa_accessed_in_assign_rhs): Likewise.
9359         * tree-ssa-loop-niter.c (expand_simple_operations): Likewise.
9360         * gimple.h (gimple_assign_cast_p): Use CONVERT_EXPR_CODE_P.
9361         * tree-ssa-structalias.c (find_func_aliases, find_func_aliases):
9362         Likewise.
9363         * gimple.c (gimple_assign_unary_nop_p): Likewise.
9364         * tree-vect-transform.c (vectorizable_type_demotion)
9365         (vectorizable_type_promotion): Likewise.
9366         * tree-inline.c (expand_call_inline):
9367         * tree-ssa-forwprop.c (get_prop_source_stmt, can_propagate_from)
9368         (forward_propagate_addr_expr_1, forward_propagate_comparison)
9369         (tree_ssa_forward_propagate_single_use_vars): Likewise.
9370         * expr.c (expand_expr_real_1): Likewise.
9371         * tree-ssa-dom.c (hashable_expr_equal_p, iterative_hash_hashable_expr)
9372         (gimple_assign_unary_useless_conversion_p): Likewise.
9373         * tree-stdarg.c (execute_optimize_stdarg): Likewise.
9374         * tree-ssa-ccp.c (ccp_fold, fold_gimple_assign): Likewise.
9375         * fold-const.c (fold_unary): Likewise.
9376         * tree.h (CONVERT_EXPR_P): Likewise.
9377         * tree.c (simple_cst_equal, iterative_hash_expr): Likewise.
9378         * tree-ssa-loop-im.c (rewrite_bittest): Likewise.
9379         * tree-vrp.c:
9380         (register_edge_assert_for_2, extract_range_from_unary_expr)
9381         (register_edge_assert_for_1): Likewise.
9382
9383 2008-08-18  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9384
9385         * real.h (dconst_e, dconst_third, dconst_sqrt2, dconst_e_ptr,
9386         dconst_third_ptr, dconst_sqrt2_ptr): Declare.
9387         (enum real_value_const): Delete.
9388         (get_real_const): Delete.
9389         * real.c (get_real_const): Delete.
9390         (dconst_e_ptr): Define.
9391         (dconst_third_ptr): Define.
9392         (dconst_sqrt2_ptr): Define.
9393         * builtins.c: Update all callers.
9394
9395 2008-08-18  Richard Guenther  <rguenther@suse.de>
9396
9397         * tree-ssa-reassoc.c (reassociate_bb): Properly reset the
9398         statement iterator after statement removal.
9399
9400 2008-08-18  Andreas Tobler  <a.tobler@schweiz.org>
9401
9402         * config/rs6000/driver-rs6000.c (detect_caches_freebsd): New function.
9403         (detect_processor_freebsd): Likewise.
9404         (host_detect_local_cpu): Call newly added functions for FreeBSD.
9405
9406 2008-08-18  Richard Guenther  <rguenther@suse.de>
9407
9408         * tree-cfg.c (verify_types_in_gimple_assign): Verify copies
9409         and loads have the correct types.
9410
9411 2008-08-18  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9412
9413         PR cpp/7263
9414         * c-opts.c (cpp_opts): Remove static.
9415         * c-parser.c (cpp_opts): Declare it extern.
9416         (disable_extension_diagnostics): Handle cpp options.
9417         (enable_extension_diagnostics): Likewise.
9418
9419 2008-08-18  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9420
9421         * diagnostics.c (permerror_at): Rename as permerror.
9422         (permerror): Delete.
9423         * toplev.h: Likewise.
9424
9425 2008-08-18  Richard Guenther  <rguenther@suse.de>
9426
9427         * passes.c (init_optimization_passes): Remove cleanup_cfg1,
9428         sdse1 and addressables2 passes.  Replace dce1 with cddce1.
9429         Move call_cdce before build_alias.  Move copyrename2,
9430         cunrolli and ccp2 beafore build_alias.  Re-add addressable2
9431         right after final inlining.
9432         * tree-cfg.c (build_gimple_cfg): Do not dump function here.
9433         (pass_build_cfg): But instead via TODO_dump_func.
9434
9435 2008-08-18  Richard Guenther  <rguenther@suse.de>
9436
9437         * tree-sra.c (generate_element_init_1): Deal with NULL constructor
9438         element index.
9439         (scalarize_init): If we failed to generate some initializers
9440         do not generate zeros for not instantiated members.  Instead
9441         rely on the copy out.
9442         * tree-ssa-operands.c (get_addr_dereference_operands): Warn
9443         about missing flow-sensitive alias info only if we have
9444         aliases computed.
9445
9446 2008-08-17  Nick Clifton  <nickc@redhat.com>
9447
9448         * doc/extend.texi (Function Attributes): Fix typo in description
9449         if hot function attribute.
9450
9451 2008-08-17  Daniel Jacobowitz  <dan@codesourcery.com>
9452             Richard Sandiford  <rdsandiford@googlemail.com>
9453
9454         * doc/install.texi (--with-mips-plt): Document.
9455         * doc/invoke.texi (-mplt, -mno-plt): Document.
9456         * config.gcc (mips*-*-*): Add mips-plt to supported_defaults
9457         and handle ${with_mips_plt}.
9458         * config/mips/mips.opt (mplt): New option.
9459         * config/mips/mips.h (TARGET_ABICALLS_PIC0): New macro.
9460         (TARGET_ABICALLS_PIC2): Likewise.
9461         (TARGET_GPWORD): Return false for TARGET_ABSOLUTE_ABICALLS.
9462         (OPTION_DEFAULT_SPECS): Add a mips-plt entry.
9463         (ASM_SPEC): Use !mabi=* instead of !mabi*.
9464         (MIPS_CALL): Use TARGET_ABICALLS_PIC2 instead of TARGET_ABICALLS
9465         to decide whether to output ".option picX" directives.
9466         * config/mips/linux.h (SUBTARGET_ASM_SPEC): Remove -mabi=64 handling.
9467         Pass -call_nonpic rather than -KPIC for -mplt.
9468         (BASE_DRIVER_SELF_SPECS): Remove -mplt if -mno-shared is not present
9469         on the command line.  Also remove it when -mabi=64 is used without
9470         -msym32.
9471         * config/mips/linux64.h (SUBTARGET_ASM_SPEC): Delete.
9472         * config/mips/mips.c (mips_use_pic_fn_addr_reg_p): Handle
9473         TARGET_ABICALLS_PIC0.
9474         (mips_classify_symbol): Use TARGET_ABICALLS_PIC2 instead of
9475         TARGET_ABICALLS.
9476         (mips16_build_function_stub): Only output ".option pic" directives
9477         and PIC stubs if TARGET_ABICALLS_PIC2.  Call through $25 instead of $1.
9478         (mips16_build_call_stub): Fix comment and remove redundant
9479         ".set at"/"set .noat" directives.
9480         (mips_function_rodata_section): Use the default behaviour for
9481         TARGET_ABSOLUTE_ABICALLS.
9482         (mips_file_start): Emit ".option pic0" for TARGET_ABICALLS_PIC0.
9483         (mips_global_pointer): Handle TARGET_ABICALLS_PIC0.
9484         (mips_restore_gp): Do nothing if the current function doesn't use
9485         a global pointer.
9486         (mips_expand_prologue): Only save $gp if the current function uses it.
9487         Use a normal move for TARGET_ABICALLS_PIC0.
9488         (mips_override_options): Only set flag_pic if TARGET_ABICALLS_PIC2.
9489
9490 2008-08-17  Richard Sandiford  <rdsandiford@googlemail.com>
9491
9492         * config/mips/mips.c (mips_save_reg_p): Don't short-circuit rest
9493         of function when handling GLOBAL_POINTER_REGNUM.
9494
9495 2008-08-16  Eric Botcazou  <ebotcazou@adacore.com>
9496
9497         PR ada/20548
9498         * common.opt (-fstack-check): Do not declare the variable here.
9499         (-fstack-check=): New option variant.
9500         * doc/invoke.texi (Code Gen Options): Document it.
9501         * expr.h (STACK_OLD_CHECK_PROTECT): New macro.
9502         (STACK_CHECK_PROTECT): Bump to 3 pages if DWARF-2 EH is used.
9503         (STACK_CHECK_STATIC_BUILTIN): New macro.
9504         * doc/tm.texi (Stack Checking): Document STACK_CHECK_STATIC_BUILTIN.
9505         * opts.c: Include expr.h.
9506         (common_handle_option) <OPT_fold_stack_check_>: New case.
9507         <OPT_fstack_check>: Likewise.
9508         * calls.c (initialize_argument_information): Use TYPE_SIZE_UNIT
9509         consistently in the test for variable-sized types.  Adjust for
9510         new behaviour of flag_stack_check.
9511         * explow.c: Include except.h.
9512         (allocate_dynamic_stack_space): Do not take into account
9513         STACK_CHECK_MAX_FRAME_SIZE for static builtin stack checking.
9514         * function.c (gimplify_parameters): Use DECL_SIZE_UNIT in the test
9515         for variable-sized parameters.  Treat all parameters whose size is
9516         greater than STACK_CHECK_MAX_VAR_SIZE as variable-sized if generic
9517         stack checking is enabled.
9518         * gimplify.c (gimplify_decl_expr): Treat non-static objects whose
9519         size is greater than STACK_CHECK_MAX_VAR_SIZE as variable-sized
9520         if generic stack checking is enabled.
9521         (expand_function_end): Adjust for new behaviour of flag_stack_check.
9522         * reload1.c (reload): Likewise.
9523         * stmt.c (expand_decl): Assert that all automatic variables have
9524         fixed size at this point and remove dead code.
9525         * flags.h (stack_check_type): New enumeration type.
9526         (flag_stack_check): Declare.
9527         * toplev.c (flag_stack_check): New global variable.
9528         * Makefile.in (opts.o): Add dependency on EXPR_H.
9529         (explow.o): Add dependency on except.h.
9530
9531 2008-08-16  Andy Hutchinson  <hutchinsonandy@aim.com>
9532
9533         * config/avr/avr.c (avr_override_options): Reduce value of
9534         PARAM_INLINE_CALL_COST.
9535
9536 2008-08-15  Eric Botcazou  <ebotcazou@adacore.com>
9537
9538         * expr.c (expand_expr_real_1) <VIEW_CONVERT_EXPR>: When converting
9539         to BLKmode, try to fetch an inner memory reference.  Use 'mode' in
9540         lieu of TYPE_MODE (type) throughout.
9541
9542 2008-08-15  Joseph Myers  <joseph@codesourcery.com>
9543
9544         * config/arm/arm.c (add_minipool_backward_ref): Check for
9545         8-byte-aligned entries in second case of forcing insertion after a
9546         particular entry.  Change third case to avoid inserting
9547         non-8-byte-aligned entries before 8-byte-aligned ones.
9548
9549 2008-08-15  Richard Guenther  <rguenther@suse.de>
9550
9551         * tree-ssa-ccp.c (maybe_fold_offset_to_reference): Do not
9552         strip components for unknown size accesses.
9553
9554 2008-08-15  Wolfgang Gellerich  <gellerich@de.ibm.com>
9555
9556         * config/s390/2097.md New file.
9557         * config/s390/s390.md ("z10prop" attribute): Define none,
9558         z10_super, z10_super_E1, z10_super_A1, z10_super_c,
9559         z10_super_c_E1, z10_fwd, z10_fwd_A1, z10_fwd_A3, z10_fwd_E1,
9560         z10_rec, z10_fr, z10_fr_A3, z10_fr_E1, z10_c, and z10_cobra as
9561         possible values and apply them to insns as appropriate.
9562         ("type" attribute): Removed itof and added ftrunctf,ftruncdf,
9563         ftruncsd, ftruncdd, itoftf, itofdf, itofsf, itofdd, itoftd,
9564         fdivdd, fdivtd, floaddd, floadsd, fmuldd, fmultd, fsimpdd,
9565         fsimpsd, fsimptd, fstoredd, fstoresd, ftoidfp as possible values.
9566         ("bfp" mode attribute): Removed.  Every occurence replaced
9567         with <mode>.
9568         * config/s390/s390.c (struct "z10_cost"): Updated entries.
9569         * config/s390/2084.md (insn_reservation "x_itof"): Updated
9570         type attribute.
9571
9572 2008-08-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9573
9574         PR c/28152
9575         * c-parser.c (c_lex_one_token): Do not store the canonical spelling
9576         for keywords.
9577
9578 2008-08-14  Dorit Nuzman  <dorit@il.ibm.com>
9579
9580         * tree-vect-transform.c (vect_create_epilog_for_reduction): Takes an
9581         additional argument. Support reduction when duplication is needed due
9582         to data-types of different sizes in the loop.
9583         (get_initial_def_for_induction): Fix printout.
9584         (vect_get_vec_def_for_stmt_copy): Support case where the
9585         vec_stmt_for_operand is a phi node.
9586         (vectorizable_reduction): Support reduction when duplication is needed
9587         due to data-types of different sizes in the loop.
9588         (vectorizable_call): Remove restriction to not vectorize in case we
9589         have data-types of different sizes in the loop.
9590         (vectorizable_conversion): Likewise.
9591         (vectorizable_operation): Likewise.
9592         (vectorizable_type_demotion): Likewise.
9593         (vectorizable_type_promotion): Likewise.
9594         (vectorizable_induction): Add restriction to not vectorize in case
9595         we have data-types of different sizes in the loop.
9596
9597 2008-08-14  Christophe Saout  <christophe@saout.de>
9598             Uros Bizjak  <ubizjak@gmail.com>
9599
9600         PR target/37101
9601         * config/i386/sse.md (vec_concatv2di): Remove movlps alternative.
9602         (*vec_concatv2di_rex64_sse4_1): Ditto.
9603         (*vec_concatv2di_rex64_sse): Ditto.
9604
9605 2008-08-14  Jakub Jelinek  <jakub@redhat.com>
9606
9607         PR middle-end/37103
9608         * fold-const.c (fold_widened_comparison): Do not allow
9609         sign changes that change the result even if shorter type
9610         is wider than arg1_unw's type.
9611
9612 2008-08-13  Kazu Hirata  <kazu@codesourcery.com>
9613
9614         * gcc.dg/arm-g2.c, gcc.dg/arm-mmx-1.c, gcc.dg/arm-scd42-2.c:
9615         Skip if the multilib testing specifies -march that does not
9616         agree with the one specified in the testcase.
9617
9618 2008-08-13  Joseph Myers  <joseph@codesourcery.com>
9619
9620         * config/sparc/sparc.c (emit_soft_tfmode_cvt): Explicitly sign or
9621         zero extend SImode values being converted to TFmode before passing
9622         to libcalls.
9623
9624 2008-08-13  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
9625
9626         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Predefine
9627         __PPU__ when targeting the Cell/B.E. PPU processor.
9628
9629 2008-08-13  Eric Botcazou  <ebotcazou@adacore.com>
9630
9631         * gimple.h (gimple_call_set_chain): Accept SSA variables.
9632         * tree-ssa-pre.c (create_component_ref_by_pieces_1) <CALL_EXPR>:
9633         Rematerialize the static chain, if any.
9634         * tree-ssa-sccvn.c (copy_reference_ops_from_call): Also copy the
9635         static chain.
9636
9637 2008-08-13  H.J. Lu  <hongjiu.lu@intel.com>
9638
9639         * dwarf2out.c (dwarf_stack_op_name): Remove prototype.
9640         (new_loc_descr): Likewise.
9641         (add_loc_descr): Likewise.
9642         (size_of_loc_descr): Likewise.
9643         (size_of_locs): Likewise.
9644         (output_loc_operands): Likewise.
9645         (output_loc_sequence): Likewise.
9646         (new_reg_loc_descr): New.
9647         (build_cfa_loc): Use it.
9648         (build_cfa_aligned_loc): Likewise.
9649         (one_reg_loc_descriptor): Likewise.
9650         (based_loc_descr): Likewise.
9651
9652 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9653
9654         PR 30551
9655         * doc/invoke.texi (Wmain): Update.
9656         * c-decl.c (start_decl): warn_main is only 0 or 1.
9657         (start_function): Likewise. Fix formatting.
9658         (finish_function): Delete redundant warning.
9659         * c.opt (Wmain): Add Var(warn_main) and Init(-1).
9660         * c-opts (c_common_handle_option): -Wall only has effect if
9661         warn_main is uninitialized. OPT_Wmain is automatically
9662         handled. -pedantic also enables Wmain.
9663         (c_common_post_options): Handle all logic for Wmain here.
9664         * c-common.c (warn_main): Delete.
9665         (check_main_parameter_types): Make pedwarns conditional on OPT_Wmain.
9666         * c-common.h (warn_main): Delete.
9667
9668 2008-08-13  H.J. Lu  <hongjiu.lu@intel.com>
9669
9670         PR middle-end/36701
9671         * expr.c (emit_group_store): Allocate stack temp with the
9672         largest alignment when copying from register to stack.
9673
9674 2008-08-13  Richard Guenther  <rguenther@suse.de>
9675
9676         * tree.h (maybe_fold_offset_to_address): Declare.
9677         * tree-ssa-ccp.c (surely_varying_stmt_p): Fix typo in last commit.
9678         (ccp_fold): Handle pointer conversions the same as fold_stmt.
9679         Likewise for POINTER_PLUS_EXPR.
9680         (maybe_fold_offset_to_reference): Enable disabled code.
9681         (maybe_fold_offset_to_address): New function.
9682         (fold_stmt_r): Use it.
9683         (fold_gimple_assign): Likewise.
9684         * gimplify.c (gimplify_conversion): Use maybe_fold_offset_to_address.
9685         (gimplify_expr): Likewise.
9686
9687 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9688
9689         * toplev.h (pedwarn_at): Fix declaration.
9690
9691 2008-08-13  Joseph Myers  <joseph@codesourcery.com>
9692
9693         * config/sparc/linux64.h (LINK_ARCH32_SPEC, LINK_ARCH64_SPEC,
9694         LINK_SPEC): Use %R in -Y P argument.
9695
9696 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9697
9698         PR c/15236
9699         * diagnostic.c (pedwarn_at): New.
9700         * toplev.h (pedwarn_at): Declare.
9701         * c-tree.h (build_enumerator): Update declaration.
9702         * c-decl.c (finish_enum): Update comment.
9703         (build_enumerator): Take a location parameter. Give a pedwarn but do
9704         not perform any conversion.
9705         * c-parser.c (c_parser_enum_specifier): Set correct location for
9706         enumerator.
9707
9708 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9709
9710         PR 35635
9711         * c-common.c (conversion_warning): Use a switch. Ignore boolean
9712         expressions except for conversions to signed:1 bitfields. Handle
9713         COND_EXPR with constant operands.
9714
9715 2008-08-13  Richard Guenther  <rguenther@suse.de>
9716
9717         PR tree-optimization/15255
9718         * tree-ssa-reassoc.c (linearize_expr_tree): Declare.
9719         (struct oecount_s): New struct and VEC types.
9720         (cvec): New global.
9721         (oecount_hash): New function.
9722         (oecount_eq): Likewise.
9723         (oecount_cmp): Likewise.
9724         (zero_one_operation): New function.
9725         (build_and_add_sum): Likewise.
9726         (undistribute_ops_list): Perform un-distribution of multiplication
9727         and division on the chain of summands.
9728         (should_break_up_subtract): Also break up subtracts for factors.
9729         (reassociate_bb): Delete dead visited statements.
9730         Call undistribute_ops_list.  Re-sort and optimize if it did something.
9731         * passes.c (init_optimization_passes): Move DSE before
9732         reassociation.
9733         * tree-ssa-loop-niter.c (stmt_dominates_stmt_p): Correctly handle
9734         PHI nodes.
9735
9736 2008-08-12  Janis Johnson  <janis187@us.ibm.com>
9737
9738         * doc/invoke.texi (-fipa-pta): Say the option is experimental.
9739
9740         * doc/invoke.texi: Revert unintended checkin.
9741
9742 2008-08-12  Nathan Froyd  <froydnj@codesourcery.com>
9743
9744         PR libgomp/26165
9745         * gcc.c (include_spec_function): Tweak call to find_a_file.
9746
9747 2008-08-12  Jakub Jelinek  <jakub@redhat.com>
9748
9749         PR middle-end/37014
9750         * expr.c (expand_expr_real_1): Handle TRUTH_ANDIF_EXPR
9751         and TRUTH_ORIF_EXPR.
9752         * dojump.c (do_jump): Likewise.
9753
9754         PR tree-optimization/37084
9755         * tree-inline.c (copy_bb): Call gimple_regimplify_operands
9756         if id->regimplify, don't assume stmt is a cast assignment.
9757
9758 2008-08-12  Anatoly Sokolov  <aesok@post.ru>
9759
9760         * final.c (final_scan_insn): Use app_enable/app_disable functions.
9761
9762 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
9763
9764         PR bootstrap/37097
9765         * builtins.c (do_mpfr_bessel_n): Fix copy-and-paste bug introduced
9766         by last change.
9767
9768 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
9769
9770         * defaults.h (TARGET_FLOAT_FORMAT): Remove.
9771         (UNKNOWN_FLOAT_FORMAT, IEEE_FLOAT_FORMAT, VAX_FLOAT_FORMAT): Remove.
9772
9773         * config/alpha/alpha.h (TARGET_FLOAT_FORMAT): Remove.
9774         * config/iq2000/iq2000.h (TARGET_FLOAT_FORMAT): Remove.
9775         * config/pdp11/pdp11.h (TARGET_FLOAT_FORMAT): Remove.
9776         * config/score/score.h (TARGET_FLOAT_FORMAT): Remove.
9777         * config/vax/vax.h (TARGET_FLOAT_FORMAT): Remove.
9778
9779         * doc/tm.texi (Storage Layout): Remove documentation for
9780         TARGET_FLOAT_FORMAT.
9781
9782         * simplify-rtx.c (simplify_binary_operation_1): Replace
9783         TARGET_FLOAT_FORMAT check by appropriate HONOR_... checks.
9784
9785 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
9786
9787         * real.h (struct real_format): New member has_sign_dependent_rounding.
9788         * real.c (ieee_single_format, mips_single_format, motorola_single_format,
9789         spu_single_format, ieee_double_format, mips_double_format,
9790         motorola_double_format, ieee_extended_motorola_format,
9791         ieee_extended_intel_96_format, ieee_extended_intel_128_format,
9792         ieee_extended_intel_96_round_53_format, ibm_extended_format,
9793         mips_extended_format, ieee_quad_format, mips_quad_format,
9794         vax_f_format, vax_d_format, vax_g_format): Initialize it.
9795         * config/pdp11/pdp11.c (pdp11_f_format, pdp11_d_format): Likewise.
9796
9797         * defaults.h (MODE_HAS_NANS, MODE_HAS_INFINITIES,
9798         MODE_HAS_SIGNED_ZEROS, MODE_HAS_SIGN_DEPENDENT_ROUNDING): Remove.
9799         * config/spu/spu.h (MODE_HAS_NANS, MODE_HAS_INFINITIES,
9800         MODE_HAS_SIGN_DEPENDENT_ROUNDING): Remove.
9801         (ROUND_TOWARDS_ZERO): Likewise.
9802
9803         * real.h (REAL_MODE_FORMAT): Protect MODE against macro expansion.
9804         (FLOAT_MODE_FORMAT): New macro.
9805         (REAL_MODE_FORMAT_COMPOSITE_P): Remove, replace by ...
9806         (MODE_COMPOSITE_P): ... this new macro.
9807         (MODE_HAS_NANS, MODE_HAS_INFINITIES, MODE_HAS_SIGNED_ZEROS,
9808         MODE_HAS_SIGN_DEPENDENT_ROUNDING): New macros.
9809         * machmode.h (GET_MODE_INNER): Cast result to enum machine_mode.
9810
9811         * flags.h: Include "real.h".
9812
9813         * fold-const.c (const_binop): Use MODE_COMPOSITE_P instead of
9814         REAL_MODE_FORMAT_COMPOSITE_P.
9815         * simplify-rtx.c (simplify_const_binary_operation): Likewise.
9816
9817         * doc/tm.texi (Storage Layout): Remove documentation of
9818         MODE_HAS_NANS, MODE_HAS_INFINITIES, MODE_HAS_SIGNED_ZEROS,
9819         MODE_HAS_SIGN_DEPENDENT_ROUNDING.  Update documentation of
9820         ROUND_TOWARDS_ZERO and LARGEST_EXPONENT_IS_NORMAL to clarify
9821         they only apply to libgcc2.a.
9822
9823 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
9824
9825         * config/spu/float_disf.c: New file.
9826         * config/spu/float_unsdisf.c: New file.
9827         * config/spu/t-elf (LIB2FUNCS_STATIC_EXTRA): Add them.
9828         (LIB2FUNCS_EXCLUDE): Define.
9829
9830 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
9831             Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
9832
9833         * real.h (struct real_format): New member round_towards_zero.
9834         * real.c (round_for_format): Respect fmt->round_towards_zero.
9835         (ieee_single_format, mips_single_format, motorola_single_format,
9836         spu_single_format, ieee_double_format, mips_double_format,
9837         motorola_double_format, ieee_extended_motorola_format,
9838         ieee_extended_intel_96_format, ieee_extended_intel_128_format,
9839         ieee_extended_intel_96_round_53_format, ibm_extended_format,
9840         mips_extended_format, ieee_quad_format, mips_quad_format,
9841         vax_f_format, vax_d_format, vax_g_format): Initialize it.
9842         * config/pdp11/pdp11.c (pdp11_f_format, pdp11_d_format): Likewise.
9843
9844         * builtins.s (do_mpfr_arg1): Consider round_towards_zero member of
9845         real_format to choose rounding mode when calling MPFR functions.
9846         (do_mpfr_arg2, do_mpfr_arg3, do_mpfr_sincos): Likewise.
9847         (do_mpfr_bessel_n, do_mpfr_remquo, do_mpfr_lgamma_r): Likewise.
9848
9849         * real.h (real_to_decimal_for_mode): Add prototype.
9850         * real.c (real_to_decimal_for_mode): Renames old real_to_decimal.
9851         Respect target rounding mode when generating decimal representation.
9852         (real_to_decimal): New stub for backwards compatibility.
9853         * c-cppbuiltin.c (builtin_define_with_hex_fp_value): Use
9854         real_to_decimal_for_mode instead of real_to_decimal.
9855
9856         * config/spu/spu.md ("floatdisf2", "floatunsdisf2"): New.
9857
9858 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
9859             Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
9860
9861         * real.c (spu_single_format): New variable.
9862         * real.h (spu_single_format): Declare.
9863
9864         * config/spu/spu.c (spu_override_options): Install SFmode format.
9865         (spu_split_immediate): Use integer mode to operate on pieces of
9866         floating-point values in all cases.
9867
9868         * config/spu/spu.md (UNSPEC_FLOAT_EXTEND, UNSPEC_FLOAT_TRUNCATE): New.
9869         ("extendsfdf2"): Use UNSPEC_FLOAT_EXTEND instead of FLOAT_EXTEND.
9870         ("truncdfsf2"): Use UNSPEC_FLOAT_TRUNCATE instead of FLOAT_TRUNCATE.
9871
9872 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
9873
9874         * config/spu/spu.c (spu_safe_dma): Respect TARGET_SAFE_DMA.
9875
9876 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
9877
9878         * config/spu/spu.h (DWARF_FRAME_RETURN_COLUMN): Define.
9879
9880 2008-08-12  Jakub Jelinek  <jakub@redhat.com>
9881
9882         PR c++/36688
9883         * gimplify.c (gimplify_modify_expr_rhs): Test TREE_READONLY
9884         on the VAR_DECL instead of TYPE_READONLY on its type.
9885
9886 2008-08-12  Ira Rosen  <irar@il.ibm.com>
9887
9888         * tree-vectorizer.c: Depend on langhooks.h.
9889         (supportable_widening_operation): Add two arguments. Support double
9890         type conversions.
9891         (supportable_narrowing_operation): Likewise.
9892         * tree-vectorizer.h (supportable_widening_operation): Add two
9893         arguments.
9894         (supportable_narrowing_operation): Likewise.
9895         * tree-vect-patterns.c (vect_recog_widen_mult_pattern) : Call
9896         supportable_widening_operation with correct arguments.
9897         * tree-vect-transform.c (vectorizable_conversion): Likewise.
9898         (vectorizable_type_demotion): Support double type conversions.
9899         (vectorizable_type_promotion): Likewise.
9900         * Makefile.in (tree-vectorizer.o): Depend on langhooks.h.
9901
9902 2008-08-11  Michael Matz  <matz@suse.de>
9903
9904         * i386/i386.c (override_options): Move initialisation from
9905         flag_schedule_insns_after_reload to here from ...
9906         (optimization_options): ... here.
9907
9908 2008-08-11  Jakub Jelinek  <jakub@redhat.com>
9909
9910         PR rtl-optimization/36998
9911         * dwarf2out.c (compute_barrier_args_size_1,
9912         compute_barrier_args_size): Temporarily remove assertions.
9913
9914 2008-08-10  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9915
9916         PR middle-end/20644
9917         * tree-ssa.c (struct walk_data): Add new flag
9918         warn_possibly_uninitialized.
9919         (warn_uninitialized_var): Use it.
9920         (warn_uninitialized_vars): New.
9921         (execute_early_warn_uninitialized): Call it.
9922         (execute_late_warn_uninitialized): Likewise.
9923
9924 2008-08-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9925
9926         PR middle-end/36238
9927         * reload1.c (gen_reload): Guard calls to get_secondary_mem
9928         for memory subregs.
9929
9930 2008-08-09  Jan Hubicka  <jh@suse.cz>
9931
9932         PR target/37055
9933         * optabs.c (maybe_emit_unop_insn): Remove produced code if
9934         expansion failed.
9935         (expand_fix): Be prepared for expansion to fail.
9936         (expand_sfix_optab): Remove instructions if expansion failed.
9937
9938 2008-08-09  Anatoly Sokolov  <aesok@post.ru>
9939
9940         * config/avr/avr.c (avr_mcu_types): Move the AT43USB320 device to
9941         avr31 architecture.
9942         * config/avr/avr.h (CRT_BINUTILS_SPECS): (Ditto.).
9943         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
9944
9945 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
9946
9947         * config.gcc (mips*-*-linux*, mips64*-*-linux*): Add
9948         mips/t-libgcc-mips16 to tmake_file.
9949         * config/mips/mips-protos.h (mips_call_type): New enum.
9950         (mips_pic_base_register, mips_got_load): Declare.
9951         (mips_restore_gp): Take an rtx argument.
9952         (mips_use_pic_fn_addr_reg_p): Declare.
9953         (mips_expand_call): Replace the sibcall_p argument with
9954         a mips_call_type argument.  Add a lazy_p parameter.
9955         (mips_split_call): Declare.
9956         * config/mips/mips.h (MIPS16_PIC_TEMP_REGNUM): New macro.
9957         (MIPS16_PIC_TEMP): Likewise.
9958         (reg_class): Delete M16_NA_REGS.
9959         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Update accordingly.
9960         (SYMBOL_FLAG_BIND_NOW, SYMBOL_REF_BIND_NOW_P): New macros.
9961         (mips_split_hi_p): Declare.
9962         * config/mips/mips.c (mips_split_hi_p): New array.
9963         (mips_regno_to_class): Change M16_NA_REGS entries to M16_REGS.
9964         (mips_got_symbol_type_p): New function.
9965         (mips_global_symbol_p): Check SYMBOL_REF_EXTERNAL_P.
9966         (mips16_stub_function_p): New function.
9967         (mips16_local_function_p): Likewise.
9968         (mips_use_pic_fn_addr_reg_p): Likewise.
9969         (mips_cannot_force_const_mem): Return false for HIGHs.
9970         Extend CONST_INT and symbolic handling to MIPS16, using
9971         mips_symbol_insns to check that the base symbol type is a
9972         legitimate constant.  Reject GOT-based constants if
9973         TARGET_MIPS16_PCREL_LOADS.
9974         (mips_const_insns): Check targetm.cannot_force_const_mem when
9975         decomposing a symbolic base and a large offset.
9976         (mips_emit_call_insn): Add ORIG_ADDR and ADDR parameters.
9977         When calling a function that needs $25 from MIPS16 code,
9978         move the target address into $25 separately and add a USE
9979         to the call insn.
9980         (mips16_gp_pseudo_reg): Insert the initializer immediately
9981         before the first real insn.
9982         (mips_pic_base_register, mips_got_load): New functions.
9983         (mips_split_symbol): Generalize the name of the LO_SUM_OUT
9984         parameter to LOW_OUT.  Say that it can be any valid SET_SRC
9985         when splitting a load-address operation.  Split SYMBOL_GOT_DISP
9986         constants and highs of SYMBOL_GOT_PAGE_OFST constants.
9987         (mips_call_tls_get_addr): Update the call to mips_expand_call,
9988         also passing NULL_RTX rather than const0_rtx as the aux argument.
9989         (mips_rewrite_small_data_p): Check mips_lo_relocs and mips_split_p
9990         instead of TARGET_EXPLICIT_RELOCS.
9991         (mips_ok_for_lazy_binding_p): Check SYMBOL_REF_BIND_NOW_P.
9992         (mips_load_call_address): Replace the sibcall_p argument with
9993         a mips_call_type argument.  Use mips_got_load.
9994         (mips16_local_alias): New structure.
9995         (mips16_local_aliases): New variable.
9996         (mips16_local_aliases_hash): New function.
9997         (mips16_local_aliases_eq): Likewise.
9998         (mips16_local_alias): Likewise.
9999         (mips16_stub_function): Likewise.
10000         (mips16_build_function_stub): Create a local alias for the target
10001         function.  Handle TARGET_ABICALLS.  For PIC abicalls, emit a
10002         .cpload directive and an R_MIPS_NONE relocation for the target
10003         function, then load the alias rather than the function itself.
10004         Wrap the non-PIC abicalls version in ".option pic0/.option pic2".
10005         (mips16_copy_fpr_return_value): Use mips16_stub_function and
10006         mips_expand_call.  Set SYMBOL_REF_BIND_NOW on the symbol.
10007         (mips16_build_call_stub): Replace the FN parameter with an
10008         FN_PTR parameter.  Force the address into a register if it
10009         isn't a call_insn_operand; don't rely on the caller to do this.
10010         If a call to a locally-defined and locally-binding MIPS16
10011         function must be made indirectly, redirect the call to the
10012         function's local alias.  Use mips16_stub_function_p,
10013         mips16_stub_function, mips_expand_call and use_reg.
10014         Set SYMBOL_FLAG_BIND_NOW on __mips_call_* symbols.
10015         Use explicit %hi and %lo accesses where possible.
10016         Use MIPS_CALL to generate the correct code form of a
10017         jal instruction.  Add clobbers of $18 instead of uses.
10018         Update the call to mips_emit_call_insn.
10019         (mips_expand_call): Replace the SIBCALL_P argument with a
10020         mips_call_type argument and handle the new MIPS_CALL_EPILOGUE value.
10021         Take a LAZY_P parameter.  Call mips16_build_call_stub first,
10022         allowing it to modify the call address.  Update the calls to
10023         mips_load_call_address and mips_emit_call_insn.
10024         (mips_split_call): New function.
10025         (mips_init_relocs): Clear mips_split_hi_p.  Only use %gp_rel if
10026         !TARGET_MIPS16.  Split SYMBOL_GOT_DISP, and the high parts of
10027         SYMBOL_GOT_PAGE_OFST, for MIPS16 code.
10028         (mips_global_pointer): Check mips16_cfun_returns_in_fpr_p.
10029         (mips_extra_live_on_entry): Include MIPS16_PIC_TEMP_REGNUM
10030         if TARGET_MIPS16.
10031         (mips_cprestore_slot): New function.
10032         (mips_restore_gp): Take a TEMP parameter.  Handle TARGET_MIPS16
10033         and use mips_cprestore_slot.
10034         (mips_output_function_prologue): Handle TARGET_MIPS16 for
10035         LOADGP_OLDABI.
10036         (mips_emit_loadgp): Move into MIPS16_PIC_TEMP for MIPS16,
10037         then use a copygp_mips16 instruction to set up $28.
10038         (mips_expand_prologue): Initialize the cprestore slot for MIPS16 too.
10039         (mips16_lay_out_constants): Call split_all_insns_noflow.
10040         (mips_reorg_process_insns): Explicitly set all_noreorder_p to
10041         false if TARGET_MIPS16.
10042         (mips_reorg): Don't call vr4130_align_insns if TARGET_MIPS16.
10043         (mips_output_mi_thunk): Use mips_got_symbol_type_p.  Use the
10044         mips_dangerous_for_la25_p approach for MIPS16 PIC calls too.
10045         (mips_set_mips16_mode): Always set MASK_EXPLICIT_RELOCS for
10046         MIPS16 code.  Allow MIPS16 o32 PIC.
10047         (mips_override_options): Allow MIPS16 o32 PIC.
10048         * config/mips/mips.md: Lower CONST_GP_P moves into register moves
10049         after reload if TARGET_USE_GOT.
10050         (UNSPEC_COPYGP): New constant.
10051         (length): Use a default length of 8 for MIPS16 GOT loads.
10052         (*got_disp<mode>): Check mips_split_p instead of TARGET_XGOT.
10053         (*got_page<mode>): Check mips_split_hi_p.
10054         (*got_disp<mode>, *got_page<mode>): Use mips_got_load.
10055         (unspec_got<mode>, unspec_call<mode>): New expanders.
10056         (load_got<mode>, load_call<mode>): Remove the length attributes.
10057         Use a got attribute instead of a type attribute.
10058         (copygp_mips16): New insn.
10059         (restore_gp): Add a scratch clobber and pass it to mips_restore_gp.
10060         (load_call<mode>): Use a "d" constraint instead of an "r" constraint.
10061         (sibcall, sibcall_value, call, call_value): Update the calls
10062         to mips_expand_call.
10063         (call_internal, call_value_internal): Use mips_split_call.
10064         (call_value_multiple_internal): Likewise.
10065         (call_split): Move after call_internal (the insn it is split from).
10066         (call_internal_direct, call_value_internal_direct): Turn into
10067         define_insn_and_splits.  Split if TARGET_SPLIT_CALLS.
10068         (call_direct_split, call_value_direct_split): New patterns.
10069         * config/mips/constraints.md (c): Handle TARGET_MIPS16 first
10070         and use M16_REGS instead of M16_NA_REGS.
10071         * config/mips/predicates.md (const_call_insn_operand): Replace
10072         the TARGET_ABSOLUTE_ABICALLS-based check with a more general
10073         mips_use_pic_fn_addr_reg_p check.
10074         (move_operand): Reject HIGHs if mips_split_hi_p.
10075         * config/mips/mips16.S: Assembly as empty if the ABI is not suitable.
10076         (__mips16_floatunsisf): Inline __mips16_floatsisf.
10077         (CALL_STUB_NO_RET, CALL_STUB_REG): Copy the target register to $25.
10078         * config/mips/libgcc-mips16.ver: New file.
10079         * config/mips/t-libgcc-mips16 (SHLIB_MAPFILES): Add
10080         $(srcdir)/config/mips/libgcc-mips16.ver.
10081
10082 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
10083
10084         * config/mips/mips.c (mips_unspec_address_offset): Move earlier
10085         in file.
10086         (mips_unspec_address, mips_unspec_offset_high): Likewise.
10087         (mips_ok_for_lazy_binding_p, mips_load_call_address): Likewise.
10088         (mips16_cfun_returns_in_fpr_p): Likewise.
10089
10090 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
10091
10092         * config/mips/mips.h (MASK_RETURN_ADDR): Expand commentary.
10093         * config/mips/linux-unwind.h (mips_fallback_frame_state): Add 2
10094         rather than 4 to PC.
10095
10096 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
10097
10098         * config/mips/mips.h (STATIC_CHAIN_REGNUM): Remap to $15.
10099         (FUNCTION_PROFILER): Save the static chain pointer into $2
10100         beforehand and restore it aftewards.
10101         (TRAMPOLINE_TEMPLATE): Adjust accordingly.  Load the target
10102         address directly into $25 and call the function through $25;
10103         do not clobber $3.  Pad the DImode version to cover the space
10104         left by the deleted $25 <- $3 move.
10105         (TRAMPOLINE_SIZE): Adjust the size of the SImode version after
10106         the removal of the $25 <- $3 move.
10107         (INITIALIZE_TRAMPOLINE): Update offsets accordingly.
10108         * config/mips/sdemtk.h (FUNCTION_PROFILER): As for mips.h.
10109
10110 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
10111             Daniel Jacobowitz  <dan@codesourcery.com>
10112
10113         * config/mips/mips.h (FUNCTION_NAME_ALREADY_DECLARED): Delete.
10114         * config/mips/linux.h (ASM_DECLARE_FUNCTION_NAME): Delete.
10115         (ASM_DECLARE_FUNCTION_SIZE, FUNCTION_NAME_ALREADY_DECLARED): Delete.
10116         * config/mips/mips.c (mips_start_function_definition): New function.
10117         (mips_end_function_definition): Likewise.
10118         (mips_output_function_prologue): Use mips_start_function_definition.
10119         (mips_output_function_epilogue): Use mips_end_function_definition.
10120         (build_mips16_function_stub): Use mips_start_function_definition
10121         and mips_end_function_definition.
10122         (build_mips16_call_stub): Likewise.
10123
10124 2008-08-09  Richard Guenther  <rguenther@suse.de>
10125
10126         * gimple.c (gimple_build_call_1): Deal with FUNCTION_DECL fn.
10127         * gimple.h (gimple_call_fn): Adjust comment.
10128         (gimple_call_set_fndecl): New function.
10129         (gimple_call_fndecl): Adjust for GIMPLE_CALL no
10130         longer having bare FUNCTION_DECL operand.
10131         (gimple_call_return_type): Likewise.
10132         * tree-cfg.c (verify_stmt): Verify function operand of a GIMPLE_CALL.
10133
10134         * value-prof.c (gimple_divmod_fixed_value): Do not emit labels.
10135         (gimple_mod_pow2): Likewise.
10136         (gimple_mod_subtract): Likewise.
10137         (gimple_ic): Likewise.
10138         (gimple_stringop_fixed_value): Likewise.
10139         (gimple_indirect_call_to_profile): Fix for GIMPLE_CALL no
10140         longer having bare FUNCTION_DECL operand.
10141         * ipa-cp.c (ipcp_update_callgraph): Use gimple_call_set_fndecl.
10142         * omp-low.c (optimize_omp_library_calls): Likewise.
10143         * cgraphunit.c (update_call_expr): Likewise.
10144         * tree-ssa-math-opts.c (execute_cse_reciprocals): Likewise.
10145         (execute_convert_to_rsqrt): Likewise.
10146         * cfgexpand.c (gimple_to_tree): Simplify.
10147         (release_stmt_tree): Fix for GIMPLE_CALL no longer having
10148         bare FUNCTION_DECL operand.
10149         * tree-nested.c (init_tmp_var_with_call): Use gimple_call_return_type.
10150         (convert_gimple_call): Use gimple_call_fndecl.
10151         * c-common.c (c_warn_unused_result): Likewise.
10152
10153 2008-08-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10154
10155         PR c/17880
10156         * c-typeck.c (digest_init): Call verify_sequence_points from here.
10157         (c_finish_return): Likewise.
10158         (c_start_case): Likewise.
10159         * c-common.c (warn_for_collisions_1): Use explicit location in warning.
10160         * c-parser.c (c_parser_condition): New. Call
10161         verify_sequence_points.
10162         (c_parser_paren_condition): Call c_parser_condition.
10163         (c_parser_for_statement): Call c_parser_condition.
10164
10165 2008-08-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10166
10167         PR 36901
10168         * diagnostic.def (DK_PEDWARN, DK_PERMERROR): New.
10169         * diagnostic.c (pedantic_warning_kind, permissive_error_kind):
10170         Moved from diagnostic.h
10171         (diagnostic_report_diagnostic): Return bool. Handle DK_PEDWARN and
10172         DK_PERMERROR.
10173         (emit_diagnostic): New.
10174         (warning0, pedwarn0): Delete.
10175         (warning, warning_at, pedwarn, permerror): Return bool.
10176         * diagnostic.h (pedantic_warning_kind, permissive_error_kind):
10177         Moved to diagnostic.c.
10178         (struct diagnostic_context): Use correct type for
10179         classify_diagnostic.
10180         (diagnostic_report_diagnostic): Update declaration.
10181         (emit_diagnostic): Declare.
10182         * errors.c (warning): Return bool.
10183         * errors.h (warning): Update declaration.
10184         * toplev.h (warning0, pedwarn0): Delete.
10185         (warning, warning_at, pedwarn, permerror): Return bool.
10186         * c-errors.c (pedwarn_c99, pedwarn_c90): Use DK_PEDWARN.
10187         * c-decl.c (locate_old_decl): Delete 'diag' argument. Always use
10188         inform. Update all calls.
10189         (diagnose_mismatched_decls): Check return value of warning/pedwarn
10190         before giving informative note.
10191         (implicit_decl_warning): Likewise.
10192         * c-typeck.c (build_function_call): Likewise.
10193         * tree-sssa.c (warn_uninit): Likewise.
10194         * builtins.c (gimplify_va_arg_expr): Likewise.
10195
10196 2008-08-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10197
10198         PR 7651
10199         * doc/invoke.texi (-Wextra): Move warning from here...
10200         (-Wuninitialized): ... to here.
10201
10202 2008-08-08  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10203
10204         PR 28875
10205         * flags.h (set_Wunused): Delete
10206         * toplev.c (process_options): Handle Wunused flags here.
10207         * opts.c (maybe_warn_unused_parameter): Delete.
10208         (common_handle_option): Replace set_Wunused by warn_unused.
10209         (set_Wextra): Do not handle Wunused-parameter here.
10210         (set_Wunused): Delete.
10211         * c-opts.c (c_common_handle_option): Replace set_Wunused by
10212         warn_unused.
10213         * common.opt (Wunused): Add Var and Init.
10214         (Wunused-function): Likewise.
10215         (Wunused-label): Likewise.
10216         (Wunused-parameter): Likewise.
10217         (Wunused-value): Likewise.
10218         (Wunused-variable): Likewise.
10219
10220 2008-08-08  Peter Bergner  <bergner@vnet.ibm.com>
10221
10222         * doc/invoke.texi: Add cpu_type power7.
10223         * config.in (HAVE_AS_VSX): New.
10224         * config.gcc: Add cpu_type power7.
10225         * configure.ac (HAVE_AS_VSX): Check for assembler support of the
10226         VSX instructions.
10227         * configure: Regenerate.
10228         * config/rs6000/rs6000.c (rs6000_override_options): Alias power7 to
10229         power5.
10230         * config/rs6000/rs6000.h (ASM_CPU_POWER7_SPEC): Define.
10231         (ASM_CPU_SPEC): Pass %(asm_cpu_power7) for -mcpu=power7.
10232         (EXTRA_SPECS): Add asm_cpu_power7 spec string.
10233
10234 2008-08-08  Dorit Nuzman  <dorit@il.ibm.com>
10235
10236         * tree-vect-transform.c (vectorizable_conversion): Pass the integral
10237         type to vectorize.builtin_conversion.
10238         (vectorizable_conversion): Likewise.
10239         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Always takes
10240         integral type as input.
10241         * config/rs6000/rs6000.c (rs6000_builtin_conversion): Add case for
10242         FIX_TRUNC_EXPR.
10243         (rs6000_expand_builtin): Add case for ALTIVEC_BUILTIN_VCTUXS
10244         and ALTIVEC_BUILTIN_VCTSXS.
10245         (rs6000_builtin_mul_widen_even. rs6000_builtin_mul_widen_odd): Fix
10246         formatting.
10247
10248 2008-08-08  Richard Guenther  <rguenther@suse.de>
10249
10250         * tree-ssa-ccp.c (likely_value): Calls are not all varying.
10251         (surely_varying_stmt_p): Calls are varying only if they are
10252         non-builtin and not indirect or have no result.
10253         (ccp_fold): Re-instantiate code before the tuples merge.
10254
10255 2008-08-08  Richard Guenther  <rguenther@suse.de>
10256
10257         PR tree-optimization/37056
10258         * gimple.h (gimple_assign_rhs_class): New helper function.
10259         * tree-ssa-loop-niter.c (get_val_for): Fix tuplification, handle
10260         unary operations properly.
10261
10262 2008-08-07  Jan Hubicka  <jh@suse.cz>
10263
10264         * i386.h (ix86_size_cost): Declare.
10265         (ix86_cur_cost): New function macro.
10266         * i386.md (peepholes expanding size and splitters): Predicate by
10267         optimize_insn_for_speed_p.
10268         (peepholes reduce size and splitters): Predicate by
10269         optimize_insn_for_size_p.
10270         * i386.c (ix86_size_cost): Rename from ...
10271         (size_cost): This one.
10272         (override_options): Update.
10273         (decide_alg): Likewise.
10274         (ix86_expand_clear): Use RTL profile.
10275         (ix86_pad_returns): Use RTL profile.
10276
10277 2008-08-07  Jan Hubicka  <jh@suse.cz>
10278
10279         * recog.c (split_all_insns): Set RTL profile
10280         (peephole2_optimize): Likewise.
10281         * function.c (thread_prologue_and_epilogue_insns): Likewise.
10282         * combine.c (combine_instructions): Likewise.
10283
10284 2008-08-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10285
10286         * c-common.c (c_common_reswords): Also warn about keyword "bool".
10287
10288 2008-08-07  Bob Wilson  <bob.wilson@acm.org>
10289
10290         * config/xtensa/xtensa.c (xtensa_copy_incoming_a7): Copy incoming
10291         value in a6 after the set_frame_ptr insn.
10292
10293 2008-08-07  Richard Henderson  <rth@redhat.com>
10294
10295         PR debug/37033
10296         * gcc.c (cpp_options): Pass along -g*.
10297
10298 2008-08-07  Joseph Myers  <joseph@codesourcery.com>
10299
10300         * config/arm/arm.c (output_move_neon): Update comment describing
10301         big-endian vector layout.
10302         (arm_assemble_integer): Do not handle big-endian NEON vectors
10303         specially.
10304         * config/arm/neon.md (vec_set<mode>_internal, vec_extract<mode>,
10305         neon_vget_lane<mode>_sext_internal,
10306         neon_vget_lane<mode>_zext_internal, neon_vget_lane<mode>): Adjust
10307         element indices for big-endian.
10308
10309 2008-08-07  Richard Henderson  <rth@redhat.com>
10310
10311         * configure.ac (HAVE_GAS_CFI_PERSONALITY_DIRECTIVE): New.
10312         * configure, config.in: Rebuild.
10313         * debug.h (dwarf2out_do_cfi_asm): Declare.
10314         * c-cppbuiltin.c (c_cpp_builtins): Use it.
10315         * dwarf2out.c (dwarf2out_do_cfi_asm): New.
10316         (dwarf2out_cfi_label, add_fde_cfi, output_call_frame_info,
10317         dwarf2out_begin_prologue, dwarf2out_end_epilogue): Use it.
10318
10319 2008-08-07  Joseph Myers  <joseph@codesourcery.com>
10320
10321         * config/arm/iwmmxt.md (movv8qi_internal, movv4hi_internal,
10322         movv2si_internal): Combine into mov<mode>_internal.
10323         (movv2si_internal_2): Remove.
10324
10325 2008-08-07  Jan Hubicka  <jh@suse.cz>
10326
10327         PR target/37048
10328         * i386.md (single stringop patterns): Enable unconditionally.
10329
10330 2008-08-07  H.J. Lu  <hongjiu.lu@intel.com>
10331
10332         PR target/36992
10333         * config/i386/emmintrin.h (_mm_move_epi64): Use __builtin_ia32_movq128.
10334
10335         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MOVQ128.
10336         (bdesc_args): Add IX86_BUILTIN_MOVQ128.
10337
10338         * config/i386/sse.md (sse2_movq128): New.
10339
10340         * doc/extend.texi: Document __builtin_ia32_movq128.
10341
10342 2008-08-07  Richard Guenther  <rguenther@suse.de>
10343
10344         PR middle-end/37042
10345         * tree-ssa-alias-warnings.c (nonstandard_alias_p): Ref-all
10346         pointers can access anything.
10347
10348 2008-08-06  Jan Hubicka  <jh@suse.cz>
10349
10350         * optabs.c (emit_unop_insn): Break out to ...
10351         (maybe_emit_unop_insn): ... this one.
10352         (expand_sfix_optab): Use maybe variant.
10353         * optabs.h (maybe_emit_unop_insn): Declare.
10354
10355         * i386.md (mov0 patterns): Enable by default.
10356         (FP conversion expanders): Disable expansion of code expanding
10357         sequences when instruction should be optimized for size.
10358         (single strinop patterns): Enable when optimizing for size.
10359         (string expanders): Disable expanding of code expanding sequences
10360         when optimizning instruction for size.
10361         * i386.c (ix86_expand_vector_move_misalign): Do code size optimization
10362         per BB basis.
10363         (ix86_fp_comparison_sahf_cost): Likewise.
10364         (ix86_expand_branch): Likewise.
10365         (ix86_expand_ashl_const): Likewise.
10366         (ix86_split_ashl): Likewise.
10367         (ix86_expand_strlen): Likewise.
10368         (ix86_emit_fp_unordered_jump): Likewie.
10369
10370 2008-08-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10371
10372         * c-common.c: Fix typo.
10373         (c_common_reswords): Activate more C++ keyword warnings.
10374
10375         * matrix-reorg.c (compute_offset): Avoid C++ keywords.
10376
10377 2008-08-06  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10378
10379         PR 26785
10380         * diagnostic.c (permerror_at): New.
10381         * toplev.h (permerror_at): Declare.
10382
10383 2008-08-06  Victor Kaplansky  <victork@il.ibm.com>
10384             Ira Rosen  <irar@il.ibm.com>
10385
10386         * tree-vect-transform.c (vect_model_simple_cost): Return
10387         immediately if stmt is pure SLP.
10388         (vect_model_store_cost): Ditto.
10389         (vect_model_load_cost): Ditto.
10390         (vectorizable_store): Remove PURE_SLP check before call
10391         to vect_model_store_cost.
10392         (vect_model_store_cost): When checking whether stmt describe
10393         strided access, add a check that it is not slp_node.
10394
10395 2008-08-06  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10396
10397         PR 8715
10398         * c-common.c (warn_for_sign_compare): New. Handle separately the
10399         case that 'constant' is zero.
10400         * c-typeck.c (build_binary_op): Move code to c-common.c
10401
10402 2008-08-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10403
10404         * config/alpha/alpha.c (alpha_preferred_reload_class,
10405         alpha_secondary_reload, alpha_emit_set_const_1, function_value,
10406         alpha_output_mi_thunk_osf): Avoid C++ keywords.
10407         * config/arm/arm.c (output_move_vfp, output_move_neon): Likewise.
10408         * config/arm/arm.md: Likewise.
10409         * config/avr/avr-protos.h (preferred_reload_class,
10410         test_hard_reg_class, avr_simplify_comparison_p,
10411         out_shift_with_cnt, class_max_nregs): Likewise.
10412         * config/avr/avr.c (class_max_nregs, avr_simplify_comparison_p,
10413         output_movqi, output_movhi, output_movsisf, out_shift_with_cnt,
10414         preferred_reload_class, test_hard_reg_class): Likewise.
10415         * config/bfin/bfin.c (legitimize_pic_address, hard_regno_mode_ok,
10416         bfin_memory_move_cost, bfin_secondary_reload,
10417         bfin_output_mi_thunk): Likewise.
10418         * config/crx/crx.c (crx_secondary_reload_class,
10419         crx_memory_move_cost): Likewise.
10420         * config/frv/frv-protos.h (frv_secondary_reload_class,
10421         frv_class_likely_spilled_p, frv_class_max_nregs): Likewise.
10422         * config/frv/frv.c (frv_override_options, frv_alloc_temp_reg,
10423         frv_secondary_reload_class, frv_class_likely_spilled_p,
10424         frv_class_max_nregs): Likewise.
10425         * config/h8300/h8300.c (h8300_classify_operand,
10426         h8300_unary_length, h8300_bitfield_length, h8300_asm_insn_count):
10427         Likewise.
10428         * config/i386/winnt.c (i386_pe_declare_function_type): Likewise.
10429         * config/ia64/ia64.c (ia64_preferred_reload_class,
10430         ia64_secondary_reload_class, ia64_output_mi_thunk): Likewise.
10431         * config/iq2000/iq2000.c (gen_int_relational): Likewise.
10432         * config/m32c/m32c.c (class_can_hold_mode, m32c_output_compare):
10433         Likewise.
10434         * config/m68hc11/m68hc11.c (preferred_reload_class,
10435         m68hc11_memory_move_cost): Likewise.
10436         * config/mcore/mcore.c (mcore_secondary_reload_class,
10437         mcore_reload_class): Likewise.
10438         * config/mips/mips.c (mips_hard_regno_mode_ok_p,
10439         mips_class_max_nregs, mips_cannot_change_mode_class,
10440         mips_preferred_reload_class, mips_secondary_reload_class,
10441         mips_output_mi_thunk): Likewise.
10442         * config/mmix/mmix.c (mmix_preferred_reload_class,
10443         mmix_preferred_output_reload_class, mmix_secondary_reload_class):
10444         Likewise.
10445         * config/mn10300/mn10300.c (mn10300_secondary_reload_class):
10446         Likewise.
10447         * config/pa/pa.c (pa_secondary_reload, pa_combine_instructions,
10448         pa_can_combine_p, pa_cannot_change_mode_class): Likewise.
10449         * config/pa/pa.h (LEGITIMIZE_RELOAD_ADDRESS): Likewise.
10450         * config/rs6000/rs6000.c (paired_expand_vector_init,
10451         rs6000_secondary_reload_class, rs6000_output_mi_thunk,
10452         compare_section_name, rs6000_memory_move_cost): Likewise.
10453         * config/s390/s390.c (s390_emit_compare_and_swap,
10454         s390_preferred_reload_class, s390_secondary_reload,
10455         legitimize_pic_address, legitimize_tls_address,
10456         legitimize_reload_address, s390_expand_cs_hqi, s390_expand_atomic,
10457         s390_class_max_nregs): Likewise.
10458         * config/s390/s390.h (LEGITIMIZE_RELOAD_ADDRESS): Likewise.
10459         * config/s390/s390.md: Likewise.
10460         * config/score/score-protos.h (score_secondary_reload_class,
10461         score_preferred_reload_class): Likewise.
10462         * config/score/score.c (score_preferred_reload_class,
10463         score_secondary_reload_class): Likewise.
10464         * config/score/score3.c (score3_output_mi_thunk,
10465         score3_preferred_reload_class, score3_secondary_reload_class,
10466         score3_hard_regno_mode_ok): Likewise.
10467         * config/score/score3.h (score3_preferred_reload_class,
10468         score3_secondary_reload_class): Likewise.
10469         * config/score/score7.c (score7_output_mi_thunk,
10470         score7_preferred_reload_class, score7_secondary_reload_class,
10471         score7_hard_regno_mode_ok): Likewise.
10472         * config/score/score7.h (score7_preferred_reload_class,
10473         score7_secondary_reload_class): Likewise.
10474         * config/sh/sh.c (prepare_move_operands, output_far_jump,
10475         output_branchy_insn, add_constant, gen_block_redirect,
10476         sh_insn_length_adjustment, sh_cannot_change_mode_class,
10477         sh_output_mi_thunk, replace_n_hard_rtx, sh_secondary_reload): Likewise.
10478         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
10479         * config/stormy16/stormy16.c (xstormy16_output_cbranch_hi,
10480         xstormy16_output_cbranch_si, xstormy16_secondary_reload_class,
10481         xstormy16_preferred_reload_class): Likewise.
10482         * config/xtensa/xtensa.c (xtensa_expand_compare_and_swap,
10483         xtensa_expand_atomic, override_options,
10484         xtensa_preferred_reload_class, xtensa_secondary_reload_class):
10485         Likewise.
10486         * reorg.c (try_merge_delay_insns): Likewise.
10487         * tree.c (merge_dllimport_decl_attributes): Likewise.
10488
10489         * config/frv/frv.c (frv_print_operand): Change isalpha to ISALPHA.
10490
10491 2008-08-06  Michael Matz  <matz@suse.de>
10492
10493         * Makefile.in (write_entries_to_file): Quote words.
10494         * gengtype.c: (read_input_line): Skip over leading white-space.
10495
10496 2008-08-06  Marc Gauthier  <marc@tensilica.com>
10497
10498         * config.gcc: Match more processor names for Xtensa.
10499         * configure.ac: Likewise.
10500         * doc/install.texi (Specific): Likewise.
10501         * configure: Regenerate.
10502
10503 2008-08-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10504
10505         * builtins.c (expand_builtin_profile_func): Avoid C++ keywords.
10506         * calls.c (avoid_likely_spilled_reg): Likewise.
10507         * cfgexpand.c (gimple_assign_rhs_to_tree): Likewise.
10508         * cgraph.c (cgraph_clone_edge, cgraph_clone_node): Likewise.
10509         * config/i386/i386.c (ix86_expand_special_args_builtin,
10510         ix86_secondary_reload): Likewise.
10511         * except.c (struct eh_region, gen_eh_region_catch,
10512         remove_unreachable_regions, duplicate_eh_regions,
10513         assign_filter_values, build_post_landing_pads,
10514         sjlj_find_directly_reachable_regions, remove_eh_handler,
10515         reachable_next_level, foreach_reachable_handler,
10516         can_throw_internal_1, can_throw_external_1,
10517         collect_one_action_chain): Likewise.
10518         * expr.c (expand_expr_real_1, vector_mode_valid_p): Likewise.
10519         * fold-const.c (twoval_comparison_p, eval_subst): Likewise.
10520         * function.c (update_temp_slot_address, instantiate_new_reg,
10521         instantiate_virtual_regs_in_rtx,
10522         instantiate_virtual_regs_in_insn): Likewise.
10523         * gimple.c (extract_ops_from_tree, gimple_seq_copy): Likewise.
10524         * gimplify.c (gimplify_call_expr, gimplify_init_constructor,
10525         gimplify_cleanup_point_expr): Likewise.
10526         * ipa-cp.c (ipcp_lattice_changed): Likewise.
10527         * passes.c (next_pass_1): Likewise.
10528         * print-tree.c (print_node_brief, print_node): Likewise.
10529         * profile.c (branch_prob): Likewise.
10530         * tree-dump.c (dump_register): Likewise.
10531         * tree-eh.c (replace_goto_queue_cond_clause, lower_catch):
10532         Likewise.
10533         * tree-inline.c (remap_ssa_name, remap_type_1, remap_blocks,
10534         copy_statement_list, remap_gimple_op_r, copy_tree_body_r,
10535         copy_edges_for_bb, copy_cfg_body, copy_tree_r,
10536         copy_arguments_for_versioning, copy_static_chain): Likewise.
10537         * tree-into-ssa.c (names_replaced_by, add_to_repl_tbl,
10538         add_new_name_mapping, register_new_name_mapping): Likewise.
10539         * tree-mudflap.c (mf_xform_derefs): Likewise.
10540         * tree-predcom.c (struct chain, dump_chain, replace_ref_with,
10541         get_init_expr, combine_chains): Likewise.
10542         * tree-pretty-print.c (dump_generic_node): Likewise.
10543         * tree-ssa-structalias.c (create_variable_info_for): Likewise.
10544         * tree-vrp.c (simplify_cond_using_ranges): Likewise.
10545         * tree.c (substitute_in_expr, iterative_hash_expr): Likewise.
10546         * value-prof.c (gimple_duplicate_stmt_histograms): Likewise.
10547
10548 2008-08-06  H.J. Lu  <hongjiu.lu@intel.com>
10549
10550         PR middle-end/37010
10551         * calls.c (expand_call): Use the biggest preferred stack
10552         boundary.
10553
10554 2008-08-06  Michael Matz  <matz@suse.de>
10555
10556         PR target/36613
10557         * reload.c (push_reload): Merge in,out,in_reg,out_reg members
10558         for reused reload, instead of overwriting them.
10559
10560 2008-08-06  H.J. Lu  <hongjiu.lu@intel.com>
10561
10562         PR middle-end/37009
10563         * cfgexpand.c (expand_stack_alignment): Check parm_stack_boundary
10564         for incoming stack boundary.
10565
10566         * function.c (assign_parm_find_entry_rtl): Update
10567         parm_stack_boundary.
10568
10569         * function.h (rtl_data): Add parm_stack_boundary.
10570
10571         * config/i386/i386.c (ix86_finalize_stack_realign_flags): Check
10572         parm_stack_boundary for incoming stack boundary.
10573
10574 2008-08-06  Joseph Myers  <joseph@codesourcery.com>
10575
10576         * jump.c (rtx_renumbered_equal_p): Do not call subreg_regno_offset
10577         for unrepresentable subregs or treat them as equal to other regs
10578         or subregs with the same register number.
10579
10580 2008-08-06  Aldy Hernandez  <aldyh@redhat.com>
10581
10582         PR middle-end/35432
10583         * gimplify.c (gimplify_modify_expr): Do not optimize zero-sized types
10584         if want_value.
10585
10586 2008-08-06  Jan Hubicka  <jh@suse.cz>
10587
10588         * predict.c (maybe_hot_frequency_p): When profile is absent, all
10589         frequencies might be hot.
10590
10591 2008-08-06  Andreas Krebbel  <krebbel1@de.ibm.com>
10592
10593         * reload.c (find_reloads): Force constants into literal pool
10594         also if they are wrapped in a SUBREG.
10595
10596 2008-08-06  Maxim Kuvyrkov  <maxim@codesourcery.com>
10597
10598         PR target/35659
10599         * haifa-sched.c (sched_insn_is_legitimate_for_speculation_p): Move ...
10600         * sched-deps.c (sched_insn_is_legitimate_for_speculation_p): ... here.
10601         Don't allow predicated instructions for data speculation.
10602         * sched-int.h (sched_insn_is_legitimate_for_speculation_p): Move
10603         declaration.
10604
10605 2008-08-06  Maxim Kuvyrkov  <maxim@codesourcery.com>
10606
10607         * haifa-sched.c (extend_global): Split to extend_global_data and
10608         extend_region_data.  Update all uses.
10609         (extend_all): Rename to extend_block_data.
10610
10611 2008-08-06  Maxim Kuvyrkov  <maxim@codesourcery.com>
10612
10613         * sched-rgn.c (new_ready): Check if instruction can be
10614         speculatively scheduled before attempting speculation.
10615         (debug_rgn_dependencies): Remove wrongful assert.
10616
10617 2008-08-05  Bob Wilson  <bob.wilson@acm.org>
10618
10619         * config/xtensa/t-xtensa: Remove dependency for gt-xtensa.h.
10620
10621 2008-08-05  Bob Wilson  <bob.wilson@acm.org>
10622
10623         * config/xtensa/xtensa.c (xtensa_va_start): Unshare valist.
10624         (xtensa_gimplify_va_arg_expr): Unshare valist, orig_ndx, ndx, array,
10625         va_size, and type_size.
10626
10627 2008-08-04  Jason Merrill  <jason@redhat.com>
10628
10629         PR c++/37016
10630         * tree-ssa.c (useless_type_conversion_p_1): Call langhook
10631         if TYPE_STRUCTURAL_EQUALITY_P is true for both types.
10632
10633 2008-08-05  Richard Henderson  <rth@redhat.com>
10634
10635         * configure.ac (HAVE_GAS_CFI_DIRECTIVE): Check .cfi_personality.
10636         * configure: Rebuild.
10637
10638 2008-08-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10639
10640         PR tree-opt/37024
10641         * tree-tailcall.c (process_assignment): Use gimple_assign_cast_p
10642         instead of IS_CONVERT_EXPR_CODE_P for seeing if the assignment
10643         is a conversion.
10644
10645 2008-08-05  Richard Henderson  <rth@redhat.com>
10646
10647         * Makefile.in (c-cppbuiltin.o): Depend on debug.h.
10648         * c-cppbuiltin.c (c_cpp_builtins): Define __GCC_HAVE_DWARF2_CFI_ASM.
10649         * doc/cpp.texi (__GCC_HAVE_DWARF2_CFI_ASM): Document it.
10650         * common.opt (fdwarf2-cfi-asm): New.
10651         * configure.ac (HAVE_GAS_CFI_DIRECTIVE): New.
10652         * config.in, configure: Rebuild.
10653         * dwarf2asm.c (dw2_asm_output_data_raw): New.
10654         (dw2_asm_output_data_uleb128_raw, dw2_asm_output_data_sleb128_raw):
10655         New.
10656         (dw2_force_const_mem): Externalize.
10657         * dwarf2asm.h: Update.
10658         * dwarf2out.c (dwarf2out_cfi_label): If flag_dwarf2_cfi_asm, don't
10659         generate a real label.
10660         (output_cfi_directive): New.
10661         (add_fde_cfi): If flag_dwarf2_cfi_asm, use it.
10662         (output_call_frame_info): Do nothing if flag_dwarf2_cfi_asm.
10663         (dwarf2out_begin_prologue): Emit .cfi_startproc, .cfi_personality,
10664         and .cfi_lsda.
10665         (dwarf2out_end_epilogue): Emit .cfi_endproc.
10666         (output_loc_operands_raw, output_loc_sequence_raw): New.
10667         (output_cfa_loc_raw): New.
10668
10669 2008-08-05  Paul Brook  <paul@codesourcery.com>
10670
10671         * doc/invoke.texi: Document new ARM -mfpu= and -mcpu= options.
10672         * config/arm/arm.c (all_fpus): Add vfpv3 and vfpv3-d16.
10673         (fp_model_for_fpu): Add entry for FPUTYPE_VFP3D16.
10674         (arm_file_start): Add FPUTYPE_VFP3D16.  Rename vfp3 to vfpv3.
10675         * config/arm/arm.h (TARGET_VFPD32): Define.
10676         (TARGET_VFP3): Use TARGET_VFPD32.
10677         (fputype): Add FPUTYPE_VFP3D16.
10678         (LAST_VFP_REGNUM): Use TARGET_VFPD32.
10679         * config/arm/constraints.md ("w"): Use TARGET_VFPD32.
10680         * config/arm/arm-cores.def: Add cortex-r4f.
10681         * config/arm/arm-tune.md: Regenerate.
10682
10683 2008-08-05  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
10684
10685         * config/spu_spu_mfcio.h: Wrap in extern "C" if __cplusplus.
10686         Reword some comments throughout the file.
10687
10688         (MFC_MIN_DMA_LIST_ELEMENTS): New define.
10689         (MFC_MAX_DMA_LIST_ELEMENTS): Likewise.
10690         (MFC_MIN_DMA_LIST_SIZE): Redefine in terms of
10691         MFC_MIN_DMA_LIST_ELEMENTS.
10692         (MFC_MAX_DMA_LIST_SIZE): Redefine in terms of
10693         MFC_MAX_DMA_LIST_ELEMENTS.
10694
10695         (MFC_START_ENABLE): Remove PPU-only define.
10696         (MFC_PUTS_CMD, MFC_PUTFS_CMD, MFC_PUTBS_CMD): Likewise.
10697         (MFC_GETS_CMD, MFC_GETFS_CMD, MFC_GETBS_CMD): Likewise.
10698
10699         (MFC_PUTB_CMD, MFC_PUTF_CMD): Reimplement using symbolic constants.
10700         (MFC_PUTL_CMD, MFC_PUTLB_CMD, MFC_PUTLF_CMD): Likewise.
10701         (MFC_PUTR_CMD, MFC_PUTRB_CMD, MFC_PUTRF_CMD): Likewise.
10702         (MFC_PUTRL_CMD, MFC_PUTRLB_CMD, MFC_PUTRLF_CMD): Likewise.
10703         (MFC_GETB_CMD, MFC_GETF_CMD): Likewise.
10704         (MFC_GETL_CMD, MFC_GETLB_CMD, MFC_GETLF_CMD): Likewise.
10705         (MFC_SNDSIGB_CMD, MFC_SNDSIGF_CMD): Likewise.
10706
10707         (MFC_SDCRT_CMD, MFC_SDCRTST_CMD): New defines.
10708         (MFC_SDCRZ_CMD, MFC_SDCRST_CMD, MFC_SDCRF_CMD): Likewise.
10709         (mfc_sdcrt, mfc_sdcrtst): Likewise.
10710         (mfc_sdcrz, mfc_sdcrst, mfc_sdcrf): Likewise.
10711
10712         (spu_read_machine_status): Fix typo.
10713
10714 2008-08-05  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
10715
10716         * config/spu/spu.h (CANNOT_CHANGE_MODE_CLASS): Allow (multi)word-sized
10717         SUBREG of multi-word hard register.
10718         * config/spu/spu.c (valid_subreg): Likewise.
10719         (adjust_operand): Handle SUBREGs of multi-word hard registers.
10720
10721 2008-08-04  Richard Guenther  <rguenther@suse.de>
10722
10723         * tree-ssa-loop-ivopts.c (add_iv_value_candidates): Also add
10724         the candidate with the stripped base if that base is different
10725         from the original base even for offset zero.
10726
10727 2008-08-04  Richard Guenther  <rguenther@suse.de>
10728
10729         PR middle-end/36691
10730         * tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Correctly
10731         check for no_overflow.
10732
10733 2008-08-04  Richard Guenther  <rguenther@suse.de>
10734
10735         * tree-vect-transform.c (vectorizable_call): Fix tuplification.
10736
10737 2008-08-04  Paul Brook  <paul@codesourcery.com>
10738
10739         * cofig/arm/arm.c (thumb_core_reg_alloc_order): New.
10740         (arm_order_regs_for_local_alloc): New function.
10741         * config/arm/arm-protos.h (arm_order_regs_for_local_alloc): Add
10742         prototype.
10743         * config/arm/arm.h (ORDER_REGS_FOR_LOCAL_ALLOC): Define.
10744
10745 2008-08-04  H.J. Lu  <hongjiu.lu@intel.com>
10746
10747         PR target/37012
10748         * config/i386/i386.c (ix86_expand_prologue): Use UNITS_PER_WORD
10749         instead of STACK_BOUNDARY / BITS_PER_UNIT to align stack.
10750         (ix86_expand_epilogue): Likewise.
10751
10752 2008-08-04  H.J. Lu  <hongjiu.lu@intel.com>
10753
10754         * config/i386/i386.c (ix86_compute_frame_layout): Fix a typo
10755         in comments.
10756
10757 2008-08-03  Uros Bizjak  <ubizjak@gmail.com>
10758
10759         * config/i386/mmx.md (*mov<mode>_internal_rex64): Use Yi instead of x
10760         to avoid inter-unit moves for !TARGET_INTER_UNIT_MOVES.
10761         (*movv2sf_internal_rex64): Ditto.
10762
10763 2008-08-03  Jan Hubicka  <jh@suse.cz>
10764
10765         * optabs.c (expand_binop, expand_builtin_pow, expand_builtin_powi,
10766         expand_builtin_strcat): Upse optimize_insn_for_speed predicate.
10767         * expmed.c (expand_smod_pow2): Likewise.
10768
10769 2008-08-03  Uros Bizjak  <ubizjak@gmail.com>
10770
10771         PR target/36992
10772         * config/i386/sse.md (vec_concatv2di): Add Y2 constraint to
10773         alternative 0 of operand 1.
10774         (*vec_concatv2di_rex64_sse): Ditto.
10775         (*vec_concatv2di_rex64_sse4_1): Add x constraint to alternative 0
10776         of operand 1.
10777         (*sse2_storeq_rex64): Penalize allocation of "r" registers.
10778         * config/i386/mmx.md (*mov<mode>_internal_rex64): Penalize allocation
10779         of "Y2" registers to avoid SSE <-> MMX conversions for DImode moves.
10780         (*movv2sf_internal_rex64): Ditto.
10781
10782 2008-08-02  Richard Guenther  <rguenther@suse.de>
10783
10784         PR target/35252
10785         * config/i386/sse.md (SSEMODE4S, SSEMODE2D): New mode iterators.
10786         (ssedoublesizemode): New mode attribute.
10787         (sse_shufps): Call gen_sse_shufps_v4sf.
10788         (sse_shufps_1): Macroize.
10789         (sse2_shufpd): Call gen_Sse_shufpd_v2df.
10790         (sse2_shufpd_1): Macroize.
10791         (vec_extract_odd, vec_extract_even): New expanders.
10792         (vec_interleave_highv4sf, vec_interleave_lowv4sf,
10793         vec_interleave_highv2df, vec_interleave_lowv2df): Likewise.
10794         * i386.c (ix86_expand_vector_init_one_nonzero): Call
10795         gen_sse_shufps_v4sf instead of gen_sse_shufps_1.
10796         (ix86_expand_vector_set): Likewise.
10797         (ix86_expand_reduc_v4sf): Likewise.
10798
10799 2008-08-01  Doug Kwan  <dougkwan@google.com>
10800
10801         * matrix-reorg.c: Re-enable all code.
10802         (struct malloc_call_data): Change CALL_STMT to gimple type.
10803         (collect_data_for_malloc_call): Tuplify.
10804         (struct access_site_info): Change STMT to gimple type.
10805         (struct matrix_info): Change MIN_INDIRECT_LEVEL_ESCAPE_STMT,
10806         and MALLOC_FOR_LEVEL to gimple and gimple pointer type.
10807         (struct free_info): Change STMT to gimple type.
10808         (struct matrix_access_phi_node):  Change PHI to gimple type.
10809         (get_inner_of_cast_expr): Remove.
10810         (may_flatten_matrices_1): Tuplify.
10811         (may_flatten_matrices): Ditto.
10812         (mark_min_matrix_escape_level): Ditto.
10813         (ssa_accessed_in_tree): Refactor statement RHS related code into ...
10814         (ssa_accessed_in_call_rhs): New
10815         (ssa_accessed_in_assign_rhs): New
10816         (record_access_alloc_site_info): Tuplify.
10817         (add_allocation_site): Ditto.
10818         (analyze_matrix_allocation_site): Ditto.
10819         (analyze_transpose): Ditto.
10820         (get_index_from_offset): Ditto.
10821         (update_type_size): Ditto.
10822         (analyze_accesses_for_call_expr): Tuplify and renamed into ...
10823         (analyze_accesses_for_call_stmt): New. Also handle LHS of a call.
10824         (analyze_accesses_for_phi_node): Tuplify.
10825         (analyze_accesses_for_modify_stmt): Tuplify and renamed into ...
10826         (analyze_accesses_for_assign_stmt): Remove code for handling call LHS.
10827         (analyze_matrix_accesses): Tuplify.
10828         (check_var_data): New call-back type for check_var_notmodified_p.
10829         (check_var_notmodified_p): Tuplify and use call-back struct to
10830         return statement found.
10831         (can_calculate_expr_before_stmt): Factor out statement related code
10832         into ...
10833         (can_calculate_stmt_before_stmt): New.
10834         (check_allocation_function): Tuplify.
10835         (find_sites_in_func): Ditto.
10836         (record_all_accesses_in_func): Ditto.
10837         (transform_access_sites): Ditto.
10838         (transform_allocation_sites): Ditto.
10839         (matrix_reorg): Re-enable.
10840         (gate_matrix_reorg): Re-enable.
10841
10842 2008-08-01  Jakub Jelinek  <jakub@redhat.com>
10843
10844         * dwarf2out.c (compute_barrier_args_size): Set barrier_args_size
10845         for labels for which it hasn't been set yet.  If it has been set,
10846         stop walking insns and continue with next worklist item.
10847         (dwarf2out_stack_adjust): Don't call compute_barrier_args_size
10848         if the only BARRIER is at the very end of a function.
10849
10850 2008-08-01  H.J. Lu  <hongjiu.lu@intel.com>
10851
10852         * cfgexpand.c (expand_stack_alignment): Assert that
10853         stack_realign_drap and drap_rtx must match.
10854
10855         * function.c (instantiate_new_reg): If DRAP is used to realign
10856         stack, replace virtual_incoming_args_rtx with internal arg
10857         pointer.
10858
10859 2008-08-01  Richard Guenther  <rguenther@suse.de>
10860
10861         * tree-ssa-pre.c (fini_pre): Take in_fre parameter.  Free
10862         loop information only if we initialized it.
10863         (execute_pre): Call fini_pre with in_fre.
10864         * tree-ssa-loop-ivcanon (try_unroll_loop_completely): Dump
10865         if we do not unroll because we hit max-completely-peeled-insns.
10866         Use our estimation for consistency, do allow shrinking.
10867
10868 2008-08-01  H.J. Lu  <hongjiu.lu@intel.com>
10869
10870         * config/i386/i386.c (override_options): Replace ABI_STACK_BOUNDARY
10871         with MIN_STACK_BOUNDARY.
10872         (ix86_update_stack_boundary): Likewise.
10873         (ix86_expand_prologue): Assert MIN_STACK_BOUNDARY instead of
10874         STACK_BOUNDARY.
10875
10876         * config/i386/i386.h (ABI_STACK_BOUNDARY): Renamed to ...
10877         (MIN_STACK_BOUNDARY): This.
10878
10879 2008-08-01  Richard Guenther  <rguenther@suse.de>
10880
10881         PR middle-end/36997
10882         * gimplify.c (gimplify_call_expr): Set error_mark_node on GS_ERROR.
10883
10884 2008-08-01  Richard Guenther  <rguenther@suse.de>
10885
10886         PR tree-optimization/36988
10887         * tree-ssa-ccp.c (ccp_fold): Conversions of constants only
10888         do not matter if that doesn't change volatile qualification.
10889
10890 2008-08-01  Paolo Bonzini  <bonzini@gnu.org>
10891
10892         * configure.ac: Do not generate libada-mk.  Do not subst
10893         host_cc_for_libada.
10894         * libada-mk.in: Remove.
10895         * Makefile.in: Pass TARGET_LIBGCC2_CFLAGS to libgcc.mvars.
10896         * configure: Regenerate.
10897
10898 2008-08-01  Basile Starynkevitch  <basile@starynkevitch.net>
10899
10900         * tree-pass.h: Added comment about not dumping passes with name
10901         starting with star in struct opt_pass.
10902         * passes.c (register_dump_files_1): Don't do dump for a pass with
10903         name starting with star.
10904         * doc/passes.texi (Pass manager): Mention pass names and special
10905         meaning of star prefix to avoid dump.
10906
10907 2008-07-31  Adam Nemet  <anemet@caviumnetworks.com>
10908
10909         * config.gcc (mipsisa64r2*-*-linux*): New configuration.  Set ISA
10910         to MIPS64r2.
10911         * config/mips/mips.h (GENERATE_MIPS16E): Update comment.
10912         (ISA_MIPS64R2): New macro.
10913         (TARGET_CPU_CPP_BUILTINS, MULTILIB_ISA_DEFAULT): Handle it.
10914         (ISA_HAS_64BIT_REGS, ISA_HAS_MUL3, ISA_HAS_FP_CONDMOVE,
10915         ISA_HAS_8CC, ISA_HAS_FP4, ISA_HAS_PAIRED_SINGLE,
10916         ISA_HAS_MADD_MSUB, ISA_HAS_NMADD4_NMSUB4, ISA_HAS_CLZ_CLO,
10917         ISA_HAS_ROR, ISA_HAS_PREFETCH, ISA_HAS_PREFETCHX, ISA_HAS_SEB_SEH,
10918         ISA_HAS_EXT_INS, ISA_HAS_MXHC1, ISA_HAS_HILO_INTERLOCKS,
10919         ISA_HAS_SYNCI, MIN_FPRS_PER_FMT): Return true for ISA_MIPS64R2.
10920         (MIPS_ISA_LEVEL_SPEC, ASM_SPEC, LINK_SPEC): Handle -mips64r2.
10921         (TARGET_LOONGSON_2E, TARGET_LOONGSON_2F, TARGET_LOONGSON_2EF):
10922         Move up to keep list alphabetically sorted.
10923         (TUNE_20KC, TUNE_24K, TUNE_74K, TUNE_LOONGSON_2EF): Likewise.
10924         * config/mips/mips.c (mips_cpu_info_table): Add default MIPS64r2
10925         processor.
10926         * doc/invoke.texi (MIPS Options): Add -mips64r2.
10927         (-march=@var{arch}): Add mips64r2.
10928
10929 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
10930
10931         * config/i386/darwin.h (MAIN_STACK_BOUNDARY): Define to 128.
10932
10933 2008-07-31  Steve Ellcey  <sje@cup.hp.com>
10934
10935         * expr.c (expand_assignment): Check for complete type.
10936
10937 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
10938
10939         PR debug/36977
10940         * cfgexpand.c (expand_stack_alignment): Set stack_realign_tried.
10941
10942         * dwarf2out.c (based_loc_descr): Check crtl->stack_realign_tried
10943         for stack alignment.
10944
10945         * function.h (rtl_data): Add stack_realign_tried.  Update comments.
10946
10947 2008-07-31  Kaz Kojima  <kkojima@gcc.gnu.org>
10948
10949         * config/sh/sh.c (sh_canonical_va_list_type): Remove.
10950         (TARGET_CANONICAL_VA_LIST_TYPE): Remove.
10951
10952 2008-07-31  Jakub Jelinek  <jakub@redhat.com>
10953
10954         PR rtl-optimization/36419
10955         * dwarf2out.c (barrier_args_size): New variable.
10956         (compute_barrier_args_size, compute_barrier_args_size_1): New
10957         functions.
10958         (dwarf2out_stack_adjust): For BARRIERs call compute_barrier_args_size
10959         if not called yet in the current function, use barrier_args_size
10960         array to find the new args_size value.
10961         (dwarf2out_frame_debug): Free and clear barrier_args_size.
10962
10963 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
10964
10965         PR debug/36980
10966         * dwarf2out.c (dwarf2out_frame_debug_expr): Move rule 17 before
10967         rule 19.
10968
10969 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
10970
10971         PR debug/36976
10972         * dwarf2out.c (dwarf2out_args_size_adjust): New.
10973         (dwarf2out_stack_adjust): Use it.
10974         (dwarf2out_frame_debug_expr): Likewise.
10975
10976 2008-07-31  Richard Guenther  <rguenther@suse.de>
10977
10978         PR tree-optimization/36978
10979         * tree-ssa-loop-unswitch.c (tree_may_unswitch_on): Do not fold
10980         the generated condition.
10981
10982 2008-07-31  Richard Guenther  <rguenther@suse.de>
10983
10984         * passes.c (init_optimization_passes): Always call
10985         pass_early_warn_uninitialized.
10986         * opts.c (decode_options): Do not warn about -Wuninitialized at -O0.
10987         * doc/invoke.texi (-Wuninitialized): Correct for enabling at -O0.
10988         * doc/passes.texi (Warn for uninitialized variables): Adjust.
10989
10990 2008-07-31  Jakub Jelinek  <jakub@redhat.com>
10991
10992         PR c/36970
10993         * builtins.c (maybe_emit_free_warning): New function.
10994         (expand_builtin): Process BUILT_IN_FREE even at -O0.  Call
10995         maybe_emit_free_warning for BUILT_IN_FREE.
10996
10997         PR debug/36278
10998         * dwarf2out.c (get_context_die): New function.
10999         (force_decl_die, force_type_die): Use it.
11000         (dwarf2out_imported_module_or_decl): Likewise.  If base_type_die
11001         returns NULL, force generation of DW_TAG_typedef and put that into
11002         DW_AT_import.
11003
11004         PR preprocessor/36649
11005         * c-pch.c (c_common_read_pch): Save and restore
11006         line_table->trace_includes across PCH restore.
11007
11008 2008-07-30  Eric Botcazou  <ebotcazou@adacore.com>
11009
11010         PR ada/36554
11011         * dwarf2out.c (is_subrange_type): Deal with BOOLEAN_TYPE.
11012
11013 2008-07-30  Rafael Ávila de Espíndola  <espindola@google.com>
11014
11015         PR 36974
11016         * final.c (call_from_call_insn): Handle COND_EXEC.
11017
11018 2008-07-30  H.J. Lu  <hongjiu.lu@intel.com>
11019
11020         * builtins.c (std_gimplify_va_arg_expr): Replace
11021         PREFERRED_STACK_BOUNDARY with MAX_SUPPORTED_STACK_ALIGNMENT.
11022         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
11023
11024 2008-07-30  Joey Ye  <joey.ye@intel.com>
11025             H.J. Lu  <hongjiu.lu@intel.com>
11026
11027         * builtins.c (expand_builtin_setjmp_receiver): Replace
11028         virtual_incoming_args_rtx with crtl->args.internal_arg_pointer.
11029         (expand_builtin_apply_args_1): Likewise.
11030         (expand_builtin_longjmp): Need DRAP for stack alignment.
11031         (expand_builtin_apply): Likewise.
11032
11033         * caller-save.c (setup_save_areas): Call assign_stack_local_1
11034         instead of assign_stack_local to allow alignment reduction.
11035
11036         * calls.c (emit_call_1): Need DRAP for stack alignment if
11037         return pops.
11038         (expand_call): Replace virtual_incoming_args_rtx with
11039         crtl->args.internal_arg_pointer.
11040         * stmt.c (expand_nl_goto_receiver): Likewise.
11041
11042         * cfgexpand.c (get_decl_align_unit): Estimate stack variable
11043         alignment and store to stack_alignment_estimated and
11044         max_used_stack_slot_alignment.
11045         (expand_one_var): Likewise.
11046         (expand_stack_alignment): New function.
11047         (tree_expand_cfg): Initialize max_used_stack_slot_alignment
11048         and stack_alignment_estimated fields in rtl_data.  Call
11049         expand_stack_alignment at end.
11050
11051         * defaults.h (INCOMING_STACK_BOUNDARY): New.
11052         (MAX_STACK_ALIGNMENT): Likewise.
11053         (MAX_SUPPORTED_STACK_ALIGNMENT): Likewise.
11054         (SUPPORTS_STACK_ALIGNMENT): Likewise.
11055
11056         * emit-rtl.c (gen_reg_rtx): Estimate stack alignment for
11057         stack alignment when generating virtual registers.
11058
11059         * function.c (assign_stack_local): Renamed to ...
11060         (assign_stack_local_1): This.  Add a parameter to indicate
11061         if it is OK to reduce alignment.
11062         (assign_stack_local): Use it.
11063         (instantiate_new_reg): Instantiate virtual incoming args rtx
11064         to vDRAP if stack realignment and DRAP is needed.
11065         (assign_parms): Collect parameter/return type alignment and
11066         contribute to stack_alignment_estimated.
11067         (locate_and_pad_parm): Likewise.
11068         (get_arg_pointer_save_area): Replace virtual_incoming_args_rtx
11069         with crtl->args.internal_arg_pointer.
11070
11071         * function.h (rtl_data): Add new field drap_reg,
11072         max_used_stack_slot_alignment, stack_alignment_estimated,
11073         stack_realign_needed, need_drap, stack_realign_processed and
11074         stack_realign_finalized.
11075         (stack_realign_fp): New macro.
11076         (stack_realign_drap): Likewise.
11077
11078         * global.c (compute_regsets): Frame pointer is needed when
11079         stack is realigned.  Can eliminate frame pointer when stack is
11080         realigned and dynamic realigned argument pointer isn't used.
11081
11082         * reload1.c (update_eliminables):  Frame pointer is needed
11083         when stack is realigned.
11084         (init_elim_table): Can eliminate frame pointer when stack is
11085         realigned and dynamic realigned argument pointer isn't used.
11086
11087         * rtl.h (assign_stack_local_1): Declare new funtion.
11088
11089         * target-def.h (TARGET_UPDATE_STACK_BOUNDARY): New.
11090         (TARGET_GET_DRAP_RTX): Likewise.
11091         (TARGET_CALLS): Add TARGET_UPDATE_STACK_BOUNDARY and
11092         TARGET_GET_DRAP_RTX.
11093
11094         * target.h (gcc_target): Add update_stack_boundary and get_drap_rtx.
11095
11096         * tree-vectorizer.c (vect_can_force_dr_alignment_p): Replace
11097         STACK_BOUNDARY with MAX_STACK_ALIGNMENT.
11098
11099 2008-07-30  Xuepeng Guo  <xuepeng.guo@intel.com>
11100             H.J. Lu  <hongjiu.lu@intel.com>
11101
11102         * dwarf2out.c (dw_fde_struct): Add stack_realignment, drap_reg,
11103         vdrap_reg, stack_realign and drap_reg_saved.
11104         (add_cfi): Don't allow redefining CFA when DRAP is used.
11105         (reg_save): Handle stack alignment.
11106         (dwarf2out_frame_debug_expr): Add rules 16-20 to handle stack
11107         alignment.  Don't generate DWARF information for (set fp sp)
11108         when DRAP is used.
11109         (dwarf2out_begin_prologue): Initialize drap_reg and vdrap_reg
11110         to INVALID_REGNUM.
11111         (int_loc_descriptor): Move prototype forward.  Also define if
11112         DWARF2_UNWIND_INFO is true.
11113         (output_cfa_loc): Handle DW_CFA_expression.
11114         (build_cfa_aligned_loc): New.
11115         (based_loc_descr): Update assert for stack realign.  For local
11116         variables, use sp+offset when stack is aligned without drap and
11117         fp+offset when stack is aligned with drap.  For arguments, use
11118         cfa+offset when drap is used to align stack.
11119
11120 2008-07-30  Joey Ye  <joey.ye@intel.com>
11121             H.J. Lu  <hongjiu.lu@intel.com>
11122
11123         * config/i386/i386.c (ix86_force_align_arg_pointer_string):
11124         Break long line.
11125         (ix86_gen_andsp): New.
11126         (ix86_user_incoming_stack_boundary): Likewise.
11127         (ix86_default_incoming_stack_boundary): Likewise.
11128         (ix86_incoming_stack_boundary): Likewise.
11129         (ix86_can_eliminate): Likewise.
11130         (find_drap_reg): Likewise.
11131         (ix86_update_stack_boundary): Likewise.
11132         (ix86_get_drap_rtx): Likewise.
11133         (ix86_finalize_stack_realign_flags): Likewise.
11134         (TARGET_UPDATE_STACK_BOUNDARY): Likewise.
11135         (TARGET_GET_DRAP_RTX): Likewise.
11136         (override_options): Overide option value for new options.
11137         (ix86_function_ok_for_sibcall): Remove check for
11138         force_align_arg_pointer.
11139         (ix86_handle_cconv_attribute): Likewise.
11140         (ix86_function_regparm): Likewise.
11141         (setup_incoming_varargs_64): Don't set stack_alignment_needed here.
11142         (ix86_va_start): Replace virtual_incoming_args_rtx with
11143         crtl->args.internal_arg_pointer.
11144         (ix86_select_alt_pic_regnum): Check DRAP register.
11145         (ix86_save_reg): Replace force_align_arg_pointer with drap_reg.
11146         (ix86_compute_frame_layout): Compute frame layout wrt stack
11147         realignment.
11148         (ix86_internal_arg_pointer): Just return virtual_incoming_args_rtx.
11149         (ix86_expand_prologue): Decide if stack realignment is needed
11150         and generate prologue code accordingly.
11151         (ix86_expand_epilogue): Generate epilogue code wrt stack
11152         realignment is really needed or not.
11153
11154         * config/i386/i386.h (MAIN_STACK_BOUNDARY): New.
11155         (ABI_STACK_BOUNDARY): Likewise.
11156         (PREFERRED_STACK_BOUNDARY_DEFAULT): Likewise.
11157         (STACK_REALIGN_DEFAULT): Likewise.
11158         (INCOMING_STACK_BOUNDARY): Likewise.
11159         (MAX_STACK_ALIGNMENT): Likewise.
11160         (ix86_incoming_stack_boundary): Likewise.
11161         (FORCE_PREFERRED_STACK_BOUNDARY_IN_MAIN): Removed.
11162         (REAL_PIC_OFFSET_TABLE_REGNUM): Updated to use BX_REG.
11163         (CAN_ELIMINATE): Defined with ix86_can_eliminate.
11164         (machine_function): Remove force_align_arg_pointer.
11165
11166         * config/i386/i386.md (BX_REG): New.
11167         (R13_REG): Likewise.
11168
11169         * config/i386/i386.opt (mforce_drap): New.
11170         (mincoming-stack-boundary): Likewise.
11171         (mstackrealign): Add Init(-1).
11172
11173         * config/i386/i386-protos.h (ix86_can_eliminate): New
11174
11175 2008-07-30  H.J. Lu  <hongjiu.lu@intel.com>
11176
11177         * doc/extend.texi: Update force_align_arg_pointer.
11178
11179         * doc/invoke.texi: Document -mincoming-stack-boundary.  Update
11180         -mstackrealign.
11181
11182         * doc/tm.texi (MAX_STACK_ALIGNMENT): Add macro.
11183         (INCOMING_STACK_BOUNDARY): Likewise.
11184         (TARGET_UPDATE_STACK_BOUNDARY): New target hook.
11185         (TARGET_GET_DRAP_RTX): Likewise.
11186
11187 2008-07-30  Andreas Schwab  <schwab@suse.de>
11188
11189         PR rtl-optimization/36929
11190         * dse.c (replace_inc_dec): Use emit_insn_before instead of
11191         add_insn_before and fix argument order.
11192         (replace_inc_dec_mem): Handle NULL rtx.
11193
11194 2008-07-30  Andrew Jenner  <andrew@codesourcery.com>
11195
11196         * config/arm/arm.c (arm_compute_static_chain_stack_bytes): New
11197         function.
11198         (arm_compute_initial_elimination_offset): Use it.
11199         (arm_compute_save_reg_mask): Include static chain save slot when
11200         calculating alignment.
11201         (arm_get_frame_offsets): Ditto.
11202         (thumb1_compute_save_reg_mask): Ensure we have a low register saved
11203         that we can use to decrement the stack when the stack decrement
11204         could be too big for an immediate value in a single insn.
11205         (thumb1_expand_prologue): Avoid using r12 for stack decrement.
11206
11207 2008-07-30  Richard Guenther  <rguenther@suse.de>
11208
11209         PR tree-optimization/36967
11210         * tree-predcom.c (remove_stmt): Use gimple_assign_ssa_name_copy_p.
11211         Release defs of statements we remove.
11212
11213 2008-07-30  Nathan Froyd  <froydnj@codesourcery.com>
11214
11215         * config/arm/arm.c (arm_expand_prologue): Use 0-length rtvec
11216         instead of NULL_RTVEC.
11217
11218 2008-07-30  Nathan Froyd  <froydnj@codesourcery.com>
11219
11220         PR target/35866
11221
11222         * config/rs6000/rs6000.h (SLOW_UNALIGNED_ACCESS): Add clause for
11223         vector modes.
11224
11225 2008-07-30  Rafael Ávila de Espíndola  <espindola@google.com>
11226
11227         * final.c (call_from_call_insn): New.
11228         (final_scan_insn): Call assemble_external on FUNCTION_DECLs.
11229
11230 2008-07-30  Paolo Bonzini  <bonzini@gnu.org>
11231
11232         * configure.ac: Substitute ADA_CFLAGS.
11233         * configure: Regenerate.
11234         * config.host: Remove mention of pa/x-ada and pa/x-ada-hpux10 files.
11235         * Makefile.in: Remove mention of X_* variables.
11236         * config/pa/x-ada-hpux10: Remove.
11237         * config/pa/x-ada: Remove.
11238
11239         * doc/fragments.texi: Update.
11240
11241 2008-07-30  Olivier Hainque  <hainque@adacore.com>
11242
11243         * config/mips/irix-crti.asm: .hide __gcc_init and __gcc_fini.
11244         * config/mips/iris6.h (IRIX_SUBTARGET_LINK_SPEC, irix ld): Hide
11245         __dso_handle explicitly here.
11246
11247 2008-07-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11248
11249         PR 34389
11250         * c-typeck.c (build_binary_op): Encapsulate code into...
11251         * c-common.c (shorten_binary_op): ...this new function.
11252         (conversion_warning): Use the new function. Handle non-negative
11253         constant in bitwise-and.
11254         * c-common.h (shorten_binary_op): Declare.
11255
11256 2008-07-30  Olivier Hainque  <hainque@adacore.com>
11257
11258         * scan.c (make_sstring_space): Add explicit conversions of
11259         allocator's return value.
11260         * fix-header.c (recognized_function): Likewise.
11261
11262 2008-07-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11263
11264         * doc/cpp.texi: Update to GFDL 1.2.
11265         * doc/gcc.texi: Do not list GPL as Invariant Section.
11266         * doc/gccint.texi: Likewise.  Update copyright years.
11267         * doc/install.texi: Update copyright years.
11268
11269 2008-07-30  Alan Modra  <amodra@bigpond.net.au>
11270
11271         PR target/36955
11272         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Add
11273         a use of pic_offset_table_rtx for -msecure-plt __tls_get_addr calls.
11274
11275 2008-07-29  Jan Hubicka  <jh@suse.cz>
11276
11277         * c-decl.c (merge_decls): Do not handle DECL_INLINE.
11278         (grokdeclarator): Likewise.
11279         * langhooks.c (lhd_warn_unused_global_decl): Use
11280         DECL_DECLARED_INLINE_P.
11281         * print-tree.c (print_node): Remove DECL_INLINE check.
11282
11283 2008-07-29  Richard Guenther  <rguenther@suse.de>
11284
11285         PR tree-optimization/36945
11286         * tree-ssa-sccvn.h (copy_reference_ops_from_ref): Declare.
11287         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Export.
11288         Record invariant addresses un-decomposed.
11289         (copy_reference_ops_from_call): Record reference call
11290         arguments properly.  Simplify.
11291         * tree-ssa-pre.c (create_component_ref_by_pieces_1): New
11292         helper split out from ...
11293         (create_component_ref_by_pieces): ... here.  Simplify.
11294         Prepare for recursive invocation for call arguments.
11295         (create_expression_by_pieces): Adjust call to
11296         create_component_ref_by_pieces.
11297         (compute_avail): Process operand 2 of reference ops.
11298
11299 2008-07-29  Richard Guenther  <rguenther@suse.de>
11300
11301         * gimplify.c (gimplify_expr): Clear TREE_SIDE_EFFECTS for OBJ_TYPE_REF.
11302
11303 2008-07-29  Jakub Jelinek  <jakub@redhat.com>
11304
11305         * c-format.c (check_format_types): Revert unwanted checkin.
11306
11307 2008-07-29  Jan Hubicka  <jh@suse.cz>
11308
11309         * flags.h (flag_really_no_inline): Remove.
11310         * cgraph.c (cgraph_function_possibly_inlined_p): Simplify.
11311         * toplev.c (flag_really_no_inline): Remove.
11312         * c-cppbuiltin.c (c_cpp_builtins): Use flag_no_inline.
11313         * ipa-inline.c (cgraph_decide_inlining): Do not check flag_no_inline.
11314         (cgraph_decide_inlining_incrementally): Likewise.
11315         (compute_inline_parameters): Likewise.
11316         * opts.c (decode_options): Simplify.
11317         * c-opts.c (c_common_post_options): Do not set flag_no_inline.
11318         * common.opt (finline): Initialize to 1.
11319         * tree-inline.c (inlinable_function_p): Check flag_no_inline.
11320
11321 2008-07-29  Jan Hubicka  <jh@suse.cz>
11322
11323         * predict.c (always_optimize_for_size_p): New function.
11324         (optimize_bb_for_size_p, optimize_bb_for_speed_p,
11325         optimize_edge_for_size_p, optimize_edge_for_speed_p,
11326         optimize_insn_for_size_p, optimize_insn_for_speed_p): New global
11327         functions.
11328         (rtl_profile_for_bb, rtl_profile_for_edge, rtl_default_profile): New.
11329         * function.c (prepare_function_start): Set default profile.
11330         * function.h (rtl_data): Add maybe_hot_insn_p.
11331         * cfgexpand.c (expand_gimple_basic_block): Set RTL profile.
11332         (construct_exit_block): Likewise.
11333         (tree_expand_cfg): Likewise.
11334         * basic-block.h
11335         (optimize_bb_for_size_p, optimize_bb_for_speed_p,
11336         optimize_edge_for_size_p, optimize_edge_for_speed_p,
11337         optimize_insn_for_size_p, optimize_insn_for_speed_p): Declare.
11338         (rtl_profile_for_bb, rtl_profile_for_edge, default_rtl_profile):
11339         Declare.
11340
11341 2008-07-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11342
11343         PR 34985
11344         * c-decl.c (merge_decls): Merge USED flags.
11345
11346 2008-07-29  Kaz Kojima  <kkojima@gcc.gnu.org>
11347
11348         * config/sh/sh.c (sh_gimplify_va_arg_expr): Unshare the addr,
11349         valist, next_fp, next_fp_tmp, next_fp_limit, next_o, next_o_limit,
11350         next_stack, lab_false and lab_over trees.
11351
11352 2008-07-28  Richard Guenther  <rguenther@suse.de>
11353
11354         PR tree-optimization/36957
11355         * tree-flow.h (tree_ssa_useless_type_conversion): Remove.
11356         (useless_type_conversion_p): Remove.
11357         (types_compatible_p): Remove.
11358         * gimple.h (tree_ssa_useless_type_conversion): Declare.
11359         (useless_type_conversion_p): Declare.
11360         (types_compatible_p): Declare.
11361         (gimple_expr_type): Return the base type only if it is
11362         trivially convertible to the subtype.
11363
11364 2008-07-28  Andreas Tobler  <a.tobler@schweiz.org>
11365
11366         * configure.ac: Use the m4_do macro to concatenate the warnings into
11367         one string in ACX_PROG_CC_WARNING_OPTS,
11368         ACX_PROG_CC_WARNING_ALMOST_PEDANTIC and
11369         ACX_PROG_CC_WARNINGS_ARE_ERRORS.
11370         * configure: Regenerate.
11371
11372 2008-07-28  Richard Guenther  <rguenther@suse.de>
11373
11374         * tree-ssa-pre.c (insert_into_preds_of_block): Remove dead code.
11375         (insert_fake_stores): Remove.
11376         (realify_fake_stores): Likewise.
11377         (execute_pre): Remove dead code.
11378         * tree-ssa-structalias.c (get_constraint_for_1): Remove tcc_unary case.
11379         (find_func_aliases): Deal with it here instead.
11380         Re-enable gcc_unreachable call.
11381
11382 2008-07-28  Richard Guenther  <rguenther@suse.de>
11383
11384         Merge from gimple-tuples-branch.
11385
11386         * ChangeLog.tuples: ChangeLog from gimple-tuples-branch.
11387         * gimple.def: New file.
11388         * gsstruct.def: Likewise.
11389         * gimple-iterator.c: Likewise.
11390         * gimple-pretty-print.c: Likewise.
11391         * tree-gimple.c: Removed.  Merged into ...
11392         * gimple.c: ... here.  New file.
11393         * tree-gimple.h: Removed.  Merged into ...
11394         * gimple.h: ... here.  New file.
11395
11396         * Makefile.in: Add dependencies on GIMPLE_H and tree-iterator.h.
11397         * configure.ac: Added support for ENABLE_GIMPLE_CHECKING and the
11398         --enable-checking=gimple flag.
11399         * config.in: Likewise.
11400         * configure: Regenerated.
11401
11402         * tree-ssa-operands.h: Tuplified.
11403         * tree-vrp.c: Likewise.
11404         * tree-loop-linear.c: Likewise.
11405         * tree-into-ssa.c: Likewise.
11406         * tree-ssa-loop-im.c: Likewise.
11407         * tree-dump.c: Likewise.
11408         * tree-complex.c: Likewise.
11409         * cgraphbuild.c: Likewise.
11410         * tree-ssa-threadupdate.c: Likewise.
11411         * tree-ssa-loop-niter.c: Likewise.
11412         * tree-pretty-print.c: Likewise.
11413         * tracer.c: Likewise.
11414         * gengtype.c: Likewise.
11415         * tree-loop-distribution.c: Likewise.
11416         * tree-ssa-loop-unswitch.c: Likewise.
11417         * cgraph.c: Likewise.
11418         * cgraph.h: Likewise.
11419         * tree-ssa-loop-manip.c: Likewise.
11420         * value-prof.c: Likewise.
11421         * tree-ssa-loop-ch.c: Likewise.
11422         * tree-tailcall.c: Likewise.
11423         * value-prof.h: Likewise.
11424         * tree.c: Likewise.
11425         * tree.h: Likewise.
11426         * tree-pass.h: Likewise.
11427         * ipa-cp.c: Likewise.
11428         * tree-scalar-evolution.c: Likewise.
11429         * tree-scalar-evolution.h: Likewise.
11430         * target.h: Likewise.
11431         * lambda-mat.c: Likewise.
11432         * tree-phinodes.c: Likewise.
11433         * diagnostic.h: Likewise.
11434         * builtins.c: Likewise.
11435         * tree-ssa-alias-warnings.c: Likewise.
11436         * cfghooks.c: Likewise.
11437         * fold-const.c: Likewise.
11438         * cfghooks.h: Likewise.
11439         * omp-low.c: Likewise.
11440         * tree-ssa-dse.c: Likewise.
11441         * ipa-reference.c: Likewise.
11442         * tree-ssa-uncprop.c: Likewise.
11443         * toplev.c: Likewise.
11444         * tree-gimple.c: Likewise.
11445         * tree-gimple.h: Likewise.
11446         * tree-chrec.c: Likewise.
11447         * tree-chrec.h: Likewise.
11448         * tree-ssa-sccvn.c: Likewise.
11449         * tree-ssa-sccvn.h: Likewise.
11450         * cgraphunit.c: Likewise.
11451         * tree-ssa-copyrename.c: Likewise.
11452         * tree-ssa-ccp.c: Likewise.
11453         * tree-ssa-loop-ivopts.c: Likewise.
11454         * tree-nomudflap.c: Likewise.
11455         * tree-call-cdce.c: Likewise.
11456         * ipa-pure-const.c: Likewise.
11457         * c-format.c: Likewise.
11458         * tree-stdarg.c: Likewise.
11459         * tree-ssa-math-opts.c: Likewise.
11460         * tree-ssa-dom.c: Likewise.
11461         * tree-nrv.c: Likewise.
11462         * tree-ssa-propagate.c: Likewise.
11463         * ipa-utils.c: Likewise.
11464         * tree-ssa-propagate.h: Likewise.
11465         * tree-ssa-alias.c: Likewise.
11466         * gimple-low.c: Likewise.
11467         * tree-ssa-sink.c: Likewise.
11468         * ipa-inline.c: Likewise.
11469         * c-semantics.c: Likewise.
11470         * dwarf2out.c: Likewise.
11471         * expr.c: Likewise.
11472         * tree-ssa-loop-ivcanon.c: Likewise.
11473         * predict.c: Likewise.
11474         * tree-ssa-loop.c: Likewise.
11475         * tree-parloops.c: Likewise.
11476         * tree-ssa-address.c: Likewise.
11477         * tree-ssa-ifcombine.c: Likewise.
11478         * matrix-reorg.c: Likewise.
11479         * c-decl.c: Likewise.
11480         * tree-eh.c: Likewise.
11481         * c-pretty-print.c: Likewise.
11482         * lambda-trans.c: Likewise.
11483         * function.c: Likewise.
11484         * langhooks.c: Likewise.
11485         * ebitmap.h: Likewise.
11486         * tree-vectorizer.c: Likewise.
11487         * function.h: Likewise.
11488         * langhooks.h: Likewise.
11489         * tree-vectorizer.h: Likewise.
11490         * ipa-type-escape.c: Likewise.
11491         * ipa-type-escape.h: Likewise.
11492         * domwalk.c: Likewise.
11493         * tree-if-conv.c: Likewise.
11494         * profile.c: Likewise.
11495         * domwalk.h: Likewise.
11496         * tree-data-ref.c: Likewise.
11497         * tree-data-ref.h: Likewise.
11498         * tree-flow-inline.h: Likewise.
11499         * tree-affine.c: Likewise.
11500         * tree-vect-analyze.c: Likewise.
11501         * c-typeck.c: Likewise.
11502         * gimplify.c: Likewise.
11503         * coretypes.h: Likewise.
11504         * tree-ssa-phiopt.c: Likewise.
11505         * calls.c: Likewise.
11506         * tree-ssa-coalesce.c: Likewise.
11507         * tree.def: Likewise.
11508         * tree-dfa.c: Likewise.
11509         * except.c: Likewise.
11510         * except.h: Likewise.
11511         * cfgexpand.c: Likewise.
11512         * tree-cfgcleanup.c: Likewise.
11513         * tree-ssa-pre.c: Likewise.
11514         * tree-ssa-live.c: Likewise.
11515         * tree-sra.c: Likewise.
11516         * tree-ssa-live.h: Likewise.
11517         * tree-predcom.c: Likewise.
11518         * lambda.h: Likewise.
11519         * tree-mudflap.c: Likewise.
11520         * ipa-prop.c: Likewise.
11521         * print-tree.c: Likewise.
11522         * tree-ssa-copy.c: Likewise.
11523         * ipa-prop.h: Likewise.
11524         * tree-ssa-forwprop.c: Likewise.
11525         * ggc-page.c: Likewise.
11526         * c-omp.c: Likewise.
11527         * tree-ssa-dce.c: Likewise.
11528         * tree-vect-patterns.c: Likewise.
11529         * tree-ssa-ter.c: Likewise.
11530         * tree-nested.c: Likewise.
11531         * tree-ssa.c: Likewise.
11532         * lambda-code.c: Likewise.
11533         * tree-ssa-loop-prefetch.c: Likewise.
11534         * tree-inline.c: Likewise.
11535         * tree-inline.h: Likewise.
11536         * tree-iterator.c: Likewise.
11537         * tree-optimize.c: Likewise.
11538         * tree-ssa-phiprop.c: Likewise.
11539         * tree-vect-transform.c: Likewise.
11540         * tree-object-size.c: Likewise.
11541         * tree-outof-ssa.c: Likewise.
11542         * cfgloop.c: Likewise.
11543         * system.h: Likewise.
11544         * tree-profile.c: Likewise.
11545         * cfgloop.h: Likewise.
11546         * c-gimplify.c: Likewise.
11547         * c-common.c: Likewise.
11548         * tree-vect-generic.c: Likewise.
11549         * tree-flow.h: Likewise.
11550         * c-common.h: Likewise.
11551         * basic-block.h: Likewise.
11552         * tree-ssa-structalias.c: Likewise.
11553         * tree-switch-conversion.c: Likewise.
11554         * tree-ssa-structalias.h: Likewise.
11555         * tree-cfg.c: Likewise.
11556         * passes.c: Likewise.
11557         * ipa-struct-reorg.c: Likewise.
11558         * ipa-struct-reorg.h: Likewise.
11559         * tree-ssa-reassoc.c: Likewise.
11560         * cfgrtl.c: Likewise.
11561         * varpool.c: Likewise.
11562         * stmt.c: Likewise.
11563         * tree-ssanames.c: Likewise.
11564         * tree-ssa-threadedge.c: Likewise.
11565         * langhooks-def.h: Likewise.
11566         * tree-ssa-operands.c: Likewise.
11567         * config/alpha/alpha.c: Likewise.
11568         * config/frv/frv.c: Likewise.
11569         * config/s390/s390.c: Likewise.
11570         * config/m32c/m32c.c: Likewise.
11571         * config/m32c/m32c-protos.h: Likewise.
11572         * config/spu/spu.c: Likewise.
11573         * config/sparc/sparc.c: Likewise.
11574         * config/i386/i386.c: Likewise.
11575         * config/sh/sh.c: Likewise.
11576         * config/xtensa/xtensa.c: Likewise.
11577         * config/stormy16/stormy16.c: Likewise.
11578         * config/ia64/ia64.c: Likewise.
11579         * config/rs6000/rs6000.c: Likewise.
11580         * config/pa/pa.c: Likewise.
11581         * config/mips/mips.c: Likewise.
11582
11583 2008-07-28  Simon Baldwin  <simonb@google.com>
11584
11585         * c-pragma.c (handle_pragma_message): New function.
11586         (init_pragma): Register handle_pragma_message.
11587         * doc/extend.texi (Diagnostic Pragmas): Added #pragma message
11588         documentation.
11589
11590 2008-07-27  Victor Kaplansky  <victork@il.ibm.com>
11591
11592         PR tree-optimization/35252
11593         * tree-vect-analyze.c (vect_build_slp_tree): Make IMAGPART_EXPR and
11594         REALPART_EXPR to be considered as same load operation.
11595
11596 2008-07-27  Eric Botcazou  <ebotcazou@adacore.com>
11597
11598         PR tree-optimization/36830
11599         * tree-ssa-sccvn.c (vn_reference_op_compute_hash): Hash operand #2.
11600         (expressions_equal_p): Return false if only one operand is null.
11601
11602 2008-07-26  Gerald Pfeifer  <gerald@pfeifer.com>
11603
11604         * doc/install.texi (powerpc-*-netbsd*): Remove redundant texinfo
11605         version requirements.
11606
11607 2008-07-26  Olivier Hainque  <hainque@adacore.com>
11608
11609         * collect2.c (symkind): New enum.  Symbol kinds we care about.
11610         (is_ctor_dtor): Return symkind instead of int.  Adjust prototype,
11611         code and head comment accordingly.
11612         (scan_prog_file): Use symkind names instead of bare integers.
11613
11614 2008-07-25  Jan Hubicka  <jh@suse.cz>
11615
11616         * cgraph.c (cgraph_function_possibly_inlined_p): Do not rely on
11617         DECL_INLINE.
11618         * cgraphunit.c (record_cdtor_fn): Do not initialize DECL_INLINE
11619         (cgraph_preserve_function_body_p): Do not rely on DECL_INLINE.
11620         * dojump.c (clear_pending_stack_adjust): Likewise.
11621         * print-tree.c (print_node): Ignore DECL_INLINE.
11622         * tree-inline.c (inlinable_function_p): Likewise.
11623
11624 2008-07-25  Michael Meissner  <gnu@the-meissners.org>
11625
11626         * doc/extend.texi (hot attribute): Document that the hot attribute
11627         turns on -O3 for some ports.
11628         (cold attribute): Document that the cold attribute turns on -Os
11629         for some ports
11630
11631         * doc/tm.texi (OPTIMIZATION_OPTIONS): Update documentation to
11632         reflect function specific option support.
11633
11634         * target.h (struct target_option_hooks): Add fields to say whether
11635         the cold attribute implies -Os and the hot attribute implies -O3.
11636
11637         * target-def.h (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION):
11638         By default, do not turn on -Os for cold functions.
11639         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): By default, do
11640         not turn on -O3 for hot functions.
11641
11642         * c-common.c (handle_hot_attribute): Use target hook to determine
11643         if hot functions should enable -O3.
11644         (handle_cold_attribute): Use target hook to determine if cold
11645         functions should enable -Os.
11646
11647         * config/i386/i386.c (ix86_target_string): Add -m3dnowa support.
11648         (override_options): Move disable scheduling to
11649         optimization_options.
11650         (optimization_options): Disable scheduling here, not
11651         override_options.
11652         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Define.
11653         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Define.
11654
11655         * config/ia64/ia64.c (ia64_override_options): Move setting
11656         scheduling flags to ia64_optimization_options.
11657         (ia64_optimization_options): Disable scheduling options here, and
11658         not in ia64_override_options.
11659         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Define.
11660         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Define.
11661
11662 2008-07-25  H.J. Lu  <hongjiu.lu@intel.com>
11663
11664         PR target/36936
11665         * config/i386/i386.c (override_options): Don't clear TARGET_CMOVE.
11666
11667 2008-07-25  Martin Jambor  <mjambor@suse.cz>
11668
11669         PR tree-optimization/36926
11670         * ipa-prop.c (ipa_analyze_call_uses): Call
11671         ipa_is_ssa_with_stmt_def instead of SSA_NAME_IS_DEFAULT_DEF.
11672
11673 2008-07-25  Joseph Myers  <joseph@codesourcery.com>
11674
11675         * config/arm/iwmmxt.md (movv8qi_internal, movv4hi_internal,
11676         movv2si_internal): Add mem = reg alternative.
11677
11678 2008-07-25  Andreas Tobler  <a.tobler@schweiz.org>
11679
11680         PR bootstrap/36918
11681         * config/sparc/sparc.h (DEFAULT_PCC_STRUCT_RETURN): Define
11682         DEFAULT_PCC_STRUCT_RETURN to 127.
11683
11684 2008-07-24  Jan Hubicka  <jh@suse.cz>
11685
11686         * cgraphbuild.c (record_reference): Drop non-unit-at-a-time code.
11687         (build_cgraph_edges): Likewise.
11688         * cgraph.c (cgraph_node): Do not update assembler hash.
11689         (cgraph_remove_node): Drop non-unit-at-a-time code.
11690         * tree-pass.h (pass_O0_always_inline): Remove.
11691         * ipa-reference.c (gate_reference): Remove unit-at-a-time check.
11692         * toplev.c (process_options): Flag unit-at-a-time does not imply
11693         no section anchors.
11694         * cgraphunit.c: Update comments.
11695         (decide_is_function_needed): Drop non-unit-at-a-time mode.
11696         (cgraph_assemble_pending_functions): Remove.
11697         (cgraph_reset_node): Drop non-unit-at-a-time code.
11698         (cgraph_finalize_function): Likewise.
11699         (cgraph_analyze_function): Likewise.
11700         (cgraph_finalize_compilation_unit): Likewise.
11701         (cgraph_expand_function): Likewise.
11702         (cgraph_optimize): Likesise.
11703         (save_inline_function_body): Likewise.
11704         * ipa-pure-const.c (gate_pure_const): Drop flag_unit_at_a_time check.
11705         * tree-ssa-alias.c (maybe_be_aliased): Likewise.
11706         * ipa-inline.c: Update comments.
11707         (enum inlining_mode): remove INLINE_SPEED.
11708         (cgraph_clone_inlined_nodes): Drop unit-at-a-time check.
11709         (cgraph_mark_inline_edge): Likewise.
11710         (try_inline): Likewise.
11711         (cgraph_decide_inlining_incrementally): Likewise.
11712         (cgraph_gate_inlining): Remove.
11713         (cgraph_early_inlining): Remove flag_unit_at_a_time checks.
11714         (cgraph_gate_early_inlining): Likewise.
11715         (gate_inline_passes): Remove.
11716         (pass_inline_parameters, pass_ipa_inline): Remove gates.
11717         (cgraph_gate_O0_always_inline, cgraph_O0_always_inline,
11718         pass_O0_always_inline): Remove.
11719         * c-pch.c (c_pch_matching): Remove -funit-at-a-time.
11720         * dwarf2out.c (reference_to_unused): Remove flag_unit_at_a_time check.
11721         * opts.c (no_unit_at_a_time_default): Remove.
11722         (decode_options): Remove flag_unit_at_a_time reset and warning.
11723         * opts.h (no_unit_at_a_time_default): Remove.
11724         * c-decl.c (diagnose_mismatched_decls): Do not require inline keyword
11725         early in GNU dialect.
11726         (merge_decls): Update comment; drop unit-at-a-time check.
11727         (finish_decl): Likewise.
11728         (grok_declaration): Remove flag_inline_trees code.
11729         (finish_functions): Return on function returning non-void on all
11730         statics.
11731         * ipa-tye-escape.c (gate_type_escape_vars): Remove.
11732         * cfgexpand.c (expand_one_static_var): Remove.
11733         (expand_one_var): Remove expand_one_static_var call.
11734         (expand_used_vars_for_block): Remove flag_unit_a_time check.
11735         * c-opts.c (c_common_post_options): Remove flag_inline_trees code
11736         and flag_unit_at_a-time compatibility checks.
11737         * varasm.c (assemble_alias): Remove flag_unit_at_a_time check.
11738         * tree-inline.c (flag_inline_trees): Remove.
11739         (inlinable_function_p): Don't check it.
11740         (expand_call_inline): Remove non-unit-at-a-time code.
11741         * tree-inline.h (flag_inline_trees): Remove.
11742         * tree-optimize.c (execute_early_local_optimizations): Remove
11743         unit-at-a-time checks.
11744         (tree_rest_of_compilation): Likewise.
11745         * combine.c (setup_incoming_promotions): Likewise.
11746         * tree-profile.c (tree_gen_ic_func_profiler): Likewise.
11747         * tree-ssa-structalias.c (delete_points_to_sets): Likewise.
11748         * passes.c (pass_inline_parameters): Update comments; remove
11749         O0_alwaysinline pass.
11750         (execute_one_ipa_transform_pass): Do not reset in_gimple_form.
11751         (execute_one_pass): Likewise.
11752         * i386.c (ix86_function_regparm): Remove unit-at-a-time check.
11753         (ix86_function_sseregparm): Likewise.
11754         * arm.c (arm_function_in_section_p): Likewise.
11755         * bfin.c (bfin_load_pic_reg, bfin_function_ok_for_sibcall): Likewise.
11756         * varpool.c: Update comments.
11757         (decide_is_variable_needed): Remove unit-at-a-time checks.
11758         (varpool_finalize_decl): Likewise.
11759
11760 2008-07-24  Kaz Kojima  <kkojima@gcc.gnu.org>
11761
11762         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Set flag_omit_frame_pointer
11763         to 2 instead of -1.
11764         (OVERRIDE_OPTIONS): Check if flag_omit_frame_pointer is equal to 2.
11765
11766 2008-07-24  Kai Tietz  <kai.tietz@onevision.com>
11767
11768         * config/i386/i386.c (get_dllimport_decl): Treat user_label_prefix for
11769         imp symbol extension.
11770
11771         2008-07-23  Ian Lance Taylor  <iant@google.com>
11772
11773         * tree-vrp.c (infer_value_range): Ignore asm statements when
11774         looking for memory accesses for -fdelete-null-pointer-checks.
11775
11776 2008-07-24  Ben Elliston  <bje@au.ibm.com>
11777
11778         * config/spu/spu-c.c (__vector_keyword): New variable.
11779         (vector_keyword): Likewise.
11780         (spu_categorize_keyword): New function.
11781         (spu_macro_to_expand): Likewise.
11782         (spu_cpu_cpp_builtins): Enable context-sensitive macros if not
11783         compiling an ISO C dialect.
11784
11785 2008-07-24  Ben Elliston  <bje@au.ibm.com>
11786
11787         * config/rs6000/rs6000-c.c: Move GTY(()) markers to match
11788         conventional usage.
11789
11790 2008-07-23  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
11791
11792         * configure: Regenerate.
11793         * configure.ac: Require texinfo 4.7.
11794         * doc/install.texi: Document texinfo 4.7 requirement.
11795
11796 2008-07-23  Martin Jambor  <mjambor@suse.cz>
11797
11798         * ipa-cp.c (ipcp_print_edge_profiles): Test for node->analyzed
11799         rather than for DECL_SAVED_TREE.
11800         * ipa-prop.c: Include diagnostic.h.
11801         (ipa_check_stmt_modifications): Check LHS of GIMPLE_MODIFY_EXPRs
11802         thoroughly.
11803         (ipa_detect_param_modifications): Function rewritten from scratch.
11804         (ipa_compute_jump_functions): Changed accesses to modification flags.
11805         (ipa_free_node_params_substructures): Update flags destruction.
11806         (ipa_node_duplication_hook): Update flags duplication.
11807         (ipa_print_all_params_modified): Updated flag access.
11808         * ipa-prop.h (struct ipa_param_flags): New structure.
11809         (struct ipa_node_params): New field modification_analysis_done,
11810         modified_flags changed into param_flags.
11811         (ipa_is_ith_param_modified): Changed to use new flags.
11812         * Makefile.in (ipa-prop.o): Add $(DIAGNOSTIC_H) to dependencies.
11813
11814         * ipa-prop.c (ipa_print_all_jump_functions): Moved here from
11815         ipa-cp.c and split into two functions.
11816         (ipa_print_node_jump_functions): New function.
11817         (compute_scalar_jump_functions): New function.
11818         (type_like_member_ptr_p): New function.
11819         (compute_pass_through_member_ptrs): New function.
11820         (fill_member_ptr_cst_jump_function): New function.
11821         (determine_cst_member_ptr): New function.
11822         (compute_cst_member_ptr_arguments): New function.
11823         (ipa_compute_jump_functions): Complete rewrite.
11824         * ipa-prop.h (enum jump_func_type): Make explicit that we depend
11825         on IPA_UNKNOWN being zero. Added value IPA_CONST_MEMBER_PTR.
11826         (struct ipa_member_ptr_cst): New structure.
11827         (union jump_func_value): New field member_cst.
11828         * ipa-cp.c (ipcp_lat_is_insertable): New function.
11829         (ipcp_lattice_from_jfunc): Produces bottom lattices for unhandled
11830         jump function types.
11831         (ipcp_print_all_lattices): Slight fprintf rearrangement.
11832         (ipcp_print_all_structures): Call ipa_print_all_jump_functions
11833         instead of ipcp_print_all_jump_functions.
11834         (ipcp_insert_stage): Use ipcp_lat_is_insertable, create replace maps
11835         only for replacable scalars.
11836
11837         * doc/invoke.texi (Optimize options): Add description of
11838         -findirect-inlining.
11839         * common.opt (flag_indirect_inlining): New flag.
11840         * opts.c (decode_options): Set flag_indirect_inlining when
11841         optimize >= 3.
11842
11843         * ipa-inline.c: Include ipa-prop.h.
11844         (inline_indirect_intraprocedural_analysis): New function.
11845         (inline_generate_summary): Allocate parameter and argument info
11846         structures, call inline_indirect_intraprocedural_analysis on each
11847         node when doing indirect inlining and deallocate indirect inlining
11848         data structures in the end.
11849         * ipa-prop.c (ipa_create_param_decls_array): Return if already done.
11850         (free_all_ipa_structures_after_iinln): New function.
11851         (free_all_ipa_structures_after_ipa_cp): Checks whether iinln will be
11852         done.
11853         * Makefile.in (ipa-inline.o): Added $(IPA_PROP_H) to dependencies.
11854
11855         * cgraphbuild.c (compute_call_stmt_bb_frequency): New function.
11856         (build_cgraph_edges): Call compute_call_stmt_bb_frequency instead
11857         of computing the frequency separately.
11858         (rebuild_cgraph_edges): Call compute_call_stmt_bb_frequency instead
11859         of computing the frequency separately.
11860         * ipa-cp.c (ipcp_print_all_structures): Replace a call to
11861         ipa_print_all_param_modified with a call to ipa_print_all_param_flags.
11862         * ipa-prop.c (ipa_get_member_ptr_load_param): New function.
11863         (ipa_get_stmt_member_ptr_load_param): New function.
11864         (ipa_is_ssa_with_stmt_def): New function.
11865         (ipa_note_param_call): New function.
11866         (ipa_analyze_call_uses): New function.
11867         (ipa_analyze_stmt_uses): New function.
11868         (ipa_analyze_params_uses): New function.
11869         (ipa_free_node_params_substructures): Also free the param_calls linked
11870         list.
11871         (ipa_node_duplication_hook): Also duplicate the param_calls
11872         linked list.
11873         (ipa_print_node_param_flags): New function.
11874         (ipa_print_all_params_modified): Renamed to ipa_print_all_param_flags.
11875         (ipa_print_all_param_flags): Calls ipa_print_node_param_flags.
11876         * ipa-prop.h (struct ipa_param_flags): New field called.
11877         (struct ipa_param_call_note): New structure.
11878         (struct ipa_node_params): New fields param_calls and
11879         uses_analysis_done.
11880         (ipa_is_ith_param_called): New function.
11881         * ipa-inline.c (inline_indirect_intraprocedural_analysis): Call
11882         ipa_analyze_params_uses and dump parameter flags.
11883
11884         * ipa-inline.c (cgraph_decide_recursive_inlining): Call
11885         ipa_propagate_indirect_call_infos if performing indirect inlining,
11886         pass a new parameter new_edges to it.
11887         (add_new_edges_to_heap): New fucntion.
11888         (cgraph_decide_inlining_of_small_functions): New vector
11889         new_indirect_edges for newly found indirect edges , call
11890         ipa_propagate_indirect_call_infos after inlining.
11891         (cgraph_decide_inlining): Call ipa_propagate_indirect_call_infos after
11892         inlining if performing indirect inlining.  Call
11893         free_all_ipa_structures_after_iinln when doing so too.
11894         (inline_generate_summary): Do not call
11895         free_all_ipa_structures_after_iinln here.
11896         * ipa-prop.c (update_jump_functions_after_inlining): New function.
11897         (print_edge_addition_message): New function.
11898         (update_call_notes_after_inlining): New function.
11899         (propagate_info_to_inlined_callees): New function.
11900         (ipa_propagate_indirect_call_infos): New function.
11901         * ipa-prop.h: Include cgraph.h
11902         (struct ipa_param_call_note): Fields reordered, new field processed.
11903         * cgraph.h (cgraph_edge): Shrink loop_nest field to 31 bits, add a new
11904         flag indirect_call.
11905         * cgraphunit.c (verify_cgraph_node): Allow indirect edges not to have
11906         rediscovered call statements.
11907         * cgraph.c (cgraph_create_edge): Initialize indirect_call to zero.
11908         (dump_cgraph_node): Dump also the indirect_call flag.
11909         (cgraph_clone_edge): Copy also the indirect_call flag.
11910         * tree-inline.c (copy_bb): Do not check for fndecls from call
11911         expressions, check for edge availability when moving clones.
11912         (get_indirect_callee_fndecl): New function.
11913         (expand_call_inline): If callee declaration is not apprent from
11914         the statement, try calling get_indirect_callee_fndecl.  Do not
11915         issue warnings or call sorry when not inlinings an indirect edge.
11916         * Makefile.in (IPA_PROP_H): Added $(CGRAPH_H) to dependencies.
11917
11918         * ipa-prop.c (ipa_print_node_param_flags): Make the dump format a
11919         bit more frandly to matching.
11920         * testsuite/g++.dg/ipa/iinline-1.C: New testcase.
11921         * testsuite/gcc.dg/ipa/iinline-1.c: New testcase.
11922         * testsuite/gcc.dg/ipa/modif-1.c: New testcase.
11923
11924 2008-07-23  Michael Meissner  <gnu@the-meissners.org>
11925
11926         PR 36907
11927         * opth-gen.awk: Suppress function specific features when building
11928         target libraries.
11929         * optc-gen.awk: Ditto.
11930
11931 2008-07-23  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11932
11933         PR 35058
11934         * diagnostic.c (pedwarn): Add opt parameter.
11935         (pedwarn0): New.
11936         * c-tree.h (pedwarn_init): Add opt parameter.
11937         (pedwarn_c90): Likewise.
11938         (pedwarn_c99): Likewise.
11939         * c-errors.c (pedwarn_c99): Likewise.
11940         (pedwarn_c90): Likewise.
11941         * toplev.h (pedwarn): Update declaration.
11942         (pedwarn0): Declare.
11943         * c-lex.c: All calls to pedwarn changed.
11944         * builtins.c: All calls to pedwarn changed.
11945         * toplev.c: All calls to pedwarn changed.
11946         * c-decl.c: All calls to pedwarn changed.
11947         * c-typeck.c: All calls to pedwarn changed.
11948         * c-common.c: All calls to pedwarn changed.
11949         * c-parser.c: All calls to pedwarn changed.
11950
11951 2008-07-23  Michael Meissner  <gnu@the-meissners.org>
11952             Karthik Kumar  <karthikkumar@gmail.com>
11953
11954         * attribs.c (file scope): Include c-common.h.
11955         (decl_attributes): Add support for #pragma GCC optimize and
11956         #pragma GCC option.
11957
11958         * targhooks.c (default_can_inline_p): New function that is the
11959         default for the TARGET_CAN_INLINE_P target hook.
11960
11961         * targhooks.h (default_can_inline_p): Add declaration.
11962
11963         * tree.c (cl_optimization_node): New static tree for building
11964         OPTIMIZATION_NODE tree.
11965         (cl_target_option_node): New static tree for building
11966         TARGET_OPTION_NODE tree.
11967         (cl_option_hash_table): New hash table for hashing
11968         OPTIMIZATION_NODE and TARGET_OPTION_NODE trees.
11969         (cl_option_hash_hash): New function to provide the hash value for
11970         OPTIMIZATION_NODE and TARGET_OPTION_NODE trees.
11971         (cl_option_hash_eq): New function to provide an equality test for
11972         OPTIMIZATION_NODE and TARGET_OPTION_NODE trees.
11973         (tree_code_size): Add support for OPTIMIZATION_NODE and
11974         TARGET_OPTION_NODE trees.
11975         (tree_code_structure): Add support for OPTIMIZATION_NODE and
11976         TARGET_OPTION_NODE trees.
11977         (build_optimization_node): Build a tree that has all of the
11978         current optimization options.
11979         (build_target_option_node): Build a tree that has the target
11980         options that might be changed on a per function basis.
11981
11982         * tree.h (file scope): Include options.h.
11983         (DECL_FUNCTION_SPECIFIC_TARGET): New accessor macro.
11984         (DECL_FUNCTION_SPECIFIC_OPTIMIZATION): Ditto.
11985         (TREE_OPTIMIZATION): Ditto.
11986         (TREE_TARGET_SPECIFIC): Ditto.
11987         (struct tree_function_decl): Add fields for remembering the
11988         current optimization options and target specific options.
11989         (struct tree_optimization_option): New tree variant that remembers
11990         the optimization options.
11991         (struct tree_target_option): New tree variant that remembers the
11992         target specific flags that might change for compiling a particular
11993         function.
11994         (union tree_node): Include tree_optimization_option and
11995         tree_target_option fields.
11996         (enum tree_index): Add TI_OPTIMIZATION_DEFAULT,
11997         TI_OPTIMIZATION_CURRENT, TI_OPTIMIZATION_COLD,
11998         TI_OPTIMIZATION_HOT, TI_TARGET_OPTION_DEFAULT,
11999         TI_TARGET_OPTION_CURRENT, TI_CURRENT_OPTION_PRAGMA,
12000         TI_CURRENT_OPTIMIZE_PRAGMA entries for saving function specific
12001         optimization and target options.
12002         (optimization_default_node): New macro to refer to global_trees
12003         field.
12004         (optimization_current_node): Ditto.
12005         (optimization_cold_node): Ditto.
12006         (optimization_hot_node): Ditto.
12007         (target_option_default_node): Ditto.
12008         (target_option_current_node): Ditto.
12009         (current_option_pragma): Ditto.
12010         (current_optimize_pragma): Ditto.
12011
12012         * target.h (struct gcc_target): Add valid_option_attribute_p,
12013         target_option_save, target_option_restore, target_option_print,
12014         target_option_pragma_parse, and can_inline_p hooks.
12015
12016         * toplev.h (parse_optimize_options): Add declaration.
12017         (fast_math_flags_struct_set_p): Ditto.
12018
12019         * c-cppbuiltin.c (c_cpp_builtins_optimize_pragma): New function to
12020         adjust the current __OPTIMIZE__, etc. macros when #pragma GCC
12021         optimize is used.
12022
12023         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Call
12024         tree_can_inline_p hook to see if one function can inline another.
12025         (cgraph_decide_inlining): Ditto.
12026         (cgraph_decide_inlining_incrementally): Ditto.
12027
12028         * opts.c (decode_options): Add support for running multiple times
12029         to allow functions with different target or optimization options
12030         than was specified on the command line.
12031         (fast_math_flags_struct_set_p): New function that is similar to
12032         fast_math_flags_set_p, except it uses the values in the
12033         cl_optimization structure instead of global variables.
12034
12035         * optc-gen.awk: Add support for TargetSave to allow a back end to
12036         declare new fields that need to be saved when using function
12037         specific options.  Include flags.h and target.h in the options.c
12038         source.  Add support for Save to indicate which options can be set
12039         for individual functions.  Generate cl_optimize_save,
12040         cl_optimize_restore, cl_optimize_print, cl_target_option_save,
12041         cl_target_option_restore, cl_target_option_print functions to
12042         allow functions to use different optimization or target options.
12043
12044         * opt-functions.awk (var_type_struct): Return the type used for
12045         storing the field in a structure.
12046
12047         * opth-gen.awk: Add support for TargetSave to allow a back end to
12048         declare new fields that need to be saved when using function
12049         specific options.  Add support for Save to indicate which options
12050         can be set for individual functions.  Only generate one extern for
12051         Mask fields.  Generate cl_optimization and cl_target_option
12052         structures to remember optimization and target options.
12053
12054         * treestruct.def (TS_OPTIMIZATION): Add support for garbage
12055         collecting new tree nodes.
12056         (TS_TARGET_OPTION): Ditto.
12057
12058         * c-decl.c (merge_decls): Merge function specific target and
12059         optimization options.
12060
12061         * function.c (invoke_set_current_function_hook): If the function
12062         uses different optimization options, change the global variables
12063         to reflect this.
12064
12065         * coretypes.h (struct cl_optimization): Add forward reference.
12066         (struct cl_target_option): Ditto.
12067
12068         * c-pragma.c (option_stack): New static vector to remember the
12069         current #pragma GCC option stack.
12070         (handle_pragma_option): New function to support #pragma GCC option
12071         to change target options.
12072         (optimize_stack): New static vector to remember the current
12073         #pragma GCC optimize stack.
12074         (handle_pragma_optimize): New function to support #pragma GCC
12075         optimize to change optimization options.
12076         (init_pragma): Add support for #pragma GCC optimize and #pragma
12077         GCC option.
12078
12079         * tree.def (OPTIMIZATION_NODE): New tree code for remembering
12080         optimization options.
12081         (TARGET_OPTION_NODE): New tree code for remembering certain target
12082         options.
12083
12084         * print-tree.c (print_node): Add support for OPTIMIZATION_NODE and
12085         TARGET_OPTION_NODE trees.
12086
12087         * common.opt (-O): Add Optimization flag.
12088         (-Os): Ditto.
12089         (-fmath-errno): Ditto.
12090         (-falign-functions): Add UInteger flag to make sure flag gets full
12091         int in cl_optimization structure.
12092         (-falign-jumps): Ditto.
12093         (-falign-labels): Ditto.
12094         (-falign-loops): Ditto.
12095         (-fsched-stalled-insns): Ditto.
12096         (-fsched-stalled-insns-dep): Ditto.
12097
12098         * target-def.h (TARGET_VALID_OPTION_ATTRIBUTE_P): Add default
12099         definition.
12100         (TARGET_OPTION_SAVE): Ditto.
12101         (TARGET_OPTION_RESTORE): Ditto.
12102         (TARGET_OPTION_PRINT): Ditto.
12103         (TARGET_OPTION_PRAGMA_PARSE): Ditto.
12104         (TARGET_CAN_INLINE_P): Ditto.
12105         (TARGET_INITIALIZER): Add new hooks.
12106
12107         * tree-inline.c (tree_can_inline_p): New function to determine
12108         whether one function can inline another.  Check if the functions
12109         use compatible optimization options, and also call the backend
12110         can_inline_p hook.
12111
12112         * tree-inline.h (tree_can_inline_p): Add declaration.
12113
12114         * c-common.c (c_common_attribute): Add support for option and
12115         optimize attributes.
12116         (handle_option_attribute): Add support for the option attribute to
12117         allow the user to specify different target options for compiling a
12118         specific function.
12119         (handle_optimize_attribute): Add support for the optimize
12120         attribute to allow the user to specify different optimization
12121         options for compiling a specific function.
12122         (handle_hot_attribute): Turn on -O3 optimization for this one
12123         function if it isn't the default optimization level.
12124         (handle_cold_attribute): Turn on -Os optimization for this one
12125         function if it insn't the default optimization.
12126         (const_char_p): New const char * typedef.
12127         (optimize_args): New static vector to remember the optimization
12128         arguments.
12129         (parse_optimize_options): New function to set up the optimization
12130         arguments from either the optimize attribute or #pragma GCC optimize.
12131
12132         * c-common.h (c_cpp_builtins_optimize_pragma): Add declaration.
12133         (builtin_define_std): Ditto.
12134
12135         * config.gcc (i[3467]86-*-*): Add i386-c.o to C/C++ languages.
12136         Add t-i386 Makefile fragment to add i386-c.o and i386.o dependencies.
12137         (x86_64-*-*): Ditto.
12138
12139         * Makefile.in (TREE_H): Add options.h.
12140         (options.o): Add $(TARGET_H) $(FLAGS_H) dependencies.
12141
12142         * doc/extend.texi (option attribute): Document new attribute.
12143         (optimize attribute): Ditto.
12144         (hot attribute): Document hot attribute sets -O3.
12145         (cold attribute): Document cold attribute sets -Os.
12146         (#pragma GCC option): Document new pragma.
12147         (#pragma GCC optimize): Ditto.
12148
12149         * doc/options.texi (TargetSave): Document TargetSave syntax.
12150         (UInteger): Document UInteger must be used for certain flags.
12151         (Save): Document Save option to create target specific options
12152         that can be saved/restored on a function specific context.
12153
12154         * doc/c-tree.texi (DECL_FUNCTION_SPECIFIC_TARGET): Document new macro.
12155         (DECL_FUNCTION_SPECIFIC_OPTIMIZATION): Ditto.
12156
12157         * doc/tm.texi (TARGET_VALID_OPTION_ATTRIBUTE_P): Document new hook.
12158         (TARGET_OPTION_SAVE): Ditto.
12159         (TARGET_OPTION_RESTORE): Ditto.
12160         (TARGET_OPTION_PRINT): Ditto.
12161         (TARGET_OPTION_PRAGMA_PARSE): Ditto.
12162         (TARGET_CAN_INLINE_P): Ditto.
12163
12164         * doc/invoke.texi (-mfpmath=sse+387): Document as an alias for
12165         -mfpmath=sse,387.
12166         (-mfpmath=both): Ditto.
12167
12168 2008-07-23  Michael Meissner  <gnu@the-meissners.org>
12169             Karthik Kumar  <karthikkumar@gmail.com>
12170
12171         * config/i386/i386.h (TARGET_ABM): Move switch into ix86_isa_flags.
12172         (TARGET_POPCNT): Ditto.
12173         (TARGET_SAHF): Ditto.
12174         (TARGET_AES): Ditto.
12175         (TARGET_PCLMUL): Ditto.
12176         (TARGET_CMPXCHG16B): Ditto.
12177         (TARGET_RECIP): Move switch into target_flags.
12178         (TARGET_FUSED_MADD): Ditto.
12179         (ix86_arch_features): Make an unsigned char type.
12180         (ix86_tune_features): Ditto.
12181         (OVERRIDE_OPTIONS): Add bool argument to override_options call.
12182         (TARGET_CPU_CPP_BUILTINS): Move into ix86_target_macros.
12183         (REGISTER_TARGET_PRAGMAS): Define, call ix86_register_pragmas.
12184
12185         * config/i386/i386.opt (arch): New TargetSave field to define
12186         fields that need to be saved for function specific option support.
12187         (tune): Ditto.
12188         (fpmath): Ditto.
12189         (branch_cost): Ditto.
12190         (ix86_isa_flags_explicit): Ditto.
12191         (tune_defaulted): Ditto.
12192         (arch_specified): Ditto.
12193         (-m128-long-double): Add Save flag to save option for target
12194         specific option support.
12195         (-m80387): Ditto.
12196         (-maccumulate-outgoing-args): Ditto.
12197         (-malign-double): Ditto.
12198         (-malign-stringops): Ditto.
12199         (-mfancy-math-387): Ditto.
12200         (-mhard-float): Ditto.
12201         (-mieee-fp): Ditto.
12202         (-minline-all-stringops): Ditto.
12203         (-minline-stringops-dynamically): Ditto.
12204         (-mms-bitfields): Ditto.
12205         (-mno-align-stringops): Ditto.
12206         (-mno-fancy-math-387): Ditto.
12207         (-mno-push-args): Ditto.
12208         (-mno-red-zone): Ditto.
12209         (-mpush-args): Ditto.
12210         (-mred-zone): Ditto.
12211         (-mrtd): Ditto.
12212         (-msseregparm): Ditto.
12213         (-mstack-arg-probe): Ditto.
12214         (-m32): Ditto.
12215         (-m64): Ditto.
12216         (-mmmx): Ditto.
12217         (-m3dnow): Ditto.
12218         (-m3dnowa): Ditto.
12219         (-msse): Ditto.
12220         (-msse2): Ditto.
12221         (-msse3): Ditto.
12222         (-msse4.1): Ditto.
12223         (-msse4.2): Ditto.
12224         (-msse4): Ditto.
12225         (-mno-sse4): Ditto.
12226         (-msse4a): Ditto.
12227         (-msse5): Ditto.
12228         (-mrecip): Move flag into target_flags.
12229         (-mcld): Ditto.
12230         (-mno-fused-madd): Ditto.
12231         (-mfused-madd): Ditto.
12232         (-mabm): Move flag into ix86_isa_flags.
12233         (-mcx16): Ditto.
12234         (-mpopcnt): Ditto.
12235         (-msahf): Ditto.
12236         (-maes): Ditto.
12237         (-mpclmul): Ditto.
12238
12239         * config/i386/i386-c.c: New file for #pragma support.
12240         (ix86_target_macros_internal): New function to #define or #undef
12241         target macros based when the user uses the #pragma GCC option to
12242         change target options.
12243         (ix86_pragma_option_parse): New function to add #pragma GCC option
12244         support.
12245         (ix86_target_macros): Move defining the target macros here from
12246         TARGET_CPU_CPP_BUILTINS in i386.h.
12247         (ix86_register_pragmas): Register the #pragma GCC option hook.  If
12248         defined, initialize any subtarget #pragmas.
12249
12250         * config/i386/darwin.h (REGISTER_SUBTARGET_PRAGMAS): Rename from
12251         REGISTER_TARGET_PRAGMAS.
12252
12253         * config/i386/t-i386: New file for x86 dependencies.
12254         (i386.o): Make dependencies mirror the include files used.
12255         (i386-c.o): New file, add dependencies.
12256
12257         * config/i386/i386-protos.h (override_options): Add bool argument.
12258         (ix86_valid_option_attribute_tree): Add declaration.
12259         (ix86_target_macros): Ditto.
12260         (ix86_register_macros): Ditto.
12261
12262         * config/i386/i386.c (ix86_tune_features): Move initialization of
12263         the target masks to initial_ix86_tune_features to allow functions
12264         to have different target options.  Make type unsigned char,
12265         instead of unsigned int.
12266         (initial_ix86_tune_features): New static vector to hold processor
12267         masks for the tune variables.
12268         (ix86_arch_features): Move initialization of the target masks to
12269         initial_ix86_arch_features to allow functions to have different
12270         target options.  Make type unsigned char, instead of unsigned int.
12271         (initial_ix86_arch_features): New static vector to hold processor
12272         masks for the arch variables.
12273         (enum ix86_function_specific_strings): New enum to describe the
12274         string options used for attribute((option(...))).
12275         (ix86_target_string): New function to return a string that
12276         describes the target options.
12277         (ix86_debug_options): New function to print the current options in
12278         the debugger.
12279         (ix86_function_specific_save): New function hook to save the
12280         function specific global variables in the cl_target_option structure.
12281         (ix86_function_specific_restore): New function hook to restore the
12282         function specific variables from the cl_target_option structure to
12283         the global variables.
12284         (ix86_function_specific_print): New function hook to print the
12285         target specific options in the cl_target_option structure.
12286         (ix86_valid_option_attribute_p): New function hook to validate
12287         attribute((option(...))) arguments.
12288         (ix86_valid_option_attribute_tree): New function that is common
12289         code between attribute((option(...))) and #pragma GCC option
12290         support that parses the options and returns a tree holding the options.
12291         (ix86_valid_option_attribute_inner_p): New helper function for
12292         ix86_valid_option_attribute_tree.
12293         (ix86_can_inline_p): New function hook to decide if one function
12294         can inline another on a target specific basis.
12295         (ix86_set_current_function); New function hook to switch target
12296         options if the user used attribute((option(...))) or #pragma GCC
12297         option.
12298         (ix86_tune_defaulted): Move to static file scope from
12299         override_options.
12300         (ix86_arch_specified): Ditto.
12301         (OPTION_MASK_ISA_AES_SET): New macro for moving switches into
12302         ix86_isa_flags.
12303         (OPTION_MASK_ISA_PCLMUL_SET): Ditto.
12304         (OPTION_MASK_ISA_ABM_SET): Ditto.
12305         (OPTION_MASK_ISA_POPCNT_SET): Ditto.
12306         (OPTION_MASK_ISA_CX16_SET): Ditto.
12307         (OPTION_MASK_ISA_SAHF_SET): Ditto.
12308         (OPTION_MASK_ISA_AES_UNSET): Ditto.
12309         (OPTION_MASK_ISA_PCLMUL_UNSET): Ditto.
12310         (OPTION_MASK_ISA_ABM_UNSET): Ditto.
12311         (OPTION_MASK_ISA_POPCNT_UNSET): Ditto.
12312         (OPTION_MASK_ISA_CX16_UNSET): Ditto.
12313         (OPTION_MASK_ISA_SAHF_UNSET): Ditto.
12314         (struct ptt): Move to static file scope from override_options.
12315         (processor_target_table): Ditto.
12316         (cpu_names): Ditto.
12317         (ix86_handle_option): Add support for options that are now isa options.
12318         (override_options): Add support for declaring functions that
12319         support different target options than were specified on the
12320         command line.  Move struct ptt, processor_target_table, cpu_names,
12321         ix86_tune_defaulted, ix86_arch_specified to static file scope.
12322         Add bool argument.  Fix up error messages so the appropriate error
12323         is given for either command line or attribute.
12324         (ix86_previous_fndecl): New static to remember previous function
12325         declaration to see if we need to change target options.
12326         (ix86_builtins_isa): New array to record the ISA of each builtin
12327         function.
12328         (def_builtin): Always create the builtin function, even if the
12329         current ISA doesn't support it.
12330         (ix86_init_mmx_sse_builtins): Remove TARGET_AES and TARGET_PCLMUL
12331         tests for those builtins.
12332         (ix86_init_builtins): Remove TARGET_MMX test for calling
12333         ix86_init_mmx_sse_builtins.
12334         (ix86_expand_builtin): If the current ISA doesn't support a given
12335         builtin, signal an error.
12336         (TARGET_VALID_OPTION_ATTRIBUTE_P): Set target hook.
12337         (TARGET_SET_CURRENT_FUNCTION): Ditto.
12338         (TARGET_OPTION_SAVE): Ditto.
12339         (TARGET_OPTION_RESTORE): Ditto.
12340         (TARGET_OPTION_PRINT): Ditto.
12341         (TARGET_CAN_INLINE_P): Ditto.
12342
12343 2008-07-22  Rafael Ávila de Espíndola  <espindola@google.com>
12344
12345         * c-typeck.c (build_external_ref): Don't call assemble_external.
12346         * final.c (output_operand): Call assemble_external.
12347
12348 2008-07-21  DJ Delorie  <dj@redhat.com>
12349
12350         * config/h8300/h8300.c (h8300_hard_regno_scratch_ok): New.
12351         (TARGET_HARD_REGNO_SCRATCH_OK): Define.
12352
12353 2008-07-21  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
12354
12355         * config/spu/spu.md ("div<mode>3"): Convert into expander, move
12356         original insn and splitter contents into ...
12357         ("*div<mode>3_fast"): ... this new pattern.  Enable only if
12358         flag_unsafe_math_optimizations.  Add dummy scratch register.
12359         ("*div<mode>3_adjusted"): New insn and splitter.  Enable only if
12360         !flag_unsafe_math_optimizations.  Returns number with next
12361         highest magnitude if this is still less or equal to the true
12362         quotient in magnitude.
12363
12364 2008-07-21  Rafael Ávila de Espíndola  <espindola@google.com>
12365
12366         * Makefile.in: Replace toplev.h with TOPLEV_H.
12367         * c-decl.c (merge_decls): Don't set DECL_IN_SYSTEM_HEADER.
12368         * c-lex.c (fe_file_change): Don't set in_system_header.
12369         * c-parser.c (c_token): Remove in_system_header.
12370         (c_lex_one_token): Don't set in_system_header.
12371         (c_parser_set_source_position_from_token): Don't set in_system_header.
12372         * diagnostic.c (diagnostic_report_diagnostic): Use location from
12373         diagnostic_info.
12374         (warning_at): New.
12375         * diagnostic.h (diagnostic_report_warnings_p): Add LOC argument.
12376         * flags.h (in_system_header): Remove.
12377         * function.c (saved_in_system_header): Remove.
12378         (push_cfun): Don't set in_system_header.
12379         (pop_cfun): Don't set in_system_header.
12380         (push_struct_function): Don't set in_system_header.
12381         * input.h (expanded_location): Add sysp.
12382         (in_system_header_at): New.
12383         (in_system_header): New.
12384         * toplev.c (in_system_header): Remove.
12385         * toplev.h: Include input.h
12386         (warning_at): New.
12387         * tree-cfg.c (execute_warn_function_return): Call warning_at.
12388         * tree-ssa.c (warn_uninit): Call warning_at.
12389         (warn_uninitialized_var): Update calls to warn_uninit.
12390         (warn_uninitialized_phi): Update calls to warn_uninit.
12391         * tree.c (make_node_stat): Don't set DECL_IN_SYSTEM_HEADER.
12392         (expand_location): Initialize xloc.sysp.
12393         * tree.h (DECL_IN_SYSTEM_HEADER): Use in_system_header_at.
12394         (tree_decl_with_vis): Remove in_system_header_flag.
12395
12396 2008-07-21  Andreas Krebbel  <krebbel1@de.ibm.com>
12397
12398         PR target/36822
12399         * recog.c (asm_operand_ok): Change the order of the extra
12400         memory constraint checks.
12401
12402 2008-07-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
12403
12404         PR tree-opt/36879
12405         * tree-switch-conversion.c (build_one_array): Call
12406         varpool_mark_needed_node and varpool_finalize_decl
12407         instead of assemble_variable.
12408
12409 2008-07-19  Jan Hubicka  <jh@suse.cz>
12410
12411         * cgraph.c (cgraph_add_new_function): Do early local passes.
12412         * tree-nrv.c (gate_pass_return_slot): New gate.
12413         (pass_nrv): Add the gate.
12414         * tree-ssa-coalese.c (hash_ssa_name_by_var, eq_ssa_name_by_var): New
12415         functions.
12416         (coalesce_ssa_name): Coalesce SSA names.
12417         * tree-ssa-live.c (remove_unused_locals): Be more conservative when
12418         not optimizing so unused user vars remains visible.
12419         * common.opt (flag_tree_ter): Always enable by default.
12420         * tree-ssa-ter.c: Include flags.h
12421         (is_replaceable_p): Check that locations match; when aliasing
12422         is missing be conservative about loads.
12423         * tree-optimize.c (gate_init_datastructures): Remove.
12424         (pass_init_datastructures): New.
12425         * passes.c: Reorder passes so we always go into SSA.
12426
12427 2008-07-19  Jan Hubicka  <jh@suse.cz>
12428
12429         * doc/extend.texi (flatten attribute): Remove note about
12430         unit-at-a-time.
12431         * doc/invoke.texi (--combine): Likewise.
12432         (-finline-functions-called-once): Update levels when enabled.
12433         (-funit-at-a-time): Document new behaviour.
12434         (-ftoplevel-reorder): Document that it is enabled -O0 and imply
12435         -fno-section-anchors when disabled explicitly.
12436         (inline params): They are not ignored now.
12437         (precompiled headers): Remove unit-at-a-time as being incompatible.
12438         * opts.c (decode_options): Handle unit-at-a-time as alias;
12439         imply -fno-section-anchors when toplevel reorder is disabled
12440         explicitly.
12441         * common.opt (ftoplevel-reorder): Set default value to 2.
12442         (funit-at-a-time): Set default value to 1.
12443         * config/rs6000/rs6000.c (optimization_options): Set section anchors
12444         to 2.
12445
12446 2008-07-19  Jan Hubicka  <jh@suse.cz>
12447
12448         * builtins.c (expand_builtin_int_roundingfn,
12449         expand_builtin_int_roundingfn_2): Do not take subtarget argument;
12450         it is not useful.
12451
12452 2008-07-19  Richard Guenther  <rguenther@suse.de>
12453
12454         PR bootstrap/36864
12455         * tree-ssa-sccvn.h (get_constant_value_id): Declare.
12456         * tree-ssa-sccvn.c (get_constant_value_id): New function.
12457         * tree-ssa-pre.c (get_expr_value_id): For newly created
12458         constant value-ids make sure to add the expression to its
12459         expression-set.
12460
12461 2008-07-19  Jakub Jelinek  <jakub@redhat.com>
12462
12463         PR middle-end/36877
12464         * omp-low.c (expand_omp_atomic_fetch_op): Make sure the
12465         return value of the builtin is ignored.
12466
12467 2008-07-19  Olivier Hainque  <hainque@adacore.com>
12468
12469         * doc/tm.texi (MALLOC_ABI_ALIGNMENT): New macro. Alignment, in
12470         bits, a C conformant malloc implementation has to provide.
12471         * defaults.h (MALLOC_ABI_ALIGNMENT): Default to BITS_PER_WORD.
12472
12473 2008-07-19  Joseph Myers  <joseph@codesourcery.com>
12474
12475         PR target/36780
12476         PR target/36827
12477         * reload.c (find_reloads_subreg_address): Only reload address if
12478         reloaded == 0, not for reloaded != 1.
12479
12480         Revert:
12481         2008-07-16  Joseph Myers  <joseph@codesourcery.com>
12482         * config/m32c/m32c.c (BIG_FB_ADJ): Move definition earlier.
12483         (m32c_legitimate_address_p): Handle "++rii" addresses created by
12484         m32c_legitimize_reload_address.
12485
12486         2008-07-15  Kaz Kojima  <kkojima@gcc.gnu.org>
12487         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Allow
12488         (plus (plus (reg) (const_int)) (const_int)) when reload_in_progress.
12489
12490 2008-07-19  Olivier Hainque  <hainque@adacore.com>
12491
12492         * dwarf2out.c (add_subscript_info): New explicit COLLAPSE_P
12493         argument, saying whether nested array are to be collapsed
12494         into a single array type DIE with multiple subscripts.
12495         (gen_array_type_die): Factorize comments about the MIPS_DEBUG_INFO
12496         issues, centralize the nested array types collapsing control and
12497         disable the transformation for Ada.
12498
12499 2008-07-18  Uros Bizjak  <ubizjak@gmail.com>
12500
12501         PR target/36786
12502         * config/i386/i386.md (x86_64_shift_adj_1): Rename from
12503         x86_64_shift_adj.
12504         (x86_64_shift_adj_2): New expander.
12505         (x86_64_shift_adj_3): Ditto.
12506         * config/i386/i386.c (ix86_split_ashr): Use gen_x86_64_shift_adj_3
12507         to split TImode operands.
12508         (ix86_split_ashl): Use gen_x86_64_shift_adj_2 to split TImode operands.
12509         (ix86_split_lshr): Ditto.
12510
12511 2008-07-18  Kris Van Hees  <kris.van.hees@oracle.com>
12512
12513         * c-common.c (c_stddef_cpp_builtins): Define __CHAR16_TYPE__
12514         and __CHAR32_TYPE__.
12515         * c-typeck.c (digest_init): Support char16_t and char32_t.
12516         (set_nonincremental_init_from_string): Idem.
12517
12518 2008-07-18  H.J. Lu  <hongjiu.lu@intel.com>
12519
12520         PR middle-end/36859
12521         * builtins.c (std_gimplify_va_arg_expr): Limit alignment to
12522         PREFERRED_STACK_BOUNDARY.
12523         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
12524
12525 2008-07-18  H.J. Lu  <hongjiu.lu@intel.com>
12526
12527         PR middle-end/36858
12528         * function.c (locate_and_pad_parm): Cap boundary earlier.
12529
12530 2008-07-17  Julian Brown  <julian@codesourcery.com>
12531
12532         * config/arm/arm.c (arm_cxx_determine_class_data_visibility): Make
12533         no-op for targets which don't use DLLs.
12534
12535 2008-07-17  Martin Jambor  <mjambor@suse.cz>
12536
12537         * ipa-cp.c (ipcp_print_all_lattices): New variable info, check
12538         that nodes are relevant by examining the node->analyzed flag.
12539         (ipcp_init_stage): Check which nodes are relevant, assert that the
12540         relevant ones are also required.
12541         (ipcp_propagate_stage): Check on the side arrays are properly
12542         allocated.
12543         (ipcp_print_all_jump_functions): Make sure not to touch any node
12544         that is not analyzed or an edge that does not have a corresponding
12545         entry in the on-the-side vectors.
12546         (ipcp_function_scale_print): Likewise.
12547         (ipcp_update_callgraph): Check that the node is relevant.
12548         (ipcp_insert_stage): Check that the node is relevant.  Check there is
12549         an info for every node and edge.
12550         * ipa-prop.c (ipa_init_func_list): Check the nodes are relevant.
12551         (ipa_print_all_tree_maps): Likewise and a new variable info.
12552         (ipa_print_all_params_modified): Likewise.
12553         * ipa-prop.h (ipa_edge_args_info_available_for_edge_p): New function.
12554
12555 2008-07-17  Roman Zippel <zippel@linux-m68k.org>
12556
12557         PR target/25343
12558         * config/host-linux.c (TRY_EMPTY_VM_SPACE): Define for __mc68000__.
12559
12560 2008-07-17  Paolo Bonzini  <bonzini@gnu.org>
12561
12562         PR rtl-optimization/36753
12563         * fwprop.c (use_killed_between): Don't shortcut
12564         single-definition global registers.
12565
12566 2008-07-16  Jan Hubicka  <jh@suse.cz>
12567
12568         * cgraph.h (varpool_empty_needed_queue): Declare.
12569         * cgraphunit.c (output_in_order): Mark all variables as needed;
12570         empty the queue.
12571         * varpool.c (varpool_assemble_node): Update debug queue.
12572         (varpool_assemble_pending_decls): Don't do it here.
12573         (varpool_empty_needed_queue):  New function.
12574
12575 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12576
12577         * recog.c (peephole2_optimize): Fix formatting.
12578
12579 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12580
12581         * c-pch.c (get_ident): Avoid C++ keywords.
12582         * combine-stack-adj.c (single_set_for_csa): Likewise.
12583         * final.c (asm_insn_count, final_scan_insn, alter_subreg,
12584         output_asm_insn): Likewise.
12585         * reload.c (push_secondary_reload, find_reusable_reload,
12586         push_reload, combine_reloads, find_reloads,
12587         debug_reload_to_stream): Likewise.
12588         * reload.h (struct reload): Likewise.
12589         * reload1.c (reload_reg_class_lower, find_reg, find_reload_regs,
12590         allocate_reload_reg, choose_reload_regs, emit_input_reload_insns,
12591         emit_output_reload_insns): Likewise.
12592         * targhooks.c (default_secondary_reload): Likewise.
12593         * varasm.c (section_entry_eq, object_block_entry_eq): Likewise.
12594
12595 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12596
12597         * recog.c (validate_change_1, validate_change,
12598         validate_unshare_change, validate_replace_rtx_1, struct
12599         funny_match, constrain_operands, peephole2_optimize): Avoid C++
12600         keywords.
12601         * reload.c (push_secondary_reload, secondary_reload_class,
12602         scratch_reload_class, find_valid_class, find_reusable_reload,
12603         push_reload, find_dummy_reload, find_reloads_address_1,
12604         find_reloads_address_part, find_equiv_reg): Likewise.
12605         * reload1.c (spill_failure, eliminate_regs_1, allocate_reload_reg,
12606         choose_reload_regs): Likewise.
12607         * rtlanal.c (replace_rtx, nonzero_bits1, num_sign_bit_copies1):
12608         Likewise.
12609         * rtlhooks.c (gen_lowpart_if_possible): Likewise.
12610         * sched-ebb.c (add_deps_for_risky_insns): Likewise.
12611         * sched-rgn.c (concat_INSN_LIST): Likewise.
12612         * stor-layout.c (mode_for_size, mode_for_size_tree,
12613         smallest_mode_for_size): Likewise.
12614
12615 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12616
12617         * cfg.c (dump_reg_info): Avoid C++ keywords.
12618         * dwarf2asm.c (dw2_force_const_mem,
12619         dw2_asm_output_encoded_addr_rtx): Likewise.
12620         * except.c (gen_eh_region, add_action_record, output_ttype): Likewise.
12621         * expmed.c (expand_shift): Likewise.
12622         * global.c (find_reg): Likewise.
12623         * graph.c (draw_edge): Likewise.
12624         * local-alloc.c (reg_meets_class_p, find_free_reg): Likewise.
12625         * optabs.c (expand_binop, expand_twoval_unop, expand_twoval_binop,
12626         widen_clz, widen_bswap, expand_parity, expand_unop,
12627         emit_cmp_and_jump_insn_1): Likewise.
12628         * postreload.c (reload_cse_simplify_operands): Likewise.
12629         * ra.h (add_neighbor): Likewise.
12630         * reg-stack.c (remove_regno_note, change_stack): Likewise.
12631         * regclass.c (memory_move_secondary_cost, dump_regclass, regclass,
12632         record_reg_classes, copy_cost, record_address_regs,
12633         invalid_mode_change_p): Likewise.
12634         * regrename.c (regrename_optimize, scan_rtx_reg,
12635         dump_def_use_chain, find_oldest_value_reg,
12636         replace_oldest_value_reg, copyprop_hardreg_forward_1): Likewise.
12637
12638 2008-07-16  David Edelsohn  <edelsohn@gnu.org>
12639
12640         * config/rs6000/rs6000.c (processor_target_table): Remove duplicate
12641         MASK_POWERPC64 for power4 in previous commit.
12642
12643 2008-07-16  Olivier Hainque  <hainque@adacore.com>
12644
12645         * collect2.c (scan_prog_file, COFF version): Use CONST_CAST
12646         instead of bare conversion to cast const-ness away.
12647
12648 2008-07-16  Anatoly Sokolov  <aesok@post.ru>
12649
12650         * config/xtensa/xtensa.h (FUNCTION_OUTGOING_VALUE,
12651         XTENSA_FUNCTION_VALUE, XTENSA_FUNCTION_VALUE): Remove.
12652         * config/xtensa/xtensa.c (xtensa_function_value): New function.
12653         (TARGET_FUNCTION_VALUE): Define.
12654
12655 2008-07-16  David Edelsohn  <edelsohn@gnu.org>
12656
12657         * config/rs6000/rs6000.c (processor_target_table): Add
12658         MASK_PPC_GPOPT for power4, power5, power5+, power6, and power6x.
12659
12660 2008-07-16  Joseph Myers  <joseph@codesourcery.com>
12661
12662         PR target/36827
12663         * config/m32c/m32c.c (BIG_FB_ADJ): Move definition earlier.
12664         (m32c_legitimate_address_p): Handle "++rii" addresses created by
12665         m32c_legitimize_reload_address.
12666
12667 2007-07-16  Rafael Ávila de Espíndola  <espindola@google.com>
12668
12669         * c-decl.c (merge_decls): Keep DECL_SOURCE_LOCATION and
12670         DECL_IN_SYSTEM_HEADER in sync.
12671
12672 2008-07-15  Daniel Berlin  <dberlin@dberlin.org>
12673
12674         * tree-ssa-sccvn.c (expressions_equal_p): Check type equality.
12675         * tree-ssa-pre.c (pre_expr_eq): Ditto
12676         (get_constant_for_value_id): Take a type as an argument.
12677         (fully_constant_expression): Pass in type.
12678         (find_or_generate_expression): Short circuit constant case.
12679         (create_expression_by_pieces): Remove special casing of
12680         pointer_plus.
12681         (do_regular_insertion): Short circuit constant case.
12682         (do_partial_partial_insertion): Ditto.
12683
12684 2008-07-15  Kaz Kojima  <kkojima@gcc.gnu.org>
12685
12686         PR target/36782
12687         * config/sh/sh.md (symGOT_load): Don't add REG_EQUAL note.
12688
12689 2008-07-15  Bob Wilson  <bob.wilson@acm.org>
12690
12691         * config/xtensa/libgcc-xtensa.ver: New file.
12692         * config/xtensa/t-linux (SHLIB_MAPFILES): Append libgcc-xtensa.ver.
12693
12694 2008-07-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12695
12696         * df-problems.c (df_set_note): Avoid C++ keywords.
12697         * df-scan.c (df_ref_change_reg_with_loc_1): Likewise.
12698         * dse.c (record_store, remove_useless_values): Likewise.
12699         * emit-rtl.c (gen_reg_rtx, update_reg_offset, gen_rtx_REG_offset,
12700         gen_reg_rtx_offset, operand_subword, change_address_1,
12701         change_address, adjust_address_1, offset_address,
12702         widen_memory_access, emit_copy_of_insn_after): Likewise.
12703         * explow.c (round_push, allocate_dynamic_stack_space): Likewise.
12704         * fwprop.c (should_replace_address, propagate_rtx_1,
12705         propagate_rtx, try_fwprop_subst, forward_propagate_and_simplify):
12706         Likewise.
12707         * gcse.c (cprop_jump, find_implicit_sets, bypass_block,
12708         gcse_emit_move_after, update_ld_motion_stores): Likewise.
12709         * lcm.c (compute_insert_delete, pre_edge_lcm,
12710         compute_rev_insert_delete, pre_edge_rev_lcm): Likewise.
12711         * lower-subreg.c (resolve_reg_notes): Likewise.
12712         * mode-switching.c (optimize_mode_switching): Likewise.
12713
12714 2008-07-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12715
12716         * bt-load.c (add_btr_def, migrate_btr_def,
12717         branch_target_load_optimize): Avoid C++ keywords.
12718         * caller-save.c (insert_restore, insert_save, insert_one_insn):
12719         Likewise.
12720         * combine.c (subst, simplify_set, make_extraction,
12721         make_compound_operation, known_cond, simplify_shift_const_1): Likewise.
12722         * cse.c (make_regs_eqv, merge_equiv_classes, validate_canon_reg,
12723         fold_rtx, equiv_constant, cse_insn, cse_process_notes_1): Likewise.
12724
12725 2008-07-15  Richard Guenther  <rguenther@suse.de>
12726
12727         PR middle-end/36369
12728         * c-common.c (strict_aliasing_warning): Do not warn for
12729         TYPE_REF_CAN_ALIAS_ALL pointers.
12730         (c_common_get_alias_set): may_alias types are not special.
12731         * tree.c (build_pointer_type_for_mode): Look up the may_alias
12732         attribute and set can_ref_all accordingly.
12733         (build_reference_type_for_mode): Likewise.
12734         * doc/extend.texi (may_alias): Clarify.
12735
12736 2008-07-15  Kaz Kojima  <kkojima@gcc.gnu.org>
12737
12738         PR target/36780
12739         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Allow
12740         (plus (plus (reg) (const_int)) (const_int)) when reload_in_progress.
12741
12742 2008-07-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
12743
12744         PR target/31568
12745         * config/rs6000/rs6000.c (print_operand <case 'y'>): Don't use
12746         gcc_assert, instead call output_operand_lossage.
12747
12748 2008-07-15  Kai Tietz  <kai.tietz@onevision.com>
12749
12750         * builtins.c (std_canonical_va_list): Treat structure based
12751         va_list types.
12752
12753 2008-07-15  Ben Elliston  <bje@au.ibm.com>
12754
12755         * emit-rtl.c (set_mem_attributes_minus_bitpos): Improve comment.
12756
12757 2007-07-14  Rafael Ávila de Espíndola  <espindola@google.com>
12758
12759         * c-decl.c (diagnose_mismatched_decls): Don't warn if TREE_NO_WARNING
12760         is set.
12761
12762 2008-07-14  Jan Hubicka  <jh@suse.cz>
12763
12764         * i386.md (sse5 cmov pattern): Update call of ix86_sse5_valid_op_p
12765         * sse.md (sse5 patterns): Update call of ix86_sse5_valid_op_p;
12766         fix predicates and constraints.
12767         * i386.c (ix86_sse5_valid_op_p): Add commutative parameter.
12768         * i386-protos.h (ix86_sse5_valid_op_p): Update declaration.
12769
12770 2008-07-14  Doug Kwan  <dougkwan@google.com>
12771
12772         * config.gcc (arm*-*-eabi*): Include arm/eabi.h and use
12773         additional option file arm/eabi.opt.
12774         * config/arm/eabi.h (File): New configuration file for EABI targets.
12775         * config/arm/elf.h (SUBTARGET_EXTRA_SPECS): Add
12776         SUBSUBTARGET_EXTRA_SPECS.
12777         (SUBSUBTARGET_EXTRA_SPECS): Provide empty default.
12778         * config/arm/unknown-elf.h (UNKNOWN_ELF_STARTFILE_SPEC): Renamed
12779         from STARTFILE_SPEC so that it can be referenced in an override.
12780         (STARTFILE_SPEC): Use UNKNOWN_ELF_STARTFILE_SPEC.
12781         (UNKNOWN_ELF_ENDFILE_SPEC): Renamed from ENDFILE_SPEC so that it
12782         can be referenced in an override.
12783         (ENDFILE_SPEC): Use UNKNOWN_ELF_ENDFILE_SPEC.
12784         * config/arm/bpabi.h (BPABI_LINK_SPEC): Renamed from LINK_SPEC
12785         so that it can be referenced in an override.
12786         (LINK_SPEC): Use BPABI_LINK_SPEC.
12787         * config/arm/eabi.opt (File): New.
12788
12789 2008-07-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
12790
12791         * Makefile.in (TARGET_DEF_H): Add targhooks.h.
12792         (FIXED_VALUE_H): New variable.
12793         (RTL_BASE_H): Use $(INPUT_H) and $(FIXED_VALUE_H) instead of
12794         input.h, fixed-value.h.
12795         (TREE_H): Use $(INPUT_H), add $(SYMTAB_H).
12796         (BASIC_BLOCK_H): Use $(BITMAP_H).
12797         (FUNCTION_H): Add varray.h.
12798         (IPA_REFERENCE_H): Use $(BITMAP_H).
12799         (CGRAPH_H): Add $(BASIC_BLOCK_H).
12800         (DF_H): Use $(BITMAP_H).
12801         (GGC_H): Add statistics.h.
12802         (INSN_ADDR_H): New.
12803         (INSN_ATTR_H): Use it.
12804         (SYSTEM_H): Add safe-ctype.h, filenames.h.
12805         (INPUT_H): New.
12806         (SYMTAB_H): Add $(OBSTACK_H).
12807         (CPP_INTERNAL_H): New.
12808         (TREE_DUMP_H): Add tree-pass.h.
12809         (TREE_FLOW_H): Use $(BITMAP_H)
12810         (PRETTY_PRINT_H): Use $(INPUT_H).
12811         (EBITMAP_H): Rename from typo-ed EBIMAP_H.
12812         (GSTAB_H): New.
12813         (BITMAP_H): New.
12814         (many object files): Fix lots of header dependencies throughout.
12815
12816 2008-07-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
12817
12818         * Makefile.in (write_entries_to_file, write_entries_to_file_split):
12819         New macros.
12820         (s-gtyp-input): Use them to write tmp-gi.list.
12821         (echo_to_gi.list): Remove.
12822
12823 2008-07-14  Richard Guenther  <rguenther@suse.de>
12824
12825         * tree-ssa-sccvn.c (pre_info): Remove.
12826         (switch_to_PRE_table): Likewise.
12827         (free_scc_vn): Do not clear SSA_NAME_VALUE.  Do not free pre_info.
12828         (set_hashtable_value_ids): Do not create value-ids for the
12829         optimistic tables.
12830         (run_scc_vn): Remove double test.  Remove bogus special-case
12831         in value-number printing.
12832         * tree-ssa-sccvn.h (switch_to_PRE_table): Remove.
12833         * tree-ssa-ccp.c (get_symbol_constant_value): Do not look at
12834         SSA_NAME_VALUE.
12835         * tree-flow-inline.h (get_value_handle): Remove.
12836         * tree-flow.h (get_value_handle): Remove.
12837
12838 2008-07-14  Martin Jambor  <mjambor@suse.cz>
12839
12840         * tree-switch-conversion.c (gen_inbound_check): Make sure the type
12841         in which we generate arithmetics is not a subrange.
12842
12843 2008-07-14  Martin Jambor  <mjambor@suse.cz>
12844
12845         * Makefile.in (IPA_PROP_H): Added ipa-prop.h to IPA_PROP_H variable.
12846
12847 2008-07-14  Richard Guenther  <rguenther@suse.de>
12848
12849         * tree-ssa-pre.c (insert_into_preds_of_block): Do not call convert.
12850
12851 2008-07-14  Andreas Krebbel  <krebbel1@de.ibm.com>
12852
12853         PR target/36745
12854         * config/s390/s390.c: (s390_secondary_reload): Add a secondary
12855         reload for symbol refs moved to r0 with -fPIC.
12856         (legitimize_pic_address): Use the target register as temporary
12857         reg if possible.
12858         (emit_symbolic_move): Adjust comment.
12859         * config/s390/s390.md (reloadsi_PIC_addr, reloaddi_PIC_addr):
12860         New expanders.
12861
12862 2008-07-14  Ben Elliston  <bje@au.ibm.com>
12863
12864         * c-common.h (C_CPP_HASHNODE): New macro.
12865         * coretypes.h (struct cpp_token): Forward declare.
12866         * doc/extend.texi (PowerPC AltiVec Built-in Functions): Document
12867         the context-sensitive keyword method.
12868         * config/rs6000/rs6000-c.c (__vector_keyword, vector_keyword,
12869         __pixel_keyword, pixel_keyword, __bool_keyword, bool_keyword,
12870         expand_bool_pixel): New.
12871         (altivec_categorize_keyword): New function.
12872         (init_vector_keywords): New function.
12873         (rs6000_macro_to_expand): Likewise.
12874         (rs6000_cpu_cpp_builtins): Enable context-sensitive macros if not
12875         compiling an ISO C dialect.
12876
12877 2008-07-13  Daniel Berlin  <dberlin@dberlin.org>
12878
12879         * tree-ssa-pre.c (fully_constant_expression): Add fold_convert calls.
12880         (create_expression_by_pieces): Fix typo.
12881         (do_regular_insertion): Use debug counter here too.
12882
12883 2008-07-14  Hans-Peter Nilsson  <hp@axis.com>
12884
12885         PR target/35492.
12886         * config/cris/cris.h (CRIS_CONST_OK_FOR_LETTER_P): Renamed from
12887         CONST_OK_FOR_LETTER_P.  All port-local users changed.
12888         (CONST_OK_FOR_CONSTRAINT_P): Define; implement Kc as old K,
12889         implement Kp matching power-of-two.
12890         (CONSTRAINT_LEN): Define to match.
12891         * config/cris/cris.md: Replace all use of constraint K with Kc.
12892         ("*btst*): Use Kp for operand 0 of last alternative.
12893
12894 2008-07-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
12895
12896         PR testsuite/36440
12897         * tree-call-cdce.c (check_target_format): Accept MIPS single, double
12898         and quad formats.
12899
12900 2008-07-13  Jan Hubicka  <jh@suse.cz>
12901
12902         * tree.c (decl_assembler_name_equal): Expect assembler name of decl
12903         to be mangled too.
12904
12905 2008-07-13  Richard Guenther  <rguenther@suse.de>
12906
12907         PR middle-end/36811
12908         * langhooks.c (lhd_print_error_function): Deal with recursive
12909         BLOCK trees.
12910
12911 2008-07-12  Jan Hubicka  <jh@suse.cz>
12912
12913         * cgraph.c (assembler_name_hash): New static var.
12914         (hash_node_by_assembler_name, eq_assembler_name): New.
12915         (cgraph_node_for_asm): Use hashtable.
12916         (cgraph_remove_node): Maintain hashtable.
12917         (change_decl_assembler_name): Sanity check that names are not changing
12918         after aliasing was processed.
12919         * cgraph.h (varpoon_node): Add next GGC marker.
12920         * tree.c (decl_assembler_name_equal): Constify.
12921         (decl_assembler_name_hash): New.
12922         * tree.h (decl_assembler_name_equal): Constify.
12923         (decl_assembler_name_hash): Update.
12924
12925 2008-07-12  David Daney  <ddaney@avtrex.com>
12926
12927         * config/mips/driver-native.c (host_detect_local_cpu): Handle
12928         sb1 and r5000 cpus.
12929
12930 2008-07-12  Richard Sandiford  <rdsandiford@googlemail.com>
12931
12932         * doc/md.texi: Document the MIPS "v" constraint.
12933         * config/mips/mips.h (reg_class): Revert last change.
12934         (REG_CLASS_NAMES): Likewise.
12935         (REG_CLASS_CONTENTS): Likewise.
12936         * config/mips/mips.c (mips_regno_to_class): Likewise.
12937         * config/mips/constraints.md (v): Likewise, but add documentation.
12938         Add a comment to say that this constraint should not be used in
12939         gcc code.
12940
12941 2008-07-11  DJ Delorie  <dj@redhat.com>
12942
12943         * config/h8300/h8300.md (length): Fix branch offset limit.
12944
12945 2008-07-11  Anatoly Sokolov  <aesok@post.ru>
12946
12947         * config/avr/avr-protos.h (avr_peep2_scratch_safe): Remove prototype.
12948         * config/avr/avr.c (avr_peep2_scratch_safe): Remove.
12949         (avr_hard_regno_scratch_ok): New function.
12950         (TARGET_HARD_REGNO_SCRATCH_OK): Define.
12951         * config/avr/avr.md (all peepholes that request a scratch register):
12952         Remove avr_peep2_scratch_safe use.
12953
12954 2008-07-11  Tom Tromey  <tromey@redhat.com>
12955             Ian Lance Taylor  <iant@google.com>
12956
12957         * c-common.h (enum rid): Add RID_CXX_COMPAT_WARN.
12958         (struct c_common_resword): Define.
12959         (D_CONLY, D_CXXONLY, D_C99, D_CXX0X, D_EXT, D_EXT89): Define.
12960         (D_ASM, D_OBJC, D_CXX_OBJC, D_CXXWARN): Define.
12961         (c_common_reswords, num_c_common_reswords): Declare.
12962         * c-common.c (c_common_reswords): New global const array.
12963         (num_c_common_reswords): New const int.
12964         * c-parser.c (struct resword, reswords): Don't define.
12965         (D_C89, D_EXT, D_EXT89, D_OBJC): Don't define.
12966         (c_parse_init): Clarify mask code.  Use c_common_reswords rather
12967         than reswords.  If warning about C++ keywords, give them a special
12968         RID code.
12969         (c_lex_one_token): Warn about C++ keywords.  Call
12970         objc_is_reserved_word rather than OBJC_IS_AT_KEYWORD.
12971         (c_parser_external_declaration): Look for RID_xxx rather than
12972         RID_AT_xxx, for ObjC++ keywords which are also C++ keywords.
12973         (c_parser_statement_after_labels): Likewise.
12974         (c_parser_objc_class_instance_variables): Likewise.
12975         (c_parser_objc_class_declaration): Likewise.
12976         (c_parser_objc_try_catch_statement): Likewise.
12977         * c-decl.c (c_print_identifier): Ignore RID_CXX_COMPAT_WARN.
12978         (declspecs_add_type): Likewise.
12979
12980 2008-07-11  Angelo Graziosi  <angelo.graziosi@alice.it>
12981
12982         * ggc-page.c (alloc_page):
12983         Substituting xmalloc, xcalloc with
12984         XNEWVEC and XCNEWVAR macros which add the
12985         needed casts.
12986
12987 2008-07-11  Richard Guenther  <rguenther@suse.de>
12988
12989         PR tree-optimization/36765
12990         * tree-ssa-alias.c (compute_flow_insensitive_aliasing): Add
12991         aliases from HEAP vars to SMTs.
12992
12993 2008-07-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12994
12995         * Makefile.in (LOOSE_WARN, STRICT_WARN): Update comments.
12996         * configure.ac (loose_warn): Move -Wc++-compat from here...
12997         (strict_warn): ...to here.
12998         * configure: Regenerate.
12999
13000 2008-07-10  Joseph Myers  <joseph@codesourcery.com>
13001
13002         * config.gcc (arm-*-coff*, armel-*-coff*, h8300-*-*,
13003         i[34567]86-*-aout*, i[34567]86-*-coff*, m68k-*-aout*,
13004         m68k-*-coff*, sh-*-*, mips-sgi-irix[56]*, pdp11-*-bsd,
13005         rs6000-ibm-aix4.[12]*, powerpc-ibm-aix4.[12]*): Deprecate targets,
13006         excluding more specific h8300-*-* and sh-*-* targets.
13007
13008 2008-07-10  Daniel Berlin  <dberlin@dberlin.org>
13009
13010         * tree-ssa-pre.c (create_expression_by_pieces): Add fold_convert calls.
13011         (eliminate): Ditto.
13012         (execute_pre): Call loop_optimizer_finalize in early exit.
13013
13014 2008-07-10  Jakub Jelinek  <jakub@redhat.com>
13015
13016         PR middle-end/36790
13017         * omp-low.c (lower_omp_2): If task_shared_vars, test all DECL_P
13018         uids in the bitmap, not just VAR_DECL uids.
13019
13020         PR rtl-optimization/36419
13021         * combine-stack-adj.c (adjust_frame_related_expr): New function.
13022         (combine_stack_adjustments_for_block): Call it if needed.  Delete
13023         correct insn.
13024         * dwarf2out.c (dwarf2out_frame_debug_expr): Adjust
13025         DW_CFA_GNU_args_size if CSA pass merged some adjustments into
13026         prologue sp adjustment.
13027
13028 2008-07-10  Peter Maydell  <pmaydell@chiark.greenend.org.uk>
13029
13030         PR other/28322
13031         * opts.c (print_ignored_options): Report postponed diagnostics for
13032         unknown -Wno-* options as warnings, not errors.
13033         (postpone_unknown_option_error): Renamed to...
13034         (postpone_unknown_option_warning): ... this.
13035
13036 2008-07-09  Doug Kwan  <dougkwan@google.com>
13037
13038         Revert:
13039         2008-07-08  Doug Kwan  <dougkwan@google.com>
13040
13041         * config/arm/arm.opt (mandroid): New option.
13042         * config/arm/bpabi.h (ANDROID_LINK_SPEC): New macro.
13043         (LINK_SPEC): Enable Android specific behaviour when -mandroid is used.
13044         (CC1_SPEC): Same.
13045         (CC1PLUS_SPEC): Same.
13046         (LIB_SPEC): Same.
13047         (STARTFILE_SPEC): Same.
13048         (ENDFILE_SPEC): Same.
13049         (TARGET_BPABI_CPP_BUILTINS): Define __ANDROID__ when -mandroid is
13050         used.
13051
13052 2008-07-09  Richard Sandiford  <rdsandiford@googlemail.com>
13053
13054         PR target/35802
13055         * config/mips/mips.h (reg_class): Remove V1_REG.
13056         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Update accordingly.
13057         * config/mips/mips.c (mips_regno_to_class): Map $3 to M16_NA_REGS
13058         instead of V1_REGS.
13059         (mips_get_tp): New function.
13060         (mips_legitimize_tls_address): Use it.
13061         * config/mips/constraints.md (v): Delete.
13062         * config/mips/mips.md (TLS_GET_TP_REGNUM): New constant.
13063         (tls_get_tp_<mode>): Allow any GPR destination and clobber $3.
13064         After reload, split into a move and ...
13065         (*tls_get_tp_<mode>_split): ...this new instruction.
13066
13067 2008-07-09  David Daney  <ddaney@avtrex.com>
13068
13069         * config/mips/driver-native.c: Include coretypes.h and tm.h.
13070
13071 2008-07-09  Jakub Jelinek  <jakub@redhat.com>
13072
13073         * gimplify.c (struct gimplify_ctx): Move to tree-gimple.h.
13074         (push_gimplify_context): Don't allocate temp_htab nor c itself here.
13075         Add c argument.
13076         (pop_gimplify_context): Check c->temp_htab instead of optimize whether
13077         htab_delete should be called.  Don't free c.
13078         (lookup_tmp_var): Create temp_htab lazily.
13079         (gimplify_scan_omp_clauses, gimplify_omp_parallel, gimplify_omp_task,
13080         gimplify_body, force_gimple_operand): Adjust push_gimplify_context
13081         callers.
13082         * omp-low.c (lower_omp_sections, lower_omp_single, lower_omp_master,
13083         lower_omp_ordered, lower_omp_critical, lower_omp_for,
13084         create_task_copyfn, lower_omp_taskreg, execute_lower_omp):
13085         * tree-ssa-ccp.c (convert_to_gimple_builtin): Likewise.
13086         * tree-sra.c (generate_element_init): Likewise.
13087         * tree-mudflap.c (execute_mudflap_function_ops,
13088         execute_mudflap_function_decls): Likewise.
13089         * tree-inline.c (setup_one_parameter, optimize_inline_calls): Likewise.
13090         * tree-gimple.h (struct gimplify_ctx): New type.
13091         (push_gimplify_context): Adjust prototype.
13092
13093 2008-07-09  Daniel Berlin  <dberlin@dberlin.org>
13094
13095         * tree-ssa-pre.c (phi_translate_1): Update placement of
13096         add_to_value calls.
13097
13098 2008-07-09  Anatoly Sokolov  <aesok@post.ru>
13099
13100         * target.h (struct gcc_target): Add hard_regno_scratch_ok field.
13101         * target-def.h (TARGET_HARD_REGNO_SCRATCH_OK): New.
13102         (TARGET_INITIALIZER): Use TARGET_HARD_REGNO_SCRATCH_OK.
13103         * targhooks.c (default_hard_regno_scratch_ok): New function.
13104         * targhooks.h (default_hard_regno_scratch_ok): Declare function.
13105         * doc/tm.texi: Document TARGET_HARD_REGNO_SCRATCH_OK hook.
13106         * recog.c:  Include "target.h".
13107         (peep2_find_free_register): Add check for global regs. Add target
13108         specific check.
13109         * Makefile.in (recog.o): Depend on target.h.
13110
13111 2008-07-09  Kaz Kojima  <kkojima@gcc.gnu.org>
13112
13113         * config/sh/sh.c (sh_canonical_va_list_type): New.
13114         (TARGET_CANONICAL_VA_LIST_TYPE): Define.
13115
13116 2008-07-09  Raksit Ashok <raksit@google.com>
13117
13118         * doc/invoke.texi (Option Summary): Mention new option
13119         -Wdisallowed-function-list=...
13120         (Warning Options): Document -Wdisallowed-function-list=...
13121         * common.opt (Wdisallowed-function-list=): New flag.
13122         * flags.h (warn_disallowed_functions): External definition of new
13123         boolean warning flag.
13124         (warn_if_disallowed_function_p): Declare new function.
13125         * opts.c (warning_disallowed_functions): New static variable.
13126         (warn_disallowed_functions): New boolean warning flag.
13127         (warn_if_disallowed_function_p): New function.
13128         (add_comma_separated_to_vector): Rename
13129         add_instrument_functions_exclude_list to this.
13130         (common_handle_option): Handle new option. Rename calls to
13131         add_instrument_functions_exclude_list into calls to
13132         add_comma_separated_to_vector.
13133         * c-parser.c (c_parser_postfix_expression_after_primary): New warning
13134         based on flag warn_disallowed_functions.
13135
13136 2008-07-09  Christian Bruel  <christian.bruel@st.com>
13137
13138         * final.c (get_attr_length_1): Call get_attr_length_1 with fallback_fn
13139          instead of get_attr_length.
13140
13141 2008-07-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13142
13143         * genattrtab.c (insert_right_side, evaluate_eq_attr): Avoid C++
13144         keywords.
13145         * genemit.c (gen_insn): Likewise.
13146         * gengtype.c (note_def_vec): Likewise.
13147         * gengtype.h (note_def_vec): Likewise.
13148         * genoutput.c (struct data, output_insn_data, process_template,
13149         gen_expand, gen_split, note_constraint): Likewise.
13150         * genrecog.c (new_decision, add_to_sequence, factor_tests,
13151         make_insn_sequence): Likewise.
13152         * gensupport.c (record_insn_name): Likewise.
13153
13154 2008-07-08  Doug Kwan  <dougkwan@google.com>
13155
13156         * config/arm/arm.opt (mandroid): New option.
13157         * config/arm/bpabi.h (ANDROID_LINK_SPEC): New macro.
13158         (LINK_SPEC): Enable Android specific behaviour when -mandroid is used.
13159         (CC1_SPEC): Same.
13160         (CC1PLUS_SPEC): Same.
13161         (LIB_SPEC): Same.
13162         (STARTFILE_SPEC): Same.
13163         (ENDFILE_SPEC): Same.
13164         (TARGET_BPABI_CPP_BUILTINS): Define __ANDROID__ when -mandroid is
13165         used.
13166
13167 2008-07-08  Raksit Ashok  <raksit@google.com>
13168
13169         * expr.c (emit_block_move_via_movmem): Fix expected_align parameter.
13170         (set_storage_via_setmem): Fix expected_align parameter.
13171         * doc/invoke.texi (i386 and x86-64 Options): Add a couple of options
13172         missing from the list.
13173         * doc/md.texi (movmem): Explicitly state that expected alignment is
13174         to be expressed in bytes.
13175         (setmem): Explicitly state that expected alignment is to be expressed
13176         in bytes.
13177
13178 2008-07-08  Joseph Myers  <joseph@codesourcery.com>
13179
13180         * reload.c (find_reloads_subreg_address): Do not require validity
13181         of address in original mode before reloading address.
13182
13183 2008-07-07  Tianwei Sheng  <tianweis@google.com>
13184
13185         * df-core.c (df_remove_problem): Adjust the access to avoid out of
13186         bounds array access.
13187
13188 2008-07-08  Jakub Jelinek  <jakub@redhat.com>
13189
13190         * tree-sra.c (sra_build_assignment): Handle CONVERT_EXPR_P dst.
13191
13192 2008-07-05  Daniel Berlin  <dberlin@dberlin.org>
13193
13194         Fix PR tree-optimization/23455
13195         Fix PR tree-optimization/35286
13196         Fix PR tree-optimization/35287
13197         * Makefile.in (OBJS-common): Remove tree-vn.o.
13198         (tree-vn.o): Remove.
13199         * dbgcnt.def: Add treepre_insert debug counter.
13200         * gcc/tree-flow.h (add_to_value): Updated for other changes.
13201         (debug_value_expressions): Ditto.
13202         (print_value_expressions): Ditto.
13203         * tree-pretty-print.c (dump_generic_node): Updated for
13204         VALUE_HANDLE removal.
13205         * tree-ssa-dom.c (record_equality): Ditto.
13206         (cprop_operand): Ditto.
13207         (lookup_avail_expr): Ditto.
13208         * tree-ssa-threadedge.c
13209         (record_temporary_equivalences_from_stmts_at_dest): Ditto.
13210         (simplify_control_stmt_condition): Ditto.
13211         * tree.c (tree_code_size): Ditto.
13212         (tree_node_structure): Ditto.
13213         (iterative_hash_expr): Ditto.
13214         * tree.def: Ditto.
13215         * tree.h (VALUE_HANDLE_ID): Ditto.
13216         (VALUE_HANDLE_EXPR_SET): Ditto.
13217         (struct tree_value_handle): Ditto.
13218         (union tree_node): Ditto.
13219         * treestruct.def: Ditto.
13220         * tree-vn.c: Removed.
13221         * tree-ssa-pre.c: Rewritten entirely.
13222         * tree-ssa-sccvn.c (constant_to_value_id): New hashtable.
13223         (constant_value_ids): Ditto.
13224         (vn_nary_op_t): Moved to header.
13225         (vn_phi_t): Ditto.
13226         (vn_reference_op_t): Ditto
13227         (vn_reference_t): Ditto.
13228         (next_value_id): New variable.
13229         (VN_INFO): Add an assert.
13230         (vn_constant_eq): New function.
13231         (vn_constant_hash): Ditto.
13232         (get_or_alloc_constant_value_id): Ditto.
13233         (value_id_constant_p): Ditto.
13234         (vn_reference_compute_hash): De-staticify.
13235         (copy_reference_ops_from_ref): Don't use get_callee_fndecl.
13236         Disable some code with a FIXME.  Remove VALUE_HANDLE use.
13237         (valueize_refs): Update opcode if it changes from ssa name to constant.
13238         (vn_reference_lookup_1): Add new argument.
13239         (vn_reference_lookup):  Ditto.
13240         (vn_reference_lookup_pieces): New function.
13241         (vn_reference_insert): Add return type. Modify to deal with value ids.
13242         (vn_reference_insert_pieces):  New function.
13243         (vn_nary_op_compute_hash): De-staticify.
13244         (vn_nary_op_eq): Ditto.
13245         (vn_nary_op_lookup_pieces): New function.
13246         (vn_nary_op_lookup): Add new argument.
13247         (vn_nary_op_insert_pieces): New function.
13248         (vn_nary_op_insert): Add return type. Modify to deal with value ids.
13249         (vn_phi_insert): Ditto.
13250         (visit_unary_op): Update for callee changes.
13251         (visit_binary_op): Ditto.
13252         (visit_reference_op_load): Ditto.
13253         (visit_reference_op_store): Ditto.
13254         (init_scc_vn): Init next_value_id, constant_to_value_id and
13255         constant_value_ids.
13256         (free_scc_vn): Free them.
13257         (set_hashtable_value_ids): New function.
13258         (run_scc_vn): Use it.
13259         (get_max_value_id): New function.
13260         (get_next_value_id): Ditto.
13261         (expressions_equal_p): Moved from tree-vn.c
13262         (sort_vuses): Ditto.
13263         (sort_vuses_heap): Ditto.
13264         * tree-ssa-sccvn.h: Structures moved from tree-ssa-sccvn.c (noted
13265         above).
13266         * tree.c (iterative_hash_hashval_t): Made non-static
13267         * tree.h (iterative_hash_hashval_t): Declare it.
13268
13269 2008-07-08  Martin Jambor  <mjambor@suse.cz>
13270
13271         * ipa-cp.c (ipcp_init_cloned_node): Call ipa_check_create_node_params
13272         instead of ipa_create_node_params.
13273         (ipcp_driver): Allocate infos with ipa_check_create_node_params and
13274         ipa_check_create_edge_args, free them with
13275         free_all_ipa_structures_after_ipa_cp, call ipa_register_cgraph_hooks.
13276
13277         * ipa-prop.c: Include flags.h and tree-inline.h.
13278         (ipa_node_params_vector): New variable.
13279         (ipa_edge_args_vector): New variable.
13280         (edge_removal_hook_holder): New variable.
13281         (node_removal_hook_holder): New variable.
13282         (edge_duplication_hook_holder): New variable.
13283         (node_duplication_hook_holder): New variable.
13284         (ipa_detect_param_modifications): Check for presence of modified flags.
13285         (ipa_compute_jump_functions): Check for presence of jump functions.
13286         (ipa_free_edge_args_substructures): New function.
13287         (ipa_create_node_params): Removed.
13288         (ipa_free_all_edge_args): Changed to deallocate the on-the-side vector.
13289         (ipa_free_node_params_substructures): New function.
13290         (ipa_free_all_node_params): Changed to deallocate the on-the-side
13291         vector.
13292         (ipa_edge_removal_hook): New function.
13293         (ipa_node_removal_hook): New function.
13294         (duplicate_array): New function.
13295         (ipa_edge_duplication_hook): New function.
13296         (ipa_node_duplication_hook): New function.
13297         (ipa_register_cgraph_hooks): New function.
13298         (ipa_unregister_cgraph_hooks): New function.
13299         (free_all_ipa_structures_after_ipa_cp): New function.
13300
13301         * ipa-prop.h: Include vec.h.
13302         (ipa_node_params_t): New typedef with vector types for it.
13303         (ipa_edge_args_t):  New typedef with vector types for it.
13304         (IPA_NODE_REF): Changed to access an on-the-side vector.
13305         (IPA_EDGE_REF): Changed to access an on-the-side vector.
13306         (ipa_check_create_node_params): New function.
13307         (ipa_check_create_edge_args): New function.
13308
13309         * Makefile.in (IPA_PROP_H): New variable for ipa-prop.h.  Converted
13310         all users.
13311
13312 2008-07-07  Tom Tromey  <tromey@redhat.com>
13313
13314         * configure, config.in: Rebuilt.
13315         * configure.ac: Don't check for scandir or alphasort.
13316
13317 2008-07-07  Joseph Myers  <joseph@codesourcery.com>
13318
13319         * config/arm/arm.c (arm_init_neon_builtins): Register built-in
13320         types immediately after creating them.
13321
13322 2008-07-07  Joseph Myers  <joseph@codesourcery.com>
13323
13324         * config/arm/aout.h (DOLLARS_IN_IDENTIFIERS): Remove.
13325
13326 2008-07-07  Fernando Pereira <fernando@cs.ucla.edu>
13327
13328         * tree-ssa-structalias.c (compute_points_to_sets): Add call to
13329         dump_constraint_graph.
13330         (dump_constraint_edge): New function.
13331         (dump_constraint_graph): New function.
13332         (debug_constraint_graph): New function.
13333         (dump_constraint): Removed useless comparison.
13334         * tree-ssa-structalias.h (dump_constraint_edge): Declare.
13335         (dump_constraint_graph): Declare.
13336         (debug_constraint_graph): Declare.
13337         * tree-dump.c (struct dump_option_value_info): Declare TDF_GRAPH.
13338
13339 2008-07-07  Kai Tietz  <kai.tietz@onevision.com>
13340
13341         * config/i386/i386.c (is_va_list_char_pointer): New.
13342         (ix86_va_start): Replace compare with ms_va_list_type_node
13343         by is_va_list_char_pointer.
13344         (ix86_gimplify_va_arg): Likewise.
13345
13346 2008-07-07  Martin Jambor  <mjambor@suse.cz>
13347
13348         * cgraph.c (cgraph_edge_max_uid): New variable.
13349         (struct cgraph_edge_hook_list): New type.
13350         (struct cgraph_node_hook_list): New type.
13351         (struct cgraph_2edge_hook_list): New type.
13352         (struct cgraph_2node_hook_list): New type.
13353         (first_cgraph_edge_removal_hook): New variable.
13354         (first_cgraph_node_removal_hook): New variable.
13355         (first_cgraph_edge_duplicated_hook): New variable.
13356         (first_cgraph_node_duplicated_hook): New variable.
13357         (cgraph_add_edge_removal_hook): New function.
13358         (cgraph_remove_edge_removal_hook): New function.
13359         (cgraph_call_edge_removal_hooks):  New function.
13360         (cgraph_add_node_removal_hook):  New function.
13361         (cgraph_remove_node_removal_hook):  New function.
13362         (cgraph_call_node_removal_hooks):  New function.
13363         (cgraph_add_edge_duplication_hook):  New function.
13364         (cgraph_remove_edge_duplication_hook):  New function.
13365         (cgraph_call_edge_duplication_hooks):  New function.
13366         (cgraph_add_node_duplication_hook):  New function.
13367         (cgraph_remove_node_duplication_hook):  New function.
13368         (cgraph_call_node_duplication_hooks):  New function.
13369         (cgraph_create_edge): Assign to edge uid.
13370         (cgraph_remove_edge): Call edge removal hooks.
13371         (cgraph_node_remove_callees): Call edge removal hooks.
13372         (cgraph_node_remove_callers): Call edge removal hooks.
13373         (cgraph_remove_node): Call node removal hooks.
13374         (cgraph_clone_edge): Call edge duplication hooks.
13375         (cgraph_clone_node): Call node duplication hooks.
13376
13377         * cgraph.h (cgraph_edge): New field uid.
13378         (cgraph_edge_hook): New type.
13379         (cgraph_node_hook): New type.
13380         (cgraph_2edge_hook): New type.
13381         (cgraph_2node_hook): New type.
13382
13383 2008-07-07  Andreas Tobler  <a.tobler@schweiz.org>
13384
13385         * config.in: Regenerate.
13386
13387 2008-07-07  Vladimir Prus  <vladimir@codesourcery.com>
13388
13389         * gcc.c (print_sysroot): New.
13390         (option_map, display_help, process_command): Handle the
13391         -print-sysroot option.
13392         (main): Print the sysroot if requested.
13393         * doc/invoke.texi (Debugging Options): Document -print-sysroot.
13394
13395 2008-07-07  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
13396
13397         PR target/34780
13398         * unwind-pe.h (size_of_encoded_value): add attribute unused.
13399
13400 2008-07-07  Daniel Jacobowitz  <dan@codesourcery.com>
13401
13402         * function.c (assign_parm_remove_parallels): Check mode of entry_parm.
13403         (assign_parm_setup_block_p): Also check mode of entry_parm.
13404
13405 2008-07-07  Richard Guenther  <rguenther@suse.de>
13406
13407         * tree-ssa-structalias.h (set_used_smts): Remove.
13408         * tree-ssa-structalias.c (used_smts): Likewise.
13409         (set_used_smts): Likewise.
13410         * tree-ssa-alias.c (compute_flow_sensitive_aliasing): Remove
13411         call to set_used_smts.
13412
13413 2008-07-07  Richard Guenther  <rguenther@suse.de>
13414
13415         * tree-ssa-structalias.c (struct variable_info): Add is_full_var flag.
13416         (new_var_info): Set it to false.
13417         (solution_set_add): Correctly handle pointers outside a var and
13418         inside a field.
13419         (type_safe): Treat variables with is_full_var properly.
13420         (do_sd_constraint): Likewise.
13421         (do_ds_constraint): Likewise.
13422         (process_constraint): Remove zeroing offset for !use_field_sensitive.
13423         (get_constraint_for_ptr_offset): New function.
13424         (get_constraint_for_component_ref): For addresses at least include
13425         the last field of the variable.  Handle is_full_vars properly.
13426         (get_constraint_for_1): Factor common code, handle POINTER_PLUS_EXPR.
13427         (handle_ptr_arith): Remove.
13428         (find_func_aliases): Simplify assignment handling.
13429         (create_function_info_for): For parameter and result varinfos set
13430         is_full_var flag.
13431         (create_variable_info_for): Set is_full_var flag whenever we
13432         just created a single varinfo for a decl.
13433         (init_alias_vars): Initialize use_field_sensitive from
13434         max-fields-for-field-sensitive parameter.
13435
13436 2008-07-07  Richard Guenther  <rguenther@suse.de>
13437
13438         PR tree-optimization/36713
13439         * tree-flow-inline.h (is_call_used): New function.
13440         * tree-nrv.c (dest_safe_for_nrv_p): Use it.
13441         * tree-tailcall.c (suitable_for_tail_opt_p): Likewise.
13442         * tree-outof-ssa.c (create_temp): Set call-used flag if required.
13443
13444 2008-07-07  Maxim Kuvyrkov  <maxim@codesourcery.com>
13445
13446         * config/m68k/m68k.c (m68k_return_in_memory): Fix arguments types.
13447
13448 2008-07-07  Mark Shinwell  <shinwell@codesourcery.com>
13449
13450         * config/m68k/lb1sf68.asm: Add PIC macros for Linux targets.
13451
13452 2008-07-07  Maxim Kuvyrkov  <maxim@codesourcery.com>
13453             Nathan Sidwell  <nathan@codesourcery.com>
13454
13455         * config.gcc (m68k-*-linux*): Add with_arch.  Add sysroot-suffix.h
13456         to tm_file.  Add m68k/t-floatlib, m68k/t-linux & m68k/t-mlibs to
13457         tmake_file.
13458         * config/m68k/t-linux: New.
13459         * doc/install.texi: Document m68k-*-linux is now multilibbed by
13460         default.
13461
13462 2008-07-07  Nathan Sidwell  <nathan@codesourcery.com>
13463
13464         * config/m68k/t-cf (MULTILIB_EXTRA_OPTS): Add no-mac.
13465         * config/m68k/m68k-devices.def: Remove multilibs that only differ
13466         by MAC/EMAC.
13467
13468 2008-07-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13469
13470         * gcc.c (execute): Fix -Wc++-compat warning.
13471
13472 2008-07-06  H.J. Lu  <hongjiu.lu@intel.com>
13473
13474         PR target/36720
13475         * config/ia64/ia64.c (ia64_split_tmode): Fix typo in TImode
13476         constant for little endian.
13477
13478 2008-07-06  Richard Sandiford  <rdsandiford@googlemail.com>
13479
13480         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Check
13481         mips_base_mips16 instead of TARGET_MIPS16.
13482         (mips_base_mips16): Declare.
13483         * config/mips/mips.c (mips_base_mips16): Make global.
13484         (was_mips16_p): Remove GTY marker.
13485         (was_mips16_pch_p): New variable.
13486         (mips_set_mips16_mode): Check both was_mips16_p and was_mips16_pch_p.
13487         (mips_override_options): Force to non-MIPS16 mode initially.
13488         Do not complain about MIPS16 PIC incompatibilities here.
13489         Only allow -mgpopt if -mexplicit-relocs is in force for
13490         non-MIPS16 code.
13491
13492 2008-07-06  Andreas Tobler  <a.tobler@schweiz.org>
13493
13494         * configure.ac: Check for caddr_t, define to char * if not defined.
13495         * configure: Regenerate.
13496         * ggc-common.c (mmap_gt_pch_get_address): Fix -Wc++-compat warnings.
13497         (mmap_gt_pch_use_address): Likewise.
13498         * config/host-solaris.c (sol_gt_pch_use_address): Likewise.
13499
13500 2008-07-06  Richard Guenther  <rguenther@suse.de>
13501
13502         * tree-ssa-structalias.c (struct variable_info): Remove has_union.
13503         (new_var_info): Deal with it.
13504         (solution_set_add): Likewise.
13505         (bitpos_of_field): Make signed, fix.
13506         (struct fieldoff): Remove type and decl fields.  Make size field
13507         unsigned HOST_WIDE_INT.  Add has_unknown_size and may_have_pointers
13508         flags.
13509         (fieldoff_compare): Deal with it.
13510         (push_fields_onto_fieldstack): Remove has_union argument, glob
13511         adjacent non-pointer fields together.
13512         (create_function_info_for): Do not set has_union.
13513         (create_variable_info_for): Simplify.
13514
13515 2008-07-06  Kai Tietz  <kai.tietz@onevision.com>
13516
13517         * config.gcc (extra_headers): Add cross-stdarg.h for target
13518         x86_64-*-* and i?86-*-*.
13519         * config/i386/cross-stdarg.h: New.
13520         * builtins.c (std_fn_abi_va_list): New.
13521         (std_canonical_va_list_type): New.
13522         (stabilize_va_list): Replace va_list_type_node use by
13523         mtarget.canonical_va_list_type.
13524         (gimplify_va_arg_expr): Likewise.
13525         (expand_builtin_va_copy): Replace va_list_type_node use by
13526         mtarget.fn_abi_va_list.
13527         * tree-sra.c (is_va_list_type): New helper.
13528         (decl_can_be_decomposed_p): Replace
13529         va_list_type_node use by is_va_list_type.
13530         * tree-ssa-ccp.c (optimize_stdarg_builtin): Likewise.
13531         * tree-stdarg.c (execute_optimize_stdarg): Likewise.
13532         * c-common.c (c_common_nodes_and_builtins): Use TARGET_ENUM_VA_LIST.
13533         * config/i386/i386-protos.h (ix86_get_valist_type): New.
13534         (ix86_enum_va_list): New.
13535         * config/i386/i386.c (sysv_va_list_type_node): New.
13536         (ms_va_list_type_node): New.
13537         (ix86_function_type_abi): Remove sorry.
13538         (ix86_build_builtin_va_list_abi): New.
13539         (ix86_build_builtin_va_list): Call ix86_build_builtin_va_list_abi
13540         for 64-bit targets.
13541         (ix86_va_start): Replace va_list_type_node by sysv_va_list_type_node.
13542         (ix86_init_builtins_va_builtins_abi): New.
13543         (ix86_init_builtins): Use ix86_init_builtins_va_builtins_abi
13544         for 64-bit targets.
13545         (ix86_handle_abi_attribute): New.
13546         (attribute_spec): Add sysv_abi and ms_abi.
13547         (ix86_fn_abi_va_list): New.
13548         (ix86_canonical_va_list_type): New.
13549         (ix86_enum_va_list): New.
13550         (TARGET_FN_ABI_VA_LIST): New.
13551         (TARGET_CANONICAL_VA_LIST_TYPE): New.
13552         * config/i386/i386.h (TARGET_ENUM_VA_LIST): New.
13553         * doc/tm.texi (TARGET_FN_ABI_VA_LIST): New.
13554         (TARGET_CANONICAL_VA_LIST_TYPE): New.
13555         (TARGET_ENUM_VA_LIST): New.
13556         * expr.h (std_fn_abi_va_list): New.
13557         (std_canonical_va_list_type): New.
13558         * target-def.h (TARGET_FN_ABI_VA_LIST): New.
13559         (TARGET_CANONICAL_VA_LIST_TYPE): New.
13560         (TARGET_INITIALIZER): Add TARGET_FN_ABI_VA_LIST and
13561         TARGET_CANONICAL_VA_LIST_TYPE.
13562         * target.h (struct gcc_target): Add fn_abi_va_list hook
13563         and canonical_va_list_type hook.
13564
13565 2008-07-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13566
13567         * fold-const.c (fold_convert_const): Treat OFFSET_TYPE the same as
13568         integral and pointer types.
13569
13570 2008-07-04  Roger Sayle  <roger@eyesopen.com>
13571
13572         * config/rs6000/host-darwin.c (darwin_rs6000_extra_signals): Cast
13573         the "void*" result of xmalloc to "char*" to fix bootstrap breakage.
13574
13575 2008-07-04  Kaz Kojima  <kkojima@gcc.gnu.org>
13576
13577         PR target/36684
13578         * config/sh/sh.h (OVERRIDE_OPTIONS): Disable -fschedule-insns for PIC.
13579
13580 2008-07-04  Jakub Jelinek  <jakub@redhat.com>
13581
13582         * tree-switch-conversion.c (build_one_array, gen_def_assigns): Use
13583         build_gimple_modify_stmt.
13584         (build_arrays, gen_inbound_check): Likewise.  Force RHS to be
13585         gimple operand.  Use fold_build* instead of build*.
13586
13587 2008-07-04  Richard Guenther  <rguenther@suse.de>
13588
13589         * tree-ssa-structalias.c (lookup_vi_for_tree): Declare.
13590         (do_sd_constraint): Handle a dereference of ESCAPED and CALLUSED
13591         properly to compute the reachability set if we do field-sensitive PTA.
13592         * invoke.texi (max-fields-for-field-sensitive): Document default.
13593         * opts.c (decode_options): Set max-fields-for-field-sensitive to
13594         100 for optimize >= 2.
13595
13596 2008-07-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13597
13598         * ggc-zone.c (lookup_page_table_if_allocated,
13599         set_page_table_entry, zone_find_object_size, alloc_small_page,
13600         alloc_large_page, ggc_free, gt_ggc_m_S, ggc_marked_p, init_ggc,
13601         new_ggc_zone, init_ggc_pch, ggc_pch_this_base, ggc_pch_read): Fix
13602         -Wc++-compat and/or -Wcast-qual warnings.
13603
13604 2008-07-04  Alan Modra  <amodra@bigpond.net.au>
13605
13606         PR target/36634
13607         * config/rs6000/rs6000.md (call, call_value): Don't arrange for
13608         pic_offset_table_rtx to be marked as used here.
13609         (call_nonlocal_sysv, call_value_nonlocal_sysv): Add split for
13610         TARGET_SECURE_PLT to "use" pic_offset_table_rtx.
13611         (call_nonlocal_sysv_secure, call_value_nonlocal_sysv_secure): New insn.
13612         (sibcall_nonlocal_sysv, sibcall_value_nonlocal_sysv): Assert
13613         !TARGET_SECURE_PLT.
13614
13615 2008-07-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13616
13617         * alloc-pool.c (hash_descriptor, eq_descriptor,
13618         alloc_pool_descriptor): Fix -Wc++-compat warnings.
13619         * bitmap.c (hash_descriptor, eq_descriptor, bitmap_descriptor):
13620         Likewise.
13621         * ggc-common.c (hash_descriptor, eq_descriptor, hash_ptr, eq_ptr,
13622         loc_descriptor, ggc_prune_ptr, ggc_free_overhead,
13623         final_cmp_statistic, cmp_statistic, dump_ggc_loc_statistics): Likewise.
13624         * varray.c (hash_descriptor, eq_descriptor, varray_descriptor):
13625         Likewise.
13626
13627 2008-07-03  Eric Botcazou  <ebotcazou@adacore.com>
13628
13629         * tree-flow.h (loop_only_exit_p): Declare.
13630         * tree-ssa-loop-niter.c (loop_only_exit_p): Make public.
13631         * tree-ssa-loop-ivopts.c (may_eliminate_iv): Reinstate direct check on
13632         the number of iterations if it is constant.  Otherwise, if this is the
13633         only possible exit of the loop, use the conservative estimate on the
13634         number of iterations of the entire loop if available.
13635
13636 2008-07-03  Richard Sandiford  <rdsandiford@googlemail.com>
13637
13638         * Makefile.in (libgcc.mvars): Add LIBGCC_SYNC and LIBGCC_SYNC_CFLAGS.
13639         * libgcc-std.ver (GCC_4.4.0): New version, inherited from GCC_4.3.0.
13640         Add synchronization functions.
13641         * config/sync.c: New file.
13642         * config/mips/t-libgcc-mips16 (LIBGCC_SYNC): Define.
13643         (LIBGCC_SYNC_CFLAGS): Likewise.
13644
13645 2008-07-03  Uros Bizjak  <ubizjak@gmail.com>
13646
13647         PR target/36710
13648         * config/i386/i386.md (mode): Add TF to "mode" attribute.
13649         (*pushtf_sse): New insn pattern.
13650         (pushtf splitters): New splitters.
13651
13652 2008-07-03  Michael Meissner  <gnu@the-meissners.org>
13653
13654         PR middle-end/35736
13655         * predict.c (build_predict_expr): Use void_type_node for the tree
13656         type, instead of NULL_TREE.
13657
13658 2008-07-03  H.J. Lu  <hongjiu.lu@intel.com>
13659
13660         * config/i386/i386.c (contains_aligned_value_p): Return true
13661         for TCmode.
13662         (ix86_data_alignment): Align TCmode to 128bits.
13663         (ix86_local_alignment): Likewise.
13664
13665 2008-07-03  Andrew Haley  <aph@redhat.com>
13666
13667         PR bootstrap/33304
13668         * vec.h (VEC_TA): New.
13669         (DEF_VEC_I, DEF_VEC_P, DEF_VEC_ALLOC_I, DEF_VEC_ALLOC_P,
13670         DEF_VEC_O, DEF_VEC_ALLOC_O: Use VEC_TA.
13671         * c-common.c (C_COMMON_FIXED_TYPES_SAT): New macro.
13672         (C_COMMON_FIXED_MODE_TYPES_SAT): New macro.
13673         (C_COMMON_FIXED_TYPES): Remove first arg.
13674         (C_COMMON_FIXED_MODE_TYPES): Likewise.
13675         * tree.c (MAKE_FIXED_TYPE_NODE): Break into two macros,
13676         MAKE_FIXED_TYPE_NODE and MAKE_FIXED_TYPE_NODE_WIDTH in order
13677         not to use empty macro arguments.
13678
13679 2008-07-02  Joseph Myers  <joseph@codesourcery.com>
13680
13681         * config/alpha/vms_tramp.asm, config/arm/crti.asm,
13682         config/arm/crtn.asm, config/bfin/crti.s, config/bfin/crtlibid.s,
13683         config/bfin/crtn.s, config/fr30/crti.asm, config/fr30/crtn.asm,
13684         config/frv/lib1funcs.asm, config/i386/sol2-c1.asm,
13685         config/i386/sol2-ci.asm, config/i386/sol2-cn.asm,
13686         config/i386/sol2-gc1.asm, config/ia64/crti.asm,
13687         config/ia64/crtn.asm, config/m68hc11/larith.asm,
13688         config/m68hc11/m68hc11-crt0.S, config/m68k/crti.s,
13689         config/m68k/crtn.s, config/mcore/crti.asm, config/mcore/crtn.asm,
13690         config/rs6000/crtresfpr.asm, config/rs6000/crtresgpr.asm,
13691         config/rs6000/crtresxfpr.asm, config/rs6000/crtresxgpr.asm,
13692         config/rs6000/crtsavfpr.asm, config/rs6000/crtsavgpr.asm,
13693         config/rs6000/crtsavres.asm, config/rs6000/e500crtres32gpr.asm,
13694         config/rs6000/e500crtres64gpr.asm,
13695         config/rs6000/e500crtres64gprctr.asm,
13696         config/rs6000/e500crtrest32gpr.asm,
13697         config/rs6000/e500crtrest64gpr.asm,
13698         config/rs6000/e500crtresx32gpr.asm,
13699         config/rs6000/e500crtresx64gpr.asm,
13700         config/rs6000/e500crtsav32gpr.asm,
13701         config/rs6000/e500crtsav64gpr.asm,
13702         config/rs6000/e500crtsav64gprctr.asm,
13703         config/rs6000/e500crtsavg32gpr.asm,
13704         config/rs6000/e500crtsavg64gpr.asm,
13705         config/rs6000/e500crtsavg64gprctr.asm, config/rs6000/eabi-ci.asm,
13706         config/rs6000/eabi-cn.asm, config/rs6000/eabi.asm,
13707         config/rs6000/sol-ci.asm, config/rs6000/sol-cn.asm,
13708         config/rs6000/tramp.asm, config/sparc/sol2-ci.asm,
13709         config/sparc/sol2-cn.asm: Remove .file directives.
13710
13711 2008-07-02  Richard Sandiford  <rdsandiford@googlemail.com>
13712
13713         * resource.c (mark_referenced_resources): Look inside
13714         UNSPEC_VOLATILEs and ASM_INPUTs.
13715
13716 2008-07-02  Ian Lance Taylor  <iant@google.com>
13717
13718         * rtlanal.c (add_reg_note): New function.
13719         * rtl.h (add_reg_note): Declare.
13720         * auto-inc-dec.c (attempt_change): Use add_reg_note.
13721         * bb-reorder.c (add_reg_crossing_jump_notes): Likewise.
13722         * builtins.c (expand_builtin_longjmp): Likewise.
13723         (expand_builtin_nonlocal_goto): Likewise.
13724         * calls.c (emit_call_1, expand_call): Likewise.
13725         * cfgexpand.c (add_reg_br_prob_note): Likewise.
13726         * cfglayout.c (fixup_reorder_chain): Likewise.
13727         * cfgrtl.c (force_nonfallthru_and_redirect): Likewise.
13728         (commit_one_edge_insertion): Likewise.
13729         * combine.c (move_deaths, distribute_notes): Likewise.
13730         * df-problems.c (df_set_note): Likewise.
13731         * emit-rtl.c (link_cc0_insns, try_split): Likewise.
13732         (set_unique_reg_note): Likewise.
13733         (emit_copy_of_insn_after): Likewise.
13734         * expr.c (expand_expr_real): Likewise.
13735         * gcse.c (add_label_notes): Likewise.
13736         * haifa-sched.c (create_check_block_twin): Likewise.
13737         * jump.c (mark_jump_label_1): Likewise.
13738         * loop-doloop.c (add_test, doloop_modify): Likewise.
13739         * loop-unswitch.c (compare_and_jump_seq): Likewise.
13740         * lower-subreg.c (move_eh_region_note): Likewise.
13741         * optabs.c (emit_libcall_block): Likewise.
13742         * predict.c (predict_insn): Likewise.
13743         (combine_predictions_for_insn): Likewise.
13744         * recog.c (peephole2_optimize): Likewise.
13745         * regmove.c (try_auto_increment): Likewise.
13746         * reg-stack.c (emit_pop_insn, move_for_stack_reg): Likewise.
13747         * reload.c (find_reloads): Likewise.
13748         * reload1.c (fixup_eh_region_note): Likewise.
13749         (reload_as_needed, add_auto_inc_notes, copy_eh_notes): Likewise.
13750         * reorg.c (delete_prior_computation): Likewise.
13751         (delete_computation, dbr_schedule): Likewise.
13752         * config/pa/pa.c (legitimize_pic_address): Likewise.
13753         * config/sh/sh.c (sh_reorg): Likewise.
13754
13755 2008-07-02  H.J. Lu  <hongjiu.lu@intel.com>
13756
13757         PR target/36669
13758         * config/libgcc-glibc.ver: Add %exclude.
13759         * config/m32r/libgcc-glibc.ver: Likwise.
13760         * config/s390/libgcc-glibc.ver: Likwise.
13761         * config/sh/libgcc-glibc.ver: Likwise.
13762         * config/sparc/libgcc-sparc-glibc.ver: Likwise.
13763
13764         * config/i386/libgcc-glibc.ver: New.
13765
13766         * config/i386/libgcc-x86_64-glibc.ver: Removed.
13767
13768 2008-07-02  H.J. Lu  <hongjiu.lu@intel.com>
13769
13770         * config.gcc: Remove i386/t-fprules-softfp64 soft-fp/t-softfp
13771         from tmake_file from i[34567]86-*-darwin*, x86_64-*-darwin*,
13772         i[34567]86-*-linux*, x86_64-*-linux*.  Add
13773         i386/t-fprules-softfp and soft-fp/t-softfp to tmake_file for
13774         i[34567]86-*-darwin*, x86_64-*-darwin*, i[34567]86-*-linux*,
13775         x86_64-*-linux*.  Add i386/t-linux to tmake_file for
13776         i[34567]86-*-linux*, x86_64-*-linux*.
13777
13778         * libgcc-std.ver: Add empty GCC_4.4.0.
13779
13780         * mkmap-symver.awk: Support multiple versions per symbol.
13781
13782         * config/i386/i386.c (ix86_init_builtins): Always define
13783         __builtin_fabsq and __builtin_copysignq with fallbacks.
13784         (ix86_expand_builtin): Emit normal call for __builtin_fabsq
13785         and __builtin_copysignq if SSE2 isn't available.
13786
13787         * config/i386/linux.h (LIBGCC2_HAS_TF_MODE): Defined.
13788         (LIBGCC2_TF_CEXT): Likwise.
13789         (TF_SIZE): Likwise.
13790
13791         * config/i386/linux64.h (LIBGCC2_HAS_TF_MODE): Defined as 1.
13792
13793         * config/i386/sfp-machine.h: Moved to libgcc.
13794
13795         * config/i386/sfp-machine.h: New.
13796         * config/i386/t-linux: Likwise.
13797
13798         * config/i386/t-darwin: Remove softfp_wrap_start and
13799         softfp_wrap_end.
13800         * config/i386/t-darwin64: Likewise.
13801
13802         * config/i386/t-fprules-softfp64: Renamed to ...
13803         * config/i386/t-fprules-softfp: This.
13804
13805         * config/i386/t-linux64: Remove SHLIB_MAPFILES, softfp_wrap_start
13806         and softfp_wrap_end.
13807
13808 2008-07-02  Jason Merrill  <jason@redhat.com>
13809
13810         * tree.c (ctor_to_list): Use FOR_EACH_CONSTRUCTOR_ELT.
13811
13812         * tree.c (ctor_to_list): New fn.
13813         * tree.h: Declare it.
13814         (CONSTRUCTOR_ELT): New macro.
13815         (CONSTRUCTOR_NELTS): New macro.
13816
13817 2008-07-02  Richard Guenther  <rguenther@suse.de>
13818
13819         * tree-ssa-structalias.c (struct variable_info): Reorder
13820         to fill padding on 64bit hosts.  Make collapsed_to an int.
13821         (get_varinfo_fc): Deal with that.
13822         (new_var_info): Likewise.
13823         (collapse_rest_of_var): Likewise.
13824
13825 2008-07-02  Joshua Sumali  <jsumali@redhat.com>
13826
13827         * doc/install.texi (--enable-java-home): Document.
13828         (--enable-aot-compile-rpm): Likewise.
13829         (--with-arch-directory): Likewise.
13830         (--with-os-directory): Likewise.
13831         (--with-origin-name): Likewise.
13832         (--with-arch-suffix): Likewise.
13833         (--with-jvm-root-dir): Likewise.
13834         (--with-jvm-jar-dir): Likewise.
13835         (--with-python-dir): Likewise.
13836
13837 2008-07-02  Richard Guenther  <rguenther@suse.de>
13838
13839         * tree-ssa-forwprop.c (can_propagate_from): Exclude loads
13840         from decls explicitly.  Merge operand checking from tuples.
13841
13842 2008-07-02  Martin Jambor  <mjambor@suse.cz>
13843
13844         * tree-switch-conversion.c: Included timevar.h which I forgot before.
13845
13846 2008-07-02  Martin Jambor  <mjambor@suse.cz>
13847
13848         * tree-switch-conversion.c: Included timevar.h
13849         (pass_convert_switch): Added a timevar id (TV_TREE_SWITCH_CONVERSION).
13850
13851         * timevar.def: Added TV_TREE_SWITCH_CONVERSION.
13852
13853 2008-07-02  Martin Jambor  <mjambor@suse.cz>
13854
13855         * tree-switch-conversion.c: Corrected various comments and
13856         whitespace issues
13857         (build_constructors): Fixed minor formatting mistakes.
13858
13859         * invoke.texi (Optimize Options): Corrected the
13860         switch-conversion-max-branch-ratio parameter.
13861
13862 2008-07-02  Mark Shinwell  <shinwell@codesourcery.com>
13863
13864         * final.c (asm_insn_count): Return zero for an empty asm body.
13865
13866 2008-07-02  Richard Guenther  <rguenther@suse.de>
13867
13868         * bitmap.h (bitmap_set_bit): Return bool.
13869         (bitmap_clear_bit): Likewise.
13870         * bitmap.c (bitmap_set_bit): Return if the bit changed.  Only
13871         write to the bitmap if it would.
13872         (bitmap_clear_bit): Likewise.
13873         * tree-ssa-structalias.c (add_implicit_graph_edge): Use
13874         bitmap_set_bit return value.
13875         (add_pred_graph_edge): Likewise.
13876         (add_graph_edge): Likewise.
13877         (do_sd_constraint): Likewise.
13878         (do_ds_constraint): Likewise.
13879
13880 2008-07-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13881
13882         * config/alpha/alpha.c (alpha_need_linkage, alpha_use_linkage):
13883         Fix -Wc++-compat and/or -Wcast-qual warnings.
13884         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration,
13885         gen_regparm_prefix): Likewise.
13886         * vmsdbgout.c (write_modbeg, lookup_filename,
13887         vmsdbgout_source_line, vmsdbgout_init): Likewise.
13888
13889 2008-07-02  Danny Smith  <dannysmith@users.sourceforge.net>
13890
13891         * config/i386/mingw32.h (TARGET_USE_JCR_SECTION): Undef to let
13892         defaults.h definition apply.
13893
13894 2008-07-01  Daniel Jacobowitz  <dan@codesourcery.com>
13895
13896         * function.c (assign_parm_remove_parallels): New.
13897         (assign_parm_setup_block_p): Do not return true for non-BLKmode
13898         PARALLELs.
13899         (assign_parm_setup_block): Do not handle them.
13900         (assign_parm_setup_reg, assign_parm_setup_stack): Call
13901         assign_parm_remove_parallels.
13902
13903 2008-07-01  Daniel Jacobowitz  <dan@codesourcery.com>
13904
13905         * c-typeck.c (convert_for_assignment): Use
13906         vector_targets_convertible_p.
13907         * c-common.c (vector_targets_convertible_p): New.
13908         * c-common.h (vector_targets_convertible_p): New prototype.
13909         * config/rs6000/rs6000.c (rs6000_is_opaque_type): Do not check
13910         opaque_p_V2SI_type_node.
13911
13912 2008-07-01  Steve Ellcey  <sje@cup.hp.com>
13913
13914         * config/ia64/ia64.c (ia64_cannot_force_const_mem): Do not allow
13915         RFmode constants.
13916
13917 2008-07-01  Uros Bizjak  <ubizjak@gmail.com>
13918
13919         * config/i386/i386.c (ix86_build_signbit_mask): Generate TImode and
13920         TFmode constants via two element DImode vector for hosts with
13921         HOST_BITS_PER_WIDE_INT < 64.
13922         (ix86_init_builtins): Define __builtin_fabsq and __builtin_copysignq
13923         also for HOST_BITS_PER_WIDE_INT < 64.
13924
13925 2008-07-01  Richard Guenther  <rguenther@suse.de>
13926
13927         PR tree-optimization/36666
13928         * tree-ssa-structalias.c (get_constraint_for_1): Declare.
13929         (get_constraint_exp_from_ssa_var): Split into ...
13930         (get_constraint_exp_for_temp): ... this ...
13931         (get_constraint_for_ssa_var): ... and that.
13932         Return constraint expressions for all touched sub-fields
13933         if the results address is not taken.
13934         (process_constraint): Remove assertion that aggregate
13935         assignments do not happen at this place.
13936         (get_constraint_for_component_ref): Add address_p argument.
13937         Return constraint expressions for all touched sub-fields
13938         if the results address is not taken.
13939         (do_deref): Use get_constraint_exp_for_temp.
13940         (get_constraint_for_1): Rename from ...
13941         (get_constraint_for): ... this.  Add the old function as wrapper.
13942         (do_structure_copy): Use get_constraint_for_1.
13943
13944 2008-07-01  Martin Jambor  <mjambor@suse.cz>
13945
13946         * Makefile.in (tree-switch-conversion.o): Add.
13947         (OBJS-common): Add tree-swtch-conversion.o.
13948         * passes.c (init_optimization_passes): Add pass_convert_switch.
13949         * tree-pass.h: (pass_convert_switch): Add.
13950         * tree-switch-conversion.c: New file.
13951         * gcc.dg/tree-ssa/cswtch.c: New testcase.
13952         * common.opt (ftree-cswtch): New option.
13953         * params.h (PARAM_SWITCH_CONVERSION_BRANCH_RATIO): New parameter.
13954         * params.def (PARAM_SWITCH_CONVERSION_BRANCH_RATIO): New parameter.
13955         * opts.c (decode_options): Set flag_tree_switch_conversion when
13956         optimization level is >= 2.
13957         * doc/invoke.texi (Optimize Options): Added description of
13958         -ftree-swtch-conversion and switch-conversion-max-branch-ratio.
13959
13960 2008-06-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13961
13962         * config/darwin-driver.c (darwin_default_min_version): Fix
13963         -Wc++-compat warnings.
13964
13965 2008-06-30  Uros Bizjak  <ubizjak@gmail.com>
13966
13967         * config/i386/i386.md (*movti_rex64): Add "!" to "r" constraint
13968         of operand 0.
13969
13970 2008-06-30  Kenneth Zadeck <zadeck@naturalbridge.com>
13971
13972         * ifcvt.c (cond_move_process_if_block): Free vectors on false return.
13973
13974 2008-06-30  Kenneth Zadeck <zadeck@naturalbridge.com>
13975
13976         PR rtl-optimization/34744
13977         * df-scan.c (df_scan_free_ref_vec, df_scan_free_mws_vec): New macros.
13978         (df_scan_free_internal): Free data structures not
13979         allocated in storage pools.
13980         (df_mw_hardreg_chain_delete_eq_uses): Use df_scan_free_mws_vec.
13981         (df_refs_add_to_chains): Use df_scan_free_ref_vec and
13982         df_scan_free_mws_vec.
13983         * dse.c (dse_step6): Free offset_map_p and offset_map_n
13984         unconditionally.
13985
13986 2008-06-30  H.J. Lu  <hongjiu.lu@intel.com>
13987
13988         * config/i386/i386.c (contains_aligned_value_p): Return true
13989         for __float128.
13990         (ix86_function_arg_boundary): Return its natural boundary
13991         for __float128.
13992         (return_in_memory_32): Don't check TDmode.
13993         (ix86_split_to_parts): Support splitting into 4 parts and
13994         support TFmode for 32bit target.
13995         (ix86_split_long_move): Support splitting into 4 parts.
13996         (bdesc_args): Enable IX86_BUILTIN_FABSQ and IX86_BUILTIN_COPYSIGNQ
13997         for SSE2.
13998         (ix86_init_mmx_sse_builtins): Move __float80 and __float128 to ...
13999         (ix86_init_builtins): Here.
14000         (ix86_scalar_mode_supported_p): Always return true for TFmode.
14001         (ix86_c_mode_for_suffix): Always return TFmode and XFmode for
14002         'q' and 'w', respectively.
14003
14004         * config/i386/i386.md (movtf): Check TARGET_SSE2 instead of
14005         TARGET_64BIT.
14006         (movtf_internal): Likewise.
14007         (<code>tf2): Likewise.
14008         (*absnegtf2_sse): Likewise.
14009         (copysign<mode>3): Likewise.
14010         (copysign<mode>3_const): Likewise.
14011         (copysign<mode>3_var): Likewise.
14012         (define_split UNSPEC_COPYSIGN): Likewise.
14013         * config/i386/sse.md (*nandtf3): Likewise.
14014         (<code>tf3): Likewise.
14015         (*<code>tf3): Likewise.
14016
14017 2008-06-30  Joey Ye  <joey.ye@intel.com>
14018             H.J. Lu  <hongjiu.lu@intel.com>
14019
14020         * global.c (compute_regsets): Set frame_pointer_needed here.
14021         * reload1.c (init_elim_table): Don't set frame_pointer_needed here.
14022
14023 2008-06-30  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
14024
14025         * doc/install.texi (specific): Expand Windows build notes.
14026
14027 2008-06-30  Ira Rosen  <irar@il.ibm.com>
14028
14029         PR tree-optimization/36648
14030         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Divide
14031         number of prolog iterations by step. Fix the comment.
14032
14033 2008-06-30  Richard Guenther  <rguenther@suse.de>
14034
14035         PR middle-end/36671
14036         * tree-ssa-structalias.c (handle_lhs_call): Add flags argument,
14037         handle calls from ECF_MALLOC functions.
14038         (handle_pure_call): ECF_MALLOC functions do not return
14039         call-used memory.
14040         (find_func_aliases): Handle all calls, adjust calls to handle_lhs_call.
14041
14042 2008-06-29  Andreas Schwab  <schwab@suse.de>
14043
14044         * config/m68k/m68k.c (print_operand): Always print a float
14045         constant in hex.
14046         * config/m68k/m68k.h (ASM_OUTPUT_FLOAT_OPERAND)
14047         (ASM_OUTPUT_DOUBLE_OPERAND, ASM_OUTPUT_LONG_DOUBLE_OPERAND):
14048         Remove macros.
14049
14050         * config/rs6000/x-linux64: Remove never used file.
14051
14052 2008-06-29  Richard Guenther  <rguenther@suse.de>
14053
14054         * tree-ssa-structalias.h (compute_points_to_sets): Adjust
14055         prototype.
14056         (struct alias_info): Move ...
14057         * tree-ssa-alias.c: ... here.
14058         (update_alias_info): Declare.
14059         (compute_may_aliases): Call it.
14060         (update_alias_info): New function.
14061         * tree-ssa-structalias.c (update_alias_info): Move ...
14062         * tree-ssa-alias.c (update_alias_info_1): ... here.
14063         * tree-ssa-structalias.c (process_constraint_1): Remove
14064         unused from_call argument.  Rename to ...
14065         (process_constraint): ... this.  Delete old wrapper.
14066         (make_constraint_to): Adjust callers.
14067         (handle_const_call): Likewise.
14068         (handle_pure_call): Likewise.
14069         (init_base_vars): Likewise.
14070         (handle_lhs_call): Likewise.  Remove unnecessary constraint.
14071         (find_func_aliases): We don't need structure copies for
14072         complex types.
14073         (make_constraint_from_anything): Remove.
14074         (create_variable_info_for): For globals make constraints
14075         from escaped, not from anything.
14076         (compute_points_to_sets): Do not call update_alias_info.
14077         (ipa_pta_execute): Use make_constraint_from.
14078
14079 2008-06-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14080
14081         * Makefile.in (CXX_COMPAT_WARN, cxx_compat_warn): Delete.
14082         (bitmap.o-warn, dominance.o-warn): New.
14083         * configure.ac (cxx_compat_warn): Delete.
14084         (loose_warn): Add -Wcast-qual and -Wc++-compat.
14085         * system.h: Remove #pragma diagnostic for -Wcast-qual and
14086         -Wc++-compat.
14087         * configure: Regenerate.
14088
14089         * optabs.c (libfunc_decl_hash, libfunc_decl_eq): Fix -Wcast-qual
14090         warnings.
14091
14092 2008-06-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14093
14094         * alloc-pool.c (create_alloc_pool): Fix -Wc++-compat warnings.
14095         * df-scan.c (df_notes_rescan): Likewise.
14096         * ggc-page.c (set_page_table_entry): Likewise.
14097         * intl.c (gcc_gettext_width): Likewise.
14098         * varasm.c (get_unnamed_section, get_noswitch_section,
14099         get_section): Likewise.
14100
14101 2008-06-28  Andrew Jenner  <andrew@codesourcery.com>
14102
14103         * regrename.c (build_def_use): Don't copy RTX.
14104
14105 2008-06-28  Sandra Loosemore  <sandra@codesourcery.com>
14106
14107         * doc/extend.texi (Variable Attributes): Use @ref instead of @xref.
14108         (Type Attributes): Fix nesting of @table and @subsection.  Adjust
14109         punctuation.  Use @ref instead of @xref.
14110         (Function Names): Remove stray @display/@end display.
14111         (C++ Attributes): Use @ref instead of @xref.
14112         (Deprecated Features): Fix punctuation around @xref.
14113         (Backwards Compatibility): Likewise.
14114         * doc/rtl.texi (Incdec): Remove stray @table/@end table.
14115
14116 2008-06-28  Joseph Myers  <joseph@codesourcery.com>
14117
14118         * config/rs6000/predicates.md (easy_fp_constant): Reject TFmode
14119         constants for E500 double.
14120
14121 2008-06-28  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
14122
14123         * doc/rtl.texi (const_vector): Document const_fixed as legitimate
14124         element type of const_vector.
14125
14126 2008-06-28  Uros Bizjak  <ubizjak@gmail.com>
14127
14128         * config/i386/i386.md (addti3, adddi3, addsi3, addhi3, addqi3):
14129         Remove FLAGS_REG clobber from expander pattern.
14130         (subti3, subdi3, subsi3, subhi3, subqi3): Ditto.
14131         (anddi3, andsi3, andhi3, andqi3): Ditto.
14132         (iordi3, iorsi3, iorhi3, iorqi3): Ditto.
14133         (xordi3, xorsi3, xorhi3, xorqi3): Ditto.
14134         (negti2, negdi2, negsi2, neghi2, negqi2): Ditto.
14135         (ashlsi3, ashlhi3, ashlqi3): Ditto.
14136         (ashrsi3, ashrhi3, ashrqi3): Ditto.
14137         (lshrsi3, lshrhi3, lshrqi3): Ditto.
14138         (rotldi3, rotlsi3, rotlhi3, rotlqi3): Ditto.
14139         (rotrdi3, rotrsi3, rotrhi3, rotrqi3): Ditto.
14140
14141 2008-06-28  Richard Guenther  <rguenther@suse.de>
14142
14143         * tree-ssa-structalias.c (callused_id, var_callused,
14144         callused_tree): Add.
14145         (handle_pure_call): New function.
14146         (find_func_aliases): Call it.
14147         (find_what_p_points_to): Handle the call-used set.
14148         (clobber_what_escaped): Likewise.
14149         (compute_call_used_vars): New function.
14150         (init_base_vars): Init the call-used variable.
14151         (do_sd_constraint): Do not propagate the solution from CALLUSED
14152         but use CALLUSED as a placeholder.
14153         (solve_graph): Likewise.
14154         * tree-flow-inline.h (gimple_call_used_vars): New function.
14155         * tree-flow.h (struct gimple_df): Add call_used_vars bitmap.
14156         (compute_call_used_vars): Declare.
14157         * tree-ssa-alias.c (set_initial_properties): Call
14158         compute_call_used_vars.
14159         (reset_alias_info): Clear call-used variables.
14160         (add_call_clobber_ops): Assert we are not called for const/pure
14161         functions.  Remove handling of them.
14162         (add_call_read_ops): Handle pure functions by adding the
14163         call-used set of variables as VUSEs.
14164         * tree-ssa.c (init_tree_ssa): Allocate call-used bitmap.
14165         (delete_tree_ssa): Free it.
14166         * tree-dfa.c (remove_referenced_var): Clear the var from the
14167         call-used bitmap.
14168
14169 2008-06-28  Kai Tietz  <kai.tietz@onevision.com>
14170
14171         * tree.c (build_varargs_function_type_list): New.
14172         (build_function_type_list_1): New.
14173         (build_function_type_list): Use build_function_type_list_1.
14174         * tree.h (build_varargs_function_type_list): New.
14175
14176 2008-06-28  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
14177
14178         PR target/34856
14179         * config/spu/spu.c (spu_builtin_splats): Do not generate
14180         invalid CONST_VECTOR expressions.
14181         (spu_expand_vector_init): Likewise.
14182
14183 2008-06-28  Richard Sandiford  <rdsandiford@googlemail.com>
14184
14185         * optabs.c (libfunc_decls): New variable.
14186         (libfunc_decl_hash, libfunc_decl_eq): New functions.
14187         (init_one_libfunc): Reuse decls and SYMBOL_REFs when asked
14188         for the same function twice.
14189
14190 2008-06-27  Uros Bizjak  <ubizjak@gmail.com>
14191
14192         * config/i386/i386.md (ashlti3, ashrti3, lshrti3): Expand using
14193         ix86_expand_binary_operator directly.
14194         (*ashlti3_1): Rename from ashlti3_1.  Use nonmemory_operand predicate
14195         for operand 2.
14196         (*ashrti3_1): Ditto.
14197         (*lshrti3_1): Ditto.
14198         (*ashlti3_2, *ashrti3_2, *lshrti3_2): Remove insn patterns.
14199         (ashlti, ashrti and lshrti splitters): Handle nonmemory operand 2
14200         using only one splitter.  Conditionaly execute splitter before or
14201         after peephole2 pass.
14202         (ashlti, ashrti and lshrti peephole2): Define peephole2 patterns.
14203         (x86_shld): Rename from x86_shld_1.  Compress operand 2 constraints.
14204         Use only one alternative in asm template.
14205         (x86_64_shld): Compress operand 2 constraints. Use only one alternative
14206         in asm template.
14207         (*ashldi3_cmp_rex64): Use const_1_to_63_operand operand predicate and
14208         "J" operand constraint for operand 2.
14209         (*ashldi3_cconly_rex64): Ditto.
14210         (*ashrdi3_cmp_rex64): Ditto.
14211         (*ashrdi3_cconly_rex64): Ditto.
14212         (*lshrdi3_cmp_rex64): Ditto.
14213         (*lshrdi3_cconly_rex64): Ditto.
14214         * config/i386/predicates.md (const_1_to_63_operand): New predicate.
14215         * config/i386/i386.md (print_operand) ['s']: Print ", " using fputs.
14216         (split_ashr, split_ashl, split_lshr): Use gen_x86_shrd instead of
14217         gen_x86_shrd_1.
14218
14219 2008-06-27  Jakub Jelinek  <jakub@redhat.com>
14220
14221         * gimplify.c (omp_is_private): Don't return true if decl is not
14222         already private on #pragma omp for or #pragma omp parallel for.
14223
14224         PR debug/36617
14225         * tree-cfg.c (struct move_stmt_d): Replace block field with
14226         orig_block and new_block fields.
14227         (move_stmt_r): Only set TREE_BLOCK to p->new_block if
14228         if it used to be NULL, p->orig_block or if p->orig_block is NULL.
14229         (move_block_to_fn): Replace vars_map and new_label_map arguments
14230         with struct move_stmt_d pointer.
14231         (replace_block_vars_by_duplicates): New function.
14232         (move_sese_region_to_fn): Add ORIG_BLOCK argument.  Adjust
14233         move_block_to_fn caller.  If ORIG_BLOCK is non-NULL, move over
14234         all subblocks of ORIG_BLOCK to the new function.  Call
14235         replace_block_vars_by_duplicates.
14236         * tree-flow.h (move_sese_region_to_fn): Adjust prototype.
14237         * omp-low.c (expand_omp_taskreg): Set TREE_USED on DECL_INITIAL
14238         BLOCK of the new function.  Adjust move_sese_region_to_fn caller.
14239         Prune vars with original DECL_CONTEXT from child_cfun->local_decls.
14240         (expand_omp): Temporarily set input_location to the location of
14241         region's controlling stmt.
14242         (lower_omp_sections, lower_omp_for): Add a BLOCK into outermost
14243         BIND_EXPR, push ctx->block_vars and gimplification vars into
14244         the BIND_EXPR and its block's BLOCK_VARS instead of directly
14245         into dest function.
14246         (lower_omp_single): Set TREE_USED on the BIND_EXPR's BLOCK if
14247         there are any BLOCK_VARS.
14248         (lower_omp_taskreg): Set BLOCK on a BIND_EXPR containing the
14249         OMP_PARALLEL or OMP_TASK stmt.
14250         (lower_omp): Save and restore input_location around the lower_omp_1
14251         call.
14252
14253 2008-06-27  Richard Guenther  <rguenther@suse.de>
14254
14255         PR tree-optimization/36400
14256         PR tree-optimization/36373
14257         PR tree-optimization/36344
14258         * tree-ssa-structalias.c (var_escaped, escaped_tree, escaped_id,
14259         var_nonlocal, nonlocal_tree, nonlocal_id): New globals
14260         (update_alias_info): Remove call clobbering code.
14261         (make_constraint_to): New helper function.
14262         (make_escape_constraint): Likewise.
14263         (handle_rhs_call): Use it on all pointer containing arguments.
14264         Also mark the static chain escaped.
14265         (handle_lhs_call): Make constraints from NONLOCAL and ESCAPED
14266         instead of ANYTHING.
14267         (make_constraint_from): New helper split out from ...
14268         (make_constraint_from_anything): ... here.
14269         (find_func_aliases): Add constraints for escape sites.
14270         (intra_create_variable_infos): Make constraints from NONLOCAL
14271         for parameters.
14272         (find_what_p_points_to): Interpret NONLOCAL and ESCAPED the same
14273         as ANYTHING.
14274         (clobber_what_p_points_to): Remove.
14275         (clobber_what_escaped): New function.
14276         (init_base_vars): Init NONLOCAL and ESCAPED.
14277         (do_sd_constraint): Do not propagate the solution from ESCAPED
14278         but use ESCAPED as a placeholder.
14279         (solve_graph): Likewise.
14280         * tree-flow.h (clobber_what_p_points_to): Remove.
14281         (clobber_what_escaped): Declare.
14282         * tree-ssa-alias.c (set_initial_properties): Call it.
14283         Remove code clobbering escaped pointers.
14284
14285 2008-06-27  Richard Sandiford  <rdsandiford@googlemail.com>
14286
14287         * function.c (allocate_struct_function): Only allocate a unique
14288         funcdef_no if the decl is nonzero.
14289
14290 2008-06-27  Richard Sandiford  <rdsandiford@googlemail.com>
14291
14292         * config/mips/mips-protos.h (mips_split_const_insns): Declare.
14293         * config/mips/mips.c (mips_split_const_insns): New function.
14294         * config/mips/mips.md (move_type): New attribute.
14295         (mode): Move attribute definition earlier in file.  Add "TI" and "TF".
14296         (dword_mode): New attribute.
14297         (type): Avoid long line.  Map "move_type"s to "type"s,
14298         choosing "multi" for doubleword moves if appropriate.
14299         Swap MTC/MFC comments to match their declaration order.
14300         (extended_mips16): Default to "yes" if "move_type" is "sll0",
14301         "type" is "branch" or "jal" is "direct".
14302         (length): Handle "extended_mips16" first.  Make the default
14303         "0" for "ghost" instructions.  Set the length from "move_type".
14304         (truncdisi2, truncdihi2, truncdiqi2): Use "move_type" instead
14305         of "type", with "sll0" for the register alternative.  Remove the
14306         "extended_mips16" attribute.
14307         (zero_extendsidi2, *clear_upper32): Use "move_type" instead
14308         of "type", with "shift_shift" for the register alternative.
14309         Remove the "length" attribute.
14310         (*extend<SHORT:mode><GPR:mode>2, *extendqihi2): Likewise.
14311         (*zero_extend<SHORT:mode><GPR:mode>2): Use "move_type" instead
14312         of "type", with "andi" for the register alternative.
14313         (*zero_extendqihi2): Likewise.
14314         (*zero_extend<SHORT:mode><GPR:mode>2_mips16e): Use a "move_type"
14315         of "andi" instead of a "type" of "arith".
14316         (*zero_extend<SHORT:mode><GPR:mode>2_mips16): Use "move_type"
14317         instead of "type".
14318         (*zero_extendqihi2_mips16, mov_<load>l, mov_<load>r, mov_<store>l)
14319         (mov_<store>r, *mov<mode>_ra): Likewise.
14320         (extendsidi2): Use "move_type" instead of "type", with "move"
14321         for the register alternative.
14322         (*extend<SHORT:mode><GPR:mode>2_mips16e): Use "move_type" instead
14323         of "type", with "signext" for the register alternative.
14324         (*extend<SHORT:mode><GPR:mode>2_se<SHORT:size>): Likewise.
14325         (*extendqihi2_mips16e, *extendqihi2_seb): Likewise.
14326         (fix_truncdfsi2_insn, fix_truncsfsi2_insn, fix_truncdfdi2)
14327         (fix_truncsfdi2, floatsidf2, floatdidf2, floatsisf2, floatdisf2)
14328         (floatdisf2, *branch_equality<mode>_mips16): Likewise.
14329         (unnamed branch insn): Likewise.
14330         (*movdi_gp32_fp64): Fold into...
14331         (*movdi_32bit): ...here.
14332         (*movdf_hardfloat_64bit, *movdf_hardfloat_32bit): Combine into...
14333         (*movdf_hardfloat): ...this new pattern.
14334         (*movdf_softfloat): Remove redundant FPR alternatives.
14335         (*movti, *movti_mips16, *movtf, *movtf_mips16): Add "mode" attributes.
14336         (*movv2sf_hardfloat_64bit, *movv2sf_hardfloat_32bit): Combine into...
14337         (*movv2sf): ...this new pattern.  Use "DF" rather than "SF" for
14338         the "move" attribute.
14339         (*movdi_32bit): Use "move_type" instead of "type" and remove the
14340         "length" attribute.  Use "fpload" and "fpstore" instead of "load"
14341         and "store" for COP loads and stores.
14342         (*movdi_32bit_mips16, *movdi_64bit, *movsi_internal, movcc)
14343         (*movhi_internal, *movhi_mips16, *movqi_internal, *movqi_mips16)
14344         (*movsf_hardfloat, *movsf_softfloat, *movsi_mips16, *movdf_hardfloat)
14345         (*movdf_softfloat, *movdf_mips16, *movti, *movti_mips16, *movtf)
14346         (*movtf_mips16, *movv2sf): Likewise.
14347         (mfhi<GPR:mode>_<HILO:mode>, mflo<GPR:mode>_<HILO:mode>)
14348         (load_low<mode>, load_high<mode>, store_word<mode>, mthc1<mode>)
14349         (mfhc1<mode>): Use "move_type" instead of "move".
14350         (*low<mode>_mips16): Use "extended_mips16" instead of "length".
14351         (loadgp_blockage): Remove the "length" attribute.
14352         (blockage, set_got_version, update_got_version): Likewise.
14353         (call_internal): Remove the "extended_mips16" attribute.
14354         (call_value_internal, call_value_multiple_internal): Likewise.
14355         * config/mips/loongson.md (mov<mode>_internal): Use "move_type"
14356         instead of "move".
14357         * config/mips/mips-dsp.md (mips_lbux, mips_lhx, mips_lwx): Remove
14358         the "length" attribute.
14359
14360 2008-06-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14361
14362         * c-format.c (handle_format_attribute): Fix -Wc++-compat and/or
14363         -Wcast-qual warnings.
14364         * c-pragma.c (dpm_eq, handle_pragma_push_macro,
14365         handle_pragma_pop_macro): Likewise.
14366         * collect2.c (resolve_lib_name): Likewise.
14367         * config/arc/arc.c (arc_init): Likewise.
14368         * config/arm/arm.c (neon_builtin_compare,
14369         locate_neon_builtin_icode): Likewise.
14370         * config/arm/pe.c (arm_mark_dllexport, arm_pe_unique_section): Likewise.
14371         * config/bfin/bfin.c (bfin_init_machine_status,
14372         bfin_optimize_loop): Likewise.
14373         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Likewise.
14374         * config/cris/cris.c (cris_init_expanders): Likewise.
14375         * config/darwin-c.c (frameworks_in_use, add_framework): Likewise.
14376         * config/darwin.c (machopic_indirection_eq,
14377         machopic_indirection_name, machopic_output_indirection): Likewise.
14378         * config/frv/frv.c (frv_init_machine_status, frv_compare_insns,
14379         frv_io_check_address, frv_io_handle_set, frv_io_handle_use_1,
14380         frv_optimize_membar): Likewise.
14381         * config/i386/cygwin.h (mingw_scan,
14382         GCC_DRIVER_HOST_INITIALIZATION): Likewise.
14383         * config/i386/cygwin1.c (mingw_scan): Likewise.
14384         * config/i386/i386.c (machopic_output_stub): Likewise.
14385         * config/i386/winnt.c (gen_stdcall_or_fastcall_suffix,
14386         i386_pe_unique_section): Likewise.
14387         * config/ia64/ia64.c (ia64_init_machine_status,
14388         ia64_h_i_d_extended, get_free_bundle_state, bundling, ia64_reorg):
14389         Likewise.
14390         * config/iq2000/iq2000.c, iq2000_init_machine_status): Likewise.
14391         * config/m68hc11/m68hc11.c (m68hc11_encode_label): Likewise.
14392         * config/m68k/m68k.c (m68k_handle_option,
14393         m68k_sched_md_init_global): Likewise.
14394         * config/mcore/mcore.c (mcore_mark_dllexport, mcore_mark_dllimport,
14395         mcore_unique_section): Likewise.
14396         * config/mips/mips.c (mips_block_move_straight,
14397         mips16_rewrite_pool_refs, mips_sim_wait_regs_2, mips_sim_record_set):
14398         Likewise.
14399         * config/mmix/mmix.c (mmix_init_machine_status,
14400         mmix_encode_section_info): Likewise.
14401         * config/pa/pa.c (pa_init_machine_status, hppa_encode_label): Likewise.
14402         * config/rs6000/rs6000.c (rs6000_init_machine_status,
14403         print_operand_address, output_toc, redefine_groups,
14404         rs6000_elf_encode_section_info, machopic_output_stub): Likewise.
14405         * config/s390/s390.c (s390_init_machine_status): Likewise.
14406         * config/score/score.c (score_block_move_straight,
14407         score_block_move_loop_body): Likewise.
14408         * config/sparc/sparc.c (sparc_init_machine_status): Likewise.
14409         * config/xtensa/xtensa.c (xtensa_init_machine_status): Likewise.
14410         * emit-rtl.c (find_auto_inc): Likewise.
14411         * gcc.c (translate_options, process_command): Likewise.
14412         * reorg.c (dbr_schedule): Likewise.
14413         * sdbout.c (sdbout_start_source_file, sdbout_init): Likewise.
14414         * xcoffout.c (xcoffout_declare_function): Likewise.
14415
14416 2008-06-27  Daniel Berlin  <dberlin@dberlin.org>
14417
14418         * tree-ssa-structalias.c (find_func_aliases): Trivial fix to get
14419         ipa-pta working again.
14420
14421 2008-06-27  David Edelsohn  <edelsohn@gnu.org>
14422
14423         * config/rs6000/t-aix52: Append large data option to LDFLAGS for
14424         genautomata.
14425
14426 2008-06-27  Edmar Wienskoski  <edmar@freescale.com>
14427
14428         * config.gcc (powerpc*-*-*): Add new core e500mc.
14429         * config/rs6000/e500mc.md: New file.
14430         * config/rs6000/rs6000.c (processor_costs): Add new costs for
14431         e500mc.
14432         (rs6000_override_options): Add e500mc case to
14433         processor_target_table. Altivec and Spe options not allowed
14434         with e500mc. Add isel instruction to e500mc by
14435         default. Initialize rs6000_cost for e500mc.
14436         (rs6000_issue_rate): Set issue rate for e500mc.
14437         * config/rs6000/rs6000.h (processor_type): Add
14438         PROCESSOR_PPCE500MC.
14439         (ASM_CPU_SPEC): Add e500mc.
14440         Set TARGET_ISEL to rs6000_isel.
14441         * config/rs6000/e500.h: Remove redefinition of TARGET_ISEL.
14442         (CHECK_E500_OPTIONS): Remove TARGET_ISEL.
14443         * config/rs6000/rs6000.md (define_attr "cpu"): Add ppce500mc.
14444         Include e500mc.md.
14445         * doc/invoke.texi: Add e500mc to list of cpus.
14446
14447 2008-06-27  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
14448
14449         PR c/34867
14450         * c-lex.c (lex_charconst): Initialize unsignedp.
14451
14452 2008-06-27  Olivier Hainque  <hainque@adacore.com>
14453
14454         * gimplify.c (gimplify_modify_expr_to_memset): Assert our
14455         documented assumptions.
14456
14457 2008-06-26  H.J. Lu  <hongjiu.lu@intel.com>
14458
14459         * dwarf2out.c: Remove trailing white spaces.  Break long line
14460         in comments.
14461
14462 2008-06-26  Richard Sandiford  <rdsandiford@googlemail.com>
14463
14464         * libfuncs.h (LTI_synchronize): New libfunc_index.
14465         (synchronize_libfunc): Declare.
14466         * builtins.c (expand_builtin_synchronize): Consider using
14467         synchronize_libfunc before falling back on an asm blockage.
14468         * config/mips/mips.c: Include libfuncs.h
14469         (mips_init_libfuncs): Initialize synchronize_libfunc for TARGET_MIPS16.
14470
14471 2008-06-26  Nathan Froyd  <froydnj@codesourcery.com>
14472
14473         * config/rs6000/rs6000.c (emit_allocate_stack): Add copy_r11
14474         parameter.  Copy stack_reg to r11 where appropriate.
14475         (no_global_regs_above): Add gpr parameter.
14476         (rs6000_stack_info): Only add padding for SPE save area if we
14477         are saving SPE GPRs and CR.
14478         (saveres_routine_syms): New variable.
14479         (FIRST_SAVRES_REGISTER, LAST_SAVRES_REGISTER, N_SAVRES_REGISTERS):
14480         Define.
14481         (rs6000_savres_routine_sym): New function.
14482         (rs6000_emit_stack_reset, rs6000_restore_saved_cr): New functions,
14483         split out of...
14484         (rs6000_emit_epilogue): ...here.  Use rs6000_use_multiple_p and
14485         rs6000_savres_strategy.  Restore GPRs out-of-line if appropriate.
14486         Tweak FPR out-of-line saving.
14487         (rs6000_make_savres_rtx): New function.
14488         (rs6000_use_multiple_p): New function.
14489         (rs6000_savres_strategy): New function.
14490         (rs6000_emit_prologue): Use rs6000_savres_strategy.  Save GPRs
14491         out-of-line if appropriate.
14492         * config/rs6000/sysv4.h (FP_SAVE_INLINE): Save FPRs out-of-line
14493         if we are optimizing for size.
14494         (GP_SAVE_INLINE): Define.
14495         (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX): Only use _l on 64-bit targets.
14496         * config/rs6000/darwin.h (GP_SAVE_INLINE): Define.
14497         * config/rs6000/aix.h (GP_SAVE_INLINE): Define.
14498         * config/rs6000/rs6000.md (*save_gpregs_<mode>): New insn.
14499         (*save_fpregs_<mode>): Add use of r11.
14500         (*restore_gpregs_<mode>): New insn.
14501         (*return_and_restore_gpregs_<mode>): New insn.
14502         (*return_and_restore_fpregs_<mode>): Adjust to clobber LR and
14503         use r11.
14504         * config/rs6000/spe.md (*save_gpregs_spe): New insn.
14505         (*restore_gpregs_spe): New insn.
14506         (*return_and_restore_gpregs_spe): New insn.
14507         * config/rs6000/predicates.md (save_world_operation): Fix check.
14508
14509 2008-06-26  Steven Bosscher  <steven@gcc.gnu.org>
14510
14511         * tree-into-ssa (insert_phi_nodes_for): 'var' must be a DECL at
14512         this point, so assert that.
14513
14514 2008-06-26  Steven Bosscher  <steven@gcc.gnu.org>
14515
14516         * cfganal.c: Include vec.h and vecprim.h.
14517         (compute_idf): Import from...
14518         * tree-into-ssa (compute_idf): ...here.
14519         * basic-block.h (compute_idf): Export.
14520
14521 2008-06-26  Joseph Myers  <joseph@codesourcery.com>
14522
14523         * c-decl.c (merge_decls): Use !current_function_decl to check for
14524         extern declaration of C99 inline function being at file scope.
14525
14526 2008-06-25  John David Anglin  <dave.anglin@gcc-cnrc.gc.ca>
14527
14528         * config.gcc (hppa[12]*-*-hpux10*): Don't use fixproto.
14529
14530 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14531
14532         * alias.c (record_alias_subset, init_alias_analysis): Fix
14533         -Wc++-compat and/or -Wcast-qual warnings.
14534         * attribs.c (lookup_attribute_spec): Likewise.
14535         * bb-reorder.c (find_traces, rotate_loop, find_traces_1_round,
14536         copy_bb, connect_traces,
14537         find_rarely_executed_basic_blocks_and_cr): Likewise.
14538         * bt-load.c (find_btr_def_group, add_btr_def, new_btr_user,
14539         note_btr_set, migrate_btr_defs): Likewise.
14540         * builtins.c (result_vector, expand_builtin_memcpy,
14541         expand_builtin_mempcpy_args, expand_builtin_strncpy,
14542         builtin_memset_read_str, expand_builtin_printf,
14543         fold_builtin_memchr, rewrite_call_expr, fold_builtin_printf):
14544         Likewise.
14545         * caller-save.c (mark_set_regs): Likewise.
14546         * calls.c (expand_call, emit_library_call_value_1): Likewise.
14547         * cgraph.c (cgraph_edge): Likewise.
14548         * combine.c (likely_spilled_retval_1): Likewise.
14549         * coverage.c (htab_counts_entry_hash, htab_counts_entry_eq,
14550         htab_counts_entry_del, get_coverage_counts): Likewise.
14551         * cselib.c (new_elt_list, new_elt_loc_list, entry_and_rtx_equal_p,
14552         new_cselib_val): Likewise.
14553         * dbgcnt.c (dbg_cnt_process_opt): Likewise.
14554         * dbxout.c (dbxout_init, dbxout_type, output_used_types_helper):
14555         Likewise.
14556         * df-core.c (df_compact_blocks): Likewise.
14557         * df-problems.c (df_grow_bb_info, df_chain_create): Likewise.
14558         * df-scan.c (df_grow_reg_info, df_ref_create,
14559         df_insn_create_insn_record, df_insn_rescan, df_notes_rescan,
14560         df_ref_compare, df_ref_create_structure, df_bb_refs_record,
14561         df_record_entry_block_defs, df_record_exit_block_uses,
14562         df_bb_verify): Likewise.
14563         * df.h (DF_REF_EXTRACT_WIDTH_CONST, DF_REF_EXTRACT_OFFSET_CONST,
14564         DF_REF_EXTRACT_MODE_CONST): New.
14565         * dominance.c (get_immediate_dominator, get_dominated_by,
14566         nearest_common_dominator, root_of_dom_tree,
14567         iterate_fix_dominators, first_dom_son, next_dom_son): Fix
14568         -Wc++-compat and/or -Wcast-qual warnings.
14569         * dse.c (clear_alias_set_lookup, get_group_info, gen_rtx_MEM,
14570         record_store, replace_read, check_mem_read_rtx, scan_insn,
14571         dse_step1, dse_record_singleton_alias_set): Likewise.
14572         * dwarf2asm.c (dw2_force_const_mem): Likewise.
14573
14574 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14575
14576         * dwarf2out.c (new_cfi, queue_reg_save, dwarf2out_begin_prologue,
14577         dwarf2out_frame_init, new_loc_descr, new_die, lookup_decl_die,
14578         lookup_decl_loc, add_var_loc_to_decl, compute_section_prefix,
14579         assign_symbol_names, htab_cu_hash, htab_cu_eq, htab_cu_del,
14580         build_abbrev_table, new_loc_list, output_comp_unit, add_arange,
14581         add_ranges_num, add_ranges_by_labels, file_info_cmp,
14582         file_name_acquire, output_file_names, add_const_value_attribute,
14583         premark_used_types_helper, file_table_eq, file_table_hash,
14584         lookup_filename, dwarf2out_var_location, dwarf2out_source_line,
14585         dwarf2out_init, file_table_relative_p): Fix -Wc++-compat and/or
14586         -Wcast-qual warnings.
14587         * ebitmap.c (ebitmap_array_grow, ebitmap_array_init,
14588         ebitmap_alloc, ebitmap_ior, ebitmap_and_compl): Likewise.
14589         * emit-rtl.c (get_mem_attrs, get_reg_attrs, gen_rtvec,
14590         gen_reg_rtx, start_sequence, init_emit): Likewise.
14591         * et-forest.c (et_new_occ, et_new_tree): Likewise.
14592         * except.c (init_eh_for_function, gen_eh_region,
14593         remove_unreachable_regions, add_ehl_entry, duplicate_eh_regions_1,
14594         arh_to_landing_pad, arh_to_label, add_action_record,
14595         add_call_site, switch_to_exception_section): Likewise.
14596         * expmed.c (synth_mult): Likewise.
14597         * expr.c (gen_group_rtx, emit_group_load, emit_group_store,
14598         store_expr): Likewise.
14599         * final.c (shorten_branches, final_scan_insn, debug_queue_symbol):
14600         Likewise.
14601         * function.c (assign_stack_temp_for_type,
14602         allocate_struct_function, match_asm_constraints_1): Likewise.
14603         * gcov-io.c (gcov_allocate): Likewise.
14604         * gcse.c (GNEW, GCNEW, GNEWVEC, GCNEWVEC, GRESIZEVEC, GNEWVAR,
14605         GCNEWVAR, GRESIZEVAR, GOBNEW, GOBNEWVAR): New.
14606         (gcse_main, alloc_gcse_mem, alloc_gcse_mem, alloc_reg_set_mem,
14607         record_one_set, insert_expr_in_table, insert_set_in_table,
14608         dump_hash_table, compute_hash_table_work, alloc_hash_table,
14609         pre_ldst_expr_hash, pre_ldst_expr_eq, find_rtx_in_ldst,
14610         reg_set_info, reg_clear_last_set): Fix -Wc++-compat and/or
14611         -Wcast-qual warnings.
14612
14613 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14614
14615         * cse.c (approx_reg_cost_1, cse_insn): Fix -Wc++-compat and/or
14616         -Wcast-qual warnings.
14617         * gcc.c (process_command): Likewise.
14618         * genattrtab.c (oballoc): Use XOBNEW.
14619         (oballocvec): Define.
14620         (attr_hash_add_rtx, attr_hash_add_string, attr_string,
14621         get_attr_value, fill_attr, make_length_attrs, gen_attr, gen_insn,
14622         gen_delay, find_attr, gen_insn_reserv, gen_bypass_1): Fix
14623         -Wc++-compat and/or -Wcast-qual warnings.
14624         * genautomata.c (XCREATENODE, XCREATENODEVEC, XCREATENODEVAR,
14625         XCOPYNODE, XCOPYNODEVEC, XCOPYNODEVAR): New.
14626         (gen_cpu_unit, gen_query_cpu_unit, gen_bypass, gen_excl_set,
14627         gen_presence_absence_set, gen_automaton, gen_regexp_el,
14628         gen_regexp_repeat, gen_regexp_allof, gen_regexp_oneof,
14629         gen_regexp_sequence, gen_reserv, gen_insn_reserv, process_excls,
14630         add_excls, process_presence_absence_names,
14631         process_presence_absence_patterns, add_presence_absence,
14632         process_regexp, add_advance_cycle_insn_decl, get_free_alt_state,
14633         get_free_state, add_arc, get_free_automata_list_el,
14634         form_reserv_sets_list, copy_insn_regexp, transform_1, transform_2,
14635         transform_3, cache_presence, create_ainsns, create_automata,
14636         create_state_ainsn_table, dfa_insn_code_enlarge,
14637         output_trans_func, output_min_issue_delay_func,
14638         output_dead_lock_func, output_reset_func,
14639         output_get_cpu_unit_code_func, output_dfa_start_func,
14640         expand_automata): Likewise.
14641         * genextract.c (gen_insn): Likewise.
14642         * gengtype-lex.l: Likewise.
14643         * gengtype.c (read_input_list, adjust_field_type,
14644         process_gc_options): Likewise.
14645         * genoutput.c (note_constraint): Likewise.
14646         * genpreds.c (mangle, add_constraint): Likewise.
14647         * genrecog.c (process_define_predicate, new_decision,
14648         add_to_sequence): Likewise.
14649         * gensupport.c (record_insn_name): Likewise.
14650
14651 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14652
14653         * config/i386/driver-i386.c (detect_caches_amd,
14654         detect_caches_intel, host_detect_local_cpu): Fix -Wc++-compat
14655         and/or -Wcast-qual warnings.
14656         *ggc-common.c (ggc_mark_roots, gt_pch_note_object,
14657         gt_pch_note_reorder, relocate_ptrs, write_pch_globals,
14658         gt_pch_save): Likewise.
14659         * ggc-page.c (push_depth, push_by_depth, alloc_anon, alloc_page,
14660         gt_ggc_m_S, clear_marks, ggc_pch_read): Likewise.
14661         * global.c (compute_regsets): Likewise.
14662         * graph.c (print_rtl_graph_with_bb, clean_graph_dump_file,
14663         finish_graph_dump_file): Likewise.
14664         * haifa-sched.c (schedule_block, extend_h_i_d, extend_ready,
14665         unlink_bb_notes): Likewise.
14666         * integrate.c (get_hard_reg_initial_val): Likewise.
14667         * ipa-prop.c (ipa_push_func_to_list): Likewise.
14668         * ipa-struct-reorg.c (gen_var_name, gen_cluster_name): Likewise.
14669         * local-alloc.c (update_equiv_regs): Likewise.
14670         * loop-invariant.c (check_invariant_table_size,
14671         hash_invariant_expr, eq_invariant_expr, find_or_insert_inv):
14672         Likewise.
14673         * loop-iv.c (check_iv_ref_table_size, analyzed_for_bivness_p,
14674         altered_reg_used, mark_altered): Likewise.
14675         * loop-unroll.c (si_info_eq, ve_info_eq, allocate_basic_variable,
14676         insert_var_expansion_initialization,
14677         combine_var_copies_in_loop_exit, apply_opt_in_copies,
14678         release_var_copies): Likewise.
14679         * matrix-reorg.c (mat_acc_phi_hash, mat_acc_phi_eq, mtt_info_eq,
14680         analyze_matrix_decl, add_allocation_site, analyze_transpose,
14681         analyze_accesses_for_phi_node, check_var_notmodified_p,
14682         check_allocation_function, find_sites_in_func,
14683         record_all_accesses_in_func, transform_access_sites,
14684         transform_allocation_sites): Likewise.
14685         * omp-low.c (new_omp_region, create_omp_child_function_name,
14686         check_omp_nesting_restrictions, check_combined_parallel,
14687         lower_omp_2, diagnose_sb_1, diagnose_sb_2): Likewise.
14688         * optabs.c (no_conflict_move_test, gen_libfunc, gen_fp_libfunc,
14689         gen_intv_fp_libfunc, gen_interclass_conv_libfunc,
14690         gen_intraclass_conv_libfunc, set_optab_libfunc, set_conv_libfunc):
14691         Likewise.
14692         * opts-common.c (prune_options): Likewise.
14693         * opts.c (add_input_filename, print_filtered_help,
14694         get_option_state): Likewise.
14695         * params.c (add_params): Likewise.
14696         * passes.c (set_pass_for_id, next_pass_1,
14697         do_per_function_toporder, pass_fini_dump_file): Likewise.
14698         * postreload.c (reload_cse_simplify_operands): Likewise.
14699         * predict.c (tree_predicted_by_p, tree_predict_edge,
14700         clear_bb_predictions, combine_predictions_for_bb): Likewise.
14701
14702 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14703
14704         * ra.h (add_neighbor): Fix -Wc++-compat and/or -Wcast-qual
14705         warnings.
14706         * recog.c (check_asm_operands, validate_change_1): Likewise.
14707         * reg-stack.c (check_asm_stack_operands, subst_asm_stack_regs,
14708         subst_asm_stack_regs): Likewise.
14709         * regclass.c (regclass, som_hash, som_eq, record_subregs_of_mode,
14710         cannot_change_mode_set_regs, invalid_mode_change_p): Likewise.
14711         * regmove.c (reg_is_remote_constant_p): Likewise.
14712         * regrename.c (regrename_optimize, scan_rtx_reg,
14713         kill_clobbered_value, kill_set_value, kill_autoinc_value):
14714         Likewise.
14715         * regstat.c (regstat_init_n_sets_and_refs, regstat_compute_ri,
14716         regstat_compute_calls_crossed): Likewise.
14717         * reload1.c (init_reload, new_insn_chain,
14718         has_nonexceptional_receiver, reload, copy_reloads,
14719         calculate_needs_all_insns, init_elim_table): Likewise.
14720         * rtl-factoring.c (compute_rtx_cost, fill_hash_bucket): Likewise.
14721         * rtl.c (shallow_copy_rtx_stat): Likewise.
14722         * rtlanal.c (parms_set): Likewise.
14723         * sbitmap.c (sbitmap_alloc, sbitmap_alloc_with_popcount,
14724         sbitmap_resize, sbitmap_vector_alloc): Likewise.
14725         * sched-ebb.c (earliest_block_with_similiar_load,
14726         add_deps_for_risky_insns): Likewise.
14727         * sched-rgn.c (find_rgns, gather_region_statistics, extend_rgns,
14728         schedule_region): Likewise.
14729         * see.c (eq_descriptor_pre_extension,
14730         hash_descriptor_pre_extension, hash_del_pre_extension,
14731         eq_descriptor_properties, hash_descriptor_properties,
14732         hash_del_properties, see_seek_pre_extension_expr,
14733         see_initialize_data_structures, see_print_register_properties,
14734         see_print_pre_extension_expr, see_delete_merged_def_extension,
14735         see_delete_unmerged_def_extension, see_emit_use_extension,
14736         see_pre_delete_extension, see_map_extension, see_commit_changes,
14737         see_analyze_merged_def_local_prop,
14738         see_analyze_merged_def_local_prop,
14739         see_analyze_unmerged_def_local_prop, see_analyze_use_local_prop,
14740         see_set_prop_merged_def, see_set_prop_unmerged_def,
14741         see_set_prop_unmerged_use, see_print_one_extension,
14742         see_merge_one_use_extension, see_merge_one_def_extension,
14743         see_store_reference_and_extension, see_update_uses_relevancy,
14744         see_update_defs_relevancy): Likewise.
14745         * statistics.c (hash_statistics_hash, hash_statistics_eq,
14746         hash_statistics_free, curr_statistics_hash): Likewise.
14747         * stmt.c (parse_output_constraint, decl_overlaps_hard_reg_set_p,
14748         expand_asm_operands, expand_return, case_bit_test_cmp,
14749         expand_case): Likewise.
14750         * stor-layout.c (start_record_layout): Likewise.
14751         * stringpool.c (ggc_alloc_string, gt_pch_n_S,
14752         gt_pch_save_stringpool): Likewise.
14753         * tree-data-ref.c (hash_stmt_vertex_info,
14754         have_similar_memory_accesses_1, ref_base_address_1): Likewise.
14755         * tree-ssa-phiopt.c (name_to_bb_hash): Likewise.
14756
14757 2008-06-25  Uros Bizjak  <ubizjak@gmail.com>
14758
14759         PR target/36627
14760         * config/i386/i386.md : Change constraints of HImode and QImode
14761         immediate operands from "i" to "n".  Change SImode "ni" constraint to
14762         "i" and SImode "rmi" constraint to "g".  Remove all constraints
14763         from const0_operand and const1_operand predicated operands.
14764         (i): Change QImode and HImode attribute from "i" to "n".
14765         (*subqi_2): Change HImode operands to QImode.
14766         (*subqi_3): Ditto.
14767
14768 2008-06-25  Olivier Hainque  <hainque@adacore.com>
14769
14770         * Makefile.in (GTFILES_H): Use | instead of ; as separator in
14771         sed substitutions.
14772
14773 2008-06-25  Richard Guenther  <rguenther@suse.de>
14774
14775         * tree-ssa-structalias.c (fieldoff_compare): Make sure to
14776         not overflow the result type.
14777
14778 2008-06-25  Richard Guenther  <rguenther@suse.de>
14779
14780         * tree-vn.c (vn_add): Handle TRUTH_*_EXPR.
14781         (vn_lookup): Likewise.
14782
14783 2008-06-25  Richard Guenther  <rguenther@suse.de>
14784
14785         PR tree-optimization/35518
14786         * fold-const.c (fold_ternary): Strip trivial BIT_FIELD_REFs.
14787         * tree-sra.c (instantiate_element): Use fold_build3 to build
14788         BIT_FIELD_REFs.
14789         (try_instantiate_multiple_fields): Likewise.
14790
14791 2008-06-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14792
14793         * config/rs6000/rs6000.md: Change all string instruction's clobber to
14794         be early clobbers.
14795
14796 2008-06-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14797
14798         * config/rs6000/rs6000.c (rs6000_emit_epilogue): Set
14799         use_backchain_to_restore_sp to true
14800         if the offset of the link register save area would go over the 32k - 1
14801         offset limit of the load
14802         instructions.
14803
14804 2008-06-25  Hans-Peter Nilsson  <hp@axis.com>
14805
14806         * doc/invoke.texi (Optimize Options) <fstrict-aliasing>: Add
14807         anchor for the type-punning blurb.  Cross-reference "Structures
14808         unions enumerations and bit-fields implementation".  Provide a
14809         cast-through-pointer example.  Make final sentence self-contained.
14810         * doc/implement-c.texi (Structures unions enumerations and
14811         bit-fields implementation): Cross-reference the type-punning blurb
14812         in the -fstrict-aliasing documentation.
14813
14814 2008-06-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14815
14816         PR middle-end/36594
14817         * builtins.c (expand_builtin_nonlocal_goto): Stabilize the address of
14818         the memory instead of the memory itself for the save area.
14819
14820 2008-06-24  Olivier Hainque  <hainque@adacore.com>
14821             Nicolas Roche  <roche@adacore.com>
14822
14823         * gengtype.c (srcdir_len): size_t instead of int.
14824         (get_file_realbasename): New function.  For F a filename, the real
14825         basename of F, with all the path components stripped.
14826         (get_file_srcdir_relative_path): New function.  For F a filename, the
14827         relative path to F from $(srcdir).
14828         (get_file_basename): Rewrite using get_file_srcdir_relative_path and
14829         get_file_realbasename.  Adjust the head comment.
14830         (get_prefix_langdir_index): New function. For F a filename, return the
14831         lang_dir_names[] relative index of the language directory that is
14832         a prefix in F.
14833         (get_file_langdir): For F a filename, return the name of the language
14834         directory where F is located.
14835         (get_file_gtfilename): New function. The gt- output file name for an
14836         input filename F.
14837         (get_output_file_with_visibility): Replace in-line computations with
14838         uses of get_file_gtfilename and get_prefix_langdir_index.
14839         * Makefile.in (GTFILES_H): Adjust to match what gengtype generates.
14840
14841 2008-06-24  Jakub Jelinek  <jakub@redhat.com>
14842
14843         PR tree-optimization/36504
14844         * tree-ssa-loop-prefetch.c (gather_memory_references_ref): Skip
14845         references without base address.
14846
14847 2008-06-23  Uros Bizjak  <ubizjak@gmail.com>
14848
14849         PR middle-end/36584
14850         * calls.c (expand_call): Increase alignment for recursive functions.
14851
14852 2008-06-23  Anatoly Sokolov  <aesok@post.ru>
14853
14854         * config/avr/avr.c (avr_function_value): Add new 'outgoing' argument.
14855         (TARGET_FUNCTION_VALUE): New define.
14856         * config/avr/avr-protos.h (avr_function_value): Remove declaration.
14857         * config/avr/avr.h (FUNCTION_VALUE): Remove.
14858
14859 2008-06-23  Uros Bizjak  <ubizjak@gmail.com>
14860
14861         * config/i386/i386.md (fmodxf3): Change sequence of move instructions.
14862         (fmod<mode>3): Ditto.
14863         (remainderxf3): Ditto.
14864         (remainder<mode>3): Ditto.
14865
14866 2008-06-23  Jakub Jelinek  <jakub@redhat.com>
14867
14868         PR target/36533
14869         * emit-rtl.c (set_reg_attrs_from_value): Do nothing if
14870         REG is a hard register.
14871
14872         PR tree-optimization/36508
14873         * tree-ssa-pre.c (compute_antic): Allow num_iterations up to
14874         499, don't check it at all in release compilers.
14875
14876 2008-06-23  Uros Bizjak  <ubizjak@gmail.com>
14877
14878         * config/i386/i386.md (*fop_<mode>_1_i387): Use SSE_FLOAT_MODE_P
14879         together with SSE_TARGET_MATH to disable insn pattern.
14880         (*fop_<MODEF:mode>_2_i387): Ditto.
14881         (*fop_<MODEF:mode>_3_i387): Ditto.
14882
14883 2008-06-22  Andy Hutchinson  <hutchinsonandy@aim.com>
14884
14885         * config/avr/avr.h (SUPPORTS_INIT_PRIORITY): Define.
14886
14887 2008-06-22  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
14888
14889         PR middle-end/34906
14890         * gimplify.c (gimplify_asm_expr): Check the return code of
14891         parse_output_constraint call, set function return and is_inout
14892         value if it failed.
14893
14894 2008-06-22  Ian Lance Taylor  <iant@google.com>
14895
14896         * c-lex.c (narrowest_unsigned_type): Change itk to int.
14897         (narrowest_signed_type): Likewise.
14898         * c-typeck.c (c_common_type): Change local variable mclass to enum
14899         mode_class, twice.
14900         (parser_build_binary_op): Compare the TREE_CODE_CLASS with
14901         tcc_comparison, not the tree code itself.
14902         * c-common.c (def_fn_type): Pass int, not an enum, to va_arg.
14903         (c_expand_expr): Cast modifier to enum expand_modifier.
14904         * c-common.h (C_RID_CODE): Add casts.
14905         (C_SET_RID_CODE): Define.
14906         * c-parser.c (c_parse_init): Use C_SET_RID_CODE.
14907         (c_lex_one_token): Add cast to avoid warning.
14908         (c_parser_objc_type_name): Rename local typename to type_name.
14909         (check_no_duplicate_clause): Change code parameter to enum
14910         omp_clause_code.
14911         (c_parser_omp_var_list_parens): Change kind parameter to enum
14912         omp_clause_code.
14913         (c_parser_omp_flush): Pass OMP_CLAUSE_ERROR, not 0, to
14914         c_parser_omp_list_var_parens.
14915         (c_parser_omp_threadprivate): Likewise.
14916         * cp/lex.c (init_reswords): Use C_SET_RID_CODE.
14917         * cp/parser.c (cp_lexer_get_preprocessor_token): Likewise.
14918         * c-format.c (NO_FMT): Define.
14919         (printf_length_specs): Use NO_FMT.
14920         (asm_fprintf_length_specs): Likewise.
14921         (gcc_diag_length_specs): Likewise.
14922         (scanf_length_specs): Likewise.
14923         (strfmon_length_specs): Likewise.
14924         (gcc_gfc_length_specs): Likewise.
14925         (printf_flag_specs): Change 0 to STD_C89.
14926         (asm_fprintf_flag_specs): Likewise.
14927         (gcc_diag_flag_specs): Likewise.
14928         (gcc_cxxdiag_flag_specs): Likewise.
14929         (scanf_flag_specs): Likewise.
14930         (strftime_flag_specs): Likewise.
14931         (strfmon_flag_specs): Likewise.
14932         (print_char_table): Likewise.
14933         (asm_fprintf_char_table): Likewise.
14934         (gcc_diag_char_table): Likewise.
14935         (gcc_tdiag_char_table): Likewise.
14936         (gcc_cdiag_char_table): Likewise.
14937         (gcc_cxxdiag_char_table): Likewise.
14938         (gcc_gfc_char_table): Likewise.
14939         (scan_char_table): Likewise.
14940         (time_char_table): Likewis.
14941         (monetary_char_table): Likewise.
14942         * c-format.h (BADLEN): Likewise.
14943
14944 2008-06-21  Ian Lance Taylor  <iant@google.com>
14945
14946         * tree.h (enum tree_code): Include all-tree.def, not tree.def.
14947         Define END_OF_BASE_TREE_CODES around inclusion.
14948         * tree.c (tree_code_type): New global array.
14949         (tree_code_length, tree_code_name): Likewise.
14950         * Makefile.in (TREE_H): Add all-tree.def, c-common.def, and
14951         $(lang_tree_files).
14952         (all-tree.def, s-alltree): New targets.
14953         (gencheck.h, s-gencheck): Remove.
14954         (tree.o): Depend upon all-tree.def.
14955         (build/gencheck.o): Remove gencheck.h dependency.
14956         (mostlyclean): Don't remove gencheck.h.
14957         * c-common.h (enum c_tree_code): Remove.
14958         * c-lang.c (tree_code_type): Remove.
14959         (tree_code_length, tree_code_name): Remove.
14960         * gencheck.c (tree_codes): Include all-tree.def, rather than
14961         tree.def, c-common.def, and gencheck.h.  Undefined DEFTREECODE
14962         after it is used.
14963         * tree-browser.c (tb_tree_codes): Include all-tree.def, rather
14964         than tree.def.
14965         * cp/cp-tree.h (enum cplus_tree_code): Remove.
14966         (operator_name_info): Size to MAX_TREE_CODES.
14967         (assignment_operator_name_info): Likewise.
14968         * cp/cp-lang.c (tree_code_type): Remove.
14969         (tree_code_length, tree_code_name): Remove.
14970         * cp/lex.c (operator_name_info): Size to MAX_TREE_CODES.
14971         (assignment_operator_name_info): Likewise.
14972         * cp/decl.c (grok_op_properties): Change LAST_CPLUS_TREE_CODE to
14973         MAX_TREE_CODES.
14974         * cp/mangle.c (write_expression): Likewise.
14975         * cp/Make-lang.in (CXX_TREE_H): Remove cp/cp-tree.def.
14976         * fortran/f95-lang.c (tree_code_type): Remove.
14977         (tree_code_length, tree_code_name): Remove.
14978         * java/java-tree.h (enum java_tree_code): Remove.
14979         * java/lang.c (tree_code_type): Remove.
14980         (tree_code_length, tree_code_name): Remove.
14981         * java/Make-lang.in (JAVA_TREE_H): Remove java/java-tree.def.
14982         * objc/objc-act.h (enum objc_tree_code): Remove.
14983         * objc/objc-lang.c (tree_code_type): Remove.
14984         (tree_code_length, tree_code_name): Remove.
14985         * objcp/objcp-lang.c (tree_code_type): Remove.
14986         (tree_code_length, tree_code_name): Remove.
14987         * ada/ada-tree.h (enum gnat_tree_code): Remove.
14988         * ada/Make-lang.in (ADA_TREE_H): Remove ada/ada-tre.def.
14989         * ada/misc.c (tree_code_type): Remove.
14990         (tree_code_length, tree_code_name): Remove.
14991
14992 2008-06-21  Bernhard Fischer  <aldot@gcc.gnu.org>
14993
14994         * tree-ssa-pre.c (fini_antic): Bitmap_sets have to be freed before
14995         the grand_bitmap_obstack.
14996
14997 2008-06-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14998
14999         * ggc.h (GGC_RESIZEVAR): New, reorder macros.
15000         * tracer.c (tail_duplicate): Fix for -Wc++-compat.
15001         * tree-affine.c (aff_combination_expand, free_name_expansion): Likewise.
15002         * tree-cfg.c (replace_by_duplicate_decl, replace_ssa_name,
15003         move_stmt_r, new_label_mapper): Likewise.
15004         * tree-complex.c (cvc_lookup): Likewise.
15005         * tree-dfa.c (create_function_ann): Likewise.
15006         * tree-dump.c (dump_register): Likewise.
15007         * tree-if-conv.c (tree_if_conversion, add_to_predicate_list,
15008         find_phi_replacement_condition): Likewise.
15009         * tree-inline.c (copy_phis_for_bb, estimate_num_insns_1,
15010         tree_function_versioning): Likewise.
15011         * tree-into-ssa.c (cmp_dfsnum): Likewise.
15012         * tree-iterator.c (tsi_link_before, tsi_link_after): Likewise.
15013         * tree-nested.c (lookup_field_for_decl, lookup_tramp_for_decl,
15014         get_nonlocal_debug_decl, convert_nonlocal_reference,
15015         convert_nonlocal_omp_clauses, get_local_debug_decl,
15016         convert_local_reference, convert_local_omp_clauses,
15017         convert_nl_goto_reference, convert_nl_goto_receiver,
15018         convert_tramp_reference, convert_call_expr): Likewise.
15019         * tree-outof-ssa.c (contains_tree_r): Likewise.
15020         * tree-parloops.c (reduction_phi, initialize_reductions,
15021         eliminate_local_variables_1, add_field_for_reduction,
15022         add_field_for_name, create_phi_for_local_result,
15023         create_call_for_reduction_1, create_loads_for_reductions,
15024         create_stores_for_reduction, create_loads_and_stores_for_name):
15025         Likewise.
15026         * tree-phinodes.c (allocate_phi_node): Likewise.
15027         * tree-predcom.c (order_drefs, execute_pred_commoning_cbck): Likewise.
15028         * tree-sra.c (sra_elt_hash, sra_elt_eq, lookup_element): Likewise.
15029         * tree-ssa-alias.c (get_mem_sym_stats_for): Likewise.
15030         * tree-ssa-coalesce.c (compare_pairs): Likewise.
15031         * tree-ssa-loop-im.c (mem_ref_in_stmt, memref_hash, memref_eq,
15032         memref_free, gather_mem_refs_stmt, vtoe_hash, vtoe_eq, vtoe_free,
15033         record_vop_access, get_vop_accesses, get_vop_stores): Likewise.
15034         * tree-ssa-loop-prefetch.c (determine_loop_nest_reuse): Likewise.
15035         * tree-ssa-sccvn.c (VN_INFO_GET, free_phi, free_reference,
15036         vn_nary_op_insert): Likewise.
15037         * tree-ssa.c (redirect_edge_var_map_add,
15038         redirect_edge_var_map_clear, redirect_edge_var_map_dup): Likewise.
15039         * tree-vectorizer.c (vectorize_loops): Likewise.
15040         * tree.c (make_node_stat, copy_node_stat, build_int_cst_wide,
15041         build_fixed, build_real, make_tree_binfo_stat, make_tree_vec_stat,
15042         tree_cons_stat, build1_stat, build_variant_type_copy,
15043         decl_init_priority_lookup, decl_fini_priority_lookup,
15044         decl_priority_info, decl_restrict_base_lookup,
15045         decl_restrict_base_insert, decl_debug_expr_lookup,
15046         decl_debug_expr_insert, decl_value_expr_lookup,
15047         decl_value_expr_insert, type_hash_eq, type_hash_lookup,
15048         type_hash_add, get_file_function_name, tree_check_failed,
15049         tree_not_check_failed, tree_range_check_failed,
15050         omp_clause_range_check_failed, build_omp_clause,
15051         build_vl_exp_stat): Likewise.
15052         * value-prof.c (gimple_histogram_value,
15053         gimple_duplicate_stmt_histograms): Likewise.
15054         * var-tracking.c (attrs_list_insert, attrs_list_copy,
15055         unshare_variable, variable_union_info_cmp_pos, variable_union,
15056         dataflow_set_different_1, dataflow_set_different_2,
15057         vt_find_locations, variable_was_changed, set_variable_part,
15058         emit_notes_for_differences_1, emit_notes_for_differences_2): Likewise.
15059         * varasm.c (prefix_name, emutls_decl, section_entry_eq,
15060         section_entry_hash, object_block_entry_eq,
15061         object_block_entry_hash, create_block_symbol,
15062         initialize_cold_section_name, default_function_rodata_section,
15063         strip_reg_name, set_user_assembler_name, const_desc_eq,
15064         build_constant_desc, output_constant_def, lookup_constant_def,
15065         const_desc_rtx_hash, const_desc_rtx_eq, const_rtx_hash_1,
15066         create_constant_pool, force_const_mem, compute_reloc_for_rtx_1,
15067         default_internal_label): Likewise.
15068         * varray.c (varray_init, varray_grow): Likewise.
15069         * vec.c (vec_gc_o_reserve_1, vec_heap_o_reserve_1): Likewise.
15070
15071 2008-06-20  Uros Bizjak  <ubizjak@gmail.com>
15072
15073         * config/i386/i386.md (*jcc_fused_1): Handle all valid compare
15074         operators for "test" insn.  Macroize insn using SWI mode macro.
15075         (*jcc_fused_2): Ditto.
15076         (*jcc_fused_3): Macroize insn using SWI mode macro.
15077         (*jcc_fused_4): Ditto.
15078
15079 2008-06-20  Bernhard Fischer  <aldot@gcc.gnu.org>
15080
15081         * tree-ssa-pre.c: Fix typo in comment.
15082         (init_antic, fini_antic): Add explicit funtions for
15083         initializing and deinitializing ANTIC and AVAIL sets.
15084         (create_expression_by_pieces): Fix typo in comment.
15085         Remove redundant set of new_stuff and use NULL_TREE instead of NULL.
15086         (execute_pre): Eventually dump details about ANTIC_IN.
15087
15088 2008-06-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15089
15090         * collect2.c (main, add_to_list): Fix for -Wc++-compat.
15091         * gcc.c (translate_options, init_spec, store_arg, read_specs,
15092         add_to_obstack, file_at_path, find_a_file, execute,
15093         add_preprocessor_option, add_assembler_option, add_linker_option,
15094         process_command, insert_wrapper, do_option_spec, do_self_spec,
15095         spec_path, do_spec_1, is_directory, main, used_arg,
15096         getenv_spec_function): Likewise.
15097         * tlink.c (symbol_hash_lookup, file_hash_lookup,
15098         demangled_hash_lookup, symbol_push, file_push, frob_extension):
15099         Likewise.
15100
15101 2008-06-19  Kenneth Zadeck <zadeck@naturalbridge.com>
15102
15103         * doc/rtl.texi: Updated subreg section.
15104
15105 2008-06-19  Jakub Jelinek  <jakub@redhat.com>
15106
15107         PR c++/36523
15108         * cgraphunit.c (cgraph_process_new_functions): Don't clear
15109         node->needed and node->reachable.
15110         * cgraphbuild.c (record_reference): Handle OMP_PARALLEL and OMP_TASK.
15111         * omp-low.c (delete_omp_context): Call finalize_task_copyfn.
15112         (expand_task_call): Don't call expand_task_copyfn.
15113         (expand_task_copyfn): Renamed to...
15114         (finalize_task_copyfn): ... this.
15115
15116 2008-06-19  Jan Hubicka  <jh@suse.cz>
15117
15118         * builtins.c (expand_builtin_nonlocal_goto): Stabilize r_sp before
15119         clobbering framepointer.
15120
15121 2008-06-19  Jan Hubicka  <jh@suse.cz>
15122
15123         * tree-optimize.c (execute_early_local_optimizations): Set
15124         cgraph_state only at first invocation.
15125
15126 2008-06-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15127
15128         * system.h (-Wc++-compat): Activate as a warning, no an error.
15129
15130 2008-06-19  Uros Bizjak  <ubizjak@gmail.com>
15131
15132         * config/i386/i386.md (*jcc_fused_1): Use ASM_COMMENT_START
15133         instead of "#" in insn asm template.
15134         (*jcc_fused_2): Ditto.
15135
15136 2008-06-19  Uros Bizjak  <ubizjak@gmail.com>
15137
15138         * config/i386/i386.h (ix86_tune_indices)
15139         [X86_TUNE_FUSE_CMP_AND_BRANCH]: New.
15140         (TARGET_FUSE_CMP_AND_BRANCH): New define.
15141         * config/i386/i386.md (*jcc_fused_1): New insn pattern
15142         (*jcc_fused_2): Ditto.
15143         * config/i386/i386.c (ix86_tune_features): Add m_CORE2 to
15144         X86_TUNE_FUSE_CMP_AND_BRANCH targets.
15145         (print operand): Handle 'E' and 'e' code.
15146
15147 2008-06-19  Anatoly Sokolov  <aesok@post.ru>
15148
15149         * config/avr/avr.c (avr_mcu_t): Add attiny13a.
15150         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
15151         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
15152
15153 2008-06-19  Bernhard Fischer  <aldot@gcc.gnu.org>
15154
15155         * cgraphunit.c (cgraph_finalize_function): Remove redundant setting of
15156         node->decl.
15157         (cgraph_expand_function): Use local copy of decl.
15158         (cgraph_expand_all_functions): Remove redundant initialization of
15159         order_pos.
15160         (cgraph_optimize): Reword internal_error message.
15161
15162 2008-06-19  Chung-Lin Tang  <ctang@marvell.com>
15163
15164         * arm-protos.h (arm_return_in_memory): Remove public
15165         arm_return_in_memory() prototype.
15166         * arm.c (arm_return_in_memory): Add static prototype, add target
15167         hook macro, change definition and comments.
15168         * arm.h (TARGET_RETURN_IN_MEMORY): Remove.
15169
15170 2008-06-19  Ben Elliston  <bje@au.ibm.com>
15171
15172         * dfp.h, dfp.c, config/dfp-bit.h, config/dfp-bit.c, real.h,
15173         real.c: Remove references to IEEE 754R.
15174         * doc/install.texi (Configuration): IEEE 754R -> IEEE 754-2008.
15175         * doc/libgcc.texi (Decimal float library routines): Likewise.
15176
15177 2008-06-18  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
15178
15179         * targhooks.h (struct gcc_target): New member unwind_word_mode.
15180         (default_unwind_word_mode): Add prototype.
15181         * targhooks.c (default_unwind_word_mode): New function.
15182         (default_eh_return_filter_mode): Return targetm.unwind_word_mode ()
15183         instead of word_mode.
15184         * target-def.h (TARGET_UNWIND_WORD_MODE): New macro.
15185         (TARGET_INITIALIZER): Use it.
15186
15187         * c-common.c (handle_mode_attribute): Support "unwind_word"
15188         mode attribute.
15189         * unwind-generic.h (_Unwind_Word, _Unwind_Sword): Use it.
15190
15191         * except.c (init_eh): Use targetm.unwind_word_mode () instead of
15192         word_mode to access SjLj_Function_Context member "data".
15193         (sjlj_emit_dispatch_table): Likewise.  Also, perform type
15194         conversion from targetm.eh_return_filter_mode () to
15195         targetm.unwind_word_mode () if they differ.
15196
15197         * builtin-types.def (BT_UNWINDWORD): New primitive type.
15198         (BT_FN_UNWINDWORD_PTR): New function type.
15199         (BT_FN_WORD_PTR): Remove.
15200         * builtins.def (BUILT_IN_EXTEND_POINTER): Use BT_FN_UNWINDWORD_PTR.
15201         * except.c (expand_builtin_extend_pointer): Convert pointer to
15202         targetm.unwind_word_mode () instead of word_mode.
15203
15204         * config/spu/spu-protos.h (spu_eh_return_filter_mode): Remove.
15205         * config/spu/spu.c (spu_eh_return_filter_mode): Remove.
15206         (spu_unwind_word_mode): New function.
15207         (TARGET_EH_RETURN_FILTER_MODE): Do not define.
15208         (TARGET_UNWIND_WORD_MODE): Define.
15209         * config/spu/t-spu-elf (TARGET_LIBGCC2_CFLAGS): Remove -D__word__=SI.
15210
15211 2008-06-18  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
15212
15213         * config/spu/spu.c (reg_align): Remove.
15214         (regno_aligned_for_load): Also accept ARG_POINTER_REGNUM.
15215         (spu_split_load): Use regno_aligned_for_load instead of reg_align.
15216         (spu_split_store): Likewise.
15217
15218 2008-06-18  Bernhard Fischer  <aldot@gcc.gnu.org>
15219
15220         * gcc/tree-vn.c: Fix typo in comment.
15221
15222 2008-06-18  Jan Hubicka  <jh@suse.cz>
15223
15224         * cgraphunit.c (cgraph_optimize): Output debug info when doing
15225         toplevel reorder too.
15226
15227 2008-06-18  Jan Hubicka  <jh@suse.cz>
15228
15229         * c-opts.c (c_common_post_options): PCH is not compatible with
15230         no-unit-at-a-time.
15231         * opts.c (handle_options): Enable unit-at-a-time at O0 along with
15232         -fno-toplevel-reorder by default now.
15233
15234 2008-06-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
15235
15236         PR documentation/30739
15237         * doc/install.texi (Prerequisites): Document dependency on awk.
15238
15239 2008-06-18  Uros Bizjak  <ubizjak@gmail.com>
15240             Ian Lance Taylor  <iant@google.com>
15241
15242         PR rtl-optimization/35604
15243         * jump.c (redirect_exp_1): Skip the condition of an IF_THEN_ELSE. We
15244         only want to change jump destinations, not eventual label comparisons.
15245
15246 2008-06-16  Jan Hubicka  <jh@suse.cz>
15247
15248         * cgraphunit.c (cgraph_expand_pending_functions): Give up at
15249         syntax errors.
15250         (cgraph_analyze_function): Likewise.
15251
15252 2008-06-16  Jan Hubicka  <jh@suse.cz>
15253
15254         * cgraph.h (cgraph_mark_if_needed): New function.
15255         * cgraphunit.c (cgraph_mark_if_needed): New function.
15256         * c-decl.c (duplicate_decl): Use it.
15257
15258 2008-06-16  Jan Hubicka  <jh@suse.cz>
15259
15260         * cgraph.c (cgraph_add_new_function): When in expansion state, do
15261         lowering.
15262
15263 2008-06-16  Jan Hubicka  <jh@suse.cz>
15264
15265         * tree-outof-ssa.c (pass_out_of_ssa): Do not depend on PROP_alias.
15266
15267 2008-06-16  Daniel Jacobowitz  <dan@codesourcery.com>
15268             Kazu Hirata  <kazu@codesourcery.com>
15269             Maxim Kuvyrkov  <maxim@codesourcery.com
15270
15271         * config.gcc (mips64el-st-linux-gnu): Use mips/st.h and mips/t-st.
15272         * config.host: Use driver-native.o and mips/x-native for mips*-linux*.
15273         * config/mips/linux.h (host_detect_local_cpu): Declare, add to
15274         EXTRA_SPEC_FUNCTIONS.
15275         (MARCH_MTUNE_NATIVE_SPECS, BASE_DRIVER_SELF_SPECS): New macros.
15276         (DRIVER_SELF_SPECS): Adjust.
15277         * config/mips/linux64.h (DRIVER_SELF_SPECS): Update.
15278         * config/mips/st.h, config/mips/t-st: New.
15279         * config/mips/driver-native.c, config/mips/x-native: New.
15280         * doc/invoke.texi (MIPS): Document 'native' value for -march and
15281         -mtune options.
15282
15283 2008-06-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
15284
15285         * config/mips/mips.h (ISA_HAS_CONDMOVE): Slice ISA_HAS_FP_CONDMOVE
15286         from it.
15287         (ISA_HAS_FP_CONDMOVE): New macro.
15288         (ISA_HAS_FP_MADD4_MSUB4, ISA_HAS_FP_MADD3_MSUB3): New macros.
15289         (ISA_HAS_NMADD_NMSUB): Rename to ISA_HAS_NMADD4_NMSUB4.
15290         (ISA_HAS_NMADD3_NMSUB3): New macro.
15291         * config/mips/mips.c (mips_rtx_costs): Update.
15292         * config/mips/mips.md (MOVECC): Don't use FP conditional moves when
15293         compiling for ST Loongson 2E/2F.
15294         (madd<mode>): Rename to madd4<mode>.  Update.
15295         (madd3<mode>): New pattern.
15296         (msub<mode>): Rename to msub4<mode>.  Update.
15297         (msub3<mode>): New pattern.
15298         (nmadd<mode>): Rename to nmadd4<mode>.  Update.
15299         (nmadd3<mode>): New pattern.
15300         (nmadd<mode>_fastmath): Rename to nmadd4<mode>_fastmath.  Update.
15301         (nmadd3<mode>_fastmath): New pattern.
15302         (nmsub<mode>): Rename to nmsub4<mode>.  Update.
15303         (nmsub3<mode>): New pattern.
15304         (nmsub<mode>_fastmath): Rename to nmsub4<mode>_fastmath.  Update.
15305         (nmsub3<mode>_fastmath): New pattern.
15306         (mov<SCALARF:mode>_on_<MOVECC:mode>, mov<mode>cc): Update.
15307
15308 2008-06-18  Steven Bosscher  <steven@gcc.gnu.org>
15309
15310         * df.h (struct df_ref): Replace 'insn' field with 'insn_info' field.
15311         (DF_REF_INSN_INFO): New.
15312         (DF_REF_INSN, DF_REF_INSN_UID): Rewrite macros using DF_REF_INSN_INFO.
15313         (DF_REF_IS_ARTIFICIAL): Artificial refs are now identified as refs
15314         with a NULL DF_REF_INSN_INFO.
15315         (DF_INSN_INFO_GET, DF_INSN_INFO_SET): Renamed from DF_INSN_GET and
15316         DF_INSN_SET.
15317         (DF_INSN_INFO_LUID, DF_INSN_INFO_DEFS, DF_INSN_INFO_USES,
15318         DF_INSN_INFO_EQ_USES): New.
15319         (DF_INSN_LUID, DF_INSN_DEFS, DF_INSN_USES, DF_INSN_EQ_USES,
15320         DF_INSN_UID_LUID, DF_INSN_UID_DEFS, DF_INSN_UID_USES,
15321         DF_INSN_UID_EQ_USES): Rewrite using DF_INSN_INFO_* macros.
15322         * df-core.c: Update comment for above changes.
15323         (df_insn_debug_regno): Use DF_INSN_INFO_GET instead of INSN_UID and
15324         DF_INSN_UID_* macros.
15325         (df_ref_debug): Check for NULL DF_REF_INSN_INFO.
15326         * df-scan.c (df_ref_record): Take a df_insn_info instead of an
15327         insn rtx.  Update all callers.
15328         (df_def_record_1, df_defs_record, df_uses_record, df_get_call_refs,
15329         df_ref_create_structure, df_insn_refs_collect): Likewise.
15330         (df_ref_equal_p): Compare DF_REF_INSN_INFO pointers for the refs.
15331         * df-problems.c (df_chain_dump): Test for non-NULL DF_REF_INSN_INFO.
15332         (df_live_bb_local_compute): Retrieve DF_INSN_INFO, use DF_INSN_INFO_*
15333         macros to access the insn refs.
15334         (df_chain_top_dump, df_chain_bottom_dump, df_byte_lr_alloc): Likewise.
15335         * fwprop.c (use_killed_between): Use DF_REF_INSN accessor macro.
15336         (all_uses_available): Retrieve DF_INSN_INFO for def_insn, and use it
15337         for accessing the refs.
15338         (try_fwprop_subst): Likewise.
15339         * ddg.c (add_cross_iteration_register_deps): Use DF_REF_INSN macro.
15340         * web.c (union_defs): Retrieve DF_INSN_INFO for def_insn, and use it
15341         for accessing the refs.
15342         * loop-invariant.c (invariant_for_use): Use DF_REF_BB macro.
15343         (check_dependencies): Use DF_INSN_INFO_GET, use DF_INSN_INFO_* macros
15344         to look at the insn refs.
15345         (record_uses): Likewise.
15346         * dce.c (deletable_insn_p): Don't tolerate artificial DEFs in this
15347         function anymore.
15348         (mark_artificial_uses): Don't mark_insn for artificial refs.
15349         (mark_reg_rependencies): Likewise.
15350
15351         * doc/rtl.texi: Remove documentation of ADDRESSOF.
15352
15353 2008-06-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
15354
15355         * configure: Regenerate.
15356
15357 2008-06-17  Eric B. Weddington  <eric.weddington@atmel.com>
15358
15359         * config/avr/avr.c (avr_mcu_t): Remove atmega32hvb.
15360         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
15361         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
15362
15363 2008-06-17  Eric B. Weddington  <eric.weddington@atmel.com>
15364
15365         * config/avr/avr.c (avr_mcu_t): Add attiny167.
15366         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
15367         * gcc/config/avr/t-avr (MULTILIB_MATCHES): Likewise.
15368
15369 2008-06-17  Eric B. Weddington  <eric.weddington@atmel.com>
15370
15371         * config/avr/avr.c (avr_mcu_t): Add atmega32u4.
15372         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
15373         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
15374
15375 2008-06-17  Bernhard Fischer  <aldot@gcc.gnu.org>
15376
15377         * tree-ssa-sccvn.c: Fix format of comments.
15378
15379 2008-06-17  Bernhard Fischer  <aldot@gcc.gnu.org>
15380
15381         * cgraph.c: Remove unneeded forward declarations of eq_node()
15382         and hash_node().
15383
15384 2008-06-17  Steven Bosscher  <steven@gcc.gnu.org>
15385
15386         * see.c (see_analyse_one_def): Do not look for REG_LIBCALL and
15387         REG_RETVAL notes.
15388         (see_update_relevancy): Likewise.
15389         * fwprop.c (try_fwprop_subst): Likewise.
15390         * rtlanal.c (noop_move_p): Likewise.
15391         * builtins.c (expand_buitlin_mathfn): Don't try to add REG_EQUAL
15392         notes to non-existing libcall blocks.
15393         * cse.c (cse_insn): Change prototype.  Don't update libcall notes.
15394         Remove orig_set.
15395         (cse_extended_basic_block): Don't track libcall and no-conflict notes.
15396         (dead_libcall_p): Remove.
15397         (delete_trivially_dead_insns): Don't use it.
15398         * web.c (union_defs): Remove comment about keeping nops.
15399         * gcse.c (hash_scan_insn): Don't take libcall pointers.
15400         (compute_hash_table_work): Don't track libcall notes.
15401         (do_local_cprop): Don't take libcall pointers.  Don't update
15402         libcall notes.
15403         (adjust_libcall_notes): Deleted.
15404         (local_cprop_pass): Remove stack for nested libcalls (which shouldn't
15405         ever have existed in the first place).
15406         (replace_store_insn): Don't try to remove libcall notes.
15407         * lower-subreg.c (move_libcall_note, move_retval_note): Deleted.
15408         (resolve_reg_notes): Don't call them.
15409         (resolve_simple_move): Likewise.
15410         (decompose_multiword_subregs): Remove block handling REG_RETVAL notes.
15411         Don't remove REG_RETVAL notes.
15412         * emit-rtl.c (try_split): Don't update libcall notes.
15413         (emit_copy_of_insn_after): Dito.
15414         * cselib.c (cselib_current_insn_in_libcall): Remove.
15415         (cselib_process_insn): Don't set/clear it.
15416         (new_elt_loc_list): Don't record it.
15417         (cselib_init): Don't initialize it.
15418         * cselib.c (struct elt_loc_list): Remove in_libcall field.
15419         * loop-invariant.c (find_invariant_insn): Don't look for libcall
15420         notes.
15421         * sched-deps.c (sched_analyze_insn): Don't group libcall blocks.
15422         (sched_analyze): Don't set up deps->libcall_block_tail_insn.
15423         (init_deps): Don't initialize it.
15424         * sched-int.h (struct deps): Rremove libcall_block_tail_insn field.
15425         * combine.c (delete_noop_moves): Don't update libcall notes.
15426         (can_combine_p): Remove now pointless #if 0 block.
15427         (try_combine): Remove another obsolete #if 0 block.
15428         (distribute_notes): Don't distribute libcall notes.
15429         * reg-notes.def (REG_LIBCALL, REG_RETVAL): Remove.
15430         * dce.c (libcall_dead_p): Remove.
15431         (delete_unmarked_insns): Don't handle libcall blocks.
15432         (preserve_libcall_for_dce): Remove.
15433         (prescan_insns_for_dce): Don't special-case libcall block insns.
15434         * reload1 (reload): Don't handle libcall notes.
15435         * doc/rtl.texi (REG_LIBCALL, REG_RETVAL, REG_LIBCALL_ID): Remove
15436         documentation.
15437
15438 2008-06-16  Eric B. Weddington  <eric.weddington@atmel.com>
15439
15440         * config/avr/avr.c (avr_mcu_t): Add atmega32c1.
15441         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
15442         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
15443
15444 2008-06-16  Eric B. Weddington  <eric.weddington@atmel.com>
15445
15446         * config/avr/avr.c (avr_mcu_t): Add atmega32m1.
15447         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
15448         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
15449
15450 2008-06-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
15451
15452         * Makefile.in (FLAGS_TO_PASS): Add $(datarootdir).
15453
15454 2008-06-16  Ira Rosen  <irar@il.ibm.com>
15455
15456         PR tree-optimization/36493
15457         * tree-vect-transform.c (vect_create_data_ref_ptr): Remove TYPE from
15458         the arguments list. Use VECTYPE to create vector pointer.
15459         (vectorizable_store): Fail if accesses through a pointer to vectype
15460         do not alias the original memory reference operands.
15461         Call vect_create_data_ref_ptr without the removed argument.
15462         (vectorizable_load): Likewise.
15463         (vect_setup_realignment): Call vect_create_data_ref_ptr without the
15464         removed argument.
15465
15466 2008-06-015  Andy Hutchinson  <hutchinsonandy@aim.com>
15467
15468         PR target/36336
15469         * config/avr/avr.h (LEGITIMIZE_RELOAD_ADDRESS): Add check for
15470         reg_equiv_constant.
15471
15472 2008-06-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
15473
15474         * config/mips/loongson2ef.md: New file.
15475         * config/mips/mips.md (UNSPEC_LOONGSON_ALU1_TURN_ENABLED_INSN)
15476         (UNSPEC_LOONGSON_ALU2_TURN_ENABLED_INSN)
15477         (UNSPEC_LOONGSON_FALU1_TURN_ENABLED_INSN)
15478         (UNSPEC_LOONGSON_FALU2_TURN_ENABLED_INSN): New constants.
15479         (define_attr "cpu"): Rename loongson2e and loongson2f to loongson_2e
15480         and loongson_2f.
15481         (loongson2ef.md): New include.
15482         * config/mips/loongson.md (vec_pack_ssat_<mode>, vec_pack_usat_<mode>)
15483         (add<mode>3, paddd, ssadd<mode>3, usadd<mode>3)
15484         (loongson_and_not_<mode>, loongson_average_<mode>, loongson_eq_<mode>)
15485         (loongson_gt_<mode>, loongson_extract_halfword)
15486         (loongson_insert_halfword_0, loongson_insert_halfword_2)
15487         (loongson_insert_halfword_3, loongson_mult_add, smax<mode>3)
15488         (umax<mode>3, smin<mode>3, umin<mode>3, loongson_move_byte_mask)
15489         (umul<mode>3_highpart, smul<mode>3_highpart, loongson_smul_lowpart)
15490         (loongson_umul_word, loongson_pasubub, reduc_uplus_<mode>)
15491         (loongson_psadbh, loongson_pshufh, loongson_psll<mode>)
15492         (loongson_psra<mode>, loongson_psrl<mode>, sub<mode>3, psubd)
15493         (sssub<mode>3, ussub<mode>3, vec_interleave_high<mode>)
15494         (vec_interleave_low<mode>): Define type attribute.
15495         * config/mips/mips.c (mips_ls2): New static variable.
15496         (mips_issue_rate): Update to handle tuning for Loongson 2E/2F.
15497         (mips_ls2_init_dfa_post_cycle_insn, mips_init_dfa_post_cycle_insn)
15498         (sched_ls2_dfa_post_advance_cycle, mips_dfa_post_advance_cycle):
15499         Implement target scheduling hooks.
15500         (mips_multipass_dfa_lookahead): Update to handle tuning for
15501         Loongson 2E/2F.
15502         (mips_sched_init): Initialize data for Loongson scheduling.
15503         (mips_ls2_variable_issue): New static function.
15504         (mips_variable_issue): Update to handle tuning for Loongson 2E/2F.
15505         Add sanity check.
15506         (TARGET_SCHED_INIT_DFA_POST_CYCLE_INSN)
15507         (TARGET_SCHED_DFA_POST_ADVANCE_CYCLE): Override target hooks.
15508         * config/mips/mips.h (TUNE_LOONGSON_2EF): New macros.
15509         (ISA_HAS_XFER_DELAY, ISA_HAS_FCMP_DELAY, ISA_HAS_HILO_INTERLOCKS):
15510         Handle ST Loongson 2E/2F cores.
15511         (CPU_UNITS_QUERY): Define macro to enable querying of DFA units.
15512
15513 2008-06-15  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
15514
15515         * omp-low.c (extract_omp_for_data): Fix comment typo.
15516         * c.opt: Fix typo.
15517
15518 2008-06-15  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
15519
15520         * doc/sourcebuild.texi (Config Fragments): Remove obsolete
15521         FIXME note about gcc/config.guess.
15522         * doc/options.texi (Option file format): Remove non-ASCII bytes.
15523         * doc/cpp.texi: Expand TABs, drop indentation outside examples.
15524         * doc/cppopts.texi: Likewise.
15525         * doc/extend.texi: Likewise.
15526         * doc/gcc.texi: Likewise.
15527         * doc/gccint.texi: Likewise.
15528         * doc/gcov.texi: Likewise.
15529         * doc/gty.texi: Likewise.
15530         * doc/hostconfig.texi: Likewise.
15531         * doc/install.texi: Likewise.
15532         * doc/invoke.texi: Likewise.
15533         * doc/loop.texi: Likewise.
15534         * doc/makefile.texi: Likewise.
15535         * doc/md.texi: Likewise.
15536         * doc/passes.texi: Likewise.
15537         * doc/tm.texi: Likewise.
15538         * doc/tree-ssa.texi: Likewise.
15539         * doc/trouble.texi: Likewise.
15540
15541 2008-06-15  Mark Shinwell  <shinwell@codesourcery.com>
15542             Nathan Sidwell  <nathan@codesourcery.com>
15543             Maxim Kuvyrkov  <maxim@codesourcery.com>
15544             Richard Sandiford  <rdsandiford@googlemail.com>
15545
15546         * config/mips/mips-modes.def: Add V8QI, V4HI and V2SI modes.
15547         * config/mips/mips-protos.h (mips_expand_vector_init): New.
15548         * config/mips/mips-ftypes.def: Add function types for Loongson-2E/2F
15549         builtins.
15550         * config/mips/mips.c (mips_split_doubleword_move): Handle new modes.
15551         (mips_hard_regno_mode_ok_p): Allow 64-bit vector modes for Loongson.
15552         (mips_vector_mode_supported_p): Add V2SImode, V4HImode and
15553         V8QImode cases.
15554         (LOONGSON_BUILTIN, LOONGSON_BUILTIN_ALIAS): New.
15555         (CODE_FOR_loongson_packsswh, CODE_FOR_loongson_packsshb,
15556         (CODE_FOR_loongson_packushb, CODE_FOR_loongson_paddw,
15557         (CODE_FOR_loongson_paddh, CODE_FOR_loongson_paddb,
15558         (CODE_FOR_loongson_paddsh, CODE_FOR_loongson_paddsb)
15559         (CODE_FOR_loongson_paddush, CODE_FOR_loongson_paddusb)
15560         (CODE_FOR_loongson_pmaxsh, CODE_FOR_loongson_pmaxub)
15561         (CODE_FOR_loongson_pminsh, CODE_FOR_loongson_pminub)
15562         (CODE_FOR_loongson_pmulhuh, CODE_FOR_loongson_pmulhh)
15563         (CODE_FOR_loongson_biadd, CODE_FOR_loongson_psubw)
15564         (CODE_FOR_loongson_psubh, CODE_FOR_loongson_psubb)
15565         (CODE_FOR_loongson_psubsh, CODE_FOR_loongson_psubsb)
15566         (CODE_FOR_loongson_psubush, CODE_FOR_loongson_psubusb)
15567         (CODE_FOR_loongson_punpckhbh, CODE_FOR_loongson_punpckhhw)
15568         (CODE_FOR_loongson_punpckhwd, CODE_FOR_loongson_punpcklbh)
15569         (CODE_FOR_loongson_punpcklhw, CODE_FOR_loongson_punpcklwd): New.
15570         (mips_builtins): Add Loongson builtins.
15571         (mips_loongson_2ef_bdesc): New.
15572         (mips_bdesc_arrays): Add mips_loongson_2ef_bdesc.
15573         (mips_builtin_vector_type): Handle unsigned versions of vector modes.
15574         (MIPS_ATYPE_UQI, MIPS_ATYPE_UDI, MIPS_ATYPE_V2SI, MIPS_ATYPE_UV2SI)
15575         (MIPS_ATYPE_V4HI, MIPS_ATYPE_UV4HI, MIPS_ATYPE_V8QI, MIPS_ATYPE_UV8QI):
15576         New.
15577         (mips_expand_vector_init): New.
15578         * config/mips/mips.h (HAVE_LOONGSON_VECTOR_MODES): New.
15579         (TARGET_CPU_CPP_BUILTINS): Define __mips_loongson_vector_rev
15580         if appropriate.
15581         * config/mips/mips.md: Add unspec numbers for Loongson
15582         builtins.  Include loongson.md.
15583         (MOVE64): Include Loongson vector modes.
15584         (SPLITF): Include Loongson vector modes.
15585         (HALFMODE): Handle Loongson vector modes.
15586         * config/mips/loongson.md: New.
15587         * config/mips/loongson.h: New.
15588         * config.gcc: Add loongson.h header for mips*-*-* targets.
15589         * doc/extend.texi (MIPS Loongson Built-in Functions): New.
15590
15591 2008-06-14  Joseph Myers  <joseph@codesourcery.com>
15592
15593         * config.gcc (arc-*-elf*, avr-*-*, fr30-*-elf, frv-*-elf,
15594         h8300-*-elf*, h8300-*-*, i[34567]86-*-elf*, x86_64-*-elf*,
15595         i[34567]86-*-aout*, i[34567]86-*-coff*, ia64*-*-elf*,
15596         iq2000*-*-elf*, m32r-*-elf*, m32rle-*-elf*, m32r-*-linux*,
15597         m32rle-*-linux*, m68hc11-*-*|m6811-*-*, m68hc12-*-*|m6812-*-*,
15598         m68k-*-coff*, mcore-*-elf, mcore-*-pe*, mipsisa64sr71k-*-elf*,
15599         mipsisa64sb1-*-elf* | mipsisa64sb1el-*-elf*, mips-*-elf* |
15600         mipsel-*-elf*, mips64-*-elf* | mips64el-*-elf*, mips64vr-*-elf* |
15601         mips64vrel-*-elf*, mips64orion-*-elf* | mips64orionel-*-elf*,
15602         mipstx39-*-elf* | mipstx39el-*-elf*, mn10300-*-*, pdp11-*-,
15603         powerpc-*-elf*, powerpcle-*-elf*, sh-*-elf* | sh[12346l]*-*-elf* |
15604         sh-*-symbianelf* | sh[12346l]*-*-symbianelf* | sh-*-linux* |
15605         sh[2346lbe]*-*-linux* | sh-*-netbsdelf* | shl*-*-netbsdelf* |
15606         sh5-*-netbsd* | sh5l*-*-netbsd* | sh64-*-netbsd* |
15607         sh64l*-*-netbsd*, sh-*-*, sparc-*-elf*, sparc64-*-elf*,
15608         v850e1-*-*, v850e-*-*, v850-*-*, xstormy16-*-elf, m32c-*-elf*):
15609         Remove use_fixproto=yes.
15610         (ia64*-*-hpux*): Remove comment about using fixproto.
15611         (m68k-*-uclinuxoldabi*, m68k-*-uclinux*): Remove use_fixproto=no.
15612
15613 2008-06-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
15614
15615         * configure.ac: Update gthr-default.h lazily, to avoid unneeded
15616         library rebuilds.
15617         * configure: Regenerate.
15618
15619 2008-06-13  Eric Botcazou  <ebotcazou@adacore.com>
15620
15621         PR middle-end/36520
15622         * builtins.c (get_memory_rtx): Test for the presence of DECL_SIZE_UNIT
15623         before evaluating it.
15624
15625 2008-06-13  Jakub Jelinek  <jakub@redhat.com>
15626
15627         PR c/36507
15628         * c-decl.c (merge_decls): Don't clear DECL_EXTERNAL for
15629         nested inline functions.
15630         (start_decl, start_function): Don't invert DECL_EXTERNAL
15631         for nested inline functions.
15632
15633 2008-06-13  Richard Sandiford  <rdsandiford@googlemail.com>
15634
15635         * config/mips/mips.md: Remove TARGET_DEBUG_D_MODE conditions from
15636         splits that must be made for correctness.
15637
15638 2008-06-13  Richard Sandiford  <rdsandiford@googlemail.com>
15639
15640         * config/mips/mips.c (BUILTIN_AVAIL_NON_MIPS16): New macro.
15641         (AVAIL_NON_MIPS16): Likewise.
15642         (mips_builtin_description): Replace target_flags with a predicate.
15643         (paired_single, sb1_paired_single, mips3d, dsp, dspr2, dsp_32)
15644         (dspr2_32): New availability predicates.
15645         (MIPS_BUILTIN): New macro.
15646         (DIRECT_BUILTIN, CMP_SCALAR_BUILTINS, CMP_PS_BUILTINS)
15647         (CMP_4S_BUILTINS, MOVTF_BUILTINS, CMP_BUILTINS)
15648         (DIRECT_NO_TARGET_BUILTIN, BPOSGE_BUILTIN): Use it.
15649         Replace the TARGET_FLAGS parameters with AVAIL parameters.
15650         (mips_ps_bdesc, mips_sb1_bdesc, mips_dsp_bdesc)
15651         (mips_dsp_32only_bdesc): Merge into...
15652         (mips_builtins): ...this new array.
15653         (mips_bdesc_map, mips_bdesc_arrays): Delete.
15654         (mips_init_builtins): Update after above changes.
15655         (mips_expand_builtin_1): Merge into...
15656         (mips_expand_builtin): ...here and update after above changes.
15657
15658 2008-06-12  Paul Brook  <paul@codesourcery.com>
15659
15660         * longlong.h (__arm__): Define count_leading_zeros.
15661         * config/arm/lib1funcs.asm (xxh, xxl, yyh, yyl): Define.
15662         (clzsi2, clzdi2): New functions.
15663         * config/arm/bpabi-v6m.S (xxh, xxl, yyh, yyl): Remove.
15664         * config/arm/bpabi.S (xxh, xxl, yyh, yyl): Remove.
15665         * config/arm/t-strongarm-elf (LIB1ASMFUNCS): Ditto.
15666         * config/arm/t-vxworks (LIB1ASMFUNCS): Ditto.
15667         * config/arm/t-pe (LIB1ASMFUNCS): Ditto.
15668         * config/arm/t-arm-elf (LIB1ASMFUNCS): Ditto.
15669         * config/arm/t-arm-coff (LIB1ASMFUNCS): Ditto.
15670         * config/arm/t-linux (LIB1ASMFUNCS): Ditto.
15671         * config/arm/t-symbian (LIB1ASMFUNCS): Ditto.
15672         * config/arm/t-wince-pe (LIB1ASMFUNCS): Ditto.
15673
15674 2008-06-12  Kazu Hirata  <kazu@codesourcery.com>
15675
15676         * config/m68k/m68k.c (m68k_tune_flags): New.
15677         (override_options): Compute m68k_tune_flags.
15678         (MULL_COST, MULW_COST): Update for various variants of CFV2.
15679         * config/m68k/m68k.h (TUNE_MAC, TUNE_EMAC): New.
15680
15681 2008-06-12  Jakub Jelinek  <jakub@redhat.com>
15682
15683         PR middle-end/36506
15684         * omp-low.c (expand_omp_sections): Initialize l2 to avoid bogus warning.
15685
15686 2008-06-12  Eric Botcazou  <ebotcazou@adacore.com>
15687
15688         * tree-inline.c (copy_body_r): Copy TREE_SIDE_EFFECTS along with
15689         TREE_THIS_VOLATILE on INDIRECT_REF nodes.
15690
15691 2008-06-12  Eric Botcazou  <ebotcazou@adacore.com>
15692
15693         * expr.c (store_field): Do a block copy from BLKmode to BLKmode-like.
15694         (get_inner_reference): Use BLKmode for byte-aligned BLKmode bitfields.
15695
15696 2008-06-12  Jakub Jelinek  <jakub@redhat.com>
15697
15698         PR middle-end/36506
15699         * omp-low.c (expand_omp_sections): Handle #pragma omp sections with
15700         reductions.
15701
15702 2008-06-12  Richard Guenther  <rguenther@suse.de>
15703
15704         PR tree-optimization/36345
15705         * tree-flow.h (struct ptr_info_def): Align escape_mask,
15706         add memory_tag_needed flag.
15707         (may_alias_p): Declare.
15708         * tree-ssa-alias.c (may_alias_p): Export.
15709         (set_initial_properties): Use memory_tag_needed flag.
15710         (update_reference_counts): Likewise.
15711         (reset_alias_info): Reset memory_tag_needed flag.
15712         (create_name_tags): Check memory_tag_needed flag.
15713         (dump_points_to_info_for): Dump it.
15714         * tree-ssa-structalias.c (struct variable_info): Remove
15715         directly_dereferenced flag.
15716         (new_var_info): Do not initialize it.
15717         (process_constraint_1): Do not set it.
15718         (update_alias_info): Set is_dereferenced flag.
15719         (set_uids_in_ptset): Use may_alias_p.
15720         (set_used_smts): Check memory_tag_needed flag.
15721         (find_what_p_points_to): Likewise.  Pass is_dereferenced flag.
15722         * tree-ssa-alias.c (verify_flow_sensitive_alias_info): Check
15723         memory_tag_needed flag.
15724         * tree-ssa-alias-warnings.c (dsa_named_for): Try to recover
15725         from broken design.
15726
15727 2008-06-12  Kai Tietz  <kai.tietz@onevision.com>
15728
15729         * config/i386/i386.c (ix86_compute_frame_layout): Disable
15730         red zone for w64 abi.
15731         (ix86_expand_prologue): Likewise.
15732         (ix86_force_to_memory): Likewise.
15733         (ix86_free_from_memory): Likewise.
15734
15735 2008-06-11  Edmar Wienskoski  <edmar@freescale.com>
15736
15737         PR target/36425
15738         * config/rs6000/rs6000.c (rs6000_override_options): Set
15739         rs6000_isel conditionally to the absence of comand line override.
15740         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
15741         Remove duplicate rs6000_isel setting.
15742         * config/rs6000/eabispe.h: Ditto.
15743
15744 2008-06-11  Richard Guenther  <rguenther@suse.de>
15745
15746         * alias.c (get_alias_set): Use the element alias-set for arrays.
15747         (record_component_aliases): For arrays and vectors do nothing.
15748         * c-common.c (strict_aliasing_warning): Handle the cases
15749         of alias set zero explicitly.
15750         * Makefile.in (dfp.o-warn): Add -Wno-error.
15751
15752 2008-06-11  Joseph Myers  <joseph@codesourcery.com>
15753
15754         * config.gcc (all_defaults): Add arch_32 arch_64 cpu_32 cpu_64
15755         tune_32 tune_64.
15756         (i[34567]86-*-* | x86_64-*-*): Add arch_32 arch_64 cpu_32 cpu_64
15757         tune_32 tune_64 to supported_defaults.  Allow values not
15758         supporting 64-bit mode for arch_32, cpu_32 and tune_32 for
15759         x86_64.  Do not override cpu_32 or cpu_64 values from target name.
15760         (i[34567]86-*-linux*, i[34567]86-*-solaris2.1[0-9]*): Only default
15761         with_cpu_64 to generic for 64-bit-supporting configurations, not
15762         with_cpu.  Remove FIXMEs.
15763         * doc/install.texi (--with-cpu-32, --with-cpu-64, --with-arch-32,
15764         --with-arch-64, --with-tune-32, --with-tune-64): Document.
15765         * config/i386/i386.h (OPT_ARCH32, OPT_ARCH64): Define.
15766         (OPTION_DEFAULT_SPECS): Add tune_32, tune_64, cpu_32, cpu_64,
15767         arch_32 and arch_64.
15768
15769 2008-06-11  Eric Botcazou  <ebotcazou@adacore.com>
15770             Olivier Hainque  <hainque@adacore.com>
15771
15772         * builtins.c (get_memory_rtx): Accept byte-addressable bitfields.
15773         Use DECL_SIZE_UNIT to retrieve the size of the field.
15774
15775 2008-06-11  Joseph Myers  <joseph@codesourcery.com>
15776
15777         * config/arm/arm.c (arm_init_neon_builtins): Move initialization
15778         with function calls after declarations.  Lay out
15779         neon_float_type_node before further use.
15780
15781 2008-06-11  Richard Guenther  <rguenther@suse.de>
15782
15783         * tree-flow.h (may_point_to_global_var): Declare.
15784         * tree-ssa-alias.c (may_point_to_global_var): New function.
15785         * tree-ssa-sink.c (is_hidden_global_store): Use it.
15786
15787 2008-06-10  Kazu Hirata  <kazu@codesourcery.com>
15788
15789         * configure.ac: Teach that fido supports .debug_line.
15790         * configure: Regenerate.
15791
15792 2008-06-10  Tom Tromey  <tromey@redhat.com>
15793
15794         * c-lex.c (fe_file_change): Pass SOURCE_LINE to start_source_file
15795         debug hook.
15796
15797 2008-06-10  Joseph Myers  <joseph@codesourcery.com>
15798
15799         * dfp.c (WORDS_BIGENDIAN): Define to 0 if not defined.
15800         (encode_decimal64, decode_decimal64, encode_decimal128,
15801         decode_decimal128): Reverse order of 32-bit parts of value if host
15802         and target endianness differ.
15803
15804 2008-06-10  Vinodha Ramasamy  <vinodha@google.com>
15805
15806         * value_prob.c (tree_divmod_fixed_value_transform): Use gcov_type.
15807         Avoid division by 0.
15808         (tree_mod_pow2_value_transform): Likewise.
15809         (tree_ic_transform): Likewise.
15810         (tree_stringops_transform): Likewise.
15811         (tree_mod_subtract_transform): Likewise.
15812         * tree-inline-c (copy_bb): Corrected int type to gcov_type.
15813         (copy_edges_for_bb): Likewise.
15814         (initialize_cfun): Likewise.
15815
15816 2008-06-10  Uros Bizjak  <ubizjak@gmail.com>
15817
15818         * config/i386/i386.md (*btdi_rex64): Change operand 1 predicate to
15819         nonmemory_operand. Add "N" operand constraint.
15820         (*btsi): Ditto.
15821         (*jcc_btdi_mask_rex64): New instruction and split pattern.
15822         (*jcc_btsi_mask): Ditto.
15823         (*jcc_btsi_mask_1): Ditto.
15824
15825 2008-06-10  Joseph Myers  <joseph@codesourcery.com>
15826
15827         * config/rs6000/rs6000.c (build_opaque_vector_type): Set
15828         TYPE_CANONICAL for copied element type.
15829
15830 2008-06-10  Uros Bizjak  <ubizjak@gmail.com>
15831
15832         PR target/36473
15833         * config/i386/i386.c (ix86_tune_features) [TUNE_USE_BT]:
15834         Add m_CORE2 and m_GENERIC.
15835         * config/i386/predicates.md (bt_comparison_operator): New predicate.
15836         * config/i386/i386.md (*btdi_rex64): New instruction pattern.
15837         (*btsi): Ditto.
15838         (*jcc_btdi_rex64): New instruction and split pattern.
15839         (*jcc_btsi): Ditto.
15840         (*jcc_btsi_1): Ditto.
15841         (*btsq): Fix Intel asm dialect operand order.
15842         (*btrq): Ditto.
15843         (*btcq): Ditto.
15844
15845 2008-06-09  Andy Hutchinson  <hutchinsonandy@aim.com>
15846
15847         PR middle-end/36447
15848         * simplify-rtx.c (simplify_subreg): Add check for shift count
15849         greater than size.
15850
15851 2008-06-09  Richard Sandiford  <rdsandiford@googlemail.com>
15852
15853         * doc/md.texi: Synchronize with later constraints.md change.
15854         * longlong.h (umul_ppmm): Replace the MIPS asm implementation
15855         with a C implementation.
15856         * config/mips/mips.c (mips_legitimize_move): Remove MFHI and
15857         MFLO handling.
15858         (mips_subword): Assume TImode for CONST_INTs if TARGET_64BIT.
15859         (mips_split_doubleword_move): Use special MTHI and MFHI instructions
15860         when moving to and from MD_REGNUM.
15861         (mips_output_move): Don't handle moves from GPRs to HI_REGNUM.
15862         Handle moves from LO_REGNUM to GPRs using MFLO, MACC or DMACC.
15863         Handle byte and halfword moves.
15864         (mips_hard_regno_mode_ok_p): Handle MD_REGS and DSP_ACC_REGS
15865         separately.
15866         * config/mips/constraints.md (h): Turn into NO_REGS.
15867         (l, x): Update documentation.
15868         * config/mips/mips.md (UNSPEC_MFHILO): Delete.
15869         (UNSPEC_MFHI, UNSPEC_MTHI, UNSPEC_SET_HILO): New.
15870         (UNSPEC_TLS_LDM, UNSPEC_TLS_GET_TP): Renumber.
15871         (HILO): New mode iterator.
15872         (MOVE128): Add TI.
15873         (any_div): New code iterator.
15874         (u): Extend code attribute to div and udiv.
15875         (*add<mode>3_mips16, *movdi_64bit_mips16, *movsi_mips16): Use
15876         d_operand in the splitters.  Remove redundant CONST_INT checks.
15877         (mulsi3_mult3, mul<mode>3_internal, mul<mode>3_r4000, *mul_acc_si)
15878         (*macc, *msac, *msac_using_macc, *macc2, *msac2, *mul_sub_si)
15879         (*muls): Remove "=h" clobbers.  Adjust peephole2s and define_splits
15880         accordingly, using normal moves instead of unspecs to move LO into
15881         a GPR.  Use d_operand and lo_operand instead of *_REG_P checks.
15882         (<u>mulsidi3): Handle expansion in C code.
15883         (<u>mulsidi3_32bit_internal): Rename to...
15884         (<u>mulsidi3_32bit): ...this.
15885         (<u>mulsidi3_32bit_r4000): Fix insn separator.
15886         (*<u>mulsidi3_64bit): Rename to...
15887         (<u>mulsidi3_64bit): ...this.  Combine DImode "=h" and "=l" clobbers
15888         into a TImode "=x" clobber.  In the split, use an UNSPEC_SET_HILO
15889         to set LO and HI to the multiplication result.  Use a normal move
15890         for MFLO and an unspec for MFHI.
15891         (*<u>mulsidi3_64bit_parts): Replace with...
15892         (<u>mulsidi3_64bit_hilo): ...this new instruction.
15893         (<su>mulsi3_highpart): Extend to TARGET_FIX_R4000.
15894         (<su>mulsi3_highpart_internal): Turn into a define_insn_and_split
15895         and extend it to TARGET_FIX_R4000.  Store the destination in a GPR
15896         instead of HI.  Split the instruction into a separate multiplication
15897         and MFHI if !TARGET_FIX_R4000.
15898         (<su>muldi3_highpart): Likewise.
15899         (<su>mulsi3_highpart_mulhi_internal): Remove the first alternative
15900         and the "=h" clobber.
15901         (*<su>mulsi3_highpart_neg_mulhi_internal): Likewise.
15902         (<u>mulditi3): New expander.
15903         (<u>mulditi3_internal, <u>mulditi3_r4000): New patterns.
15904         (madsi): Remove "=h" clobber.
15905         (divmod<mode>4, udivmod<mode>4): Turn into define_insn_and_splits.
15906         Force the modulus result to be a GPR and split the instruction into
15907         a division followed by an MFHI after reload.
15908         (<u>divmod<GPR:mode>4_hilo_<HILO:mode>): New instruction.
15909         (*lea_high64): Use d_operand in the define_peephole2.  Likewise
15910         the MIPS16 HIGH define_split.
15911         (*movdi_32bit, *movdi_gp32_fp64, *movdi_32bit_mips16): Change type
15912         of acc<->gpr moves to "multi".
15913         (*movdi_64bit): Replace the single "x" alternative with
15914         alternatives for moving into and out of "a".
15915         (*movhi_internal, *movqi_internal): Likewise.  Use mips_output_move.
15916         (*movsi_internal): Extend the "d<-A" alternative to "d<-a".
15917         (*movdi_64bit_mips16, *movsi_mips16): Add d<-a alternatives.
15918         Use d_operand in the splitters.  Remove redundant CONST_INT checks.
15919         (*movhi_mips16, *movqi_mips16): Likewise.  Use mips_output_move.
15920         (movti): New expander.
15921         (*movti, *movti_mips16): New insns.
15922         (mfhilo_<mode>, *mfhilo_<mode>, *mfhilo_<mode>_macc): Delete.
15923         (mfhi<GPR:mode>_<HILO:mode>): New pattern.
15924         (mthi<GPR:mode>_<HILO:mode>): Likewise.
15925         * config/mips/predicates.md (fpr_operand): Delete.
15926         (d_operand): New predicate.
15927
15928 2008-06-09  Michael Meissner  <michael.meissner@amd.com>
15929
15930         * config.gcc (i[34567]86-*-*): Put test in quotes to prevent
15931         failure on some Bourne shells.
15932         (x86_64-*-*): Ditto.
15933
15934 2008-06-09  Kai Tietz  <kai.tietz@onevision.com>
15935
15936         * config/i386/cygming.h (TARGET_SUBTARGET64_DEFAULT): New.
15937
15938 2008-06-09  Eric Botcazou  <ebotcazou@libertysurf.fr>
15939
15940         * doc/install.texi (*-*-solaris2*): Remove obsolete contents.
15941         (sparc-sun-solaris2*): Likewise.
15942
15943 2008-06-09  Arnaud Charlet  <charlet@adacore.com
15944
15945         * doc/install.texi: Update requirements to build the Ada compiler.
15946
15947 2008-06-08  Steven Bosscher  <stevenb.gcc@gmail.com>
15948
15949         * df-scan.c (struct df_scan_problem_data): Remove the
15950         mw_link_pool alloc pool.
15951         (df_scan_free_internal): Don't free it.
15952         (df_scan_alloc): Don't allocate it.
15953         * df.h (struct df_link): Update comment.
15954
15955 2008-06-08  Nathan Sidwell  <nathan@codesourcery.com>
15956
15957         * except.h: Correct checks for when SJLJ exceptions must be used.
15958
15959 2008-06-08  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
15960
15961         * doc/invoke.texi (Wenum-compare): Mention that it is enabled by
15962         default.
15963
15964 2008-06-08  Joseph Myers  <joseph@codesourcery.com>
15965
15966         PR tree-optimization/36218
15967         * configure.ac: Use LDFLAGS="${LDFLAGS_FOR_BUILD}" when running
15968         configure for the build system.
15969         (BUILD_LDFLAGS): Define.
15970         * configure: Regenerate.
15971         * Makefile.in (BUILD_LDFLAGS): Define to @BUILD_LDFLAGS@.
15972
15973 2008-07-08  Anatoly Sokolov  <aesok@post.ru>
15974
15975         PR target/36424
15976         * config/avr/avr.h (HARD_REGNO_RENAME_OK): Define.
15977         * config/avr/avr.c (avr_hard_regno_rename_ok): New function.
15978         * config/avr/avr-protos.h (avr_hard_regno_rename_ok): New prototype.
15979
15980 2008-06-07  Danny Smith  <dannysmith@users.sourceforge.net>
15981
15982         * config/i386/cygming.h (MAYBE_UWIN_CPP_BUILTINS): Remove.
15983
15984 2008-06-07  Joseph Myers  <joseph@codesourcery.com>
15985
15986         * config.gcc (Obsolete configurations): Remove list of
15987         configurations.
15988         (Unsupported targets list): Add *-*-linux*aout*, *-*-linux*libc1*,
15989         *-*-solaris2.[0-6], *-*-solaris2.[0-6].*, *-*-sysv*.  Remove other
15990         targets matched by those patterns.
15991         (strongarm*-*-*, ep9312*-*-*, xscale-*-*, parisc*-*-*,
15992         m680[012]0-*-*, *-*-linux*libc1*, *-*-linux*aout*,
15993         alpha*-*-unicosmk*, strongarm*-*-freebsd*, ep9312-*-elf,
15994         arm*-*-kaos*, cris-*-aout, parisc*64*-*-linux*, parisc*-*-linux*,
15995         hppa1.1-*-pro*, hppa1.1-*-osf*, hppa1.1-*-bsd*,
15996         i[34567]86-sequent-ptx4*, i[34567]86-sequent-sysv4*,
15997         i[34567]86-*-beoself*, i[34567]86-*-beos*, i[34567]86-*-sco3.2v5*,
15998         i[34567]86-*-sysv5*, i[34567]86-*-sysv4*, i[34567]86-*-uwin*,
15999         i[34567]86-*-kaos*, m68020-*-elf*, m68010-*-netbsdelf*,
16000         mips-wrs-windiss, mt-*-elf, powerpc-*-beos*, powerpc-*-chorusos*,
16001         powerpc-wrs-windiss*, powerpcle-*-sysv*, powerpc-*-kaos*,
16002         powerpcle-*-kaos*, sh*-*-kaos*, sparc-*-sysv4*, strongarm-*-elf*,
16003         strongarm-*-pe, strongarm-*-kaos*, vax-*-bsd*, vax-*-sysv*,
16004         vax-*-ultrix*, xscale-*-elf, xscale-*-coff,
16005         i[34567]86-*-linux*aout*, i[34567]86-*-linux*libc1): Remove.
16006         Make code for Solaris 7 and greater unconditional for Solaris.
16007         (ep9312-*-*, parisc1*, m680[012]0-*-*, parisc*-*-*, mt-*-*):
16008         Remove --with-* handling.
16009         * config/rs6000/sysv4.h (-mwindiss): Remove from all specs.
16010         (LIB_WINDISS_SPEC, CPP_OS_WINDISS_SPEC, STARTFILE_WINDISS_SPEC,
16011         ENDFILE_WINDISS_SPEC, LINK_START_WINDISS_SPEC,
16012         LINK_OS_WINDISS_SPEC): Remove.
16013         * config/rs6000/sysv4.opt (mwindiss): Remove.
16014         * configure.ac (strongarm*-*-*, xscale*-*-*): Remove.
16015         * configure: Regenerate.
16016         * doc/cpp.texi: Don't mention BeOS.
16017         * doc/extend.texi (interrupt): Don't mention MS1.
16018         * doc/install.texi: (i386-@var{any}-sysv, m68k-bull-sysv,
16019         m68k-hp-hpux, m68000-hp-hpux, m68000-att-sysv,
16020         alphaev5-cray-unicosmk*, xscale-*-*, i?86-*-linux*aout,
16021         i?86-*-sco3.2v5*, i?86-*-udk, m68k-hp-hpux, powerpc-*-sysv4,
16022         powerpc-*-sysv4, powerpcle-*-sysv4, *-*-sysv*, vax-dec-ultrix):
16023         Remove.
16024         * doc/invoke.texi (MT Options): Remove.
16025         (-mwindiss): Remove.
16026         (CRIS Options): Remove cris-axis-aout references.
16027         (HPPA Options): Don't mention hppa1.1-*-pro.
16028         * doc/md.texi: (MorphoTech family): Remove.
16029         * libgcc2.c: Don't handle UWIN.
16030         * config/alpha/t-unicosmk: Remove.
16031         * config/alpha/unicosmk.h: Remove.
16032         * config/arm/kaos-arm.h: Remove.
16033         * config/arm/kaos-strongarm.h: Remove.
16034         * config/arm/strongarm-coff.h: Remove.
16035         * config/arm/strongarm-elf.h: Remove.
16036         * config/arm/strongarm-pe.h: Remove.
16037         * config/arm/t-strongarm-pe: Remove.
16038         * config/arm/t-xscale-coff: Remove.
16039         * config/arm/t-xscale-elf: Remove.
16040         * config/arm/xscale-coff.h: Remove.
16041         * config/arm/xscale-elf.h: Remove.
16042         * config/chorus.h: Remove.
16043         * config/cris/aout.h: Remove.
16044         * config/cris/aout.opt: Remove.
16045         * config/cris/t-aout: Remove.
16046         * config/i386/beos-elf.h: Remove.
16047         * config/i386/kaos-i386.h: Remove.
16048         * config/i386/ptx4-i.h: Remove.
16049         * config/i386/sco5.h: Remove.
16050         * config/i386/sco5.opt: Remove.
16051         * config/i386/sysv4-cpp.h: Remove.
16052         * config/i386/sysv5.h: Remove.
16053         * config/i386/t-beos: Remove.
16054         * config/i386/t-sco5: Remove.
16055         * config/i386/t-uwin: Remove.
16056         * config/i386/uwin.asm: Remove.
16057         * config/i386/uwin.h: Remove.
16058         * config/kaos.h: Remove.
16059         * config/mips/windiss.h: Remove.
16060         * config/mt: Remove directory.
16061         * config/pa/pa-osf.h: Remove.
16062         * config/pa/pa-pro-end.h: Remove.
16063         * config/pa/t-pro: Remove.
16064         * config/ptx4.h: Remove.
16065         * config/rs6000/beos.h: Remove.
16066         * config/rs6000/kaos-ppc.h: Remove.
16067         * config/rs6000/t-beos: Remove.
16068         * config/rs6000/windiss.h: Remove.
16069         * config/sh/kaos-sh.h: Remove.
16070         * config/sol2-6.h: Remove.
16071         * config/sparc/sol26-sld.h: Remove.
16072         * config/sparc/sysv4-only.h: Remove.
16073         * config/vax/bsd.h: Remove.
16074         * config/vax/t-memfuncs: Remove.
16075         * config/vax/ultrix.h: Remove.
16076         * config/vax/vaxv.h: Remove.
16077         * config/windiss.h: Remove.
16078
16079 2008-06-06  Uros Bizjak <ubizjak@gmail.com>
16080
16081         PR rtl-optimization/36438
16082         * cse.c (fold_rtx) [ASHIFT, LSHIFTRT, ASHIFTRT]: Break out early
16083         for vector shifts with constant scalar shift operands.
16084
16085 2008-06-06  Sandip Matte  <sandip@rmicorp.com>
16086
16087         * doc/invoke.texi: Document -march=xlr.
16088         * config/mips/xlr.md: New file.
16089         * config/mips/mips.md: Include it.
16090         (cpu): Add "xlr".
16091         * config/mips/mips.h (PROCESSOR_XLR): New processor_type.
16092         * config/mips/mips.c (mips_cpu_info_table): Add an XLR entry.
16093         (mips_rtx_cost_data): Likewise.
16094
16095 2008-06-06  Nathan Froyd  <froydnj@codesourcery.com>
16096
16097         * config/rs6000/rs6000.c (rs6000_mode_dependent_address): Remove
16098         PRE_INC and PRE_DEC cases.
16099
16100 2008-06-06  Jakub Jelinek  <jakub@redhat.com>
16101
16102         PR rtl-optimization/36419
16103         * except.c (expand_resx_expr): Call do_pending_stack_adjust () before
16104         the emitting jump insn.
16105
16106         PR target/36362
16107         * gimplify.c (gimplify_expr) <case TRUTH_NOT_EXPR>: If *expr_p type
16108         is not bool, boolify the whole *expr_p and convert to the desired type.
16109
16110 2008-06-06  Jakub Jelinek  <jakub@redhat.com>
16111
16112         * c-cppbuiltin.c (c_cpp_builtins): Change _OPENMP value to 200805.
16113         * langhooks.h (struct lang_hooks_for_decls): Add omp_finish_clause.
16114         Add omp_private_outer_ref hook, add another argument to
16115         omp_clause_default_ctor hook.
16116         * langhooks-def.h (LANG_HOOKS_OMP_FINISH_CLAUSE): Define.
16117         (LANG_HOOKS_OMP_PRIVATE_OUTER_REF): Define.
16118         (LANG_HOOKS_OMP_CLAUSE_DEFAULT_CTOR): Change to
16119         hook_tree_tree_tree_tree_null.
16120         (LANG_HOOKS_DECLS): Add LANG_HOOKS_OMP_FINISH_CLAUSE and
16121         LANG_HOOKS_OMP_PRIVATE_OUTER_REF.
16122         * hooks.c (hook_tree_tree_tree_tree_null): New function.
16123         * hooks.h (hook_tree_tree_tree_tree_null): New prototype.
16124         * tree.def (OMP_TASK): New tree code.
16125         * tree.h (OMP_TASK_COPYFN, OMP_TASK_ARG_SIZE, OMP_TASK_ARG_ALIGN,
16126         OMP_CLAUSE_PRIVATE_OUTER_REF, OMP_CLAUSE_LASTPRIVATE_STMT,
16127         OMP_CLAUSE_COLLAPSE_ITERVAR, OMP_CLAUSE_COLLAPSE_COUNT,
16128         OMP_TASKREG_CHECK, OMP_TASKREG_BODY, OMP_TASKREG_CLAUSES,
16129         OMP_TASKREG_FN, OMP_TASKREG_DATA_ARG, OMP_TASK_BODY,
16130         OMP_TASK_CLAUSES, OMP_TASK_FN, OMP_TASK_DATA_ARG,
16131         OMP_CLAUSE_COLLAPSE_EXPR): Define.
16132         (enum omp_clause_default_kind): Add OMP_CLAUSE_DEFAULT_FIRSTPRIVATE.
16133         (OMP_DIRECTIVE_P): Add OMP_TASK.
16134         (OMP_CLAUSE_COLLAPSE, OMP_CLAUSE_UNTIED): New clause codes.
16135         (OMP_CLAUSE_SCHEDULE_AUTO): New schedule kind.
16136         * tree.c (omp_clause_code_name): Add OMP_CLAUSE_COLLAPSE
16137         and OMP_CLAUSE_UNTIED entries.
16138         (omp_clause_num_ops): Likewise.  Increase OMP_CLAUSE_LASTPRIVATE
16139         num_ops to 2.
16140         (walk_tree_1): Handle OMP_CLAUSE_COLLAPSE and OMP_CLAUSE_UNTIED.
16141         Walk OMP_CLAUSE_LASTPRIVATE_STMT.
16142         * tree-pretty-print.c (dump_omp_clause): Handle
16143         OMP_CLAUSE_SCHEDULE_AUTO, OMP_CLAUSE_UNTIED, OMP_CLAUSE_COLLAPSE,
16144         OMP_CLAUSE_DEFAULT_FIRSTPRIVATE.
16145         (dump_generic_node): Handle OMP_TASK and collapsed OMP_FOR loops.
16146         * c-omp.c (c_finish_omp_for): Allow pointer iterators.  Remove
16147         warning about unsigned iterators.  Change decl/init/cond/incr
16148         arguments to TREE_VECs, check arguments for all collapsed loops.
16149         (c_finish_omp_taskwait): New function.
16150         (c_split_parallel_clauses): Put OMP_CLAUSE_COLLAPSE clause to
16151         ws_clauses.
16152         * c-parser.c (c_parser_omp_for_loop): Parse collapsed loops.  Call
16153         default_function_array_conversion on init.  Add par_clauses argument.
16154         If decl is present in parallel's lastprivate clause, change it to
16155         shared and add lastprivate clause for decl to OMP_FOR_CLAUSES.
16156         Add clauses argument, on success set OMP_FOR_CLAUSES to it.  Look up
16157         collapse count in clauses.
16158         (c_parser_omp_for, c_parser_omp_parallel): Adjust
16159         c_parser_omp_for_loop callers.
16160         (OMP_FOR_CLAUSE_MASK): Add 1 << PRAGMA_OMP_CLAUSE_COLLAPSE.
16161         (c_parser_pragma): Handle PRAGMA_OMP_TASKWAIT.
16162         (c_parser_omp_clause_name): Handle collapse and untied clauses.
16163         (c_parser_omp_clause_collapse, c_parser_omp_clause_untied): New
16164         functions.
16165         (c_parser_omp_clause_schedule): Handle schedule(auto).
16166         Include correct location in the error message.
16167         (c_parser_omp_all_clauses): Handle PRAGMA_OMP_CLAUSE_COLLAPSE
16168         and PRAGMA_OMP_CLAUSE_UNTIED.
16169         (OMP_TASK_CLAUSE_MASK): Define.
16170         (c_parser_omp_task, c_parser_omp_taskwait): New functions.
16171         (c_parser_omp_construct): Handle PRAGMA_OMP_TASK.
16172         * tree-nested.c (convert_nonlocal_omp_clauses,
16173         convert_local_omp_clauses): Handle OMP_CLAUSE_LASTPRIVATE_STMT,
16174         OMP_CLAUSE_REDUCTION_INIT, OMP_CLAUSE_REDUCTION_MERGE,
16175         OMP_CLAUSE_COLLAPSE and OMP_CLAUSE_UNTIED.
16176         Don't handle TREE_STATIC or DECL_EXTERNAL VAR_DECLs in
16177         OMP_CLAUSE_DECL.
16178         (conver_nonlocal_reference, convert_local_reference,
16179         convert_call_expr): Handle OMP_TASK the same as OMP_PARALLEL.  Use
16180         OMP_TASKREG_* macros rather than OMP_PARALLEL_*.
16181         (walk_omp_for): Adjust for OMP_FOR_{INIT,COND,INCR} changes.
16182         * tree-gimple.c (is_gimple_stmt): Handle OMP_TASK.
16183         * c-tree.h (c_begin_omp_task, c_finish_omp_task): New prototypes.
16184         * c-pragma.h (PRAGMA_OMP_TASK, PRAGMA_OMP_TASKWAIT): New.
16185         (PRAGMA_OMP_CLAUSE_COLLAPSE, PRAGMA_OMP_CLAUSE_UNTIED): New.
16186         * c-typeck.c (c_begin_omp_task, c_finish_omp_task): New functions.
16187         (c_finish_omp_clauses): Handle OMP_CLAUSE_COLLAPSE and
16188         OMP_CLAUSE_UNTIED.
16189         * c-pragma.c (init_pragma): Init omp task and omp taskwait pragmas.
16190         * c-common.h (c_finish_omp_taskwait): New prototype.
16191         * gimple-low.c (lower_stmt): Handle OMP_TASK.
16192         * tree-parloops.c (create_parallel_loop): Create 1 entry
16193         vectors for OMP_FOR_{INIT,COND,INCR}.
16194         * tree-cfg.c (remove_useless_stmts_1): Handle OMP_* containers.
16195         (make_edges): Handle OMP_TASK.
16196         * tree-ssa-operands.c (get_expr_operands): Handle collapsed OMP_FOR
16197         loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.
16198         * tree-inline.c (estimate_num_insns_1): Handle OMP_TASK.
16199         * builtin-types.def (BT_PTR_ULONGLONG, BT_PTR_FN_VOID_PTR_PTR,
16200         BT_FN_BOOL_ULONGLONGPTR_ULONGLONGPTR,
16201         BT_FN_BOOL_BOOL_ULL_ULL_ULL_ULLPTR_ULLPTR,
16202         BT_FN_BOOL_BOOL_ULL_ULL_ULL_ULL_ULLPTR_ULLPTR,
16203         BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT): New.
16204         * omp-builtins.def (BUILT_IN_GOMP_TASK, BUILT_IN_GOMP_TASKWAIT,
16205         BUILT_IN_GOMP_LOOP_ULL_STATIC_START,
16206         BUILT_IN_GOMP_LOOP_ULL_DYNAMIC_START,
16207         BUILT_IN_GOMP_LOOP_ULL_GUIDED_START,
16208         BUILT_IN_GOMP_LOOP_ULL_RUNTIME_START,
16209         BUILT_IN_GOMP_LOOP_ULL_ORDERED_STATIC_START,
16210         BUILT_IN_GOMP_LOOP_ULL_ORDERED_DYNAMIC_START,
16211         BUILT_IN_GOMP_LOOP_ULL_ORDERED_GUIDED_START,
16212         BUILT_IN_GOMP_LOOP_ULL_ORDERED_RUNTIME_START,
16213         BUILT_IN_GOMP_LOOP_ULL_STATIC_NEXT,
16214         BUILT_IN_GOMP_LOOP_ULL_DYNAMIC_NEXT,
16215         BUILT_IN_GOMP_LOOP_ULL_GUIDED_NEXT,
16216         BUILT_IN_GOMP_LOOP_ULL_RUNTIME_NEXT,
16217         BUILT_IN_GOMP_LOOP_ULL_ORDERED_STATIC_NEXT,
16218         BUILT_IN_GOMP_LOOP_ULL_ORDERED_DYNAMIC_NEXT,
16219         BUILT_IN_GOMP_LOOP_ULL_ORDERED_GUIDED_NEXT,
16220         BUILT_IN_GOMP_LOOP_ULL_ORDERED_RUNTIME_NEXT): New builtins.
16221         * gimplify.c (gimplify_omp_for): Allow pointer type for decl,
16222         handle POINTER_PLUS_EXPR.  If loop counter has been replaced and
16223         original iterator is present in lastprivate clause or if
16224         collapse > 1, set OMP_CLAUSE_LASTPRIVATE_STMT.  Handle collapsed
16225         OMP_FOR loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.
16226         (gimplify_expr): Handle OMP_SECTIONS_SWITCH and OMP_TASK.
16227         (enum gimplify_omp_var_data): Add GOVD_PRIVATE_OUTER_REF.
16228         (omp_notice_variable): Set GOVD_PRIVATE_OUTER_REF if needed,
16229         if it is set, lookup var in outer contexts too.  Handle
16230         OMP_CLAUSE_DEFAULT_FIRSTPRIVATE.  Handle vars that are supposed
16231         to be implicitly determined firstprivate for task regions.
16232         (gimplify_scan_omp_clauses): Set GOVD_PRIVATE_OUTER_REF if needed,
16233         if it is set, lookup var in outer contexts too.  Set
16234         OMP_CLAUSE_PRIVATE_OUTER_REF if GOVD_PRIVATE_OUTER_REF is set.
16235         Handle OMP_CLAUSE_LASTPRIVATE_STMT, OMP_CLAUSE_COLLAPSE and
16236         OMP_CLAUSE_UNTIED.  Take region_type as last argument
16237         instead of in_parallel and in_combined_parallel.
16238         (gimplify_omp_parallel, gimplify_omp_for, gimplify_omp_workshare):
16239         Adjust callers.
16240         (gimplify_adjust_omp_clauses_1): Set OMP_CLAUSE_PRIVATE_OUTER_REF if
16241         GOVD_PRIVATE_OUTER_REF is set.  Call omp_finish_clause langhook.
16242         (new_omp_context): Set default_kind to
16243         OMP_CLAUSE_DEFAULT_UNSPECIFIED for OMP_TASK regions.
16244         (omp_region_type): New enum.
16245         (struct gimplify_omp_ctx): Remove is_parallel and is_combined_parallel
16246         fields, add region_type.
16247         (new_omp_context): Take region_type as argument instead of is_parallel
16248         and is_combined_parallel.
16249         (gimple_add_tmp_var, omp_firstprivatize_variable, omp_notice_variable,
16250         omp_is_private, omp_check_private): Adjust ctx->is_parallel and
16251         ctx->is_combined_parallel checks.
16252         (gimplify_omp_task): New function.
16253         (gimplify_adjust_omp_clauses): Handle OMP_CLAUSE_COLLAPSE and
16254         OMP_CLAUSE_UNTIED.
16255         * omp-low.c (extract_omp_for_data): Use schedule(static)
16256         for schedule(auto).  Handle pointer and unsigned iterators.
16257         Compute fd->iter_type.  Handle POINTER_PLUS_EXPR increments.
16258         Add loops argument.  Extract data for collapsed OMP_FOR loops.
16259         (expand_parallel_call): Assert sched_kind isn't auto,
16260         map runtime schedule to index 3.
16261         (struct omp_for_data_loop): New type.
16262         (struct omp_for_data): Remove v, n1, n2, step, cond_code fields.
16263         Add loop, loops, collapse and iter_type fields.
16264         (workshare_safe_to_combine_p): Disallow combined for if
16265         iter_type is unsigned long long.  Don't combine collapse > 1 loops
16266         unless all bounds and steps are constant.  Adjust extract_omp_for_data
16267         caller.
16268         (expand_omp_for_generic): Handle pointer, unsigned and long long
16269         iterators.  Handle collapsed OMP_FOR loops.  Adjust
16270         for struct omp_for_data changes.  If libgomp function doesn't return
16271         boolean_type_node, add comparison of the return value with 0.
16272         (expand_omp_for_static_nochunk, expand_omp_for_static_chunk): Handle
16273         pointer, unsigned and long long iterators.  Adjust for struct
16274         omp_for_data changes.
16275         (expand_omp_for): Assert sched_kind isn't auto, map runtime schedule
16276         to index 3.  Use GOMP_loop_ull*{start,next} if iter_type is
16277         unsigned long long.  Allocate loops array, pass it to
16278         extract_omp_for_data.  For collapse > 1 loops use always
16279         expand_omp_for_generic.
16280         (omp_context): Add sfield_map and srecord_type fields.
16281         (is_task_ctx, lookup_sfield): New functions.
16282         (use_pointer_for_field): Use is_task_ctx helper.  Change first
16283         argument's type from const_tree to tree.  Clarify comment.
16284         In OMP_TASK disallow copy-in/out sharing.
16285         (build_sender_ref): Call lookup_sfield instead of lookup_field.
16286         (install_var_field): Add mask argument.  Populate both record_type
16287         and srecord_type if needed.
16288         (delete_omp_context): Destroy sfield_map, clear DECL_ABSTRACT_ORIGIN
16289         in srecord_type.
16290         (fixup_child_record_type): Also remap FIELD_DECL's DECL_SIZE{,_UNIT}
16291         and DECL_FIELD_OFFSET.
16292         (scan_sharing_clauses): Adjust install_var_field callers.  For
16293         firstprivate clauses on explicit tasks allocate the var by value in
16294         record_type unconditionally, rather than by reference.
16295         Handle OMP_CLAUSE_PRIVATE_OUTER_REF.  Scan OMP_CLAUSE_LASTPRIVATE_STMT.
16296         Use is_taskreg_ctx instead of is_parallel_ctx.
16297         Handle OMP_CLAUSE_COLLAPSE and OMP_CLAUSE_UNTIED.
16298         (create_omp_child_function_name): Add task_copy argument, use
16299         *_omp_cpyfn* names if it is true.
16300         (create_omp_child_function): Add task_copy argument, if true create
16301         *_omp_cpyfn* helper function.
16302         (scan_omp_parallel): Adjust create_omp_child_function callers.
16303         Rename parallel_nesting_level to taskreg_nesting_level.
16304         (scan_omp_task): New function.
16305         (lower_rec_input_clauses): Don't run constructors for firstprivate
16306         explicit task vars which are initialized by *_omp_cpyfn*.
16307         Pass outer var ref to omp_clause_default_ctor hook if
16308         OMP_CLAUSE_PRIVATE_OUTER_REF or OMP_CLAUSE_LASTPRIVATE.
16309         Replace OMP_CLAUSE_REDUCTION_PLACEHOLDER decls in
16310         OMP_CLAUSE_REDUCTION_INIT.
16311         (lower_send_clauses): Clear DECL_ABSTRACT_ORIGIN if in task to
16312         avoid duplicate setting of fields.  Handle
16313         OMP_CLAUSE_PRIVATE_OUTER_REF.
16314         (lower_send_shared_vars): Use srecord_type if non-NULL.  Don't
16315         copy-out if TREE_READONLY, only copy-in.
16316         (expand_task_copyfn): New function.
16317         (expand_task_call): New function.
16318         (struct omp_taskcopy_context): New type.
16319         (task_copyfn_copy_decl, task_copyfn_remap_type, create_task_copyfn):
16320         New functions.
16321         (lower_omp_parallel): Rename to...
16322         (lower_omp_taskreg): ... this.  Use OMP_TASKREG_* macros where needed.
16323         Call create_task_copyfn if srecord_type is needed.  Adjust
16324         sender_decl type.
16325         (task_shared_vars): New variable.
16326         (check_omp_nesting_restrictions): Warn if work-sharing,
16327         barrier, master or ordered region is closely nested inside OMP_TASK.
16328         Add warnings for barrier if closely nested inside of work-sharing,
16329         ordered, or master region.
16330         (scan_omp_1): Call check_omp_nesting_restrictions even for
16331         GOMP_barrier calls.  Rename parallel_nesting_level to
16332         taskreg_nesting_level.  Handle OMP_TASK.
16333         (lower_lastprivate_clauses): Even if some lastprivate is found on a
16334         work-sharing construct, continue looking for them on parent parallel
16335         construct.
16336         (lower_omp_for_lastprivate): Add lastprivate clauses
16337         to the beginning of dlist rather than end.  Adjust for struct
16338         omp_for_data changes.
16339         (lower_omp_for): Add rec input clauses before OMP_FOR_PRE_BODY,
16340         not after it.  Handle collapsed OMP_FOR loops, adjust for
16341         OMP_FOR_{INIT,COND,INCR} changes, adjust extract_omp_for_data caller.
16342         (get_ws_args_for): Adjust extract_omp_for_data caller.
16343         (scan_omp_for): Handle collapsed OMP_FOR
16344         loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.
16345         (lower_omp_single_simple): If libgomp function doesn't return
16346         boolean_type_node, add comparison of the return value with 0.
16347         (diagnose_sb_1, diagnose_sb_2): Handle collapsed OMP_FOR
16348         loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.  Handle OMP_TASK.
16349         (parallel_nesting_level): Rename to...
16350         (taskreg_nesting_level): ... this.
16351         (is_taskreg_ctx): New function.
16352         (build_outer_var_ref, omp_copy_decl): Use is_taskreg_ctx instead
16353         of is_parallel_ctx.
16354         (execute_lower_omp): Rename parallel_nesting_level to
16355         taskreg_nesting_level.
16356         (expand_omp_parallel): Rename to...
16357         (expand_omp_taskreg): ... this.  Use OMP_TASKREG_* macros where needed.
16358         Call omp_task_call for OMP_TASK regions.
16359         (expand_omp): Adjust caller, handle OMP_TASK.
16360         (lower_omp_1): Adjust lower_omp_taskreg caller, handle OMP_TASK.
16361
16362         * bitmap.c (bitmap_default_obstack_depth): New variable.
16363         (bitmap_obstack_initialize, bitmap_obstack_release): Do nothing
16364         if argument is NULL and bitmap_default_obstack is already initialized.
16365         * ipa-struct-reorg.c (do_reorg_1): Call bitmap_obstack_release
16366         at the end.
16367         * matrix-reorg.c (matrix_reorg): Likewise.
16368
16369 2008-06-06  Uros Bizjak  <ubizjak@gmail.com>
16370
16371         * config/i386/i386.md (*indirect_jump): Macroize using P
16372         mode iterator.  Remove !TARGET_64BIT from insn constraints.
16373         (*tablejump_1): Ditto.
16374         (*indirect_jump_rex64): Remove insn pattern.
16375         (*tablejump_1_rex64): Ditto.
16376         (eh_return_<mode>): Macroize using P mode iterator from eh_return_di
16377         and eh_return_si insn patterns.
16378
16379 2008-06-06  Richard Guenther  <rguenther@suse.de>
16380
16381         * tree-ssa-structalias.c (merge_smts_into): Remove.
16382         (find_what_p_points_to): Do not bother to compute the
16383         points-to set for pt_anything pointers.
16384         * tree-ssa-operands.c (get_addr_dereference_operands): No NMT
16385         for pt_anything pointers is ok.
16386
16387 2008-06-06  Jan Hubicka  <jh@suse.cz>
16388
16389         * passes.c (execute_ipa_pass_list): Do not regenerate summaries.
16390
16391 2008-06-06  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
16392
16393         * cgraph.c: Fix typos in comments.
16394         (cgraph_availability_names): Fix string typo.
16395         * fold-const.c: Fix typos in comments.
16396         (fold_binary): Fix typo in warning.
16397         * genautomata.c: Fix typos in comments.
16398         (check_presence_pattern_sets): Fix typo in local variable.
16399         (output_description): Fix typo in output.
16400         * ggc-zone.c (ggc_pch_finish): Fix typo in error message.
16401         * hwint.h: Likewise.
16402         * matrix-reorg.c (check_allocation_function): Likewise.
16403         * omega.c (smooth_weird_equations): Likewise.
16404         * auto-inc-dec.c: Fix typos in comments.
16405         * bb-reorder.c: Likewise.
16406         * builtins.c: Likewise.
16407         * c-common.c: Likewise.
16408         * c-cppbuiltin.c: Likewise.
16409         * c-parser.c: Likewise.
16410         * c-pretty-print.c: Likewise.
16411         * cfgcleanup.c: Likewise.
16412         * cfgexpand.c: Likewise.
16413         * cfghooks.c: Likewise.
16414         * cfglayout.c: Likewise.
16415         * cfgloopmanip.c: Likewise.
16416         * cgraphunit.c: Likewise.
16417         * coverage.c: Likewise.
16418         * dbxout.c: Likewise.
16419         * df-byte-scan.c: Likewise.
16420         * df-core.c: Likewise.
16421         * df-problems.c: Likewise.
16422         * df-scan.c: Likewise.
16423         * dfp.c: Likewise.
16424         * dominance.c: Likewise.
16425         * domwalk.c: Likewise.
16426         * dse.c: Likewise.
16427         * dwarf2out.c: Likewise.
16428         * emit-rtl.c: Likewise.
16429         * et-forest.c: Likewise.
16430         * function.c: Likewise.
16431         * function.h: Likewise.
16432         * gcc.c: Likewise.
16433         * gcov-io.c: Likewise.
16434         * gcov.c: Likewise.
16435         * gcse.c: Likewise.
16436         * genattrtab.c: Likewise.
16437         * ggc-page.c: Likewise.
16438         * gimplify.c: Likewise.
16439         * gthr-lynx.h: Likewise.
16440         * haifa-sched.c: Likewise.
16441         * ipa-cp.c: Likewise.
16442         * ipa-inline.c: Likewise.
16443         * ipa-prop.h: Likewise.
16444         * ipa-pure-const.c: Likewise.
16445         * ipa-struct-reorg.c: Likewise.
16446         * ipa-struct-reorg.h: Likewise.
16447         * ipa-type-escape.c: Likewise.
16448         * ipa.c: Likewise.
16449         * loop-doloop.c: Likewise.
16450         * mips-tfile.c: Likewise.
16451         * mkmap-flat.awk: Likewise.
16452         * mkmap-symver.awk: Likewise.
16453         * modulo-sched.c: Likewise.
16454         * omp-low.c: Likewise.
16455         * optabs.c: Likewise.
16456         * optabs.h: Likewise.
16457         * opts.c: Likewise.
16458         * passes.c: Likewise.
16459         * postreload-gcse.c: Likewise.
16460         * postreload.c: Likewise.
16461         * predict.c: Likewise.
16462         * pretty-print.h: Likewise.
16463         * profile.c: Likewise.
16464         * protoize.c: Likewise.
16465         * ra-conflict.c: Likewise.
16466         * real.c: Likewise.
16467         * recog.c: Likewise.
16468         * regclass.c: Likewise.
16469         * regs.h: Likewise.
16470         * reload.c: Likewise.
16471         * rtl-error.c: Likewise.
16472         * rtlanal.c: Likewise.
16473         * scan.h: Likewise.
16474         * sched-rgn.c: Likewise.
16475         * see.c: Likewise.
16476         * stmt.c: Likewise.
16477         * target.h: Likewise.
16478         * tree-dfa.c: Likewise.
16479         * tree-eh.c: Likewise.
16480         * tree-flow-inline.h: Likewise.
16481         * tree-inline.c: Likewise.
16482         * tree-into-ssa.c: Likewise.
16483         * tree-loop-distribution.c: Likewise.
16484         * tree-nested.c: Likewise.
16485         * tree-parloops.c: Likewise.
16486         * tree-pass.h: Likewise.
16487         * tree-pretty-print.c: Likewise.
16488         * tree-profile.c: Likewise.
16489         * tree-scalar-evolution.c: Likewise.
16490         * tree-sra.c: Likewise.
16491         * tree-ssa-alias-warnings.c: Likewise.
16492         * tree-ssa-ccp.c: Likewise.
16493         * tree-ssa-coalesce.c: Likewise.
16494         * tree-ssa-dom.c: Likewise.
16495         * tree-ssa-dse.c: Likewise.
16496         * tree-ssa-forwprop.c: Likewise.
16497         * tree-ssa-live.c: Likewise.
16498         * tree-ssa-live.h: Likewise.
16499         * tree-ssa-loop-im.c: Likewise.
16500         * tree-ssa-loop-ivopts.c: Likewise.
16501         * tree-ssa-loop-niter.c: Likewise.
16502         * tree-ssa-loop-prefetch.c: Likewise.
16503         * tree-ssa-phiopt.c: Likewise.
16504         * tree-ssa-phiprop.c: Likewise.
16505         * tree-ssa-sccvn.c: Likewise.
16506         * tree-ssa-ter.c: Likewise.
16507         * tree-ssa-threadupdate.c: Likewise.
16508         * tree-ssa.c: Likewise.
16509         * tree-vect-analyze.c: Likewise.
16510         * tree-vect-transform.c: Likewise.
16511         * tree-vectorizer.c: Likewise.
16512         * tree-vn.c: Likewise.
16513         * tree-vrp.c: Likewise.
16514         * tree.c: Likewise.
16515         * tree.def: Likewise.
16516         * tree.h: Likewise.
16517         * unwind-dw2-fde.c: Likewise.
16518         * unwind.inc: Likewise.
16519         * value-prof.c: Likewise.
16520         * vmsdbgout.c: Likewise.
16521
16522 2008-06-05  David Edelsohn  <edelsohn@gnu.org>
16523
16524         * config/rs6000/xcoff.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Do not
16525         always place FP constants in the TOC for TARGET_POWERPC64.
16526         * config/rs6000/linux64.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Same.
16527
16528 2008-06-05  Joseph Myers  <joseph@codesourcery.com>
16529
16530         * config.gcc (powerpc-*-linux*spe*): Use t-dfprules.
16531         * config/rs6000/dfp.md (negdd2, absdd2, negtd2, abstd2): Do not
16532         enable for TARGET_E500_DOUBLE.
16533         (*movdd_softfloat32): Also enable for !TARGET_FPRS.
16534         * config/rs6000/rs6000.c (invalid_e500_subreg): Treat decimal
16535         floating-point modes like integer modes for E500 double.
16536         (rs6000_legitimate_offset_address_p): Likewise.
16537         (rs6000_legitimize_address): Likewise.  Do not allow REG+REG
16538         addressing for DDmode for E500 double.
16539         (rs6000_hard_regno_nregs): Do not treat decimal floating-point
16540         modes as using 64-bits of registers for E500 double.
16541         (spe_build_register_parallel): Do not handle DDmode or TDmode.
16542         (rs6000_spe_function_arg): Do not handle DDmode or TDmode
16543         specially for E500 double.
16544         (function_arg): Do not call rs6000_spe_function_arg for DDmode or
16545         TDmode for E500 double.
16546         (rs6000_gimplify_va_arg): Only handle SDmode in registers
16547         specially if TARGET_HARD_FLOAT && TARGET_FPRS.
16548         (rs6000_split_multireg_move): Do not handle TDmode specially for
16549         E500 double.
16550         (spe_func_has_64bit_regs_p): Do not treat DDmode or TDmode as
16551         using 64-bit registers for E500 double.
16552         (emit_frame_save): Do not handle DDmode specially for E500 double.
16553         (gen_frame_mem_offset): Likewise.
16554         (rs6000_function_value): Do not call spe_build_register_parallel
16555         for DDmode or TDmode.
16556         (rs6000_libcall_value): Likewise.
16557         * config/rs6000/rs6000.h (LOCAL_ALIGNMENT, MEMBER_TYPE_FORCES_BLK,
16558         DATA_ALIGNMENT, CLASS_MAX_NREGS): Do not handle DDmode specially
16559         for E500 double.
16560
16561 2008-06-04  H.J. Lu  <hongjiu.lu@intel.com>
16562
16563         * config/i386/i386.c (setup_incoming_varargs_64): Fix a typo
16564         in comments.
16565
16566 2008-06-04  Junjie Gu <jgu@tensilica.com>
16567
16568         * config/xtensa/lib2funcs.S (__xtensa_nonlocal_goto): Use unsigned
16569         comparison for frame pointers.
16570
16571 2008-06-04  Andy Hutchinson  <hutchinsonandy@aim.com>
16572
16573         PR target/27386
16574         * config/avr/avr.h (PUSH_ROUNDING): Remove.
16575
16576 2008-06-04  Andy Hutchinson  <hutchinsonandy@aim.com>
16577
16578         PR target/30243
16579         * builtins.c (expand_builtin_signbit): Don't take lowpart when
16580         register is already smaller or equal to required mode.
16581
16582 2008-06-04  Xinliang David Li  <davidxl@google.com>
16583
16584         * tree-call-cdce.c: New file.
16585         (cond_dead_built_in_calls): New static variable.
16586         (input_domain): New struct.
16587         (check_pow): New function.
16588         (check_builtin_call): Ditto.
16589         (check_target_format): Ditto.
16590         (is_call_dce_candidate): Ditto.
16591         (gen_one_condition): Ditto.
16592         (gen_conditions_for_domain): Ditto.
16593         (get_domain): Ditto.
16594         (gen_conditions_for_pow_cst_base): Ditto.
16595         (gen_conditions_for_pow_int_base): Ditto.
16596         (gen_conditions_for_pow): Ditto.
16597         (get_no_error_domain): Ditto.
16598         (gen_shrink_wrap_conditions): Ditto.
16599         (shrink_wrap_one_built_in_call): Ditto.
16600         (shink_wrap_conditional_dead_built_in_calls): Ditto.
16601         (tree_call_cdce): Ditto.
16602         (gate_call_cdce): Ditto.
16603         (pass_call_cdce): New gimple pass.
16604         * passes.c: (init_optimization_passes): New pass.
16605         * tree-pass.h: New pass declaration.
16606         * opts.c (decode_options): New flag setting.
16607         * common.opt: Add -ftree-builtin-call-dce flag.
16608         * Makefile.in: Add new source file.
16609         * tempvar.def: New tv_id.
16610         * doc/invoke.texi (-ftree-builtin-call-dce): New flag.
16611
16612 2008-06-04  Richard Guenther  <rguenther@suse.de>
16613
16614         * tree-flow-inline.h (is_global_var): Do not check TREE_STATIC on MTAGs.
16615         (is_call_clobbered): Always check var_ann->call_clobbered.
16616         (mark_call_clobbered): Always set var_ann->call_clobbered.
16617         (clear_call_clobbered): Always clear var_ann->call_clobbered.
16618         * tree-ssa-alias.c (mark_non_addressable): Use clear_call_clobbered.
16619         (reset_alias_info): Clear call clobbering info on MTAGs and
16620         globals as well.
16621         (set_pt_anything): Set pt_global_mem.
16622         (create_tag_raw): Adjust comment.
16623         (may_be_aliased): Do not check TREE_PUBLIC on MTAGs.
16624
16625 2008-06-04  Joseph Myers  <joseph@codesourcery.com>
16626             Maxim Kuvyrkov  <maxim@codesourcery.com>
16627
16628         * config/m68k/m68k.opt (mxgot): New option.
16629         * config/m68k/m68k.c (legitimize_pic_address): Handle -mxgot.
16630         (m68k_output_addr_const_extra): New.
16631         * config/m68k/m68k.h (OUTPUT_ADDR_CONST_EXTRA): New.
16632         * config/m68k/m68k-protos.h (m68k_output_addr_const_extra): Declare.
16633         * config/m68k/m68k.md (UNSPEC_GOTOFF): Define.
16634         * doc/invoke.texi (M680x0 Options): Document -mxgot.
16635
16636 2008-06-04  Richard Guenther  <rguenther@suse.de>
16637
16638         * tree-ssa-structalias.c (handle_ptr_arith): Correctly handle
16639         negative or non-representable offsets.
16640
16641 2008-06-03  H.J. Lu  <hongjiu.lu@intel.com>
16642
16643         * config/i386/i386.c (ix86_gen_leave): New.
16644         (ix86_gen_pop1): Likewise.
16645         (ix86_gen_add3): Likewise.
16646         (ix86_gen_sub3): Likewise.
16647         (ix86_gen_sub3_carry): Likewise.
16648         (ix86_gen_one_cmpl2): Likewise.
16649         (ix86_gen_monitor): Likewise.
16650         (override_options): Initialize ix86_gen_leave, ix86_gen_pop1,
16651         ix86_gen_add3, ix86_gen_sub3, ix86_gen_sub3_carry,
16652         ix86_gen_one_cmpl2 and ix86_gen_monitor.
16653         (ix86_file_end): Use mov%z0 instead of mov{q}/mov{l}.
16654         (output_set_got): Use mov%z0, pop%z0 and add%z0 instead of
16655         mov{q}/mov{l}, pop{q}/pop{l} and add{q}/add{l}.
16656         (ix86_expand_epilogue): Updated.
16657         (print_operand): Handle integer register operand for 'z'.
16658         (ix86_expand_strlensi_unroll_1): Likewise.
16659         (ix86_expand_strlen): Likewise.
16660         (ix86_expand_builtin): Likewise.
16661         (x86_output_mi_thunk): Use mov%z1 and add%z1 instead of
16662         mov{q}/mov{l} and add{q}/add{l}.
16663
16664 2008-06-03  Kai Tietz  <kai.tietz@onevision.com>
16665
16666         * config/i386/i386.md (P): New mode iterator.
16667         (SFmode push_operand splitter): Macroize DImode and SImode pushes
16668         using P mode iterator.
16669         (DFmode push_operand splitter): Ditto.
16670         (XFmode push_operand splitter): Ditto.
16671         (DFmode float_extend SFmode push_operand splitter): Ditto.
16672         (XFmode float_extend SFmode push_operand splitter): Do not generate
16673         SImode pushes for 64bit target.  Macroize Dimode and SImode
16674         pushes using P mode iterator.
16675         (XFmode float_extend DFmode push_operand splitter): Ditto.
16676
16677 2008-06-03  Kai Tietz  <kai.tietz@onevision.com>
16678
16679         * config/i386/i386-protos.h (ix86_reg_parm_stack_space): New.
16680         * config/i386/i386.h (ix86_reg_parm_stack_space): Removed prototype.
16681         * config/i386/i386.c (ix86_reg_parm_stack_space): Changed
16682         return type to int.
16683         (ix86_call_abi_override): Remove check for call_used_regs.
16684
16685 2008-06-03  Richard Guenther  <rguenther@suse.de>
16686
16687         * tree-ssa-structalias.c (find_func_aliases): Add constraints
16688         for the lhs of calls if the return type contains pointers.
16689
16690 2008-06-03  Kai Tietz  <kai.tietz@onevision.com>
16691
16692         * doc/tm.texi (OVERRIDE_ABI_FORMAT): New.
16693         * doc/extend.texi (ms_abi,sysv_abi): New attribute description.
16694         * function.c (allocate_struct_function): Use of OVERRIDE_ABI_FORMAT.
16695         * config/i386/cygming.h (TARGET_64BIT_MS_ABI): Make use
16696         of cfun and DEFAULT_ABI to deceide abi mode.
16697         (DEFAULT_ABI): New.
16698         (REG_PARM_STACK_SPACE): Removed.
16699         (OUTGOING_REG_PARM_STACK_SPACE): Removed.
16700         (STACK_BOUNDARY): Use default target to deceide stack boundary.
16701         * config/i386/i386-protos.h (ix86_cfun_abi): New.
16702         (ix86_function_abi): Likewise.
16703         (ix86_function_type_abi): Likewise.
16704         (ix86_call_abi_override): Likewise.
16705         * confid/i386/i386.md (SSE_REGPARM_MAX): Replaced by abi
16706         specific define X86_64_SSE_REGPARM_MAX/X64_SSE_REGPARM_MAX.
16707         * config/i386/i386.c (override_options): Replace TARGET_64BIT_MS_ABI.
16708         (X86_64_VARARGS_SIZE): Replace REGPARM_MAX and SSE_REGPARM_MAX by abi
16709         specific defines.
16710         (X86_64_REGPARM_MAX): New.
16711         (X86_64_SSE_REGPARM_MAX): New.
16712         (X64_REGPARM_MAX): New.
16713         (X64_SSE_REGPARM_MAX): New.
16714         (X86_32_REGPARM_MAX): New.
16715         (X86_32_SSE_REGPARM_MAX): New.
16716         (ix86_handle_cconv_attribute): Replace TARGET_64BIT_MS_ABI.
16717         (ix86_function_regparm): Handle user calling abi.
16718         (ix86_function_arg_regno_p): Replace TARGET_64BIT_MS_ABI
16719         by DEFAULT_ABI versus SYSV_ABI check.
16720         (ix86_reg_parm_stack_space): New.
16721         (ix86_function_type_abi): New.
16722         (ix86_call_abi_override): New.
16723         (ix86_function_abi): New.
16724         (ix86_cfun_abi): New.
16725         (init_cumulative_args): Call abi specific initialization.
16726         (function_arg_advance): Remove TARGET_64BIT_MS_ABI.
16727         (function_arg_64): Extend SSE_REGPARM_MAX check.
16728         (function_arg (): Remove TARGET_64BIT_MS_ABI.
16729         (ix86_pass_by_reference): Likewise.
16730         (ix86_function_value_regno_p): Likewise.
16731         (function_value_64): Replace REGPARM_MAX, and SSE_REGPARM_MAX.
16732         (ix86_function_value_1): Replace TARGET_64BIT_MS_ABI.
16733         (return_in_memory_ms_64): Replace TARGET_64BIT_MS_ABI.
16734         (ix86_build_builtin_va_list): Replace TARGET_64BIT_MS_ABI.
16735         (setup_incoming_varargs_64): Adjust regparm for call abi.
16736         (ix86_setup_incoming_varargs): Replace TARGET_64BIT_MS_ABI.
16737         (ix86_va_start): Likewise.
16738         (ix86_gimplify_va_arg): Likewise.
16739         (ix86_expand_prologue): Likewise.
16740         (output_pic_addr_const): Likewise.
16741         (ix86_init_machine_status): Initialize call_abi by DEFAULT_ABI.
16742         (x86_this_parameter): Replace TARGET_64BIT_MS_ABI.
16743         (x86_output_mi_thunk): Likewise.
16744         (x86_function_profiler): Likewise.
16745         * config/i386/i386.h (TARGET_64BIT_MS_ABI): Use ix64_cfun_abi.
16746         (SYSV_ABI, MS_ABI): New constants.
16747         (DEFAULT_ABI): New.
16748         (init_regs): Add prototype of function in regclass.c file.
16749         (OVERRIDE_ABI_FORMAT): New.
16750         (CONDITIONAL_REGISTER_USAGE): Remove TARGET_64BIT_MS_ABI part.
16751         (REG_PARM_STACK_SPACE): Use ix86_reg_parm_stack_space.
16752         (OUTGOING_REG_PARM_STACK_SPACE): New.
16753         (ix86_reg_parm_stack_space): New prototype.
16754         (CUMULATIVE_ARGS): Add call_abi member.
16755         (machine_function): Add call_abi member.
16756         * config/i386/mingw32.h (EXTRA_OS_CPP_BUILTINS): Replace
16757         TARGET_64BIT_MS_ABI by DEFAULT_ABI compare to MS_ABI.
16758
16759 2008-06-02  Andy Hutchinson  <hutchinsonandy@aim.com>
16760
16761         PR target/34879
16762         * config/avr/avr.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Redefine.
16763         (avr_builtin_setjmp_frame_value): New function.
16764         * config/avr/avr.md (nonlocal_goto_receiver): Define.
16765         (nonlocal_goto): Define.
16766
16767 2008-06-02  Richard Sandiford  <rdsandiford@googlemail.com>
16768
16769         * config/mips/mips.c (mips_emit_loadgp): Return early if
16770         there is nothing do to, otherwise emit a blockage if
16771         !TARGET_EXPLICIT_RELOCS || crtl->profile.
16772         * config/mips/mips.md (loadgp_blockage): Use SI rather than DI.
16773
16774 2008-06-02  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
16775
16776         * configure.ac: Drop unneeded backslash ending up in config.in.
16777         * acinclude.m4: Likewise.
16778         * config.in: Regenerate.
16779
16780 2008-05-26  Jan Hubicka  <jh@suse.cz>
16781
16782         * predict.c (maybe_hot_frequency_p): Break out of...
16783         (maybe_hot_bb_p): ... here.
16784         (maybe_hot_edge_p): New.
16785         * tree-ssa-coalesce.c (coalesce_cost_edge): Compute cost based on edge.
16786         * basic-block.h (maybe_hot_edge_p): Declare.
16787
16788 2008-05-31  Uros Bizjak  <ubizjak@gmail.com>
16789
16790         * config/i386/i386.md (*cmpfp_<mode>): Enable for optimize_size.
16791         (*cmpfp_<mode>_cc): Ditto.
16792         (*fp_jcc_8<mode>_387): Ditto.
16793         (*fop_<MODEF:mode>_2_i387): Ditto.
16794         (*fop_<MODEF:mode>_3_i387): Ditto.
16795         (*fop_xf_2_i387): Ditto.
16796         (*fop_xf_3_i387): Ditto.
16797
16798 2008-06-02  Tomas Bily  <tbily@suse.cz>
16799
16800         * tree-ssa-ifcombine.c (get_name_for_bit_test): Use CONVERT_EXPR_P.
16801
16802 2008-06-01  Richard Sandiford  <rdsandiford@googlemail.com>
16803
16804         * config/mips/mips.c (mips_valid_offset_p): New function.
16805         (mips_valid_lo_sum_p): Likewise.
16806         (mips_classify_address): Use them.
16807         (mips_force_address): New function.
16808         (mips_legitimize_address): Use it.
16809         * config/mips/mips.md (MOVE128): New mode iterator.
16810         (movtf): Require TARGET_64BIT.  Remove empty strings.
16811         (*movtf_internal): Rename to...
16812         (*movtf): ...this and require !TARGET_MIPS16.  Use "m" instead
16813         of "R" and use {,fp}{load,store} attributes instead of "multi".
16814         Use a separate define_split.
16815         (*movtf_mips16): New pattern.
16816
16817 2008-06-01  Richard Sandiford  <rdsandiford@googlemail.com>
16818
16819         * config/mips/mips-protos.h (mips_expand_before_return): Declare.
16820         * config/mips/mips.c (mips_expand_before_return): New function.
16821         (mips_expand_epilogue): Call it.
16822         * config/mips/mips.md (return): Turn into a define_expand.
16823         (*return): New insn.
16824
16825 2008-06-01  Richard Sandiford  <rdsandiford@googlemail.com>
16826
16827         * rtl.h (emit_clobber, gen_clobber, emit_use, gen_use): Declare.
16828         * emit-rtl.c (emit_clobber, gen_clobber, emit_use, gen_use): New
16829         functions.  Do not emit uses and clobbers of CONCATs; individually
16830         use and clobber their operands.
16831         * builtins.c (expand_builtin_setjmp_receiver): Use emit_clobber,
16832         gen_clobber, emit_use and gen_use.
16833         (expand_builtin_longjmp, expand_builtin_nonlocal_goto): Likewise.
16834         (expand_builtin_return): Likewise.
16835         * cfgbuild.c (count_basic_blocks): Likewise.
16836         * cfgrtl.c (rtl_flow_call_edges_add): Likewise.
16837         * explow.c (emit_stack_restore): Likewise.
16838         * expmed.c (extract_bit_field_1): Likewise.
16839         * expr.c (convert_move, emit_move_complex_parts): Likewise.
16840         (emit_move_multi_word, store_constructor): Likewise.
16841         * function.c (do_clobber_return_reg, do_use_return_reg): Likewise.
16842         (thread_prologue_and_epilogue_insns): Likewise.
16843         * lower-subreg.c (resolve_simple_move): Likewise.
16844         * optabs.c (widen_operand, expand_binop): Likewise.
16845         (expand_doubleword_bswap, emit_no_conflict_block): Likewise.
16846         * reload.c (find_reloads): Likewise.
16847         * reload1.c (eliminate_regs_in_insn): Likewise.
16848         * stmt.c (expand_nl_goto_receiver): Likewise.
16849         * config/alpha/alpha.md (builtin_longjmp): Likewise.
16850         * config/arc/arc.md (*movdi_insn, *movdf_insn): Likewise.
16851         * config/arm/arm.c (arm_load_pic_register): Likewise.
16852         (thumb1_expand_epilogue, thumb_set_return_address): Likewise.
16853         * config/arm/arm.md (untyped_return): Likewise.
16854         * config/arm/linux-elf.h (PROFILE_HOOK): Likewise.
16855         * config/avr/avr.c (expand_prologue): Likewise.
16856         * config/bfin/bfin.c (do_unlink): Likewise.
16857         * config/bfin/bfin.md (<optab>di3, adddi3, subdi3): Likewise.
16858         * config/cris/cris.c (cris_expand_prologue): Likewise.
16859         * config/darwin.c (machopic_indirect_data_reference): Likewise.
16860         (machopic_legitimize_pic_address): Likewise.
16861         * config/frv/frv.c (frv_frame_access, frv_expand_epilogue): Likewise.
16862         (frv_ifcvt_modify_insn, frv_expand_mdpackh_builtin): Likewise.
16863         * config/i386/i386.c (ix86_expand_vector_move_misalign): Likewise.
16864         (ix86_expand_convert_uns_didf_sse): Likewise.
16865         (ix86_expand_vector_init_general): Likewise.
16866         * config/ia64/ia64.md (eh_epilogue): Likewise.
16867         * config/iq2000/iq2000.c (iq2000_expand_epilogue): Likewise.
16868         * config/m32c/m32c.c (m32c_emit_eh_epilogue): Likewise.
16869         * config/m32r/m32r.c (m32r_reload_lr): Likewise.
16870         (config/iq2000/iq2000.c): Likewise.
16871         * config/mips/mips.md (fixuns_truncdfsi2): Likewise.
16872         (fixuns_truncdfdi2, fixuns_truncsfsi2, fixuns_truncsfdi2): Likewise.
16873         (builtin_longjmp): Likewise.
16874         * config/mn10300/mn10300.md (call, call_value): Likewise.
16875         * config/pa/pa.md (nonlocal_goto, nonlocal_longjmp): Likewise.
16876         * config/pdp11/pdp11.md (abshi2): Likewise.
16877         * config/rs6000/rs6000.c (rs6000_emit_move): Likewise.
16878         * config/s390/s390.c (s390_emit_prologue): Likewise.
16879         * config/s390/s390.md (movmem_long, setmem_long): Likewise.
16880         (cmpmem_long, extendsidi2, zero_extendsidi2, udivmoddi4): Likewise.
16881         (builtin_setjmp_receiver, restore_stack_nonlocal): Likewise.
16882         * config/sh/sh.c (prepare_move_operands): Likewise.
16883         (output_stack_adjust, sh_expand_epilogue): Likewise.
16884         (sh_set_return_address, sh_expand_t_scc): Likewise.
16885         * config/sparc/sparc.c (load_pic_register): Likewise.
16886         * config/sparc/sparc.md (untyped_return, nonlocal_goto): Likewise.
16887         * config/spu/spu.c (spu_expand_epilogue): Likewise.
16888         * config/v850/v850.c (expand_epilogue): Likewise.
16889
16890 2008-05-31  Anatoly Sokolov  <aesok@post.ru>
16891
16892         * config/avr/avr.md (UNSPECV_WRITE_SP_IRQ_ON): New constants.
16893         (UNSPECV_WRITE_SP_IRQ_OFF): (Ditto.).
16894         (movhi_sp_r_irq_off, movhi_sp_r_irq_on): New insn.
16895         * config/avr/avr.c (expand_prologue, expand_epilogue): Use
16896         movhi_sp_r_irq_off and movhi_sp_r_irq_on insns for writing to the
16897         stack pointer register.
16898         (output_movhi): Remove code for interrupt specific writing to the
16899         stack pointer register.
16900
16901 2008-05-31  Richard Guenther  <rguenther@suse.de>
16902
16903         PR tree-optimization/34244
16904         * fold-const.c (tree_expr_nonnegative_warnv_p): Do not ask VRP.
16905         (tree_expr_nonzero_warnv_p): Likewise.
16906         * tree-vrp.c (vrp_expr_computes_nonnegative): Call
16907         ssa_name_nonnegative_p.
16908         (vrp_expr_computes_nonzero): Call ssa_name_nonzero_p.
16909         (extract_range_from_unary_expr): Use vrp_expr_computes_nonzero,
16910         not tree_expr_nonzero_warnv_p.
16911
16912         PR tree-optimization/36262
16913         Revert
16914         2007-11-29  Zdenek Dvorak  <ook@ucw.cz>
16915
16916         PR tree-optimization/34244
16917         * tree-vrp.c (adjust_range_with_scev): Clear scev cache.
16918         (record_numbers_of_iterations): New function.
16919         (execute_vrp): Cache the numbers of iterations of loops.
16920         * tree-scalar-evolution.c (scev_reset_except_niters):
16921         New function.
16922         (scev_reset): Use scev_reset_except_niters.
16923         * tree-scalar-evolution.h (scev_reset_except_niters): Declare.
16924
16925 2008-05-31  Bernd Schmidt  <bernd.schmidt@analog.com>
16926
16927         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
16928         __WORKAROUND_RETS when appropriate.
16929
16930 2008-05-31  Uros Bizjak  <ubizjak@gmail.com>
16931
16932         * config/i386/i386.md (*fop_<mode>_comm_mixed): Macroize from
16933         *fop_sf_comm_mixed and *fop_df_comm_mixed insn patterns using MODEF
16934         mode iterator.
16935         (*fop_<mode>_comm_sse): Macroize from *fop_sf_comm_sse and
16936         *fop_df_comm_sse insn patterns using MODEF mode iterator.
16937         (*fop_<mode>_comm_i387): Macroize from *fop_sf_comm_i387 and
16938         *fop_df_comm_i387 insn patterns using MODEF mode iterator.
16939         (*fop_<mode>_1_mixed): Macroize from *fop_sf_1_mixed and
16940         *fop_df_1_mixed insn patterns using MODEF mode iterator.
16941         (*fop_<mode>_1_sse): Macroize from *fop_sf_1_sse and
16942         *fop_df_1_sse insn patterns using MODEF mode iterator.
16943         (*fop_<mode>_1_i387): Macroize from *fop_sf_1_i387 and
16944         *fop_df_1_i387 insn patterns using MODEF mode iterator.
16945         (*fop_<MODEF:mode>_2_i387): Macroize from *fop_sf_2<mode>_i387 and
16946         *fop_df_2<mode>_i387 insn patterns using MODEF mode iterator.
16947         (*fop_<MODEF:mode>_3_i387): Macroize from *fop_sf_3<mode>_i387 and
16948         *fop_df_3<mode>_i387 insn patterns using MODEF mode iterator.
16949         (*fop_xf_2_i387): Rename from *fop_xf_2<mode>_i387.
16950         (*fop_xf_3_i387): Rename from *fop_xf_3<mode>_i387.
16951         (*fop_xf_4_i387): Use <MODE> for mode attribute.
16952         (*fop_xf_5_i387): Ditto.
16953         (*fop_xf_6_i387): Ditto.
16954
16955 2008-05-30  Richard Guenther  <rguenther@suse.de>
16956
16957         * builtins.c (build_string_literal): Avoid generating
16958         a non-gimple_val result.
16959
16960 2008-05-30  DJ Delorie  <dj@redhat.com>
16961
16962         * exec-tool.in: Use an environment variable (private) instead of a
16963         file (shared) as a semaphore, so as to not break parallel builds.
16964
16965 2008-05-30  Steven Bosscher  <stevenb.gcc@gmail.com>
16966
16967         * optabs.c (maybe_encapsulate_block): Remove.
16968         (emit_libcall_block): Adjust accordingly.
16969         * optabs.h (maybe_encapsulate_block): Remove prototype.
16970
16971         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address):
16972         Don't use maybe_encapsulate_block.
16973
16974 2008-05-30  Steven Bosscher  <stevenb.gcc@gmail.com>
16975
16976         * config/rs6000/rs6000.c (rs6000_legitimize_address,
16977         rs6000_legitimize_reload_address, rs6000_emit_move): Make sure an
16978         rtx is a SYMBOL_REF before calling get_pool_constant.
16979
16980 2008-05-30  Eric Botcazou  <ebotcazou@adacore.com>
16981
16982         * fold-const.c (fold_unary) <CASE_CONVERT>: Add ??? comment.
16983
16984 2008-05-30  Danny Smith  <dannysmith@users.sourceforge.net>
16985
16986         * incpath.c: Use HOST_LACKS_INODE_NUMBERS conditional
16987         rather than OS names to choose INO_T_EQ definition.
16988         (DIRS_EQ) [!INO_T_EQ]: Don't worry about case in comparison.
16989         (add_path) [!INO_T_EQ]: Use lrealpath to fill canonical_name field.
16990
16991 2008-05-29  Daniel Franke  <franke.daniel@gmail.com>
16992
16993         PR target/36348
16994         * config/darwin-f.c: New.
16995         * config/t-darwin: Added rule to build darwin-f.o.
16996         * config.gcc: Defined new variable, fortran_target_objs.
16997         (*-*-darwin*): Set fortran_target_objs.
16998         * Makefile.in: Defined new variable FORTRAN_TARGET_OBJS.
16999         * configure.ac: Substitute fortran_target_objs, set FORTRAN_TARGET_OBJS.
17000         * configure: Regenerated.
17001
17002 2008-05-29  H.J. Lu  <hongjiu.lu@intel.com>
17003
17004         PR target/35771
17005         * config/i386/i386.c (ix86_function_arg_boundary): Convert to
17006         canonical type if needed.
17007
17008 2008-05-29  Eric Botcazou  <ebotcazou@adacore.com>
17009
17010         * tree-nested.c (check_for_nested_with_variably_modified): Fix typo.
17011
17012 2008-05-29  Richard Guenther  <rguenther@suse.de>
17013
17014         PR tree-optimization/36343
17015         PR tree-optimization/36346
17016         PR tree-optimization/36347
17017         * tree-flow.h (clobber_what_p_points_to): Declare.
17018         * tree-ssa-structalias.c (set_uids_in_ptset): Whether the
17019         pointed-to variable is dereferenced is irrelevant to whether
17020         the pointer can access the pointed-to variable.
17021         (clobber_what_p_points_to): New function.
17022         * tree-ssa-alias.c (set_initial_properties): Use it.
17023         * tree-ssa.c (verify_flow_sensitive_alias_info): Adjust
17024         call clobber check for NMTs.
17025
17026 2008-05-28  Seongbae Park  <seongbae.park@gmail.com>
17027
17028         * value-prof.c (tree_ic_transform): Use HOST_WIDEST_INT_PRINT_DEC
17029         for printing gcov_type.
17030
17031 2008-05-28  Seongbae Park  <seongbae.park@gmail.com>
17032
17033         * tree-ssa-propagate.c (set_rhs): Preserve the histogram
17034         and the eh region information.
17035         * value-prof.c (gimple_move_stmt_histograms): New function.
17036         * value-prof.h (gimple_move_stmt_histograms): New function declaration.
17037
17038 2008-05-28  Andreas Tobler  <a.tobler@schweiz.org>
17039
17040         * config/pa/pa.md: Remove extern frame_pointer_needed declaration.
17041
17042 2008-05-28  Seongbae Park <seongbae.park@gmail.com>
17043
17044         * value-prof.c (tree_ic_transform): Print counts.
17045         * tree-profile.c (tree_gen_ic_func_profiler):
17046         Clear __gcov_indreict_call_callee variable to avoid misattribution
17047         of the profile.
17048
17049 2008-05-28  Rafael Espíndola  <espindola@google.com>
17050
17051         * see.c (see_def_extension_not_merged): Use copy_rtx_if_shared to avoid
17052         invalid sharing.
17053
17054 2008-05-28  Richard Guenther  <rguenther@suse.de>
17055
17056         PR tree-optimization/36339
17057         * tree-ssa-alias.c (set_initial_properties): Move pt_anything
17058         and clobbering code out of the loop.
17059
17060 2008-05-28  Andreas Krebbel  <krebbel1@de.ibm.com>
17061
17062         * config/s390/constraints.md ('b', 'C', 'D', 'e'): New constraint
17063         letters defined.
17064
17065         * config/s390/s390.c (s390_compare_and_branch_condition_mask,
17066         s390_contiguous_bitmask_p, s390_symref_operand_p,
17067         s390_check_symref_alignment, s390_reload_larl_operand,
17068         s390_reload_symref_address): New functions.
17069         (s390_branch_condition_mnemonic): Support compare and branch
17070         instructions.
17071         (s390_mem_constraint): Avoid symrefs to accepted by the 'T'
17072         and 'W' constraints.
17073         (s390_secondary_reload): Add secondary reloads for unaligned
17074         symbol refs or symbol refs to floating point or QI/TI mode
17075         integer values.
17076         (legitimate_address_p): Accept symbol references as addresses.
17077         (s390_expand_insv): Use rotate and insert selected bits
17078         instruction for insv when building for z10.
17079         (print_operand_address): Handle symbol ref addresses.
17080         (print_operand): Output modifier 'c' added for signed byte values.
17081         (s390_encode_section_info): Mark symbol refs with
17082         SYMBOL_FLAG_NOT_NATURALLY_ALIGNED if appropriate.
17083
17084         * config/s390/s390.md (SIL,RRS,RIS): New instruction formats added.
17085         (length attribute): RRF, RRR have 4 byte length.
17086         (FPALL, INTALL): New mode iterators added.
17087         (*tstdi_sign, *cmpdi_ccs_sign, *cmpsi_ccs_sign,
17088         *cmp<mode>_ccs, *cmpdi_ccu_zero, *cmpdi_ccu, *cmpsi_ccu, *cmphi_ccu,
17089         *movdi_64, *movsi_zarch, *movhi, movmem<mode>, *movmem_short,
17090         *extendsidi2, *extendhidi2_extimm, *extendhisi2_extimm,
17091         *zero_extendsidi2, adddi3, *adddi3_31z, *adddi3_31, addsi3,
17092         *add<mode>3, *add<mode>3_carry1_cc, *add<mode>3_carry2_cc,
17093         *add<mode>3_cc, *add<mode>3_imm_cc, *muldi3_sign, muldi3,
17094         *mulsi3_sign, mulsi3, mulsidi3): Patterns enhanced with z10
17095         instructions.
17096         (*cmphi_ccs_z10, *cmpdi_ccs_signhi_rl, *cmpsi_ccu_zerohi_rlsi,
17097         *cmp<GPR:mode>_ccu_zerohi_rldi, *cmp_and_br_signed_<mode>,
17098         *cmp_and_br_unsigned_<mode>, reload<INTALL:mode><P:mode>_tomem_z10,
17099         reload<INTALL:mode><P:mode>_toreg_z10,
17100         reload<FPALL:mode><P:mode>_tomem_z10,
17101         reload<FPALL:mode><P:mode>_toreg_z10,
17102         reload<P:mode>_larl_odd_addend_z10, *execute_rl, *insv<mode>_z10,
17103         *insv<mode>_z10_noshift, *insv<mode>_or_z10_noshift,
17104         *zero_extendhi<mode>2_z10, *cmp_and_trap_signed_int<mode>,
17105         *cmp_and_trap_unsigned_int<mode>, prefetch): New pattern or expander
17106         definition.
17107         (movmem, clrmem, cmpmem): New splitters added.
17108
17109         * config/s390/predicates.md (larl_operand): Use
17110         SYMBOL_REF_FLAGS (op) & SYMBOL_FLAG_ALIGN1 replaced with
17111         SYMBOL_REF_ALIGN1_P.
17112         (s390_signed_integer_comparison,
17113         s390_unsigned_integer_comparison): New predicates.
17114
17115         * config/s390/s390-protos.h (s390_check_symref_alignment,
17116         s390_contiguous_bitmask_p, s390_reload_larl_operand,
17117         s390_reload_symref_address,
17118         s390_compare_and_branch_condition_mask): Prototypes added.
17119
17120         * config/s390/s390.h (TARGET_MEM_CONSTRAINT,
17121         SYMBOL_REF_ALIGN1_P, SYMBOL_FLAG_NOT_NATURALLY_ALIGNED,
17122         SYMBOL_REF_NOT_NATURALLY_ALIGNED_P): Macro definition added.
17123
17124 2008-05-28  Andreas Krebbel  <krebbel1@de.ibm.com>
17125
17126         * config/s390/s390.c (z10_cost): New cost function for z10.
17127         (s390_handle_arch_option, override_options): Support -march=z10 switch.
17128         (s390_issue_rate): Adjust issue rate for z10.
17129         * config/s390/s390.h (processor_type): Add PROCESSOR_2097_Z10.
17130         (processor_flags): Add PF_Z10.
17131         (TARGET_CPU_Z10, TARGET_Z10): New macro definitions.
17132         * config/s390/s390.md (cpu, cpu_facility attributes): Add z10.
17133         * gcc/config.gcc: Add z10.
17134
17135 2008-05-28  Richard Guenther  <rguenther@suse.de>
17136
17137         PR tree-optimization/36291
17138         * tree-flow. h (struct gimple_df): Remove var_anns member.
17139         * tree-flow-inline.h (gimple_var_anns): Remove.
17140         (var_ann): Simplify.
17141         * tree-dfa.c (create_var_ann): Simplify.
17142         (remove_referenced_var): Clear alias info from var_anns of globals.
17143         * tree-ssa.c (init_tree_ssa): Do not allocate var_anns.
17144         (delete_tree_ssa): Clear alias info from var_anns of globals.
17145         Do not free var_anns.
17146         (var_ann_eq): Remove.
17147         (var_ann_hash): Likewise.
17148
17149 2008-05-28  Mark Shinwell  <shinwell@codesourcery.com>
17150
17151         * config/mips/mips.c (mips_cpu_info_table): Add loongson2e
17152         and loongson2f entries.
17153         (mips_rtx_cost_data): Add entries for Loongson-2E/2F.
17154         * config/mips/mips.h (processor_type): Add Loongson-2E
17155         and Loongson-2F entries.
17156         (TARGET_LOONGSON_2E, TARGET_LOONGSON_2F, TARGET_LOONGSON_2EF): New.
17157         (MIPS_ISA_LEVEL_SPEC): Handle Loongson-2E/2F.
17158         * config/mips/mips.md (define_attr cpu): Add loongson2e and loongson2f.
17159         * doc/invoke.texi (MIPS Options): Document loongson2e
17160         and loongson2f processor names.
17161
17162 2008-05-27  H.J. Lu  <hongjiu.lu@intel.com>
17163
17164         PR target/35767
17165         PR target/35771
17166         * config/i386/i386.c (ix86_function_arg_boundary): Use
17167         alignment of canonical type.
17168         (ix86_expand_vector_move): Check unaligned memory access for
17169         all SSE modes.
17170
17171 2008-05-27  H.J. Lu  <hongjiu.lu@intel.com>
17172
17173         * dwarf2out.c (current_fde): Change return type to dw_fde_ref.
17174         Moved to the front of file.
17175
17176 2008-05-27  Xuepeng Guo  <xuepeng.guo@intel.com>
17177             H.J. Lu  <hongjiu.lu@intel.com>
17178
17179         * dwarf2out.c (current_fde): New.
17180         (add_cfi): Use it.
17181         (lookup_cfa:): Likewise.
17182         (dwarf2out_end_epilogue): Likewise.
17183         (dwarf2out_note_section_used): Likewise.
17184
17185 2008-05-27  Michael Matz  <matz@suse.de>
17186
17187         PR c++/27975
17188         * c.opt (Wenum-compare): New warning option.
17189         * doc/invoke.texi  (Warning Options): Document -Wenum-compare.
17190
17191 2008-05-27  Michael Matz  <matz@suse.de>
17192
17193         PR middle-end/36326
17194         * tree-gimple.c (is_gimple_mem_rhs): Remove work-around for
17195         non-BLKmode types.
17196         * tree-tailcall.c (find_tail_calls): Don't mark calls storing
17197         into memory as tail calls.
17198
17199 2008-05-27  Richard Guenther  <rguenther@suse.de>
17200
17201         PR tree-optimization/36339
17202         * tree-ssa-alias.c (set_initial_properties): Escaped pt_anything
17203         pointers cause all addressable variables to be call clobbered.
17204
17205 2008-05-27  Richard Guenther  <rguenther@suse.de>
17206
17207         PR tree-optimization/36245
17208         * tree-ssa-address.c (add_to_parts): Deal with non-pointer bases.
17209
17210 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
17211
17212         * config/s390/s390.md: Replace all occurences of the 'm'
17213         constraint with 'RT'.
17214
17215 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
17216
17217         * config/s390/s390.md ("cpu_facility", "enabled"): Attribute
17218         definitions added.
17219         ("*movdi_64dfp", "*movdi_64extimm", "*movdi_64"): Merged into
17220         "*movdi_64".
17221         ("*anddi3_extimm", "*anddi3"): Merged into "*anddi3".
17222         ("*iordi3_extimm", "*iordi3"): Merged into "*iordi3".
17223         ("*xordi3_extimm", "*xordi3"): Merged into "*xordi3".
17224
17225 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
17226
17227         * reload.c: (find_reloads): Skip alternatives according to the
17228         "enabled" attribute. Constify the constraint variable.
17229         * recog.c (get_attr_enabled): Add default implementation.
17230         (extract_insn): Set the alternative_enabled_p array
17231         in the recog_data struct.
17232         (preprocess_constraints, constrain_operands): Skip
17233         alternatives according to the "enabled" attribute
17234         * recog.h (struct recog_data): New field alternative_enabled_p.
17235         (skip_alternative): New inline function.
17236         * regclass.c: (record_operand_costs): Check the "enabled" attribute.
17237         (record_reg_classes): Skip alternative according to the
17238         "enabled" attribute.
17239
17240         * doc/md.texi: Add documention for the "enabled" attribute.
17241
17242 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
17243
17244         * defaults.h (TARGET_MEM_CONSTRAINT): New target macro added.
17245         * postreload.c (reload_cse_simplify_operands): Replace 'm'
17246         constraint with TARGET_MEM_CONSTRAINT.
17247         * recog.c (asm_operand_ok, preprocess_constraints,
17248         constrain_operands): Likewise.
17249         * regclass.c (record_reg_classes): Likewise.
17250         * reload.c (find_reloads, alternative_allows_const_pool_ref): Likewise.
17251         * reload1.c (maybe_fix_stack_asms): Likewise.
17252         * stmt.c (parse_output_constraint, parse_input_constraint): Likewise.
17253         * recog.h: Adjust comment.
17254         * genpreds.c (generic_constraint_letters): Remove 'm' constraint.
17255         * genoutput.c (note_constraint): Don't emit error for 'm' constraint.
17256         * doc/md.texi: Add a note to description of 'm' constraint.
17257         * doc/tm.texi: Document the new TARGET_MEM_CONSTRAINT macro.
17258
17259 2008-05-27  Eric Botcazou  <ebotcazou@adacore.com>
17260
17261         * tree-sra.c (sra_type_can_be_decomposed_p) <RECORD_TYPE>: Make sure
17262         that the bitfield is of integral type before testing its precision.
17263
17264 2008-05-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
17265             Sa Liu  <saliu@de.ibm.com>
17266
17267         * config/spu/spu.c (spu_init_libfuncs): Add __multi3, __divti3,
17268         __modti3, __udivti3, __umodti3 and __udivmodti4.
17269         * config/spu/t-spu-elf (LIB2FUNCS_STATIC_EXTRA): Add files
17270         that implement TImode mul and div functions.
17271         * config/spu/multi3.c: New. Implement __multi3.
17272         * config/spu/divmodti4.c: New. Implement _udivmodti4 and others.
17273         * testsuite/gcc.target/spu/muldivti3.c: New. Test TImode mul and div
17274         functions on SPU.
17275
17276 2008-05-26  Steven Bosscher  <stevenb.gcc@gmail.com>
17277
17278         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Generate
17279         new tls_gd_* and tls_ld_* insns instead of an insn sequence.
17280         * config/rs6000/rs6000.md (TLSmode, tls_abi_suffix, tls_insn_suffix,
17281         tls_sysv_suffix): New mode and mode attribute iterators.
17282         (tls_gd_32, tls_gd_64, tls_ld_32, tls_ld_64): Remove.
17283         (lts_gd_aix*, tls_gd_sysv*, tls_ld_aix*, tls_ld_sysv*): New patterns.
17284         (tls_dtprel_*, tls_dtprel_ha_*, tls_dtprel_lo_*, tls_got_dtprel_*,
17285         tls_tprel_*, tls_tprel_ha_*, tls_tprel_lo_*, tls_got_tprel_*,
17286         tls_tls_*): Merge 32 bit and 64 bit variants using aforementioned
17287         iterators.
17288
17289 2008-05-26  Eric Botcazou  <ebotcazou@adacore.com>
17290
17291         PR tree-optimization/36329
17292         * tree.h (CALL_CANNOT_INLINE_P): Add access check.
17293         * tree-gimple.h (CALL_STMT_CANNOT_INLINE_P): New macro.
17294         * cgraphbuild.c (initialize_inline_failed): Use the latter
17295         macro in lieu of the former.
17296         * ipa-inline.c (cgraph_mark_inline): Likewise.
17297         (cgraph_decide_inlining_of_small_function): Likewise.
17298         (cgraph_decide_inlining): Likewise.
17299         (cgraph_decide_inlining_incrementally): Likewise.
17300
17301 2008-05-26  Tristan Gingold  <gingold@adacore.com>
17302             Anatoly Sokolov  <aesok@post.ru>
17303
17304         * config/avr/avr.md ("call_prologue_saves"): Use hi8(gs())/lo8(gs())
17305         instead of pm_lo8/pm_hi8 to makes this call working on avr6.
17306         * config/avr/avr.c (expand_prologue): Tune "call_prologue"
17307         optimization for 'avr6' architecture.
17308
17309 2008-05-26  Andy Hutchinson  <hutchinsonandy@aim.com>
17310
17311         PR target/34932
17312         * config/avr/avr.md (*addhi3_zero_extend2): Remove.
17313
17314 2008-05-26  Richard Guenther  <rguenther@suse.de>
17315
17316         * tree-ssa-sccvn.c (expr_has_constants): Declare.
17317         (visit_reference_op_load): Initialize VN_INFO->has_constants properly.
17318
17319 2008-05-26  H.J. Lu  <hongjiu.lu@intel.com>
17320
17321         PR middle-end/36253
17322         * caller-save.c (insert_restore): Verify alignment of spill space.
17323         (insert_save): Likewise.
17324         * cfgexpand.c (LOCAL_ALIGNMENT): Removed.
17325         * defaults.h (LOCAL_ALIGNMENT): New. Provide default.
17326         (STACK_SLOT_ALIGNMENT): Likewise.
17327         * function.c (LOCAL_ALIGNMENT): Removed.
17328         (get_stack_local_alignment): New.
17329         (assign_stack_local): Use it.  Set alignment on stack slot.
17330         (assign_stack_temp_for_type): Use get_stack_local_alignment.
17331         * config/i386/i386.h (LOCAL_ALIGNMENT): Updated.
17332         (STACK_SLOT_ALIGNMENT): New.
17333         * config/i386/i386.c (ix86_local_alignment): Handle caller-save
17334         stack slot in XFmode.
17335
17336         * doc/tm.texi (STACK_SLOT_ALIGNMENT): New.
17337
17338 2008-05-26  Kai Tietz  <kai.tietz@onevision.com>
17339
17340         PR/36321
17341         * config/i386/i386.md (allocate_stack_worker_64): Make sure
17342         argument operand in rax isn't removed.
17343
17344 2008-05-26  Richard Guenther  <rguenther@suse.de>
17345
17346         PR middle-end/36300
17347         * fold-const.c (extract_muldiv_1): Use TYPE_OVERFLOW_WRAPS,
17348         not TYPE_UNSIGNED.  Use TYPE_PRECISION instead of GET_MODE_SIZE.
17349
17350 2008-05-26  Daniel Franke  <franke.daniel@gmail.com>
17351
17352         PR bootstrap/36331
17353         * c-cppbuiltin.c (define__GNUC__): Re-add definition of __GNUG__.
17354
17355 2008-05-26  Dominique Dhumieres  <dominiq@lps.ens.fr>
17356
17357         * config/darwin-c.c: Include "incpath.h" instead of "c-incpath.h".
17358         * config/t-darwin: Use "incpath.h" instead of "c-incpath.h".
17359
17360 2008-05-25  Eric Botcazou  <ebotcazou@adacore.com>
17361
17362         * tree-nested.c (convert_tramp_reference) <ADDR_EXPR>: Do not
17363         build a trampoline if we don't want one.
17364         * varasm.c (initializer_constant_valid_p) <ADDR_EXPR>: Do not
17365         return zero for nested functions if we don't want a trampoline.
17366
17367 2008-05-26  Daniel Franke  <franke.daniel@gmail.com>
17368
17369         * doc/invoke.texi: Added f77, f77-cpp-input to list of file types.
17370
17371 2008-05-26  Daniel Franke  <franke.daniel@gmail.com>
17372
17373         PR fortran/18428
17374         * c.opt: Removed undocumented option '-lang-fortran'.
17375         * c-common.h: Removed global variable 'lang_fortran'.
17376         * c-opts.c (c_common_handle_option): Removed code to handle
17377         option '-lang-fortran'. Updated includes.
17378         * c-cppbuiltin.c (c_cpp_builtins): Removed conditional
17379         definition of '__GFORTRAN__'.
17380         (define__GNUC__): Reimplemented to use BASEVER and
17381         cpp_define_formatted.
17382         (builtin_define_with_value_n): Removed.
17383         * c-incpath.h: Renamed to ...
17384         * incpath.h: ... this.
17385         * c-incpath.c: Renamed to ...
17386         * incpath.c: ... this. Updated includes.
17387         * fix-header.c: Updated includes.
17388         * Makefile.in: Replaced c-incpath.[ch] by incpath.[ch].
17389         (c-cppbuiltin.o): Added dependency on and definition of BASEVER.
17390         (OBJ-archive): Added cppdefault.o, incpath.o and prefix.o.
17391
17392 2008-05-25  Eric Botcazou  <ebotcazou@adacore.com>
17393
17394         * tree.h: Update the table of flags used on tree nodes.
17395         (TREE_NO_TRAMPOLINE): New accessor for static_flag.
17396         (SAVE_EXPR_RESOLVED_P): Use automatically-built access check.
17397         (FORCED_LABEL): Add access check.
17398         (CALL_EXPR_RETURN_SLOT_OPT): Likewise.
17399         (ASM_INPUT_P): Likewise.
17400         (ASM_VOLATILE_P): Likewise.
17401         (EH_FILTER_MUST_NOT_THROW): Access static_flag directly.
17402         (OMP_SECTION_LAST): Access private_flag directly.
17403         (OMP_RETURN_NOWAIT): Likewise.
17404         (OMP_PARALLEL_COMBINED): Likewise.
17405         (OMP_CLAUSE_PRIVATE_DEBUG): Access public_flag directly.
17406         (OMP_CLAUSE_LASTPRIVATE_FIRSTPRIVATE): Likewise.
17407         * tree-ssa-propagate.c (STMT_IN_SSA_EDGE_WORKLIST): Access
17408         deprecated_flag directly.
17409
17410 2008-05-25  H.J. Lu  <hongjiu.lu@intel.com>
17411
17412         * final.c (frame_pointer_needed): Removed.
17413         * flags.h (frame_pointer_needed): Likewise.
17414
17415         * function.h (rtl_data): Add frame_pointer_needed.
17416         (frame_pointer_needed): New.
17417
17418 2008-05-25  Arthur Loiret  <arthur.loiret@u-psud.fr>
17419
17420         * config.gcc (sh2[lbe]*-*-linux*): Allow target.
17421
17422 2008-05-25  Steven Bosscher  <stevenb.gcc@gmail.com>
17423
17424         * gcse.c (hash_scan_set): Do not pick up a REG_EQUAL value if
17425         SRC is a REG.
17426
17427 2008-05-25  Alan Modra  <amodra@bigpond.net.au>
17428
17429         * c-common.c (strip_array_types): Move function to..
17430         * tree.c: ..here.
17431         (get_inner_array_type): Delete.
17432         * c-common.h (strip_array_types): Move declaration to..
17433         * tree.h: ..here.
17434         (get_inner_array_type): Delete.
17435         * config/i386/i386.c (x86_field_alignment): Use strip_array_types.
17436         * config/rs6000/aix.h (ADJUST_FIELD_ALIGN): Likewise.
17437         * config/rs6000/linux64.h (ADJUST_FIELD_ALIGN): Likewise.
17438         * config/pa/pa.c (emit_move_sequence): Likewise.
17439
17440 2008-05-24  H.J. Lu  <hongjiu.lu@intel.com>
17441
17442         * config/i386/i386.md (*sse_prologue_save_insn): Set length
17443         attribute to 34.
17444
17445 2008-05-24  Andy Hutchinson  <hutchinsonandy@aim.com>
17446
17447         * function.c: Include target hook for nonlocal_goto frame value.
17448
17449 2008-05-24  Richard Guenther  <rguenther@suse.de>
17450
17451         * tree-dfa.c (refs_may_alias_p): Re-instantiate case that a scalar
17452         variable can be only accessed through a pointer or a union.
17453
17454 2008-05-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
17455
17456         * builtins.c (fold_builtin_fpclassify): Fix spelling of FP_INFINITE.
17457         * doc/extend.texi: Likewise.
17458
17459 2008-05-23  DJ Delorie  <dj@redhat.com>
17460
17461         * config/m32c/jump.md (untyped_call): Add.
17462
17463         * config/m32c/m32c.c (m32c_return_addr_rtx): Change pointer type
17464         for A24 to PSImode.
17465         (m32c_address_cost): Detail costs for indirect offsets.
17466
17467 2008-05-23  Rafael Espíndola  <espindola@google.com>
17468
17469         * see.c (see_get_extension_data): Don't use SUBREG_REG to test
17470         if a node is a SUBREG.
17471         (see_analyze_one_def): Don't use SUBREG_REG to test if a node
17472         is a SUBREG.
17473
17474 2008-05-23  Paul Brook  <paul@codesourcery.com>
17475             Carlos O'Donell  <carlos@codesourcery.com>
17476
17477         * doc/extend.texi: Clarify use of __attribute__((naked)).
17478         * doc/tm.texi: Document TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS.
17479         * target.h (gcc_target): Add allocate_stack_slots_for_args.
17480         * function.c (use_register_for_decl): Use
17481         targetm.calls.allocate_stack_slots_for_args.
17482         * target-def.h (TARGET_CALLS): Add TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS.
17483         * config/arm/arm.c (arm_allocate_stack_slots_for_args): New function.
17484         (TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS): Define.
17485
17486 2008-05-23  Eric Botcazou  <ebotcazou@adacore.com>
17487
17488         * expr.c (highest_pow2_factor) <BIT_AND_EXPR>: New case.
17489
17490 2008-05-23  Steven Munroe  <sjmunroe@us.ibm.com>
17491
17492         * config/rs6000/darwin-ldouble.c (fmsub): Eliminate the full
17493         PACK/UNPACK between FP_SUB_Q and FD_TRUNC so that the result
17494         is only rounded once.
17495
17496 2008-05-23  Richard Guenther  <rguenther@suse.de>
17497
17498         * tree-ssa-operands.c (mark_difference_for_renaming): Use bitmap_xor.
17499
17500 2008-05-23  Uros Bizjak  <ubizjak@gmail.com>
17501             Jakub Jelinek  <jakub@redhat.com>
17502
17503         PR target/36079
17504         * configure.ac: Handle --enable-cld.
17505         * configure: Regenerated.
17506         * config.gcc: Add USE_IX86_CLD to tm_defines for x86 targets.
17507         * config/i386/i386.h (struct machine_function): Add needs_cld field.
17508         (ix86_current_function_needs_cld): New define.
17509         * config/i386/i386.md (UNSPEC_CLD): New unspec volatile constant.
17510         (cld): New isns pattern.
17511         (strmov_singleop, rep_mov, strset_singleop, rep_stos, cmpstrnqi_nz_1,
17512         cmpstrnqi_1, strlenqi_1): Set ix86_current_function_needs_cld flag.
17513         * config/i386/i386.opt (mcld): New option.
17514         * config/i386/i386.c (ix86_expand_prologue): Emit cld insn if
17515         TARGET_CLD and ix86_current_function_needs_cld.
17516         (override_options): Use -mcld by default for 32-bit code if
17517         USE_IX86_CLD.
17518
17519         * doc/install.texi (Options specification): Document --enable-cld.
17520         * doc/invoke.texi (Machine Dependent Options)
17521         [i386 and x86-64 Options]: Add -mcld option.
17522         (Intel 386 and AMD x86-64 Options): Document -mcld option.
17523
17524 2008-05-23  Kai Tietz  <kai.tietz@onevison.com>
17525         * config/i386/i386.c (return_in_memory_32): Add ATTRIBUTE_UNUSED.
17526         (return_in_memory_64): Likewise.
17527         (return_in_memory_ms_64): Likewise.
17528
17529 2008-05-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
17530
17531         * builtin-types.def (BT_FN_INT_INT_INT_INT_INT_INT_VAR): New.
17532         * builtins.c (fold_builtin_fpclassify): New.
17533         (fold_builtin_varargs): Handle BUILT_IN_FPCLASSIFY.
17534         * builtins.def (BUILT_IN_FPCLASSIFY): New.
17535         * c-common.c (handle_type_generic_attribute): Adjust to accept
17536         fixed arguments before an elipsis.
17537         (check_builtin_function_arguments): Handle BUILT_IN_FPCLASSIFY.
17538         * doc/extend.texi: Document __builtin_fpclassify.
17539
17540 2008-05-22  Aldy Hernandez  <aldyh@redhat.com>
17541
17542         * omp-low.c (gate_expand_omp_ssa): Remove.
17543         (pass_expand_omp_ssa): Remove.
17544         (gate_expand_omp): Do not check for flag_openmp_ssa.
17545         * common.opt (-fopenmp-ssa): Remove.
17546         * passes.c (init_optimization_passes): Remove pass_expand_omp_ssa.
17547
17548 2008-05-22  Kaz Kojima  <kkojima@gcc.gnu.org>
17549
17550         * config/sh/sh.opt (mfixed-range): New option.
17551         * config/sh/sh-protos.h (sh_fix_range): Declare.
17552         * config/sh/sh.c (sh_fix_range): New function.
17553         * config/sh/sh.h (sh_fixed_range_str): Declare.
17554         (OVERRIDE_OPTIONS): Call sh_fix_range if sh_fixed_range_str
17555         is not empty.
17556         * doc/invoke.texi (SH Options): Document -mfixed-range.
17557
17558 2008-05-22  Kai Tietz  <kai.tietz@onevision.com>
17559
17560         * config/i386/sol2-10.h (SUBTARGET_RETURN_IN_MEMORY): Undefine
17561         it before the redeclaration.
17562
17563 2008-05-22  Anatoly Sokolov <aesok@post.ru>
17564
17565         * config/avr/avr.c (get_sequence_length): Add new function.
17566         (expand_prologue, expand_epilogue): Remove duplicate code.
17567
17568 2008-05-22  Rafael Espíndola  <espindola@google.com>
17569
17570         * see.c (see_pre_insert_extensions): Use copy_rtx to avoid invalid rtx
17571         sharing.
17572
17573 2008-05-22  H.J. Lu  <hongjiu.lu@intel.com>
17574
17575         * defaults.h (UNITS_PER_SIMD_WORD): Add scalar mode as argument.
17576         * doc/tm.texi (UNITS_PER_SIMD_WORD): Likewise.
17577
17578         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Replace
17579         UNITS_PER_SIMD_WORD with GET_MODE_SIZE (TYPE_MODE (vectype)).
17580         (vect_update_misalignment_for_peel): Likewise.
17581         (vector_alignment_reachable_p): Likewise.
17582         * tree-vect-transform.c (vectorizable_load): Likewise.
17583         * tree-vectorizer.c (vect_supportable_dr_alignment): Likewise.
17584         (get_vectype_for_scalar_type): Pass mode of scalar_type
17585         to UNITS_PER_SIMD_WORD.
17586
17587         * config/arm/arm.h (UNITS_PER_SIMD_WORD): Updated.
17588         * config/i386/i386.h (UNITS_PER_SIMD_WORD): Likewise.
17589         * config/mips/mips.h (UNITS_PER_SIMD_WORD): Likewise.
17590         * config/rs6000/rs6000.h (UNITS_PER_SIMD_WORD): Likewise.
17591         * config/sparc/sparc.h (UNITS_PER_SIMD_WORD): Likewise.
17592
17593 2008-05-22  Ira Rosen  <irar@il.ibm.com>
17594
17595         PR tree-optimization/36293
17596         * tree-vect-transform.c (vect_transform_strided_load): Don't check
17597         if the first load must be skipped because of a gap.
17598
17599 2008-05-22  Richard Guenther  <rguenther@suse.de>
17600
17601         * tree-dfa.c (refs_may_alias_p): Exit early if possible.  Handle
17602         more cases of offset disambiguation that is possible if
17603         strict-aliasing rules apply.
17604         * tree-ssa-loop-im.c (mem_refs_may_alias_p): Use refs_may_alias_p
17605         for basic offset and type-based disambiguation.
17606
17607 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
17608
17609         * config/i386/i386.c (ix86_expand_vector_init_one_var): Use
17610         ix86_expand_vector_set on V16QImode for SSE4.1.
17611
17612 2008-05-21  Tom Tromey  <tromey@redhat.com>
17613
17614         * c.opt (Wimport): Mark as undocumented.
17615         * doc/invoke.texi (Option Summary): Don't mention -Wimport or
17616         -Wno-import.
17617         (Warning Options): Likewise.
17618         * doc/cppopts.texi: Don't mention -Wimport.
17619
17620 2008-05-21  Sebastian Pop  <sebastian.pop@amd.com>
17621
17622         PR tree-optimization/36287
17623         PR tree-optimization/36286
17624         * lambda-code.c (build_access_matrix): Do not use the loop->num
17625         for computing the number of induction variables: use the loop depth
17626         instead.
17627
17628 2008-05-21  Kai Tietz  <kai.tietz@onevision.com>
17629
17630         PR/36280
17631         * config/i386/cygming.h (ASM_OUTPUT_LABELREF): Honor
17632         option -f(no-)leading-underscore.
17633
17634 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
17635
17636         * config/i386/i386.c (ix86_expand_vector_init_general): Use
17637         GET_MODE_NUNITS (mode).
17638
17639 2008-05-21  Peter Bergner  <bergner@vnet.ibm.com>
17640
17641         * doc/invoke.texi: Add cpu_type's 464 and 464fp.
17642         (-mmulhw): Add 464 to description.
17643         (-mdlmzb): Likewise.
17644         * config.gcc: Handle --with-cpu=464 and --with-cpu=464fp.
17645         * config/rs6000/rs6000.c (processor_target_table): Add 464 and
17646         464fp entries.
17647         * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add 464 and 464fp support.
17648         * config/rs6000/t-fprules (MULTILIB_MATCHES_FLOAT): Include -mcpu=464.
17649         * config/rs6000/rs6000.md: Update comments for 464.
17650
17651 2008-05-21  Janis Johnson  <janis187@us.ibm.com>
17652
17653         * doc/sourcebuild.texi (Test Directives): Add dg-xfail-run-if.
17654
17655 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
17656
17657         * config/i386/sse.md (vec_extractv4sf): Removed.
17658         (vec_extractv2df): Likewise.
17659         (vec_extractv2di): Likewise.
17660         (vec_extractv4si): Likewise.
17661         (vec_extractv8hi): Likewise.
17662         (vec_extractv16qi): Likewise.
17663         (vec_extract<mode>): New.
17664
17665 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
17666
17667         * config/i386/sse.md (vec_setv4sf): Removed.
17668         (vec_setv2df): Likewise.
17669         (vec_setv2di): Likewise.
17670         (vec_setv4si): Likewise.
17671         (vec_setv8hi): Likewise.
17672         (vec_setv16qi): Likewise.
17673         (vec_set<mode>): New.
17674
17675 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
17676
17677         * config/i386/i386.c (ix86_expand_vector_init_general): Remove
17678         goto for vec_concat and vec_interleave.
17679
17680 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
17681
17682         * config/i386/sse.md (vec_initv4sf): Removed.
17683         (vec_initv2df): Likewise.
17684         (vec_initv2di): Likewise.
17685         (vec_initv4si): Likewise.
17686         (vec_initv8hi): Likewise.
17687         (vec_initv16qi): Likewise.
17688         (vec_init<mode>): New.
17689
17690 2008-05-21  Joseph Myers  <joseph@codesourcery.com>
17691
17692         * collect2.c (find_a_file): Use IS_ABSOLUTE_PATH.
17693
17694 2008-05-21  Tom Tromey  <tromey@redhat.com>
17695
17696         * ggc-zone.c (lookup_page_table_if_allocated): New function.
17697         (zone_find_object_offset): Likewise.
17698         (gt_ggc_m_S): Likewise.
17699         (highest_bit): Likewise.
17700         * ggc-page.c (gt_ggc_m_S): New function.
17701         * stringpool.c (string_stack): Remove.
17702         (init_stringpool): Update.
17703         (ggc_alloc_string): Use ggc_alloc.
17704         (maybe_delete_ident): New function.
17705         (ggc_purge_stringpool): Likewise.
17706         (gt_ggc_m_S): Remove.
17707         * ggc-common.c (ggc_protect_identifiers): New global.
17708         (ggc_mark_roots): Call ggc_purge_stringpool.  Use
17709         ggc_protect_identifiers.
17710         * ggc.h (ggc_protect_identifiers): Declare.
17711         (gt_ggc_m_S): Update.
17712         (ggc_purge_stringpool): Declare.
17713         * toplev.c (compile_file): Set and reset ggc_protect_identifiers.
17714         * gengtype.c (write_types_process_field) <TYPE_STRING>: Remove
17715         special case.
17716         (write_root): Cast gt_ggc_m_S to gt_pointer_walker.
17717
17718 2008-05-21  David S. Miller  <davem@davemloft.net>
17719
17720         * config.gcc (sparc-*-linux*): Always include sparc/t-linux in
17721         tmake_file.
17722
17723 2008-05-21  Eric Botcazou  <ebotcazou@adacore.com>
17724
17725         * cfgexpand.c (tree_expand_cfg): Zap the EH throw statement table
17726         once finished.
17727
17728 2008-05-20  David Daney  <ddaney@avtrex.com>
17729
17730         * config/mips/mips.md (UNSPEC_SYNC_NEW_OP_12,
17731         UNSPEC_SYNC_OLD_OP_12, UNSPEC_SYNC_EXCHANGE_12): New define_constants.
17732         (UNSPEC_SYNC_EXCHANGE, UNSPEC_MEMORY_BARRIER, UNSPEC_SET_GOT_VERSION,
17733         UNSPEC_UPDATE_GOT_VERSION): Renumber.
17734         (optab, insn): Add 'plus' and 'minus' to define_code_attr.
17735         (atomic_hiqi_op): New define_code_iterator.
17736         (sync_compare_and_swap<mode>): Call mips_expand_atomic_qihi instead of
17737         mips_expand_compare_and_swap_12.
17738         (compare_and_swap_12): Use MIPS_COMPARE_AND_SWAP_12 instead of
17739         MIPS_COMPARE_AND_SWAP_12_0.  Pass argument to MIPS_COMPARE_AND_SWAP_12.
17740         (sync_<optab><mode>, sync_old_<optab><mode>,
17741         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
17742         sync_new_nand<mode>): New define_expands for HI and QI mode operands.
17743         (sync_<optab>_12, sync_old_<optab>_12, sync_new_<optab>_12,
17744         sync_nand_12, sync_old_nand_12, sync_new_nand_12): New insns.
17745         (sync_lock_test_and_set<mode>): New define_expand for HI and QI modes.
17746         (test_and_set_12): New insn.
17747         (sync_old_add<mode>, sync_new_add<mode>, sync_old_<optab><mode>,
17748         sync_new_<optab><mode>, sync_old_nand<mode>,
17749         sync_new_nand<mode>, sync_lock_test_and_set<mode>):  Add early
17750         clobber to operand 0 for SI and DI mode insns.
17751         * config/mips/mips-protos.h (mips_gen_fn_6, mips_gen_fn_5,
17752         mips_gen_fn_4): New typedefs.
17753         (mips_gen_fn_ptrs): Define new union type.
17754         (mips_expand_compare_and_swap_12): Remove declaration.
17755         (mips_expand_atomic_qihi): Declare function.
17756         * config/mips/mips.c (mips_expand_compare_and_swap_12): Rename to...
17757         (mips_expand_atomic_qihi): ... this.  Use new generator function
17758         parameter.
17759         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP_12): Add OPS parameter.
17760         (MIPS_COMPARE_AND_SWAP_12_0): Delete macro.
17761         (MIPS_COMPARE_AND_SWAP_12_ZERO_OP, MIPS_COMPARE_AND_SWAP_12_NONZERO_OP,
17762         MIPS_SYNC_OP_12, MIPS_SYNC_OP_12_NOT_NOP,
17763         MIPS_SYNC_OP_12_NOT_NOT, MIPS_SYNC_OLD_OP_12,
17764         MIPS_SYNC_OLD_OP_12_NOT_NOP, MIPS_SYNC_OLD_OP_12_NOT_NOP_REG,
17765         MIPS_SYNC_OLD_OP_12_NOT_NOT, MIPS_SYNC_OLD_OP_12_NOT_NOT_REG,
17766         MIPS_SYNC_NEW_OP_12, MIPS_SYNC_NEW_OP_12_NOT_NOP,
17767         MIPS_SYNC_NEW_OP_12_NOT_NOT, MIPS_SYNC_EXCHANGE_12,
17768         MIPS_SYNC_EXCHANGE_12_ZERO_OP, MIPS_SYNC_EXCHANGE_12_NONZERO_OP):
17769         New macros.
17770
17771 2008-05-20  H.J. Lu  <hongjiu.lu@intel.com>
17772
17773         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Add
17774         the missing break.
17775
17776 2008-05-20  Anatoly Sokolov <aesok@post.ru>
17777
17778         * config/avr/avr.h (machine_function): Add 'is_OS_main' field.
17779         * config/avr/avr.c (avr_OS_main_function_p): Add new function.
17780         (avr_attribute_table): Add 'OS_main' function attribute.
17781         (avr_regs_to_save, expand_prologue, expand_epilogue): Handle
17782         functions with 'OS_main' attribute.
17783
17784 2008-05-20  Richard Guenther  <rguenther@suse.de>
17785
17786         PR tree-optimization/35204
17787         * tree-ssa-sccvn.c (extract_and_process_scc_for_name): New
17788         helper, split out from ...
17789         (DFS): ... here.  Make the DFS walk non-recursive.
17790
17791 2008-05-20  Sebastian Pop  <sebastian.pop@amd.com>
17792             Jan Sjodin  <jan.sjodin@amd.com>
17793
17794         PR tree-optimization/36181
17795         * tree-parloops.c (loop_has_vector_phi_nodes): New.
17796         (parallelize_loops): Don't parallelize when the loop has vector
17797         phi nodes.
17798
17799 2008-05-20  Jan Sjodin  <jan.sjodin@amd.com>
17800             Sebastian Pop  <sebastian.pop@amd.com>
17801
17802         * tree-loop-linear.c (gather_interchange_stats): Look in the access
17803         matrix, and never look at the tree representation of the memory
17804         accesses.
17805         (linear_transform_loops): Computes parameters and access matrices.
17806         * tree-data-ref.c (compute_data_dependences_for_loop): Returns false
17807         when fails.
17808         (access_matrix_get_index_for_parameter): New.
17809         * tree-data-ref.h (struct access_matrix): New.
17810         (AM_LOOP_NEST_NUM, AM_NB_INDUCTION_VARS, AM_PARAMETERS, AM_MATRIX,
17811         AM_NB_PARAMETERS, AM_CONST_COLUMN_INDEX, AM_NB_COLUMNS,
17812         AM_GET_SUBSCRIPT_ACCESS_VECTOR, AM_GET_ACCESS_MATRIX_ELEMENT,
17813         am_vector_index_for_loop): New.
17814         (struct data_reference): Add field access_matrix.
17815         (DR_ACCESS_MATRIX): New.
17816         (compute_data_dependences_for_loop): Update declaration.
17817         (lambda_collect_parameters, lambda_compute_access_matrices): Declared.
17818         * lambda.h (lambda_vector_vec_p): Declared.
17819         * lambda-code.c: Depend on pointer-set.h.
17820         (lambda_collect_parameters_from_af, lambda_collect_parameters,
17821         av_for_af_base, av_for_af, build_access_matrix,
17822         lambda_compute_access_matrices): New.
17823         * Makefile.in (lambda-code.o): Depend on pointer-set.h.
17824
17825 2008-05-20  Joseph Myers  <joseph@codesourcery.com>
17826
17827         * doc/install.texi2html: Generate gcc-vers.texi in $DESTDIR not
17828         $SOURCEDIR/include.
17829
17830 2008-05-20  Jan Sjodin  <jan.sjodin@amd.com>
17831             Sebastian Pop  <sebastian.pop@amd.com>
17832
17833         PR tree-optimization/36206
17834         * tree-scalar-evolution.c: Remove enum INSERT_SUPERLOOP_CHRECS,
17835         FOLD_CONVERSIONS.
17836         (instantiate_scev_1): Rename flags to fold_conversions.
17837         Do not check for INSERT_SUPERLOOP_CHRECS, keep SSA_NAMEs defined
17838         outeside instantiation_loop.
17839         * tree-chrec.h (evolution_function_is_affine_in_loop): New.
17840         (evolution_function_is_affine_or_constant_p): Removed.
17841         * tree-data-ref.c (dr_analyze_indices): Replace resolve_mixers with
17842         instantiate_scev.
17843         (analyze_siv_subscript): Pass in the loop nest number.
17844         Call evolution_function_is_affine_in_loop instead of
17845         evolution_function_is_affine_p.
17846         (analyze_overlapping_iterations): Pass in the loop nest number.
17847
17848 2008-05-20  Jan Sjodin  <jan.sjodin@amd.com>
17849             Sebastian Pop  <sebastian.pop@amd.com>
17850
17851         PR tree-optimization/36206
17852         * tree-chrec.h (chrec_fold_op): New.
17853         * tree-data-ref.c (initialize_matrix_A): Traverse NOP_EXPR, PLUS_EXPR,
17854         and other trees.
17855
17856 2008-05-20  Nathan Sidwell  <nathan@codesourcery.com>
17857
17858         * c-incpath.c (INO_T_EQ): Do not define on non-inode systems.
17859         (DIRS_EQ): New.
17860         (remove_duplicates): Do not set inode on non-inode systems.
17861         Use DIRS_EQ.
17862
17863 2008-05-20  Sandra Loosemore  <sandra@codesourcery.com>
17864
17865         * config.gcc (tm_file): Update comments about relative pathnames.
17866
17867 2008-05-20  Richard Guenther  <rguenther@suse.de>
17868
17869         * tree-ssa-reassoc.c (fini_reassoc): Use the statistics infrastructure.
17870         * tree-ssa-sccvn.c (process_scc): Likewise.
17871         * tree-ssa-sink.c (execute_sink_code): Likewise.
17872         * tree-ssa-threadupdate.c (thread_through_all_blocks): Likewise.
17873         * tree-vrp.c (process_assert_insertions): Likewise.
17874         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Likewise.
17875         (perform_tree_ssa_dce): Likewise.
17876         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Likewise.
17877         (dump_dominator_optimization_stats): Likewise.
17878         * tree-vectorizer.c (vectorize_loops): Likewise.
17879
17880 2008-05-20  Richard Guenther  <rguenther@suse.de>
17881
17882         * tree-vn.c (vn_lookup_with_vuses): Do not use the alias oracle.
17883
17884 2008-05-20  Kai Tietz  <kai.tietz@onevision.com>
17885
17886         * config/i386/i386-protos.h (ix86_return_in_memory): Removed.
17887         (ix86_i386elf_return_in_memory): Likewise.
17888         (ix86_i386interix_return_in_memory): Likewise.
17889         * config/i386/i386-interix.h (TARGET_RETURN_IN_MEMORY): Removed.
17890         (SUBTARGET_RETURN_IN_MEMORY): New.
17891         * config/i386/i386elf.h: Likewise.
17892         * config/i386/ptx4-i.h: Likewise.
17893         * config/i386/sol2-10.h: Likewise.
17894         * config/i386/sysv4.h: Likewise.
17895         * config/i386/vx-common.h: Likewise.
17896         * config/i386/i386.h (TARGET_RETURN_IN_MEMORY): Removed.
17897         * config/i386/i386.c (ix86_return_in_memory): Made static and
17898         make use of optional SUBTARGET_RETURN_IN_MEMORY macro.
17899         (ix86_i386elf_return_in_memory): Removed.
17900         (ix86_i386interix_return_in_memory): Removed.
17901         (TARGET_RETURN_IN_MEMORY): Declared within i386.c only.
17902         * target-def.h (TARGET_RETURN_IN_MEMORY): Remove protection #ifdef.
17903
17904 2008-05-20  Alexandre Oliva  <aoliva@redhat.com>
17905
17906         * cselib.c (cselib_record_sets): Use correct mode for IF_THEN_ELSE.
17907
17908 2008-05-19  Xinliang David Li  <davidxl@google.com>
17909
17910         * tree-ssa-dce.c: Revert patches of 2008-05-17 and 2008-05-18.
17911         * opts.c: Ditto.
17912         * common.opt: Ditto.
17913         * doc/invoke.texi: Ditto.
17914
17915 2008-05-19  Eric Botcazou  <ebotcazou@adacore.com>
17916
17917         * tree.c (substitute_in_expr) <tcc_vl_exp>: Fix thinko.
17918         (substitute_placeholder_in_expr) <tcc_vl_exp>: Minor tweak.
17919
17920 2008-05-19  H.J. Lu  <hongjiu.lu@intel.com>
17921
17922         * config/i386/i386.c (ix86_expand_vector_init_concat): Change
17923         sizes of operand array from 8/4 to 4/2.
17924         (ix86_expand_vector_init_general): Change size of operand array
17925         from 32 to 16.  Remove op0, op1 and half_mode.
17926
17927 2008-05-19  H.J. Lu  <hongjiu.lu@intel.com>
17928
17929         * config/i386/i386.c (ix86_expand_vector_init_concat): New.
17930         (ix86_expand_vector_init_interleave): Likewise.
17931         (ix86_expand_vector_init_general): Use them.  Assert
17932         word_mode == SImode when n_words == 4.
17933
17934 2008-05-19  Uros Bizjak  <ubizjak@gmail.com>
17935
17936         * config/i386/i386.c (ix86_secondary_reload): New static function.
17937         (TARGET_SECONDARY_RELOAD): New define.
17938         * config/i386/i386.h (SECONDARY_OUTPUT_RELOAD_CLASS): Remove.
17939         * config/i386/i386.md (reload_outqi): Remove.
17940
17941 2008-05-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
17942
17943         PR middle-end/35509
17944         * builtins.c (mathfn_built_in_1): Renamed from mathfn_built_in.
17945         Add `implicit' parameter.  Handle BUILT_IN_SIGNBIT.
17946         (mathfn_built_in): Rewrite in terms of mathfn_built_in_1.
17947         (fold_builtin_classify): Handle BUILT_IN_ISINF_SIGN.
17948         (fold_builtin_1): Likewise.
17949         * builtins.def (BUILT_IN_ISINF_SIGN): New.
17950         c-common.c (check_builtin_function_arguments): Handle
17951         BUILT_IN_ISINF_SIGN.
17952         * doc/extend.texi: Document __builtin_isinf_sign.
17953         * fold-const.c (operand_equal_p): Handle COND_EXPR.
17954
17955 2008-05-18  Eric Botcazou  <ebotcazou@adacore.com>
17956
17957         * tree-ssa-dom.c (tree_ssa_dominator_optimize): If some blocks need
17958         EH cleanup at the end of the pass, search for those that have been
17959         turned into forwarder blocks and do the cleanup on their successor.
17960
17961 2008-05-18  Richard Guenther  <rguenther@suse.de>
17962
17963         * tree-cfg.c (verify_gimple_expr): Allow conversions from
17964         pointers to sizetype and vice versa.
17965
17966 2008-05-18 Xinliang David Li   <davidxl@google.com>
17967
17968         * gcc/tree-ssa-dce.c: Coding style fix.
17969         (check_pow): Documentation comment.
17970         (check_log): Documenation comment. Coding style fix.
17971         (is_unnecessary_except_errno_call): Ditto.
17972         (gen_conditions_for_pow): Ditto.
17973         (gen_conditions_for_log): Ditto.
17974         (gen_shrink_wrap_conditions): Ditto.
17975         (shrink_wrap_one_built_in_calls): Ditto.
17976         * gcc/doc/invoke.texi: Better documentation string.
17977         * ChangeLog: Fix wrong change log entries from
17978         May 17 checkin on function call DCE.
17979
17980 2008-05-17  Kaz Kojima  <kkojima@gcc.gnu.org>
17981
17982         * config/sh/sh.c (sh_output_mi_thunk): Update the use of init_flow.
17983
17984 2008-05-17  Kenneth Zadeck <zadeck@naturalbridge.com>
17985
17986         * doc/rtl.texi (RTL_CONST_CALL_P, RTL_PURE_CALL_P): Fixed typos.
17987         * df-problems.c (simulation routines): Fixed block comment to
17988         properly say how to add forwards scanning functions.
17989
17990 2008-05-17  Eric Botcazou  <ebotcazou@adacore.com>
17991
17992         * tree-inline.c (setup_one_parameter): Remove dead code.
17993
17994 2008-05-17  Eric Botcazou  <ebotcazou@adacore.com>
17995
17996         * fold-const.c (fold_unary) <CASE_CONVERT>: Fold the cast into
17997         a BIT_AND_EXPR only for an INTEGER_TYPE.
17998
17999 2008-05-17 Xinliang David Li   <davidxl@google.com>
18000
18001         * gcc/tree-ssa-dce.c (cond_dead_built_in_calls): New static variable.
18002         (check_pow, check_log, is_unnecessary_except_errno_call): New
18003         functions to check for eliminating math functions that are pure
18004         except for setting errno.
18005         (gen_conditions_for_pow, gen_conditionas_for_log): New functions to
18006         general condition expressions for shrink-wrapping pow/log calls.
18007         (gen_shrink_wrap_conditions): Ditto.
18008         (shrink_wrap_one_built_in_call): Ditto.
18009         (shrink_wrap_conditional_dead_built_in_calls): Ditto.
18010         (mark_operand_necessary): If debugging, output if OP is necessary.
18011         (eliminate_unnecessary_stmts): Eliminate pow, log calls that are
18012         unnecessary.
18013         * gcc/opts.c (decode_options): set flag_tree_builtin_dce to 1 when
18014         opt level >= 2.
18015         * gcc/common.opt: New user flag -ftree-builtin-dce.
18016         * gcc/doc/invoke.texi (-ftree-builtin-dce): New option.
18017
18018 2008-05-16  David S. Miller  <davem@davemloft.net>
18019
18020         * config/sparc/linux.h (NO_PROFILE_COUNTERS): Undef before overriding.
18021         * config/sparc/linux64.h (NO_PROFILE_COUNTERS): Likewise.
18022
18023 2008-05-16  Uros Bizjak  <ubizjak@gmail.com>
18024
18025         PR target/36246
18026         * config/i386/i386.h (SECONDARY_MEMORY_NEEDED_MODE): New define.
18027
18028 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
18029
18030         * ifcvt.c (dead_or_predicable): Rename
18031         df_simulate_one_insn_backwards to df_simulate_one_insn.
18032         * recog.c (peephole2_optimize): Ditto.
18033         * rtl-factoring.c (collect_pattern_seqs, clear_regs_live_in_seq):
18034         Ditto.
18035         * df.h: Rename df_simulate_one_insn_backwards to
18036         df_simulate_one_insn.  and delete df_simulate_one_insn_forwards.
18037         * df-problems.c (df_simulate_artificial_refs_at_top) Reversed
18038         scanning of defs and uses.
18039         (df_simulate_one_insn_backwards): Renamed to df_simulate_one_insn.
18040         (df_simulate_one_insn_forwards): Removed.
18041
18042 2008-05-16  Doug Kwan  <dougkwan@google.com>
18043
18044         * real.c (real_to_decimal, real_to_hexadecimal): Distinguish
18045         QNaN & SNaN.
18046         (real_from_string): Handle NaNs and Inf as approriate.
18047
18048 2008-05-16  Nathan Froyd  <froydnj@codesourcery.com>
18049
18050         * doc/gty.texi (Source Files Containing Type Information): Note
18051         that headers should appear first in the gtfiles list.
18052
18053 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
18054
18055         * tree.def (COND_EXEC): Properly documented this code.
18056
18057 2008-05-16  Diego Novillo  <dnovillo@google.com>
18058
18059         * dwarf2asm.c (dw2_assemble_integer): Clarify comment.
18060         * tree-nested.c (get_trampoline_type): Set DECL_CONTEXT for
18061         the new field.
18062
18063 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
18064
18065         * tree-ssa-dse (max_stmt_uid): Removed.
18066         (get_stmt_uid, dse_possible_dead_store_p, dse_optimize_stmt,
18067         tree_ssa_dse): Encapsulate all uses of stmt_ann->uid.
18068         * tree-ssa-sccvn.c (compare_ops, init_scc_vn): Ditto.
18069         * function.h (cfun.last_stmt_uid): New field.
18070         * tree-flow-inline.h (set_gimple_stmt_uid, gimple_stmt_uid,
18071         gimple_stmt_max_uid, set_gimple_stmt_max_uid, inc_gimple_stmt_max_uid):
18072         New functions.
18073         * tree-dfa.c (renumber_gimple_stmt_uids): New function.
18074         (create_stmt_ann): Initialize the ann->uid field.
18075         * tree-ssa-pre.c (compute_avail): Encapsulate the stmt_ann->uid
18076         with new calls.
18077         * tree-flow.h (renumber_gimple_stmt_uids): New function.
18078
18079 2008-05-16  Nathan Froyd  <froydnj@codesourcery.com>
18080
18081         * tree-flow.h (init_empty_tree_cfg_for_function): Declare.
18082         * tree-cfg.c (init_empty_tree_cfg_for_function): Define.
18083         (init_empty_tree_cfg): Call it.
18084
18085 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
18086
18087         * cfg.c (init_flow): Add argument THE_FUN.  Use it instead of cfun.
18088         Update all users.
18089
18090 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
18091
18092         * doc/invoke.text (-fdump-tree-*-verbose): New option.
18093         * tree-dump.c (dump_options): New verbose option.
18094         * tree-pretty-print.c (dump_phi_nodes, dump_generic_bb_buff):
18095         Add verbose dump.
18096         * tree-pass.h (TDF_VERBOSE): New dump flag.
18097         * print-tree.c (print_node): Added code to be able to print PHI_NODES.
18098         (tree-flow.h): Added include.
18099         * Makefile.in (print-tree.o):  Added TREE_FLOW_H.
18100
18101 2008-05-16  Bernd Schmidt  <bernd.schmidt@analog.com>
18102
18103         * config/bfin/bfin.c (bfin_discover_loops): Delete empty loops.
18104
18105         From Jie Zhang  <jie.zhang@analog.com>
18106         * config/bfin/t-bfin-elf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
18107         MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Remove mcpu=bf532-0.3,
18108         mcpu=bf561-none and mcpu=bf561-0.2.
18109         * config/bfin/t-bfin-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
18110         MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Likewise.
18111         * config/bfin/t-bfin-linux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
18112         MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Likewise.
18113         * config/bfin/bfin-protos.h (enum bfin_cpu_type): Add BFIN_CPU_UNKNOWN.
18114         * config/bfin/elf.h (STARTFILE_SPEC): Use specific CRT for BF561.
18115         (LIB_SPEC): Use proper linker script for bf561.  Error if no mcpu
18116         option.
18117         * config/bfin/bfin.c (bfin_cpu_type): Set to BFIN_CPU_UNKNOWN.
18118         (cputype_selected): Remove.
18119         (bfin_handle_option): Don't use cputype_selected.
18120         (override_options): When no mcpu option, enable all workarounds.
18121         Don't use bfin_workarounds.
18122         * config/bfin/bfin.h (DRIVER_SELF_SPECS): Don't set default
18123         processor type.
18124         (DEFAULT_CPU_TYPE): Don't define.
18125
18126 2008-05-16  Richard Guenther  <rguenther@suse.de>
18127
18128         * tree-ssa-propagate.c (substitute_and_fold): Fix stmt walking
18129         on deletion of the last stmt.
18130
18131 2008-05-15  H.J. Lu  <hongjiu.lu@intel.com>
18132
18133         * config/i386/i386.c (ix86_expand_vector_init_general): Optimize
18134         V8HImode for SSE2 and V16QImode for SSE4.1.
18135
18136 2008-05-15  Kenneth Zadeck <zadeck@naturalbridge.com>
18137
18138         * cgraph.h (compute_inline_parameters): Made public.
18139         * tree-pass.h (ipa_opt_pass): Removed function_generate_summary,
18140         variable_generate_summary, function_write_summary,
18141         variable_write_summary, variable_read_summary.  Added generate_summary,
18142         write_summary, read_summary.
18143         * cgraphunit.c (cgraph_process_new_functions): Changed call from
18144         pass_ipa_inline.function_generate_summary, to
18145         compute_inline_parameters.
18146         * ipa-inline.c (compute_inline_parameters): Made public and added
18147         node parameter.
18148         (compute_inline_parameters_for_current): New function.
18149         (pass_inline_param): Now calls compute_inline_parameters_for_current.
18150         (inline_generate_summary): Removed parameter and made to loop over
18151         all cgraph nodes.
18152         (pass_ipa_inline): Updated for new IPA_PASS structure.
18153         * passes.c (execute_ipa_summary_passes): Now is called once per
18154         pass rather than once per node*pass.
18155
18156 2008-05-15  Anatoly Sokolov <aesok@post.ru>
18157
18158         * config/avr/avr.c (avr_base_arch_macro, avr_have_movw_lpmx_p,
18159         avr_have_mul_p, avr_asm_only_p): Remove variables.
18160         (avr_override_options): Remove initialization of removed variables.
18161         (avr_file_start):  Convert removed variables to fields of
18162         'struct base_arch_s *avr_current_arch'.
18163         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): (Ditto.).
18164         (AVR_HAVE_MUL): (Ditto.).
18165         (AVR_HAVE_MOVW): (Ditto.).
18166         (AVR_HAVE_LPMX): (Ditto.).
18167         (avr_base_arch_macro, avr_have_movw_lpmx_p, avr_have_mul_p,
18168         avr_asm_only_p): Remove declaration.
18169
18170 2008-05-15  Diego Novillo  <dnovillo@google.com>
18171
18172         * config/arm/arm.c (arm_return_in_memory): Fix return type.
18173         * config/arm/arm-protos.h (arm_return_in_memory): Likewise.
18174
18175 2008-05-15  Adam Nemet  <anemet@caviumnetworks.com>
18176
18177         PR middle-end/36194
18178         * combine.c (check_conversion): Rename back to check_promoted_subreg.
18179         Don't call record_truncated_value from here.
18180         (record_truncated_value): Turn it into a for_each_rtx callback.
18181         (record_truncated_values): New function.
18182         (combine_instructions): Call note_uses with record_truncated_values.
18183         Change name of check_conversion to check_promoted_subreg.
18184
18185 2008-05-15  Janis Johnson  <janis187@us.ibm.com>
18186
18187         * doc/sourcebuild.texi: Document support for torture tests.
18188
18189 2008-05-15  Uros Bizjak  <ubizjak@gmail.com>
18190
18191         * config/i386/sse.md (*vec_concatv2sf_sse4_1): Add "m" constraint
18192         to alternative 4 of operand 2.
18193
18194 2008-05-15  Richard Guenther  <rguenther@suse.de>
18195
18196         * tree-pass.h (current_pass): Declare.
18197         (get_pass_for_id): Likewise.
18198         * passes.c (passes_by_id, passes_by_id_size): New globals.
18199         (set_pass_for_id): New function.
18200         (get_pass_for_id): Likewise.
18201         (register_one_dump_file): Use set_pass_for_id to populate passes_by_id.
18202         (execute_function_todo): Flush per function statistics.
18203         * toplev.c (compile_file): Init statistics.
18204         (general_init): Do early statistics initialization.
18205         (finalize): Finish statistics.
18206         * statistics.h (statistics_early_init): Declare.
18207         (statistics_init): Likewise.
18208         (statistics_fini): Likewise.
18209         (statistics_fini_pass): Likewise.
18210         (statistics_counter_event): Likewise.
18211         (statistics_histogram_event): Likewise.
18212         * statistics.c: New file.
18213         * Makefile.in (OBJS-common): Add statistics.o.
18214         (statistics.o): Add dependencies.
18215         * doc/invoke.texi (-fdump-statistics): Document.
18216
18217         * tree-ssa-pre.c (compute_antic): Use statistics_histogram_event.
18218         (insert): Likewise.
18219         (execute_pre): Use statistics_counter_event.
18220         * tree-ssa-propagate.c (struct prop_stats_d): Add num_dce field.
18221         (substitute_and_fold): Increment it.  Use statistics_counter_event.
18222
18223 2008-05-15  Diego Novillo  <dnovillo@google.com>
18224
18225         http://gcc.gnu.org/ml/gcc-patches/2008-05/msg00893.html
18226
18227         * treestruct.def (TS_STRUCT_FIELD_TAG): Remove.
18228         * tree-ssa-alias.c (new_type_alias): Remove references to
18229         sub-variables from comment.
18230         * tree-ssa-operands.c (swap_tree_operands): Likewise.
18231
18232 2008-05-15  H.J. Lu  <hongjiu.lu@intel.com>
18233
18234         * config/i386/sse.md (*vec_concatv2sf_sse4_1): Set prefix_extra
18235         attribute to 1 only for insertps alternative.
18236
18237 2008-05-15  Bernd Schmidt  <bernd.schmidt@analog.com>
18238
18239         * config/bfin/bfin.md (loadbytes): New pattern.
18240         * config/bfin/bfin.c (enum bfin_builtins): Add BFIN_BUILTIN_LOADBYTES.
18241         (bfin_init_builtins): Initialize it.
18242         (bdesc_1arg): Add it.
18243
18244 2008-05-15  Sa Liu  <saliu@de.ibm.com>
18245
18246         * testsuite/gfortran.dg/c_kind_int128_test1.f03: New.
18247         * testsuite/gfortran.dg/c_kind_int128_test2.f03: New.
18248         * testsuite/lib/target-supports.exp: Add
18249         check_effective_target_fortran_integer_16.
18250
18251 2008-05-15  Bernd Schmidt  <bernd.schmidt@analog.com>
18252
18253         * config/bfin/bfin.h (TARGET_RETURN_IN_MEMORY): Don't define here.
18254         * config/bfin/bfin-protos.h (bfin_return_in_memory): Don't declare.
18255         * config/bfin/bfin.c (bfin_return_in_memory): Now static.  Return bool.
18256         (TARGET_RETURN_IN_MEMORY): Define.
18257
18258 2008-05-15  Richard Guenther  <rguenther@suse.de>
18259
18260         PR middle-end/36244
18261         * tree-ssa-alias.c (new_type_alias): Do not set TREE_READONLY.
18262         * tree-flow-inline.h (unmodifiable_var_p): Memory tags never
18263         represent unmodifiable vars.
18264
18265 2008-05-15  Richard Guenther  <rguenther@suse.de>
18266
18267         * tree-dfa.c (refs_may_alias_p): Allow all kinds of
18268         INDIRECT_REF and TARGET_MEM_REF.
18269         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle
18270         TARGET_MEM_REF.
18271
18272 2008-05-15  Uros Bizjak  <ubizjak@gmail.com>
18273             H.J. Lu  <hongjiu.lu@intel.com>
18274
18275         * config/i386/sse.md (*vec_concatv2sf_sse4_1): New insn pattern.
18276         (*vec_concatv2si_sse4_1): Use vector_move_operand predicate
18277         for operand 2.  Remove pinsr{q,d} with 0x0 immediate operand from
18278         insn alternatives.  Add missing alternatives.
18279         (*vec_concatv2di_rex64_sse4_1): Likewise.
18280         (*vec_concatv2si_sse2): Use "x" register constraint instead of "Y2".
18281         (*vec_concatv2di_rex64_sse): Rename from *vec_concatv2di_rex64.
18282         Require TARGET_SSE.
18283
18284 2008-05-15  Richard Guenther  <rguenther@suse.de>
18285
18286         PR tree-optimization/36009
18287         PR tree-optimization/36204
18288         * tree-ssa-loop-im.c (tree-ssa-propagate.h): Include.
18289         (determine_invariantness_stmt): Record the loop a store is
18290         always executed in.
18291         * Makefile.in (tree-ssa-loop-im.o): Add tree-ssa-propagate.h
18292         dependency.
18293
18294 2008-05-15  Richard Guenther  <rguenther@suse.de>
18295
18296         PR tree-optimization/34330
18297         * tree-ssa-alias.c (get_smt_for): Only assert that accesses
18298         through the pointer will alias the SMT.
18299
18300 2008-05-14  Andreas Tobler  <a.tobler@schweiz.org>
18301
18302         * config/sparc/sparc.h (NO_PROFILE_COUNTERS): Define as 0.
18303
18304 2008-05-14  H.J. Lu  <hongjiu.lu@intel.com>
18305
18306         * config/i386/sse.md (*sse4_1_pinsrq): Make it 64bit only.
18307
18308 2008-05-14  Michael Meissner  <michael.meissner@amd.com>
18309             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
18310
18311         * optabs.h (optab_index): Add OTI_vashl, OTI_vlshr, OTI_vashr,
18312         OTI_vrotl, OTI_vrotr to support vector/vector shifts.
18313         (vashl_optab): New optab for vector/vector shifts.
18314         (vashr_optab): Ditto.
18315         (vlshr_optab): Ditto.
18316         (vrotl_optab): Ditto.
18317         (vrotr_optab): Ditto.
18318         (optab_subtype): New enum for optab_for_tree_code call.
18319         (optab_for_tree_code): Add enum optab_subtype argument.
18320
18321         * optabs.c (optab_for_tree_code): Take an additional argument to
18322         distinguish between a vector shift by a scalar and vector shift by
18323         a vector.  Make lshr/ashr/ashl/rotl/rotr optabs just vector
18324         shifted by a scalar.  Use vlshr/vashr/vashl/vrotl/vrotr for the
18325         vector shift by a vector.
18326         (expand_widen_pattern_expr): Pass additional argument to
18327         optab_for_tree_code.
18328
18329         * genopinit.c (optabs): Add vashr_optab, vashl_optab, vlshr_optab,
18330         vrotl_optab, vrotr_optab.
18331
18332         * expr.c (expand_expr_real_1): Update calls to
18333         optab_for_tree_code to distinguish between vector shifted by a
18334         scalar and vector shifted by a vector.
18335         * tree-vectorizer.c (supportable_widening_operation): Ditto.
18336         (supportable_narrowing_operation): Ditto.
18337         * tree-vect-analyze.c (vect_build_slp_tree): Ditto.
18338         * tree-vect-patterns.c (vect_pattern_recog_1): Ditto.
18339         * tree-vect-transform.c (vect_model_reduction_cost): Ditto.
18340         (vect_create_epilog_for_reduction): Ditto.
18341         (vectorizable_reduction): Ditto.
18342         (vectorizable_operation): Ditto.
18343         (vect_strided_store_supported): Ditto.
18344         (vect_strided_load_supported): Ditto.
18345         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
18346         * expmed.c (expand_shift): Ditto.
18347
18348         * doc/md.texi (ashl@var{m}3): Document that operand 2 is always a
18349         scalar type.
18350         (ashr@var{m}3): Ditto.
18351         (vashl@var{m}3): Document new vector/vector shift standard name.
18352         (vashr@var{m}3): Ditto.
18353         (vlshr@var{m}3): Ditto.
18354         (vrotl@var{m}3): Ditto.
18355         (vrotr@var{m}3): Ditto.
18356
18357         * config/i386/i386.md (PPERM_SRC): Move PPERM masks here from i386.c.
18358         (PPERM_INVERT): Ditto.
18359         (PPERM_REVERSE): Ditto.
18360         (PPERM_REV_INV): Ditto.
18361         (PPERM_ZERO): Ditto.
18362         (PPERM_ONES): Ditto.
18363         (PPERM_SIGN): Ditto.
18364         (PPERM_INV_SIGN): Ditto.
18365         (PPERM_SRC1): Ditto.
18366         (PPERM_SRC2): Ditto.
18367
18368         * config/i386/sse.md (mulv2di3): Add SSE5 support.
18369         (sse5_pmacsdql_mem): New SSE5 define_and_split that temporarily
18370         allows a memory operand to be the value being added, and split it
18371         to improve vectorization.
18372         (sse5_pmacsdqh_mem): Ditto.
18373         (sse5_mulv2div2di3_low): SSE5 32-bit multiply and extend function.
18374         (sse5_mulv2div2di3_high): Ditto.
18375         (vec_pack_trunc_v8hi): Add SSE5 pperm support.
18376         (vec_pack_trunc_v4si): Ditto.
18377         (vec_pack_trunc_v2di): Ditto.
18378         (sse5_pcmov_<mode>): Remove code that tried to use use
18379         andps/andnps instead of pcmov.
18380         (vec_widen_smult_hi_v4si): If we have SSE5, use the pmacsdql and
18381         pmacsdqh instructions.
18382         (vec_widen_smult_lo_v4si): Ditto.
18383
18384         * config/i386/i386.c (PPERM_SRC): Move PPERM masks to i386.md.
18385         (PPERM_INVERT): Ditto.
18386         (PPERM_REVERSE): Ditto.
18387         (PPERM_REV_INV): Ditto.
18388         (PPERM_ZERO): Ditto.
18389         (PPERM_ONES): Ditto.
18390         (PPERM_SIGN): Ditto.
18391         (PPERM_INV_SIGN): Ditto.
18392         (PPERM_SRC1): Ditto.
18393         (PPERM_SRC2): Ditto.
18394         (ix86_expand_sse_movcc): Move the SSE5 test after the if
18395         true/false tests.
18396         (ix86_expand_int_vcond): If SSE5 generate all possible integer
18397         comparisons.
18398         (ix86_sse5_valid_op_p): Allow num_memory to be negative, which
18399         says ignore whether the last reference is a memory operand.
18400
18401 2008-05-14  Michael Meissner  <michael.meissner@amd.com>
18402             Paolo Bonzini <bonzini at gnu dot org>
18403
18404         * config/rs6000/rs6000.c (bdesc_2arg): Change the names of vector
18405         shift patterns.
18406
18407         * config/rs6000/altivec.md (vashl<mode>3): Rename from ashl<mode>3.
18408         (vlshr<mode>3): Rename from vlshr<mode>3.
18409         (vashr<mode>3): Rename from vashr<mode>3.
18410         (mulv4sf3): Change the names of vector shift patterns.
18411         (mulv4si3): Ditto.
18412         (negv4sf2): Ditt.
18413
18414         * config/spu/spu.c (spu_initialize_trampoline): Rename vector
18415         shift insns.
18416
18417         * config/spu/spu-builtins.def (SI_SHLH): Rename vector shift insns.
18418         (SI_SHLHI): Ditto.
18419         (SI_SHL): Ditto.
18420         (SI_SHLI): Ditto.
18421         (SI_ROTH): Ditto.
18422         (SI_ROTHI): Ditto.
18423         (SI_ROT): Ditto.
18424         (SI_ROTI): Ditto.
18425         (SPU_RL_0): Ditto.
18426         (SPU_RL_1): Ditto.
18427         (SPU_RL_2): Ditto.
18428         (SPU_RL_3): Ditto.
18429         (SPU_RL_4): Ditto.
18430         (SPU_RL_5): Ditto.
18431         (SPU_RL_6): Ditto.
18432         (SPU_RL_7): Ditto.
18433         (SPU_SL_0): Ditto.
18434         (SPU_SL_1): Ditto.
18435         (SPU_SL_2): Ditto.
18436         (SPU_SL_3): Ditto.
18437         (SPU_SL_4): Ditto.
18438         (SPU_SL_5): Ditto.
18439         (SPU_SL_6): Ditto.
18440         (SPU_SL_7): Ditto.
18441
18442         * config/spu/spu.md (v): New iterator macro to add v for vector types.
18443         (floatunssidf2_internal): Change vector/vector shift names.
18444         (floatunsdidf2_internal): Ditto.
18445         (mulv8hi3): Ditto.
18446         (ashrdi3): Ditto.
18447         (ashrti3): Ditto.
18448         (cgt_df): Ditto.
18449         (cgt_v2df): Ditto.
18450         (dftsv): Ditto.
18451         (vashl<mode>3): Rename from ashl<mode>3.
18452         (vashr<mode>3): Rename from ashr<mode>3.
18453         (vlshr<mode>3): Rename from lshr<mode>3.
18454         (vrotl<mode>3): Rename from rotl<mode>3.
18455
18456 2008-05-14  Michael Meissner  <michael.meissner@amd.com>
18457
18458         PR target/36224
18459         * config/i386/sse.md (vec_widen_smult_hi_v4si): Delete, using unsigned
18460         multiply gives the wrong value when doing widening multiplies.
18461         (vec_widen_smult_lo_v4si): Ditto.
18462
18463 2008-05-14  Kenneth Zadeck <zadeck@naturalbridge.com>
18464
18465         * optabs.c (prepare_cmp_insn): Changed LCT_PURE_MAKE_BLOCK to
18466         LCT_PURE and LCT_CONST_MAKE_BLOCK to LCT_CONST in calls to
18467         emit_library_call_value.
18468         * builtins.c (expand_builtin_powi, expand_builtin_memcmp): Ditto.
18469         * tree.h (ECF_LIBCALL_BLOCK): Removed.
18470         * calls.c (initialize_argument_information, precompute_arguments,
18471         expand_call, emit_library_call_value_1): Remove ECF_LIBCALL_BLOCK.
18472         (precompute_arguments): Removed flags parameter.
18473         * rtl.h (LCT_CONST_MAKE_BLOCK, LCT_PURE_MAKE_BLOCK): Removed.
18474
18475 2008-05-14  Richard Guenther  <rguenther@suse.de>
18476
18477         * tree-ssa-dse.c (dse_possible_dead_store_p): Remove dead code.
18478         Make sure to register the store if the use is a PHI_NODE.
18479
18480 2008-05-14  Olivier Hainque  <hainque@adacore.com>
18481
18482         * expr.c (expand_expr_real_1) <normal_inner_ref>: Force op0 to
18483         memory if the component is to be referenced in BLKmode according
18484         to get_inner_reference.
18485
18486 2008-05-14  Adam Nemet  <anemet@caviumnetworks.com>
18487
18488         * calls.c (emit_library_call_value_1): Restore code clearing
18489         ECF_LIBCALL_BLOCK to ensure that we only call end_sequence once.
18490
18491 2008-05-14  Olivier Hainque  <hainque@adacore.com>
18492             Nicolas Roche  <roche@adacore.com>
18493
18494         * configure.ac: Add support for a "gcc_subdir" variable in
18495         config-lang.in, to denote a subdirectory where the language/GCC
18496         integration files are to be found.
18497         * configure: Regenerate.
18498
18499 2008-05-14  Ira Rosen  <irar@il.ibm.com>
18500
18501         PR tree-optimization/36098
18502         * tree-vect-analyze.c (vect_analyze_group_access): Set the gap
18503         value for the first load in the group in case of a gap.
18504         (vect_build_slp_tree): Check that there are no gaps in loads.
18505
18506 2008-05-14  Kenneth Zadeck <zadeck@naturalbridge.com>
18507
18508         * doc/rtl.texi: Removed reference to REG_NO_CONFLICT notes.
18509         * optabs.c (expand_binop, expand_absneg_bit, expand_unop,
18510         expand_copysign_bit, ): Change call to emit_no_conflict_block to
18511         emit_insn and remove unneeded code to construct extra args.
18512         (emit_no_conflict_block): Removed.
18513         * optabls.h: (emit_no_conflict_block): Removed.
18514         * cse.c (cse_extended_basic_block): Remove search for
18515         REG_NO_CONFLICT note.
18516         * global.c: Removed incorrect comment added in revision 117.
18517         * expr.c (convert_move): Change call to emit_no_conflict_block to
18518         emit_insn.
18519         * recog.c: Change comments so that they do not mention
18520         REG_NO_CONFLICT.
18521         * local_alloc.c (combine_regs): Removed last parameter.
18522         (no_conflict_p): Removed.
18523         (block_alloc): Removed note, no_conflict_combined_regno and set
18524         local vars. Removed all code to process REG_NO_CONFLICT blocks.
18525         (combine_regs): Removed already_dead and code to look for
18526         REG_NO_CONFLICT notes.
18527         * lower_subreg (remove_retval_note): Removed code to look for
18528         REG_NO_CONFLICT block.
18529         (resolve_reg_notes): Removed REG_NO_CONFLICT case.
18530         (resolve_clobber): Remove code to process libcalls that have
18531         REG_NO_CONFLICT notes.
18532         * loop_invariant.c (find_invariant_insn): Removed REG_NO_CONFLICT
18533         case.
18534         * combine.c (can_combine_p, distribute_notes):  Removed
18535         REG_NO_CONFLICT case.
18536         * config/cris/cris.md (movdi pattern): Changed emit_no_conflict_block
18537         to emit_insns.
18538         * config/mn10300/mn10300.md (absdf2, negdf2 patterns): Ditto.
18539         * config/m68k/m68k.md (negdf2, negxf2, absdf2, absxf2 patterns):
18540         Ditto.
18541         * reg-notes.def (NO_CONFLICT): Removed.
18542
18543 2008-05-14  David S. Miller  <davem@davemloft.net>
18544
18545         * config/sparc/sparc.c (sparc_profile_hook): If
18546         NO_PROFILE_COUNTERS, don't generate and pass a label into mcount.
18547         * config/sparc/linux.h (NO_PROFILE_COUNTERS): Define as 1.
18548         * config/sparc/linux64.h (NO_PROFILE_COUNTERS): Likewise.
18549
18550 2008-05-14  Andreas Krebbel  <krebbel1@de.ibm.com>
18551
18552         * cse.c (cse_cc_succs): Invoke delete_insn_and_edges.
18553
18554 2008-05-13  Uros Bizjak  <ubizjak@gmail.com>
18555
18556         PR target/36222
18557         * config/i386/i386.c (ix86_expand_vector_init_general): Rearrange op0
18558         and op1 expansion before vector concat to have less live pseudos.
18559
18560 2008-05-13  H.J. Lu  <hongjiu.lu@intel.com>
18561
18562         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Use
18563         ix86_expand_vector_set if supported.
18564
18565 2008-05-13  Diego Novillo  <dnovillo@google.com>
18566             Kenneth Zadeck  <zadeck@naturalbridge.com>
18567
18568         http://gcc.gnu.org/ml/gcc-patches/2008-05/msg00748.html
18569
18570         * tree.h (init_phinodes, fini_phinodes, release_phi_node,
18571         phinodes_print_statistics, init_ssanames, fini_ssanames,
18572         make_ssa_name, duplicate_ssa_name, duplicate_ssa_name_ptr_info,
18573         release_ssa_name, release_defs, replace_ssa_name_symbol,
18574         ssanames_print_statistics): Move ...
18575         * tree-flow.h: ... here.
18576         * tree-ssanames.c (init_ssanames): Add arguments FN and SIZE.
18577         Use FN instead of cfun.
18578         (make_ssa_name_fn): Rename from make_ssa_name.
18579         (pass_release_ssa_names): Add TODO_dump_func to finish flags.
18580         * tree-flow-inline.h (make_ssa_name): Move from
18581         tree-ssanames.c.  Convert to static inline.  Call make_ssa_name_fn.
18582         * omp-low.c (expand_omp_parallel):
18583         * tree-flow-inline.h (redirect_edge_var_map_result):
18584         * tree-ssa.c (init_tree_ssa): Add argument FN.
18585         Use it instead of cfun.  Update all users.
18586
18587 2008-05-13  Tom Tromey  <tromey@redhat.com>
18588
18589         PR preprocessor/22168:
18590         * doc/cpp.texi (Top): Update menu.
18591         (Alternatives to Wrapper #ifndef): New node.
18592         (Other Directives): Document deprecation.
18593         (Obsolete Features): Remove menu.
18594         (Assertions): Merge node into Obsolete Features.
18595         (Obsolete once-only headers): Move earlier; rename to Alternatives
18596         to Wrapper #ifndef.
18597         * doc/cppopts.texi: Update.
18598         * c.opt (Wdeprecated): Enable for C and ObjC.
18599         * doc/invoke.texi (Option Summary): Move -Wno-deprecated.
18600         (C++ Dialect Options): Move -Wno-deprecated from here to...
18601         (Warning Options): ... here.
18602
18603 2008-05-13  Richard Guenther  <rguenther@suse.de>
18604
18605         PR middle-end/36227
18606         * fold-const.c (fold_sign_changed_comparison): Do not allow
18607         changes in pointer-ness.
18608
18609 2008-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
18610
18611         PR target/24713
18612         * config/sh/sh.c (sh_expand_prologue): Don't clear
18613         RTX_FRAME_RELATED_P for push insns.
18614
18615 2008-05-12  Andy Hutchinson  <hutchinsonandy@aim.com>
18616
18617         * config/avr/avr.h (MAX_OFILE_ALIGNMENT): Define.
18618
18619 2008-05-12  Anatoly Sokolov <aesok@post.ru>
18620
18621         * config/avr/avr.h (machine_function): Add 'is_leaf' field.
18622         * config/avr/avr.c (avr_regs_to_save): Compute 'machine->is_leaf'.
18623         Use 'machine->is_leaf' instead of 'leaf_func_p'.
18624
18625 2008-05-12  H.J. Lu  <hongjiu.lu@intel.com>
18626
18627         * config/i386/sse.md (*sse_concatv4sf): Renamed to ...
18628         (*vec_concatv4sf_sse): This.
18629         (*sse2_concatv2si): Renamed to ...
18630         (*vec_concatv2si_sse2): This.
18631         (*sse1_concatv2si): Renamed to ...
18632         (*vec_concatv2si_sse): This.
18633         (*vec_concatv2di_rex): Renamed to ...
18634         (*vec_concatv2di_rex64): This.
18635         (*vec_concatv2si_sse4_1): New.
18636         (*vec_concatv2di_rex64_sse4_1): Likewise.
18637
18638 2008-05-12  Uros Bizjak  <ubizjak@gmail.com>
18639
18640         PR rtl-optimization/36111
18641         * recog.c (validate_replace_rtx_1): Unshare new RTL expression
18642         that was created for swappable operands.
18643
18644 2008-05-12  Samuel Tardieu  <sam@rfc1149.net>
18645
18646         PR ada/36001
18647         * Makefile.in: Substitute GNATMAKE and GNATBIND.
18648         * configure.ac: Add call to ACX_PROG_GNAT.
18649
18650 2008-05-11  Volker Reichelt  <v.reichelt@netcologne.de>
18651
18652         * optc-gen.awk: Fix comment typo.
18653
18654 2008-05-11  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
18655
18656         * pretty-print.c (pp_integer_with_precision): Use
18657         HOST_LONG_LONG_FORMAT.
18658
18659 2008-05-10  Kenneth Zadeck  <zadeck@naturalbridge.com>
18660
18661         * gcse.c (store_killed_in_insn): Negated call to RTL_CONST_CALL_P.
18662
18663 2008-05-10  H.J. Lu  <hongjiu.lu@intel.com>
18664
18665         * config/i386/i386.c (bdesc_ptest): Removed.
18666         (ix86_builtin_type): Add INT_FTYPE_V2DI_V2DI_PTEST.
18667         (bdesc_args): Add __builtin_ia32_ptestz128,
18668         __builtin_ia32_ptestc128 and __builtin_ia32_ptestnzc128.
18669         (ix86_init_mmx_sse_builtins): Updated.
18670         (ix86_expand_args_builtin): Handle INT_FTYPE_V2DI_V2DI_PTEST.
18671         (ix86_expand_builtin): Updated.
18672
18673 2008-05-10  Richard Sandiford  <rdsandiford@googlemail.com>
18674
18675         * tree-cfg.c (valid_fixed_convert_types_p): New function.
18676         (verify_gimple_expr): Handle FIXED_CONVERT_EXPR.
18677
18678 2008-05-10  Uros Bizjak  <ubizjak@gmail.com>
18679
18680         * value-prof.c (interesting_stringop_to_profile): Do not
18681         return early for BUILT_IN_MEMPCPY.
18682
18683 2008-05-09  H.J. Lu  <hongjiu.lu@intel.com>
18684
18685         * calls.c (expand_call): Don't use callgraph to increase
18686         preferred_stack_boundary.
18687
18688         * cgraph.h (cgraph_rtl_info): Use unsigned on
18689         preferred_incoming_stack_boundary.
18690
18691         * final.c (rest_of_clean_state): Use unsigned on
18692         preferred_stack_boundary.
18693
18694 2008-05-09  Tom Tromey  <tromey@redhat.com>
18695
18696         PR preprocessor/22231:
18697         * c-opts.c (sanitize_cpp_opts): Disallow -MG if compilation is
18698         proceeding.
18699
18700 2008-05-09  Uros Bizjak  <ubizjak@gmail.com>
18701
18702         PR tree-optimization/36129
18703         * tree-ssa-ccp.c: Include value-prof.h.
18704         (execute_fold_all_builtins): Call gimple_remove_stmt_histograms if
18705         built-in function was folded to a constant.
18706         * Makefile.in (tree-ssa-ccp.c): Depend on value-prof.h
18707
18708 2008-05-09  Jan Sjodin  <jan.sjodin@amd.com>
18709             Sebastian Pop  <sebastian.pop@amd.com>
18710
18711         * tree-scalar-evolution.c: Document instantiate_scev.
18712         (instantiate_parameters_1): Renamed instantiate_scev_1.
18713         Don't use the same loop for instantiation_loop and evolution_loop.
18714         (instantiate_scev): New.
18715         (instantiate_parameters): Moved...
18716         (resolve_mixers): Update call to instantiate_scev_1 to pass the
18717         same loop twice.  Maintains the semantics for this function.
18718         * tree-scalar-evolution.h (instantiate_scev): Declare.
18719         (instantiate_parameters): ...here.  Now static inline.
18720         * tree-data-ref.c (dr_analyze_indices): Call instantiate_scev
18721         instead of resolve_mixers.
18722
18723 2008-05-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
18724
18725         * rtl-factoring.c (collect_pattern_seqs): Fix typo.
18726
18727 2008-05-09  Tomas Bily  <tbily@suse.cz>
18728
18729         * config/pa/pa.c (reloc_needed): Use CASE_CONVERT.
18730         * tree-cfg.c (verify_expr, verify_gimple_expr): Likewise.
18731         * tree-ssa-structalias.c (get_constraint_for): Likewise.
18732         * c-common.c (c_common_truthvalue_conversion): Likewise.
18733         * tree-object-size.c (compute_object_offset): Likewise.
18734         * tree-inline.c (estimate_num_insns_1): Likewise.
18735         * varasm.c (const_hash_1, compare_constant, copy_constant)
18736         (compute_reloc_for_constant, output_addressed_constants)
18737         (initializer_constant_valid_p): Likewise.
18738         * c-omp.c (check_omp_for_incr_expr): Likewise.
18739         * gimplify.c (gimplify_expr): Likewise.
18740         * c-typeck.c (c_finish_return): Likewise.
18741         * tree-vectorizer.c (supportable_widening_operation)
18742         (supportable_narrowing_operation): Likewise.
18743         * c-pretty-print.c (pp_c_cast_expression, pp_c_expression): Likewise.
18744         * matrix-reorg.c (can_calculate_expr_before_stmt): Likewise.
18745         * expr.c (highest_pow2_factor, expand_expr_real_1): Likewise.
18746         * dwarf2out.c (loc_descriptor_from_tree_1, add_bound_info)
18747         (descr_info_loc): Likewise.
18748         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Likewise.
18749         * fold-const.c (operand_equal_p, make_range, extract_muldiv_1)
18750         (fold_unary): Likewise.
18751         * builtins.c (get_pointer_alignment): Likewise.
18752         * tree-scalar-evolution.c (interpret_rhs_modify_stmt)
18753         (instantiate_parameters_1): Likewise.
18754         * tree.c (expr_align, stabilize_reference): Likewise.
18755         * tree-pretty-print.c (dump_generic_node, op_prio): Likewise.
18756         * tree-ssa-loop-niter.c (derive_constant_upper_bound): Likewise.
18757         * convert.c (strip_float_extensions): Use CONVERT_EXPR_P.
18758         * tree-ssa-threadedge.c (simplify_control_stmt_condition): Likewise.
18759         * config/alpha/alpha.c (va_list_skip_additions): Likewise.
18760         * c-common.c (c_alignof_expr, check_function_arguments_recurse):
18761         Likewise.
18762         * tree-ssa.c (tree_ssa_useless_type_conversion): Likewise.
18763         * varasm.c (initializer_constant_valid_p, output_constant): Likewise.
18764         * tree-ssa-forwprop.c (get_prop_source_stmt, can_propagate_from)
18765         (forward_propagate_addr_expr_1, forward_propagate_addr_expr)
18766         (forward_propagate_comparison)
18767         (tree_ssa_forward_propagate_single_use_vars): Likewise.
18768         * cfgexpand.c (discover_nonconstant_array_refs_r): Likewise.
18769         * emit-rtl.c (component_ref_for_mem_expr)
18770         (set_mem_attributes_minus_bitpos): Likewise.
18771         * tree-ssa-phiopt.c (conditional_replacement): Likewise.
18772         * gimplify.c (gimplify_conversion, goa_lhs_expr_p, gimplify_expr):
18773         Likewise.
18774         * c-typeck.c (default_function_array_conversion, build_indirect_ref)
18775         (build_function_call, pointer_diff, build_compound_expr)
18776         (c_finish_return): Likewise.
18777         * tree-vect-analyze.c (vect_determine_vectorization_factor): Likewise.
18778         * matrix-reorg.c (get_inner_of_cast_expr, may_flatten_matrices_1):
18779         Likewise.
18780         * tree-ssa-ifcombine.c (recognize_single_bit_test): Likewise.
18781         * expr.c (is_aligning_offset): Likewise.
18782         * tree-ssa-alias.c (is_escape_site): Likewise.
18783         * tree-stdarg.c (va_list_counter_bump, check_va_list_escapes)
18784         (check_all_va_list_escapes): Likewise.
18785         * tree-ssa-loop-ivopts.c (determine_base_object)
18786         (determine_common_wider_type): Likewise.
18787         * dojump.c (do_jump): Likewise.
18788         * tree-ssa-sccvn.c (simplify_unary_expression): Likewise.
18789         * tree-gimple.c (is_gimple_cast): Likewise.
18790         * fold-const.c (decode_field_reference, )
18791         (fold_sign_changed_comparison, fold_unary, fold_comparison)
18792         (fold_binary): Likewise.
18793         * tree-ssa-alias-warnings.c (find_alias_site_helper)
18794         (already_warned_in_frontend_p): Likewise.
18795         * builtins.c (get_memory_rtx, fold_builtin_next_arg): Likewise.
18796         * tree.c (really_constant_p, get_unwidened): Likewise.
18797         * tree-ssa-loop-niter.c (expand_simple_operations): Likewise.
18798         * tree-ssa-loop-im.c (rewrite_bittest): Likewise.
18799         * tree-vrp.c (register_edge_assert_for_2, register_edge_assert_for_1):
18800         Likewise.
18801         * tree.h (STRIP_NOPS, STRIP_SIGN_NOPS, STRIP_TYPE_NOPS): Use
18802         CONVERT_EXPR_P.
18803         (CONVERT_EXPR_P): Define.
18804         (CASE_CONVERT): Define.
18805
18806 2008-05-08  Kenneth Zadeck  <zadeck@naturalbridge.com>
18807
18808         PR middle-end/36117
18809         * dce.c (deletable_insn_p): Do not delete calls if df_in_progress.
18810         (delete_unmarked_insns): When deleting a call, call
18811         delete_unreachable_blocks.
18812         * rtl.texi (RTL_CONST_CALL_P, RTL_PURE_CALL_P,
18813         RTL_CONST_OR_PURE_CALL_P, RTL_LOOPING_CONST_OR_PURE_CALL_P): Fixed doc.
18814
18815 2008-05-08  Richard Guenther  <rguenther@suse.de>
18816
18817         * doc/invoke.texi (-fdump-tree-salias): Remove documentation.
18818         (-ftree-salias): Likewise.
18819         (salias-max-implicit-fields): Remove param documentation.
18820         (salias-max-array-elements): Likewise.
18821         * tree-pass.h (pass_create_structure_vars): Remove.
18822         * params.h (SALIAS_MAX_IMPLICIT_FIELDS): Remove.
18823         (SALIAS_MAX_ARRAY_ELEMENTS): Likewise.
18824         * tree-ssa-alias.c (create_structure_vars): Remove.
18825         (gate_structure_vars): Likewise.
18826         (pass_create_structure_vars): Likewise.
18827         (gate_build_alias): Likewise.
18828         (pass_build_alias): Adjust to run always and dump the function.
18829         * common.opt (ftree-salias): Hide.
18830         * passes.c (init_optimization_passes): Remove
18831         pass_create_structure_vars, adjust comment.
18832         * params.def (PARAM_SALIAS_MAX_IMPLICIT_FIELDS): Remove.
18833         (PARAM_SALIAS_MAX_ARRAY_ELEMENTS): Likewise.
18834         * opts.c (decode_options): Do not set flag_tree_salias.
18835         (common_handle_option): Add OPT_ftree_salias to the backward
18836         compatibility section.
18837
18838 2008-05-08  Richard Guenther  <rguenther@suse.de>
18839
18840         * tree-flow-inline.h (var_can_have_subvars): Move ...
18841         * tree-ssa-structalias.c (var_can_have_subvars): ... here.
18842         * tree-flow.h (var_can_have_subvars): Remove.
18843         (push_fields_onto_fieldstack): Remove.
18844         (sort_fieldstack): Likewise.
18845         (struct fieldoff): Move ...
18846         * tree-ssa-structalias.c (struct fieldoff): ... here.  Remove
18847         alias_set and base_for_components fields.
18848         (sort_fieldstack): Make static.
18849         (push_fields_onto_fieldstack): Likewise.  Remove code that
18850         handles anything but RECORD_TYPEs.  Remove alias_set and
18851         base_for_components handling.
18852         (create_variable_info_for): Adjust.
18853
18854 2008-05-08  Seongbae Park  <seongbae.park@gmail.com>
18855
18856         * common.opt (Wframe-larger-than=): Shorten the help message
18857         to one line.
18858         * doc/invoke.texi (Wframe-larger-than=): Add more description.
18859
18860 2008-05-08  Rafael Espíndola  <espindola@google.com>
18861
18862         * tree-complex.c (expand_complex_div_wide): Don't create CONDs that
18863         trap.
18864         * tree-gimple.c (is_gimple_condexpr): Check that the expression doesn't
18865         trap and that both operands are gimple values.
18866         (canonicalize_cond_expr_cond): Use is_gimple_condexpr.
18867         * gcc/tree-eh.c (tree_could_trap_p): Correctly detect if a comparison
18868         is a fp operation.
18869
18870 2008-05-08  Richard Sandiford  <rsandifo@nildram.co.uk>
18871
18872         * read-rtl.c (join_c_conditions): Return the first string if the
18873         two strings are equal.
18874
18875 2008-05-08  Richard Sandiford  <rsandifo@nildram.co.uk>
18876
18877         * gensupport.h (pred_data): Add a "num_codes" field.
18878         (add_predicate_code): Declare.
18879         * gensupport.c (add_predicate_code): New function.
18880         (std_pred_table): Add an "allows_const_p" field.
18881         (std_preds): Set this field for predicates that allow RTX_CONST_OBJs.
18882         Remove the (incomplete) list of such codes from the codes field.
18883         (init_predicate_table): Use add_predicate_code.  Add all
18884         RTX_CONST_OBJs if allows_const_p is true.
18885         * genrecog.c (process_define_predicate): Use add_predicate_code.
18886
18887 2008-05-08  David Daney  <ddaney@avtrex.com>
18888             Richard Sandiford  <rsandifo@nildram.co.uk>
18889
18890         * config/mips/mips.md (mips_expand_compare_and_swap_12): Handle
18891         special case of constant zero operands.
18892         * config/mips/mips.c (mips_expand_compare_and_swap_12): Zero extend
18893         old and new values.  Special case constant zero values.
18894         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP): Skip 'sync' if compare
18895         fails.
18896         (MIPS_COMPARE_AND_SWAP_12): Handle constant zero operands.
18897         (MIPS_COMPARE_AND_SWAP_12_0): New macro.
18898
18899 2008-05-08  Paolo Bonzini  <bonzini@gnu.org>
18900
18901         PR target/36090
18902         * simplify-rtx.c (simplify_plus_minus): Create CONST of
18903         similar RTX_CONST_OBJ before CONST_INT.
18904
18905 2008-05-08  Steve Ellcey  <sje@cup.hp.com>
18906
18907         * stmt.c (expand_stack_restore): Change sa mode if needed.
18908
18909 2008-05-08  Richard Guenther  <rguenther@suse.de>
18910
18911         * config/i386/i386-protos.h (ix86_return_in_memory): Adjust
18912         return type to bool.
18913         (ix86_sol10_return_in_memory): Likewise.
18914         (ix86_i386elf_return_in_memory): Likewise.
18915         (ix86_i386interix_return_in_memory): Likewise.
18916         * config/i386/i386.c (ix86_return_in_memory): Likewise.
18917         (ix86_sol10_return_in_memory): Likewise.
18918         (ix86_i386elf_return_in_memory): Likewise.
18919         (ix86_i386interix_return_in_memory): Likewise.
18920
18921 2008-05-08  Kai Tietz  <kai.tietz@onevision.com>
18922
18923         PR bootstrap/36180
18924         * calls.c (compute_argument_block_size ): Add ATTRIBUTE_UNUSED to
18925         fndecl argument.
18926         (emit_library_call_value_1): Add ATTRIBUTE_UNUSED to variable fndecl.
18927         * target-def.h: Check that TARGET_RETURN_IN_MEMORY isn't
18928         declared in front.
18929
18930 2008-05-08  Richard Guenther  <rguenther@suse.de>
18931
18932         * tree-data-ref.c (dr_analyze_alias): Do not set DR_SUBVARS.
18933         * tree-data-ref.h (struct dr_alias): Remove subvars field.
18934         (DR_SUBVARS): Remove.
18935         * tree-dfa.c (dump_subvars_for): Remove.
18936         (debug_subvars_for): Likewise.
18937         (dump_variable): Do not dump subvars.
18938         (remove_referenced_var): Do not remove subvars.
18939         * tree-flow-inline.h (clear_call_clobbered): SFTs no longer exist.
18940         (lookup_subvars_for_var): Remove.
18941         (get_subvars_for_var): Likewise.
18942         (get_subvars_at): Likewise.
18943         (get_first_overlapping_subvar): Likewise.
18944         (overlap_subvar): Likewise.
18945         * tree-flow.h (subvar_t): Remove.
18946         (struct var_ann_d): Remove subvars field.
18947         * tree-ssa-alias.c (mark_aliases_call_clobbered): Remove queued
18948         argument.  Remove special handling of SFTs.
18949         (compute_tag_properties): Likewise.
18950         (set_initial_properties): Likewise.
18951         (compute_call_clobbered): Likewise.
18952         (count_mem_refs): Likewise.
18953         (compute_memory_partitions): Likewise.
18954         (compute_flow_insensitive_aliasing): Likewise.
18955         (setup_pointers_and_addressables): Likewise.
18956         (new_type_alias): Likewise.
18957         (struct used_part): Remove.
18958         (used_portions): Likewise.
18959         (struct used_part_map): Likewise.
18960         (used_part_map_eq): Likewise.
18961         (used_part_map_hash): Likewise.
18962         (free_used_part_map): Likewise.
18963         (up_lookup): Likewise.
18964         (up_insert): Likewise.
18965         (get_or_create_used_part_for): Likewise.
18966         (create_sft): Likewise.
18967         (create_overlap_variables_for): Likewise.
18968         (find_used_portions): Likewise.
18969         (create_structure_vars): Likewise.
18970         * tree.def (STRUCT_FIELD_TAG): Remove.
18971         * tree.h (MTAG_P): Adjust.
18972         (struct tree_memory_tag): Remove base_for_components and
18973         unpartitionable flags.
18974         (struct tree_struct_field_tag): Remove.
18975         (SFT_PARENT_VAR): Likewise.
18976         (SFT_OFFSET): Likewise.
18977         (SFT_SIZE): Likewise.
18978         (SFT_NONADDRESSABLE_P): Likewise.
18979         (SFT_ALIAS_SET): Likewise.
18980         (SFT_UNPARTITIONABLE_P): Likewise.
18981         (SFT_BASE_FOR_COMPONENTS_P): Likewise.
18982         (union tree_node): Remove sft field.
18983         * alias.c (get_alias_set): Remove special handling of SFTs.
18984         * print-tree.c (print_node): Remove handling of SFTs.
18985         * tree-dump.c (dequeue_and_dump): Likewise.
18986         * tree-into-ssa.c (mark_sym_for_renaming): Likewise.
18987         * tree-nrv.c (dest_safe_for_nrv_p): Remove special handling of SFTs.
18988         * tree-predcom.c (set_alias_info): Do not set subvars.
18989         * tree-pretty-print.c (dump_generic_node): Do not handle SFTs.
18990         * tree-ssa-loop-ivopts.c (get_ref_tag): Likewise.
18991         * tree-ssa-operands.c (access_can_touch_variable): Likewise.
18992         (add_vars_for_offset): Remove.
18993         (add_virtual_operand): Remove special handling of SFTs.
18994         (add_call_clobber_ops): Likewise.
18995         (add_call_read_ops): Likewise.
18996         (get_asm_expr_operands): Likewise.
18997         (get_modify_stmt_operands): Likewise.
18998         (get_expr_operands): Likewise.
18999         (add_to_addressable_set): Likewise.
19000         * tree-ssa.c (verify_ssa_name): Do not handle SFTs.
19001         * tree-tailcall.c (suitable_for_tail_opt_p): Likewise.
19002         * tree-vect-transform.c (vect_create_data_ref_ptr): Do not set subvars.
19003         * tree.c (init_ttree): Remove STRUCT_FIELD_TAG initialization.
19004         (tree_code_size): Remove STRUCT_FIELD_TAG handling.
19005         (tree_node_structure): Likewise.
19006         * tree-ssa-structalias.c (set_uids_in_ptset): Remove special
19007         handling of SFTs.
19008         (find_what_p_points_to): Likewise.
19009
19010 2008-05-08  Sa Liu  <saliu@de.ibm.com>
19011
19012         * config/spu/spu.md: Fixed subti3 pattern.
19013
19014 2008-05-08  Richard Guenther  <rguenther@suse.de>
19015
19016         PR middle-end/36154
19017         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Make
19018         sure to create a representative for trailing arrays for PTA.
19019
19020 2008-05-08  Richard Guenther  <rguenther@suse.de>
19021
19022         PR middle-end/36172
19023         * fold-const.c (operand_equal_p): Two objects which types
19024         differ in pointerness are not equal.
19025
19026 2008-05-08  Kai Tietz  <kai.tietz@onevision.com>
19027
19028         * calls.c (compute_argument_block_size): Add argument tree fndecl.
19029         (OUTGOING_REG_PARM_STACK_SPACE): Add function type argument.
19030         (emit_library_call_value_1): Add new variable fndecl initialized by
19031         NULL_TREE. It should be the decl type of orgfun, but this information
19032         seems not to be available here, so it uses the default calling abi.
19033         * config/arm/arm.c (arm_return_in_memory): Add fntype argumen.
19034         * config/arm/arm.h (RETURN_IN_MEMORY): Replace RETURN_IN_MEMORY
19035         by TARGET_RETURN_IN_MEMORY.
19036         * config/i386/i386-interix.h: Likewise.
19037         * config/i386/i386.h: Likewise.
19038         * config/i386/i386elf.h: Likewise.
19039         * config/i386/ptx4-i.h: Likewise.
19040         * config/i386/sol2-10.h: Likewise.
19041         * config/i386/sysv4.h: Likewise.
19042         * config/i386/vx-common.h: Likewise.
19043         * config/cris/cris.h: Removed #if 0 clause.
19044         * config/arm/arm-protos.h (arm_return_in_memory): Add fntype argument.
19045         * config/i386/i386-protos.h (ix86_return_in_memory): Add fntype
19046         argument.
19047         (ix86_sol10_return_in_memory): Likewise.
19048         (ix86_i386elf_return_in_memory): New.
19049         (ix86_i386interix_return_in_memory): New.
19050         * config/mt/mt-protos.h (mt_return_in_memory): New.
19051         * config/mt/mt.c: Likewise.
19052         * config/mt/mt.h (OUTGOING_REG_PARM_STACK_SPACE): Add FNTYPE argument.
19053         (RETURN_IN_MEMORY):  Replace by TARGET_RETURN_IN_MEMORY.
19054         * config/bfin/bfin.h: Likewise.
19055         * config/bfin/bfin-protos.h (bfin_return_in_memory): Add fntype
19056         argument.
19057         * config/bfin/bfin.c: Likewise.
19058         * config/pa/pa.h (OUTGOING_REG_PARM_STACK_SPACE): Add FNTYPE argument.
19059         * config/alpha/unicosmk.h: Likewise.
19060         * config/i386/cygming.h: Likewise.
19061         * config/iq2000/iq2000.h: Likewise.
19062         * config/mips/mips.h: Likewise.
19063         * config/mn10300/mn10300.h: Likewise.
19064         * config/rs6000/rs6000.h: Likewise.
19065         * config/score/score.h: Likewise.
19066         * config/spu/spu.h: Likewise.
19067         * config/v850/v850.h: Likewise.
19068         * defaults.h: Likewise.
19069         * doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Adjust documentation.
19070         * expr.c (emit_block_move): Adjust use of
19071         OUTGOING_REG_PARM_STACK_SPACE.
19072         * function.c (STACK_DYNAMIC_OFFSET): Adjust use of
19073         OUTGOING_REG_PARM_STACK_SPACE.
19074         * targhooks.c (default_return_in_memory): Remove RETURN_IN_MEMORY.
19075
19076 2008-05-08  Jakub Jelinek  <jakub@redhat.com>
19077
19078         * tree-parloops.c (create_parallel_loop): Set OMP_RETURN_NOWAIT
19079         on OMP_RETURN for OMP_FOR.
19080
19081         PR debug/35896
19082         * dwarf2out.c (dw_expand_expr, common_check): Removed.
19083         (fortran_common): New function.
19084         (gen_variable_die): Call fortran_common instead of common_check,
19085         adjust for it returning tree instead of rtx.  Formatting.
19086
19087 2008-05-07  Kenneth Zadeck  <zadeck@naturalbridge.com>
19088
19089         PR rtl/7335
19090         PR rtl/33826
19091         * see.c (see_copy_insn): Copy new pure const attributes for new call.
19092         * c-decl.c (merge_decls): Ditto.
19093         * postreload.c (record_opr_changes): Change CONST_OR_PURE_CALL_P
19094         to RTL_CONST_OR_PURE_CALL_P.
19095         * tree.c (define_local_buitin): Rename DECL_IS_PURE to DECL_PURE_P.
19096         Initialized DECL_LOOPING_CONST_PURE.
19097         (process_call_operands): Set tree_side_effects properly.
19098         * tree.h (TREE_READONLY_DECL_P): Removed.
19099         (DECL_IS_PURE): Renamed to DECL_PURE_P.
19100         (DECL_LOOPING_OR_CONST_P): New macro.
19101         (struct tree_function_decl): Added looping_const_or_pure_p.
19102         (ECF_*) Renumbered.
19103         (ECF_LOOPING_OR_CONST_P): New macro.
19104         * rtlanal.c (pure_const_p): Removed.
19105         * builtins.c (expand_builtin): Rename DECL_IS_PURE to DECL_PURE_P.
19106         * reorg.c (delete_prior_computation) Changed CONST_OR_PURE_CALL_P
19107         to RTL_CONST_CALL_P.
19108         * ipa-pure-const.c (pure_const_state_e): Added looping field.
19109         (check_decl, check_tree, check_call, scan_function): Initialize
19110         looping.
19111         (analyze_function): Rename DECL_IS_PURE to DECL_PURE_P.
19112         (static_execute): Set looping true for recursive functions.
19113         Undo setting state to IPA_NEITHER for recursive functions.
19114         * cse.c (cse_insn):
19115         * ifcvt.c (noce_can_store_speculate_p): Changed
19116         CONST_OR_PURE_CALL_P and pure_call_p to RTL_CONST_CALL_P or
19117         RTL_CONST_OR_PURE_CALL_P.
19118         * dse.c (scan_insn): Ditto.
19119         * local-alloc.c (validate_equiv_mem, memref_used_between_p): Ditto.
19120         * gcse.c (oprs_not_seen_p) Changed CONST_OR_PURE_CALL_P to
19121         RTL_CONST_OR_PURE_CALL_P.
19122         (store_killed_in_insn): Changed CONST_OR_PURE_CALL_P and
19123         pure_call_p to RTL_CONST_CALL_P.
19124         * gimplify.c (gimplify_call_expr): Clear side effects for
19125         non-looping pure and constant calls.
19126         * calls.c (emit_call_1): Set rtl flags from ecf flags.
19127         (flags_from_decl_or_type): Set ecf flags from decl flags.
19128         (initialize_argument_information): Turn off
19129         ECF_LOOPING_CONST_OR_PURE when turning off ECF_CONST.
19130         Change const to pure if callee_copies is true rather than just
19131         turning off const.
19132         (expand_call): Turn off ECF_LOOPING_PURE_CONST_CALL and remove old
19133         way of marking pure calls.
19134         (emit_library_call_value_1): Turn off ECF_LOOPING_PURE_CONST_CALL.
19135         Remove hack that was supposed to fix pr7335 and remove old
19136         way of marking pure calls.
19137         * emit-rtl.c (emit_copy_of_insn_after): Copy RTL_CONST_CALL_P,
19138         RTL_PURE_CALL_P, RTL_LOOPING_CONST_OR_PURE_CALL_P.
19139         * cselib.c (cselib_process_insn): Changed CONST_OR_PURE_CALL_P to
19140         RTL_CONST_OR_PURE_CALL_P.
19141         * tree-ssa-pre.c (can_value_number_call): Fixed spacing.
19142         * loop-invariant.c (find_exits, find_invariant_bb): Changed
19143         CONST_OR_PURE_CALL_P to RTL_CONST_OR_PURE_CALL_P.
19144         * sched-deps.c (schedule_analyze): Ditto.
19145         * rtl.h (struct rtx_def): Use call field, unchanging field, and
19146         return_val field of calls to represent pure and const function info.
19147         (CONST_OR_PURE_CALL_P): Deleted macro.
19148         (RTL_CONST_CALL_P, RTL_PURE_CALL_P,
19149         RTL_LOOPING_CONST_OR_PURE_CALL_P, RTL_CONST_OR_PURE_P): New macros.
19150         * tree-inline.c (copy_body_r): Changed TREE_READONLY_DECL_P to
19151         TREE_READONLY.
19152         * tree-optimize.c (execute_fixup_cfg): Added test for
19153         ECF_LOOPING_CONST_OR_PURE.
19154         * c-common.c (handle_pure_attribute): Changed DECL_IS_PURE to
19155         DECL_PURE_P.
19156         * tree-cfg.c (update_call_expr_flags): Do not clear tree side
19157         effects for looping pure or const calls.
19158         (verify_gimple_expr): Added verification code.
19159         * config/alpha/alpha.c (alpha_legitimize_address,
19160         alpha_emit_xfloating_libcall): Changed CONST_OR_PURE_CALL_P to
19161         RTL_CONST_CALL_P.
19162         * config/s390/s390.c (s390_emit_tls_call_insn): Ditto.
19163         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Ditto.
19164         * config/mips/mips.c (mips_call_tls_get_addr): Ditto.
19165         * cfgrtl.c (need_fake_edge_p): Changed CONST_OR_PURE_CALL_P to
19166         RTL_CONST_OR_PURE_CALL_P.
19167         * dce.c (deletable_insn_p): Allow non looping, non sibling, pure
19168         and const calls to be deleted.
19169
19170 2008-05-07  Uros Bizjak  <ubizjak@gmail.com>
19171
19172         PR target/35714
19173         * config/i386/mmx.md (mmx_subv2sf3): New expander.
19174         (*mmx_subv2sf3): Rename from mmx_subv2sf3 insn pattern.
19175         (*mmx_eqv2sf3): Rename from mmx_eqv2sf3 insn pattern.
19176         (mmx_eqv2sf3): New expander.  Use ix86_fixup_binary_operands_no_copy
19177         to handle nonimmediate operands.
19178         (*mmx_paddwd): Rename from mmx_paddwd insn pattern.
19179         (mmx_paddwd): New expander.  Use ix86_fixup_binary_operands_no_copy
19180         to handle nonimmediate operands.
19181         (*mmx_pmulhrwv4hi3): Rename from mmx_pmulhrwv4hi3 insn pattern.
19182         (mmx_pmulhrwv4hi3): New expander.  Use
19183         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19184         (*sse2_umulv1siv1di3): Rename from sse2_umulv1siv1di3 insn pattern.
19185         (sse2_umulv1siv1di3): New expander.  Use
19186         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19187         (*mmx_eq<mode>3): Rename from mmx_eq<mode>3 insn pattern.
19188         (mmx_eq<mode>3): New expander.  Use
19189         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19190         (*mmx_uavgv8qi3): Rename from mmx_uavgv8qi3 insn pattern.
19191         (mmx_uavgv8qi3): New expander.  Use
19192         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19193         (*mmx_uavgv4hi3): Rename from mmx_uavgv4hi3 insn pattern.
19194         (mmx_uavgv4hi3): New expander.  Use
19195         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19196
19197         * config/i386/sse.md
19198         (sse_movhlps_exp): New expander.  Use ix86_fixup_binary_operands
19199         to handle nonimmediate operands.
19200         (sse_movlhps_exp): New expander.  Use ix86_fixup_binary_operands
19201         to handle nonimmediate operands.
19202         (sse_loadhps_exp): New expander.  Use ix86_fixup_binary_operands
19203         to handle nonimmediate operands.
19204         (sse_loadlps_exp): New expander.  Use ix86_fixup_binary_operands
19205         to handle nonimmediate operands.
19206         (sse2_unpckhpd_exp): New expander.  Use
19207         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19208         (sse2_unpcklpd_exp): New expander.  Use
19209         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19210         (sse_loadhpd_exp): New expander.  Use ix86_fixup_binary_operands
19211         to handle nonimmediate operands.
19212         (sse_loadlpd): New expander.  Use ix86_fixup_binary_operands
19213         to handle nonimmediate operands.
19214         (*sse2_<plusminus_insn><mode>3): Rename from
19215         sse2_<plusminus_insn><mode>3 insn pattern.
19216         (sse2_<plusminus_insn><mode>3): New expander.  Use
19217         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19218         (*sse2_umulv2siv2di3): Rename from sse2_umulv2siv2di3 insn pattern.
19219         (sse2_umulv2siv2di3): New expander.  Use
19220         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19221         (*sse4_1_mulv2siv2di3): Rename from sse4_1_mulv2siv2di3 insn pattern.
19222         (sse4_1_mulv2siv2di3): New expander.  Use
19223         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19224         (*sse2_pmaddwd): Rename from sse2_pmaddwd insn pattern.
19225         (sse2_pmaddwd): New expander.  Use
19226         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19227         (*sse2_eq<mode>3): Rename from sse2_eq<mode>3 insn pattern.
19228         (sse2_eq<mode>3): New expander.  Use
19229         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19230         (*sse4_1_eqv2di3): Rename from sse4_1_eqv2di3 insn pattern.
19231         (sse4_1_eqv2di3): New expander.  Use
19232         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19233         (*sse2_uavgv16qi3): Rename from sse2_uavgv16qi3 insn pattern.
19234         (sse2_uavgv16qi3): New expander.  Use
19235         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19236         (*sse2_uavgv16qi3): Rename from sse2_uavgv16qi3 insn pattern.
19237         (sse2_uavgv16qi3): New expander.  Use
19238         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19239         (*sse2_uavgv8hi3): Rename from sse2_uavgv8hi3 insn pattern.
19240         (sse2_uavgv8hi3): New expander.  Use
19241         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19242         (*ssse3_pmulhrswv8hi3): Rename from ssse3_pmulhrswv8hi3 insn pattern.
19243         (ssse3_pmulhrswv8hi3): New expander.  Use
19244         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19245         (*ssse3_pmulhrswv4hi3): Rename from ssse3_pmulhrswv4hi3 insn pattern.
19246         (ssse3_pmulhrswv4hi3): New expander.  Use
19247         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19248
19249         (<sse>_vm<plusminus_insn><mode>3): Do not use ix86_binary_operator_ok.
19250         (<sse>_vmmul<mode>3): Ditto.
19251         (divv4sf3): Do not use ix86_fixup_binary_operands_no_copy.
19252         (divv2df3): Ditto.
19253         (ssse3_pmaddubsw128): Use register_operand for operand 1.
19254         (ssse3_pmaddubsw): Ditto.
19255
19256         * config/i386/i386.c (struct_builtin_description)
19257         [IX86_BUILTIN_LOADHPS]: Use CODE_FOR_sse_loadhps_exp.
19258         [IX86_BUILTIN_STOREHPS]: Use CODE_FOR_sse_loadlps_exp.
19259         [IX86_BUILTIN_LOADHPD]: Use CODE_FOR_sse2_loadhpd_exp.
19260         [IX86_BUILTIN_LOADLPD]: Use CODE_FOR_sse2_loadlpd_exp.
19261         [IX86_BUILTIN_MOVHLPS]: Use CODE_FOR_sse_movhlps_exp.
19262         [IX86_BUILTIN_MOVLHPS]: Use CODE_FOR_sse_movlhps_exp.
19263         [IX86_BUILTIN_UNPCKHPD]: Use FOR_sse2_unpckhpd_exp.
19264         [IX86_BUILTIN_UNPCKLPD]: Use FOR_sse2_unpcklpd_exp.
19265         (ix86_fixup_binary_operands): Assert that src1
19266         and src2 must have the same mode when swapped.
19267         (ix86_expand_binop_builtin): Do not use ix86_fixup_binary_operands
19268         and ix86_binary_operator_ok.  Do not force operands in registers
19269         when optimizing.
19270
19271 2008-05-07  Jan Hubicka  <jh@suse.cz>
19272
19273         * cgraph.c (dump_cgraph_node): Update.
19274         * cgraph.h (cgraph_local_info): Break out inline summary.
19275         * cgraphunit.c (cgraph_process_new_functions): Use inliner analysis
19276         hook.
19277         * ipa-inline (inline_summary): New accestor function.
19278         (cgraph_clone_inlined_nodes, cgraph_check_inline_limits,
19279         cgraph_decide_inlining, compute_inline_parameters): Update.
19280         * ipa.c (cgraph_remove_unreachable_nodes): Remove statistics.
19281
19282 2008-05-07  Maxim Kuvyrkov  <maxim@codesourcery.com>
19283
19284         Cleanup ColdFire scheduling support and add V4 pipeline model.
19285
19286         * config/m68k/m68k.md (UNSPEC_TIE): New constant.
19287         (define_attr cpu): Add cfv4 value.
19288         (define_attr type, define_attr type1): Merge into a single 'type'
19289         attribute.  Update all uses.
19290         (define_attr opx_type, define_attr opy_type, define_attr opx_access):
19291         Rearrange and update.  Rename value 'reg' to 'Rn', add value 'FPn'.
19292         Update all uses.
19293         (define_attr opx_mem, define_attr opy_mem): Remove.
19294         (define_attr op_mem): Clean up, update comment.
19295         (define_attr size): Use specific values instead of general int.
19296         (define_attr guess, define_attr split): Remove.  Update all uses.
19297         (movdf_internal, tstsi_internal, tsthi_internal, tstqi_internal,
19298         tst<mode>_68881, pushexthisi_const, movsi_const0_68000_10,
19299         movsi_const0_68040_60, movsi_const0, movsi_cf, movstrictqi_cf,
19300         zero_extendhisi2_cf, zero_extendqisi2_cfv4, cfv4_extendhisi2,
19301         68k_extendhisi2, extendqihi2, cfv4_extendqisi2, 68k_extendqisi2,
19302         floatsi<mode>2_68881, ftrunc<mode>2_68881, ftrunc<mode>2_cf,
19303         fix<mode>qi2_68881, fix<mode>hi2_68881, fix<mode>si2_68881,
19304         adddi_dishl32, addsi3_5200, add<mode>3_floatsi_68881,
19305         add<mode>3_floathi_68881, add<mode>3_floatqi_68881,
19306         add<mode>3_68881, add<mode>3_cf, subdi_dishl32, subsi3,
19307         sub<mode>3_floatsi_68881, sub<mode>3_floathi_68881,
19308         sub<mode>3_floatqi_68881, sub<mode>3_68881, sub<mode>3_cf,
19309         mulhi3, mulhisi3, mulhisisi3_s, mulsi3_68020, mulsi3_cf,
19310         umulhisi3, mulhisisi3_z, mul<mode>3_floatsi_68881,
19311         mul<mode>3_floathi_68881, mul<mode>3_floatqi_68881, fmul<mode>3_cf,
19312         div<mode>3_cf, sqrt<mode>2_cf, abs<mode>2_cf, clzsi2,
19313         one_cmplsi2_5200, subreghi1ashrdi_const32, ashrsi3, lshrsi3,
19314         bsetmemqi, bsetmemqi_ext, bclrmemqi, bclrmemqi_ext,
19315         beq, bne, bgt, blt, bordered, bunordered, buneq, bunge, bungt, bunle,
19316         bunlt, bltgt, tablejump_internal, call, non_symbolic_call_value,
19317         symbolic_call_value_jsr, symbolic_call_value_bsr, link):
19318         Update or set attributes.
19319         (stack_tie): New fake instruction.
19320
19321         * config/m68k/m68k.h (TUNE_CFV4): New macro.
19322         (m68k_sched_attr_size): Update declaration.
19323         (m68k_sched_attr_type2): Remove.
19324         (m68k_sched_address_bypass_p, m68k_sched_indexed_address_bypass_p):
19325         Declare new bypass predicates.
19326
19327         * config/m68k/m68k.c (m68k_sched_issue_rate,
19328         m68k_sched_first_cycle_multipass_dfa_lookahead): Declare hook
19329         implementations.
19330         (TARGET_SCHED_ISSUE_RATE,
19331         TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD): Override hooks.
19332         (override_options): Handle scheduling for ColdFire V4 core.
19333         (m68k_expand_prologue): Emit stack_tie.
19334         (enum attr_op_type): Split value 'OP_TYPE_REG' to 'OP_TYPE_RN' and
19335         'OP_TYPE_FPN'.  Update all uses.
19336         (sched_guess_p): Remove.
19337         (sched_address_type): Handle symbolic addresses.
19338         (sched_get_operand): New static function.
19339         (sched_operand_type): Merge into sched_attr_op_type.
19340         (sched_attr_op_type): Handle FP registers, handle quick constants,
19341         update.
19342         (m68k_sched_attr_opx_type, m68k_sched_attr_opy_type): Update.
19343         (m68k_sched_attr_size): Update.  Move logic to ...
19344         (sched_get_attr_size_int): New static function.
19345         (sched_get_opxy_mem_type): New static function.
19346         (m68k_sched_attr_op_mem): Update.
19347         (m68k_sched_attr_type2): Remove.
19348         (sched_cfv4_bypass_data): New static variable.
19349         (m68k_sched_adjust_cost): Handle ColdFire V4 bypass.
19350         (m68k_sched_issue_rate): Implement scheduler hook.
19351         (struct _sched_ib: enabled_p): New field.
19352         (m68k_sched_variable_issue): Update.  Handle V4.
19353         (SCHED_DUMP_TODO, SCHED_DUMP_DONE, SCHED_DUMP_NOTHING,
19354         sched_dump_class_func_t, sched_dump_split_class,
19355         sched_dump_dfa_guess_unit_code, sched_dump_dfa_state,
19356         sched_dump_dfa_class, m68k_sched_dump): Remove.
19357         (m68k_sched_first_cycle_multipass_dfa_lookahead): Implement scheduler
19358         hook.
19359         (m68k_sched_init_global): Remove statisctics dumping, introduce
19360         sanity check that all instructions have pipeline reservations.  Handle
19361         ColdFire V4 core.
19362         (m68k_sched_dfa_pre_advance_cycle, m68k_sched_dfa_post_advance_cycle):
19363         Handle ColdFire V4 core.
19364         (sched_mem_operand_p, sched_get_reg_operand, sched_get_mem_operand):
19365         New static functions.
19366         (m68k_sched_address_bypass_p): New bypass predicate.
19367         (sched_get_indexed_address_scale): New static function.
19368         (m68k_sched_indexed_address_bypass_p): New bypass predicate.
19369
19370         * cf.md: Update comments.
19371         (define_attr type2): Remove.  Use 'type' attribute instead.
19372         Update all uses.
19373         (cf_ib): Rename to cfv123_ib.  Update all uses.
19374         (cf_oep): Rename to cfv123_oep.  Update all uses.
19375         (cf_chr): Rename to cfv123_chr.  Update all uses.
19376         (cf_mem): Rename to cfv123_mem.  Update all uses.
19377         (cf_mac): Move to more appropriate place.
19378         (cfv123_guess): New automaton and cpu_unit.
19379         (cfv123_*, cfv12_*, cfv1_*, cfv2_*, cfv3_*): Use type attribute.
19380         Update uses of 'size' attribute.  Handle before reload scheduling.
19381         (cfv123_guess): New dummy reservation for unhandled instructions.
19382         (cfv4_*): Pipeline description of ColdFire V4 core.
19383         (ignore): New reservation to handle 'ignore' type.
19384
19385 2008-05-07  Ian Lance Taylor  <iant@google.com>
19386
19387         PR middle-end/36013
19388         * gimplify.c (find_single_pointer_decl_1): Don't look through
19389         indirections.
19390         (find_single_pointer_decl): Adjust comments.
19391
19392 2008-05-07  Jakub Jelinek  <jakub@redhat.com>
19393
19394         PR middle-end/36137
19395         * fold-const.c (fold_binary): Use STRIP_SIGN_NOPS instead of
19396         STRIP_NOPS on arguments even for MIN_EXPR and MAX_EXPR.
19397
19398         PR middle-end/36106
19399         * omp-low.c (expand_omp_atomic_pipeline): Load value using the
19400         integral type rather than floating point, then VIEW_CONVERT_EXPR
19401         to the floating point type.
19402
19403 2008-05-07  Uros Bizjak  <ubizjak@gmail.com>
19404
19405         * config/i386/i386.c (ix86_expand_copysign): Force non-zero constant
19406         TFmode op0 to register.
19407
19408 2008-05-07  Alan Modra  <amodra@bigpond.net.au>
19409
19410         * c-decl.c (grokdeclarator): Comment typo.
19411
19412 2008-05-06  Aldy Hernandez  <aldyh@redhat.com>
19413
19414         * tree-flow.h: Remove prototype for computed_goto_p.
19415         * tree-cfg.c (computed_goto_p): Make static.
19416
19417 2008-05-06  H.J. Lu  <hongjiu.lu@intel.com>
19418
19419         PR target/35657
19420         * config/i386/i386.c (contains_128bit_aligned_vector_p): Renamed to ...
19421         (contains_aligned_value_p): This.  Handle _Decimal128.
19422         (ix86_function_arg_boundary): Only align _Decimal128 to its
19423         natural boundary and handle it properly.
19424
19425 2008-05-06  Martin Jambor  <mjambor@suse.cz>
19426
19427         * ipa-cp.c (ipcp_method_orig_node): Renamed to ipcp_get_orig_node.
19428         (ipcp_method_is_cloned): Renamed to ipcp_node_is_clone
19429         (ipcp_method_set_orig_node): Removed.
19430         (ipcp_cval_get_cvalue_type): Removed.
19431         (ipcp_method_get_scale): Renamed to ipcp_get_node_scale.
19432         (ipcp_method_set_scale): Renamed to ipcp_set_node_scale.
19433         (ipcp_cval_set_cvalue_type): Removed.
19434         (ipcp_cval_get_cvalue): Removed.
19435         (ipcp_cval_set_cvalue): Removed.
19436         (ipcp_type_is_const): Renamed to ipcp_lat_is_const.
19437         (ipcp_cval_equal_cvalues): Renamed to ipcp_lats_are_equal
19438         (ipcp_lats_are_equal): Changed parameters to two ipcp_lattice's
19439         (ipcp_cval_meet): Renamed to ipa_lattice_meet
19440         (ipcp_cval_changed): Changed to use ipcp_lat_is_const
19441         (ipcp_method_cval): Renamed to ipcp_get_ith_lattice
19442         (ipcp_get_ith_lattice): Changed parameters.
19443         (ipcp_cval_compute): Renamed to ipcp_lattice_from_jfunc
19444         (ipcp_lattice_from_jfunc): Changed parameters.
19445         (ipcp_redirect): Local lattice pointer instead of lattice type variable.
19446         (ipcp_method_cval_print): Added temporary variable info.
19447         (ipcp_redirect): Removed already unused local variable caller.
19448         (ipcp_redirect): New temporary variable orig_callee_info
19449         (ipcp_redirect): Removed newly unused local variable callee.
19450         (ipcp_redirect): Removed (a bit confusing) local variable type.
19451         (ipcp_insert_stage): Added local variable info.
19452         (ipcp_cval_changed): Renamed to ipcp_lattice_changed, parameters
19453         renamed too
19454         (ipcp_formal_create): Removed.
19455         (ipcp_method_cval_set): Removed.
19456         (ipcp_propagate_stage): Renamed lattice variables.
19457         (ipcp_method_cval_set_cvalue_type): Removed.
19458         (ipcp_method_cval_print): Renamed to ipcp_print_all_lattices
19459         (ipcp_print_all_lattices): Changed printed strings to refer to
19460         lattices rather than cvals.
19461         (ipcp_method_cval_init): Renamed to ipcp_initialize_node_lattices
19462         (ipcp_propagate_const): Changed formal parameters.
19463         (build_const_val): Changed formal parameters.
19464         (ipcp_insert_stage): Removed useless variable cvalue
19465         (build_const_val): Changed formal parameters.
19466         (ipcp_method_compute_scale): Renamed to ipcp_compute_node_scale
19467         (ipcp_after_propagate): Renamed to ipcp_change_tops_to_bottom
19468         (ipcp_callsite_param_print): Renamed to ipcp_print_all_jump_functions
19469         (ipcp_profile_mt_count_print): Renamed to ipcp_print_func_profile_counts
19470         (ipcp_print_func_profile_counts): Changed string from "method" to
19471         "function"
19472         (ipcp_profile_cs_count_print): Renamed to ipcp_print_call_profile_counts
19473         (ipcp_profile_edge_print): Renamed to ipcp_print_edge_profiles
19474         (ipcp_profile_bb_print): Renamed to ipcp_print_bb_profiles
19475         (ipcp_structures_print): Renamed to ipcp_print_all_structures
19476         (ipcp_profile_print): Renamed to ipcp_print_profile_data
19477         (ipcp_lat_is_const): Changed parameters and made inline.
19478         (ipcp_replace_map_create): Renamed to ipcp_create_replace_map
19479         (ipcp_redirect): Renamed to ipcp_need_redirect_p
19480         (ipcp_need_redirect_p): Calls ipcp_lat_is_const instead of using
19481         the predicate condition directly
19482         (ipcp_propagate_stage): Added local variable args. Removed local
19483         variable callee.  (Both are mere code simplifications.)
19484         (ipcp_method_dont_insert_const): Renamed to
19485         ipcp_node_not_modifiable_p.
19486         (ipcp_node_not_modifiable_p): Made inline.
19487         (ipcp_cloned_create): Renamed to ipcp_init_cloned_node
19488         (ipcp_propagate_const): Renamed to ipcp_propagate_one_const
19489         (ipcp_print_all_lattices): Removed variable cvalue
19490         (ipcp_method_scale_print): Renamed to ipcp_function_scale_print
19491         Updated comments.
19492
19493 2008-05-06  Olivier Hainque  <hainque@adacore.com>
19494
19495         * tree-sra.c (try_instantiate_multiple_fields): Early return
19496         if field has POINTER_TYPE.
19497
19498 2008-05-06  Kai Tietz  <kai.tietz@onevision.com>
19499
19500         * config/i386/i386.c (output_set_got): Fix for x86_64 output_emit_asm
19501         by using 'q' specifier for instruction.
19502         (ix86_file_end): Replaced case TARGET_64BIT_MS_ABI by TARGET_64BIT.
19503
19504 2008-05-06  Anatoly Sokolov <aesok@post.ru>
19505
19506         * config/avr/avr.md (*sbrx_branch, *sbix_branch, *sbix_branch_tmp):
19507         Change mode of zero_extract from QImode to HImode.
19508         (sign bit tests peepholes): (Ditto.).
19509
19510 2008-05-06  Uros Bizjak  <ubizjak@gmail.com>
19511
19512         * config/i386/mmx.md: Remove double backslashes from asm templates.
19513         (*mmx_addv2sf3): Rename from mmx_addv2sf3 insn pattern.
19514         (mmx_addv2sf3): New expander.  Use ix86_fixup_binary_operands_no_copy
19515         to handle nonimmediate operands.
19516         (*mmx_mulv2sf3): Rename from mmx_mulv2sf3 insn pattern.
19517         (mmx_mulv2sf3): New expander.  Use ix86_fixup_binary_operands_no_copy
19518         to handle nonimmediate operands.
19519         (*mmx_<code>v2sf3_finite): New insn pattern.
19520         (*mmx_<code>v2sf3): Rename from mmx_<code>v2sf3 insn pattern.
19521         (mmx_<code>v2sf3): New expander.  Use
19522         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19523         (mmx_<plusminus_insn><mode>3): New expander.  Use
19524         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19525         (*mmx_<plusminus_insn><mode>3): New insn pattern.
19526         (mmx_add<mode>3): Removed.
19527         (mmx_ssadd<mode>3): Ditto.
19528         (mmx_usadd<mode>3): Ditto.
19529         (mmx_sub<mode>3): Ditto.
19530         (mmx_sssub<mode>3): Ditto.
19531         (mmx_ussub<mode>3): Ditto.
19532         (*mmx_mulv4hi3): Rename from mmx_mulv4hi3 insn pattern.
19533         (mmx_mulv4hi3): New expander.  Use ix86_fixup_binary_operands_no_copy
19534         to handle nonimmediate operands.
19535         (*mmx_smulv4hi3_highpart): Rename from mmx_smulv4hi3_highpart
19536         insn pattern.
19537         (mmx_smulv4hi3_highpart): New expander.  Use
19538         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19539         (*mmx_umulv4hi3_highpart): Rename from mmx_umulv4hi3_highpart
19540         insn pattern.
19541         (mmx_umulv4hi3_highpart): New expander.  Use
19542         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19543         (*mmx_<code>v4hi3): Rename from mmx_<code>v4hi3 insn pattern.
19544         (mmx_<code>v4hi3): New expander.  Use
19545         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19546         (*mmx_<code>v8qi3): Rename from mmx_<code>v8qi3 insn pattern.
19547         (mmx_<code>v8qi3): New expander.  Use
19548         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19549         (*mmx_<code><mode>3): Rename from mmx_<code><mode>3 insn pattern.
19550         (mmx_<code><mode>3): New expander.  Use
19551         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
19552
19553 2008-05-05  Jan Hubicka  <jh@suse.cz>
19554
19555         PR tree-optimization/36118
19556         * passes.c (pass_init_dump_file): Fix dump header.
19557
19558 2008-05-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
19559
19560         PR middle-end/36141
19561         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Don't create
19562         VCE for function decls.
19563
19564 2008-05-05  H.J. Lu  <hongjiu.lu@intel.com>
19565
19566         * config/i386/sse.md (sse2_<plusminus_insn><mode>3): Fix a typo.
19567
19568 2008-05-05  H.J. Lu  <hongjiu.lu@intel.com>
19569
19570         * config/i386/i386.md (sat_plusminus): New.
19571         (plusminus_insn): Likewise.
19572         (plusminus_mnemonic): Likewise.
19573         (addsub): Removed.
19574         (comm): Add ss_plus, us_plus, ss_minus and us_minus.
19575         (*<addsub><mode>3_cc_overflow): Renamed to ...
19576         (*<plusminus_insn><mode>3_cc_overflow): This.
19577         (*<addsub>si3_zext_cc_overflow): Renamed to ...
19578         (*<plusminus_insn>si3_zext_cc_overflow): This.
19579
19580         * config/i386/sse.md (<addsub><mode>3): Renamed to ...
19581         (<plusminus_insn><mode>3): This.
19582         (*<addsub><mode>3): Renamed to ...
19583         (*<plusminus_insn><mode>3): This.
19584         (<sse>_vm<addsub><mode>3): Renamed to ...
19585         (<sse>_vm<plusminus_insn><mode>3): This.
19586         (sse3_h<addsub>v4sf3): Renamed to ...
19587         (sse3_h<plusminus_insn>v4sf3): This.
19588         (sse3_h<addsub>v2df3): Renamed to ...
19589         (sse3_h<plusminus_insn>v2df3): This.
19590         (<plusminus_insn><mode>3): New.
19591         (*<plusminus_insn><mode>3): Likewise.
19592         (sse2_<plusminus_insn><mode>3): Likewise.
19593         (add<mode>): Removed.
19594         (*add<mode>3): Likewise.
19595         (sse2_ssadd<mode>3): Likewise.
19596         (sse2_usadd<mode>3): Likewise.
19597         (sub<mode>3): Likewise.
19598         (*sub<mode>3): Likewise.
19599         (sse2_sssub<mode>3): Likewise.
19600         (sse2_ussub<mode>3): Likewise.
19601
19602 2008-05-05  Benjamin Kosnik  <bkoz@redhat.com>
19603
19604         * gthr-single.h: Add in required interface elements as per gthr.h.
19605         Add stub types for __gthread_key_t, __gthread_once_t. Add defines
19606         for __GTHREAD_ONCE_INIT, __GTHREAD_RECURSIVE_MUTEX_INIT.
19607         Generalize UNUSED macro.
19608         (__gthread_once): Add.
19609         (__gthread_key_create): Add.
19610         (__gthread_key_delete): Add.
19611         (__gthread_getspecific): Add.
19612         (__gthread_setspecific): Add.
19613
19614 2008-05-05  Andrew Pinski  <Andrew.Pinski@playstation.sony.com>
19615
19616         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): If we have
19617         the same size types for the indirect reference on the rhs, then
19618         create a VCE.
19619
19620 2008-05-05  Uros Bizjak  <ubizjak@gmail.com>
19621
19622         * config/i386/i386.md
19623         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit): Use only
19624         one insn template instead of template series.
19625         (*xordi_1_rex64): Ditto.
19626         (*xordi_2_rex64): Ditto.
19627
19628 2008-05-05  Ira Rosen  <irar@il.ibm.com>
19629
19630         PR tree-optimization/36119
19631         * tree-vect-transform.c (vectorizable_assignment): Set NCOPIES to 1
19632         in case of SLP.
19633
19634 2008-06-04  Jan Hubicka  <jh@suse.cz>
19635
19636         tree-optimization/36100
19637         * tree-pass.h (pass_O0_always_inline): Declare.
19638         * ipa-inline.c (inline_transform): Remove dead code.
19639         (cgraph_gate_O0_always_inline, cgraph_O0_always_inline,
19640         pass_O0_always_inline): New.
19641         * passes.c (init_optimization_passes): Add pass_O0_always_inline.
19642
19643 2008-05-04  Kai Tietz  <kai.tietz@onevision.com>
19644
19645         * config/i386/i386.c (x86_output_mi_thunk): Use movq alternative
19646         mnemonic in this_param move for TARGET_64BIT.
19647
19648 2008-05-04  Uros Bizjak  <ubizjak@gmail.com>
19649
19650         * config/i386/i386.md (*strmovsi_1): Simplify asm alternatives.
19651         (*strmovsi_rex_1): Ditto.
19652         (*strsetsi_1): Ditto.
19653         (*strsetsi_rex_1): Ditto.
19654
19655         (add<mode>cc): Macroize expander from addqicc, addhicc, addsicc and
19656         adddicc expanders using SWI mode iterator.
19657
19658 2008-05-04  H.J. Lu  <hongjiu.lu@intel.com>
19659
19660         PR target/36121
19661         * config/i386/i386.c (ix86_expand_special_args_builtin): Remove three
19662         argument handling.
19663
19664 2008-05-04  David S. Miller  <davem@davemloft.net>
19665
19666         * config.gcc (sparc*-*-*): Always set need_64bit_hwint to yes.
19667         (sparc*-*-linux*): Use linux.h in tm_file.
19668         (sparc-*-linux*): If 'enabled_targets' is 'all', build a bi-arch
19669         compiler defaulting to 32-bit.
19670         (sparc*-*-*): Remove explicit target settings of need_64bit_hwint,
19671         no longer needed.
19672         * config/sparc/linux.h: Remove definitions now obtained
19673         properly from linux.h
19674         * config/sparc/linux64.h: Likewise.
19675         (ASM_CPU_DEFAULT_SPEC): Change this to ASM_CPU64_DEFAULT_SPEC, we
19676         don't want this setting for 32-bit builds in a biarch compiler.
19677         * doc/install.texi: Add sparc-linux to list of targets
19678         supporting --enable-targets=all.
19679
19680 2008-05-03  Andrew Pinski  <pinskia@gmail.com>
19681
19682         * Makefile.in (tree-ssa-phiprop.o): Fix dependencies.
19683
19684 2008-05-03  H.J. Lu  <hongjiu.lu@intel.com>
19685
19686         * config/i386/i386.c (ix86_builtin_type): Move V4SI_FTYPE_V4SF
19687         after V4SI_FTYPE_V8HI.
19688         (ix86_init_mmx_sse_builtins): Move case V4HI_FTYPE_V4HI after
19689         case V4SI_FTYPE_V2DF.
19690
19691 2008-05-03  Kenneth Zadeck  <zadeck@naturalbridge.com>
19692
19693         * doc/invoke.texi (max-flow-memory-locations): Removed.
19694         * params.def (PARAM_MAX_FLOW_MEMORY_LOCATIONS): Removed.
19695
19696 2008-05-03  Richard Guenther  <rguenther@suse.de>
19697
19698         PR middle-end/34973
19699         * opts.c (set_Wstrict_aliasing): Handle the turn-off case.
19700
19701 2008-05-02  David S. Miller  <davem@davemloft.net>
19702
19703         * config.gcc (need_64bit_hwint): Document libcpp dependency.
19704
19705 2008-05-02  Simon Baldwin <simonb@google.com>
19706
19707         PR bootstrap/36108
19708         * c-common.h (warn_array_subscript_range): Removed.
19709         * c-common.c (warn_array_subscript_range): Ditto.
19710         * tree-vrp.c (check_array_ref): Revert to ignoring arrays with size 2.
19711         * c-typeck.c (build_array_ref): Remove warn_array_subscript_range.
19712
19713 2008-05-02  H.J. Lu  <hongjiu.lu@intel.com>
19714
19715         * config/i386/i386.c (ix86_special_builtin_type): New.
19716         (bdesc_special_args): Likewise.
19717         (ix86_expand_special_args_builtin): Likewise.
19718         (ix86_init_mmx_sse_builtins): Updated.
19719         (ix86_expand_builtin): Updated.
19720         (ix86_expand_store_builtin): Removed.
19721         (ix86_expand_unop_builtin): Likewise.
19722
19723         * config/i386/mm3dnow.h (__v2sf): Moved to ...
19724         * config/i386/mmintrin.h (__v2sf): Here.
19725
19726         * config/i386/xmmintrin.h (_mm_loadh_pi): Replace __v2si with
19727         const __v2sf.
19728         (_mm_loadl_pi): Likewise.
19729         (_mm_storeh_pi): Replace __v2si with __v2sf.
19730         (_mm_storel_pi): Likewise.
19731
19732         * doc/extend.texi: Correct __builtin_ia32_loadhps,
19733         __builtin_ia32_loadlps, __builtin_ia32_storehps,
19734         __builtin_ia32_storelps, __builtin_ia32_loadhpd and
19735         __builtin_ia32_loadlpd.
19736
19737 2008-05-02  H.J. Lu  <hongjiu.lu@intel.com>
19738
19739         * config/i386/i386.c (ix86_builtin_type): Add FLOAT_FTYPE_FLOAT,
19740         V4SF_FTYPE_V4SF_VEC_MERGE and V2DF_FTYPE_V2DF_VEC_MERGE.
19741         (bdesc_args): Updated.  Add scalar SSE builtins with vec_merge.
19742         (ix86_init_mmx_sse_builtins): Updated.
19743         (ix86_expand_args_builtin): Likewise.
19744         (ix86_expand_builtin): Likewise.
19745         (ix86_expand_unop1_builtin): Renamed to ...
19746         (ix86_expand_unop_vec_merge_builtin): This.
19747
19748 2008-05-01  Jan Hubicka  <jh@suse.cz>
19749
19750         PR bootstrap/36100
19751         * ipa-inline.c (inline_generate_summary): Make static.
19752         (inline_transform): Do not call inlining at -O0; make static.
19753         * passes.c (execute_todo): Add sanity check.
19754         (execute_one_ipa_transform_pass): Execute proper flags.
19755
19756 2008-05-01  Eric Botcazou  <ebotcazou@adacore.com>
19757
19758         * tree.h (TYPE_NONALIASED_COMPONENT): Expand comment.
19759         (DECL_NONADDRESSABLE_P): Likewise.
19760         * alias.c (record_component_aliases): Fix comment.
19761
19762 2008-05-01  Simon Baldwin <simonb@google.com>
19763
19764         * c-common.h (warn_array_subscript_range): New function.
19765         * c-common.c (warn_array_subscript_range): Ditto.
19766         * tree-vrp.c (check_array_ref): Corrected code to agree with
19767         comment, ignoring only arrays of size 0 or size 1.
19768         * c-typeck.c (build_array_ref): Call warn_array_subscript_range.
19769
19770 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
19771
19772         * config/i386/i386.c (ix86_builtin_type): Replace
19773         DI_FTYPE_DI_DI_INT with V1DI2DI_FTYPE_V1DI_V1DI_INT.
19774         (bdesc_args): Updated.
19775         (ix86_init_mmx_sse_builtins): Likewise.
19776         (ix86_expand_args_builtin): Likewise.
19777
19778         * config/i386/tmmintrin.h (_mm_alignr_pi8): Replace long long
19779         with __v1di.
19780
19781         * doc/extend.texi: Correct __builtin_ia32_palignr.
19782
19783 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
19784
19785         PR target/36095
19786         * config/i386/i386.c (bdesc_crc32): Removed.
19787         (ix86_expand_crc32): Likewise.
19788         (ix86_builtin_type): Replace V2DI2TI_FTYPE_V2DI2TI_INT with
19789         V2DI2TI_FTYPE_V2DI_INT, V2DI2TI_FTYPE_V2DI2TI_V2DI2TI_INT with
19790         V2DI2TI_FTYPE_V2DI_V2DI_INT.  Add UINT64_FTYPE_UINT64_UINT64,
19791         UINT_FTYPE_UINT_UINT, UINT_FTYPE_UINT_USHORT and
19792         UINT_FTYPE_UINT_UCHAR.
19793         (bdesc_args): Updated. Add crc32 builtins.
19794         (ix86_init_mmx_sse_builtins): Updated.
19795         (ix86_expand_args_builtin): Updated to support subreg.
19796
19797         * doc/extend.texi: Correct __builtin_ia32_crc32di.
19798
19799 2008-05-01  Jan Hubicka  <jh@suse.cz>
19800
19801         * tree-pass.h (opt_pass): Add IPA_PASS.
19802         (varpool_node, cgraph_node): Forward declare.
19803         (ipa_opt_pass): Define.
19804         (pass_ipa_inline): Turn into ipa_opt_pass.
19805         (pass_apply_inline): Remove.
19806         * ipa-inline.c (pass_ipa_inline): Turn into ipa_opt_pass.
19807         (apply_inline): Turn into ....
19808         (inline_transform): ... this one.
19809         (inline_generate_summary): New function.
19810         (pass_apply_inline): Remove.
19811         * function.h (ipa_opt_pass): Forward declare structure; typedef;
19812         vector.
19813         (struct function): Add ipa_transforms_to_apply.
19814         * passes.c (register_one_dump_file): Work on IPA_PASS.
19815         (init_optimization_passes): Remove pass_inline_parameters and
19816         pass_apply_inline.
19817         (pass_init_dump_file, pass_fini_dump_file): Break out from ....
19818         (execute_one_pass) ... here; apply transforms when possible.
19819         (add_ipa_transform_pass, execute_ipa_summary_asses,
19820         execute_one_ipa_transform_pass): New.
19821         (execute_ipa_pass_list): Update for IPA_PASS type.
19822
19823 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
19824
19825         * config/i386/i386.c (ix86_builtin_type): Add
19826         V2DI_FTYPE_V2DI_V16QI, V2DI_FTYPE_V2DI_UINT_UINT and
19827         V2DI_FTYPE_V2DI_V2DI_UINT_UINT.
19828         (bdesc_args): Add SSE4a builtins.
19829         (ix86_init_mmx_sse_builtins): Updated.
19830         (ix86_expand_args_builtin): Likewise.
19831         (ix86_expand_builtin): Likewise.
19832
19833 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
19834
19835         * config/i386/i386.c (ix86_builtin_type): Add
19836         V8HI_FTYPE_V8HI_V8HI_COUNT, V8HI_FTYPE_V8HI_SI_COUNT,
19837         V4SI_FTYPE_V4SI_V4SI_COUNT, V4SI_FTYPE_V4SI_SI_COUNT,
19838         V4HI_FTYPE_V4HI_V4HI_COUNT, V4HI_FTYPE_V4HI_SI_COUNT,
19839         V2DI_FTYPE_V2DI_V2DI_COUNT, V2DI_FTYPE_V2DI_SI_COUNT,
19840         V2SI_FTYPE_V2SI_V2SI_COUNT, V2SI_FTYPE_V2SI_SI_COUNT,
19841         V1DI_FTYPE_V1DI_V1DI_COUNT, V1DI_FTYPE_V1DI_SI_COUNT,
19842         V8HI_FTYPE_V8HI_INT, V4SI_FTYPE_V4SI_INT, V4HI_FTYPE_V4HI_INT,
19843         V2DI2TI_FTYPE_V2DI2TI_INT, V2DI2TI_FTYPE_V2DI2TI_V2DI2TI_INT
19844         and DI_FTYPE_DI_DI_INT.
19845         (bdesc_args): Add MMX/SSE shift, shuffle and palignr builtins.
19846         (ix86_init_mmx_sse_builtins): Updated.
19847         (ix86_expand_args_builtin): Likewise.
19848         (ix86_expand_builtin): Likewise.
19849         (ix86_expand_binop_imm_builtin): Removed.
19850
19851         * doc/extend.texi: Correct __builtin_ia32_palignr128.
19852
19853 2008-04-30  Richard Guenther  <rguenther@suse.de>
19854
19855         PR tree-optimization/32921
19856         * tree-ssa-loop-im.c (mem_refs_may_alias_p): Disambiguate with TBAA.
19857
19858 2008-04-30  Richard Sandiford  <rsandifo@nildram.co.uk>
19859
19860         * config/arm/arm.c (arm_unwind_emit): Use
19861         crtl->all_throwers_are_sibcalls instead of
19862         cfun->all_throwers_are_sibcalls.
19863         (arm_output_fn_unwind): Likewise.
19864         * config/frv/frv.c (frv_stack_info): Use crtl->uses_pic_offset_table
19865         instead of cfun->uses_pic_offset_table.
19866         (frv_expand_prologue): Likewise.
19867         (frv_frame_pointer_required): Likewise.
19868         (frv_expand_fdpic_call): Likewise.
19869         (frv_emit_movsi): Likewise.
19870         * config/iq2000/iq2000.c (iq2000_expand_prologue): Use
19871         cfun->returns_pcc_struct instead of
19872         current_function_returns_pcc_struct.
19873         * config/m32c/m32c.c (need_to_save): Use crtl->calls_eh_return
19874         instead of cfun->calls_eh_return.
19875         (m32c_pushm_popm): Likewise.
19876         * config/xtensa/xtensa.h (cfun->calls_alloca): Remove bogus
19877         "extern" declaration.
19878
19879 2008-04-30  Richard Guenther  <rguenther@suse.de>
19880
19881         PR tree-optimization/21636
19882         * tree-ssa-ccp.c (ccp_fold): Handle &p->x with p being a
19883         constant address.
19884         (evaluate_stmt): Print the likely value.
19885         (ccp_visit_stmt): Avoid excessive vertical spacing.
19886
19887 2008-04-30  Rafael Espíndola  <espindola@google.com>
19888
19889         * builtins.c (fold_call_expr): Return realret.
19890         * tree-ssa-threadedge.c
19891         (record_temporary_equivalences_from_stmts_at_dest): Ignore calls to
19892         __builtin_object_size.
19893
19894 2008-04-30  Seongbae Park  <seongbae.park@gmail.com>
19895
19896         * gcc.c (wrapper_string): New variable.
19897         (insert_wrapper): New function.
19898         (execute): New option -wrapper.
19899         * doc/invoke.texi (Overall Options): New driver option -wrapper.
19900
19901 2008-04-30  Nathan Froyd  <froydnj@codesourcery.com>
19902
19903         * config/rs6000/crtresgpr.asm, config/rs6000/crtresxgpr.asm,
19904         config/rs6000/crtsavgpr.asm, config/rs6000/crtresfpr.asm,
19905         config/rs6000/crtresxfpr.asm, config/rs6000/crtsavfpr.asm: Break out
19906         from...
19907         * config/rs6000/crtsavres.asm: ...here.  Remove unneeded file.
19908         * config/rs6000/e500crtres32gpr.asm, config/rs6000/e500crtres64gpr.asm,
19909         config/rs6000/e500crtres64gprctr.asm,
19910         config/rs6000/e500crtrest32gpr.asm, config/rs6000/e500crtrest64gpr.asm,
19911         config/rs6000/e500crtresx32gpr.asm, config/rs6000/e500crtresx64gpr.asm,
19912         config/rs6000/e500crtsav32gpr.asm, config/rs6000/e500crtsav64gpr.asm,
19913         config/rs6000/e500crtsav64gprctr.asm,
19914         config/rs6000/e500crtsavg32gpr.asm, config/rs6000/e500crtsavg64gpr.asm,
19915         config/rs6000/e500crtsavg64gprctr.asm: New files.
19916         * config/rs6000/t-ppccomm: Add build rules for new files.
19917         (LIB2FUNCS_STATIC_EXTRA): Add new files.
19918         * config/rs6000/t-netbsd: Add build rules for new files.
19919         (LIB2FUNCS_STATIC_EXTRA): New variable.
19920         * config/rs6000/sysv4.h (ENDFILE_SPEC): Don't include crtsavres.o
19921         (CRTSAVRES_DEFAULT_SPEC): Likewise.
19922         * config/rs6000/netbsd.h (ENDFILE_SPEC): Likewise.
19923
19924 2008-04-30  H.J. Lu  <hongjiu.lu@intel.com>
19925
19926         * config/i386/i386.c (ix86_builtin_type): Add
19927         FLOAT128_FTYPE_FLOAT128_FLOAT128, V16QI_FTYPE_V16QI_V16QI,
19928         V16QI_FTYPE_V8HI_V8HI, V8QI_FTYPE_V8QI_V8QI,
19929         V8QI_FTYPE_V4HI_V4HI, V8HI_FTYPE_V8HI_V8HI,
19930         V8HI_FTYPE_V16QI_V16QI, V8HI_FTYPE_V4SI_V4SI,
19931         V4SI_FTYPE_V4SI_V4SI, V4SI_FTYPE_V8HI_V8HI,
19932         V4SI_FTYPE_V4SF_V4SF, V4SI_FTYPE_V2DF_V2DF,
19933         V4HI_FTYPE_V4HI_V4HI, V4HI_FTYPE_V8QI_V8QI,
19934         V4HI_FTYPE_V2SI_V2SI, V4SF_FTYPE_V4SF_V4SF,
19935         V4SF_FTYPE_V4SF_V4SF_SWAP, V4SF_FTYPE_V4SF_V2SI,
19936         V4SF_FTYPE_V4SF_V2DF, V4SF_FTYPE_V4SF_DI,
19937         V4SF_FTYPE_V4SF_SI, V2DI_FTYPE_V2DI_V2DI,
19938         V2DI_FTYPE_V16QI_V16QI, V2DI_FTYPE_V4SI_V4SI,
19939         V2DI_FTYPE_V2DF_V2DF, V2SI_FTYPE_V2SI_V2SI,
19940         V2SI_FTYPE_V4HI_V4HI, V2SI_FTYPE_V2SF_V2SF,
19941         V2DF_FTYPE_V2DF_V2DF, V2DF_FTYPE_V2DF_V2DF_SWAP,
19942         V2DF_FTYPE_V2DF_V4SF, V2DF_FTYPE_V2DF_DI,
19943         V2DF_FTYPE_V2DF_SI, V2SF_FTYPE_V2SF_V2SF,
19944         V1DI_FTYPE_V1DI_V1DI, V1DI_FTYPE_V8QI_V8QI and
19945         V1DI_FTYPE_V2SI_V2SI.
19946         (bdesc_2arg): Moved to ...
19947         (bdesc_args): Here.
19948         (ix86_init_mmx_sse_builtins): Updated.
19949         (ix86_expand_args_builtin): Updated.  Take a pointer
19950         to const struct builtin_description.  Handle comparison
19951         builtin functions.
19952         (ix86_expand_sse_compare): Take a new argument for swapping operands.
19953         (ix86_expand_builtin): Updated.
19954
19955         * config/i386/sse.md (ssse3_pmaddubswv8hi3): Renamed to ...
19956         (ssse3_pmaddubsw128): This.
19957         (ssse3_pmaddubswv4hi3): Renamed to ...
19958         (ssse3_pmaddubsw): This.
19959
19960         * doc/extend.texi (__builtin_ia32_packsswb128): Correct prototype.
19961         (__builtin_ia32_packssdw128): Likewise.
19962         (__builtin_ia32_packuswb128): Likewise.
19963         (__builtin_ia32_pmaddubsw): Likewise.
19964         (__builtin_ia32_pmaddubsw128): Likewise.
19965
19966 2008-04-30  Richard Guenther  <rguenther@suse.de>
19967
19968         PR tree-optimization/14847
19969         * tree-ssa-ifcombine.c (get_name_for_bit_test): New helper function.
19970         (recognize_bits_test): Use it.
19971         (recognize_single_bit_test): Likewise.
19972
19973 2008-04-30  Martin Jambor  <mjambor@suse.cz>
19974
19975         * ipa-cp.c (ipcp_init_stage): Calls ipa_set_called_with_variable_arg
19976         instead of setting number of formal parameters to zero.
19977         (ipcp_init_stage): Do not set the number of actual parameters to zero
19978         either.
19979         (ipcp_propagate_stage): Explicitly skipping all calls to nodes
19980         which are called with variable number of arguments.
19981         (ipcp_insert_stage): Explicitely skipping all nodes which are
19982         called with variable number of arguments.
19983         (ipcp_callsite_param_print): Skipps callsites to nodes with varaible
19984         number of parameters.
19985
19986         * ipa-prop.h (struct ipa_node_params): Added flag
19987         called_with_var_arguments
19988         (ipa_set_param_count): Added.  Changed sole setter to use it.
19989         (ipa_get_param_count): Added.  All readers of param_count
19990         converted to use it instead.
19991         (ipa_set_called_with_variable_arg): Added.
19992         (ipa_is_called_with_var_arguments): Added.
19993         (ipa_get_ith_param): Added.  All readers of param_decls converted
19994         to use it instead.
19995         (ipa_set_cs_argument_count): Added, sole writer to argument_count
19996         changed to use it.
19997         (ipa_get_cs_argument_count): Added, all readers of argument_count
19998         changed to cal it.
19999         (ipa_get_ith_jump_func): Added. Accessors of jump values changed
20000         to use it.
20001
20002         * ipa-prop.h (struct ipcp_formal): Renamed to ipcp_lattice
20003         (struct ipcp_lattice): Renamed cval_type to type
20004         (struct ipa_node_params): ipcp_cval renamed to ipcp_lattices
20005
20006         * ipa-cp.c (ipcp_cval_get_cvalue): Changed return value to tree
20007         (ipcp_cval_set_cvalue): Changed type of parameter value to tree
20008         (ipcp_insert_stage): Changed the type of variable cvalue to tree
20009         (ipcp_replace_map_create): Changed the type of parameter cvalue to tree
20010         (build_const_val): Changed the type of parameter cvalue to tree
20011         (ipcp_propagate_const): Changed the type of parameter cvalue to tree
20012         (ipcp_method_cval_set_cvalue_type): Renamed parameter cval_type1 to type
20013
20014         * ipa-prop.h (struct ipcp_formal): Replaced cvalue with tree called
20015         constant
20016
20017         * ipa-prop.c (ipa_methodlist_init): Renamed to ipa_init_func_list
20018         (ipa_methodlist_not_empty): Removed, the sole user now checks directly
20019         (ipa_add_method): Renamed to ipa_push_func_to_list
20020         (ipa_remove_method): Renamed to ipa_pop_func_from_list
20021         (ipa_callsite_param_count): Removed.
20022         (ipa_callsite_param_count_set): Removed.
20023         (ipa_callsite_param): Removed.
20024         (ipa_callsite_callee): Removed.
20025         (ipa_callsite_compute_param): Renamed to ipa_compute_jump_functions
20026         (ipa_callsite_compute_count): Renamed to ipa_count_arguments
20027         (ipa_method_formal_count): Removed.
20028         (ipa_method_formal_count_set): Removed.
20029         (ipa_method_get_tree): Removed.
20030         (ipa_method_tree_map_create): Removed.
20031         (ipa_method_compute_tree_map): Renamed to ipa_create_param_decls_array
20032         (ipa_create_param_decls_array): Creates the array itself
20033         (ipa_create_param_decls_array): Temporary variable info instead of
20034         a few dereferences.
20035         (ipa_method_formal_compute_count): Renamed to ipa_count_formal_params
20036         (ipa_method_compute_modify): Renamed to ipa_detect_param_modifications
20037         (get_type): Removed.
20038         (ipa_jf_get_info_type): Removed.
20039         (ipa_node_create): Renamed to ipa_create_node_params
20040         (ipa_free): Renamed to ipa_free_all_node_params
20041         (ipa_nodes_create): Renamed to ipa_create_all_node_params
20042         (ipa_edges_create): Renamed to ipa_create_all_edge_args
20043         (ipa_edges_free): Renamed to ipa_free_all_edge_args
20044         (ipa_nodes_free): Integrated into ipa_free_all_node_params and removed
20045         (ipa_free_all_node_params): Deallocation to jump_functions moved to
20046         ipa_free_all_edge_args
20047         (ipa_method_tree_print): Renamed to ipa_print_all_tree_maps
20048         (ipa_method_modify_print): Renamed to ipa_print_all_params_modified
20049         (ipa_create_methodlist_node): Removed.
20050         (ipa_methodlist_method): Removed.
20051         (ipa_methodlist_method_set): Removed.
20052         (ipa_methodlist_next_method): Removed.
20053         (ipa_methodlist_next_method_set): Removed.
20054         (ipa_method_is_modified): Removed.
20055         (ipa_method_modify_create): Removed.
20056         (ipa_method_modify_init): Temporary variable info instead of a few
20057         dereferences.
20058         (ipa_detect_param_modifications): Temporary variable info instead of
20059         a few dereferences.
20060         (ipa_compute_jump_functions): Temporary variable info instead of
20061         a few dereferences.
20062         (ipa_method_modify_set): Removed.
20063         (ipa_method_tree_map): Renamed to ipa_get_param_decl_index
20064         (ipa_get_param_decl_index): Now accepts struct ipa_node_params rather
20065         than craph_node as the first parameter.
20066         (ipa_method_modify_stmt): Renamed to ipa_check_stmt_modifications
20067         (ipa_method_modify_init): Removed.
20068         (ipa_compute_jump_functions): Added a temp variable instead of
20069         repeatadly dereferencing the cgraph_edge.aux pointer
20070         (ipa_callsite_param_set_type): Removed.
20071         (ipa_compute_jump_functions): i renamed to index and moved to
20072         an inner block
20073         (ipa_callsite_param_set_info_type_formal): Removed.
20074         (ipa_callsite_param_set_info_type): Removed.
20075         (ipa_callsite_param_map_create): Removed.
20076         (ipa_callsite_tree): Removed.
20077         (ipa_callsite_caller): Removed.
20078         (ipa_pop_func_from_list): return_method removed to return_func
20079
20080         * ipa-prop.h (enum cvalue_type): Renamed to ipa_lattice_type,
20081         prefixed all values with IPA_. Changed all users.
20082         (enum jump_func_type): Rnamed UNKNOWN_IPATYPE to IPA_UNKNOWN,
20083         CONST_IPATYPE to IPA_CONST, CONST_IPATYPE_REF to IPA_CONST_REF
20084         and FORMAL_IPATYPE IPA_PASS_THROUGH.
20085         (union parameter_info): Renamed to jump_func_value.
20086         (union jump_func_value): Renamed value to constant
20087         (struct ipa_jump_func): Renamed info_type to value
20088         (struct ipa_node): Renamed to ipa_node_params
20089         (struct ipa_node_params): Renamed ipa_arg_num to param_count
20090         (struct ipa_node_params): Renamed ipa_param_tree to param_decls
20091         (struct ipa_node_params): Renamed ipa_mod to modified_flags
20092         (struct ipa_edge): Renamed to ipa_edge_args
20093         (struct ipa_edge_args): Renamed ipa_param_num to argument_count
20094         (struct ipa_edge_args): Renamed ipa_param_map to jump_functions
20095         (struct ipa_methodlist): Renamed to ipa_func_list
20096         (struct ipa_func_list): method_p renamed to node, next_method
20097         renamed to next
20098         (ipa_methodlist_p): Removed, switched all users to struct pointer
20099         (IS_VALID_TREE_MAP_INDEX): Renamed to IS_VALID_JUMP_FUNC_INDEX
20100
20101 2008-04-30  Alan Modra  <amodra@bigpond.net.au>
20102
20103         * config/rs6000/rs6000.c (ALWAYS_RESTORE_ALTIVEC_BEFORE_POP): Define.
20104         (rs6000_emit_epilogue): Use backchain to restore only when we
20105         have a large frame.  Make use of frame pointer to restore if we
20106         have one.  Handle ALWAYS_RESTORE_ALTIVEC_BEFORE_POP.
20107
20108 2008-04-29  Paolo Bonzini  <bonzini@gnu.org>
20109
20110         * config/avr/avr.md (*sbrx_branch, *sbix_branch, *sbix_branch_tmp):
20111         Add mode to zero_extract.
20112         (sign bit tests peepholes): (Ditto.).
20113
20114 2008-04-29  H.J. Lu  <hongjiu.lu@intel.com>
20115
20116         * config/i386/i386.c (ix86_builtins): Replace Prescott New
20117         Instructions in comments with SSE3.
20118         (ix86_builtin_type): This.  Add FLOAT128_FTYPE_FLOAT128,
20119         INT64_FTYPE_V4SF, INT64_FTYPE_V2DF, INT_FTYPE_V16QI,
20120         INT_FTYPE_V8QI, INT_FTYPE_V4SF, INT_FTYPE_V2DF,
20121         V16QI_FTYPE_V16QI, V8HI_FTYPE_V8HI, V8HI_FTYPE_V16QI,
20122         V8QI_FTYPE_V8QI, V4SI_FTYPE_V4SI, V4SI_FTYPE_V16QI,
20123         V4SI_FTYPE_V4SF, V4SI_FTYPE_V8HI, V4SI_FTYPE_V2DF,
20124         V4HI_FTYPE_V4HI, V4SF_FTYPE_V4SF, V4SF_FTYPE_V4SI,
20125         V4SF_FTYPE_V2DF, V2DI_FTYPE_V2DI, V2DI_FTYPE_V16QI,
20126         V2DI_FTYPE_V8HI, V2DI_FTYPE_V4SI, V2DF_FTYPE_V2DF,
20127         V2DF_FTYPE_V4SI, V2DF_FTYPE_V4SF, V2DF_FTYPE_V2SI,
20128         V2SI_FTYPE_V2SI, V2SI_FTYPE_V4SF, V2SI_FTYPE_V2SF,
20129         V2SI_FTYPE_V2DF, V2SF_FTYPE_V2SF and V2SF_FTYPE_V2SI.
20130         (bdesc_sse_args): Renamed to ...
20131         (bdesc_args): This.  Add IX86_BUILTIN_PF2ID, IX86_BUILTIN_PFRCP,
20132         IX86_BUILTIN_PFRSQRT, IX86_BUILTIN_PI2FD, IX86_BUILTIN_PF2IW,
20133         IX86_BUILTIN_PSWAPDSI, IX86_BUILTIN_PSWAPDSF and
20134         IX86_BUILTIN_FABSQ.
20135         (bdesc_1arg): Moved to ...
20136         (bdesc_args): Here.
20137         (ix86_init_mmx_sse_builtins): Updated.  Replace Prescott New
20138         Instructions in comments with SSE3.
20139         (ix86_expand_sse_operands_builtin): Renamed to ...
20140         (ix86_expand_args_builtin): This.  Updated.
20141         (ix86_expand_unop1_builtin): Update comments.
20142         (ix86_expand_builtin): Updated.
20143
20144 2008-04-29  Richard Guenther  <rguenther@suse.de>
20145
20146         PR tree-optimization/36078
20147         * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely):
20148         Update virtual SSA form after cleaning up the CFG.
20149
20150 2008-04-29  Richard Guenther  <rguenther@suse.de>
20151
20152         PR middle-end/15255
20153         * fold-const.c (fold_binary): Fold (A + A) * C to A * 2*C.
20154
20155 2008-04-29  Richard Guenther  <rguenther@suse.de>
20156
20157         * tree-ssa-alias.c (finalize_ref_all_pointers): Remove.
20158         (compute_may_aliases): Do not call finalize_ref_all_pointers.
20159         (compute_flow_insensitive_aliasing): Do not treat
20160         PTR_IS_REF_ALL pointers special.
20161         (get_smt_for): Likewise.
20162         (may_alias_p): Re-structure.
20163         (is_escape_site): A ref-all pointer conversion is not an escape site.
20164         * tree-ssa-structalias.c (find_what_p_points_to): Do not treat
20165         PTR_IS_REF_ALL pointers special.
20166         * tree-ssa-structalias.h (struct alias_info): Remove
20167         ref_all_symbol_mem_tag field.
20168         (PTR_IS_REF_ALL): Remove.
20169
20170 2008-04-29  Richard Guenther  <rguenther@suse.de>
20171
20172         PR middle-end/36077
20173         * fold-const.c (extract_muldiv_1): In combining division constants
20174         make sure to never overflow.
20175
20176 2008-04-29  Nick Clifton  <nickc@redhat.com>
20177
20178         * doc/tm.texi (RETURN_ADDR_RTX): Fix typo.
20179
20180 2008-04-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
20181
20182         PR bootstrap/35169
20183         * optc-gen.awk: Work around HP-UX/IA awk bug.
20184
20185 2008-04-28  Danny Smith  <dannysmith@users.sourceforge.net>
20186
20187         * config/i386/cygming-crtend.c (register_frame_ctor): Revert my
20188         2008-04-25 commit.
20189
20190 2008-04-28  Uros Bizjak  <ubizjak@gmail.com>
20191
20192         PR target/36073
20193         * config/i386/i386.md
20194         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit):
20195         Change operand 1 predicate to nonimmediate_operand.
20196
20197 2008-04-28  Jakub Jelinek  <jakub@redhat.com>
20198
20199         PR debug/36060
20200         * dwarf2out.c (struct die_struct): Mark as chain_circular through
20201         die_sub field.
20202         * gengtype.c (walk_type, write_func_for_structure): Handle
20203         chain_circular.
20204         * doc/gty.texi: Document chain_circular.
20205
20206 2008-04-28  Richard Guenther  <rguenther@suse.de>
20207
20208         PR tree-optimization/36066
20209         * tree-vrp.c (execute_vrp): Cleanup the CFG only after finalizing
20210         SCEV and loop.
20211
20212 2008-04-28  Uros Bizjak  <ubizjak@gmail.com>
20213
20214         PR target/36064
20215         * config/i386/i386.md
20216         (floatdi<X87MODEF:mode>2_i387_with_xmm splitters):
20217         Use match_scratch instead of match_operand for operands 3 and 4.
20218
20219 2008-04-27  Richard Guenther  <rguenther@suse.de>
20220
20221         PR tree-optimization/18754
20222         PR tree-optimization/34223
20223         * tree-pass.h (pass_complete_unrolli): Declare.
20224         * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Print
20225         loop size before and after unconditionally of UL_NO_GROWTH in effect.
20226         Rewrite loop into loop closed SSA form if it is not already.
20227         (tree_unroll_loops_completely): Re-structure to iterate over
20228         innermost loops with intermediate CFG cleanups.
20229         Unroll outermost loops only if requested or the code does not grow
20230         doing so.
20231         * tree-ssa-loop.c (gate_tree_vectorize): Don't shortcut if no
20232         loops are available.
20233         (tree_vectorize): Instead do so here.
20234         (tree_complete_unroll): Also unroll outermost loops.
20235         (tree_complete_unroll_inner): New function.
20236         (gate_tree_complete_unroll_inner): Likewise.
20237         (pass_complete_unrolli): New pass.
20238         * tree-ssa-loop-manip.c (find_uses_to_rename_use): Only record
20239         uses outside of the loop.
20240         (tree_duplicate_loop_to_header_edge): Only verify loop-closed SSA
20241         form if it is available.
20242         * tree-flow.h (tree_unroll_loops_completely): Add extra parameter.
20243         * passes.c (init_optimization_passes): Schedule complete inner
20244         loop unrolling pass before the first CCP pass after final inlining.
20245
20246 2008-04-27  Nathan Sidwell  <nathan@codesourcery.com>
20247
20248         * targhooks.h (default_emutls_var_fields,
20249         default_emutls_var_init): Declare.
20250         * tree.h (DECL_THREAD_LOCAL): Compare against TLS_MODEL_REAL.
20251         * target.h (struct gcc_target): Add struct emutls member.
20252         * target-def.h (TARGET_EMUTLS_GET_ADDRESS,
20253         TARGET_EMUTLS_REGISTER_COMMON, TARGET_EMUTLS_VAR_SECTION,
20254         TARGET_EMUTLS_TMPL_SECTION, TARGET_EMUTLS_VAR_PREFIX,
20255         TARGET_EMUTLS_TMPL_PREFIX, TARGET_EMUTLS_VAR_FIELDS,
20256         TARGET_EMUTLS_VAR_INIT, TARGET_EMUTLS_DEBUG_FORM_TLS_ADDRESS,
20257         TARGET_EMUTLS_VAR_ALIGN_FIXED, TARGET_EMUTLS): New.
20258         (TARGET_INITIALIZER): Add TARGET_EMUTLS.
20259         * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS,
20260         BUILT_IN_EMUTLS_REGISTER_COMMON): Get name from targetm structure.
20261         * dwarf2out.c (loc_descriptor_from_tree_1): Check if emutls can
20262         emit debug information.
20263         * coretypes.h (tls_model): Add TLS_MODEL_EMULATED, TLS_MODEL_REAL.
20264         * varasm.c: Include targhooks.h.
20265         (emutls_object_section, emutls_tmpl_section): New.
20266         (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): Remove.
20267         (EMUTLS_SEPARATOR): New.
20268         (prefix_name): New.
20269         (get_emutls_object_name): New.
20270         (default_emutls_var_fields): New, broken out of ...
20271         (get_emutls_object_type): ... here.  Adjust to use target hooks.
20272         (get_emutls_init_templ_addr): Adjust to use target hooks.
20273         (emutls_decl): Adjust to use target hooks.
20274         (emutls_finish): Likewise.
20275         (default_emutls_var_init): New, broken out of ...
20276         (assemble_variable): ... here.  Adjust to use target hooks.
20277         * output.h (enum section_category): Add SECCAT_EMUTLS_VAR,
20278         SECCAT_EMUTLS_TMPL.
20279         * c-common.c (handle_section_attribute): Prevent overriding
20280         sections for emulated tls with special sections.
20281         * config/i386/i386.c (x86_64_elf_select_section): Add
20282         SECCAT_EMUTLS_VAR and SECCAT_EMUTLS_TMPL.
20283         (x86_64_elf_unique_section): Likewise.
20284         * config/vxworks.c: Include tree.h.
20285         (vxworks_emutls_var_fields, vxworks_emutls_var_init): New.
20286         (vxworks_override_options): Set TLS scheme.
20287         * doc/tm.texi (Emulated TLS): New node.
20288
20289 2008-04-26  Simon Baldwin <simonb@google.com>
20290
20291         PR c/35652
20292         * builtins.c (c_strlen): Suppressed multiple warnings that can occur
20293         with propagated string constants.
20294
20295 2008-04-26  Uros Bizjak  <ubizjak@gmail.com>
20296
20297         * config/i386/i386.md (fix_trunc<mode>_i387_fisttp_with_temp): Use 'X'
20298         constraint for operand 2 when operand 0 is memory operand.
20299         (fix_truncdi_i387_with_temp): : Use 'X' constraint for operand 4 when
20300         operand 0 is memory operand.
20301         (fix_trunc<mode>_i387_with_temp): Ditto.
20302         (*floatsi<mode>2_vector_mixed_with_temp): Use 'X' constraint for
20303         operand 2 when operand 1 is memory operand.
20304         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_with_temp): Ditto.
20305         (*floatsi<mode>2_vector_sse_with_temp): Ditto.
20306         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_with_temp): Ditto.
20307         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp): Ditto.
20308         (floatdi<X87MODEF:mode>2_i387_with_xmm): Use 'X' constraint for
20309         operands 2,3 and 4 when operand 1 is memory operand.
20310         (fistdi2_with_temp): Use 'X' constraint for operand 2 when operand 0
20311         is memory operand.
20312         (fistdi2_floor_with_temp): Ditto.
20313         (fist<mode>2_floor_with_temp): Ditto.
20314         (fistdi2_ceil_with_temp): Ditto.
20315         (fist<mode>2_ceil_with_temp): Ditto.
20316         (*truncdfsf_fast_mixed): Merge alternatives 0 and 1.
20317
20318 2008-04-26  David Daney  <ddaney@avtrex.com>
20319
20320         * config/mips/mips.md (UNSPEC_COMPARE_AND_SWAP_12): New
20321         unspec_volitile.
20322         (UNSPEC_SYNC_OLD_OP, UNSPEC_SYNC_NEW_OP, UNSPEC_SYNC_EXCHANGE,
20323         UNSPEC_MEMORY_BARRIER, UNSPEC_SET_GOT_VERSION,
20324         UNSPEC_UPDATE_GOT_VERSION): Renumber.
20325         (sync_compare_and_swap<mode>): New expand for QI and HI modes.
20326         (compare_and_swap_12): New insn.
20327         * config/mips/mips-protos.h (mips_expand_compare_and_swap_12): Declare.
20328         * config/mips/mips.c (mips_force_binary): New function.
20329         (mips_emit_int_order_test, mips_expand_synci_loop): Use it.
20330         (mips_expand_compare_and_swap_12): New function.
20331         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP_12): New macro.
20332
20333 2008-04-25  Jan Hubicka  <jh@suse.cz>
20334
20335         PR testsuite/35843
20336         * cfgexpand.c (pass_expand): Turn into RTL pass.
20337         * passes.c (execute_one_pass): Do pass typechecking after execution.
20338         * tree-pass.h (pass_expand): Turn into RTL pass.
20339
20340         * function.h (struct rtl_data): Move here fields
20341         accesses_prior_frames, calls_eh_return, saves_all_registers,
20342         has_nonlocal_goto, has_asm_statement, is_thunk,
20343         all_throwers_are_sibcalls, limit_stack, profile, uses_const_pool,
20344         uses_pic_offset_table, uses_eh_lsda, tail_call_emit,
20345         arg_pointer_save_area_init from struct function; turn into bool.
20346         (struct function): Move
20347         calls_eh_return, saves_all_registers, has_nonlocal_goto,
20348         has_asm_statement, is_thunk, all_throwers_are_sibcalls, limit_stack,
20349         profile, uses_const_pool, uses_pic_offset_table, uses_eh_lsda,
20350         tail_call_emit, arg_pointer_save_area_init
20351         into struct rtl_data.  Remove recursive_call_emit and gimplified flags.
20352         (current_function_returns_struct, current_function_returns_pcc_struct,
20353         current_function_calls_setjmp, current_function_calls_alloca,
20354         current_function_accesses_prior_frames,
20355         current_function_calls_eh_return, current_function_is_thunk,
20356         current_function_stdarg, current_function_profile,
20357         current_function_limit_stack, current_function_uses_pic_offset_table,
20358         current_function_uses_const_pool, current_function_has_nonlocal_label,
20359         current_function_saves_all_registers,
20360         current_function_has_nonlocal_goto,
20361         current_function_has_asm_statement): Remove accesor macros.
20362         * ra-conflict.c (global_conflicts): Update.
20363         * tree-tailcall.c (suitable_for_tail_opt_p): Update.
20364         (suitable_for_tail_call_opt_p): Update.
20365         * builtins.c (expand_builtin_return_addr): Update.
20366         (expand_builtin_setjmp_setup): Update.
20367         (expand_builtin_nonlocal_goto): Update.
20368         * final.c (final_start_function): Update.
20369         (profile_function): Update.
20370         (leaf_function_p): Update.
20371         (only_leaf_regs_used): Update.
20372         * df-scan.c (df_get_exit_block_use_set): Update.
20373         * dojump.c (clear_pending_stack_adjust): Update.
20374         * tree-stdarg.c (gate_optimize_stdarg): Update.
20375         * gimple-low.c (lower_function_body): Update.
20376         * global.c (compute_regsets): Update.
20377         (global_alloc): Update.
20378         * dwarf2out.c (dwarf2out_begin_prologue): Update.
20379         * expr.c (expand_assignment): Update.
20380         * dse.c (dse_step0): Update.
20381         (dse_step1): Update.
20382         * c-decl.c (store_parm_decls): Update.
20383         * local-alloc.c (combine_regs): Update.
20384         (find_free_reg): Update.
20385         * function.c (assign_parms_augmented_arg_list): Update.
20386         (assign_parm_find_data_types): Update.
20387         (assign_parms): Update.
20388         (allocate_struct_function): Update.
20389         (expand_function_start): Update.
20390         (expand_function_end): Update.
20391         (get_arg_pointer_save_area): Update.
20392         (thread_prologue_and_epilogue_insns): Update.
20393         (rest_of_match_asm_constraints): Update.
20394         * stor-layout.c (variable_size): Update.
20395         * gcse.c (gcse_main): Update.
20396         (bypass_jumps): Update.
20397         * gimplify.c (gimplify_function_tree): Update.
20398         * calls.c (emit_call_1): Update.
20399         (expand_call): Update.
20400         * bt-load.c (compute_defs_uses_and_gen): Update.
20401         * except.c (sjlj_assign_call_site_values): Update.
20402         (sjlj_emit_function_enter): Update.
20403         (can_throw_external): Update.
20404         (set_nothrow_function_flags): Update.
20405         (expand_builtin_unwind_init): Update.
20406         (expand_eh_return): Update.
20407         (convert_to_eh_region_ranges): Update.
20408         (output_function_exception_table): Update.
20409         * emit-rtl.c (gen_tmp_stack_mem): Update.
20410         * cfgexpand.c (expand_used_vars): Update.
20411         (tree_expand_cfg): Update.
20412         * cfgcleanup.c (rest_of_handle_jump): Update.
20413         * explow.c (allocate_dynamic_stack_space): Update.
20414         * varasm.c (assemble_start_function): Update.
20415         (force_const_mem): Update.
20416         (mark_constant_pool): Update.
20417         * tree-optimize.c (tree_rest_of_compilation): Update.
20418         * stack-ptr-mod.c (notice_stack_pointer_modification): Update.
20419         * tree-cfg.c (notice_special_calls): Update.
20420         (is_ctrl_altering_stmt): Update.
20421         (tree_can_make_abnormal_goto): Update.
20422         (tree_purge_dead_abnormal_call_edges): Update.
20423         * config/alpha/predicates.md: Update.
20424         * config/alpha/alpha.c (alpha_sa_mask): Update.
20425         (alpha_sa_size): Update.
20426         (alpha_does_function_need_gp): Update.
20427         (alpha_expand_prologue): Update.
20428         (alpha_start_function): Update.
20429         (alpha_output_function_end_prologue): Update.
20430         (alpha_expand_epilogue): Update.
20431         * config/frv/frv.c (frv_stack_info): Update.
20432         (frv_expand_epilogue): Update.
20433         * config/s390/s390.c (s390_regs_ever_clobbered): Update.
20434         (s390_register_info): Update.
20435         (s390_frame_info): Update.
20436         (s390_init_frame_layout): Update.
20437         (s390_can_eliminate): Update.
20438         (save_gprs): Update.
20439         * config/spu/spu.c (spu_split_immediate): Update.
20440         (need_to_save_reg): Update.
20441         (spu_expand_prologue): Update.
20442         (spu_expand_epilogue): Update.
20443         * config/sparc/sparc.md: Update.
20444         * config/sparc/sparc.c (eligible_for_return_delay): Update.
20445         (sparc_tls_got): Update.
20446         (legitimize_pic_address): Update.
20447         (sparc_emit_call_insn): Update.
20448         (sparc_expand_prologue): Update.
20449         (output_return): Update.
20450         (print_operand): Update.
20451         (sparc_function_ok_for_sibcall): Update.
20452         * config/sparc/sparc.h (EXIT_IGNORE_STACK): Update.
20453         * config/m32r/m32r.md: Update.
20454         * config/m32r/m32r.c (MUST_SAVE_RETURN_ADDR): Update.
20455         (m32r_compute_frame_size): Update.
20456         (m32r_expand_prologue): Update.
20457         (m32r_expand_epilogue): Update.
20458         (m32r_legitimize_pic_address): Update.
20459         * config/m32r/m32r.h (FRAME_POINTER_REQUIRED): Update.
20460         * config/i386/linux.h (SUBTARGET_FRAME_POINTER_REQUIRED): Update.
20461         * config/i386/i386.c (ix86_frame_pointer_required): Update.
20462         (gen_push): Update.
20463         (ix86_save_reg): Update.
20464         (ix86_compute_frame_layout): Update.
20465         (ix86_expand_prologue): Update.
20466         (ix86_expand_epilogue): Update.
20467         * config/sh/sh.c (output_stack_adjust): Update.
20468         (calc_live_regs): Update.
20469         (sh5_schedule_saves): Update.
20470         (sh_expand_prologue): Update.
20471         (sh_expand_epilogue): Update.
20472         (sh_setup_incoming_varargs): Update.
20473         (sh_allocate_initial_value): Update.
20474         (sh_get_pr_initial_val): Update.
20475         * config/sh/sh.h (SHMEDIA_REGS_STACK_ADJUST): Update.
20476         * config/sh/sh.md (label:): Update.
20477         * config/avr/avr.c (out_movhi_mr_r): Update.
20478         * config/crx/crx.h (enum): Update.
20479         * config/xtensa/xtensa.h (along): Update.
20480         * config/stormy16/stormy16.c Update.
20481         (xstormy16_compute_stack_layout): Update.
20482         * config/fr30/fr30.c (MUST_SAVE_RETURN_POINTER): Update.
20483         (fr30_expand_prologue): Update.
20484         * config/cris/cris.c (cris_conditional_register_usage): Update.
20485         (cris_reg_saved_in_regsave_area): Update.
20486         (cris_initial_frame_pointer_offset): Update.
20487         (cris_simple_epilogue): Update.
20488         (cris_expand_prologue): Update.
20489         (cris_expand_epilogue): Update.
20490         (cris_expand_pic_call_address): Update.
20491         (cris_asm_output_symbol_ref): Update.
20492         (cris_asm_output_label_ref): Update.
20493         * config/cris/cris.md Update.
20494         * config/iq2000/iq2000.c (compute_frame_size): Update.
20495         (iq2000_expand_epilogue): Update.
20496         * config/mt/mt.h (save_direction): Update.
20497         * config/mn10300/mn10300.c (mn10300_function_value): Update.
20498         * config/ia64/ia64.c (ia64_compute_frame_size): Update.
20499         (ia64_secondary_reload_class): Update.
20500         * config/m68k/m68k.c (m68k_save_reg): Update.
20501         (m68k_expand_prologue): Update.
20502         (m68k_expand_epilogue): Update.
20503         (legitimize_pic_address): Update.
20504         * config/rs6000/rs6000.c (rs6000_got_register): Update.
20505         (first_reg_to_save): Update.
20506         (first_altivec_reg_to_save): Update.
20507         (compute_vrsave_mask): Update.
20508         (compute_save_world_info): Update.
20509         (rs6000_stack_info): Update.
20510         (spe_func_has_64bit_regs_p): Update.
20511         (rs6000_ra_ever_killed): Update.
20512         (rs6000_emit_eh_reg_restore): Update.
20513         (rs6000_emit_allocate_stack): Update.
20514         (rs6000_emit_prologue): Update.
20515         (rs6000_emit_epilogue): Update.
20516         (rs6000_output_function_epilogue): Update.
20517         (output_profile_hook): Update.
20518         (rs6000_elf_declare_function_name): Update.
20519         * config/rs6000/rs6000.h (rs6000_args): Update.
20520         * config/rs6000/rs6000.md: Update.
20521         * config/mcore/mcore.c (mcore_expand_prolog): Update.
20522         * config/arc/arc.c (arc_output_function_epilogue): Update.
20523         * config/arc/arc.h (FRAME_POINTER_REQUIRED): Update.
20524         * config/darwin.c (machopic_function_base_name): Update.
20525         * config/score/score3.c (score3_compute_frame_size): Update.
20526         (rpush): Update.
20527         (rpop): Update.
20528         (score3_epilogue): Update.
20529         * config/score/score7.c (score7_compute_frame_size): Update.
20530         (score7_prologue): Update.
20531         (score7_epilogue): Update.
20532         * config/score/score.h (FRAME_POINTER_REQUIRED): Update.
20533         * config/arm/linux-elf.h (SUBTARGET_FRAME_POINTER_REQUIRED): Update.
20534         * config/arm/arm.c (use_return_insn): Update.
20535         (require_pic_register): Update.
20536         (arm_load_pic_register): Update.
20537         (arm_compute_save_reg0_reg12_mask): Update.
20538         (arm_compute_save_reg_mask): Update.
20539         (thumb1_compute_save_reg_mask): Update.
20540         (output_return_instruction): Update.
20541         (arm_output_function_prologue): Update.
20542         (arm_output_epilogue): Update.
20543         (arm_get_frame_offsets): Update.
20544         (arm_expand_prologue): Update.
20545         (thumb_pushpop): Update.
20546         (thumb_exit): Update.
20547         (thumb1_expand_prologue): Update.
20548         (thumb1_expand_epilogue): Update.
20549         (arm_unwind_emit): Update.
20550         (arm_output_fn_unwind): Update.
20551         * config/arm/arm.h (FRAME_POINTER_REQUIRED): Update.
20552         * config/arm/arm.md: Update.
20553         * config/pa/pa.md: Update.
20554         * config/pa/pa.c (legitimize_pic_address): Update.
20555         (compute_frame_size): Update.
20556         (hppa_expand_prologue): Update.
20557         (hppa_expand_epilogue): Update.
20558         (borx_reg_operand): Update.
20559         * config/pa/pa.h (FRAME_POINTER_REQUIRED): Update.
20560         (HARD_REGNO_RENAME_OK): Update.
20561         * config/mips/mips.c (mips_global_pointer): Update.
20562         (mips_save_reg_p): Update.
20563         (mips_compute_frame_info): Update.
20564         (mips_frame_pointer_required): Update.
20565         (mips_expand_prologue): Update.
20566         (mips_expand_epilogue): Update.
20567         (mips_can_use_return_insn): Update.
20568         (mips_reorg_process_insns): Update.
20569         * config/v850/v850.c (compute_register_save_size): Update.
20570         * config/mmix/mmix.h (FRAME_POINTER_REQUIRED): Update.
20571         * config/mmix/mmix.c (along): Update.
20572         (mmix_expand_epilogue): Update.
20573         * config/bfin/bfin.c (legitimize_pic_address): Update.
20574         (must_save_p): Update.
20575         (stack_frame_needed_p): Update.
20576         (add_to_reg): Update.
20577         (bfin_expand_prologue): Update.
20578         * stmt.c (expand_asm_operands): Update.
20579         * reload1.c (reload): Update.
20580         (init_elim_table): Update.
20581
20582 2008-04-25  Bob Wilson  <bob.wilson@acm.org>
20583
20584         * optabs.c (expand_float): Fix REG_EQUAL for UNSIGNED_FLOAT libcall.
20585
20586 2008-04-25  H.J. Lu  <hongjiu.lu@intel.com>
20587
20588         * config/i386/sse.md (mov<mode>): Replace SSEMODEI with SSEMODE.
20589         (*mov<mode>_internal): Likewise.  Support V4SF and V2DF.
20590         (mov<mode>): Removed.
20591         (*movv4sf_internal): Likewise.
20592         (*movv2df_internal): Likewise.
20593
20594 2008-04-25  Pompapathi V Gadad <Pompapathi.V.Gadad@nsc.com>
20595
20596         * config.gcc (crx-*-elf): Remove deprecation.
20597
20598 2008-04-25  Danny Smith  <dannysmith@users.sourceforge.net>
20599
20600         * config/i386/cygming-crtend.c (register_frame_ctor): Register
20601         __gcc_deregister_frame with atexit.
20602         (deregister_frame_dtor): Remove.
20603
20604 2008-04-24  Nathan Froyd  <froydnj@codesourcery.com>
20605             Nathan Sidwell  <nathan@codesourcery.com>
20606
20607         * config/rs6000/rs6000.opt (mspe): Remove Var property.
20608         (misel): Likewise.
20609         * config/rs6000/rs6000.h (rs6000_spe): Declare.
20610         (rs6000_isel): Likewise.
20611         * config/rs6000/rs6000.c (rs6000_spe): New variable.
20612         (rs6000_isel): New variable.
20613         (rs6000_handle_option): Handle OPT_mspe and OPT_misel.
20614
20615 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
20616
20617         PR c++/35758
20618         * c-common.c (handle_vector_size_attribute): Call
20619         lang_hooks.types.reconstruct_complex_type instead of
20620         reconstruct_complex_type.
20621         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Likewise.
20622         * config/spu/spu.c (spu_handle_vector_attribute): Likewise.
20623         * langhooks.h (struct lang_hooks_for_types): Add
20624         reconstruct_complex_type hook.
20625         * langhooks-def.h (LANG_HOOKS_RECONSTRUCT_COMPLEX_TYPE): Define.
20626         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add it.
20627
20628 2008-04-24  Richard Guenther  <rguenther@suse.de>
20629
20630         * c-common.h (check_builtin_function_arguments): Declare.
20631         * c-common.c (validate_nargs): New function.
20632         (check_builtin_function_arguments): Likewise.
20633         * c-typeck.c (build_function_call): Call
20634         check_builtin_function_arguments.
20635         * builtins.c (fold_builtin_classify): Remove error reporting code.
20636         (fold_builtin_unordered_cmp): Likewise.
20637         (fold_builtin_1): Likewise.
20638         (fold_builtin_n): Likewise.
20639
20640 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
20641
20642         PR tree-optimization/36008
20643         * fold-const.c (try_move_mult_to_index): If s == NULL, divide
20644         the original op1, rather than delta by step.
20645
20646 2008-04-22  Antoniu Pop  <antoniu.pop@gmail.com>
20647             Sebastian Pop  <sebastian.pop@amd.com>
20648
20649         * tree-parloops.c (take_address_of, eliminate_local_variables_1,
20650         eliminate_local_variables_stmt, eliminate_local_variables,
20651         separate_decls_in_loop_name, separate_decls_in_loop_stmt,
20652         separate_decls_in_loop, gen_parallel_loop): Make them work on a region
20653         of code delimited by two edges in the CFG.
20654         (separate_decls_in_loop_name): Renamed separate_decls_in_region_name.
20655         (separate_decls_in_loop_stmt): Renamed separate_decls_in_region_stmt.
20656         (separate_decls_in_loop): Renamed separate_decls_in_region.  Isolate
20657         the case of parallelisation of reductions.
20658         (expr_invariant_in_region_p): New.
20659
20660         * tree-flow.h (gather_blocks_in_sese_region): Declared.
20661         * tree-cfg.c (gather_blocks_in_sese_region): Extern.
20662
20663 2008-04-24  Ira Rosen  <irar@il.ibm.com>
20664             Richard Guenther  <rguenther@suse.de>
20665
20666         PR tree-optimization/36034
20667         * tree-vect-analyze.c (vect_analyze_group_access): SLP is
20668         incapable of dealing with loads with gaps.
20669
20670 2008-04-24  Rafael Espíndola  <espindola@google.com>
20671
20672         * tree-flow.h (vrp_evaluate_conditional): Change signature.
20673         * tree-ssa-propagate.c (fold_predicate_in): Update call to
20674         vrp_evaluate_conditional.
20675         * tree-vrp.c (vrp_evaluate_conditional_warnv): Remove.
20676         (vrp_evaluate_conditional): Split the cond argument.
20677         (vrp_visit_cond_stmt): Use vrp_evaluate_conditional_warnv_with_ops.
20678         (simplify_stmt_for_jump_threading): Update call to
20679         vrp_evaluate_conditional.
20680
20681 2008-04-24  Ira Rosen  <irar@il.ibm.com>
20682
20683         PR tree-optimization/35982
20684         * tree-vect-analyze.c (vect_check_interleaving): Check that the
20685         interleaved data-refs are of the same type.
20686
20687 2008-04-24  Danny Smith  <dannysmith@users.net>
20688
20689         * c-format.c (check_format_info_main): Use strncmp rather than a
20690         magic prefix to handle multichar length specs.
20691         * config/i386/msformat-c.c (format_length_info ms_printf_length_specs):
20692         Don't prefix "I64" and "I32" with '\0'.
20693
20694 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
20695
20696         PR target/36015
20697         * config/i386/i386.c (init_cumulative_args): Don't pass anything
20698         in registers for -m32 only if stdarg_p (fntype).
20699
20700 2008-04-24  Uros Bizjak  <ubizjak@gmail.com>
20701
20702         PR rtl-optimization/36006
20703         * expmed.c (store_fixed_bit_field): Copy op0 rtx before moving
20704         temp to op0 in order to avoid invalid rtx sharing.
20705
20706 2008-04-23  Paolo Bonzini  <bonzini@gnu.org>
20707
20708         * tree-cfg.c (verify_expr): Check with is_gimple_address.  Don't
20709         check TREE_INVARIANT.
20710         * tree-gimple.c (is_gimple_address): New.
20711         (is_gimple_invariant_address): Simplify using decl_address_invariant_p.
20712         * tree-gimple.h (is_gimple_address): New.
20713         * tree.h (decl_address_invariant_p): New.
20714         * tree.c (make_node_stat): Don't set TREE_INVARIANT.
20715         (build_string): Likewise.
20716         (decl_address_invariant_p): New, from is_gimple_invariant_address.
20717         (tree_invariant_p_1): Likewise.
20718         (save_expr): Use it.
20719         (tree_invariant_p): New.
20720         (skip_simple_arithmetic): Use it.
20721         (stabilize_reference_1): Use it.
20722         (recompute_tree_invariant_for_addr_expr): Don't update TREE_INVARIANT,
20723         simplify.
20724         (build1_stat): Drop code to compute TREE_INVARIANT.
20725         (build2_stat): Drop code to compute TREE_INVARIANT.
20726         (build3_stat): Drop code to compute TREE_INVARIANT.
20727         (build4_stat): Drop code to compute TREE_INVARIANT.
20728         (build5_stat): Drop code to compute TREE_INVARIANT.
20729         (build7_stat): Drop code to compute TREE_INVARIANT.
20730         (merge_dllimport_decl_attributes): Don't mention TREE_INVARIANT.
20731         * tree.h (struct tree_base): Remove invariant_flag.
20732         (TREE_INVARIANT): Remove.
20733         * builtins.c (build_string_literal): Don't set TREE_INVARIANT.
20734         (fold_builtin_expect): Check TREE_CONSTANT.
20735         * tree-ssa-ccp.c (fold_stmt_r): Adjust comment.
20736         * c-tree.h (c_expr_to_decl): Drop third parameter.
20737         * c-typeck.c (build_external_ref): Don't set TREE_INVARIANT.
20738         (build_c_cast): Don't set TREE_INVARIANT.
20739         (pop_init_level): Don't set TREE_INVARIANT.
20740         (c_objc_common_truthvalue_conversion): Don't set TREE_INVARIANT.
20741         * gimplify.c (gimplify_init_ctor_preeval): Add assertion, test
20742         TREE_CONSTANT.
20743         (gimplify_init_constructor): Don't set TREE_INVARIANT.
20744         (gimplify_addr_expr): Adjust comment.
20745         * tree-mudflap.c (mf_build_string):
20746         * print-tree.c (print_node): Don't print TREE_INVARIANT.
20747         * tree-nested.c (convert_nonlocal_reference): Adjust comment.
20748         * c-common.c (fix_string_type): Don't set TREE_INVARIANT.
20749         * langhooks-def.h (lhd_expr_to_decl): Drop third parameter.
20750         * langhooks.c (lhd_expr_to_decl): Drop third parameter.
20751         * langhooks.h (struct lang_hooks): Drop third parameter from
20752         expr_to_decl.
20753
20754 2008-04-23  Richard Guenther  <rguenther@suse.de>
20755
20756         PR tree-optimization/27799
20757         PR tree-optimization/32921
20758         PR tree-optimization/32624
20759         * tree-ssa-structalias.c (merge_smts_into): Only merge the
20760         SMTs aliases and the tag itself into the solution.
20761         * tree-ssa-alias.c (compute_flow_sensitive_aliasing): Do not
20762         merge the points-to solution back into the SMT aliases.
20763         (may_alias_p): Use alias_set_subset_of instead of
20764         aliases_conflict_p.  A pointer which points to
20765         memory with alias set zero may access any variable.
20766
20767 2008-04-23  Richard Guenther  <rguenther@suse.de>
20768
20769         * alias.c (alias_set_subset_of): Correctly handle asking
20770         if zero is a subset of an alias set with zero child.
20771         * tree-ssa-alias.c (have_common_aliases_p): Simplify logic.
20772         (compute_flow_insensitive_aliasing): Correctly walk all
20773         pointers.  Do not unnecessarily union sets.
20774
20775 2008-04-23  Richard Guenther  <rguenther@suse.de>
20776
20777         PR middle-end/36021
20778         * c-common.c (handle_alloc_size_attribute): Use type_num_arguments.
20779
20780 2008-04-22  Tomas Bily  <tbily@suse.cz>
20781
20782         * tree-cfg.c (verify_expr): Check for NON_LVALUE_EXPR as
20783         unreachable case.
20784         * tree-vrp.c (extract_range_from_unary_expr): Removed unused
20785         NON_LVALUE_EXPR.
20786         * tree-ssa-threadedge.c (simplify_control_stmt_condition): Likewise.
20787         * tree-ssa-structalias.c (get_constraint_for): Likewise.
20788         * tree-inline.c (estimate_num_insns_1): Likewise.
20789         * varasm.c (const_hash_1, compare_constant, copy_constant)
20790         (compute_reloc_for_constant, output_addressed_constants): Likewise.
20791         * emit-rtl.c (component_ref_for_mem_expr)
20792         (set_mem_attributes_minus_bitpos): Likewise.
20793         * expr.c (highest_pow2_factor, expand_expr_real_1, )
20794         (is_aligning_offset): Likewise.
20795         * dwarf2out.c (loc_descriptor_from_tree_1, add_bound_info): Likewise.
20796         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Likewise.
20797         * dojump.c (do_jump): Likewise.
20798         * builtins.c (get_pointer_alignment, get_memory_rtx)
20799         (integer_valued_real_p, fold_builtin_next_arg): Likewise.
20800         * tree-scalar-evolution.c (instantiate_parameters_1): Likewise.
20801
20802 2008-04-23  Jakub Jelinek  <jakub@redhat.com>
20803
20804         PR rtl-optimization/36017
20805         * builtins.c (expand_errno_check): Clear CALL_EXPR_TAILCALL before
20806         expanding the library call.
20807
20808 2008-04-22  Ian Lance Taylor  <iant@google.com>
20809
20810         * fold-const.c (pointer_may_wrap_p): Call int_size_in_bytes rather
20811         than size_in_bytes.
20812
20813 2008-04-22  Pat Haugen  <pthaugen@us.ibm.com>
20814
20815         * config/rs6000/rs6000.c (rs6000_register_move_cost): Increase cost
20816         of LR/CTR moves for Power6.
20817
20818 2008-04-22  Kenneth Zadeck  <zadeck@naturalbridge.com>
20819
20820         PR middle-end/36003
20821         * passes.c (init_optimization_passes): Remove
20822         pass_fast_rtl_byte_dce.
20823
20824 2008-04-22  Uros Bizjak  <ubizjak@gmail.com>
20825
20826         PR target/29096
20827         * config/i386/xmmintrin.h (_mm_cvtpi16_ps): Rearrange calls to
20828         builtin functions to generate faster code.
20829         (_mm_cvtpu16_ps): Ditto.
20830         (_mm_cvtpi32x2_ps): Ditto.
20831
20832 2008-04-22  Nick Clifton  <nickc@redhat.com>
20833
20834         * common.opt (ftree-loop-distribution): Add Optimization
20835         attribute.
20836
20837         * config/frv/frv.c (frv_stack_info): Use crtl instead of cfun.
20838         (frv_expand_builtin_va_start): Likewise.
20839
20840         * config/arm/arm.c (thumb_find_work_register): Fix location of
20841         argument register count.
20842
20843 2008-04-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
20844
20845         Support scheduling for ColdFire V1 and V3 microarchitecture.
20846         Improve scheduling of multiplication instructions.
20847
20848         * config/m68k/m68k.md (cpu): Add cfv1 and cfv3.  Rename cf_v2 to cfv1.
20849         (mac): New instruction attribute.
20850         * config/m68k/m68k.c (override_options): Handle cfv1, cfv3 and mac.
20851         (m68k_sched_mac): New variable.
20852         (m68k_sched_attr_type2, m68k_sched_md_init_global): Update.
20853         Handle cfv1 and cfv3.
20854         (max_insn_size): New static variable.
20855         (struct _sched_ib): New type.
20856         (sched_ib): New static variable.
20857         (sched_ib_size, sched_ib_filled, sched_ib_insn): Convert variables
20858         to fields of 'struct _sched_ib sched_ib'.  Update all uses.
20859         (m68k_sched_variable_issue): Add modeling of cfv3 instruction buffer.
20860         Update.
20861         (m68k_sched_md_init_global, m68k_sched_md_finish_global,
20862         m68k_sched_md_init, m68k_sched_md_finish): Handle cfv1 and cfv3.  Init
20863         new variables.  Update.
20864         (m68k_sched_dfa_pre_advance_cycle, m68k_sched_dfa_post_advance_cycle):
20865         Add modeling of cfv3 instruction buffer.  Update.
20866         * config/m68k/m68k-protos.h (m68k_sched_mac): Declare.
20867         * config/m68k/m68k.h (TUNE_CFV3): New macro.
20868         * config/m68k/cf.md: Change substrings 'cf_v2' to 'cfv12' or 'cfv123'.
20869         (cf_* reservations): Rename to cfv12 or cfv123 to indicate cores
20870         a particular reservation applies to.
20871         (type2): Reorganize attribute values.  Rename alu to alu_reg,
20872         alu_l to alu, move_l to omove.  Join move to alu.  Split mul
20873         to mul_l and mul_w.
20874         (cf_ib_*): Simplify description of instruction buffer.
20875         (cf_ib_w0, cf_ib_w4, cf_ib_w5, cf_ib_w6): Remove.
20876         (cf_mem): Split into cf_mem1 and cf_mem2.
20877         (cf_v2_move_??): Rename to cfv12_alu_??.
20878         (cf_v2_move_l_??): Rename to cfv12_omove_??.
20879         (cf_v2_mul_??): Remove reservations.
20880         (cfv12_mul_l_??, cfv12_mul_w_??, cfv12_mac_w_??, cfv12_mac_l_??,
20881         cfv12_emac_??, cfv12_emac_w_i0): New reservations.
20882         (cfv12_rts, cfv12_call, cfv12_bcc, cfv12_bra, cfv12_jmp): Move to
20883         appropriate place.
20884         (cfv3_alu_10, cfv3_omove_10, cfv3_alu_i0, cfv3_omove_i0, cfv3_alu_01,
20885         cfv3_alu_0i, cfv3_alu_11, cfv3_omove_11, cfv3_alu_i1, cfv3_omove_i1,
20886         cfv3_alu_1i, cfv3_omove_1i, cfv3_pea_11, cfv3_pea_i1, cfv3_mul_w_10,
20887         cfv3_mul_l_10, cfv3_mul_w_i0, cfv3_mac_w_10, cfv3_mac_l_10,
20888         cfv3_mac_w_i0, cfv3_emac_10, cfv3_emac_w_i0, cfv3_rts, cfv3_call,
20889         cfv3_bcc, cfv3_bra, cfv3_jmp): New reservations.
20890         (cfv3_*_1, cfv3_*_2, cfv3_*_3): New instruction reservations that are
20891         expansions of the above reservations for instructions of sizes
20892         1, 2 and 3 words.
20893
20894 2008-04-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
20895
20896         * rtl-factoring.c (collect_patterns_seqs): Handle CC0 targets.
20897
20898 2008-04-21  Adam Nemet  <anemet@caviumnetworks.com>
20899
20900         * coverage.c: Include tree-pass.h.
20901         (coverage_counter_alloc): Print da_file_name to the dump file.
20902
20903 2008-04-21  Kenneth Zadeck  <zadeck@naturalbridge.com>
20904
20905         * sbitmap.c (sbitmap_range_empty_p): New function.
20906         * sbitmap.h (sbitmap_range_empty_p): New function.
20907         * bitmap.h: Now includes obstack.h.
20908
20909 2008-04-21  Richard Sandiford  <rsandifo@nildram.co.uk>
20910             Kenneth Zadeck  <zadeck@naturalbridge.com>
20911
20912         * dbgcnt.def (ra_byte_scan): Added.
20913         * dbgcnt.c (dbg_cnt): Added code to print message to dump_file
20914         when the last hit happens for a counter.
20915         * timevar.def (TV_DF_BYTE_LR): New variable.
20916         * tree-pass.h (pass_fast_rtl_byte_dce): New pass.
20917         * passes.c (pass_fast_rtl_byte_dce): New pass.
20918         * fwprop.c (update_df): Added mode to call df_ref_create.
20919         Renamed DF_REF_WIDTH and DF_REF_OFFSET to DF_REF_EXTRACT_WIDTH and
20920         DF_REF_EXTRACT_OFFSET.
20921         * df.h (DF_BYTE_LR, DF_BYTE_LR_BB_INFO, DF_BYTE_LR_IN,
20922         DF_BYTE_LR_OUT, df_byte_lr): New macro.
20923         (df_mm): New enum.
20924         (df_ref_extract): Added mode field.
20925         (DF_REF_WIDTH, DF_REF_OFFSET) Renamed to DF_REF_EXTRACT_WIDTH and
20926         DF_REF_EXTRACT_OFFSET.
20927         (DF_REF_EXTRACT_MODE): New macro.
20928         (df_byte_lr_bb_info): New structure.
20929         (df_print_byte_regset, df_compute_accessed_bytes,
20930         df_byte_lr_add_problem, df_byte_lr_get_regno_start,
20931         df_byte_lr_get_regno_len, df_byte_lr_simulate_defs,
20932         df_byte_lr_simulate_uses,
20933         df_byte_lr_simulate_artificial_refs_at_top,
20934         df_byte_lr_simulate_artificial_refs_at_end,
20935         df_compute_accessed_bytes): New function.
20936         (df_ref_create): Add parameter.
20937         (df_byte_lr_get_bb_info): New inline function.
20938         * df-scan.c (df_ref_record, df_uses_record,
20939         df_ref_create_structure): Added mode parameter.
20940         (df_ref_create, df_notes_rescan, df_ref_record, df_def_record_1,
20941         df_defs_record, df_uses_record, df_get_conditional_uses,
20942         df_get_call_refs, df_insn_refs_collect, df_bb_refs_collect,
20943         df_entry_block_defs_collect, df_exit_block_uses_collect):
20944         Added mode parameter to calls to df_ref_record, df_uses_record,
20945         df_ref_create_structure.
20946         (df_ref_equal_p, df_ref_compare): Added test for modes.
20947         (df_ref_create_structure): Added code to set mode.  Renamed
20948         DF_REF_WIDTH and DF_REF_OFFSET to DF_REF_EXTRACT_WIDTH and
20949         DF_REF_EXTRACT_OFFSET.
20950         * df-core.c (df_print_byte_regset): New function.
20951         * df-byte-scan.c: New file.
20952         * df-problems.c (df_rd_transfer_function): Removed unnecessary
20953         calls to BITMAP_FREE.
20954         (df_byte_lr_problem_data, df_problem problem_BYTE_LR): New structure.
20955         (df_byte_lr_get_regno_start, df_byte_lr_get_regno_len,
20956         df_byte_lr_set_bb_info, df_byte_lr_free_bb_info,
20957         df_byte_lr_check_regs, df_byte_lr_expand_bitmap,
20958         df_byte_lr_alloc, df_byte_lr_reset, df_byte_lr_bb_local_compute,
20959         df_byte_lr_local_compute, df_byte_lr_init,
20960         df_byte_lr_confluence_0, df_byte_lr_confluence_n,
20961         df_byte_lr_transfer_function, df_byte_lr_free,
20962         df_byte_lr_top_dump, df_byte_lr_bottom_dump,
20963         df_byte_lr_add_problem, df_byte_lr_simulate_defs,
20964         df_byte_lr_simulate_uses,
20965         df_byte_lr_simulate_artificial_refs_at_top,
20966         df_byte_lr_simulate_artificial_refs_at_end): New function.
20967         * dce.c (byte_dce_process_block): New function.
20968         (dce_process_block): au is now passed in rather than computed
20969         locally.  Changed loops that look at artificial defs to not look
20970         for conditional or partial ones, because there never are any.
20971         (fast_dce): Now is able to drive byte_dce_process_block or
20972         dce_process_block depending on the kind of dce being done.
20973         (rest_of_handle_fast_dce): Add parameter to fast_dce.
20974         (rest_of_handle_fast_byte_dce): New function.
20975         (rtl_opt_pass pass_fast_rtl_byte_dce): New pass.
20976         * Makefile.in (df-byte-scan.o, debugcnt.o): Added dependencies.
20977
20978 2008-04-21  Daniel Franke  <franke.daniel@gmail.com>
20979
20980         PR fortran/35019
20981         * gcc.h: Added fortran options that take arguments to
20982         DEFAULT_SWITCH_TAKES_ARG and DEFAULT_WORD_SWITCH_TAKES_ARG
20983         macros.
20984
20985 2008-04-20  Eric Botcazou  <ebotcazou@adacore.com>
20986
20987         * tree-sra.c (sra_walk_expr) <VIEW_CONVERT_EXPR>: Disable
20988         scalarization if on the LHS and not a full access.
20989
20990 2008-04-20  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
20991
20992         * Makefile.in (s-gtyp-input): Remove tmp-gi.list before writing it.
20993
20994 2008-04-18  Rafael Espíndola  <espindola@google.com>
20995
20996         * tree-vrp.c (find_case_label_index): Fix the binary search.
20997         (find_case_label_range): New.
20998         (vrp_visit_switch_stmt): Use find_case_label_range.
20999         (simplify_switch_using_ranges): Use find_case_label_range.
21000
21001 2008-04-18  Eric Botcazou  <ebotcazou@adacore.com>
21002
21003         * gimplify.c (gimplify_modify_expr_rhs) <COND_EXPR>: Gimplify the LHS
21004         using the is_gimple_lvalue predicate instead of is_gimple_min_lval.
21005
21006 2008-04-18  Tom Tromey  <tromey@redhat.com>
21007
21008         PR libcpp/15500:
21009         * doc/cpp.texi (Implementation-defined behavior): Mention
21010         -finput-charset.
21011
21012 2008-04-18  Ian Lance Taylor  <iant@google.com>
21013
21014         * fold-const.c (pointer_may_wrap_p): New static function.
21015         (fold_comparison): Add another test for pointer overflow.  Use
21016         pointer_may_wrap_p to disable some false positives.
21017
21018 2008-04-18  Kris Van Hees <kris.van.hees@oracle.com>
21019
21020         * c-common.c (CHAR16_TYPE, CHAR32_TYPE): New macros.
21021         (fname_as_string): Match updated cpp_interpret_string prototype.
21022         (fix_string_type): Support char16_t* and char32_t*.
21023         (c_common_nodes_and_builtins): Add char16_t and char32_t (and
21024         derivative) nodes.  Register as builtin if C++0x.
21025         (c_parse_error): Support CPP_CHAR{16,32}.
21026         * c-common.h (RID_CHAR16, RID_CHAR32): New elements.
21027         (enum c_tree_index) <CTI_CHAR16_TYPE, CTI_SIGNED_CHAR16_TYPE,
21028         CTI_UNSIGNED_CHAR16_TYPE, CTI_CHAR32_TYPE, CTI_SIGNED_CHAR32_TYPE,
21029         CTI_UNSIGNED_CHAR32_TYPE, CTI_CHAR16_ARRAY_TYPE,
21030         CTI_CHAR32_ARRAY_TYPE>: New elements.
21031         (char16_type_node, signed_char16_type_node, unsigned_char16_type_node,
21032         char32_type_node, signed_char32_type_node, char16_array_type_node,
21033         char32_array_type_node): New defines.
21034         * c-lex.c (cb_ident): Match updated cpp_interpret_string prototype.
21035         (c_lex_with_flags): Support CPP_CHAR{16,32} and CPP_STRING{16,32}.
21036         (lex_string): Support CPP_STRING{16,32}, match updated
21037         cpp_interpret_string and cpp_interpret_string_notranslate prototypes.
21038         (lex_charconst): Support CPP_CHAR{16,32}.
21039         * c-parser.c (c_parser_postfix_expression): Support CPP_CHAR{16,32}
21040         and CPP_STRING{16,32}.
21041
21042 2008-04-18  Paolo Bonzini  <bonzini@gnu.org>
21043
21044         PR bootstrap/35457
21045         * aclocal.m4: Regenerate.
21046         * configure: Regenerate.
21047
21048 2008-04-18  Jan Hubicka  <jh@suse.cz>
21049
21050         * except.c (dw2_size_of_call_site_table,
21051         sjlj_size_of_call_site_table): Use vector API for call_site_record.
21052
21053         * cgraphbuild.c (build_cgraph_edges): Update.
21054         * tree-pass.h: Update comment.
21055         * final.c (leaf_function_p): Update.
21056         (leaf_renumber_regs): Update.
21057         (rest_of_clean_state): Update.
21058         * omp-low.c (expand_omp_parallel): Update.
21059         * ipa-reference.c (analyze_function): Update.
21060         * reorg.c (find_end_label): Update.
21061         (optimize_skip): Update.
21062         (fill_simple_delay_slots): Update.
21063         (fill_simple_delay_slots): Update.
21064         (make_return_insns): Update.
21065         (dbr_schedule): Update.
21066         * gimple-low.c (record_vars_into): Update.
21067         * cfgbuild.c (make_edges): Update.
21068         * function.c (assign_stack_local): Update.
21069         (assign_parm_adjust_stack_rtl): Update.
21070         (locate_and_pad_parm): Update.
21071         (allocate_struct_function): Do not initialize stack_alignment_needed
21072         and preferred_stack_boundary here.
21073         (stack_protect_prologue): Update.
21074         (stack_protect_epilogue): Update.
21075         (expand_function_start): Initialize stack_alignment_needed,
21076         preferred_stack_boundary and max_jumptable_ents.
21077         (expand_function_end): Update.
21078         (free_after_compilation): Do not NULLify epilogue_delay_list.
21079         * function.h (struct rtl_data): Add stack_protect_guard,
21080         stack_alignment_needed,
21081         preferred_stack_boundary, epilogue_delay_list.
21082         (struct function): Remove value_histograms, stack_alignment_needed,
21083         preferred_stack_boundary, epilogue_delay_list, max_jumptable_ents,
21084         last_label_uid,
21085         unexpanded_var_list, stack_protect_guard.
21086         (current_function_epilogue_delay_list): Remove.
21087         * ipa-type-escape.c (analyze_function): Update.
21088         * gimplify.c (pop_gimplify_context): Update comment.
21089         * calls.c (expand_call): Update.
21090         (emit_library_call_value_1): Update.
21091         * except.c (set_nothrow_function_flags): Update.
21092         * cfgexpand.c (get_decl_align_unit): Update.
21093         (create_stack_guard): Update.
21094         (estimated_stack_frame_size): Update.
21095         (expand_used_vars): Update.
21096         (tree_expand_cfg): Free histogram earliers, init expansion variables.
21097         * explow.c (allocate_dynamic_stack_space): Update.
21098         * tree-ssa-live.c (remove_unused_locals): Update.
21099         * varasm.c (mark_constant_pool): Update.
21100         * tree-inline.c (remap_decls): Update.
21101         (initialize_cfun): Update.
21102         (declare_return_variable): Update.
21103         (inline_forbidden_p): Update.
21104         (expand_call_inline): Update.
21105         (declare_inline_vars): Update.
21106         (tree_function_versioning): Update.
21107         * tree-flow.h (value_histograms): New.
21108         (VALUE_HISTOGRAMS): New macro.
21109         * basic-block.h (control_flow_graph): Add max_jumptable_ents,
21110         last_label_uid.
21111         * tree-cfg.c (set_bb_for_stmt): Update.
21112         (replace_by_duplicate_decl): Update.
21113         (move_block_to_fn): Update.
21114         (new_label_mapper): Update.
21115         (dump_function_to_file): Update.
21116         * ipa-struct-reorg.c (build_data_structure): Update.
21117         * cfgrtl.c (print_rtl_with_bb): Update.
21118         * reload1.c (reload): Update.
21119         (reload): Update.
21120         * config/i386/i386.c (setup_incoming_varargs_64,
21121         ix86_compute_frame_layout): Update.
21122         * config/arc/arc.c (arc_output_function_epilogue): Update.
21123
21124 2008-04-18  Marius Strobl <marius@FreeBSD.org>
21125
21126         * gthr-posix.h (__gthread_active_p): Use the Solaris implementation
21127         for FreeBSD as well.
21128         * gthr-posix95.h: Likewise.
21129
21130 2008-04-17  Richard Sandiford  <rsandifo@nildram.co.uk>
21131
21132         PR rtl-optimization/35838
21133         * dse.c (find_shift_sequence): Use subreg_lowpart_offset to work
21134         out the byte offset of the first subreg.
21135
21136 2008-04-17  Uros Bizjak  <ubizjak@gmail.com>
21137
21138         * config/i386/i386.md (addti3 splitter): Pass arrays of 3 operands
21139         to split_ti instead of three separate calls with single member arrays.
21140         (subti3 splitter): Ditto.
21141         (adddi3 splitter): Ditto with split_di.
21142         (subdi3 splitter): Ditto.
21143         (negti2 splitter): Pass arrays of 2 operands to split_ti instead of
21144         two separate calls with single member arrays.  Swap match_dup
21145         operands 1 and 2 to better fit into the array.
21146         (negdi2 splitter): Ditto with split_di.
21147         (movdfcc splitter):  Pass arrays of 2 operands to split_di instead of
21148         two separate calls with single member arrays.  Swap match_dup operands
21149         6 and 7 to better fit into the array.
21150
21151 2008-04-17  H.J. Lu  <hongjiu.lu@intel.com>
21152
21153         * config/i386/i386.c (sse_builtin_type): New.
21154         (bdesc_sse_args): Likewise.
21155         (bdesc_sse_3arg): Removed.
21156         (bdesc_2arg): Remove IX86_BUILTIN_AESKEYGENASSIST128.
21157         (bdesc_1arg): Remove IX86_BUILTIN_ROUNDPD and
21158         IX86_BUILTIN_ROUNDPS.
21159         (ix86_init_mmx_sse_builtins): Handle bdesc_sse_args.  Remove
21160         bdesc_sse_3arg.  Remove IX86_BUILTIN_ROUNDPD and
21161         IX86_BUILTIN_ROUNDPS.
21162         (ix86_expand_sse_4_operands_builtin): Removed.
21163         (ix86_expand_sse_operands_builtin): New.
21164         (ix86_expand_unop_builtin): Remove CODE_FOR_sse4_1_roundpd
21165         and CODE_FOR_sse4_1_roundps.
21166         (ix86_expand_builtin): Remove IX86_BUILTIN_AESKEYGENASSIST128.
21167         Handle bdesc_sse_args.  Remove bdesc_sse_3arg.
21168
21169 2008-04-17  Alan Modra  <amodra@bigpond.net.au>
21170
21171         PR target/35907
21172         * config/rs6000/rs6000.c (rs6000_emit_epilogue): Restore vr and vrsave
21173         regs before frame pop when needed.  If use_backchain_to_restore_sp
21174         then load backchain into a temp reg to restore vr and vrsave.  Add
21175         code to restore vr after frame pop if possible.
21176
21177 2008-04-17  Richard Guenther  <rguenther@suse.de>
21178
21179         * tree-vn.c (expressions_equal_p): Do not check type
21180         equality or compatibility before calling operand_equal_p.
21181         * fold-const.c (operand_equal_p): Check equivalence of
21182         integer constants before bailing out due to signedness or
21183         precision differences.
21184         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Ignore
21185         spurious differences in type qualification.  Ignore types
21186         for COMPONENT_REFs at all.
21187
21188 2008-04-17  Christian Bruel  <christian.bruel@st.com>
21189
21190         * config/sh/sh.c (expand_cbranchdi4): Use original operands for
21191         msw_skip comparison.
21192
21193 2008-04-16  Jakub Jelinek  <jakub@redhat.com>
21194
21195         PR c/35739
21196         * tree-nrv.c (tree_nrv): Don't optimize if result_type is GIMPLE
21197         reg type.
21198
21199         PR tree-optimization/35899
21200         * tree-inline.c (expand_call_inline): Use GIMPLE_STMT_OPERAND
21201         rather than TREE_OPERAND.
21202
21203 2008-04-16  Uros Bizjak  <ubizjak@gmail.com>
21204
21205         PR target/35944
21206         * config/i386/i386.md (fmodxf3): Copy operand 1 and operand 2 into
21207         temporary registers.  Change operand predicate to general_operand.
21208         (remainderxf3): Ditto.
21209
21210 2008-04-16  Richard Guenther  <rguenther@suse.de>
21211
21212         * Makefile.in (tree-affine.o): Add $(FLAGS_H) dependency.
21213         * tree-affine.c (aff_combination_expand): Look through some
21214         conversions.
21215
21216 2008-04-15  Doug Kwan  <dougkwan@google.com>
21217
21218         * dwarf2asm.c (dw2_assemble_integer): Cast to unsigned HOST_WIDE_INT
21219         for hex printing.
21220         * tree-pretty-print.c (dump_generic_node): Ditto.
21221         * final.c (output_addr_const): Ditto.
21222         * dwarf2out.c (output_cfi): Ditto.
21223         * c-pretty-print.c (pp_c_integer_constant): Ditto.
21224         * print-rtl.c (print_rtx): Ditto.
21225         * print-tree.c (print_node_brief, print_node): Ditto.
21226         * c-common.c (match_case_to_enum_1): Ditto.
21227         * sched-vis.c (print_value): Ditto.
21228         * config/i386/i386.c (print_operand): Cast to long unsigned int
21229         for hex printing.
21230
21231 2008-04-15  Danny Smith  <dannysmith@users.sourceforge.net>
21232         * libgcc2.c [L_trampoline]: Remove  unnecessary prototype for
21233         MS Windows VirtualProtect function.
21234
21235 2008-04-15  Jan Hubicka  <jh@suse.cz>
21236
21237         * gengtype.c (write_root): Param_is argument is OK.
21238         * expr.c (expand_expr_real_1): Update call of get_exception_*.
21239         * function.h: Include varray.h
21240         (rtl_eh): New stucture based on except.c one.
21241         (call_site_record): New forward declaration and vector type.
21242         * calls.c (emit_call_1): Do not call
21243         note_current_region_may_contain_throw.
21244         * except.c (eh_status): Remove cur_region, try_region since they are
21245         unused.
21246         Move filter, exc_ptr, ttype_data, ehspec_data, action_record_data and
21247         exception_handler_label_map, ehr_stackadj, ehr_handler, ehr_label,
21248         sjlj_fc, sjlj_exit_after to rth_eh in function.h.
21249         Remove call_site_data_used, call_site_data_size.
21250         Turn call_site_record into vector in function.h.
21251         (note_current_region_may_contain_throw): Remove.
21252         (get_exception_pointer, get_exception_filter): Do not take struct
21253         function argument; update.
21254         (add_ehl_entry, find_exception_handler_labels, ehspec_filter_hash,
21255         add_ttypes_entry, add_ehspec_entry, assign_filter_values,
21256         build_post_landing_pads, dw2_build_landing_pads,
21257         sjlj_assign_call_site_values, sjlj_mark_call_sites,
21258         sjlj_emit_function_enter, sjlj_emit_function_enter,
21259         sjlj_emit_function_exit, sjlj_emit_dispatch_table,
21260         sjlj_build_landing_pads, finish_eh_generation,
21261         remove_exception_handler_label, remove_eh_handler,
21262         maybe_remove_eh_handler, add_reachable_handler,
21263         reachable_handlers, expand_builtin_eh_return, expand_eh_return,
21264         add_action_record, collect_one_action_chain, add_call_site,
21265         convert_to_eh_region_ranges, sjlj_size_of_call_site_table,
21266         sjlj_output_call_site_table, output_function_exception_table,
21267         * except.h (note_current_region_may_contain_throw): Remove
21268         (get_exception_pointer, get_exception_filter): Do not take struct
21269         function argument.
21270         * Makefile.in (GTFILES): Put varargs before struct function.
21271
21272 2008-04-15  Eric Botcazou  <ebotcazou@adacore.com>
21273
21274         * tree-ssa-structalias.c (get_constraint_for_component_ref): Do not
21275         punt for STRING_CST.
21276         (get_constraint_for): Deal with STRING_CST here instead.
21277
21278 2008-04-15  Richard Guenther  <rguenther@suse.de>
21279
21280         * tree-ssa-propagate.c (substitute_and_fold): Substitute
21281         statements in a basic-block with a backward walk.  Do not
21282         substitute into dead statements but instead remove those.
21283
21284 2008-04-15  Richard Guenther  <rguenther@suse.de>
21285
21286         * params.def (PARAM_MAX_FIELDS_FOR_FIELD_SENSITIVE): Set default
21287         to zero, thus disable creation of SFTs.
21288
21289 2008-04-15  Eric Botcazou  <ebotcazou@adacore.com>
21290
21291         * tree-predcom.c (suitable_reference_p): Return false if the
21292         reference can throw.
21293
21294 2008-04-15  Jakub Jelinek  <jakub@redhat.com>
21295
21296         PR c/35751
21297         * c-decl.c (finish_decl): If extern or static var has variable
21298         size, set TREE_TYPE (decl) to error_mark_node.
21299
21300 2008-04-15  Rafael Espíndola  <espindola@google.com>
21301
21302         * fold-const.c (tree_call_nonnegative_warnv_p): Remove local
21303         variable arg1.
21304
21305 2008-04-15  Richard Guenther  <rguenther@suse.de>
21306
21307         * tree-ssa-sccvn.h (vn_reference_lookup): Adjust prototype.
21308         * tree-ssa-sccvn.c (vn_reference_lookup): New parameter maywalk.
21309         (visit_reference_op_load): Do walk vuse-vdef chains on
21310         vn_reference_lookup.
21311         (visit_reference_op_store): But do not here.
21312         * tree-vn.c (vn_lookup): Do not walk vuse-vdef chains on
21313         vn_reference_lookup.
21314         (vn_lookup_with_vuses): But do so here.
21315
21316 2008-04-14  Ian Lance Taylor  <iant@google.com>
21317
21318         * fold-const.c (fold_overflow_warning): Remove assertion.
21319
21320 2008-04-15  Ben Elliston  <bje@au.ibm.com>
21321
21322         * config/alpha/alpha.c (alpha_initialize_trampoline): Remove temp,
21323         temp1 local variables.
21324
21325 2008-04-15  Zuxy Meng  <zuxy.meng@gmail.com>
21326
21327         PR target/35661
21328         * config/i386/winnt.c (i386_pe_section_type_flags): Mark
21329         ".text.unlikely" section as executable.
21330
21331 2008-04-14  James E. Wilson  <wilson@tuliptree.org>
21332
21333         * config/ia64/ia64.c (rtx_needs_barrier): Handle
21334         UNSPEC_FR_SQRT_RECIP_APPROX_RES.
21335         * config/ia64/ia64.c (UNSPEC_FR_SQRT_RECIP_APPROX_RES): Define.
21336         (divsi3_internal, divdi3_internal_lat, divdi3_internal_thr,
21337         divsf3_internal_lat, sqrt_approx, sqrtsf2_internal_thr,
21338         divdf3_internal_lat, sqrtdf2_internal_thr, divxf3_internal_lat,
21339         divxf3_internal_thr, sqrtxf2_internal_thr, recip_approx): Use it.
21340
21341 2008-04-14  Ian Lance Taylor  <iant@google.com>
21342
21343         * flags.h (POINTER_TYPE_OVERFLOW_UNDEFINED): Define.
21344         * fold-const.c (fold_comparison): If appropriate, test
21345         POINTER_TYPE_OVERFLOW_UNDEFINED, and issue an overflow warning.
21346         (fold_binary): Test POINTER_TYPE_OVERFLOW_UNDEFINED when
21347         reassociating a pointer type.
21348         * doc/invoke.texi (Optimize Options): Document that
21349         -fstrict-overflow applies to pointer wraparound.
21350
21351 2008-04-13  Jan Hubicka  <jh@suse.cz>
21352
21353         * m32.c (m32c_pushm_popm): Use crtl->retrun_rtx.
21354
21355 2008-04-12  Andrew Pinski  <pinskia@gmail.com>
21356
21357         * config/rs6000/rs6000.c (compute_save_world_info): Set lr_save_p if
21358         we are going to "save the world".
21359
21360 2008-04-13  Hans-Peter Nilsson  <hp@axis.com>
21361
21362         * config/cris/cris.md ("*andhi_lowpart_non_v32", "*andhi_lowpart_v32")
21363         ("*andqi_lowpart_non_v32", "*andqi_lowpart_v32"): Use "+" for the
21364         operand 0 constraint, not "=".
21365
21366 2008-04-11  James E. Wilson  <wilson@tuliptree.org>
21367
21368         * system.h: Change ASSERT_CHECKING to ENABLE_ASSERT_CHECKING.
21369
21370 2008-04-11  H.J. Lu  <hongjiu.lu@intel.com>
21371
21372         * dse.c (record_store): Use HOST_BITS_PER_WIDE_INT instead
21373         of size of positions_needed * CHAR_BIT.
21374
21375 2008-04-11  H.J. Lu  <hongjiu.lu@intel.com>
21376
21377         PR middle-end/35897
21378         * dse.c (store_info): Change positions_needed to unsigned
21379         HOST_WIDE_INT.
21380         (lowpart_bitmask): New.
21381         (record_store): Cast to unsigned HOST_WIDE_INT for
21382         positions_needed.  Assert width <= size of positions_needed *
21383         CHAR_BIT.  Call lowpart_bitmask to initialize positions_needed.
21384         (check_mem_read_rtx): Use unsigned HOST_WIDE_INT on mask.  Call
21385         lowpart_bitmask to set mask.
21386
21387 2008-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
21388
21389         * config/bfin/constraints.md: New file.
21390         * config/bfin/bfin.md: Include it.
21391         (adddi3): Use satisfies_constraint functions instead of the old macros.
21392         * config/bfin/bfin.h (REG_CLASS_FROM_LETTER, CONSTRAINT_LEN,
21393         CONST_18UBIT_IMM_P, CONST_16BIT_IMM_P, CONST_16UBIT_IMM_P,
21394         CONST_7BIT_IMM_P, CONST_7NBIT_IMM_P, CONST_5UBIT_IMM_P,
21395         CONST_4BIT_IMM_P, CONST_4UBIT_IMM_P, CONST_3BIT_IMM_P,
21396         CONST_3UBIT_IMM_P, CONST_OK_FOR_K, CONST_OK_FOR_P, CONST_OK_FOR_M,
21397         CONST_OK_FOR_CONSTRAINT_P, CONST_DOUBLE_OK_FOR_LETTER,
21398         EXTRA_CONSTRAINT): Delete.
21399         * config/bfin/predicates.md (highbits_operand, reg_or_7bit_operand,
21400         reg_or_neg7bit_operand): Use satisfies_constraint functions instead
21401         of the old macros.
21402         * config/bfin/bfin.c: Include "tm-constrs.h".
21403         (bfin_secondary_reload, split_load_immediate, bfin_rtx_costs):
21404         Use satisfies_constraint functions instead of the old macros.
21405         * doc/md.texi (Blackfin Constraints): Update file name reference.
21406
21407 2008-04-11  Richard Guenther  <rguenther@suse.de>
21408
21409         PR tree-optimization/35869
21410         * tree-vrp.c (execute_vrp): Move switch statement update after
21411         jump threading.  Schedule another cfg cleanup run.
21412
21413 2008-04-11  Volker Reichelt  <v.reichelt@netcologne.de>
21414
21415         PR c/35744
21416         * attribs.c (decl_attributes): Return early on errorneous node.
21417
21418 2008-04-10  Oleg Ryjkov  <olegr@google.com>
21419
21420         * tree.h (struct tree_base): Added a new flag default_def_flag.
21421         (SSA_NAME_IS_DEFAULT_DEF): Changed to use the new flag.
21422
21423 2008-04-11  Kaz Kojima  <kkojima@gcc.gnu.org>
21424
21425         * config.gcc (need_64bit_hwint): Need 64bit hwint for sh-*-*.
21426
21427 2008-04-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
21428
21429         PR target/35768
21430         * pa.md: Define mode iterator P.  Define mode attribute dwc.
21431         (dcacheflush): Update pattern to use iterator P and attribute dwc.
21432         (icacheflush): Likewise.
21433         * pa.h (INITIALIZE_TRAMPOLINE): Use dcacheflushsi/icacheflushsi if
21434         !TARGET_64BIT, and dcacheflushdi/icacheflushdi if TARGET_64BIT.
21435
21436 2008-04-11  Ben Elliston  <bje@au.ibm.com>
21437
21438         * config/spu/spu.c (spu_init_builtins): Mark builtins as nothrow.
21439
21440 2008-04-10  Rafael Espíndola  <espindola@google.com>
21441
21442         * tree-vrp.c (extract_range_from_binary_expr): Don't handle
21443         TRUTH_ANDIF_EXPR or TRUTH_ORIF_EXPR.
21444         (extract_range_from_expr): The same.
21445
21446 2008-04-10  Adam Nemet  <anemet@caviumnetworks.com>
21447
21448         * config/mips/mips.md (GPR2): New mode iterator.
21449         (seq): Add comment.
21450         (*seq_<mode>, *seq_<mode>_mips16, *sne_<mode>, *sgt<u>_<mode>,
21451         *sgt<u>_<mode>_mips16, *sge<u>_<mode>, *slt<u>_<mode>,
21452         *slt<u>_<mode>_mips16 *sle<u>_<mode>, *sle<u>_<mode>_mips16):
21453         Rewrite these to take two modes, the mode of comparison and the
21454         mode of the destination.
21455         * config/mips/mips.c (mips_expand_scc): Instead of having
21456         paradoxical subreg as destination, expand "narrowing" scc if mode
21457         of comparison is SI and target is requested in DI mode.
21458         (mips_emit_int_order_test): Update comment.  Make mode of
21459         comparison match CMP0 rather than TARGET.  When creating inverse
21460         target use mode of TARGET.
21461
21462 2008-04-10  Adam Nemet  <anemet@caviumnetworks.com>
21463
21464         * gcov-dump.c (tag_summary): Only print summaries for the first
21465         GCOV_COUNTERS_SUMMABLE counters.
21466
21467 2008-04-10  Uros Bizjak  <ubizjak@gmail.com>
21468
21469         * config/i386/i386.md (absneg): New code iterator.
21470         (absnegprefix): New code attribute.
21471         (<code><mode>2): Macroize expander from abs<mode>2 and neg<mode>2
21472         patterns using absneg code iterator.
21473         (<code>tf2): Macroize expander from abstf2 and negtf2 patterns
21474         using absneg code iterator.
21475         (*<code><mode>2_1): Macroize insn pattern from *abs<mode>2_1 and
21476         *neg<mode>2 patterns using absneg code iterator.
21477         (*<code>extendsfdf2): Macroize insn pattern from *absextendsfdf2 and
21478         *negextendsfdf2 patterns using absneg code iterator.
21479         (*<code>extendsfxf2): Macroize insn pattern from *absextendsfxf2 and
21480         *negextendsfxf2 patterns using absneg code iterator.
21481         (*<code>extendsfdf2): Macroize insn pattern from *absextendsfdf2 and
21482         *negextendsfdf2 patterns using absneg code iterator.
21483         * config/i386/sse.md (<code><mode>2): Macroize expander from
21484         abs<mode>2 and neg<mode>2 patterns using absneg code iterator.
21485
21486 2008-04-10  Andreas Krebbel  <krebbel1@de.ibm.com>
21487
21488         * config/s390/s390.h: Remove the remains of the recent search
21489         & replace action of current_function_outgoing_args_size.
21490
21491 2008-04-10  Ira Rosen  <irar@il.ibm.com>
21492
21493         PR tree-optimization/35821
21494         * tree-vect-transform.c (vect_create_data_ref_ptr): Add check that
21495         NEW_STMT_LIST is not NULL.
21496
21497 2008-04-09  David Edelsohn  <edelsohn@gnu.org>
21498
21499         PR libstdc++/35597
21500         * toplev.c (process_options): Remove -ffunction-sections debugging
21501         warning.
21502
21503 2008-04-09  Peter Bergner  <bergner@vnet.ibm.com>
21504
21505         PR middle-end/PR28690
21506         * explow.c (break_out_memory_refs): Use simplify_gen_binary rather
21507         than gen_rtx_fmt_ee to perform more canonicalizations.
21508
21509 2008-04-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
21510
21511         PR driver/35665
21512         * collect2.c (write_c_file): Don't wrap in "#ifdef __cplusplus".
21513
21514 2008-04-09  Richard Guenther  <rguenther@suse.de>
21515
21516         * tree-cfg.c (verify_stmt): Print complete bogus stmt.
21517         (dump_function_to_file): Dump function arguments with types.
21518
21519 2008-04-08  Richard Guenther  <rguenther@suse.de>
21520
21521         * fold-const.c (fold_widened_comparison): Do not allow
21522         sign-changes that change the result.
21523
21524 2008-04-08  Janis Johnson  <janis187@us.ibm.com>
21525
21526         PR target/35839
21527         * config/rs6000/rs6000.c (rs6000_check_sdmode): Handle additional
21528         kinds of indirect references.
21529
21530 2008-04-08  David Edelsohn  <edelsohn@gnu.org>
21531
21532         * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Update
21533         GNU Fortran language string.
21534
21535 2008-04-08  Rafael Espíndola  <espindola@google.com>
21536
21537         * fold-canst.c (tree_call_nonnegative_warnv_p): New.
21538         (tree_invalid_nonnegative_warnv_p): Use tree_call_nonnegative_warnv_p.
21539         * tree.h (tree_call_nonnegative_warnv_p): New.
21540
21541 2008-04-08  Jan Hubicka  <jh@suse.cz>
21542
21543         * function.c (free_after_compilation): Clear out regno_reg_rtx
21544         pointer.
21545
21546 2008-04-08  Peter Bergner  <bergner@vnet.ibm.com>
21547
21548         Revert
21549         2008-04-07  Peter Bergner  <bergner@vnet.ibm.com>
21550
21551         PR middle-end/PR28690
21552         * rtlanal.c: (commutative_operand_precedence): Give SYMBOL_REF's the
21553         same precedence as REG_POINTER and MEM_POINTER operands.
21554
21555 2008-04-08  Richard Guenther  <rguenther@suse.de>
21556
21557         PR middle-end/35834
21558         * tree-ssa-address.c (create_mem_ref): Use POINTER_PLUS_EXPR
21559         for adding index to base.
21560
21561 2008-04-08  Kai Tietz  <kai.tietz@onevision.com>
21562
21563         * config/i386/mingw32.h (ENABLE_EXECUTE_STACK): New.
21564         (MINGW_ENABLE_EXECUTE_STACK): New.
21565         (IN_LIBGCC2): For libgcc include windows.h file for
21566         function declarations.
21567
21568 2008-04-08  Hans-Peter Nilsson  <hp@axis.com>
21569
21570         * config/cris/cris.c (cris_address_cost): For a PLUS, swap tem1
21571         and tem2 if tem1 is not a REG or MULT.
21572
21573 2008-04-08  Jan Hubicka  <jh@suse.cz>
21574
21575         * function.h (incomming_args): Break out of struct function.
21576         (function_subsections): Break out of struct function.
21577         (rtl_data): Add args, subsections fields. Break out outgoing_args_size,
21578         return_rtx and hard_reg_initial_vals from struct function.
21579         Kill inl_max_label_num.
21580         (current_function_pops_args, current_function_args_info,
21581         current_function_args_size, current_function_args_size,
21582         current_function_pretend_args_size,
21583         current_function_outgoing_args_size,
21584         current_function_internal_arg_pointer, current_function_return_rtx):
21585         Kill compatibility accestor macros.
21586         * builtins.c (expand_builtin_apply_args_1): Update.
21587         (expand_builtin_next_arg): Update.
21588         * df-scan.c (df_get_call_refs): Update.
21589         * dbxout.c (dbxout_function_end): Update.
21590         * dwarf2out.c (dwarf2out_switch_text_section): Update.
21591         (output_line_info): Update.
21592         (secname_for_decl): Update.
21593         (dwarf2out_var_location): Update.
21594         * function.c (free_after_compilation): Update.
21595         (assign_parm_find_stack_rtl): Update.
21596         (assign_parms): Update.
21597         (expand_dummy_function_end): Update.
21598         (expand_function_end): Update.
21599         * calls.c (mem_overlaps_already_clobbered_arg_p): Update.
21600         (expand_call): Update.
21601         (emit_library_call_value_1): Update.
21602         (store_one_arg): Update.
21603         * varasm.c (initialize_cold_section_name): Update.
21604         (unlikely_text_section): Update.
21605         (unlikely_text_section_p): Update.
21606         (assemble_start_function): Update.
21607         (assemble_end_function): Update.
21608         (default_section_type_flags): Update.
21609         (switch_to_section): Update.
21610         * integrate.c (set_decl_abstract_flags): Update.
21611         (get_hard_reg_initial_val): Update.
21612         (has_hard_reg_initial_val): Update.
21613         (allocate_initial_values): Update.
21614         * resource.c (init_resource_info): Update.
21615         * config/alpha/alpha.c (NUM_ARGS): Update.
21616         (direct_return): Update.
21617         (alpha_va_start): Update.
21618         (alpha_sa_size): Update.
21619         (alpha_initial_elimination_offset): Update.
21620         (alpha_expand_prologue): Update.
21621         (alpha_start_function): Update.
21622         (alpha_expand_epilogue): Update.
21623         (unicosmk_initial_elimination_offset):
21624         * config/alpha/alpha.md (call expander): Update.
21625         * config/s390/s390.c (s390_register_info): Update.
21626         (s390_register_info): Update.
21627         (s390_frame_info): Update.
21628         (s390_initial_elimination_offset): Update.
21629         (s390_build_builtin_va_list): Update.
21630         (s390_va_start): Update.
21631         * config/spu/spu.c (direct_return): Update.
21632         (spu_expand_prologue): Update.
21633         (spu_initial_elimination_offset): Update.
21634         (spu_build_builtin_va_list): Update.
21635         (spu_va_start): Update.
21636         * config/sparc/sparc.c (sparc_init_modes): Update.
21637         (sparc_compute_frame_size): Update.
21638         (function_value): Update.
21639         * config/m32r/m32r.c (m32r_compute_frame_size): Update.
21640         * config/i386/i386.md (return expander): Update.
21641         * config/i386/i386.c (ix86_va_start): Update.
21642         (ix86_can_use_return_insn_p): Update.
21643         (ix86_compute_frame_layout): Update.
21644         (ix86_expand_epilogue): Update.
21645         * config/sh/sh.c (output_stack_adjust): Update.
21646         (calc_live_regs): Update.
21647         (sh_expand_prologue): Update.
21648         (sh_builtin_saveregs): Update.
21649         (sh_va_start): Update.
21650         (initial_elimination_offset): Update.
21651         (sh_allocate_initial_value): Update.
21652         (sh_function_ok_for_sibcall): Update.
21653         (sh_get_pr_initial_val): Update.
21654         * config/sh/sh.md (return expander): Update.
21655         * config/avr/avr.c (frame_pointer_required_p): UPdate.
21656         * config/crx/crx.c (crx_compute_frame): UPdate.
21657         (crx_initial_elimination_offset): UPdate.
21658         * config/xtensa/xtensa.c (compute_frame_size): Update
21659         (xtensa_builtin_saveregs): Update.
21660         (xtensa_va_start): Update.
21661         (order_regs_for_local_alloc): Update.
21662         * config/stormy16/stormy16.c (xstormy16_compute_stack_layout): Update.
21663         (xstormy16_expand_builtin_va_start): Update.
21664         * config/fr30/fr30.c (fr30_compute_frame_size): Update.
21665         * config/m68hc11/m68hc11.md (return expanders): Update.
21666         * config/m68hc11/m68hc11.c (expand_prologue): Update.
21667         (expand_epilogue): Update.
21668         * config/cris/cris.c (cris_initial_frame_pointer_offset): Update.
21669         (cris_simple_epilogue): Update.
21670         (cris_expand_prologue): Update.
21671         (cris_expand_epilogue): Update.
21672         * config/iq2000/iq2000.c (iq2000_va_start): Update.
21673         (compute_frame_size): Update.
21674         * config/mt/mt.c (mt_compute_frame_size): Update.
21675         * config/mn10300/mn10300.c (expand_prologue): Update.
21676         (expand_epilogue): Update.
21677         (initial_offset): Update.
21678         (mn10300_builtin_saveregs):
21679         * config/mn10300/mn10300.md (return expander): Update.
21680         * config/ia64/ia64.c (ia64_compute_frame_size): Update.
21681         (ia64_initial_elimination_offset): Update.
21682         (ia64_initial_elimination_offset): Update.
21683         (ia64_expand_prologue): Update.
21684         * config/m68k/m68k.md (return expander): Update.
21685         * config/rs6000/rs6000.c (rs6000_va_start): Update.
21686         (rs6000_stack_info): Update.
21687         * config/mcore/mcore.c (layout_mcore_frame): Update.
21688         (mcore_expand_prolog): Update.
21689         * config/arc/arc.c (arc_compute_frame_size): Update.
21690         * config/score/score3.c (score3_compute_frame_size): Update.
21691         * config/score/score7.c (score7_compute_frame_size): Update.
21692         * config/arm/arm.c (use_return_insn): Update.
21693         (thumb_find_work_register): Update.
21694         (arm_compute_save_reg_mask): Update.
21695         (arm_output_function_prologue): Update.
21696         (arm_output_epilogue): Update.
21697         (arm_size_return_regs): Update.
21698         (arm_get_frame_offsets): Update.
21699         (arm_expand_prologue): Update.
21700         (thumb_exit): Update.
21701         (thumb_unexpanded_epilogue): Update.
21702         (thumb1_output_function_prologue): Update.
21703         * config/pa/pa.md (return expander): Update.
21704         * config/pa/pa.c (compute_frame_size): Update.
21705         (hppa_builtin_saveregs): Update.
21706         * config/mips/mips.c (mips_va_start): Update.
21707         (mips16_build_function_stub): Update.
21708         (mips_compute_frame_info): Update.
21709         (mips_restore_gp): Update.
21710         (mips_output_function_prologue): Update.
21711         (mips_expand_prologue): Update.
21712         * config/v850/v850.c (compute_frame_size): Update.
21713         (expand_prologue): * config/mmix/mmix.c (along): update.
21714         (mmix_initial_elimination_offset): update.
21715         (mmix_reorg): update.
21716         (mmix_use_simple_return): update.
21717         (mmix_expand_prologue): update.
21718         (mmix_expand_epilogue): Update.
21719         * config/bfin/bfin.c (bfin_initial_elimination_offset): Update.
21720         (emit_link_insn): Update.
21721
21722 2008-04-08  Anatoly Sokolov <aesok@post.ru>
21723
21724         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Define
21725         __AVR_HAVE_EIJMP_EICALL__ macro if device have EIJMP and EICALL
21726         instructions.
21727         * config/avr/avr.c (avr_mcu_types): Set AVR31 architecture for
21728         atmega103 device.
21729
21730 2008-04-07  Jan Hubicka  <jh@suse.cz>
21731
21732         * function.h (rtl): Rename to x_rtl.
21733         (crtl): New define.
21734         (return_label, naked_return_label, stack_slot_list, parm_birth_insn,
21735         frame_offset, stack_check_probe_note, arg_pointer_save_area,
21736         used_temp_slots avail_temp_slots, temp_slot_level,
21737         nonlocal_goto_handler_labels): Update accesstors.
21738         (rtl): New global variable.
21739         (struct function): Move some fileds to rtl_data.
21740         (get_arg_pointer_save_area): Update prototype.
21741         * builtins.c (expand_builtin_setjmp_receiver): Update call of
21742         get_arg_pointer_save_area.
21743         * expr.c (init_expr): Update
21744         * function.c (get_frame_size): Update
21745         (assign_stack_local): Update
21746         (expand_function_end): Update.
21747         (get_art_pointer_save_area): Update
21748         * function.h
21749         * emit-rtl.c (rtl): Declare.
21750         (regno_reg_rtx): Declare.
21751         (first_insn, last_insn, cur_insn_uid, last_location, first_label_num):
21752         Update.
21753         (gen_reg_rtx): Update.
21754         * varasm.c (n_deferred_constatns): Update accestor.
21755         (init_varasm_status): Do not allocate varasm_status.
21756         (force_const_mem, get_pool_size, output_constant_pool): Update.
21757         * stmt.c (force_label_rtx): Do not use x_ prefixes.
21758         (expand_nl_goto_receiver): Update get_arg_pointer_save_area.
21759         * m32c/m32.c (m32c_leaf_function_p, m32c_function_needs_enter): Update.
21760         * sparc/sparc.h (INIT_EXPANDERS): Update.
21761         * ia64/ia64.h (INIT_EXPANDERS): Update.
21762
21763 2008-04-07  James E. Wilson  <wilson@tuliptree.org>
21764
21765         * reload.c (push_secondary_reload): Add missing break to for loop.
21766
21767 2008-04-07  Peter Bergner  <bergner@vnet.ibm.com>
21768
21769         PR middle-end/PR28690
21770         * rtlanal.c: Update copyright years.
21771         (commutative_operand_precedence): Give SYMBOL_REF's the same precedence
21772         as REG_POINTER and MEM_POINTER operands.
21773         * emit-rtl.c (gen_reg_rtx_and_attrs): New function.
21774         (set_reg_attrs_from_value): Call mark_reg_pointer as appropriate.
21775         * rtl.h (gen_reg_rtx_and_attrs): Add prototype for new function.
21776         * gcse.c: Update copyright years.
21777         (pre_delete): Call gen_reg_rtx_and_attrs.
21778         (hoist_code): Likewise.
21779         (build_store_vectors): Likewise.
21780         (delete_store): Likewise.
21781         * loop-invariant.c (move_invariant_reg): Likewise.
21782         Update copyright years.
21783
21784 2008-04-07  Uros Bizjak  <ubizjak@gmail.com>
21785
21786         * config/i386/i386.md ("*sse_prologue_save_insn"): Use braced output
21787         control string instead of quoted.
21788
21789 2008-04-07  Kenneth Zadeck  <zadeck@naturalbridge.com>
21790
21791         * doc/rtl.texi: Rewrite of subreg section.
21792
21793 2008-04-07  Kai Tietz  <kai.tietz@onevision.com>
21794
21795         PR/35842
21796         * config/i386/i386.c (legitimize_pic_address): Add treating
21797         of dllimport SYM_REF's.
21798         (legitimize_dllimport_symbol): Add prototype.
21799
21800 2008-04-07  Eric Botcazou  <ebotcazou@adacore.com>
21801
21802         * fold-const.c (fold) <ARRAY_REF>: New case.  Try to fold constant
21803         reference in constructor with non self-referential type.
21804
21805 2008-04-07  Eric Botcazou  <ebotcazou@adacore.com>
21806
21807         Removal of Return with Depressed Stack Pointer support
21808         * tree.h (TYPE_RETURNS_STACK_DEPRESSED): Delete.
21809         (ECF_SP_DEPRESSED): Likewise.
21810         (ECF_LIBCALL_BLOCK, ECF_NOVOPS): Adjust.
21811         * calls.c (emit_call_1): Do not test ECF_SP_DEPRESSED.
21812         (flags_from_decl_or_type): Do not test TYPE_RETURNS_STACK_DEPRESSED.
21813         (expand_call): Do not test ECF_SP_DEPRESSED.
21814         * dse.c (dse_step0): Do not test TYPE_RETURNS_STACK_DEPRESSED.
21815         * function.c (keep_stack_depressed): Delete.
21816         (handle_epilogue_set): Likewise.
21817         (update_epilogue_consts): Likewise.
21818         (emit_equiv_load): Likewise.
21819         (thread_prologue_and_epilogue_insns): Remove support for Return with
21820         Depressed Stack Pointer.
21821         * print-tree.c (print_node): Do not test TYPE_RETURNS_STACK_DEPRESSED.
21822
21823 2008-04-06  Richard Guenther  <rguenther@suse.de>
21824
21825         PR tree-optimization/35400
21826         * tree-vrp.c (vrp_evaluate_conditional): Only query value-range
21827         information from SSA_NAMEs.
21828
21829 2008-04-06  Anatoly Sokolov <aesok@post.ru>
21830
21831         * config/avr/avr.h (avr_mega_p): Remove declaration.
21832         (AVR_MEGA): Remove macro.
21833         * config/avr/avr.c (avr_mega_p): Remove variable.
21834         (avr_override_options): Remove inicializion of avr_mega_p.
21835         Use AVR_HAVE_JMP_CALL instead of AVR_MEGA.
21836         (print_operand): Use AVR_HAVE_JMP_CALL instead of AVR_MEGA.
21837         (avr_jump_mode): (Ditto.).
21838         (avr_output_progmem_section_asm_op): (Ditto.).
21839         (avr_asm_init_sections): (Ditto.).
21840         (avr_asm_init_sections): (Ditto.).
21841         (avr_rtx_costs): (Ditto.).
21842         * config/avr/avr.md: (Ditto.).
21843         * config/avr/avr.h: Use '__AVR_HAVE_JMP_CALL__' instead of
21844         '__AVR_MEGA__'.
21845
21846 2008-04-06  Richard Guenther  <rguenther@suse.de>
21847
21848         PR tree-optimization/35842
21849         * tree-ssa-address.c (fixed_address_object_p): Adjust to match
21850         is_gimple_invariant_address.
21851
21852 2008-04-06  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
21853
21854         * gcc.c (default_compilers): Sync Fortran extensions list with
21855         that in fortran/lang-specs.h.
21856         * doc/invoke.texi: Likewise.
21857         * dbxout.c (get_lang_number): Use "GNU Fortran" in "GNU F95".
21858         * dwarf2out.c (gen_compile_unit_die): Likewise.
21859
21860 2008-04-06  Tom G. Christensen  <tgc@jupiterrise.com>
21861
21862         * gthr-posix95.h (__gthread_cond_wait_recursive): Add missing &.
21863
21864 2008-04-05  Uros Bizjak  <ubizjak@gmail.com>
21865
21866         PR target/12329
21867         * config/i386/i386.c (ix86_function_regparm): Error if regparm(3)
21868         attribute is used for nested functions.
21869
21870 2008-04-05  Jan Hubicka  <jh@suse.cz>
21871
21872         * emit-rtl.c (init_emit): xcalloc regno_pointer_align.
21873
21874         * tree-dump.c (dump_enable_all): Remove prototype; do not accept
21875         letter argument.
21876         (dump_files): Update.
21877         (enable_rtl_dump_file): Do not accept letter argument.
21878         * tree-pass.h (dump_file_info): Remove letter argument.
21879         * toplev.c (decode_d_option): Update -da handling.
21880         * toplev.h (enable_rtl_dump_file): Update prototype.
21881         * passes.c (register_one_dump_file): Do not accept IPA argument; work
21882         it out based on pass type.
21883         (register_dump_files_1): Likewise.
21884         (init_optimization_passes): Update register_one_dump_file calls.
21885         (execute_one_pass): Sanity check that IPA passes are called at IPA
21886         level and RTL passes at RTL level.
21887         (execute_pass_list): IPA pass can not be after or subpass of
21888         GIMPLE/RTL pass.
21889         (execute_ipa_pass_list): Handle IPA subpasses of IPA subpasses and
21890         disallov RTL subpasses of IPA subpasses.
21891
21892 2008-04-05  Ben Elliston  <bje@au.ibm.com>
21893
21894         * tree-cfg.c (need_fake_edge_p): Return false for calls to
21895         builtins that return exactly once and do not throw. Cache call to
21896         call_expr_flags.
21897
21898 2008-04-04 Andy Hutchinson <hutchinsonandy@aim.com>
21899
21900         PR rtl-optimization/34916
21901         PR middle-end/35519
21902         * combine.c (create_log_links): Do not create duplicate LOG_LINKS
21903         between instruction pairs.
21904
21905 2008-04-04  Naveen.H.S  <naveen.hs@kpitcummins.com>
21906
21907         * doc/invoke.texi: Document -mbitops for SH.
21908         * config/sh/constraints.md (K03, K12, Sbv, Sbw): New constraints.
21909         * config/sh/predicates.md (bitwise_memory_operand): New predicate.
21910         * config/sh/sh.c (print_operand): Add %t operand code.
21911         * config/sh/sh.h (GO_IF_LEGITIMATE_INDEX): Add condition for SH2A.
21912         * config/sh/sh.md (*iorsi3_compact): Fix condition for SH2A.
21913         (extendqisi2_compact): Add the alternative for SH2A 4-byte mov.b.
21914         (extendqihi2): Likewise.
21915         (movqi_i): Likewise.
21916         (insv): Use bset, bclr and bst instructions for SH2A if possible.
21917         (extv): Use bld instruction for SH2A if possible.
21918         (extzv): Likewise.
21919         (bclr_m2a, bclrmem_m2a, bset_m2a, bsetmem_m2a, bst_m2a, bld_m2a,
21920         bldsign_m2a, bld_reg, *bld_regqi, band_m2a, bandreg_m2a,
21921         bor_m2a, borreg_m2a, bxor_m2a, bxorreg_m2a): New insns.
21922         (bset.b, bclr.b): Define peepholes.
21923         * config/sh/sh.opt (mbitops): New option.
21924
21925 2008-04-04  Janis Johnson  <janis187@us.ibm.com>
21926
21927         PR target/35620
21928         * config/rs6000/rs6000.c (rs6000_check_sdmode): Handle indirect ref
21929         and view convert expression.
21930
21931 2008-04-04  Jakub Jelinek  <jakub@redhat.com>
21932
21933         PR target/35364
21934         * tree-cfg.c (remove_useless_stmts_1): Handle OMP_* containers.
21935
21936 2008-04-04  H.J. Lu  <hongjiu.lu@intel.com>
21937
21938         * config.gcc (extra_headers): Add wmmintrin.h for x86 and x86-64.
21939
21940         * config/i386/cpuid.h (bit_AES): New.
21941         (bit_PCLMUL): Likewise.
21942
21943         * config/i386/i386.c (pta_flags): Add PTA_AES and PTA_PCLMUL.
21944         (override_options): Handle PTA_AES and PTA_PCLMUL.  Enable
21945         SSE2 if AES or PCLMUL is enabled.
21946         (ix86_builtins): Add IX86_BUILTIN_AESENC128,
21947         IX86_BUILTIN_AESENCLAST128, IX86_BUILTIN_AESDEC128,
21948         IX86_BUILTIN_AESDECLAST128, IX86_BUILTIN_AESIMC128,
21949         IX86_BUILTIN_AESKEYGENASSIST128 and IX86_BUILTIN_PCLMULQDQ128.
21950         (bdesc_sse_3arg): Add IX86_BUILTIN_PCLMULQDQ128.
21951         (bdesc_2arg): Add IX86_BUILTIN_AESENC128,
21952         IX86_BUILTIN_AESENCLAST128, IX86_BUILTIN_AESDEC128,
21953         IX86_BUILTIN_AESDECLAST128 and IX86_BUILTIN_AESKEYGENASSIST128.
21954         (bdesc_1arg): Add IX86_BUILTIN_AESIMC128.
21955         (ix86_init_mmx_sse_builtins): Define __builtin_ia32_aesenc128,
21956         __builtin_ia32_aesenclast128, __builtin_ia32_aesdec128,
21957         __builtin_ia32_aesdeclast128,__builtin_ia32_aesimc128,
21958         __builtin_ia32_aeskeygenassist128 and
21959         __builtin_ia32_pclmulqdq128.
21960         * config/i386/i386.c (ix86_expand_binop_imm_builtin): New.
21961         (ix86_expand_builtin): Use it for IX86_BUILTIN_PSLLDQI128 and
21962         IX86_BUILTIN_PSRLDQI128.  Handle IX86_BUILTIN_AESKEYGENASSIST128.
21963
21964         * config/i386/i386.h (TARGET_AES): New.
21965         (TARGET_PCLMUL): Likewise.
21966         (TARGET_CPU_CPP_BUILTINS): Handle TARGET_AES and TARGET_PCLMUL.
21967
21968         * config/i386/i386.md (UNSPEC_AESENC): New.
21969         (UNSPEC_AESENCLAST): Likewise.
21970         (UNSPEC_AESDEC): Likewise.
21971         (UNSPEC_AESDECLAST): Likewise.
21972         (UNSPEC_AESIMC): Likewise.
21973         (UNSPEC_AESKEYGENASSIST): Likewise.
21974         (UNSPEC_PCLMUL): Likewise.
21975
21976         * config/i386/i386.opt (maes): New.
21977         (mpclmul): Likewise.
21978
21979         * config/i386/sse.md (aesenc): New pattern.
21980         (aesenclast): Likewise.
21981         (aesdec): Likewise.
21982         (aesdeclast): Likewise.
21983         (aesimc): Likewise.
21984         (aeskeygenassist): Likewise.
21985         (pclmulqdq): Likewise.
21986
21987         * config/i386/wmmintrin.h: New.
21988
21989         * doc/extend.texi: Document AES and PCLMUL built-in function.
21990
21991         * doc/invoke.texi: Document -maes and -mpclmul.
21992
21993 2008-04-04  Paolo Bonzini  <bonzini@gnu.org>
21994
21995         * function.c (free_after_parsing): Replace with
21996         cxx_push_function_context from C++ front-end.
21997         (allocate_struct_function): Don't call langhook.
21998         * langhooks.h (struct lang_hooks_for_functions): Delete.
21999         (struct lang_hooks): Add back missing_noreturn_ok_p here, delete
22000         member "function".
22001         * langhooks-def.h (LANG_HOOKS_MISSING_NORETURN_OK_P): Add.
22002         (LANG_HOOKS_FUNCTION_INIT, LANG_HOOKS_FUNCTION_FINAL,
22003         LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P,
22004         LANG_HOOKS_FUNCTION_INITIALIZER): Delete.
22005         (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_MISSING_NORETURN_OK_P,
22006         remove LANG_HOOKS_FUNCTION_INITIALIZER.
22007         * tree-cfg.c: Adjust call to missing_noreturn_ok_p langhook.
22008
22009         * c-objc-common.h (LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P):
22010         Rename to LANG_HOOKS_MISSING_NORETURN_OK_P.
22011
22012 2008-04-04  Jakub Jelinek  <jakub@redhat.com>
22013
22014         PR c/35440
22015         * c-pretty-print.c (pp_c_initializer_list): Handle CONSTRUCTOR
22016         for all types.
22017
22018 2008-04-04  Richard Guenther  <rguenther@suse.de>
22019
22020         PR middle-end/35823
22021         * fold-const.c (optimize_minmax_comparison): Use the correct
22022         type for the constant in the simplified comparison.
22023
22024 2008-04-04  Zuxy Meng <zuxy.meng@gmail.com>
22025
22026         * config/i386/driver-i386.c (describe_cache): Add l2_sizekb argument.
22027         Pass L2 size as "--param l2-cache-size" to the compiler.
22028         (decode_l2_cache): New function to decode L2 cache parameters using
22029         0x8000006 extended cpuid function.
22030         (detect_caches_amd): Determine parameters of L2 cache using
22031         decode_l2_caches function.
22032         (decode_caches_intel): Decode L2 cache parameters.
22033         (detect_caches_intel): Determine L2 cache parameters using
22034         decode_caches_intel and decode_l2_caches functions.
22035
22036 2008-04-03  Bob Wilson  <bob.wilson@acm.org>
22037
22038         * config/xtensa/xtensa.c (xtensa_secondary_reload_class): Use a
22039         secondary input reload for subword loads from the constant pool.
22040
22041 2008-04-03  Janis Johnson  <janis187@us.ibm.com>
22042
22043         PR target/35713
22044         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Use integer
22045           constants of the appropriate size for runtime calculations.
22046
22047         PR c/35712
22048         * dfp.c (decimal_from_decnumber): Retain trailing zeroes for
22049           decimal-float literal constant zero.
22050
22051 2008-04-03  Jakub Jelinek  <jakub@redhat.com>
22052
22053         PR c/35738
22054         * c-parser.c (c_parser_omp_atomic): Call
22055         default_function_array_conversion on the RHS.
22056
22057         PR middle-end/35818
22058         * omp-low.c (scan_sharing_clauses) <case OMP_CLAUSE_SHARED>: Don't
22059         call is_variable_sized if decl has incomplete type.
22060
22061 2008-04-03  H.J. Lu  <hongjiu.lu@intel.com>
22062
22063         * config/i386/i386-protos.h (ix86_aligned_p): Removed.
22064
22065 2008-04-03  Adam Nemet  <anemet@caviumnetworks.com>
22066
22067         * config/mips/mips.md (any_gt, any_ge, any_lt, any_le): New code
22068         iterators.
22069         (u): Add attribute values for gt, gtu, ge, geu, lt, ltu, le and leu.
22070         (sgt<u>): Merge sgt and sgtu into new expander.
22071         (sgt, sgtu): Remove expanders.
22072         (*sgt<u>_<mode>): Merge *sgt_<mode> and *sgtu_<mode> into new pattern.
22073         (*sgt_<mode>, *sgtu_<mode>): Remove patterns.
22074         (*sgt<u>_<mode>_mips16): Merge *sgt_<mode>_mips16 and
22075         *sgtu_<mode>_mips16 into new pattern.
22076         (*sgt_<mode>_mips16, *sgtu_<mode>_mips16): Remove patterns.
22077         (sge<u>): Merge sge and sgeu into new expander.
22078         (sge, sgeu): Remove expanders.
22079         (*sge<u>_<mode>): Merge *sge_<mode> and second *sge_<mode> into
22080         new pattern.
22081         (*sge_<mode>, second *sge_<mode>): Remove patterns.
22082         (slt<u>): Merge slt and sltu into new expander.
22083         (slt, sltu): Remove expanders.
22084         (*slt<u>_<mode>): Merge *slt_<mode> and *sltu_<mode> into new pattern.
22085         (*slt_<mode>, *sltu_<mode>): Remove patterns.
22086         (*slt<u>_<mode>_mips16): Merge *slt_<mode>_mips16 and
22087         *sltu_<mode>_mips16 into new pattern.
22088         (*slt_<mode>_mips16, *sltu_<mode>_mips16): Remove patterns.
22089         (sle<u>): Merge sle and sleu into new expander.
22090         (sle, sleu): Remove expanders.
22091         (*sle<u>_<mode>): Merge *sle_<mode> and *sleu_<mode> into new pattern.
22092         (*sle_<mode>, *sleu_<mode>): Remove patterns.
22093         (*sle<u>_<mode>_mips16): Merge *sle_<mode>_mips16 and
22094         *sleu_<mode>_mips16 into new pattern.
22095         (*sle_<mode>_mips16, *sleu_<mode>_mips16): Remove patterns.
22096
22097 2008-04-03  Jan Hubicka  <jh@suse.cz>
22098
22099         PR tree-optimization/35795
22100         * alpha/alpha.c (alpha_output_mi_thunk_osf): Free after compilation.
22101         * sparc/sparc.c (sparc_output_mi_thunk): Likewise.
22102         * ia64/ia64.c (ia64_output_mi_thunk): Likewise.
22103         * m68k/m68k.c (m68k_output_mi_thunk): Likewise.
22104         * score/score3.c (score3_output_mi_thunk): Likewise.
22105         * score/score7.c (score7_output_mi_thunk): Likewise.
22106         * mips/mips.c (mips_output_mi_thunk): Likewise.
22107
22108 2008-04-03  Richard Guenther  <rguenther@suse.de>
22109
22110         * tree-vrp.c (extract_range_from_unary_expr): Handle all
22111         conversions.  Simplify code.
22112
22113 2008-04-03  Kaz Kojima  <kkojima@gcc.gnu.org>
22114
22115         * config/sh/sh.c (sh_output_mi_thunk): Free cfun.
22116
22117 2008-04-03  Tom Tromey  <tromey@redhat.com>
22118             Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
22119
22120         * config/m68k/t-uclinux (generated_files): Add sysroot-suffix.h.
22121         * config/bfin/t-bfin-linux (generated_files): Add
22122         linux-sysroot-suffix.h.
22123         * doc/install.texi (Prerequisites): Require make 3.80.
22124         * doc/sourcebuild.texi (Front End Directory): Document new
22125         variable.
22126         * Makefile.in (generated_files): New variable.
22127         (ALL_HOST_OBJS): New variable.
22128         ($(ALL_HOST_OBJS)): New target.
22129
22130 2008-04-03  Paolo Bonzini  <bonzini@gnu.org>
22131
22132         * tree-inline.c (copy_generic_body, copy_decl_no_change): Export.
22133         (remap_block): Call id->transform_lang_insert_block instead
22134         of langhook.
22135         (optimize_inline_calls, unsave_expr_now, tree_function_versioning):
22136         Set id.transform_lang_insert_block to NULL.
22137         (clone_body): Move to cp/optimize.c
22138         * tree-inline.h (struct copy_body_data): Change
22139         transform_lang_insert_block to function pointer.
22140         (copy_generic_body, copy_decl_no_change): Export.
22141         * langhooks.h (struct lang_hooks_for_decls): Kill insert_block.
22142         * langhooks-def.h (LANG_HOOKS_INSERT_BLOCK): Kill.
22143         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_INSERT_BLOCK.
22144
22145         * c-tree.h (insert_block): Kill.
22146         * c-decl.c (insert_block): Kill.
22147
22148 2008-04-03  Paolo Bonzini  <bonzini@gnu.org>
22149
22150         * c-objc-common.h (LANG_HOOKS_FUNCTION_ENTER_NESTED,
22151         LANG_HOOKS_FUNCTION_LEAVE_NESTED): Delete.
22152         * c-tree.h (c_push_function_context, c_pop_function_context): Remove
22153         argument.
22154         * c-decl.c (c_push_function_context, c_pop_function_context): Remove
22155         argument, call {push,pop}_function_context from here.
22156         * c-parser.c: Use c_{push,pop}_function_context.
22157
22158         * function.c (push_function_context_to): Move meat ...
22159         (push_function_context): ... here.  Simplify.
22160         * function.c (pop_function_context_from): Move meat ...
22161         (pop_function_context): ... here.  Simplify.
22162         * langhooks.h (struct lang_hooks_for_functions): Remove enter_nested,
22163         leave_nested).
22164         * langhooks-def.h (LANG_HOOKS_FUNCTION_ENTER_NESTED,
22165         LANG_HOOKS_FUNCTION_LEAVE_NESTED): Delete.
22166         (LANG_HOOKS_FUNCTION_INITIALIZER): Delete them from here.
22167         * tree.h (push_function_context_to, pop_function_context_from): Remove.
22168
22169 2008-04-03  Ben Elliston  <bje@au.ibm.com>
22170
22171         * expmed.c (extract_force_align_mem_bit_field): Remove.
22172
22173 2008-04-03  Richard Guenther  <rguenther@suse.de>
22174
22175         PR middle-end/35800
22176         * expr.h (try_casesi): Adjust prototype.
22177         * expr.c (try_casesi): Take fallback label as extra parameter.
22178         Use that for gen_casesi if default_label is NULL.
22179         * stmt.c (expand_case): Pass fallback label to try_casesi,
22180         make sure to fill gaps with a fallback label if default_label
22181         is not present.
22182
22183 2008-04-03  Dominique d'Humières <dominiq@lps.ens.fr>
22184
22185         PR target/35801
22186         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Free cfun.
22187
22188 2008-04-03  Ben Elliston  <bje@au.ibm.com>
22189
22190         * expmed.c (extract_split_bit_field): Remove if (0) code.
22191         * tree-ssa-structalias.c (do_sd_constraint): Likewise.
22192         (do_ds_constraint): Likewise.
22193
22194 2008-04-02  Joseph Myers  <joseph@codesourcery.com>
22195
22196         * doc/cppopts.texi (-dU): Document.
22197         * c-common.h (flag_dump_macros): Update comment.
22198         * c-opts.c (handle_OPT_d): Handle -dU.
22199         * c-ppoutput.c (macro_queue, define_queue, undef_queue,
22200         dump_queued_macros, cb_used_define, cb_used_undef): New.
22201         (init_pp_output): Handle -dU.
22202         (cb_line_change): Call dump_queued_macros.
22203         * toplev.c (decode_d_option): Accept -dU as preprocessor option.
22204
22205 2008-04-02  Anatoly Sokolov <aesok@post.ru>
22206
22207         * config/avr/predicates.md (io_address_operand): New predicate.
22208         * config/avr/avr-protos.h (avr_io_address_p): Remove declaration.
22209         * config/avr/avr.c (avr_io_address_p): Remove function.
22210         (out_movqi_r_mr): Use 'io_address_operand' predicate instead of
22211         'avr_io_address_p' function.
22212         (out_movhi_r_mr): (Ditto.).
22213         (out_movqi_mr_r): (Ditto.).
22214         (out_movhi_mr_r): (Ditto.).
22215         (avr_address_cost): (Ditto.).
22216
22217 2008-04-02  Uros Bizjak  <ubizjak@gmail.com>
22218
22219         * config/i386/i386.md (*float<SSEMODEI24:mode><X87MODEF:mode>2_1):
22220         Emit gen_floatdi<X87MODEF:mode>2_i387_with_xmm for DImode values
22221         in 32bit mode when XMM registers are available to avoid store
22222         forwarding stalls.
22223         (floatdi<X87MODEF:mode>2_i387_with_xmm): New insn pattern and
22224         corresponding post-reload splitters.
22225
22226 2008-04-02  H.J. Lu  <hongjiu.lu@intel.com>
22227
22228         * config/i386/i386.c (bdesc_sse_3arg): Add __builtin_ia32_shufps
22229         and __builtin_ia32_shufpd.  Provide __builtin_ia32_roundsd and
22230         __builtin_ia32_roundss.
22231         (ix86_init_mmx_sse_builtins): Remove __builtin_ia32_shufps,
22232         __builtin_ia32_shufpd, __builtin_ia32_roundsd and
22233         __builtin_ia32_roundss.
22234         (ix86_expand_builtin): Don't handle IX86_BUILTIN_SHUFPS and
22235         IX86_BUILTIN_SHUFPD here.
22236
22237 2008-04-02  H.J. Lu  <hongjiu.lu@intel.com>
22238
22239         * config/i386/i386.md (plogic): New.
22240         (plogicprefix): Likewise.
22241
22242         * config/i386/mmx.md (mmx_<code><mode>3): New.
22243         (mmx_and<mode>3): Removed.
22244         (mmx_ior<mode>3): Likewise.
22245         (mmx_xor<mode>3): Likewise.
22246
22247         * config/i386/sse.md (<code><mode>3): New.
22248         (*<code><mode>3): Likewise.
22249         (*<code><mode>3): Likewise.
22250         (<code><mode>3): Likewise.
22251         (*sse_<code><mode>3): Likewise.
22252         (*sse2_<code><mode>3): Likewise.
22253         (<code>tf3): Likewise.
22254         (*<code>tf3): Likewise.
22255         (and<mode>3): Likewise.
22256         (*and<mode>3): Likewise.
22257         (ior<mode>3): Removed.
22258         (*ior<mode>3): Likewise.
22259         (xor<mode>3): Likewise.
22260         (*xor<mode>3): Likewise.
22261         (*and<mode>3): Likewise.
22262         (*ior<mode>3): Likewise.
22263         (*xor<mode>3): Likewise.
22264         (and<mode>3): Likewise.
22265         (*sse_and<mode>3): Likewise.
22266         (*sse2_and<mode>3): Likewise.
22267         (andtf3): Likewise.
22268         (*andtf3): Likewise.
22269         (ior<mode>3): Likewise.
22270         (*sse_ior<mode>3): Likewise.
22271         (*sse2_ior<mode>3): Likewise.
22272         (iortf3): Likewise.
22273         (*iortf3): Likewise.
22274         (xor<mode>3): Likewise.
22275         (*sse_xor<mode>3): Likewise.
22276         (*sse2_xor<mode>3): Likewise.
22277         (xortf3): Likewise.
22278         (*xortf3): Likewise.
22279
22280 2008-04-02  Richard Guenther  <rguenther@suse.de>
22281
22282         PR tree-optimization/14495
22283         PR tree-optimization/34793
22284         * tree-vrp.c (struct switch_update): New structure.
22285         (to_remove_edges, to_update_switch_stmts): New VECs.
22286         (simplify_switch_using_ranges): New function.  Remove not taken
22287         case labels and edges.
22288         (simplify_stmt_using_ranges): Call it.
22289         (identify_jump_threads): Mark edges we have queued for removal
22290         so we don't thread them.
22291         (execute_vrp): Remove edges queued for removal, update SWITCH_STMT
22292         case label vector.
22293         * tree-cfg.c (group_case_labels): Deal with missing default label.
22294         (tree_verify_flow_info): Allow missing default label.
22295         * stmt.c (emit_case_bit_tests): Deal with NULL default_label.
22296         (emit_case_nodes): Likewise.
22297         (expand_case): Do not rely on the default label to be present.
22298         * expr.c (try_casesi): Deal with NULL default_label.
22299         (do_tablejump): Likewise.
22300
22301 2008-04-02  Richard Guenther  <rguenther@suse.de>
22302
22303         PR tree-optimization/14495
22304         * tree-vrp.c (vrp_visit_cond_stmt): Do not handle
22305         SWITCH_EXPR here ...
22306         (vrp_visit_switch_stmt): ... but here (new function).
22307         (find_case_label_index): New helper function.
22308         (vrp_visit_stmt): Dispatch to vrp_visit_switch_stmt.
22309
22310 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
22311
22312         * fwprop.c: Fix ISO-C99ism.
22313
22314 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
22315
22316         PR bootstrap/35752
22317         * Makefile.in (objdir): Set it here.
22318         * configure.ac: Not here.  Find dynamic linker characteristics.
22319         * exec-tool.in: Use them.
22320         * aclocal.m4: Regenerate.
22321         * configure: Regenerate.
22322
22323 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
22324
22325         * expr.c (expand_var): Delete it.
22326         * expr.h (expand_var): Delete prototype.
22327         * function.c (expand_function_start): Use expand_decl instead.
22328         * cfgexpand.c (expand_one_static_var, expand_one_var): Don't call
22329         langhook.
22330
22331 2008-04-02  Andy Hutchinson <hutchinsonamdy@aim.com>
22332
22333         PR rtl-optimization/35542
22334         * fwprop.c (forward_propagate_and_simplify): Replace
22335         loc_reg_mentioned_in_p with reg_mentioned_p.
22336
22337 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
22338
22339         PR rtl-optimization/35281
22340         * fwprop.c (PR_CAN_APPEAR, PR_HANDLE_MEM): New.
22341         (propagate_rtx_1): Handle PR_HANDLE_MEM.
22342         (propagate_rtx): Pass PR_HANDLE_MEM if appropriate.
22343         (varying_mem_p): Move above propagate_rtx.
22344         (all_uses_available_at): Do not check MEMs.
22345
22346 2008-04-02  Rafael Espíndola  <espindola@google.com>
22347
22348         * tree-vrp.c (extract_code_and_val_from_cond): Remove.
22349         (register_edge_assert_for_2): Split the cond argument.
22350         (register_edge_assert_for_1): Adjust for the change in
22351         register_edge_assert_for_2.
22352         (register_edge_assert_for): Split the cond argument.
22353         (find_switch_asserts): Adjust for the change in
22354         register_edge_assert_for.
22355
22356 2008-04-02  Kai Tietz  <kai.tietz@onevision.com>
22357
22358         * config.gcc: Add for x86_64-*-mingw* the t-crtfm to tbuild.
22359         * config/i386/cygming.h (ASM_OUTPUT_DWARF_OFFSET): Add 8 byte
22360         offsets for 64-bit mingw.
22361         * config/i386/i386.c (ix86_pass_by_reference): Correct calling
22362         abi for x86_64-pc-mingw.
22363
22364 2008-04-02  Richard Guenther  <rguenther@suse.de>
22365
22366         * tree-vrp.c (extract_range_from_assert): Make sure to not
22367         produce range min/max with TREE_OVERFOW set.
22368         If merging a anti-range and a range keep the anti-range if
22369         the range covers all values of the type.
22370         (register_edge_assert_for_2): Only allow sign-changing
22371         conversions in detecting canonical range checks.  Also
22372         register an assert for the unsigned name if useful.
22373
22374         PR tree-optimization/35787
22375         * tree-vrp.c (vrp_val_max): New function.
22376         (vrp_val_min): Likewise.
22377         (vrp_val_is_max): Move earlier, use vrp_val_{min,max}.
22378         (vrp_val_is_min): Likewise.
22379         (supports_overflow_infinity): Use vrp_val_{min,max}.
22380         (negative_overflow_infinity): Likewise.
22381         (positive_overflow_infinity): Likewise.
22382         (is_negative_overflow_infinity): Use vrp_val_is_{min,max}.
22383         (is_positive_overflow_infinity): Likewise.
22384         (is_overflow_infinity): Likewise.
22385         (avoid_overflow_infinity): Use vrp_val_{min,max} and
22386         vrp_val_is_{min,max}.
22387         (set_and_canonicalize_value_range): Canonicalize anti-ranges
22388         to ranges if possible.  Avoid empty ranges.
22389
22390 2008-04-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
22391
22392         PR middle-end/35705
22393         * fold-const.c (get_pointer_modulus_and_residue): Return modulus 1 if
22394         the expression is a function address.
22395
22396 2008-04-01  George Helffrich  <george@gcc.gnu.org>
22397
22398         PR fortran/35154, fortran/23057
22399         * dbxout.c: Emit .stabs debug info for Fortran COMMON block
22400         variables as base symbol name + offset using N_BCOMM/N_ECOMM.
22401         (is_fortran, dbxout_common_name, dbxout_common_check): New functions.
22402         (dbxout_symbol_location): Transform N_LCSYM to N_GSYM for storage
22403         in common.
22404         (dbxout_syms): Check for COMMON-based symbol and wrap in
22405         N_BCOMM/N_ECOMM stab bracket, including as many symbols as possible
22406         in bracket for efficiency.
22407
22408         * dwarf2out.c: Emit DWARF debug info for Fortran COMMON block
22409         using DW_TAG_common_block + member offset.
22410         (add_pubname_string): New function.
22411         (dw_expand_expr): New function to find block name and offset for
22412         COMMON var.
22413         (common_check): New function to check whether symbol in Fortran COMMON.
22414         (gen_variable_die): If COMMON, use DW_TAG_common_block.
22415
22416 2008-04-01  Volker Reichelt  <v.reichelt@netcologne.de>
22417
22418         PR c/35436
22419         * c-format.c (init_dynamic_gfc_info): Ignore invalid locus type.
22420
22421 2008-04-02  Ben Elliston  <bje@au.ibm.com>
22422
22423         * config/v850/v850.md (casesi): Remove if (0) code.
22424         * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Likewise.
22425         * config/alpha/alpha.c (alpha_initialize_trampoline): Likewise.
22426
22427 2008-04-01  Uros Bizjak  <ubizjak@gmail.com>
22428
22429         * config/i386/i386.md (rex64suffix): New mode attribute.
22430         (floathi<mode>2): Disable expander for SSE math.
22431         (*floathi<mode>2_1): New insn insn_and_split pattern.
22432         (*floathi<mode>2_i387_with_temp): New macroized instruction pattern and
22433         corresponding post-reload splitters.
22434         (*floathi<mode>2_i387): New macroized insn pattern.
22435         (float<SSEMODEI24:mode><X87MODEF:mode>2): New macroized expander.
22436         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1): New macroized
22437         insn_and_split pattern.
22438         (*floatsi<mode>2_vector_mixed_with_temp, *floatsi<mode>2_vector_mixed):
22439         New macroized instruction patterns and corresponding post-reload
22440         splitters.
22441         (*floatsi<mode>2_mixed_with_temp): New macroized instruction pattern
22442         and corresponding post-reload splitters.
22443         (*floatsi<mode>2_mixed_interunit, *floatsi<mode>2_mixed_nointerunit):
22444         New macroized instruction patterns.
22445         (*floatsi<mode>2_vector_sse_with_temp, *floatsi<mode>2_vector_sse): New
22446         macroized instruction patterns and corresponding post-reload splitters.
22447         (*floatsi<mode>2_sse_with_temp): New macroized instruction pattern and
22448         corresponding post-reload splitters.
22449         (*floatsi<mode>2_sse_interunit, *floatsi<mode>2_mixed_nointerunit):
22450         New macroized instruction patterns.
22451         (*floatsi<mode>2_i387_with_temp): New macroized instruction pattern and
22452         corresponding post-reload splitters.
22453         (*floatsi<mode>2_i387): New macroized instruction patterns.
22454
22455 2008-04-01  H.J. Lu  <hongjiu.lu@intel.com>
22456
22457         * config/i386/i386.md (smaxmin): New.
22458         (umaxmin): Likewise.
22459         (maxminiprefix): Likewise.
22460         (maxminfprefix): Likewise.
22461         (<code><mode>3): Likewise.
22462         (smin<mode>3): Removed.
22463         (smax<mode>3): Likewise.
22464
22465         * config/i386/mmx.md (mmx_<code>v2sf3): New.
22466         (mmx_<code>v4hi3): Likewise.
22467         (mmx_<code>v8qi3): Likewise.
22468         (mmx_smaxv2sf3): Removed.
22469         (mmx_sminv2sf3): Likewise.
22470         (mmx_umaxv8qi3): Likewise.
22471         (mmx_smaxv4hi3): Likewise.
22472         (mmx_uminv8qi3): Likewise.
22473         (mmx_sminv4hi3): Likewise.
22474
22475         * config/i386/sse.md (<addsub><mode>3): New.
22476         (*<addsub><mode>3): Likewise.
22477         (<sse>_vm<addsub><mode>3): Likewise.
22478         (<maxmin><mode>3): Likewise.
22479         (*<maxmin><mode>3_finite): Likewise.
22480         (*<maxmin><mode>3): Likewise.
22481         (<sse>_vm<maxmin><mode>3): Likewise.
22482         (sse3_h<addsub>v4sf3): Likewise.
22483         (sse3_h<addsub>v2df3): Likewise.
22484         (<maxmin>v16qi3): Likewise.
22485         (*<maxmin>v16qi3): Likewise.
22486         (<maxmin>v8hi3): Likewise.
22487         (*<maxmin>v8hi3): Likewise.
22488         (*sse4_1_<maxmin><mode>3): Likewise.
22489         (*sse4_1_<maxmin><mode>3): Likewise.
22490         (add<mode>3): Removed.
22491         (*add<mode>3): Likewise.
22492         (<sse>_vmadd<mode>3): Likewise.
22493         (sub<mode>3): Likewise.
22494         (*sub<mode>3): Likewise.
22495         (<sse>_vmsub<mode>3): Likewise.
22496         (smin<mode>3): Likewise.
22497         (*smin<mode>3_finite): Likewise.
22498         (*smin<mode>3): Likewise.
22499         (<sse>_vmsmin<mode>3): Likewise.
22500         (smax<mode>3): Likewise.
22501         (*smax<mode>3_finite): Likewise.
22502         (*smax<mode>3): Likewise.
22503         (<sse>_vmsmax<mode>3): Likewise.
22504         (sse3_haddv4sf3): Likewise.
22505         (sse3_haddv2df3): Likewise.
22506         (sse3_hsubv4sf3): Likewise.
22507         (sse3_hsubv2df3): Likewise.
22508         (umaxv16qi3): Likewise.
22509         (*umaxv16qi3): Likewise.
22510         (smaxv8hi3): Likewise.
22511         (*smaxv8hi3): Likewise.
22512         (*sse4_1_smax<mode>3): Likewise.
22513         (*sse4_1_umax<mode>3): Likewise.
22514         (uminv16qi3): Likewise.
22515         (*uminv16qi3): Likewise.
22516         (sminv8hi3): Likewise.
22517         (*sminv8hi3): Likewise.
22518         (*sse4_1_smin<mode>3): Likewise.
22519         (*sse4_1_umin<mode>3): Likewise.
22520
22521 2008-04-01  Rafael Espíndola  <espindola@google.com>
22522
22523         * tree-cfg.c (verify_expr): remove in_phi.
22524         (verify_stmt): Don't call walk_tree with verify_expr. Use
22525         is_gimple_min_invariant instead of is_gimple_val.
22526
22527 2008-04-01  Joseph Myers  <joseph@codesourcery.com>
22528
22529         * doc/include/gpl_v3.texi: Update for manpage generation.
22530         * doc/gcc.texi, doc/gccint.texi: Include gpl_v3.texi instead of
22531         gpl.texi.
22532         * doc/sourcebuild.texi: Document gpl_v3.texi as well as gpl.texi.
22533         * Makefile.in (TEXI_GCC_FILES, TEXI_GCCINT_FILES): Include
22534         gpl_v3.texi instead of gpl.texi.
22535         (gpl.pod): New.
22536
22537 2008-04-01  Jakub Jelinek  <jakub@redhat.com>
22538
22539         PR pch/13675
22540         * c-pch.c (c_common_read_pch): On error close (fd) resp. fclose (f).
22541
22542 2008-04-01  Rafael Espíndola  <espindola@google.com>
22543
22544         * tree-vrp.c (extract_code_and_val_from_cond_with_ops): New.
22545         (extract_code_and_val_from_cond): Use
22546         extract_code_and_val_from_cond_with_ops.
22547
22548 2008-04-01  Jan Hubicka  <jh@suse.cz>
22549
22550         * function.c (free_after_compilation): Free epilogue_delay_list.
22551         (prepare_function_start): Assert that previous compilation was freed.
22552
22553 2008-04-01  Jan Hubicka  <jh@suse.cz>
22554             Jim Wilson  <wilson@tuliptree.org>
22555             Andreas Tobler <andreast@gcc.gnu.org>
22556
22557         PR middle-end/35781
22558         * m32c/m32.c (m32c_leaf_function_p, m32c_function_needs_enter): Use
22559         rtl.emit instead cfun->emit.
22560         * sparc/sparc.h (INIT_EXPANDERS): Likewise.
22561         * ia64/ia64.h (INIT_EXPANDERS): Likewise.
22562
22563 2008-04-01  Ben Elliston  <bje@au.ibm.com>
22564
22565         * doc/c-tree.texi (Function Basics): Fix grammatical error.
22566
22567 2008-03-31  Seongbae Park <seongbae.park@gmail.com>
22568
22569         * common.opt (fprofile-dir=, fprofile-use=, fprofile-generate=):
22570         New options
22571         (fprofile-use): Add var flag_profile_use
22572         * coverage.c (coverage_begin_output): Do not open a gcno file for
22573         output only if -ftest-coverage is set.
22574         Do not add getpwd() to gcda file path.
22575         (build_gcov_info): Check the new flag
22576         flag_profile_datafile_relative_path.
22577         (coverage_init): Use profile_data_prefix.
22578         Read profile counter only if flag_profile_use is set.
22579         * opts.c (common_handle_option): New option fprofile-use=,
22580         fprofile-dir=, fprofile-generate=.
22581         * toplev.c (profile_data_prefix): New variable definition.
22582         * toplev.h (profile_data_prefix): New declaration.
22583         * doc/invoke.tex (Option Summary, Optimization Options):
22584         Add new options.
22585
22586 2008-03-31  James E. Wilson  <wilson@tuliptree.org>
22587
22588         * varasm.c (output_constant_pool_1): In LABEL_REF check,
22589         use tmp consistently.
22590
22591         PR target/35695
22592         * config/ia64/div.md (recip_approx_rf): Use UNSPEC not DIV.
22593         * config/ia64/ia64.c (rtx_needs_barrier): Handle
22594         UNSPEC_FR_RECIP_APPROX_RES.
22595         * config/ia64/ia64.md (UNSPEC_FR_RECIP_APPROX_RES): Define.
22596
22597 2008-03-31  Volker Reichelt  <v.reichelt@netcologne.de>
22598
22599         PR c/35750
22600         * c-decl.c (store_parm_decls_oldstyle): Skip invalid parameters.
22601
22602 2008-03-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
22603
22604         PR middle-end/30186
22605         * fold-const.c (fold_indirect_ref_1): Support accessing non first
22606         element of the vector via a pointer.
22607
22608 2008-03-31  Ian Lance Taylor  <iant@google.com>
22609
22610         * tlink.c (scan_linker_output): Look for symbol name in single quotes.
22611
22612 2008-03-31  Jan Hubicka  <jh@suse.cz>
22613
22614         * builtins.c (expand_builtin_setjmp_receiver): Update call of
22615         get_arg_pointer_save_area.
22616         * expr.c (init_expr): Just clear out rtl.expr.
22617         * function.c (free_after_compilation): Clear out whole RTL structure.
22618         (get_func_frame_size): Merge into ...
22619         (get_frame_size): ... this one.
22620         (assign_stack_local_1): Merge into ...
22621         (assign_stack_local): ... this one.
22622         (expand_function_end): Update call of get_arg_pointer_save_area.
22623         (get_art_pointer_save_area): Remove cfun argument.
22624         * function.h (emit_status): regno_pointer_align does not need length
22625         attribute. Move x_regno_reg_rtx to ...
22626         (regno_reg_rtx): ... new global array.
22627         (reg_rtx_no, seq_stack, REGNO_POINTER_ALIGN): Update accestors.
22628         (pending_stack_adjust, inhibit_defer_pop, saveregs_value,
22629         apply_args_value, forced_labels, stack_pointer_delta):
22630         Update accestors.
22631         (struct varasm_status): Move here from varasm.c
22632         (struct rtl_data): New. Move here some fields from struct function.
22633         (return_label, naked_return_label, stack_slot_list, parm_birth_insn,
22634         frame_offset, stack_check_probe_note, arg_pointer_save_area,
22635         used_temp_slots avail_temp_slots, temp_slot_level,
22636         nonlocal_goto_handler_labels): Update accesstors.
22637         (rtl): New global variable.
22638         (struct function): Move some fileds to rtl_data.
22639         (get_arg_pointer_save_area): Update prototype.
22640         * emit-rtl.c (rtl): Declare.
22641         (regno_reg_rtx): Declare.
22642         (first_insn, last_insn, cur_insn_uid, last_location, first_label_num):
22643         Update.
22644         (gen_reg_rtx): Update.
22645         (init_virtual_regs): Do not tate emit_status argument.
22646         (init_emit): Do not allocate emit.
22647         * varasm.c (varasm_statuc): Move to function.h.
22648         (n_deferred_constatns): Update accestor.
22649         (init_varasm_status): Do not allocate varasm_status.
22650         (force_const_mem, get_pool_size, output_constant_pool): Update.
22651         * stmt.c (force_label_rtx): Do not use x_ prefixes.
22652         (expand_nl_goto_receiver): Update get_arg_pointer_save_area.
22653
22654 2008-03-31  Zdenek Dvorak  <ook@ucw.cz>
22655
22656         PR rtl-optimization/35729
22657         * loop-invariant.c (check_maybe_invariant): Disallow volatile memory
22658         references.
22659
22660 2008-03-31  H.J. Lu  <hongjiu.lu@intel.com>
22661
22662         PR target/32000
22663         * config/i386/i386.md (*movti_internal): Emit unaligned SSE
22664         load/store if memory is unaligned.
22665         (*movti_rex64): Likewise.
22666
22667         * config/i386/predicates.md (misaligned_operand): New.
22668
22669 2008-03-31  Andrew Pinski  <pinskia@gmail.com>
22670
22671         PR tree-opt/35431
22672         * tree-ssa-phiopt.c (conditional_replacement): Return early for
22673         complex types.
22674
22675 2008-03-31  Jan Beulich  <jbeulich@novell.com>
22676
22677         * config/ia64/constraints.md: Add 'j' constraint.
22678         * config/ia64/ia64.md (movsi_internal): Add addp4 case.
22679         (movdi_internal): Likewise.
22680
22681 2008-03-30  Volker Reichelt  <v.reichelt@netcologne.de>
22682
22683         PR c/35748
22684         * c-typeck.c (build_c_cast): Skip invalid fields in unions.
22685
22686 2008-03-30  H.J. Lu  <hongjiu.lu@intel.com>
22687
22688         PR target/35757
22689         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Issue
22690         proper error message for the third argument on blendpd and
22691         blendps.
22692
22693         * config/i386/sse.md (blendbits): New.
22694         (sse4_1_blendp<ssemodesuffixf2c>): Use it.
22695
22696 2008-03-30  Eric Botcazou  <ebotcazou@adacore.com>
22697
22698         * fold-const.c (fold_binary) <BIT_IOR_EXPR>: Add missing conversions.
22699
22700 2008-03-30  Richard Guenther  <rguenther@suse.de>
22701
22702         PR middle-end/31023
22703         * fold-const.c (fold_sign_changed_comparison): Do leave
22704         conversions to base-types alone.
22705
22706 2008-03-29  Andrew Pinski  <andrew_pinski@playstation.sony.com>
22707
22708         * config/rs6000/rs6000.c (rs6000_stack_info): Don't force saving of
22709         the link register if one altivec register is be saved.
22710
22711 2008-03-30  Ben Elliston  <bje@au.ibm.com>
22712
22713         * final.c (final_scan_insn): Remove if (0) code.
22714
22715 2008-03-28  Volker Reichelt  <v.reichelt@netcologne.de>
22716
22717         * c-parser.c (c_parser_next_token_is_keyword): Simplify.
22718
22719 2008-03-28  H.J. Lu  <hongjiu.lu@intel.com>
22720
22721         * config/i386/sse.md (*and<mode>3): Pass <MODE>mode instead
22722         of V4SFmode to ix86_binary_operator_ok.
22723
22724 2008-03-28  Uros Bizjak  <ubizjak@gmail.com>
22725
22726         * config/i386/i386.c (override_options): Initialize
22727         ix86_veclib_handler to ix86_veclibabi_svml when
22728         -mveclibabi=svml is used.
22729         (ix86_veclibabi_svml): New function for SVML ABI style
22730         vectorization support.
22731         * doc/invoke.texi (-mveclibabi) [svml]: Document new target option.
22732
22733 2008-03-28  Rafael Espíndola  <espindola@google.com>
22734
22735         * fold-const.c (tree_unary_nonnegative_warnv_p): Make it public.
22736         (tree_binary_nonnegative_warnv_p): Make it public.
22737         (tree_single_nonnegative_warnv_p): Make it public.
22738         (tree_invalid_nonnegative_warnv_p): Make it public.
22739         (tree_unary_nonzero_warnv_p): Make it public.
22740         (tree_binary_nonzero_warnv_p): Make it public
22741         (tree_single_nonzero_warnv_p): Make it public.
22742         * tree-vrp.c (vrp_evaluate_conditional_warnv_with_ops): New function.
22743         (extract_range_from_binary_expr): Split the expr argument.
22744         (extract_range_from_unary_expr): Split the expr argument.
22745         (extract_range_from_comparison): Split the expr argument.
22746         (extract_range_from_expr): Use the new aux functions.
22747         (vrp_evaluate_conditional_warnv): Use
22748         vrp_evaluate_conditional_warnv_with_ops.
22749         * tree.h (tree_unary_nonzero_warnv_p): Declare.
22750         (tree_binary_nonzero_warnv_p): Declare.
22751         (tree_single_nonzero_warnv_p): Declare.
22752         (tree_expr_nonzero_warnv_p): Declare.
22753         (tree_unary_nonnegative_warnv_p): Declare.
22754         (tree_binary_nonnegative_warnv_p): Declare.
22755         (tree_single_nonnegative_warnv_p): Declare.
22756         (tree_invalid_nonnegative_warnv_p): Declare.
22757
22758 2008-03-28  Richard Guenther  <rguenther@suse.de>
22759
22760         PR tree-optimization/30317
22761         PR tree-optimization/30911
22762         PR tree-optimization/34793
22763         * tree-vrp.c (set_and_canonicalize_value_range): New function.
22764         (struct assert_locus_d): New member EXPR.
22765         (register_new_assert_for): Add EXPR parameter to support
22766         ASSERT_EXPR <name, expr OP limit>.
22767         (register_edge_assert_for_1): Adjust callers.
22768         (find_assert_locations): Likewise.
22769         (process_assert_insertions_for): Build condition from expression.
22770         (extract_range_from_assert): Handle ASSERT_EXPRs
22771         of the form ASSERT_EXPR <name, expr OP limit>.
22772         (register_edge_assert_for_2): New helper registering
22773         asserts for comparisons.  Recognize range tests of the form
22774         (unsigned)i - CST1 OP CST2.
22775         (register_edge_assert_for_1): Use it.
22776         (register_edge_assert_for): Likewise.
22777         (needs_overflow_infinity): Integer sub-types
22778         do not need overflow infinities.
22779         (vrp_val_is_max): The extreme values of integer sub-types
22780         are those of the base type.
22781         (vrp_val_is_min): Likewise.
22782         * tree.def (ASSERT_EXPR): Document extra allowed conditional
22783         expressions.
22784
22785 2008-03-28  Nick Clifton  <nickc@redhat.com>
22786
22787         PR target/31110
22788         * config/mn10300/mn10300.c (mn10300_secondary_reload_class):
22789         Return GENERAL_REGS for stack adjustment reloads.
22790
22791 2008-03-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
22792
22793         PR target/31334
22794         * config/rs6000/rs6000.c (rs6000_expand_vector_init): Create a
22795         const_vector when all the vectors are constant.
22796
22797 2008-03-27  Bob Wilson  <bob.wilson@acm.org>
22798
22799         * config/xtensa/xtensa.c (gen_float_relational): Handle unordered
22800         comparisons.
22801         * config/xtensa/xtensa.md (any_cond): Add unordered comparisons.
22802         (any_scc_sf): Add uneq, unlt, unle and unordered operators.
22803         (scc_sf): New.
22804         (s<code>_sf): Use new scc_sf attribute for opcode names.
22805
22806 2008-03-27  Tom Tromey  <tromey@redhat.com>
22807
22808         * doc/sourcebuild.texi, doc/install.texi, configure, aclocal.m4,
22809         configure.ac, Makefile.in, config/t-darwin, config/m32c/t-m32c,
22810         config/spu/t-spu-elf, config/i386/t-interix,
22811         config/i386/t-cygming, config/i386/x-i386, config/i386/t-cygwin,
22812         config/i386/x-darwin, config/i386/x-mingw32,
22813         config/i386/t-netware, config/i386/x-cygwin, config/i386/t-nwld,
22814         config/sh/t-sh, config/sh/t-symbian, config/x-linux,
22815         config/t-sol2, config/x-hpux, config/x-darwin, config/ia64/t-ia64,
22816         config/x-solaris, config/t-vxworks, config/m68k/t-uclinux,
22817         config/rs6000/x-rs6000, config/rs6000/x-darwin64,
22818         config/rs6000/x-darwin, config/rs6000/t-rs6000,
22819         config/score/t-score-elf, config/arm/t-strongarm-pe,
22820         config/arm/t-pe, config/arm/t-arm, config/arm/t-wince-pe,
22821         config/v850/t-v850, config/v850/t-v850e, config/bfin/t-bfin-linux:
22822         Revert automatic dependency patch.
22823
22824 2008-03-27  H.J. Lu  <hongjiu.lu@intel.com>
22825
22826         PR target/35657
22827         * config/i386/i386.c (ix86_function_arg_boundary): Align
22828         decimal floating point to its natural boundary.
22829
22830 2008-03-27  Richard Guenther  <rguenther@suse.de>
22831
22832         PR middle-end/35716
22833         * fold-const.c (fold_comparison): Restrict distinct decl
22834         comparison folding to VAR_DECLs and PARM_DECLs.  Do not
22835         solely rely on operand_equal_p.
22836
22837 2008-03-27  Richard Guenther  <rguenther@suse.de>
22838
22839         PR c/32511
22840         * c-common.c (handle_weak_attribute): Reject combination of
22841         weak and inline.
22842
22843 2008-03-27  Richard Guenther  <rguenther@suse.de>
22844
22845         PR tree-optimization/32810
22846         * tree-ssa-ccp.c (get_symbol_constant_value): Strip useless
22847         conversions from DECL_INITIAL.
22848         (fold_const_aggregate_ref): Likewise from constructor elements.
22849
22850 2008-03-27  Zdenek Dvorak  <ook@ucw.cz>
22851
22852         * tree-affine.h (aff_combination_expand): Declare.
22853         (get_inner_reference_aff): Likewise.
22854         * tree-affine.c (aff_combination_expand): Split out from
22855         tree_to_aff_combination_expand.
22856         (get_inner_reference_aff): New function.
22857         * tree-parloops.c (loop_parallel_p): Free vectorizer info.
22858         * tree-ssa-loop-im.c: Include tree-affine.h and pointer-set.h.
22859         (struct lim_aux_data): sm_done field removed.
22860         (mem_ref_loc_p, mem_ref_locs_p): New types.
22861         (struct mem_ref): Added id, stored, accesses_in_loop,
22862         indep_loop, dep_loop, indep_ref, dep_ref fields.
22863         Removed is_stored, locs and next fields.
22864         (memory_accesses): New variable.
22865         (movement_possibility): Do not allow moving statements
22866         that store to memory.
22867         (outermost_indep_loop, simple_mem_ref_in_stmt, mem_ref_in_stmt):
22868         New functions.
22869         (determine_max_movement): For statements with memory references,
22870         find the outermost loop in that the reference is independent.
22871         (move_computations_stmt): Mark the virtual operands for renaming.
22872         (memref_free, mem_ref_alloc, mem_ref_locs_alloc, mark_ref_stored,
22873         gather_mem_refs_stmt, gather_mem_refs_in_loops, vtoe_hash, vtoe_eq,
22874         vtoe_free, record_vop_access, get_vop_accesses, get_vop_stores,
22875         add_vop_ref_mapping, create_vop_ref_mapping_loop,
22876         create_vop_ref_mapping, analyze_memory_references,
22877         cannot_overlap_p, mem_refs_may_alias_p, rewrite_mem_ref_loc,
22878         get_all_locs_in_loop, ref_always_accessed_p,
22879         refs_independent_p, record_indep_loop, ref_indep_loop_p_1,
22880         ref_indep_loop_p, can_sm_ref_p, find_refs_for_sm,
22881         store_motion_loop, store_motion): New functions.
22882         (struct vop_to_refs_elt): New type.
22883         (record_mem_ref_loc, free_mem_ref_locs, rewrite_mem_refs,
22884         memref_hash, memref_eq, hoist_memory_references): Rewritten.
22885         (schedule_sm): Replaced by...
22886         (execute_sm): ... this.
22887         (determine_lsm_ref, hoist_memory_references,
22888         loop_suitable_for_sm, gather_mem_refs_stmt, gather_mem_refs,
22889         find_more_ref_vops, free_mem_ref, free_mem_refs,
22890         determine_lsm_loop, determine_lsm): Removed.
22891         (tree_ssa_lim_finalize): Free data structures used by store motion.
22892         (tree_ssa_lim): Call analyze_memory_references.  Use
22893         store_motion instead of determine_lsm.
22894
22895 2008-03-27  Paolo Bonzini  <bonzini@gnu.org>
22896
22897         * config.cc (m68hc11, m6811, m68hc12, m6812): Add usegas.h,
22898         rename tmake_file to m68hc11/t-m68hc11.
22899         (mcore): Set inhibit_libc to true.
22900         * config.host (alpha*-dec-*vms*): Set extra_programs.
22901         (interix3*): Don't use host_xmake_file.
22902         * configure.ac: Let config.gcc override inhibit_libc.
22903         * configure: Regenerate.
22904
22905         * config/alpha/x-vms (EXTRA_PROGRAMS): Remove.
22906         * config/t-openbsd-thread: Remove commented out lines.
22907
22908         * config/x-interix: Remove.
22909
22910         * config/m68hc11/t-m68hc11-gas: Rename to...
22911         * config/m68hc11/t-m68hc11: ... this.  Remove T_CPPFLAGS.
22912
22913         * config/mcore/t-mcore: Remove T_CFLAGS.
22914         * config/mcore/t-mcore-pe: Likewise.
22915
22916 2008-03-27  Paolo Bonzini  <bonzini@gnu.org>
22917
22918         * configure.ac: Replace custom __GNU_SOURCE test with
22919         AC_USE_SYSTEM_EXTENSIONS.  Move it earlier.
22920         * aclocal.m4: Regenerate.
22921         * configure: Regenerate.
22922         * config.in: Regenerate.
22923
22924 2008-03-27  Richard Guenther  <rguenther@suse.de>
22925
22926         * fold-const.c (target.h): Include.
22927         (fold_comparison): Fold comparison of addresses of decls
22928         that bind locally or of constants.  Consolidate address folding code.
22929         * tree-vrp.c (operand_less_p): Deal with non-INTEGER_CST
22930         results from fold_binary_to_constant.
22931         (compare_values_warnv): Likewise.
22932
22933 2008-03-27  Andrew Pinski  <pinskia@gmail.com>
22934
22935         PR middle-end/35429
22936         * fold-const.c (fold_truthop): Check for integeral types when folding
22937         a == 0 && b == 0 and a != 0 || b != 0 .
22938
22939 2008-03-26  Eric Botcazou  <ebotcazou@adacore.com>
22940
22941         * tree.c (get_unwidened): Remove code fiddling with COMPONENT_REF.
22942
22943 2008-03-26  Andreas Schwab  <schwab@suse.de>
22944
22945         * doc/invoke.texi: Fix use of @item vs. @itemx.
22946
22947 2008-03-26  Tom Tromey  <tromey@redhat.com>
22948
22949         * Makefile.in (build/gensupport.o, build/print-rtl.o,
22950         build/read-rtl.o, build/rtl.o, build/gencondmd.o, build/genattr.o,
22951         build/genattrtab.o, build/genautomata.o, build/gencheck.o,
22952         build/gencodes.o, build/genconditions.o, build/genconfig.o,
22953         build/genconstants.o, build/genemit.o, build/genextract.o,
22954         build/genflags.o, build/genmddeps.o, build/genopinit.o,
22955         build/genoutput.o, build/genpeep.o, build/genrecog.o): Depend on
22956         options.h.
22957
22958 2008-03-26  Richard Guenther  <rguenther@suse.de>
22959
22960         Revert
22961         2008-03-26  Richard Guenther  <rguenther@suse.de>
22962
22963         * fold-const.c (target.h): Include.
22964         (fold_comparison): Fold comparison of addresses of two decls
22965         that bind locally.  Consolidate address folding code.
22966
22967 2008-03-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
22968
22969         * builtins.c (expand_builtin_pow, fold_builtin_cabs,
22970         fold_builtin_sqrt, fold_builtin_cbrt, fold_builtin_logarithm,
22971         fold_builtin_hypot, fold_builtin_pow): Remove uses of dconst3,
22972         dconstsqrt2, dconstthird, dconste and/or dconst10.
22973         * config/i386/i386.c (ix86_emit_swsqrtsf): Likewise.
22974         * emit-rtl.c (dconst3, dconst10, dconstm2, dconstthird,
22975         dconstsqrt2, dconste): Delete.
22976         (init_emit_once): Likewise.  Simplify initializing dconstm1.
22977         Constify variable.
22978         * real.c (get_real_const): New.
22979         * real.h (dconst3, dconst10, dconstm2, dconstthird,
22980         dconstsqrt2, dconste): Delete.
22981         (real_value_const, get_real_const): New.
22982
22983 2008-03-26  H.J. Lu  <hongjiu.lu@intel.com>
22984
22985         * config/i386/cygming.h (BIGGEST_ALIGNMENT): Removed.
22986
22987         * config/i386/i386.c (ix86_function_arg_boundary): Check
22988         BIGGEST_ALIGNMENT instead of 128.
22989         (setup_incoming_varargs_64): Likewise.
22990
22991 2008-03-26  Tom Tromey  <tromey@redhat.com>
22992
22993         * Makefile.in (DEPFILES): Add missing '/'.
22994
22995 2008-03-26  Richard Guenther  <rguenther@suse.de>
22996
22997         * fold-const.c (target.h): Include.
22998         (fold_comparison): Fold comparison of addresses of two decls
22999         that bind locally.  Consolidate address folding code.
23000
23001 2008-03-26  Nick Clifton  <nickc@redhat.com>
23002
23003         PR target/31232
23004         * config/stormy16/stormy16.c (xstormy16_legitimate_address_p): Do
23005         not allow INT+INT as a legitimate addressing mode.
23006
23007 2008-03-26  Richard Guenther  <rguenther@suse.de>
23008
23009         * tree-flow.h (widen_bitfield): Remove declaration.
23010         * tree-ssa-ccp.c (visit_assignment): Remove unneeded code.
23011         (widen_bitfield): Remove function.
23012         * tree-ssa-dom.c (record_equivalences_from_stmt): Remove unneeded
23013         code.
23014
23015 2008-03-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
23016
23017         PR target/31558
23018         * config/rs6000/rs6000-c.c (rs6000_builtin_type_compatible): Handle
23019         error_mark_node's.
23020
23021 2008-03-25  Richard Sandiford  <rsandifo@nildram.co.uk>
23022
23023         PR rtl-optimization/35232
23024         * reload1.c (reg_reloaded_call_part_clobbered): Clarify comment.
23025         (forget_old_reloads_1, forget_marked_reloads): Don't clear
23026         reg_reloaded_call_part_clobbered here.
23027         (reload_regs_reach_end_p): New function.
23028         (reload_reg_rtx_for_input): New variable.
23029         (reload_reg_rtx_for_output): Likewise.
23030         (emit_input_reload_insns): Use reloadreg rather than rl->reg_rtx
23031         when reassigning a pseudo register.  Load reloadreg from
23032         reload_reg_rtx_for_input, moving the mode and register
23033         calculation to...
23034         (do_input_reload): ...here.  Use the mode-adjusted reg_rtx
23035         instead of the original when deciding whether an input reload
23036         would be a no-op or whether an output reload can be deleted.
23037         (emit_output_reload_insns): Use the mode-adjusted reg_rtx
23038         when setting up new_spill_reg_store.  Load it from
23039         reload_reg_rtx_for_output, moving the mode and register
23040         calculation to...
23041         (do_output_reload): ...here.  Use the mode-adjusted reg_rtx
23042         instead of the original when deciding whether an output reload
23043         would be a no-op.  Do the same when modifying insn notes.
23044         Use rtx_equal_p instead of == to compare the registers.
23045         (inherit_piecemeal_p): Take a mode and two register numbers
23046         as argument.
23047         (emit_reload_insns): Clear new_spill_reg_store for every hard
23048         register in the reload register.  Remove spill registers
23049         from reg_reloaded_valid before considering whether to record
23050         inheritance information for them.  Use reload_reg_rtx_for_output
23051         instead of reg_rtx when recording output reloads.  Use
23052         reload_reg_rtx_for_input instead of reg_rtx when recording
23053         input reloads.  Set or clear reg_reloaded_call_part_clobbered
23054         at the same time as setting reg_reloaded_valid.
23055         (delete_output_reload): Add a new_reload_reg parameter and use it
23056         instead of rld[j].reg_rtx.
23057         (emit_input_reload_insns, do_input_reload, do_output_reload): Adjust
23058         calls accordingly.
23059
23060 2008-03-25  Tom Tromey  <tromey@redhat.com>
23061
23062         * Makefile.in (build/gensupport.o): Depend on insn-modes.h.
23063         (build/genattr.o): Likewise.
23064         (build/genattrtab.o): Likewise.
23065         (build/gencodes.o): Likewise.
23066         (build/genconfig.o): Likewise.
23067         (build/genconstants.o): Likewise.
23068         (build/genemit.o): Likewise.
23069         (build/genextract.o): Likewise.
23070         (build/genflags.o): Likewise.
23071
23072 2008-03-25  Bob Wilson  <bob.wilson@acm.org>
23073
23074         * config/xtensa/xtensa.c (xtensa_va_start): Use build_int_cst
23075         instead of size_int for integer types.
23076         (xtensa_gimplify_va_arg_expr): Likewise.  Convert index to sizetype
23077         to match type of MINUS_EXPR.
23078
23079 2008-03-25  Tom Tromey  <tromey@redhat.com>
23080
23081         * configure: Rebuilt.
23082         * configure.ac (BUILD_DEPMODE): Extract CCDEPMODE from temporary
23083         Makefile.
23084
23085 2008-03-25  Tom Tromey  <tromey@redhat.com>
23086
23087         * config/x-solaris (host-solaris.o): Update.
23088         * config/x-linux (host-linux.o): Update.
23089         * config/x-hpux (host-hpux.o): Update.
23090         * config/x-darwin (host-darwin.o): Update.
23091         * config/v850/t-v850e (v850-c.o): Update.
23092         * config/v850/t-v850 (v850-c.o): Update.
23093         * config/t-vxworks (vxworks.o): Update.
23094         * config/t-sol2 (sol2-c.o, sol2.o): Update.
23095         * config/t-darwin (darwin.o, darwin-c.o, darwin-driver.o): Update.
23096         * config/spu/t-spu-elf (spu-c.o): Update.
23097         (spu.o): Remove.
23098         * config/sh/t-symbian (sh-c.o): Update.
23099         (symbian.o): Update.
23100         * config/sh/t-sh (sh-c.o): Update.
23101         * config/score/t-score-elf (score7.o, score3.o): Update.
23102         * config/rs6000/x-rs6000 (driver-rs6000.o): Update.
23103         * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Update.
23104         * config/rs6000/x-darwin (host-ppc-darwin.o): Update.
23105         * config/rs6000/t-rs6000 (rs6000-c.o): Update.
23106         (rs6000.o): Remove.
23107         * config/m68k/t-uclinux (generated_files): Add sysroot-suffix.h.
23108         * config/m32c/t-m32c (m32c-pragma.o): Update.
23109         * config/ia64/t-ia64 (ia64-c.o): Update.
23110         * config/i386/x-mingw32 (host-mingw32.o): Update.
23111         * config/i386/x-i386 (driver-i386.o): Update.
23112         * config/i386/x-darwin (host-i386-darwin.o): Update.
23113         * config/i386/x-cygwin (host-cygwin.o): Update.
23114         * config/i386/t-nwld (nwld.o): Update.
23115         * config/i386/t-netware (netware.o): Update.
23116         * config/i386/t-interix (winnt.o): Update.
23117         * config/i386/t-cygwin (cygwin1.o, cygwin2.o): Update.
23118         * config/i386/t-cygming (winnt.o, winnt-cxx.o, winnt-stubs.o,
23119         msformat-c.o): Update.
23120         * config/bfin/t-bfin-linux (generated_files): Add
23121         linux-sysroot-suffix.h.
23122         * config/arm/t-wince-pe (pe.o): Update.
23123         * config/arm/t-strongarm-pe (pe.o): Update.
23124         * config/arm/t-pe (pe.o): Update.
23125         * config/arm/t-arm (arm-c.o): Update.
23126         * doc/install.texi (Prerequisites): Require make 3.80.
23127         * Makefile.in: Remove .o targets.
23128         (CCDEPMODE, DEPDIR, depcomp, BUILD_DEPMODE): New variables.
23129         (OBSTACK_H, FIBHEAP_H, PARTITION_H, MD5_H, BCONFIG_H): Remove.
23130         (simple_generated_h, simple_generated_c): Move earlier.
23131         (generated_files): New variable.
23132         (TARGET_H, MACHMODE_H, HOOKS_H, HOSTHOOKS_DEF_H, LANGHOOKS_DEF_H,
23133         TARGET_DEF_H, RTL_BASE_H, RTL_H, PARAMS_H, BUILTINS_DEF, TREE_H,
23134         BASIC_BLOCK_H, GCOV_IO_H, COVERAGE_H, DEMANGLE_H, RECOG_H,
23135         ALIAS_H, EMIT_RTL_H, FLAGS_H, FUNCTION_H, EXPR_H, OPTABS_H,
23136         REGS_H, RA_H, RESOURCE_H, SCHED_INT_H, INTEGRATE_H, CFGLAYOUT_H,
23137         CFGLOOP_H, IPA_UTILS_H, IPA_REFERENCE_H, IPA_TYPE_ESCAPE_H,
23138         CGRAPH_H, DF_H, RESOURCE_H, DDG_H, GCC_H, GGC_H, TIMEVAR_H,
23139         INSN_ATTR_H, C_COMMON_H, C_PRAGMA_H, C_TREE_H, SYSTEM_H,
23140         PREDICT_H, DECNUM_H, MKDEPS_H, SYMTAB_H, TREE_DUMP_H,
23141         TREE_GIMPLE_H, TREE_FLOW_H, TREE_SSA_LIVE_H, PRETTY_PRINT_H,
23142         DIAGNOSTIC_H, C_PRETTY_PRINT_H, SCEV_H, LAMBDA_H, TREE_DATA_REF_H,
23143         VARRAY_H, TREE_INLINE_H, REAL_H, DBGCNT_H, EBIMAP_H): Remove.
23144         (.c.o): Remove.
23145         (COMPILE.base, COMPILE): New variables.
23146         (%.o): New pattern rule.
23147         (ALL_HOST_OBJS): New variable.
23148         (xgcc$(exeext), cpp$(exeext)): Remove extra version.o.
23149         (dummy-checksum.o, cc1-checksum.o): Remove.
23150         (DRIVER_SHLIB): New variable.
23151         (DRIVER_DEFINES): Use it.
23152         (gencondmd.c): Move out of build/.
23153         (s-conditions): Update.
23154         (BUILDCOMPILE.base, BUILDCOMPILE): New variables.
23155         (ALL_BUILD_OBJS): Likewise.
23156         (build/%.o): Use BUILDCOMPILE.
23157         (build/ggc-none.o, build/ggc-none.o, build/min-insn-modes.o,
23158         build/print-rtl.o, build/read-rtl.o, build/rtl.o, build/vec.o,
23159         build/gencondmd.o, build/genattrtab.o, build/genautomata.o,
23160         build/gencheck.o, build/gencodes.o, build/genconditions.o,
23161         build/genconfig.o, build/genconstants.o, build/genemit.o,
23162         build/genextract.o, build/genflags.o, build/genmddeps.o,
23163         build/genopinit.o, build/genoutput.o, build/genpeep.o,
23164         build/genpreds.o, build/genrecog.o, build/gcov-iov.o,
23165         build/gen-protos.o, build/scan.o, build/fix-header.o,
23166         build/scan-decls.o): Simplify.
23167         (collect2.o, c-opts.o, gcc.o, gccspec.o, gcc-options.o,
23168         cppdefault.o, protoize.o, unprotoize.o, intl.o, version.o,
23169         prefix.o, toplev.o): Reduce to variable setting.
23170         (libbackend.o): Use COMPILE.  Remove most dependencies.  Move later.
23171         ($(out_object_file), gcc-options.o): New targets.
23172         ($(ALL_HOST_OBJS)): New target.  Include dependency files.
23173         * configure: Rebuilt.
23174         * configure.ac: Call ZW_CREATE_DEPDIR, ZW_PROG_COMPILER_DEPENDENCIES.
23175         * doc/sourcebuild.texi (Front End Directory): Document new variable.
23176
23177 2008-03-25  Douglas Gregor  <doug.gregor@gmail.com>
23178
23179         * c-common.c (c_sizeof_or_alignof_type): If we're not allowed to
23180         complain when we hit an error, return ERROR_MARK_NODE.
23181
23182 2008-03-25  Naveen.H.S  <naveen.hs@kpitcummins.com>
23183
23184         * config/sh/constraints.md (Pso, Psz): New constraints.
23185         * config/sh/sh.c (print_operand): Add %V and %W operand codes.
23186         * config/sh/sh.md (*andsi3_bclr, *iorsi3_bset): New insns.
23187
23188 2008-03-25  Naveen.H.S  <naveen.hs@kpitcummins.com>
23189
23190         * config/sh/sh.c (sh_expand_t_scc): Emit movrt for SH2A if possible.
23191         * config/sh/sh.md (xorsi3_movrt, movrt): New insns.
23192
23193 2008-03-25  Naveen.H.S  <naveen.hs@kpitcummins.com>
23194
23195         * config/sh/sh.md (prefetch): Add condition for SH2A target.
23196         (prefetch_sh2a): New.
23197
23198 2008-03-25  Jayant Sonar  <Jayant.sonar@kpitcummins.com>
23199             Naveen.H.S  <naveen.hs@kpitcummins.com>
23200
23201         * config/sh/constraints.md (I28): New constraint.
23202         * config/sh/sh.c (broken_move): Add support for movi20s.
23203         * config/sh/sh.md (movsi_ie): Add the alternative for movi20s.
23204
23205 2008-03-25  Anil Paranjape  <anil.paranjape@kpitcummins.com>
23206             Jayant Sonar  <Jayant.sonar@kpitcummins.com>
23207             Naveen.H.S  <naveen.hs@kpitcummins.com>
23208
23209         * config/sh/sh.c (SH_ATTRIBUTES): Define.
23210         (SYMBOL_FLAG_FUNCVEC_FUNCTION): Define.
23211         (print_operand): Handle resbank in %@ operand code.
23212         (sh_encode_section_info): New.
23213         (push_regs): Add conditions for resbank.
23214         (sh_expand_epilogue): Likewise.
23215         (sh_insert_attributes): Likewise.
23216         (sh_attribute_table): Likewise.
23217         (sh_handle_resbank_handler_attribute): New.
23218         (sh2a_handle_function_vector_handler_attribute): New.
23219         (sh2a_is_function_vector_call): New.
23220         (sh2a_get_function_vector_number): New.
23221         (sh2a_function_vector_p): New.
23222         (sh_cfun_resbank_handler_p): New.
23223         * config/sh/sh.md (calli): Emit jsr/n if possible.
23224         (calli_tbr_rel): New.
23225         (calli_pcrel): Emit jsr/n if possible.
23226         (return_i): Emit rts/n if possible.
23227         (call_valuei_tbr_rel): New.
23228         (call_valuei_pcrel): Add condition for SH2A target.
23229         (call_value): Likewise.
23230         * config/sh/sh-protos.h (sh_cfun_resbank_handler_p): Declare.
23231         (sh2a_get_function_vector_number): Likewise.
23232         (sh2a_is_function_vector_call): Likewise.
23233         * doc/extend.texi: Document TBR relative addressing of SH2A.
23234         (resbank): Add description for SH2A.
23235
23236 2008-03-24  Richard Guenther  <rguenther@suse.de>
23237
23238         PR c/22371
23239         * gimplify.c (gimplify_modify_expr): For frontend type-correct
23240         pointer assignments change conversions according to middle-end rules.
23241         (gimplify_modify_expr_rhs): Deal with NULL TARGET_EXPR_INITIAL.
23242         * configure.ac: Include type checking in yes.
23243         * configure: Regenerate.
23244
23245 2008-03-24  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23246
23247         * diagnostic.c (diagnostic_count_diagnostic): Delete.
23248         (diagnostic_report_diagnostic): Update. Handle ICEs here.
23249
23250 2008-03-24  Nathan Sidwell  <nathan@codesourcery.com>
23251
23252         * gthr-vxworks.h (UNUSED): Define.
23253
23254 2008-03-23  H.J. Lu  <hongjiu.lu@intel.com>
23255
23256         * config/i386/i386.h (STATIC_CHAIN_REGNUM): Use R10_REG and CX_REG.
23257
23258 2008-03-23  Zuxy Meng <zuxy.meng@gmail.com>
23259
23260         * doc/extend.texi (Function Attributes): Add missing comma in the
23261         example of the "alloc_size" attribute.
23262
23263 2008-03-23  Uros Bizjak  <ubizjak@gmail.com>
23264
23265         Revert:
23266         2008-03-05  H.J. Lu  <hongjiu.lu@intel.com>
23267
23268         * config/i386/i386-modes.def: Use 4 byte alignment on DI for
23269         32bit host.
23270
23271         2008-03-19  Uros Bizjak  <ubizjak@gmail.com>
23272
23273         PR target/35496
23274         * stor-layout.c (update_alignment_for_field): Set minimum alignment
23275         of the underlying type of a MS bitfield layout to the natural
23276         alignment of the type.
23277
23278         2008-03-22  Uros Bizjak  <ubizjak@gmail.com>
23279
23280         * config/i386/i386.c (assign_386_stack_local): Align DImode slots
23281         to their natural alignment to avoid store forwarding stalls.
23282
23283 2008-03-22  Richard Guenther  <rguenther@suse.de>
23284
23285         * tree-cfg.c (verify_expr): Recurse again for invariant addresses.
23286         For PHI nodes verify the address is invariant.
23287         * tree-ssa-ccp.c (ccp_decl_initial_min_invariant): Remove.
23288         (get_symbol_constant_value): Use is_gimple_min_invariant.
23289         (maybe_fold_stmt_indirect): Likewise.
23290
23291 2008-03-22  Richard Sandiford  <rsandifo@nildram.co.uk>
23292
23293         PR rtl-optimization/33927
23294         * Makefile.in (dse.o): Depend on $(TM_P_H).
23295         * expr.h (extract_low_bits): Declare.
23296         * expmed.c (extract_low_bits): New function.
23297         * rtlhooks.c (gen_lowpart_general): Generalize SUBREG handling.
23298         * dse.c: Include tm_p.h.
23299         (find_shift_sequence): Remove the read_reg argument and return the
23300         read value.  Emit the instructions instead of returning them.
23301         Iterate on new_mode rather than calculating it each time.
23302         Check MODES_TIEABLE_P.  Use simplify_gen_subreg to convert the
23303         source to NEW_MODE and extract_low_bits to convert the shifted
23304         value to READ_MODE.
23305         (replace_read): Allow the load and store to have different mode
23306         classes.  Use extract_low_bits when SHIFT == 0.  Create the shift
23307         or extraction instructions before trying the replacement.  Update
23308         dump-file code accordingly, avoiding use of REGNO (store_info->rhs).
23309
23310 2008-03-22  Uros Bizjak  <ubizjak@gmail.com>
23311
23312         * config/i386/i386.c (assign_386_stack_local): Align DImode slots
23313         to their natural alignment to avoid store forwarding stalls.
23314
23315 2008-03-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
23316
23317         PR target/27946
23318         * config/rs6000/rs6000.md (floatdidf2): Discouraging fprs and
23319         encouraging but not allowing gprs for input;
23320         change the input constraint to !f#r.
23321         (fix_truncdfdi2): Discouraging fprs and encouraging but not allowing
23322         gprs for output;
23323         change the output constraint to !f#r.
23324
23325 2008-03-21  Uros Bizjak  <ubizjak@gmail.com>
23326
23327         PR target/13958
23328         * config/i386/i386.md ("*floatunssi<mode2>_1"): New pattern with
23329         corresponding post-reload splitters.
23330         ("floatunssi<mode>2"): Expand to unsigned_float x87 insn pattern
23331         when x87 FP math is selected.
23332         * config/i386/i386-protos.h (ix86_expand_convert_uns_sixf_sse):
23333         New function prototype.
23334         * config/i386/i386.c (ix86_expand_convert_uns_sixf_sse): New
23335         unreachable function to ease macroization of insn patterns.
23336
23337 2008-03-21  Martin Jambor  <mjambor@suse.cz>
23338
23339         * tree-data-ref.c (dump_data_dependence_relation): Avoid data
23340         reference dumps if ddr is NULL or dependence is unknown.
23341
23342 2008-03-20  Kaz Kojima  <kkojima@gcc.gnu.org>
23343
23344         * config/sh/linux-atomic.asm (ATOMIC_TEST_AND_SET): Take
23345         unsigned extension into account.
23346         (ATOMIC_COMPARE_AND_SWAP): Likewise.
23347         (ATOMIC_FETCH_AND_OP, ATOMIC_FETCH_AND_COMBOP): Likewise.
23348         Do computations on a scratch register.
23349
23350 2008-03-21  Richard Guenther  <rguenther@suse.de>
23351
23352         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
23353         Use is_gimple_min_invariant instead of TREE_INVARIANT.
23354         * tree-ssa-loop-ivopts.c (force_expr_to_var_cost): Likewise.
23355         * tree-ssa-dom.c (record_equality): Likewise.
23356         * tree-inline.c (copy_body_r): Likewise.
23357         * tree-ssa-pre.c (make_values_for_stmt): Remove test for
23358         TREE_INVARIANT.
23359
23360 2008-03-20  Kaz Kojima  <kkojima@gcc.gnu.org>
23361
23362         * config/sh/sh.c (split_branches): Pass zero to redirect_jump
23363         as 'delete_unused' argument.
23364
23365 2008-03-20  Richard Guenther  <rguenther@suse.de>
23366
23367         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove
23368         special casing of constant qualifiers.
23369         * tree-ssa.c (useless_type_conversion_p_1): Instead do not
23370         care about them in general.
23371         * tree-ssa-ccp.c (ccp_fold): Addresses are constant or not
23372         regardless of their type.
23373         (fold_stmt_r): Forcefully fold *& if we end up with that.
23374
23375 2008-03-20  Paul Brook  <paul@codesourcery.com>
23376
23377         * config.gcc (arm*-*-uclinux*): Remove duplicate arm/uclinux-elf.h.
23378         * config/arm/uclinux-eabi.h (SUBTARGET_EXTRA_LINK_SPEC): Add extra
23379         linker flags.
23380         * config/arm/bpabi.h (SUBTARGET_EXTRA_LINK_SPEC): Provide default
23381         definition.
23382         (LINK_SPEC): Use SUBTARGET_EXTRA_LINK_SPEC.
23383         * config/arm/unwind-arm.h (_Unwind_decode_target2): Add uClinux.
23384
23385 2008-03-20  Volker Reichelt  <v.reichelt@netcologne.de>
23386
23387         * common.opt (Wmudflap): New option.
23388         * tree-mudflap.c (mf_xform_derefs_1): Guard warning by OPT_Wmudflap.
23389         (mx_register_decls): Likewise.
23390         (mudflap_finish_file): Likewise.
23391         * doc/invoke.texi: Document -Wno-mudflap.
23392
23393 2008-03-20  Kai Tietz  <kai.tietz@onevision.com>
23394
23395         * c-format.c (replace_format_name_to_system_name): New.
23396         (cmp_attribs): New.
23397         (convert_format_name_to_system_name): New.
23398         (decode_format_attr): Add use of convert_format_name_to_system_name.
23399         (format_types_orig): Add gnu_ prefix to names.
23400         (check_format_info_main): Special treating of \0 escaped names for
23401         supporting multi-character format specifiers as I32, I64.
23402         (TARGET_OVERRIDES_FORMAT_ATTRIBUTES): Use of user defined attributes.
23403         (gnu_target_overrides_format_attributes): New.
23404         * c-format.h: Add structure target_ovr_attr to hold
23405         system specific formatter names.
23406         * config.gcc: Add for x86&x86_64 cygwin and mingw32 targets the
23407         msformat-c.o file to c_target_objs and cxx_target_objs.
23408         * config/i386/mingw32.h (TARGET_OVERRIDES_FORMAT_ATTRIBUTES): New.
23409         (TARGET_OVERRIDES_FORMAT_ATTRIBUTES_COUNT): New.
23410         (TARGET_N_FORMAT_TYPES): New.
23411         * config/i386/msformat-c.c: New.
23412         * config/i386/t-cygming: Add build rule for msformat-c.o.
23413         * doc/extend.texi: Add new format names gnu_* and ms_* and
23414         further details.
23415         * doc/tm.texi: (TARGET_OVERRIDES_FORMAT_ATTRIBUTES): New.
23416
23417 2008-03-20  Ira Rosen  <irar@il.ibm.com>
23418
23419         * doc/invoke.texi (-O3): Add -ftree-vectorize to the list of
23420         optimizations turned on under -O3.
23421         (ftree-vectorize): Add that the flag is turned on with -O3.
23422
23423 2008-03-20  Ben Elliston  <bje@au.ibm.com>
23424
23425         * regmove.c (try_auto_increment): Fix spelling error in comment.
23426         * final.c (final_scan_insn): Likewise.
23427
23428 2008-03-20  Uros Bizjak  <ubizjak@gmail.com>
23429
23430         PR target/14552
23431         * config/i386/mmx.md (*mov<mode>_internal_rex64"): Adjust register
23432         allocator preferences for "y" and "r" class registers.
23433         ("*mov<mode>_internal"): Ditto.
23434         ("*movv2sf_internal_rex64"): Ditto.
23435         ("*movv2sf_internal"): Ditto.
23436
23437 2008-03-19  Michael Matz  <matz@suse.de>
23438
23439         PR middle-end/35616
23440         * calls.c (expand_call): Check overlap of arguments with call
23441         address for sibcalls.
23442
23443 2008-03-19  Uros Bizjak  <ubizjak@gmail.com>
23444
23445         PR target/35496
23446         * stor-layout.c (update_alignment_for_field): Set minimum alignment
23447         of the underlying type of a MS bitfield layout to the natural
23448         alignment of the type.
23449
23450 2008-03-19  Jan Hubicka  <jh@suse.cz>
23451
23452         PR other/35094
23453         * toplev.c (decode_d_option): Handle all CPP flags.
23454         * tree-vrp.c: Update tree_pass descriptors.
23455         * regrename.c: Update tree_pass descriptors.
23456         * fwprop.c: Update tree_pass descriptors.
23457         * doc/invoke.texi: Remove documentation of dropped -d? flags.
23458         * tree-into-ssa.c: Update tree_pass descriptors.
23459         * tree-dump.c: Update tree_pass descriptors.
23460         * tree-complex.c: Update tree_pass descriptors.
23461         * tree-dump.h: Update tree_pass descriptors.
23462         * see.c: Update tree_pass descriptors.
23463         * cgraphbuild.c: Update tree_pass descriptors.
23464         * tracer.c: Update tree_pass descriptors.
23465         * tree-loop-distribution.c: Update tree_pass descriptors.
23466         * cgraph.c: Update tree_pass descriptors.
23467         * postreload-gcse.c: Update tree_pass descriptors.
23468         * postreload.c: Update tree_pass descriptors.
23469         * tree-ssa-loop-ch.c: Update tree_pass descriptors.
23470         * tree-tailcall.c: Update tree_pass descriptors.
23471         * tree-pass.h (tree_opt_pass): Rename to ...
23472         (opt_pass) ... this one; add "type" field and remove letter field.
23473         (gimple_opt_pass, rtl_opt_pass, simple_ipa_opt_pass): New.
23474         (execute_pass_list, execute_ipa_pass_list, all_passes, all_ipa_passes,
23475         all_lowering_passes): Update declaration.
23476         * ipa-cp.c: Update tree_pass descriptors.
23477         * final.c: Update tree_pass descriptors.
23478         * omp-low.c: Update tree_pass descriptors.
23479         * tree-ssa-dse.c: Update tree_pass descriptors.
23480         * ipa-reference.c: Update tree_pass descriptors.
23481         * tree-ssa-uncprop.c: Update tree_pass descriptors.
23482         * auto-inc-dec.c: Update tree_pass descriptors.
23483         * reorg.c: Update tree_pass descriptors.
23484         * cgraphunit.c: Update tree_pass descriptors.
23485         * tree-ssa-copyrename.c: Update tree_pass descriptors.
23486         * tree-ssa-ccp.c: Update tree_pass descriptors.
23487         * df-core.c: Update tree_pass descriptors.
23488         * mode-switching.c: Update tree_pass descriptors.
23489         * tree-nomudflap.c: Update tree_pass descriptors.
23490         * modulo-sched.c: Update tree_pass descriptors.
23491         * ipa-pure-const.c: Update tree_pass descriptors.
23492         * cse.c: Update tree_pass descriptors.
23493         * web.c: Update tree_pass descriptors.
23494         * tree-stdarg.c: Update tree_pass descriptors.
23495         * tree-ssa-math-opts.c: Update tree_pass descriptors.
23496         * tree-ssa-dom.c: Update tree_pass descriptors.
23497         * tree-nrv.c: Update tree_pass descriptors.
23498         * tree-ssa-alias.c: Update tree_pass descriptors.
23499         * loop-init.c: Update tree_pass descriptors.
23500         * gimple-low.c: Update tree_pass descriptors.
23501         * ipa-inline.c: Update tree_pass descriptors.
23502         * tree-ssa-sink.c: Update tree_pass descriptors.
23503         * global.c: Update tree_pass descriptors.
23504         * ifcvt.c: Update tree_pass descriptors.
23505         * jump.c: Update tree_pass descriptors.
23506         * predict.c: Update tree_pass descriptors.
23507         * tree-ssa-loop.c: Update tree_pass descriptors.
23508         * recog.c: Update tree_pass descriptors.
23509         * dse.c: Update tree_pass descriptors.
23510         * tree-ssa-ifcombine.c: Update tree_pass descriptors.
23511         * tree-eh.c: Update tree_pass descriptors.
23512         * regmove.c: Update tree_pass descriptors.
23513         * local-alloc.c
23514         * function.c: Update tree_pass descriptors.
23515         * tree-vectorizer.c: Update tree_pass descriptors.
23516         * gcse.c: Update tree_pass descriptors.
23517         * ipa-type-escape.c: Update tree_pass descriptors.
23518         * tree-if-conv.c: Update tree_pass descriptors.
23519         * init-regs.c: Update tree_pass descriptors.
23520         * ipa.c: Update tree_pass descriptors.
23521         * tree-ssa-phiopt.c: Update tree_pass descriptors.
23522         * rtl-factoring.c: Update tree_pass descriptors.
23523         * lower-subreg.c: Update tree_pass descriptors.
23524         * bt-load.c: Update tree_pass descriptors.
23525         * tree-dfa.c: Update tree_pass descriptors.
23526         * except.c: Update tree_pass descriptors.
23527         * emit-rtl.c: Update tree_pass descriptors.
23528         * cfgexpand.c: Update tree_pass descriptors.
23529         * tree-cfgcleanup.c: Update tree_pass descriptors.
23530         * cfgcleanup.c: Update tree_pass descriptors.
23531         * tree-ssa-pre.c: Update tree_pass descriptors.
23532         * tree-sra.c: Update tree_pass descriptors.
23533         * tree-mudflap.c: Update tree_pass descriptors.
23534         * tree-ssa-copy.c: Update tree_pass descriptors.
23535         * cfglayout.c: Update tree_pass descriptors.
23536         * tree-ssa-forwprop.c: Update tree_pass descriptors.
23537         * tree-ssa-dce.c: Update tree_pass descriptors.
23538         * tree-ssa.c: Update tree_pass descriptors.
23539         * regclass.c: Update tree_pass descriptors.
23540         * integrate.c: Update tree_pass descriptors.
23541         * tree-optimize.c: Update tree_pass descriptors.
23542         * tree-ssa-phiprop.c: Update tree_pass descriptors.
23543         * tree-object-size.c: Update tree_pass descriptors.
23544         * combine.c: Update tree_pass descriptors.
23545         * tree-outof-ssa.c: Update tree_pass descriptors.
23546         * bb-reorder.c: Update tree_pass descriptors.
23547         * stack-ptr-mod.c: Update tree_pass descriptors.
23548         * var-tracking.c: Update tree_pass descriptors.
23549         * tree-profile.c: Update tree_pass descriptors.
23550         * tree-vect-generic.c: Update tree_pass descriptors.
23551         * reg-stack.c: Update tree_pass descriptors.
23552         * sched-rgn.c: Update tree_pass descriptors.
23553         * tree-ssa-structalias.c: Update tree_pass descriptors.
23554         * tree-cfg.c: Update tree_pass descriptors.
23555         * passes.c (current_pass): Update declaration.
23556         (finish_optimization_passes): Update.
23557         (all_passes, all_ipa_passes, all_lowering_passes): Update declaration.
23558         (register_one_dump_file, register_dump_files_1, next_pass_1):
23559         Update arguments.
23560         (init_optimization_passes): Update handling of new types.
23561         (execute_one_pass, execute_pass_list, execute_ipa_pass_list): Update.
23562         * ipa-struct-reorg.c: Update tree_pass descriptors.
23563         * tree-ssa-reassoc.c: Update tree_pass descriptors.
23564         * combine-stack-adj.c: Update tree_pass descriptors.
23565         * cfgrtl.c: Update tree_pass descriptors.
23566         * dce.c: Update tree_pass descriptors.
23567         * tree-ssanames.c: Update tree_pass descriptors.
23568
23569 2008-03-19  Richard Guenther  <rguenther@suse.de>
23570
23571         PR middle-end/35609
23572         * tree-ssa.c (walk_data): New structure.
23573         (warn_uninitialized_var): If not always_executed warn with "maybe"
23574         instead of "is".
23575         (execute_early_warn_uninitialized): Compute post-dominators.
23576         Initialize always_executed before processing each basic block.
23577
23578 2008-03-18  Mikulas Patocka  <mikulas@artax.karlin.mff.cuni.cz>
23579
23580         PR target/35504
23581         * config/i386/i386.c (x86_this_parameter): Calculate correct location
23582         of "this" pointer when "regparm = N" or "fastcall" is in effect.
23583
23584 2008-03-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
23585
23586         * doc/include/texinfo.tex: Update to version 2008-03-17.10.
23587
23588 2008-03-18  Paolo Bonzini  <bonzini@gnu.org>
23589
23590         * expr.c (store_expr): Assume lang_hooks.reduce_bit_field_operations
23591         is true.
23592         (expand_expr_real_1) <REDUCE_BIT_FIELD>: Don't look at ignore.
23593         (expand_expr_real_1): Assume lang_hooks.reduce_bit_field_operations
23594         is true.  Add "&& !ignore" condition to reduce_bit_field.  Modify
23595         target after ignore has been set, and move there also the commputation
23596         of subtarget and original_target.
23597         * langhooks-def.h (LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS): Delete.
23598         (LANG_HOOKS_INITIALIZER): Remove it.
23599         * langhooks.h (struct lang_hooks): Remove reduce_bit_field_operations.
23600
23601 2008-03-18  Richard Guenther  <rguenther@suse.de>
23602
23603         * tree-ssa-sccvn.c (visit_reference_op_load): If the lookup
23604         found an expression with constants, note that in the VN for the lhs.
23605         * tree-ssa-pre.c (eliminate): Visit COND_EXPR statements and
23606         fold them to constants if possible.  Run cleanup_cfg if done so.
23607         (execute_pre): Return todo.
23608         (do_pre): Likewise.
23609         (execute_fre): Likewise.
23610         * tree-ssa-forwprop.c (can_propagate_from): Allow propagation
23611         of constants.
23612         (get_prop_source_stmt): Look through pointer conversions.
23613
23614 2008-03-18  Jan Hubicka  <jh@suse.cz>
23615
23616         * tree-pretty-print.c: Include predict.h.
23617         (dump_generic_node): Dump predictor.
23618         * tree.h (PREDICT_EXPR_OUTCOME, PREDICT_EXPR_PREDICTION): Update.
23619         * tree-gimple.c (is_gimple_stmt): Add PREDICT_EXPR.
23620         * gimple-low.c (lower_stmt): Likewise.
23621         * expr.c (expand_expr_real): Likewise.
23622         * predict.c (tree_bb_level_predictions): Use PREDICT_EXPRs and remove
23623         them.
23624         (build_predict_expr, build_predict_expr): New.
23625         * predict.h (predictor_name, build_predict_expr): Update.
23626         * c-typeck.c (c_finish_bc_stmt): Add prediction.
23627         * gimplify.c (gimplify_expr): Add PREDICT_EXPR.
23628         * predict.def (PRED_CONTINUE): Update hitrate.
23629         * tree.def (PREDICT_EXPR): Define.
23630         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Mark PREDICT_EXPR;
23631         do not handle BIND_EXPR.
23632         * tree-inline.c (estimate_num_insns_1): PREDICT_EXPR is free.
23633         * tree-cfg.c (verify_gimple_stmt): PREDICT_EXPR is valid.
23634         * tree-ssa-operands.c (get_expr_operands): PREDICT_EXPR takes no
23635         operands.
23636
23637 2008-03-18  Michael Matz  <matz@suse.de>
23638
23639         * gcov-io.h (__gcov_merge_ior, __gcov_fork): Mark hidden.
23640
23641 2008-03-18  Richard Guenther  <rguenther@suse.de>
23642
23643         * tree-gimple.h (is_gimple_invariant_address): Declare.
23644         (is_gimple_constant): Likewise.
23645         * tree-gimple.c (is_gimple_constant): New function.
23646         (is_gimple_invariant_address): Likewise.
23647         (is_gimple_min_invariant): Implement in terms of is_gimple_constant
23648         and is_gimple_invariant_address.
23649         * tree-ssa-loop-niter.c (expand_simple_operations): Revert
23650         previous change.
23651         * tree-data-ref.c (get_references_in_stmt): A SSA_NAME is not
23652         an addressable base.
23653
23654 2008-03-18  Jakub Jelinek  <jakub@redhat.com>
23655
23656         PR middle-end/35611
23657         * gimplify.c (gimplify_expr): Gimplify second operand of
23658         OMP_ATOMIC_LOAD.
23659
23660 2008-03-17  Richard Guenther  <rguenther@suse.de>
23661
23662         PR tree-optimization/19637
23663         * fold-const.c (fold_unary): Remove restrictions of removing
23664         intermediate pointer-conversions (P2)(P1)P0.
23665         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Recover from
23666         conversion to void pointer.
23667         (get_maxval_strlen): Handle addresses of the form &(*p)[0].
23668
23669 2008-03-16  James E. Wilson  <wilson@tuliptree.org>
23670
23671         PR debug/31510
23672         * dbxout.c (dbxout_expand_expr, case VAR_DECL): Return NULL for
23673         emulated thread local variables.
23674
23675 2008-03-16  Richard Guenther  <rguenther@suse.de>
23676
23677         PR middle-end/35607
23678         * tree-ssa-loop-niter.c (expand_simple_operations): Do not
23679         expand TREE_INVARIANT operations that are not gimple invariant.
23680
23681 2008-03-16  Hans-Peter Nilsson  <hp@axis.com>
23682
23683         * doc/extend.texi (Alignment): Say that the ABI controls
23684         the __alignof__ for non-strict-alignment targets rather
23685         than being a recommendation.
23686
23687 2008-03-15  Paul Brook  <paul@codesourcery.com>
23688
23689         * config/arm/arm.c (arm_unwind_emit): Suppress unused unwinding
23690         annotations.
23691         (arm_output_fn_unwind): Mark functions that can not be unwound.
23692
23693 2008-03-15  Paul Brook  <paul@codesourcery.com>
23694
23695         * config/arm/arm.c (arm_rtx_costs_1): Add costs for ARMv6 value
23696         extension instructions.
23697
23698 2008-03-15  Richard Guenther  <rguenther@suse.de>
23699
23700         * tree-ssa-ccp.c (ccp_fold): Also read from constant values
23701         and fold constant aggregate refs.
23702         (fold_const_aggregate_ref): Handle string constants
23703         and constructors in ARRAY_REFs.  Handle INDIRECT_REF.
23704         (evaluate_stmt): Simplify now that ccp_fold folds constant
23705         aggregate refs.
23706
23707 2008-03-15  Paul Brook  <paul@codesourcery.com>
23708
23709         * config/arm/arm.md (insv): Use gen_insv_t2 and gen_insv_zero.
23710         (extzv): Use gen_extzv_t2.
23711         (insv_t2, insv_zero, extv, extzv_t2): New patterns.
23712
23713 2008-03-15  Richard Guenther  <rguenther@suse.de>
23714
23715         * tree-ssa-ccp.c (get_symbol_constant_value): Export.
23716         (fold_const_aggregate_ref): Likewise.
23717         (get_value): Return NULL if we don't have any values.
23718         (ccp_finalize): Set const_val to NULL after freeing it.
23719         * tree-flow.h (get_symbol_constant_value): Declare.
23720         (fold_const_aggregate_ref): Likewise.
23721         * tree-ssa-sccvn.c (try_to_simplify): Use them.
23722
23723 2008-03-15  Richard Guenther  <rguenther@suse.de>
23724
23725         PR middle-end/35593
23726         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Make sure
23727         to not produce negative array indices if not allowed.  Add
23728         parameter to indicate that.
23729         (maybe_fold_offset_to_component_ref): Allow negative array
23730         indices only for the first member of a structure.
23731         (maybe_fold_offset_to_reference): Allow negative array indices.
23732         (maybe_fold_stmt_addition): Likewise.
23733
23734 2008-03-15  Bjoern Haase  <bjoern.m.haase@web.de>
23735             Anatoly Sokolov <aesok@post.ru>
23736
23737         * config/avr/avr.c (avr_arch_types): Add avr6 entry.
23738         (avr_arch): Add ARCH_AVR6.
23739         (avr_mcu_types): Add 'atmega2560' and 'atmega2561' entry.
23740         (initial_elimination_offset): Initialize and use 'avr_pc_size'
23741         instead of fixed value 2.
23742         (print_operand_address): Use gs() asm specifier instead of pm().
23743         (avr_assemble_integer): (Ditto.).
23744         (avr_output_addr_vec_elt): (Ditto.).
23745         (print_operand): Handle "!" code.
23746         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Add
23747         __AVR_3_BYTE_PC__, __AVR_2_BYTE_PC__ and __AVR_HAVE_JMP_CALL__.
23748         (AVR_HAVE_EIJMP_EICALL): Define.
23749         (AVR_3_BYTE_PC): Redefine.
23750         (AVR_2_BYTE_PC): (Ditto.).
23751         (PRINT_OPERAND_PUNCT_VALID_P): Add '!' code.
23752         (LINK_SPEC): Add atmega2560 and atmega2561.
23753         (CRT_BINUTILS_SPEC): Add atmega2560 (crtm2560.o) and atmega2561
23754         (crtm2561.o).
23755         * config/avr/avr.md (call_insn): Use eicall instead of icall
23756         for 3 byte PC devices.
23757         (call_value_insn): (Ditto.).
23758         (*tablejump_enh): Use eijmp instead of ijmp for 3 byte PC devices.
23759         (indirect_jump): Use only for for 2 byte PC devices.
23760         (*tablejump): (Ditto.).
23761         (*indirect_jump_avr6): Add insn.
23762         (*tablejump_rjmp): Don't use for 3 byte PC devices.
23763         * config/avr/libgcc.S (__prologue_saves__): Use eijmp
23764         instead of ijmp for 3 byte PC devices.
23765         (__tablejump2__): (Ditto.).
23766         * config/avr/t-avr (MULITLIB_OPTIONS): Add avr6 architecture.
23767         (MULITLIB_DIRNAMES): (Ditto.).
23768         (MULTILIB_MATCHES): Add atmega2560 and atmega2561 to list.
23769
23770 2008-03-15  Uros Bizjak  <ubizjak@gmail.com>
23771
23772         * config/i386/mmx.md ("sse2_umulv1siv2di3"): Rename from
23773         "sse2_umulsidi3".  Use V1DI mode for operand 0.
23774         ("mmx_psadbw"): Use V1DI mode for operand 0.
23775         * config/i386/i386-modes.def (V1SI): New vector mode.
23776         * config/i386/i386.c (struct builtin_description)
23777         [IX86_BUILTIN_PMULUDQ]: Use CODE_FOR_sse2_umulv1siv1di3.
23778         (v1di_ftype_v8qi_v8qi): Rename from di_ftype_v8qi_v8qi.
23779         (v1di_ftype_v2si_v2si): Rename from di_ftype_v2si_v2si.
23780         (ix86_init_mmx_sse_builtins) [__builtin_ia32_psadbw]: Use
23781         v1di_ftype_v8qi_v8qi type.
23782         [__builtin_ia32_pmuludq]: Use v1di_ftype_v2si_v2si type.
23783
23784         * doc/extend.texi (X86 Built-in Functions) [__builtin_ia32_psadbw,
23785         __builtin_ia32_pmuludq]: Fix the mode of return value.
23786
23787 2008-03-15  Richard Guenther  <rguenther@suse.de>
23788
23789         PR middle-end/35595
23790         * tree-ssa-pre.c (bitmap_find_leader): Handle expression
23791         being a PHI_NODE.
23792
23793 2008-03-14  Bob Wilson  <bob.wilson@acm.org>
23794
23795         * doc/invoke.texi (Option Summary, Xtensa Options): Document
23796         -mserialize-volatile and -mno-serialize-volatile Xtensa options.
23797         * config/xtensa/xtensa.c (print_operand): Do not emit MEMW instructions
23798         unless TARGET_SERIALIZE_VOLATILE is enabled.
23799         * config/xtensa/xtensa.md (*lsiu, *ssiu): Likewise.
23800         * config/xtensa/xtensa.h (TARGET_DEFAULT): Add MASK_SERIALIZE_VOLATILE.
23801         * config/xtensa/xtensa.opt (mserialize_volatile): New option.
23802
23803 2008-03-14  Richard Guenther  <rguenther@suse.de>
23804
23805         PR tree-optimization/34172
23806         * tree-flow.h (refs_may_alias_p): Declare.
23807         (get_single_def_stmt): Likewise.
23808         (get_single_def_stmt_from_phi): Likewise.
23809         (get_single_def_stmt_with_phi): Likewise.
23810         * tree-dfa.c (refs_may_alias_p): New function.
23811         (get_single_def_stmt): Likewise.
23812         (get_single_def_stmt_from_phi): Likewise.
23813         (get_single_def_stmt_with_phi): Likewise.
23814         * tree-ssa-sccvn.c (get_def_ref_stmt_vuses): New function.
23815         (vn_reference_lookup_1): New helper function.
23816         (vn_reference_lookup): Walk the virtual use-def chain to
23817         continue searching for a match if the def does not alias the
23818         reference we are looking for.
23819
23820 2008-03-14  David Edelsohn  <edelsohn@gnu.org>
23821
23822         * doc/install.texi (Binaries): Remove UCLA archive.  Add HVCC
23823         archive and Perzl.  Update The Written Word listing.
23824
23825 2008-03-14  Richard Guenther  <rguenther@suse.de>
23826
23827         PR tree-optimization/34043
23828         PR tree-optimization/33989
23829         * tree-ssa-pre.c (execute_pre): Allow SCCVN to do insertion
23830         when doing FRE.
23831         (bitmap_find_leader): Use extra argument to verify dominance
23832         relationship inside a basic-block.
23833         (can_PRE_operation): Add VIEW_CONVERT_EXPR.
23834         (find_leader_in_sets): Adjust.
23835         (create_component_ref_by_pieces): Take extra argument for
23836         dominance check, handle lookup failures.
23837         (find_or_generate_expression): Likewise.
23838         (create_expression_by_pieces): Likewise.
23839         (insert_into_preds_of_block): Adjust.
23840         (create_value_expr_from): If asked for, verify all operands
23841         are in the blocks AVAIL_OUT set.
23842         (make_values_for_stmt): Check for SSA_NAMEs that are life
23843         over an abnormal edge.
23844         (compute_avail): Remove such check.
23845         (do_SCCVN_insertion): New function.
23846         (eliminate): If we do not find a leader suitable for replacement
23847         insert a replacement expression from SCCVN if available.
23848         * tree-ssa-sccvn.h (run_scc_vn): Update prototype.
23849         (struct vn_ssa_aux): Add needs_insertion flag.
23850         * tree-ssa-sccvn.c (may_insert): New global flag.
23851         (copy_reference_ops_from_ref): Value-number union member access
23852         based on its size, not type and member if insertion is allowed.
23853         (visit_reference_op_load): For a weak match from union type
23854         punning lookup a view-converted value and insert a SSA_NAME
23855         for that value if that is not found.
23856         (visit_use): Make dumps shorter.  Do not disallow value numbering
23857         SSA_NAMEs that are life over an abnormal edge to constants.
23858         (free_scc_vn): Release inserted SSA_NAMEs.
23859         (run_scc_vn): New flag to specify whether insertion is allowed.
23860         Process SSA_NAMEs in forward order.
23861         * tree-ssa-loop-im.c (for_each_index): Handle invariant
23862         ADDR_EXPRs inside VIEW_CONVERT_EXPR.
23863         * fold-const.c (fold_unary): Fold VIEW_CONVERT_EXPRs from/to
23864         pointer type to/from integral types that do not change the
23865         precision to regular conversions.
23866
23867 2008-03-13  Uros Bizjak  <ubizjak@gmail.com>
23868
23869         * doc/extend.texi (X86 Built-in Functions) [__builtin_ia32_psll?,
23870         __builtin_ia32_psrl?, __builtin_ia32_psra?, __builtin_ia32_psll?i,
23871         __builtin_ia32_psrl?i, __builtin_ia32_psra?i, __builtin_ia32_psll?128,
23872         __builtin_ia32_psrl?128, __builtin_ia32_psra?128]: Fix the mode of
23873         input arguments and the mode of return value.  Built-in functions
23874         that operate on whole 64-bit MMX register now use V1DI mode.
23875
23876 2008-03-13  Alon Dayan  <alond@il.ibm.com>
23877             Olga Golovanevsky  <olga@il.ibm.com>
23878
23879         PR tree-optimization/35041
23880         * ipa-struct-reorg.c (find_pos_in_stmt_1): Add another option
23881         to locate the right position in a statement.
23882
23883 2008-03-13  Uros Bizjak  <ubizjak@gmail.com>
23884
23885         PR target/34000
23886         PR target/35553
23887         * config/i386/xmmintrin.h:  Change all static inline functions to
23888         extern inline and add __gnu_inline__ attribute.
23889         * config/i386/bmintrin.h: Ditto.
23890         * config/i386/smmintrin.h: Ditto.
23891         * config/i386/tmmintrin.h: Ditto.
23892         * config/i386/mmintrin-common.h: Ditto.
23893         * config/i386/ammintrin.h: Ditto.
23894         * config/i386/emmintrin.h: Ditto.
23895         * config/i386/pmmintrin.h: Ditto.
23896         * config/i386/mmintrin.h: Ditto.
23897         * config/i386/mm3dnow.h: Ditto.
23898
23899 2008-03-13  Jakub Jelinek  <jakub@redhat.com>
23900
23901         PR middle-end/35185
23902         * omp-low.c (lower_regimplify, init_tmp_var, save_tmp_var): Removed.
23903         (lower_omp_2): New function.
23904         (lower_omp_1, lower_omp): Rewritten.
23905
23906 2008-03-13  Danny Smith  <dannysmith@users.sourceforge.net>
23907
23908         PR 35054
23909         * doc/extend.texi (Structure-Packing Pragmas): Replace "Win32"
23910         with the phrase "Microsoft Windows compilers".
23911         (Push/Pop Macro Pragmas): New subsection. Document
23912         #pragma push_macro and pragma pop_macro.
23913
23914 2008-03-12  Paul Brook  <paul@codesourcery.com>
23915
23916         * config/arm/arm.c (output_move_double): Prefer LDRD to LDM.
23917
23918 2008-03-12  Paul Brook  <paul@codesourcery.com>
23919
23920         * config/arm/thumb2.md: Extend peephole to cover 3-arg subs.
23921         (thumb2_alusi3_short): Exclude PLUS and MINUS.
23922         (thumb2_addsi_shortim): Rename ...
23923         (thumb2_addsi_short): ... to this.  Allow register operands.
23924         (thumb2_subsi_short): New pattern.
23925         (thumb2_one_cmplsi2_short,
23926         thumb2_negsi2_short): New patterns and peepholes.
23927
23928 2008-03-12  Paul Brook  <paul@codesourcery.com>
23929
23930         * config/arm/arm.c (arm_size_rtx_costs): Use ARM costs for Thumb-2.
23931
23932 2008-03-12  Uros Bizjak  <ubizjak@gmail.com>
23933
23934         * config/i386/i386.md (int_cond): New code iterator.
23935         (fp_cond): Ditto.
23936         ("s<code>"): Macroize expander from seq, sne, sgt, sgtu, slt, sltu,
23937         sge, sgeu, sle and sleu expanders usign int_cond code iterator.
23938         ("s<code>"): Macroize expander from sunordered, sordered, suneq, sunge,
23939         sungt, sunle, sunlt and sltgt expanders usign fp_cond code iterator.
23940         ("b<code>"): Macroize expander from beq, bne, bgt, bgtu, blt, bltu,
23941         bge, bgeu, ble and bleu expanders usign int_cond code iterator.
23942         ("b<code>"): Macroize expander from bunordered, bordered, buneq, bunge,
23943         bungt, bunle, bunlt and bltgt expanders usign fp_cond code iterator.
23944
23945 2008-03-12  Paul Brook  <paul@codesourcery.com>
23946
23947         * config/arm/arm.c (use_return_insn): Use offsets->saved_regs_mask
23948         instead of {arm,thumb}_compute_save_reg_mask.
23949         (output_return_instruction): Ditto.
23950         (thumb_unexpanded_epilogue): Ditto.
23951         (thumb1_expand_prologue): Ditto.
23952         (thumb1_output_function_prologue): Ditto.
23953         (arm_set_return_address): Ditto.
23954         (thumb_set_return_address): Ditto.
23955         (arm_get_frame_offsets): Set offsets->saved_regs_mask.  Push extra
23956         regs to achieve stack alignment.
23957         (thumb1_compute_save_reg_mask): Fix compiler warning.
23958         (arm_output_epilogue): Use offsets->saved_regs_mask.
23959         Adjust stack pointer by poping call clobered registers.
23960         (arm_expand_prologue): Use offsets->saved_regs_mask.
23961         Adjust stack pointer by pushing extra registers.
23962         * config/arm.h (arm_stack_offsets): Add saved_regs_mask.
23963
23964 2008-03-12  Paolo Bonzini  <bonzini@gnu.org>
23965
23966         PR tree-opt/35422
23967         * fold-const.c (fold_unary) <NOP_EXPR>: Distribute a narrowing
23968         conversion to the operands of a multiplication.
23969
23970 2008-03-12  Richard Guenther  <rguenther@suse.de>
23971
23972         * Makefile.in (OBJS-common): Add tree-ssa-phiprop.o
23973         (tree-ssa-phiprop.o): Copy dependencies from tree-ssa-forwprop.o.
23974         * timevar.def (TV_TREE_PHIPROP): Add.
23975         * tree-ssa-phiprop.c: Split from tree-ssa-forwprop.c, added
23976         pass description.  Use TV_TREE_PHIPROP.
23977         * tree-ssa-forwprop.c: Remove phiprop code.
23978
23979 2008-03-12  Jakub Jelinek  <jakub@redhat.com>
23980
23981         PR middle-end/35549
23982         * omp-low.c (maybe_lookup_decl): Constify first argument.
23983         (use_pointer_for_field): Change last argument from bool to
23984         omp_context *.  Disallow shared copy-in/out in nested
23985         parallel if decl is shared in outer parallel too.
23986         (build_outer_var_ref, scan_sharing_clauses,
23987         lower_rec_input_clauses, lower_copyprivate_clauses,
23988         lower_send_clauses, lower_send_shared_vars): Adjust callers.
23989
23990 2008-03-12  Victor Kaplansky  <victork@il.ibm.com>
23991             Ira Rosen  <irar@il.ibm.com>
23992
23993         * tree-vectorizer.c (free_stmt_vec_info): New function.
23994         (destroy_loop_vec_info): Move code to free_stmt_vec_info().
23995         Call free_stmt_vec_info(). Free LOOP_VINFO_STRIDED_STORES..
23996         * tree-vectorizer.h (free_stmt_vec_info): Declare.
23997         * tree-vect-transform.c (vectorizable_conversion): Free
23998         vec_oprnds0 if it was allocated.
23999         (vect_permute_store_chain): Remove unused VECs.
24000         (vectorizable_store): Free VECs that are allocated in the..
24001         function.
24002         (vect_transform_strided_load, vectorizable_load): Likewise.
24003         (vect_remove_stores): Simplify the code.
24004         (vect_transform_loop): Move code to vect_remove_stores().
24005         Call vect_remove_stores() and free_stmt_vec_info().
24006
24007 2008-03-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
24008
24009         * pa.h (TARGET_LONG_PIC_SDIFF_CALL): Conditionalize define on
24010         TARGET_HPUX.  Revise comment.
24011         (TARGET_LONG_PIC_PCREL_CALL): Revise comment.
24012         * pa.c (output_call): Update for revised TARGET_LONG_PIC_SDIFF_CALL.
24013         Use sr4 variant of `be' instruction when not generating PIC code.
24014         (attr_length_call): Adjust for above change.
24015
24016 2008-03-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
24017
24018         * ipa-reference.c (static_execute): Remove module_statics_const and
24019         associated setting code.
24020
24021 2008-03-11  Uros Bizjak  <ubizjak@gmail.com>
24022
24023         PR target/35540
24024         * config/i386/i386.md (paritysi2, paritydi2): Use register_operand
24025         predicate for operand 1.
24026         (paritysi2_cmp): Use register_operand predicate for operand 2.
24027         Use earlyclobber modifier for operand 1.  Remove support for
24028         memory operands.
24029         (paritydi2_cmp): Use register_operand predicate for operand 3.
24030         Use earlyclobber modifier for operand 1.  Remove support for
24031         memory operands.
24032
24033 2008-03-11  Paul Brook  <paul@codesourcery.com>
24034             Vladimir Prus  <vladimir@codesourcery.com>
24035
24036         * config/arm/arm.c (use_return_insn): Check TARGET_APCS_FRAME.
24037         (arm_compute_save_reg0_reg12_mask): Always
24038         check if register 11 must be saved.  Always safe hard frame pointer
24039         when frame_pointer_needeed.
24040         (arm_compute_save_reg_mask): Save IP and PC
24041         only with apcs frames.
24042         (arm_output_epilogue): Adjust Thumb2 codepath to
24043         be also invoked and work for ARM non-apcs frames.
24044         (arm_expand_prologue): Don't bother saving IP
24045         for non-apcs frame, since it's not clobbered by
24046         prologue code.  Implement non-apcs frame
24047         layout.
24048
24049 2008-03-11  Paolo Bonzini  <bonzini@gnu.org>
24050
24051         PR rtl-optimization/35281
24052         * expr.c (convert_move): Use a new pseudo for the intermediate
24053         from_mode->word_mode result.
24054
24055 2008-03-11  Paolo Bonzini  <bonzini@gnu.org>
24056
24057         * langhooks-def.h (LANG_HOOKS_CLEAR_BINDING_STACK): Delete.
24058         * langhooks.h (struct lang_hooks): Delete clear_binding_stack member.
24059         * toplev.c (compile_file): Don't call it.
24060
24061 2008-03-11  Uros Bizjak  <ubizjak@gmail.com>
24062
24063         PR middle-end/35526
24064         * expr.c (store_expr): Call emit_block_move if the mode
24065         of "temp" RTX is BLKmode.
24066
24067 2008-03-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
24068             Richard Guenther  <rguenther@suse.de>
24069
24070         PR tree-optimization/31358
24071         * tree-ssa-loop-manip.c (create_iv): Call force_gimple_operand for
24072         the step with a NULL_TREE.
24073         * tree-ssa-loop-ivopts.c (find_bivs): Convert the step
24074         to sizetype if type is a pointer type.
24075         (add_candidate_1): Don't convert the base and step to
24076         the generic type if the orginal type is a pointer type.
24077         (add_iv_value_candidates): Use sizetype for the step
24078         if type is a pointer type.
24079         (cand_value_at): Likewise.
24080         * tree-ssa-address.c (add_to_parts): Use POINTER_PLUS_EXPR
24081         for pointer types.
24082         * tree-affine.c (tree_to_aff_combination <POINTER_PLUS_EXPR>):
24083         Don't convert the tem affine to the type.
24084         (add_elt_to_tree): Use sizetype for the step if a pointer.
24085         Use POINTER_PLUS_EXPR for pointers.
24086         (aff_combination_to_tree): Use sizetype for the step if a
24087         pointer.
24088
24089 2008-03-10  Vladimir Makarov  <vmakarov@redhat.com>
24090
24091         * config/i386/sse.md (ssse3_pmaddubswv8hi3, ssse3_pmaddubswv4hi3):
24092         Remove commutativity hint.
24093
24094 2008-03-10  Jakub Jelinek  <jakub@redhat.com>
24095
24096         PR c/35438
24097         PR c/35439
24098         * c-parser.c (c_parser_omp_threadprivate): Don't add vars with
24099         errorneous type.  Check that v is a VAR_DECL.
24100
24101         PR middle-end/35099
24102         * tree-cfg.c (new_label_mapper): Update cfun->last_label_uid.
24103
24104 2008-03-10  H.J. Lu  <hongjiu.lu@intel.com>
24105
24106         PR tree-optimization/35494
24107         * tree-ssa-ccp.c (get_symbol_constant_value): Check if value
24108         may be overriden at link and run time.
24109
24110 2008-03-10  Richard Guenther  <rguenther@suse.de>
24111
24112         PR tree-optimization/34677
24113         * tree-ssa-pre.c (modify_expr_node_pool): Remove.
24114         (poolify_tree): Likewise.
24115         (modify_expr_template): Likewise.
24116         (poolify_modify_stmt): Likewise.
24117         (insert_fake_stores): Handle all component-ref style stores
24118         in addition to INDIRECT_REF.  Also handle complex types.
24119         Do not poolify the inserted load.
24120         (realify_fake_stores): Do not rebuild the tree but only
24121         make it a SSA_NAME copy.
24122         (init_pre): Remove initialzation of modify_expr_template.
24123         Do not allocate modify_expr_node_pool.
24124         (fini_pre): Do not free modify_expr_node_pool.
24125
24126 2008-03-10  Paul Brook  <paul@codesourcery.com>
24127
24128         * config/arm/arm.md (UNSPEC_STACK_ALIGN, UNSPEC_PIC_OFFSET): Renumber
24129         to avoid conflicts.
24130
24131 2008-03-10  Paul Brook  <paul@codesourcery.com>
24132             Mark Shinwell  <shinwell@codesourcery.com>
24133
24134         * config/arm/cortex-r4.md: New.
24135         * config/arm/thumb2.md (divsi3, udivsi3): Annotate with
24136         insn attributes.
24137         * config/arm/arm.md: Include cortex-r4.md.
24138         (insn): Add smmls, sdiv and udiv values.
24139         (generic_sched): Don't use generic scheduling for Cortex-R4.
24140         (arm_issue_rate): New function.
24141         (TARGET_SCHED_ISSUE_RATE): Define.
24142
24143 2008-03-10  Sebastian Pop  <sebastian.pop@amd.com>
24144
24145         * doc/invoke.texi (-ftree-loop-distribution): Add an example.
24146
24147 2008-03-10  Richard Guenther  <rguenther@suse.de>
24148
24149         * tree-ssa-pre.c (get_sccvn_value): Simplify.
24150         (compute_avail): Do not add stmt uses to AVAIL_OUT.
24151
24152 2008-03-10  Paolo Bonzini  <bonzini@gnu.org>
24153
24154         * langhooks-def.h (LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS):
24155         Set default to true.
24156
24157 2008-03-09  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
24158
24159         * c.opt (Wsynth): Deprecate.
24160         * doc/invoke.texi (Option Summary, Warning Options): Document
24161         -Wno-format-contains-nul.
24162
24163 2008-03-09  Uros Bizjak  <ubizjak@gmail.com>
24164
24165         PR target/35496
24166         * config/i386/i386.c (ix86_constant_alignment): Compute alignment using
24167         ALIGN_MODE_128 for VECTOR_CST and INTEGER_CST in addition to REAL_CST.
24168
24169 2008-03-09  Ira Rosen  <irar@il.ibm.com>
24170
24171         * config/rs6000/rs6000.c (builtin_description): Rename vector
24172         left shift operations.
24173         * config/rs6000/altivec.md (UNSPEC_VSL): Remove.
24174         (altivec_vsl<VI_char>): Rename to ...
24175         (ashl<mode>3): ... new name.
24176         (mulv4sf3, mulv4si3, negv4sf2): Replace gen_altivec_vslw with
24177         gen_ashlv4si3.
24178         (absv4sf2): Convert to use ashift:V4SI instead of UNSPEC_VSL.
24179
24180 2008-03-08  Richard Guenther  <rguenther@suse.de>
24181
24182         * coverage.h (tree_coverage_counter_addr): Declare.
24183         * coverage.c (tree_coverage_counter_addr): New function.
24184         * tree-profile.c (tree_gen_edge_profiler): Unshare counter
24185         before using again.
24186         (tree_gen_pow2_profiler): Use tree_coverage_counter_addr.
24187         (tree_gen_one_value_profiler): Likewise.
24188         (tree_gen_ic_profiler): Likewise.
24189         (tree_gen_average_profiler): Likewise.
24190         (tree_gen_ior_profiler): Likewise.
24191
24192 2008-03-08  Richard Guenther  <rguenther@suse.de>
24193
24194         * tree-ssa-sccvn.h (vn_binary_op_lookup): Remove.
24195         (vn_binary_op_insert): Likewise.
24196         (vn_unary_op_lookup): Likewise.
24197         (vn_unary_op_insert): Likewise.
24198         (vn_nary_op_lookup): Declare.
24199         (vn_nary_op_insert): Likewise.
24200         * tree-ssa-sccvn.c (struct vn_tables_s): Merge unary
24201         and binary hashes, use a single obstack for unary_op_pool
24202         and binary_op_pool.
24203         (struct vn_binary_op_s, struct vn_unary_op_s): Replace with
24204         a single struct vn_nary_op_s.  Store tree code length and
24205         a variable number of operands.
24206         (struct vn_reference_op_struct): Remove unused op2.
24207         (vn_reference_op_eq): Do not compare op2.
24208         (vn_reference_op_compute_hash): Do not compute hash of op2.
24209         (vn_unary_op_hash, vn_binary_op_hash): Replace with vn_nary_op_hash.
24210         (vn_unary_op_compute_hash, vn_binary_op_compute_hash): Replace
24211         with vn_nary_op_compute_hash.
24212         (vn_unary_op_eq, vn_binary_op_eq): Replace with vn_nary_op_eq.
24213         (vn_unary_op_lookup, vn_binary_op_lookup): Replace with
24214         vn_nary_op_lookup.
24215         (vn_unary_op_insert, vn_binary_op_insert): Replace with
24216         vn_nary_op_insert.
24217         (visit_unary_op): Call nary functions.
24218         (visit_binary_op): Likewise.
24219         (process_scc): Adjust for struct vn_tables_s changes.
24220         (allocate_vn_table): Likewise.
24221         (free_vn_table): Likewise.
24222         * tree-vn.c (vn_add): Call nary functions.
24223         (vn_lookup): Likewise.
24224
24225 2008-03-08  Jakub Jelinek  <jakub@redhat.com>
24226
24227         PR target/35498
24228         * config/rs6000/rs6000.c (rs6000_expand_compare_and_swapqhi): Shift
24229         wdst back after sync_compare_and_swapqhi_internal.
24230
24231 2008-03-08  Uros Bizjak  <ubizjak@gmail.com>
24232
24233         PR target/22152
24234         * config/i386/i386-modes.def (V1DI): New vector mode.
24235         * config/i386/i386.h (VALID_MMX_REG_MODE): Add V1DImode.
24236         * config/i386/mmx.md (MMXMODEI8): New mode iterator.
24237         (MMXMODE248): Ditto.
24238         (MMXMODE): Add V1DI mode.
24239         (mmxvecsize): Change DI mode to V1DI mode.
24240         ("mov<mode>): Use MMXMODEI8 mode iterator.
24241         ("*mov<mode>_internal_rex64"): Ditto.
24242         ("*mov<mode>_internal"): Ditto.
24243         ("mmx_add<mode>3"): Ditto.  Handle V1DImode for TARGET_SSE2.
24244         ("mmx_sub<mode>3"): Ditto.
24245         ("mmx_adddi3"): Remove insn pattern.
24246         ("mmx_subdi3"): Ditto.
24247         ("mmx_ashr<mode>3"): Use SImode and "yN" constraint for operand 2.
24248         ("mmx_lshr<mode>3"): Ditto. Use MMXMODE248 mode iterator.
24249         ("mmx_ashl<mode>3"): Ditto.
24250         ("mmx_lshrdi3"): Remove insn pattern.
24251         ("mmx_ashldi3"): Ditto.
24252         * config/i386/i386.c (classify_argument): Handle V1DImode.
24253         (function_arg_advance_32): Ditto.
24254         (function_arg_32): Ditto.
24255         (struct builtin_description) [IX86_BUILTIN_PADDQ]: Use
24256         mmx_addv1di3 insn pattern.
24257         [IX86_BUILTIN_PSUBQ]: Use mmx_subv1di3 insn pattern.
24258         [IX86_BUILTIN_PSLL?, IX86_BUILTIN_PSRL?, IX86_BUILTIN_PSRA?,
24259         IX86_BUILTIN_PSLL?I, IX86_BUILTIN_PSRL?I, IX86_BUILTIN_PSRA?I,
24260         IX86_BUILTIN_PSLL?I128, IX86_BUILTIN_PSRL?I128, IX86_BUILTIN_PSRA?I128]:
24261         Remove definitions of built-in functions.
24262         (V1DI_type_node): New node.
24263         (v1di_ftype_v1di_int): Ditto.
24264         (v1di_ftype_v1di_v1di): Ditto.
24265         (v2si_ftype_v2si_si): Ditto.
24266         (v4hi_ftype_v4hi_di): Remove node.
24267         (v2si_ftype_v2si_di): Ditto.
24268         (ix86_init_mmx_sse_builtins): Handle V1DImode.
24269         (__builtin_ia32_psll?, __builtin_ia32_psrl?, __builtin_ia32_psra?):
24270         Redefine builtins using def_builtin_const with *_ftype_*_int node.
24271         (__builtin_ia32_psll?i, __builtin_ia32_psrl?i, __builtin_ia32_psra?i):
24272         Add new builtins using def_builtin_const.
24273         (ix86_expand_builtin) [IX86_BUILTIN_PSLL?, IX86_BUILTIN_PSRL?,
24274         IX86_BUILTIN_PSRA?, IX86_BUILTIN_PSLL?I, IX86_BUILTIN_PSRL?I,
24275         IX86_BUILTIN_PSRA?I]: Handle builtin definitions.
24276         * config/i386/mmintrin.h (__v1di): New typedef.
24277         (_mm_add_si64): Cast arguments to __v1di type.
24278         (_mm_sub_si64): Ditto.
24279         (_mm_sll_pi16): Cast __count to __v4hi type.
24280         (_mm_sll_pi32): Cast __count to __v2si type.
24281         (_mm_sll_si64): Cast arguments to __v1di type.
24282         (_mm_srl_pi16): Cast __count to __v4hi type.
24283         (_mm_srl_pi32): Cast __count to __v2si type.
24284         (_mm_srl_si64): Cast arguments to __v1di type.
24285         (_mm_sra_pi16): Cast __count to __v4hi type.
24286         (_mm_sra_pi32): Cast __count to __v2si type.
24287         (_mm_slli_pi16): Use __builtin_ia32_psllwi.
24288         (_mm_slli_pi32): Use __builtin_ia32_pslldi.
24289         (_mm_slli_si64): Use __builtin_ia32_psllqi. Cast __m to __v1di type.
24290         (_mm_srli_pi16): Use __builtin_ia32_psrlwi.
24291         (_mm_srli_pi32): Use __builtin_ia32_psrldi.
24292         (_mm_srli_si64): Use __builtin_ia32_psrlqi. Cast __m to __v1di type.
24293         (_mm_srai_pi16): Use __builtin_ia32_psrawi.
24294         (_mm_srai_pi32): Use __builtin_ia32_psradi.
24295         * config/i386/i386.md (UNSPEC_NOP): Remove unspec definition.
24296         * doc/extend.texi (X86 Built-in Functions) [__builtin_ia32_psll?,
24297         __builtin_ia32_psrl?, __builtin_ia32_psra?, __builtin_ia32_psll?i,
24298         __builtin_ia32_psrl?i, __builtin_ia32_psra?i]: Add new builtins.
24299
24300 2008-03-07  Joseph Myers  <joseph@codesourcery.com>
24301
24302         * doc/include/texinfo.tex: Update to version 2008-03-07.10.
24303
24304 2008-03-07  Peter Bergner  <bergner@vnet.ibm.com>
24305
24306         PR target/35373
24307         * config/rs6000/rs6000.c (rs6000_legitimize_address): Don't generate
24308         reg+const addressing for Altivec modes.  Don't generate reg+reg
24309         addressing for TFmode or TDmode quantities.
24310
24311 2008-03-07  Paolo Bonzini  <bonzini@gnu.org>
24312
24313         * c-common.c (vector_types_convertible_p): Call langhook
24314         instead of comptypes.
24315
24316 2008-03-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
24317
24318         PR tree-opt/35402
24319         * tree-ssa-ccp.c (get_symbol_constant_value): Handle
24320         integral and scalar float variables which have a
24321         NULL DECL_INITIAL.
24322
24323 2008-03-06  Nathan Froyd  <froydnj@codesourcery.com>
24324
24325         * dwarf2out.c (dwarf2out_frame_debug_expr): Consult the
24326         dwarf_register_span hook when emitting unwind information for
24327         register-to-memory saves.
24328         * config/rs6000/rs6000.c (spe_synthesize_frame): Delete.
24329         (rs6000_frame_related): Remove call to spe_synthesize_frame.
24330
24331 2008-03-06  Jakub Jelinek  <jakub@redhat.com>
24332
24333         * gimplify.c (goa_lhs_expr_p): Allow different ADDR_EXPR nodes
24334         for the same VAR_DECL.
24335
24336 2008-03-06  Tom Tromey  <tromey@redhat.com>
24337
24338         * treelang: Delete.
24339         * doc/standards.texi (Standards): Don't mention treelang.
24340         * doc/invoke.texi (Overall Options): Don't mention treelang.
24341         * doc/install.texi (Prerequisites): Don't mention bison or
24342         treelang.
24343         (Configuration): Don't mention treelang.
24344         (Building): Likewise.
24345         * doc/frontends.texi (G++ and GCC): Don't mention treelang.
24346
24347 2008-03-06  Paolo Bonzini  <bonzini@gnu.org>
24348
24349         * simplify-rtx.c (simplify_subreg): Remove useless shifts from
24350         word-extractions out of a multi-word object.
24351
24352 2008-03-06  Richard Guenther  <rguenther@suse.de>
24353
24354         * tree.def (BIT_FIELD_REF): Constrain result type and its precision.
24355         * tree-cfg.c (verify_expr): Verify BIT_FIELD_REF constraints on
24356         result type and precision.
24357         * expr.c (get_inner_reference): Set unsignedp based on the result
24358         type of BIT_FIELD_REF.
24359         * tree.h (BIT_FIELD_REF_UNSIGNED): Remove.
24360         * tree-sra.c (instantiate_element): Do not set BIT_FIELD_REF_UNSIGNED.
24361         (try_instantiate_multiple_fields): Likewise.  Use the correct type
24362         for BIT_FIELD_REF.
24363         (sra_build_assignment): Likewise.
24364         (sra_build_elt_assignment): Likewise.
24365         (sra_explode_bitfield_assignment): Likewise.
24366         * print-tree.c (print_node): Do not check BIT_FIELD_REF_UNSIGNED.
24367         * tree-vect-transform.c (vect_create_epilog_for_reduction): Do not
24368         set BIT_FIELD_REF_UNSIGNED.
24369         (vectorizable_load): Likewise.
24370
24371 2008-03-06  Andreas Krebbel  <krebbel1@de.ibm.com>
24372
24373         * cse.c (cse_extended_basic_block): Invalidate artificial defs
24374         at bb start.
24375
24376 2008-03-06  Richard Guenther  <rguenther@suse.de>
24377
24378         * alias.c (struct alias_set_entry): Move has_zero_child field
24379         to pack with alias_set.
24380
24381 2008-03-05  H.J. Lu  <hongjiu.lu@intel.com>
24382
24383         * config/i386/i386-modes.def: Use 4 byte alignment on DI for
24384         32bit host.
24385
24386 2008-03-05  Ian Lance Taylor  <iant@google.com>
24387
24388         * alias.h (alias_set_type): Change from HOST_WIDE_INT to int.
24389
24390 2008-03-05  Kenneth Zadeck  <zadeck@naturalbridge.com>
24391
24392         * fwprop.c (update_df): Support width and offset parameters of
24393         df_ref_create.
24394         * ra-conflict.c (mark_reg_store, clear_reg_in_live,
24395         global_conflicts): Change DF_REF_EXTRACT to either
24396         DF_REF_ZERO_EXTRACT or DF_REF_SIGN_EXTRACT.  Change
24397         DF_REF_STRICT_LOWER_PART to DF_REF_STRICT_LOW_PART.
24398         * df-scan.c (df_ref_record, df_defs_record,
24399         df_ref_create_structure, df_def_record_1, df_uses_record,
24400         df_get_conditional_uses, df_get_call_refs, df_insn_refs_collect,
24401         df_bb_refs_collect, df_entry_block_defs_collect,
24402         df_exit_block_uses_collect): Support new width and offset fields.
24403         (ref_extract_pool): New storage pool.
24404         (df_free_ref): New function.
24405         (df_reg_chain_unlink, df_free_collection_rec,
24406         df_sort_and_compress_refs): Call df_free_ref.
24407         (df_ref_equal_p, df_ref_compare): Compare offset and width fields
24408         of df_ref_extract.
24409         (df_ref_create_structure): Allocate df_ref_extract if offset and
24410         width fields are used.
24411         (df_def_record_1): Get offset and width from ZERO_EXTRACT.
24412         (df_uses_record): Get offset and width from ZERO_EXTRACT
24413         and SIGN_EXTRACT.
24414         * global.c (build_insn_chain): Change DF_REF_EXTRACT to either
24415         DF_REF_ZERO_EXTRACT or DF_REF_SIGN_EXTRACT.  Change
24416         DF_REF_STRICT_LOWER_PART to DF_REF_STRICT_LOW_PART.
24417         * df.h (df_ref_flags): Change DF_REF_EXTRACT to either
24418         DF_REF_ZERO_EXTRACT or DF_REF_SIGN_EXTRACT.  Change
24419         DF_REF_STRICT_LOWER_PART to DF_REF_STRICT_LOW_PART.
24420         (df_ref_extract): New structure.
24421         (DF_REF_WIDTH, DF_REF_OFFSET): New macros.
24422         (df_ref_create): Add width and offset parameters.
24423
24424 2008-03-05  Richard Guenther  <rguenther@suse.de>
24425
24426         * tree-ssa-structalias.c (get_constraint_for_component_ref):
24427         Use ranges_overlap_p.
24428         (offset_overlaps_with_access): Rename
24429         to ranges_overlap_p and move ...
24430         * tree-flow-inline.h (ranges_overlap_p): ... here.
24431
24432         * tree.h (get_inner_reference, handled_component_p): Update
24433         comments.
24434
24435         * tree.h (record_component_aliases, get_alias_set,
24436         alias_sets_conflict_p, alias_sets_must_conflict_p,
24437         objects_must_conflict_p): Move declarations ...
24438         * alias.h (record_component_aliases, get_alias_set,
24439         alias_sets_conflict_p, alias_sets_must_conflict_p,
24440         objects_must_conflict_p): ... here.
24441         Include coretypes.h.
24442         * Makefile.in (ALIAS_H): Add coretypes.h dependency.
24443
24444 2008-03-05  Aldy Hernandez  <aldyh@redhat.com>
24445
24446         * cfg.c: Include tree-flow.h.
24447         (remove_edge_raw): Call redirect_edge_var_map_clear.
24448         (redirect_edge_succ_nodup): Call redirect_edge_var_map_dup.
24449         * tree-flow-inline.h (redirect_edge_var_map_def): New.
24450         (redirect_edge_var_map_result): New.
24451         * tree-cfgcleanup.c (remove_forwarder_block_with_phi): Replace
24452         PENDING_STMT use with redirect_edge_var_map_*.
24453         * tree-ssa.c (edge_var_maps): New definition.
24454         (redirect_edge_var_map_add): New.
24455         (redirect_edge_var_map_clear): New.
24456         (redirect_edge_var_map_dup): New.
24457         (redirect_edge_var_map_vector): New.
24458         (redirect_edge_var_map_destroy): New.
24459         (ssa_redirect_edge): Replace PENDING_STMT use with
24460         redirect_edge_var_map_*.
24461         (flush_pending_stmts): Same.
24462         (delete_tree_ssa): Destroy edge var map.
24463         * tree-flow.h (struct _edge_var_map): New.
24464         Define edge_var_map vector type.
24465         Declare redirect_edge_var_map_* prototypes.
24466         * Makefile.in (cfg.o): Depend on TREE_FLOW_H.
24467         * tree-cfg.c (reinstall_phi_args): Replace
24468         PENDING_STMT use with redirect_edge_var_map_*.
24469
24470 2008-03-05  Richard Guenther  <rguenther@suse.de>
24471
24472         PR tree-optimization/35472
24473         * tree-ssa-dse.c (dse_optimize_stmt): Do not delete a store
24474         whose single use_stmt has a overlapping set of loaded and
24475         stored symbols as that use_stmt might be a noop assignment then.
24476
24477 2008-03-05  Joel Sherrill <joel.sherrill@oarcorp.com>
24478
24479         * gthr-rtems.h: Implement __gthread_mutex_destroy.
24480
24481 2008-03-05  Richard Guenther  <rguenther@suse.de>
24482
24483         PR c++/35336
24484         * tree.def (BIT_FIELD_REF): Document that operands 1 and 2
24485         should be constants.
24486         * tree-cfg.c (verify_expr): Verify it.
24487         * fold-const.c (fold_truthop): Remove code generating
24488         BIT_FIELD_REFs of structure bases.
24489         (fold_binary): Likewise.
24490         (fold_ternary): Position and size of BIT_FIELD_REFs are
24491         always host integers.
24492         (make_bit_field_ref): Remove.
24493         (optimize_bit_field_compare): Remove.
24494         (all_ones_mask_p): Remove.
24495
24496 2008-03-05  Gabor Loki  <loki@gcc.gnu.org>
24497
24498         PR gcc/33009
24499         * rtl-factoring.c (clear_regs_live_in_seq): Fix backward steps.
24500         (split_block_and_df_analyze): New. Split basic block and rebuild
24501         dataflow.
24502         (block_label_after): Use SPLIT_BLOCK_AND_DF_ANALYZE instead of
24503         SPLIT_BLOCK.
24504         (split_pattern_seq): Likewise.
24505         (erase_matching_seqs): Likewise.
24506         (split_pattern_seq): Skip return insn in case of REG_NORETURN note.
24507
24508 2008-03-04  Geoff Keating  <geoffk@apple.com>
24509
24510         * fold-const.c (tree_single_nonnegative_warnv_p): Fix mixed
24511         declaration and code.
24512         (tree_invalid_nonnegative_warnv_p): Likewise.
24513
24514 2008-03-05  Serge Belyshev  <belyshev@depni.sinp.msu.ru>
24515
24516         * doc/install.texi (Testing): Correct quoting for the RUNTESTFLAGS
24517         examples.  Truncate option-names then causing overfull hbox.
24518
24519 2008-03-04  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
24520
24521         PR target/35222
24522         * configure.ac (CONFIG_SJLJ_EXCEPTIONS): Force SJLJ exceptions
24523         on hpux10.
24524         * configure: Rebuilt.
24525
24526 2008-03-04  Rafael Espíndola  <espindola@google.com>
24527
24528         * fold-const.c (tree_simple_nonnegative_warnv_p): New.
24529         (tree_unary_nonnegative_warnv_p): New.
24530         (tree_binary_nonnegative_warnv_p): New.
24531         (tree_single_nonnegative_warnv_p): New.
24532         (tree_invalid_nonnegative_warnv_p): New.
24533         (tree_expr_nonnegative_warnv_p): Redefine in term of the new functions.
24534
24535 2008-03-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24536
24537         PR 28322
24538         * opts.c (handle_option): Postpone 'unknown option' errors only for
24539         warning options.
24540
24541 2008-03-04  H.J. Lu  <hongjiu.lu@intel.com>
24542
24543         PR target/35453
24544         * config/i386/smmintrin.h (SIDD_XXX): Renamed to ...
24545         (_SIDD_XXX): This.
24546
24547 2008-03-04  Rafael Espíndola  <espindola@google.com>
24548
24549         * fold-const.c (tree_unary_nonzero_warnv_p): New.
24550         (tree_binary_nonzero_warnv_p): New.
24551         (tree_single_nonzero_warnv_p): New.
24552         (tree_expr_nonzero_warnv_p): Redefine using the new functions.
24553
24554 2008-03-04  Uros Bizjak  <ubizjak@gmail.com>
24555
24556         PR middle-end/35456
24557         * fold-const.c (fold_cond_expr_with_comparison): Prevent
24558         transformations for modes that have signed zeros.
24559         * ifcvt.c (noce_try_abs): Ditto.
24560
24561 2008-03-04  Joseph Myers  <joseph@codesourcery.com>
24562
24563         * config/i386/i386.c (override_options): Force
24564         -maccumulate-outgoing-args on if TARGET_STACK_PROBE.
24565
24566 2008-03-04  Jan Hubicka  <jh@suse.cz>
24567
24568         PR c++/35262
24569         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Fix typo
24570         in last commit.
24571
24572 2008-03-04  Danny Smith  <dannysmith@users.sourceforge.net>
24573
24574         * config/i386/i386.md (allocate_stack_worker_32): Use  __chkstk
24575         label to probe the stack.
24576
24577 2008-03-04  Danny Smith  <dannysmith@users.sourceforge.net>
24578
24579         * gthr-win32.h [__GTHREAD_HIDE_WIN32API]
24580         (__gthr_win32_mutex_destroy): Declare.
24581         [__GTHREAD_HIDE_WIN32API] (__gthread_mutex_destroy): Use
24582         __gthr_win32_mutex_destroy.
24583         * config/i386/gthr-win32.c  (__gthr_win32_mutex_destroy): Define.
24584
24585 2008-03-03  Jan Hubicka  <jh@suse.cz>
24586
24587         PR c++/35262
24588         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Be more
24589         aggressive on inlining cold calls.
24590
24591 2008-03-03  Richard Guenther  <rguenther@suse.de>
24592
24593         * tree-ssa-sccvn.c (visit_reference_op_store): Do not insert
24594         struct copies into the expression table.
24595         (simplify_unary_expression): Handle VIEW_CONVERT_EXPR.
24596         (try_to_simplify): Likewise.
24597         * fold-const.c (fold_unary): Fold VIEW_CONVERT_EXPR of
24598         integral and pointer arguments which do not change the
24599         precision to NOP_EXPRs.
24600         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Adjust
24601         VIEW_CONVERT_EXPR case.
24602
24603 2008-03-02  Sebastian Pop  <sebastian.pop@amd.com>
24604
24605         * tree-scalar-evolution.c (instantiate_parameters_1): An SSA_NAME
24606         defined in a loop at depth 0 is invariant.
24607         * tree-chrec.c (evolution_function_is_invariant_rec_p): Ditto.
24608         * tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Should never
24609         be called at loop depth 0.
24610
24611 2008-03-02  Jakub Jelinek  <jakub@redhat.com>
24612
24613         PR driver/35420
24614         * gcc.c (process_command): Update copyright notice dates.
24615         * gcov.c (print_version): Likewise.
24616         * gcov-dump.c (print_version): Likewise.
24617         * mips-tfile.c (main): Likewise.
24618         * mips-tdump.c (main): Likewise.
24619
24620 2008-03-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24621
24622         PR 24924
24623         * c-common.c (flag_permissive): Delete.
24624         (constant_expression_warnings): Check flags first.
24625         (constant_expression_error): New.
24626         * c-common.h (flag_permissive): Delete.
24627         (constant_expression_error): Declare.
24628         * flags.h (flag_permissive): Declare. Update description.
24629         * diagnostic.c (pedwarn): Update.
24630         (permerror): New.
24631         * diagnostic.h: (pedantic_error_kind): Rename as pedantic_warning_kind.
24632         (permissive_error_kind): New.
24633         * toplev.c (flag_permissive): Define. Update description.
24634         * toplev.h (permissive_error_kind): Declare.
24635         * c-errors.c (pedwarn_c99): Use pedantic_warning_kind.
24636         (pedwarn_c90): Use pedantic_warning_kind.
24637         * c-opts.c (c_common_post_options): flag_permissive does not affect
24638         flag_pedantic_errors.
24639
24640 2008-03-02  Joseph Myers  <joseph@codesourcery.com>
24641
24642         * libgcc2.c (__addvSI3, __addvsi3, __addvDI3, __subvSI3,
24643         __subvsi3, __subvDI3, __negvSI2, __negvsi2, __negvDI2, __absvSI2,
24644         __absvsi2, __absvDI2): Use unsigned arithmetic.
24645
24646 2008-03-02  Andi Kleen  <ak@suse.de>
24647             Richard Guenther  <rguenther@suse.de>
24648
24649         * struct-equiv.c: Remove file.
24650         * cfg_cleanup.c (condjump_equiv_p): Remove.
24651         * Makefile.in (OBJS-common): Remove struct-equiv.o.
24652         (struct-equiv.o): Remove rule.
24653         * basic-block.h (struct_equiv_checkpoint, STRUCT_EQUIV_*,
24654         insns_match_p, struct_equiv_block_eq, struct_equiv_init,
24655         rtx_equiv_p, condjump_equiv_p): Remove prototypes.
24656
24657 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
24658
24659         * ifcvt.c (noce_process_if_block): Try to handle only the then
24660         block if the else block exists but isn't suitable.
24661
24662 2008-03-01  Janne Blomqvist  <jb@gcc.gnu.org>
24663
24664         PR gcc/35063
24665         * gthr-posix.h (__gthread_mutex_destroy): Remove extra declarations.
24666         * gthr-posix95.h (__gthread_mutex_destroy): Likewise. Note this fixes
24667         regression from previous patch.
24668
24669 2008-03-01  Janne Blomqvist  <jb@gcc.gnu.org>
24670
24671         PR gcc/35063
24672         * gthr.h: Add __gthread_mutex_destroy as a function that must be
24673         implemented.
24674         * gthr-vxworks.h (__gthread_mutex_destroy): Null implementation.
24675         * gthr-single.h (__gthread_mutex_destroy): Likewise.
24676         * gthr-rtems.h (__gthread_mutex_destroy): Likewise.
24677         * gthr-mipssde.h (__gthread_mutex_destroy): Likewise.
24678         * gthr-nks.h (__gthread_mutex_destroy): Likewise.
24679         * gthr-solaris.h (__gthread_mutex_destroy): Call mutex_destroy.
24680         * gthr-win32.h (__GTHREAD_MUTEX_DESTROY_FUNCTION): Remove.
24681         (__gthread_mutex_destroy_function): Rename to
24682         __gthread_mutex_destroy.
24683         * gthr-dce.h (__gthread_mutex_destroy): Call
24684         pthread_mutex_destroy.
24685         * gthr-tpf.h (__gthread_mutex_destroy): Likewise.
24686         * gthr-posix.h (__gthread_mutex_destroy): Likewise.
24687         * gthr-posix95.h (__gthread_mutex_destroy): Likewise.
24688
24689 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
24690
24691         * df-scan.c (df_ref_chain_change_bb): Simplify.
24692         (df_insn_change_bb): Add new_bb argument.  Simplify.  Call
24693         set_block_for_insn if there's any change.
24694         * df.h ((df_insn_change_bb): Fix prototype.
24695         * cfgrtl.c (update_bb_for_insn_chain): Pass bb to
24696         df_insn_change_bb, don't call set_block_for_insn.
24697         * emit-rtl.c (reorder_insns): Likewise.
24698         * haifa-sched.c (move_insn): Likewise.
24699
24700 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
24701
24702         * rtlanal.c (loc_mentioned_in_p): Test XVECEXPs correctly.
24703
24704 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
24705
24706         * tree-flow-inline.h (next_readonly_imm_use): Return
24707         NULL_USE_OPERAND_P after the end.
24708
24709 2008-03-01  Richard Guenther  <rguenther@suse.de>
24710
24711         PR tree-optimization/35411
24712         * tree-sra.c (sra_build_assignment): Split conversion to
24713         final type to a separate statement if we are not assigning
24714         to a register.
24715
24716 2008-02-29  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
24717
24718         * fold-const.c (fold_convertible_p): Correct the logic to follow
24719         that in fold_convert().
24720
24721 2008-02-29  Douglas Gregor  <doug.gregor@gmail.com>
24722
24723         PR c++/35315
24724         * tree-inline.c (build_duplicate_type): When we make a
24725         duplicate type, make it unique in the canonical types system.
24726
24727 2008-02-29  Tom Tromey  <tromey@redhat.com>
24728
24729         * toplev.c (input_file_stack, input_file_stack_tick, fs_p,
24730         input_file_stack_history, input_file_stack_restored): Remove.
24731         (push_srcloc, pop_srcloc, restore_input_file_stack): Likewise.
24732         * input.h (struct file_stack): Remove.
24733         (push_srcloc, pop_srcloc, restore_input_file_stack): Likewise.
24734         (input_file_stack, input_file_stack_tick, INPUT_FILE_STACK_BITS):
24735         Likewise.
24736         * diagnostic.h (struct diagnostic_context) <last_module>: Change
24737         type.
24738         (diagnostic_last_module_changed): Add 'map' argument.
24739         (diagnostic_set_last_function): Likewise.
24740         * diagnostic.c (undiagnostic_report_current_module): Iterate using
24741         line map, not input_file_stack.
24742         * c-lex.c (fe_file_change): Don't use push_srcloc or pop_srcloc.
24743
24744 2008-02-29  Paul Brook  <paul@codesourcery.com>
24745
24746         * config/arm/arm.md (arm_addsi3): Add r/k/n alternative.
24747
24748 2008-02-29  Paul Brook  <paul@codesourcery.com>
24749
24750         * config/arm/ieee754-df.S (muldf3): Use RET macros.
24751
24752 2008-02-29  Richard Guenther  <rguenther@suse.de>
24753
24754         * tree-ssa-pre.c (get_sccvn_value): Create missing VNs via
24755         vn_lookup_or_add.
24756         * tree-ssa-sccnv.c (visit_reference_op_store): Use the rhs
24757         value for comparing for a store match.
24758         (simplify_unary_expression): Do nothing for SSA_NAMEs.
24759         (try_to_simplify): Do not do a full-blown reference lookup.
24760
24761 2008-02-29  Kaz Kojima  <kkojima@gcc.gnu.org>
24762
24763         * config/sh/sh.c (sh_scalar_mode_supported_p): New function.
24764         (TARGET_SCALAR_MODE_SUPPORTED_P): Define.
24765
24766         * config/sh/sh.h (OVERRIDE_OPTIONS): Don't warn for profiling.
24767
24768 2008-02-29  Sebastian Pop  <sebastian.pop@amd.com>
24769
24770         * tree-loop-linear.c (try_interchange_loops): Compare memory access
24771         strides against cache sizes.
24772
24773 2008-02-29  Kaz Kojima  <kkojima@gcc.gnu.org>
24774
24775         * config/sh/sh.c (sh_secondary_reload): Handle loading a float
24776         constant to fpul.
24777
24778 2008-02-28  Richard Sandiford  <rsandifo@nildram.co.uk>
24779
24780         * simplify-rtx.c (simplify_unary_operation_1): Extend the handling
24781         of SUBREG_PROMOTED_VAR_P to cope with cases where the extended value
24782         is smaller than the original promoted value.
24783         (simplify_subreg): If OP is a SUBREG, try to preserve its
24784         SUBREG_PROMOTED_VAR_P information.
24785
24786 2008-02-28  Steven Bosscher  <stevenb.gcc@gmail.com>
24787
24788         * tree-ssa-sccvn (vn_ssa_aux_obstack): New obstack.
24789         (VN_INFO_GET): Allocate new objects on the obstack.
24790         (init_scc_vn): Initialize the obstack.  Use XDELETE instead of free
24791         for rpo_numbers_temp, for consistency.
24792         (free_scc_vn): Free the obstack.
24793
24794 2008-02-28  Sebastian Pop  <sebastian.pop@amd.com>
24795
24796         * doc/invoke.texi: Document -ftree-loop-distribution.
24797         * tree-loop-distribution.c: New.
24798         * tree-pass.h (pass_loop_distribution): New.
24799         * graphds.h (struct graph): Add htab_t indices.
24800         * timevar.def (TV_TREE_LOOP_DISTRIBUTION): New.
24801         * tree-vectorizer.c (rename_variables_in_loop): Extern.
24802         (slpeel_tree_duplicate_loop_to_edge_cfg): Init PENDING_STMT to NULL.
24803         * tree-vectorizer.h (tree_duplicate_loop_on_edge): Declared.
24804         * tree-data-ref.c (debug_data_dependence_relations): New.
24805         (dump_data_dependence_relation): Also print data references.
24806         (free_data_ref): Extern.
24807         (same_access_functions): Moved...
24808         (find_vertex_for_stmt): Renamed rdg_vertex_for_stmt.
24809         (dump_rdg_vertex, debug_rdg_vertex, dump_rdg_component,
24810         debug_rdg_component, dump_rdg, debug_rdg, dot_rdg_1, dot_rdg,
24811         struct rdg_vertex_info, rdg_vertex_for_stmt): New.
24812         (create_rdg_edge_for_ddr, create_rdg_vertices): Cleaned up.
24813         (stmts_from_loop): Skip LABEL_EXPR.
24814         (hash_stmt_vertex_info, eq_stmt_vertex_info, hash_stmt_vertex_del):
24815         New.
24816         (build_rdg): Initialize rdg->indices htab.
24817         (free_rdg, stores_from_loop, ref_base_address,
24818         rdg_defs_used_in_other_loops_p, have_similar_memory_accesses,
24819         have_similar_memory_accesses_1, ref_base_address_1,
24820         remove_similar_memory_refs): New.
24821         * tree-data-ref.h: Depend on tree-chrec.h.
24822         (debug_data_dependence_relations, free_data_ref): Declared.
24823         (same_access_functions): ... here.
24824         (ddr_is_anti_dependent, ddrs_have_anti_deps, ddr_dependence_level):
24825         New.
24826         (struct rdg_vertex): Add has_mem_write and has_mem_reads.
24827         (RDGV_HAS_MEM_WRITE, RDGV_HAS_MEM_READS, RDG_STMT,
24828         RDG_MEM_WRITE_STMT, RDG_MEM_READS_STMT): New.
24829         (dump_rdg_vertex, debug_rdg_vertex, dump_rdg_component,
24830         debug_rdg_component, dump_rdg, debug_rdg, dot_rdg,
24831         rdg_vertex_for_stmt): Declared.
24832         (struct rdg_edge): Add level.
24833         (RDGE_LEVEL): New.
24834         (free_rdg, stores_from_loop, remove_similar_memory_refs,
24835         rdg_defs_used_in_other_loops_p, have_similar_memory_accesses):
24836         Declared.
24837         (rdg_has_similar_memory_accesses): New.
24838         * tree-vect-analyze.c: Remove unused static decls.
24839         * lambda.h (dependence_level): New.
24840         * common.opt (ftree-loop-distribution): New.
24841         * tree-flow.h (mark_virtual_ops_in_bb,
24842         slpeel_tree_duplicate_loop_to_edge_cfg,
24843         rename_variables_in_loop): Declared.
24844         * Makefile.in (TREE_DATA_REF_H): Depend on tree-chrec.h.
24845         (OBJS-common): Add tree-loop-distribution.o.
24846         (tree-loop-distribution.o): New rule.
24847         * tree-cfg.c (mark_virtual_ops_in_bb): New.
24848         (mark_virtual_ops_in_region): Use mark_virtual_ops_in_bb.
24849         * passes.c (init_optimization_passes): Schedule pass_loop_distribution.
24850
24851 2008-02-28  Joseph Myers  <joseph@codesourcery.com>
24852
24853         PR target/33963
24854         * tree.c (handle_dll_attribute): Disallow TYPE_DECLs for types
24855         other than structures and unions.
24856
24857 2008-02-28  Richard Guenther  <rguenther@suse.de>
24858
24859         Revert:
24860         2008-02-26  Richard Guenther  <rguenther@suse.de>
24861
24862         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
24863         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
24864         (lookup_decl_from_uid): Declare.
24865         (remove_decl_from_map): Likewise.
24866         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
24867         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
24868         (decl_for_uid_map): New global hashtable mapping DECL_UID
24869         to the decl tree.
24870         (init_ttree): Allocate it.
24871         (insert_decl_to_uid_decl_map): New helper function.
24872         (make_node_stat): Insert new decls into the map.
24873         (copy_node_stat): Likewise.
24874         (lookup_decl_from_uid): New function.
24875         (remove_decl_from_map): Likewise.
24876         (print_decl_for_uid_map_statistics): New helper.
24877         (dump_tree_statistics): Call it.
24878
24879         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
24880         (referenced_var_iterator): Adjust.
24881         (FOR_EACH_REFERENCED_VAR): Adjust.
24882         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
24883         (num_referenced_vars): Adjust.
24884         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
24885         (first_referenced_var): Remove.
24886         (end_referenced_vars_p): Likewise.
24887         (next_referenced_var): Likewise.
24888         (referenced_var_iterator_set): New helper function.
24889         * tree-dfa.c (referenced_var_lookup): Adjust.
24890         (referenced_var_check_and_insert): Likewise.
24891         (remove_referenced_var): Likewise.
24892         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
24893         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
24894         (verify_call_clobbering): Likewise.
24895         (verify_memory_partitions): Likewise.
24896         (init_tree_ssa): Allocate bitmap instead of hashtable for
24897         referenced_vars.
24898         (delete_tree_ssa): Adjust.
24899         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
24900         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
24901         (compute_tag_properties): Likewise.
24902         (set_initial_properties): Likewise.
24903         (find_partition_for): Likewise.
24904         (update_reference_counts): Likewise.
24905         (dump_may_aliases_for): Likewise.
24906         * tree-ssa-operands.c (add_virtual_operand): Likewise.
24907         (add_call_clobber_ops): Likewise.
24908         (add_call_read_ops): Likewise.
24909         (get_asm_expr_operands): Likewise.
24910         * tree-into-ssa.c (dump_decl_set): Likewise.
24911         (update_ssa): Likewise.
24912         * tree-sra.c (scan_function): Likewise.
24913         (decide_instantiations): Likewise.
24914         (scalarize_parms): Likewise.
24915         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
24916         (dsa_named_for): Likewise.
24917         * tree-ssa-structalias.c (update_alias_info): Likewise.
24918         (merge_smts_into): Likewise.
24919
24920 2008-02-27  David Daney  <ddaney@avtrex.com>
24921
24922         PR target/34409
24923         * config/mips/iris.h (MIPS_DEBUGGING_INFO): Define.
24924         * config/mips/openbsd.h (MIPS_DEBUGGING_INFO): Same.
24925         * config/mips/sde.h (MIPS_DEBUGGING_INFO): Remove undef.
24926         * config/mips/vxworks.h (MIPS_DEBUGGING_INFO): Same.
24927         * config/mips/mips.h (MIPS_DEBUGGING_INFO): Remove define.
24928
24929 2008-02-27  Uros Bizjak  <ubizjak@gmail.com>
24930
24931         PR target/25477
24932         * config/darwin-ppc-ldouble-patch.def (BUILT_IN_NANL): Add.
24933         (BUILT_IN_NEXTTOWARD): Remove.
24934         (BUILT_IN_NEXTTOWARDF): Ditto.
24935         * config/darwin.c (darwin_patch_builtin): Use ACONCAT instead of
24936         alloca/strcpy/strcat.  Remove commented-out code.  Fix whitespace.
24937
24938 2008-02-27  Tom Tromey  <tromey@redhat.com>
24939
24940         * tree-dump.c (dequeue_and_dump) <FUNCTION_DECL>: Check
24941         DECL_SAVED_TREE, not DECL_LANG_SPECIFIC, when dumping body.
24942
24943 2008-02-27  Jan Beulich  <jbeulich@novell.com>
24944
24945         * c-decl.c (merge_decls): Use DECL_USER_ALIGN() on olddecl to
24946         update the respective field on newdecl.
24947
24948 2008-02-27  Revital Eres  <eres@il.ibm.com>
24949
24950         PR rtl-optimization/34999
24951         * bb-reorder.c (add_labels_and_missing_jumps): Do not handle
24952         crossing edges that ends with a call insn.
24953         (fix_up_fall_thru_edges): Handle crossing edges that ends with a
24954         call insn and clear the EDGE_CROSSING flag of the crossing edge
24955         when fixing fallthru edges.
24956
24957 2008-02-27  Richard Guenther  <rguenther@suse.de>
24958
24959         PR middle-end/35390
24960         * fold-const.c (fold_unary): Return the correct argument,
24961         converted to the result type.
24962
24963 2008-02-27  Richard Guenther  <rguenther@suse.de>
24964
24965         PR middle-end/34971
24966         * expr.c (expand_expr_real_1): Assert on rotates that operate
24967         on partial modes.
24968         * fold-const.c (fold_binary): Use the types precision, not the
24969         bitsize of the mode if folding rotate expressions.  Build rotates
24970         only for full modes.
24971
24972 2008-02-27  Jakub Jelinek  <jakub@redhat.com>
24973
24974         * c-ppoutput.c (scan_translation_unit): Handle CPP_PRAGMA
24975         and CPP_PRAGMA_EOL.
24976         * c-pragma.c (pragma_ns_name): New typedef.
24977         (registered_pp_pragmas): New variable.
24978         (c_pp_lookup_pragma): New function.
24979         (c_register_pragma_1): If flag_preprocess_only, do nothing
24980         for non-expanded pragmas, for expanded ones push pragma's
24981         namespace and name into registered_pp_pragmas vector.
24982         (c_invoke_pragma_handler): Register OpenMP pragmas even when
24983         flag_preprocess_only, don't register GCC pch_preprocess
24984         pragma if flag_preprocess_only.
24985         * c-opts.c (c_common_init): Call init_pragma even if
24986         flag_preprocess_only.
24987         * c-pragma.c (c_pp_lookup_pragma): New prototype.
24988         * config/darwin.h (DARWIN_REGISTER_TARGET_PRAGMAS): Don't call
24989         cpp_register_pragma if flag_preprocess_only.
24990
24991 2008-02-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
24992
24993         PR c/28800
24994         * c-parser.c (c_parser_translation_unit): Warn for empty
24995         translation unit, not empty source file.
24996
24997 2008-02-26  Paul Brook  <paul@codesourcery.com>
24998
24999         * config/arm/arm.c (thumb_set_frame_pointer): Ensure SP is first
25000         operand for Thumb-2.
25001         * config/arm/arm.h (reg_class): Add CORE_REGS.
25002         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Ditto.
25003         (BASE_REG_CLASS): Use CORE_REGS.
25004         (PREFERRED_RELOAD_CLASS): Add STACK_REG.
25005         (REGNO_MODE_OK_FOR_REG_BASE_P): Use REGNO_MODE_OK_FOR_BASE_P.
25006         (REGNO_OK_FOR_INDEX_P): Exclude SP.
25007         (ARM_REG_OK_FOR_INDEX_P): Always define.  Use
25008         ARM_REGNO_OK_FOR_INDEX_P.
25009         (ARM_PRINT_OPERAND_ADDRESS): Swap operands for [reg, sp].
25010         * config/arm/arm.md (arm_addsi3, thumb1_addsi3, arm_subsi3_insn,
25011         arm_movsi_insn, thumb1_movsi_insni, stack_tie): Add "k" alternatives.
25012         (ldm/stm peepholes): Ditto.
25013         * config/arm/thumb2.md (thumb2_movdi): Add "k" alternatives.
25014         * config/arm/vfp.md (arm_movsi_vfp, thumb2_movsi_vfp): Ditto.
25015         * config/arm/iwmmxt.md (iwmmxt_movsi_insn): Ditto.
25016         * config/arm/constraints.md: Enable "k" constraint on ARM.
25017
25018 2008-02-27  Ben Elliston  <bje@au.ibm.com>
25019
25020         * config/rs6000/rs6000.c: Annotate cache line size field in all
25021         instances of struct processor_costs.
25022
25023 2008-02-26  David Edelsohn  <edelsohn@gnu.org>
25024
25025         * dbgcnt.def (cfg_cleanup, cprop1, cprop2, dce_fast, dce_ud, dse1,
25026         dse2, gcse, if_conversion, if_after_combine, if_after_reload,
25027         jump_bypass): New counters.
25028         * cfgcleanup.c (cleanup_cfg): Add dbg_cnt.
25029         * dce.c (gate_ud_dce): Same.
25030         (gate_fast_dce): Same.
25031         * dse.c (gate_dse1): New function.
25032         (gate_dse2): New function.
25033         (gate_dse): Merge results of new gate functions.
25034         * gcse.c (gcse_main): Bracket cprop1 and cprop2 with dbg_cnt.
25035         (gate_handle_jump_bypass): Add dbg_cnt.
25036         (gate_handle_gcse): Add dbg_cnt.
25037         * ifcvt.c (gate_handle_if_conversion): Same.
25038         (gate_handle_if_after_combine): Same.
25039         (gate_handle_if_after_reload): Same.
25040         * Makefile.in: Add DBGCNT_H to cfgcleanup.o and ifcvt.o.
25041
25042 2008-02-26  Edmar Wienskoski  <edmar@freescale.com>
25043
25044         * config/rs6000/rs6000.c (processor_costs): Update e300 cache
25045         line sizes.
25046         * doc/invoke.texi: Add e300c2 and e300c3 to list of cpus.
25047
25048 2008-02-26  Jason Merrill  <jason@redhat.com>
25049
25050         PR c++/35315
25051         * attribs.c (decl_attributes): Leave ATTR_FLAG_TYPE_IN_PLACE
25052         alone if it's the naming decl for the type's main variant.
25053
25054 2008-02-26  Tom Tromey  <tromey@redhat.com>
25055
25056         * system.h (USE_MAPPED_LOCATION): Poison.
25057         * Makefile.in (GTFILES): Put CPP_ID_DATA_H first.
25058         * tree-cfg.c (make_cond_expr_edges): Remove old location code.
25059         (make_goto_expr_edges): Likewise.
25060         (remove_bb): Likewise.
25061         (execute_warn_function_return): Likewise.
25062         * basic-block.h (struct edge_def) <goto_locus>: Change type to
25063         location_t.
25064         * c-common.c (fname_decl): Remove old location code.
25065         * tree-vect-transform.c (vect_finish_stmt_generation): Remove old
25066         location code.
25067         * rtl.h (ASM_OPERANDS_SOURCE_LOCATION): Remove old-location
25068         variant.
25069         (ASM_INPUT_SOURCE_LOCATION): Likewise.
25070         (gen_rtx_ASM_INPUT): Likewise.
25071         (gen_rtx_ASM_INPUT_loc): Likewise.
25072         (get_rtx_asm_OPERANDS): Remove.
25073         * cfglayout.c (insn_locators_alloc): Remove old location code.
25074         (set_curr_insn_source_location): Likewise.
25075         (curr_insn_locator): Likewise.
25076         * print-tree.c (print_node): Remove old location code.
25077         * tree-mudflap.c (mf_varname_tree): Remove old location code.
25078         (mf_file_function_line_tree): Remove test of USE_MAPPED_LOCATION.
25079         * cfgexpand.c (expand_gimple_cond_expr): Don't use
25080         location_from_locus.
25081         (construct_exit_block): Remove old location code.
25082         * emit-rtl.c (force_next_line_note): Remove old location code.
25083         * profile.c (branch_prob): Remove old location code.
25084         * tree-vectorizer.h (LOC, UNKNOWN_LOC, EXPR_LOC, LOC_FILE,
25085         LOC_LINE): Remove old-location variants.
25086         * langhooks.c (lhd_print_error_function): Remove old location
25087         code.
25088         * configure, config.in: Rebuilt.
25089         * configure.ac (--enable-mapped-location): Remove.
25090         * c-decl.c (c_init_decl_processing): Remove old location code.
25091         (finish_function): Likewise.
25092         * recog.c (decode_asm_operands): Remove old location code.
25093         * c-pch.c (c_common_read_pch): Remove old location code.
25094         * rtl.def (ASM_INPUT, ASM_OPERANDS): Remove old location
25095         variants.
25096         * gimple-low.c (lower_function_body): Remove old location code.
25097         * toplev.c (unknown_location): Remove.
25098         (push_srcloc): Remove old-location variant.
25099         (process_options): Remove old location code.
25100         (lang_dependent_init): Likewise.
25101         * input.h (UNKNOWN_LOCATION): Move definition.
25102         (location_t): Undeprecate.
25103         (source_locus): Remove.
25104         (location_from_locus): Remove.
25105         (struct location_s): Remove.
25106         Remove all old-location code.
25107         (input_line, input_filename): Remove.
25108         * final.c (final_scan_insn): Remove old location code.
25109         * diagnostic.c (diagnostic_build_prefix): Remove
25110         USE_MAPPED_LOCATION test.
25111         * tree.h (gimple_stmt) <locus>: Now a location_t.
25112         (tree_exp) <locus>: Likewise.
25113         (DECL_IS_BUILTIN): Remove old-location variant.
25114         (annotate_with_file_line, annotate_with_locus): Likewise.
25115         (expr_locus, set_expr_locus): Update.
25116         * tree.c (build1_stat): Remove old location code.
25117         (last_annotated_node): Remove.
25118         (annotate_with_file_line): Remove old-location variant.
25119         (annotate_with_locus): Likewise.
25120         (expr_location): Remove old location code.
25121         (set_expr_location): Likewise.
25122         (expr_has_location): Likewise.
25123         (expr_locus): Likewise.
25124         (set_expr_locus): Likewise.
25125         (expr_filename): Don't use location_from_locus.
25126         (expr_lineno): Likewise.
25127         * rtl-error.c (location_for_asm): Remove old location code.
25128         * c-lex.c (cb_line_change): Remove old location code.
25129         (fe_file_change): Likewise.
25130         (cb_def_pragma): Likewise.
25131         (c_lex_with_flags): Likewise.
25132         * gengtype.c (do_typedef): Don't special-case location types.
25133         (define_location_structures): Remove.
25134         (main): Don't call define_location_structures.
25135         * tree-pretty-print.c (dump_implicit_edges): Remove old location
25136         code.
25137
25138 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25139
25140         PR 26264
25141         * builtins.def (BUILT_IN_STDARG_START): Remove.
25142         * builtins.c (expand_builtin): Remove BUILT_IN_STDARG_START.
25143         * tree-stdarg.c (execute_optimize_stdarg): Likewise.
25144         * tree-inline.c (inline_forbidden_p_1): Likewise.
25145
25146 2008-02-26  Richard Guenther  <rguenther@suse.de>
25147
25148         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
25149         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
25150         (lookup_decl_from_uid): Declare.
25151         (remove_decl_from_map): Likewise.
25152         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
25153         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
25154         (decl_for_uid_map): New global hashtable mapping DECL_UID
25155         to the decl tree.
25156         (init_ttree): Allocate it.
25157         (insert_decl_to_uid_decl_map): New helper function.
25158         (make_node_stat): Insert new decls into the map.
25159         (copy_node_stat): Likewise.
25160         (lookup_decl_from_uid): New function.
25161         (remove_decl_from_map): Likewise.
25162         (print_decl_for_uid_map_statistics): New helper.
25163         (dump_tree_statistics): Call it.
25164
25165         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
25166         (referenced_var_iterator): Adjust.
25167         (FOR_EACH_REFERENCED_VAR): Adjust.
25168         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
25169         (num_referenced_vars): Adjust.
25170         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
25171         (first_referenced_var): Remove.
25172         (end_referenced_vars_p): Likewise.
25173         (next_referenced_var): Likewise.
25174         (referenced_var_iterator_set): New helper function.
25175         * tree-dfa.c (referenced_var_lookup): Adjust.
25176         (referenced_var_check_and_insert): Likewise.
25177         (remove_referenced_var): Likewise.
25178         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
25179         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
25180         (verify_call_clobbering): Likewise.
25181         (verify_memory_partitions): Likewise.
25182         (init_tree_ssa): Allocate bitmap instead of hashtable for
25183         referenced_vars.
25184         (delete_tree_ssa): Adjust.
25185         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
25186         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
25187         (compute_tag_properties): Likewise.
25188         (set_initial_properties): Likewise.
25189         (find_partition_for): Likewise.
25190         (update_reference_counts): Likewise.
25191         (dump_may_aliases_for): Likewise.
25192         * tree-ssa-operands.c (add_virtual_operand): Likewise.
25193         (add_call_clobber_ops): Likewise.
25194         (add_call_read_ops): Likewise.
25195         (get_asm_expr_operands): Likewise.
25196         * tree-into-ssa.c (dump_decl_set): Likewise.
25197         (update_ssa): Likewise.
25198         * tree-sra.c (scan_function): Likewise.
25199         (decide_instantiations): Likewise.
25200         (scalarize_parms): Likewise.
25201         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
25202         (dsa_named_for): Likewise.
25203         * tree-ssa-structalias.c (update_alias_info): Likewise.
25204         (merge_smts_into): Likewise.
25205
25206 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25207
25208         PR 34351
25209         * doc/invoke.texi (-Wall): Add -Wvolatile-register-var.
25210         * c-opts.c (c_common_handle_option): Wall enables
25211         Wvolatile-register-var.
25212         * common.opt: Move Wvolatile-register-var to...
25213         * c.opt: ...here.
25214
25215 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25216
25217         * common.opt (Wlarger-than=): New.
25218         * doc/invoke.texi (Warning Options): Replace -Wlarger-than- with
25219         -Wlarger-than=.
25220         * opts.c (common_handle_option): Handle -Wlarger-than=.
25221         * optc-gen.awk: Likewise.
25222         * opth-gen.awk: Likewise.
25223         * stor-layout.c (layout_decl): Use -Wlarger-than= for warning.
25224         * tree-optimize.c (tree_rest_of_compilation): Likewise.
25225
25226 2008-02-26  Manuel Lopez-Ibanez <manu@gcc.gnu.org>
25227
25228         * c-common.c (match_case_to_enum_1): Add appropriate
25229         OPT_W* parameter to warning.
25230         (c_do_switch_warnings): Likewise.
25231         * c-typeck.c (warning_init): Add one more parameter following
25232         'warning' function.
25233         (push_init_level): Update call to warning_init.
25234         (pop_init_level): Likewise.
25235         (add_pending_init): Likewise.
25236         (output_init_element: Likewise.
25237
25238 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25239
25240         PR 28322
25241         * toplev.c (toplev_main): If there are warnings or error, print
25242         errors for ignored options.
25243         * opts.c (ignored_options): New static variable.
25244         (postpone_unknown_option_error): New.
25245         (print_ignored_options): New.
25246         (handle_option): Postpone errors for unknown -Wno-* options.
25247         * opts.h (print_ignored_options): Declare.
25248
25249 2008-02-25  Richard Sandiford  <rsandifo@nildram.co.uk>
25250
25251         * config/mips/mips.md (loadgp_blockage, blockage): Change type
25252         to "ghost".
25253
25254 2008-02-25  Richard Guenther  <rguenther@suse.de>
25255
25256         Revert:
25257         2008-02-25  Richard Guenther  <rguenther@suse.de>
25258
25259         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
25260         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
25261         (lookup_decl_from_uid): Declare.
25262         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
25263         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
25264         (decl_for_uid_map): New global hashtable mapping DECL_UID
25265         to the decl tree.
25266         (init_ttree): Allocate it.
25267         (insert_decl_to_uid_decl_map): New helper function.
25268         (make_node_stat): Insert new decls into the map.
25269         (copy_node_stat): Likewise.
25270         (lookup_decl_from_uid): New function.
25271         (print_decl_for_uid_map_statistics): New helper.
25272         (dump_tree_statistics): Call it.
25273
25274         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
25275         (referenced_var_iterator): Adjust.
25276         (FOR_EACH_REFERENCED_VAR): Adjust.
25277         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
25278         (num_referenced_vars): Adjust.
25279         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
25280         (first_referenced_var): Remove.
25281         (end_referenced_vars_p): Likewise.
25282         (next_referenced_var): Likewise.
25283         (referenced_var_iterator_set): New helper function.
25284         * tree-dfa.c (referenced_var_lookup): Adjust.
25285         (referenced_var_check_and_insert): Likewise.
25286         (remove_referenced_var): Likewise.
25287         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
25288         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
25289         (verify_call_clobbering): Likewise.
25290         (verify_memory_partitions): Likewise.
25291         (init_tree_ssa): Allocate bitmap instead of hashtable for
25292         referenced_vars.
25293         (delete_tree_ssa): Adjust.
25294         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
25295         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
25296         (compute_tag_properties): Likewise.
25297         (set_initial_properties): Likewise.
25298         (find_partition_for): Likewise.
25299         (update_reference_counts): Likewise.
25300         (dump_may_aliases_for): Likewise.
25301         * tree-ssa-operands.c (add_virtual_operand): Likewise.
25302         (add_call_clobber_ops): Likewise.
25303         (add_call_read_ops): Likewise.
25304         (get_asm_expr_operands): Likewise.
25305         * tree-into-ssa.c (dump_decl_set): Likewise.
25306         (update_ssa): Likewise.
25307         * tree-sra.c (scan_function): Likewise.
25308         (decide_instantiations): Likewise.
25309         (scalarize_parms): Likewise.
25310         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
25311         (dsa_named_for): Likewise.
25312         * tree-ssa-structalias.c (update_alias_info): Likewise.
25313         (merge_smts_into): Likewise.
25314
25315 2008-02-25  Janne Blomqvist  <jb@gcc.gnu.org>
25316
25317         PR fortran/29549
25318         * doc/invoke.texi (-fcx-limited-range): Document new option.
25319         * toplev.c (process_options): Handle -fcx-fortran-rules.
25320         * common.opt: Add documentation for -fcx-fortran-rules.
25321
25322 2008-02-25  Janne Blomqvist  <jb@gcc.gnu.org>
25323
25324         PR c/35162
25325         * doc/invoke.texi (-fcx-limited-range): Correct to be in line with
25326         actual behaviour and C99.
25327
25328 2008-02-26  Ben Elliston  <bje@au.ibm.com>
25329
25330         * config/rs6000/rs6000.h (ASM_CPU_POWER5_SPEC): Define.
25331         (ASM_CPU_POWER6_SPEC): Likewise.
25332         (ASM_CPU_SPEC): Pass %(asm_cpu_power5) for -mcpu=power5.
25333         Likewise, pass %(asm_cpu_power6) for -mcpu=power6.
25334         (EXTRA_SPECS): Add asm_cpu_power5, asm_cpu_power6 spec strings.
25335
25336 2008-02-25  Richard Guenther  <rguenther@suse.de>
25337
25338         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
25339         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
25340         (lookup_decl_from_uid): Declare.
25341         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
25342         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
25343         (decl_for_uid_map): New global hashtable mapping DECL_UID
25344         to the decl tree.
25345         (init_ttree): Allocate it.
25346         (insert_decl_to_uid_decl_map): New helper function.
25347         (make_node_stat): Insert new decls into the map.
25348         (copy_node_stat): Likewise.
25349         (lookup_decl_from_uid): New function.
25350         (print_decl_for_uid_map_statistics): New helper.
25351         (dump_tree_statistics): Call it.
25352
25353         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
25354         (referenced_var_iterator): Adjust.
25355         (FOR_EACH_REFERENCED_VAR): Adjust.
25356         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
25357         (num_referenced_vars): Adjust.
25358         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
25359         (first_referenced_var): Remove.
25360         (end_referenced_vars_p): Likewise.
25361         (next_referenced_var): Likewise.
25362         (referenced_var_iterator_set): New helper function.
25363         * tree-dfa.c (referenced_var_lookup): Adjust.
25364         (referenced_var_check_and_insert): Likewise.
25365         (remove_referenced_var): Likewise.
25366         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
25367         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
25368         (verify_call_clobbering): Likewise.
25369         (verify_memory_partitions): Likewise.
25370         (init_tree_ssa): Allocate bitmap instead of hashtable for
25371         referenced_vars.
25372         (delete_tree_ssa): Adjust.
25373         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
25374         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
25375         (compute_tag_properties): Likewise.
25376         (set_initial_properties): Likewise.
25377         (find_partition_for): Likewise.
25378         (update_reference_counts): Likewise.
25379         (dump_may_aliases_for): Likewise.
25380         * tree-ssa-operands.c (add_virtual_operand): Likewise.
25381         (add_call_clobber_ops): Likewise.
25382         (add_call_read_ops): Likewise.
25383         (get_asm_expr_operands): Likewise.
25384         * tree-into-ssa.c (dump_decl_set): Likewise.
25385         (update_ssa): Likewise.
25386         * tree-sra.c (scan_function): Likewise.
25387         (decide_instantiations): Likewise.
25388         (scalarize_parms): Likewise.
25389         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
25390         (dsa_named_for): Likewise.
25391         * tree-ssa-structalias.c (update_alias_info): Likewise.
25392         (merge_smts_into): Likewise.
25393
25394 2008-02-25  Andreas Krebbel  <krebbel1@de.ibm.com>
25395
25396         PR target/35258
25397         * cse.c (cse_insn): Avoid creation of overlapping MEMs.
25398         * alias.c (nonoverlapping_memrefs_p): Export for use in other modules.
25399         * alias.h (nonoverlapping_memrefs_p): Likewise.
25400
25401 2008-02-25  Jan Beulich  <jbeulich@novell.com>
25402
25403         * Makefile.in: Also prefix uses of crt0.o and mcrt0.o with $(T).
25404         * config/i386/netware-libgcc.exp: Add __bswap?i2,
25405         __emultls_get_address, __emultls_register_common,
25406         __floatundi?f, and _Unwind_GetIPInfo.
25407         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration):
25408         Sync with config/i386/winnt.c:gen_stdcall_or_fastcall_suffix().
25409         (gen_regparm_prefix): Likewise.
25410         (i386_nlm_encode_section_info): Sync with
25411         config/i386/winnt.c:i386_pe_encode_section_info().
25412         (i386_nlm_maybe_mangle_decl_assembler_name): New.
25413         i386_nlm_mangle_decl_assembler_name): New.
25414         (netware_override_options): New.
25415         * config/i386/netware.h (netware_override_options): Declare.
25416         (OVERRIDE_OPTIONS): Re-define to netware_override_options.
25417         (i386_nlm_mangle_decl_assembler_name): Declare.
25418         (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Define.
25419
25420 2008-02-25  Ben Elliston  <bje@au.ibm.com>
25421
25422         PR other/32948
25423         * c-decl.c (grokdeclarator): Remove unused local variables
25424         `typedef_type' and `type_as_written'.
25425         * bb-reorder.c
25426         (find_rarely_executed_basic_blocks_and_crossing_edges): Remove
25427         unused local variable `has_hot_blocks'.
25428         (fix_crossing_conditional_branches): Remove unused local variable
25429         `prev_bb'.
25430
25431 2008-02-25  Uros Bizjak  <ubizjak@gmail.com>
25432
25433         PR middle-end/19984
25434         * builtins.def (BUILT_IN_NAN): Define as c99 builtin
25435         using DEF_C99_BUILTIN.
25436         (BUILT_IN_NANF): Ditto.
25437         (BUILT_IN_NANL): Ditto.
25438
25439 2008-02-25  Ayal Zaks  <zaks@il.ibm.com>
25440             Revital Eres  <eres@il.ibm.com>
25441
25442         * modulo-sched.c (calculate_must_precede_follow): Address TODO
25443         regarding the order of two dependent insns in the same row.
25444
25445 2008-02-25  Eric Botcazou  <ebotcazou@adacore.com>
25446
25447         * stor-layout.c (layout_decl): Do not bump the alignment of a
25448         bit-field to more than byte alignment if it is packed.
25449
25450 2008-02-24  David Edelsohn  <edelsohn@gnu.org>
25451
25452         * config/rs6000/rs6000.c (processor_costs): Add cache costs for
25453         e300c2 and e300c3.
25454
25455 2008-02-24  Diego Novillo  <dnovillo@google.com>
25456
25457         http://gcc.gnu.org/ml/gcc-patches/2008-02/msg01094.html
25458
25459         PR 33738
25460         * tree-vrp.c (vrp_evaluate_conditional): With
25461         -Wtype-limits, emit a warning when comparing against a
25462         constant outside the natural range of OP0's type.
25463         * c.opt (Wtype-limits): Move ...
25464         * common.opt (Wtype-limits): ... here.
25465
25466 2008-02-24  Edmar Wienskoski  <edmar@freescale.com>
25467
25468         * config.gcc (powerpc*-*-*): Add new cores e300c2 and e300c3.
25469         * config/rs6000/e300c2c3.md: New file.
25470         * config/rs6000/rs6000.c (processor_costs): Add new costs for
25471         e300c2 and e300c3.
25472         (rs6000_override_options): Add e300c2 and e300c3 cases to
25473         processor_target_table. Do not allow usage of Altivec or Spe
25474         with e300 cores. Initialize rs6000_cost for e300c2 and e300c3.
25475         (rs6000_issue_rate): Set issue rate for e300c2 and e300c3.
25476         * config/rs6000/rs6000.h (processor_type): Add
25477         PROCESSOR_PPCE300C2 and PROCESSOR_PPCE300C3.
25478         (ASM_CPU_SPEC): Add e300c2 and e300c3.
25479         * config/rs6000/rs6000.md (define_attr "cpu"): Add ppce300c2
25480         and ppce300c3. Include e300c2c3.md.
25481
25482 2008-02-23  David Edelsohn  <edelsohn@gnu.org>
25483
25484         * config/rs6000/rs6000.h (CONSTANT_ALIGNMENT): Use STRICT_ALIGNMENT
25485         instead of TARGET_STRICT_ALIGN.
25486
25487 2008-02-23  Joseph Myers  <joseph@codesourcery.com>
25488
25489         * explow.c (memory_address): Assert that the generated address is
25490         valid.
25491
25492 2008-02-23  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
25493
25494         PR target/25477
25495         * config/darwin-protos.h: Add darwin_patch_builtins prototype.
25496         * config/darwin-ppc-ldouble-patch.def: New file.
25497         * config/rs6000/darwin.h (SUBTARGET_INIT_BUILTINS): New macro.
25498         * config/rs6000/rs6000.c (rs6000_init_builtins): Call
25499         SUBTARGET_INIT_BUILTINS if defined.
25500         * config/darwin.c (darwin_patch_builtin, darwin_patch_builtins):
25501         New functions.
25502
25503 2008-02-23  Andrew Pinski  <andrew_pinski@playstation.sony.com>
25504
25505         PR rtl-opt/33512
25506         * simplify-rtx.c (simplify_binary_operation_1): Add simplification
25507         of (and X (ior (not X) Y) and (and (ior (not X) Y) X).
25508
25509 2008-02-23  Andrew Pinski  <andrew_pinski@playstation.sony.com>
25510
25511         PR pch/35027
25512         * c-pch.c (c_common_valid_pch): Make the "too short to be a PCH
25513         file" warning condtional on -Winvalid-PCH.
25514
25515 2008-02-23  Daniel Jacobowitz  <dan@codesourcery.com>
25516
25517         * expmed.c (extract_bit_field): Always use adjust_address for MEM.
25518
25519 2008-02-23  Uros Bizjak  <ubizjak@gmail.com>
25520
25521         PR target/22076
25522         PR target/34256
25523         * config/i386/mmx.md (*mov<mode>_internal_rex64): Use "!y" to
25524         prevent reload from using MMX registers.
25525         (*mov<mode>_internal): Ditto.
25526         (*movv2sf_internal_rex64): Ditto.
25527         (*movv2sf_internal): Ditto.
25528
25529 2008-02-23  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
25530
25531         PR documentation/31569
25532         * doc/install.texi2html: Use makeinfo --no-number-sections.
25533
25534 2008-02-22  Nathan Froyd  <froydnj@codesourcery.com>
25535
25536         * config/rs6000/rs6000.c (rs6000_legitimize_address): Check to
25537         ensure that we can address an entire entity > 8 bytes.  Don't
25538         generate reg+reg addressing for such data.
25539
25540 2008-02-22  Nathan Froyd  <froydnj@codesourcery.com>
25541
25542         * config/rs6000/rs6000.h (CONSTANT_ALIGNMENT): Don't overalign
25543         strings when optimizing for size, unless the target cares about
25544         alignment.
25545
25546 2008-02-22  Tom Tromey  <tromey@redhat.com>
25547
25548         * regclass.c (current_pass): Remove declaration.
25549
25550 2008-02-22  Anatoly Sokolov <aesok@post.ru>
25551
25552         * config/avr/libgcc.S (__RAMPZ__): Define.
25553         (__do_copy_data): Add for devices with 128KB code memory.
25554
25555 2008-02-22  Nathan Froyd  <froydnj@codesourcery.com>
25556
25557         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
25558         Use spe_abi.
25559         * config/rs6000/eabispe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Likewise.
25560
25561 2008-02-22  Hans-Peter Nilsson  <hp@axis.com>
25562
25563         * config/cris/cris.h (REG_CLASS_FROM_LETTER): Recognize 'b' for
25564         GENNONACR_REGS.
25565
25566 2008-02-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
25567
25568         PR c/19999
25569         * c-typeck.c (build_binary_op): Warn about floating point
25570         comparisons if FLOAT_TYPE_P, not only for REAL_TYPE.
25571
25572 2008-02-21  Janis Johnson  <janis187@us.ibm.com>
25573
25574         PR target/34526
25575         * config/rs6000/rs6000.c (rs6000_altivec_abi): Clarify comment.
25576         (rs6000_explicit_options): Split abi into spe_abi and altivec_abi,
25577         add vrsave.
25578         (rs6000_override_options): Set altivec_abi as default, not override,
25579         for 64-bit GNU/Linux; for 32-bit GNU/Linux default to altivec_abi for
25580         TARGET_ALTIVEC; default to TARGET_ALTIVEC_VRSAVE when AltiVec ABI
25581         is used; use new member spe_abi.
25582         (rs6000_handle_option): Set rs6000_explicit_options.vrsave; use
25583         spe_abi and altivec_abi.
25584
25585 2008-02-22  Tomas Bily  <tbily@suse.cz>
25586
25587         * tree-vectorizer.c (vect_is_simple_reduction): Fix comment typo.
25588
25589 2008-02-21  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
25590
25591         PR bootstrap/35273
25592         * config.build (build_file_translate): Set to `CMD //c' only if
25593         it works.
25594         * Makefile.in (build_file_translate): Improve comment.
25595
25596 2008-02-21  Jan Hubicka  <jh@suse.cz>
25597
25598         * predict.def (PRED_TREE_OPCODE_POSITIVE, PRED_TREE_OPCODE_NONEQUAL,
25599         PRED_TREE_OPCODE_POSITIVE, PRED_TREE_OPCODE_NONEQUAL, PRED_CALL,
25600         PRED_TREE_EARLY_RETURN, PRED_NULL_RETURN): Update.
25601
25602 2008-02-21  Michael Matz  <matz@suse.de>
25603
25604         PR target/35264
25605         * config/i386/i386.c (ix86_expand_branch): Add missing breaks.
25606
25607 2008-02-21  Uros Bizjak  <ubizjak@gmail.com>
25608
25609         * config/i386/i386.md (mov<mode>cc): Macroize expander from movsfcc,
25610         movdfcc and movxfcc using X87MODEF mode iterator and SSE_FLOAT_MODE_P
25611         as insn constraint.
25612         * config/i386/sse.md (<sse>_movup<ssemodesuffixf2c>): Macroize insn
25613         from sse_movups adn sse2_movupd using SSEMODEF2P mode iterator and
25614         SSE_VEC_FLOAT_MODE_P as insn constraint.
25615         (<sse>_movmskp<ssemodesuffixf2c>): Ditto from similar patterns.
25616         (sse4a_movnt<mode>): Macroize insn from sse4a_movntsf and
25617         sse4a_movntdf using MODEF mode iterator.
25618         (sse4a_vmmovnt<mode>): Macroize insn form sse4a_vmmovntv2df and
25619         sse4a_vmmovntv4sf using SSEMODEF2P mode iterator.
25620         (sse4_1_blendp<ssemodesuffixf2c>): Ditto from similar patterns.
25621         (sse4_1_blendvp<ssemodesuffixf2c>): Ditto.
25622         (sse4_1_dpp<ssemodesuffixf2c>): Ditto.
25623         (sse4_1_roundp<ssemodesuffixf2c>): Ditto.
25624         (sse4_1_rounds<ssemodesuffixf2c>): Ditto.
25625
25626 2008-02-21  Richard Guenther  <rguenther@suse.de>
25627
25628         * tree.def (PAREN_EXPR): New tree code.
25629         * fold-const.c (fold_unary): Remove PAREN_EXPR around constants
25630         and PAREN_EXPR.
25631         * tree-pretty-print.c (dump_generic_node): Handle PAREN_EXPR.
25632         * expr.c (expand_expr_real_1): Likewise.
25633         * tree-inline.c (estimate_num_insns_1): Likewise.
25634         * tree-complex.c (expand_complex_move): Likewise.
25635         * tree-vectorizer.c (vect_is_simple_use): Treat PAREN_EXPR (x)
25636         as plain x.
25637
25638 2008-02-20  Kaz Kojima  <kkojima@gcc.gnu.org>
25639
25640         PR target/35225
25641         * config/sh/sh.c (find_barrier): Don't go past 'from' argument.
25642
25643 2008-02-20  Kaz Kojima  <kkojima@gcc.gnu.org>
25644
25645         PR target/35190
25646         * config/sh/sh.md (jump_compact): Disable for crossing jumps.
25647
25648         * config/sh/sh.c (find_barrier): Don't go past
25649         NOTE_INSN_SWITCH_TEXT_SECTIONS note.
25650
25651 2008-02-20  DJ Delorie  <dj@redhat.com>
25652
25653         * config/h8300/h8300.md (insv): Force source operand to be a register.
25654
25655         * config/h8300/h8300.c (h8300_expand_epilogue): Emit return insn
25656         as a jump, not as a plain insn.
25657
25658 2008-02-20  Seongbae Park <seongbae.park@gmail.com>
25659
25660         * doc/invoke.texi (Warning Options): Add new option
25661         -Wframe-larger-than=.
25662         (-Wframe-larger-than): Document.
25663
25664         * flags.h (warn_frame_larger_than, frame_larger_than_size):
25665         Add declarations for new option variables.
25666
25667         * final.c (final_start_function): Check the frame size
25668         before emission and issue a Wframe-larger-than warning.
25669
25670         * opts.c (warn_frame_larger_than, frame_larger_than_size):
25671         Add definitions for new option variables.
25672         (common_handle_option): Handle new option OPT_Wframe_larger_than_.
25673
25674         * common.opt (Wframe-larger-than=): New option.
25675
25676 2008-02-20  Uros Bizjak  <ubizjak@gmail.com>
25677
25678         * config/i386/sse.md (<sse>_vmmul<mode>3): Fix typo in asm template.
25679         (<sse>_div<mode>3): Ditto.
25680         (<sse>_vmdiv<mode>3): Ditto.
25681         (<sse>_vmsqrt<mode>2): Ditto.
25682         (*smax<mode>3): Ditto.
25683         (sse5_frcz<mode>2): Ditto.
25684         (sse5_vmfrcz<mode>2): Ditto.  Use TARGET_SSE5 instead of TARGET_ROUND
25685         as insn constraint.
25686
25687 2008-02-20  Richard Guenther  <rguenther@suse.de>
25688
25689         PR middle-end/35265
25690         * builtins.c (validate_arg): If we want an INTEGER_TYPE,
25691         be happy with INTEGRAL_TYPE_P.
25692
25693 2008-02-20  Richard Guenther  <rguenther@suse.de>
25694
25695         * fold-const.c (split_tree): Associate floatig-point expressions
25696         if flag_associative_math is set.
25697
25698 2008-02-20  Richard Guenther  <rguenther@suse.de>
25699
25700         * tree.h (fold_real_zero_addition_p): Declare.
25701         * fold-const.c (fold_real_zero_addition_p): Export.
25702         * tree-ssa-reassoc.c (eliminate_using_constants): Also handle
25703         floating-point operations with zero and one.
25704
25705 2008-02-20  Paolo Bonzini  <bonzini@gnu.org>
25706
25707         * doc/install.texi: Correct references to CFLAGS, replacing them
25708         with BOOT_CFLAGS.  Document flags used during bootstrap for
25709         target libraries.
25710
25711 2008-02-20  Uros Bizjak  <ubizjak@gmail.com>
25712
25713         * config/i386/i386.h (SSE_VEC_FLOAT_MODE_P): New define.
25714         * config/i386/i386.md (*sse_setcc<mode>): Macroize from *sse_setccsf
25715         and *sse_setccdf using MODEF mode iterator and SSE_FLOAT_MODE_P as
25716         insn constraint.
25717         (smin<mode>3): Ditto from similar patterns.
25718         (smax<mode>3): Ditto.
25719         (*ieee_smin<mode>3): Ditto.
25720         (*ieee_smax<mode>3): Ditto.
25721         * config/i386/sse.md (sse): New mode attribute.
25722         (mov<mode>): Macroize expander from movv4sf and movv2df using
25723         SSEMODEF2P mode iterator.
25724         (<sse>_movnt<mode>): Ditto from similar patterns. Use
25725         SSE_VEC_FLOAT_MODE_P as insn constraint.
25726         (storent<mode>): Ditto.
25727         (storent<mode>): Macroize expander from storentsf and storentdf using
25728         MODEF mode iterator.
25729         (neg<mode>2): Macroize from negv4sf2 and negv2df2 using SSEMODEF2P
25730         mode iterator and SSE_VEC_FLOAT_MODE_P as insn constraint.
25731         (abs<mode>2): Ditto from similar patterns.
25732         (add<mode>3, *add<mode>3, <sse>_vmadd<mode>3): Ditto.
25733         (sub<mode>3, *sub<mode>3, <sse>_vmsub<mode>3): Ditto.
25734         (<sse>_div<mode>3, <sse>_vmdiv<mode>3): Ditto.
25735         (<sse>_vmsqrt<mode>2): Ditto.
25736         (smin<mode>3, *smin<mode>3_finite, *smin<mode>3)
25737         (<sse>_vmsmin<mode>3, *ieee_smin<mode>3): Ditto.
25738         (smax<mode>3, *smax<mode>3_finite, *smax<mode>3)
25739         (<sse>_vmsmax<mode>3, *ieee_smax<mode>3): Ditto.
25740         (<sse>_maskcmp<mode>3): Macroize from sse_maskcmpv4sf3,
25741         sse_maskcmpsf3, sse2_maskcmpv2df3 and sse2_maskcmpdf3 using SSEMODEF4
25742         mode iterator. Use SSE_FLOAT_MODE_P with SSE_VEC_FLOAT_MODE_P as
25743         insn constraint.
25744         (<sse>_comi): Macroize from sse_comi and sse2_comi using MODEF mode
25745         iterator and SSE_FLOAT_MODE_P as insn constraint.
25746         (<sse>_ucomi): Ditto from similar patterns.
25747         (<sse>_vmmaskcmp<mode>3): Macroize from sse_vmmaskcmpv4sf3 and
25748         sse2_vmmaskcmpv2df3 using SSEMODEF2P mode iterator and
25749         SSE_VEC_FLOAT_MODE_P as insn constraint.
25750         (vcond<mode>): Ditto from similar patterns.
25751         (and<mode>3, *and<mode>3): Ditto.
25752         (<sse>_nand<mode>3): Ditto.
25753         (ior<mode>3, *ior<mode>3): Ditto.
25754         (xor<mode>3, *xor<mode>3): Ditto.
25755         (*and<mode>3): Macroize from *andsf3 and *anddf3 using MODEF mode
25756         iterator and SSE_FLOAT_MODE_P as insn constraint.
25757         (*nand<mode>3): Ditto from similar patterns.
25758         (*ior<mode>3): Ditto.
25759         (*xor<mode>3): Ditto.
25760
25761 2008-02-20  Ira Rosen  <irar@il.ibm.com>
25762
25763         * config/spu/spu.md (vec_unpacku_hi_v8hi, vec_unpacku_lo_v8hi,
25764         vec_unpacks_hi_v8hi, vec_unpacks_lo_v8hi, vec_unpacku_hi_v16qi,
25765         vec_unpacku_lo_v16qi, vec_unpacks_lo_v16qi): Implement.
25766
25767 2008-02-19  Jan Hubicka  <jh@suse.cz>
25768
25769         * predict.c (tree_bb_level_predictions): Remove variable next
25770         mistakely introduced by previous commit.
25771
25772 2008-02-19  Jan Hubicka  <jh@suse.cz>
25773
25774         * predict.c (predict_paths_leading_to): Rewrite.
25775         (predict_paths_for_bb): New.
25776         (tree_bb_level_predictions): Update call of predict_paths_leading_to.
25777
25778 2008-02-19  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
25779
25780         PR bootstrap/35218
25781         * Makefile.in (build_file_translate): New.
25782         (gcc-vers.texi): Use it for translating $(abs_srcdir).
25783         * config.build (build_file_translate): Set to `CMD //c' on MinGW.
25784         * configure.ac (build_file_translate): Substitute it.
25785         * configure: Regenerate.
25786
25787 2008-02-19  Jan Hubicka  <jh@suse.cz>
25788
25789         PR rtl-optimization/34408
25790         * see.c (see_def_extension_not_merged): Copy subreg so we don't have
25791         invalid sharing.
25792
25793 2008-02-19  Jan Hubicka  <jh@suse.cz>
25794
25795         PR middle-end/28779
25796         * tree-inline.c (estimate_num_insns_1): Fix counting of cost of
25797         call_expr.
25798
25799 2008-02-19  H.J. Lu  <hongjiu.lu@intel.com>
25800
25801         PR Ada/35186
25802         * config/i386/i386-modes.def: Revert the last DI alignment
25803         change until Ada people can look into it.
25804
25805 2008-02-19  Nick Clifton  <nickc@redhat.com>
25806
25807         * opts.c (print_specific_help): Fix typo in --help text.
25808
25809 2008-02-19  Jakub Jelinek  <jakub@redhat.com>
25810
25811         PR target/35239
25812         * config/i386/cpuid.h (__cpuid, __get_cpuid_max): Use special
25813         32-bit inline asm without asm alternatives for host GCC < 3.0.
25814
25815 2008-02-19  Richard Guenther  <rguenther@suse.de>
25816
25817         PR tree-optimization/34989
25818         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Re-structure.
25819         Allow propagation to INDIRECT_REF if we can simplify only.
25820
25821 2008-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25822
25823         * c-common.c (warn_for_collisions_1): Use appropriate option when
25824         warning.
25825
25826 2008-02-19  Nick Clifton  <nickc@redhat.com>
25827
25828         PR other/31349
25829         * opts.c (undocumented_msg): Leave blank unless checking is enabled.
25830         (handle_options): Fix indentation.
25831         (print_filtered_help): If no language-specific options were
25832         displayed tell the user how to list all the options supported by
25833         the language's front-end.
25834         (print_specific_help): Fix indentation and remove duplicate line.
25835         (common_handle_option): Handle the -v option.
25836         For --help enable the display of undocumented options if the -v
25837         switch has been included on the command line.
25838         For --help= check for overlaps in the arguments between the option
25839         classes and the language names and issue a warning when they
25840         cannot be disambiguated.
25841         * c.opt (v): Pass on to the common option handler.
25842
25843 2008-02-19  Revital Eres  <eres@il.ibm.com>
25844
25845         * modulo-sched.c (sms_schedule): Change dump message when
25846         create_ddg function fails.
25847         (try_scheduling_node_in_cycle): Rename row to cycle.
25848         (print_partial_schedule): Rename CYCLE to ROW.
25849
25850 2008-02-19  Christian Bruel  <christian.bruel@st.com>
25851             Zdenek Dvorak  <ook@ucw.cz>
25852
25853         * tree-ssa-loop-ivopts.c (may_be_unaligned_p): Check step alignment.
25854
25855 2008-02-19  Uros Bizjak  <ubizjak@gmail.com>
25856
25857         PR target/33555
25858         * config/i386/i386.md (*x86_movsicc_0_m1_se): New insn pattern.
25859         (*x86_movdicc_0_m1_se): Ditto.
25860
25861 2008-02-19  Uros Bizjak  <ubizjak@gmail.com>
25862
25863         * config/i386/sfp-machine.h (__gcc_CMPtype): New typedef.
25864         (CMPtype): Define as __gcc_CMPtype.
25865         * config/rs6000/sfp-machine.h (__gcc_CMPtype): New typedef.
25866         (CMPtype): Define as __gcc_CMPtype.
25867
25868 2008-02-19  Hans-Peter Nilsson  <hp@axis.com>
25869
25870         Support valgrind 3.3 for --enable-checking=valgrind.
25871         * system.h: Consolidate ENABLE_VALGRIND_CHECKING-dependent defines
25872         here.
25873         [!VALGRIND_MAKE_MEM_NOACCESS]: Define as VALGRIND_MAKE_NOACCESS.
25874         [!VALGRIND_MAKE_MEM_DEFINED]: Define as VALGRIND_MAKE_READABLE.
25875         [!VALGRIND_MAKE_MEM_UNDEFINED]: Define as VALGRIND_MAKE_WRITABLE.
25876         * ggc-common.c: Remove ENABLE_VALGRIND_CHECKING-dependent defines.
25877         Replace use of VALGRIND_MAKE_READABLE, VALGRIND_MAKE_WRITABLE, and
25878         VALGRIND_MAKE_NOACCESS with VALGRIND_MAKE_MEM_DEFINED,
25879         VALGRIND_MAKE_MEM_UNDEFINED, and VALGRIND_MAKE_MEM_NOACCESS
25880         respectively.
25881         * ggc-zone.c: Similar.
25882         * ggc-page.c: Similar.
25883
25884 2008-02-19  Paul Brook  <paul@codesourcery.com>
25885
25886         PR target/35071
25887         * config/arm/ieee754-df.S: Fix do_it typo.
25888         * config/arm/ieee754-sf.S: Fix do_it typo.
25889
25890 2008-02-18  H.J. Lu  <hongjiu.lu@intel.com>
25891
25892         PR target/35189
25893         * config/i386/i386.c (OPTION_MASK_ISA_MMX_SET): New.
25894         (OPTION_MASK_ISA_3DNOW_SET): Likewise.
25895         (OPTION_MASK_ISA_SSE_SET): Likewise.
25896         (OPTION_MASK_ISA_SSE2_SET): Likewise.
25897         (OPTION_MASK_ISA_SSE3_SET): Likewise.
25898         (OPTION_MASK_ISA_SSSE3_SET): Likewise.
25899         (OPTION_MASK_ISA_SSE4_1_SET): Likewise.
25900         (OPTION_MASK_ISA_SSE4_2_SET): Likewise.
25901         (OPTION_MASK_ISA_SSE4_SET): Likewise.
25902         (OPTION_MASK_ISA_SSE4A_SET): Likewise.
25903         (OPTION_MASK_ISA_SSE5_SET): Likewise.
25904         (OPTION_MASK_ISA_3DNOW_A_UNSET): Likewise.
25905         (OPTION_MASK_ISA_MMX_UNSET): Updated.
25906         (OPTION_MASK_ISA_3DNOW_UNSET): Updated.
25907         (OPTION_MASK_ISA_SSE_UNSET): Likewise.
25908         (OPTION_MASK_ISA_SSE3_UNSET): Likewise.
25909         (OPTION_MASK_ISA_SSSE3_UNSET): Likewise.
25910         (OPTION_MASK_ISA_SSE4_1_UNSET): Likewise.
25911         (OPTION_MASK_ISA_SSE4_2_UNSET): Likewise.
25912         (OPTION_MASK_ISA_SSE4A_UNSET): Likewise.
25913         (OPTION_MASK_ISA_SSE5_UNSET): Likewise.
25914         (OPTION_MASK_ISA_SSE4): Removed.
25915         (ix86_handle_option): Turn on bits in ix86_isa_flags and
25916         ix86_isa_flags_explicit with OPTION_MASK_ISA_XXX_SET for -mXXX.
25917         (override_options): Don't turn on implied SSE/MMX bits in
25918         ix86_isa_flags.
25919
25920 2008-02-18  H.J. Lu  <hongjiu.lu@intel.com>
25921
25922         * config/i386/i386-modes.def: Use 4 byte alignment on DI for
25923         32bit host.
25924
25925 2008-02-18  Joey Ye  <joey.ye@intel.com>
25926
25927         PR middle-end/34921
25928         * tree-nested.c (insert_field_into_struct): Set type alignment
25929         to field alignment if the former is less than the latter.
25930
25931 2008-02-18  Jakub Jelinek  <jakub@redhat.com>
25932
25933         * BASE-VER: Set to 4.4.0.
25934
25935 2008-02-17 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
25936
25937         * doc/c-tree.texi: Use @dots{} and @enddots{} where appropriate.
25938         * doc/cfg.texi: Likewise.
25939         * doc/extend.texi: Likewise.
25940         * doc/gty.texi: Likewise.
25941         * doc/invoke.texi: Likewise.
25942         * doc/loop.texi: Likewise.
25943         * doc/md.texi: Likewise.
25944         * doc/passes.texi: Likewise.
25945         * doc/rtl.texi: Likewise.
25946         * doc/sourcebuild.texi: Likewise.
25947         * doc/tm.texi: Likewise.
25948         * doc/tree-ssa.texi: Likewise.
25949
25950 2008-02-17  Richard Guenther  <rguenther@suse.de>
25951
25952         PR middle-end/35227
25953         * tree-complex.c (init_parameter_lattice_values): Handle parameters
25954         without default definition.
25955
25956 2008-02-17  Richard Guenther  <rguenther@suse.de>
25957
25958         PR tree-optimization/35231
25959         * tree-vrp.c (register_edge_assert_for): Do not assume A == 0
25960         if A | B != 1.
25961
25962 2008-02-17  Uros Bizjak  <ubizjak@gmail.com>
25963
25964         Revert:
25965         2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
25966         * config/i386/sfp-machine.h (CMPtype): Define as typedef using
25967         libgcc_cmp_return mode.
25968
25969 2008-02-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25970
25971         PR c/28368
25972         * doc/invoke.texi (-std): Clarify description of -std= and -ansi.
25973
25974 2008-02-16  Ralf Corsepius  <ralf.corsepius@rtems.org>
25975
25976         * config/m68k/t-rtems (M68K_MLIB_CPU): Add 5208, 5307, 5407, 5475
25977         multilibs.
25978
25979 2008-02-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
25980
25981         * doc/c-tree.texi: Use `@.' where appropriate.
25982         * doc/extend.texi: Likewise.
25983         * doc/install.texi: Likewise.
25984         * doc/invoke.texi: Likewise.
25985         * doc/loop.texi: Likewise.
25986         * doc/makefile.texi: Likewise.
25987         * doc/md.texi: Likewise.
25988         * doc/passes.texi: Likewise.
25989         * doc/standards.texi: Likewise.
25990         * doc/tm.texi: Likewise.
25991
25992 2008-02-15  Jakub Jelinek  <jakub@redhat.com>
25993
25994         PR middle-end/35196
25995         * omp-low.c (expand_omp_for_generic): Don't initialize fd->v
25996         in entry_bb.
25997         (expand_omp_for_static_nochunk): Initialize fd->v in seq_start_bb
25998         rather than in entry_bb.
25999
26000 2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
26001
26002         * config/i386/sfp-machine.h (CMPtype): Define as typedef using
26003         libgcc_cmp_return mode.
26004
26005 2008-02-15  Jakub Jelinek  <jakub@redhat.com>
26006
26007         PR middle-end/35130
26008         * tree-nested.c (convert_call_expr): Put FRAME.* vars into
26009         OMP_CLAUSE_SHARED rather than OMP_CLAUSE_FIRSTPRIVATE clause.
26010
26011 2008-02-15  Richard Guenther  <rguenther@suse.de>
26012             Zdenek Dvorak  <ook@ucw.cz>
26013
26014         PR tree-optimization/35164
26015         * tree-flow.h (stmt_references_abnormal_ssa_name): Declare.
26016         * tree-dfa.c (stmt_references_abnormal_ssa_name): New function.
26017         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
26018         Only propagate addresses which do not have abnormal SSA_NAMEs
26019         in their operands.
26020
26021 2008-02-15  Joseph Myers  <joseph@codesourcery.com>
26022
26023         PR target/35088
26024         * config/m68k/m68k.h (DWARF_CIE_DATA_ALIGNMENT): Define.
26025
26026 2008-02-15  Jan Hubicka  <jh@suse.cz>
26027
26028         PR middle-end/35149
26029         * ipa.c (cgraph_remove_unreachable_nodes): Clear local.inlinable flag.
26030
26031 2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
26032
26033         PR middle-end/34621
26034         * function.c (pad_to_arg_alignment): Remove test for STACK_BOUNDARY
26035         when calculating alignment_pad.
26036
26037 2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
26038
26039         * config/i386/i386.h (CLEAR_RATIO): Use MIN macro.
26040         (WIDEST_HARDWARE_FP_SIZE): Use LONG_DOUBLE_TYPE_SIZE define.
26041         * config/i386/darwin.h (PREFERRED_STACK_BOUNDARY): Use MAX macro
26042         and STACK_BOUNDARY define.
26043
26044 2008-02-14  Danny Smith  <dannysmith@users.sourceforge.net>
26045
26046         PR preprocessor/35061
26047         * c-pragma.c (handle_pragma_pop_macro): Check that
26048         pushed_macro_table has been allocated.
26049
26050 2008-02-14  Eric Botcazou  <ebotcazou@adacore.com>
26051
26052         PR middle-end/35136
26053         * gimplify.c (force_gimple_operand_bsi): Revert 2008-02-12 change.
26054         (force_gimple_operand): Likewise.
26055         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Add new cases
26056         for TARGET_MEM_REF and CONVERT_EXPR/NON_LVALUE_EXPR/NOP_EXPR.
26057         Also recurse on the operand for regular VIEW_CONVERT_EXPRs.
26058         (find_interesting_uses_address): Check addressability and alignment
26059         of the base expression only after substituting bases of IVs into it.
26060
26061 2008-02-14  Michael Matz  <matz@suse.de>
26062
26063         PR target/34930
26064         * function.c (instantiate_virtual_regs_in_insn): Reload address
26065         before falling back to reloading the whole operand.
26066
26067 2008-02-14  Andreas Krebbel  <krebbel1@de.ibm.com>
26068
26069         * config/s390/s390.c (s390_mainpool_start): Emit the pool
26070         before the first section switch note.
26071
26072 2008-02-14 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
26073
26074         * doc/bugreport.texi: Update copyright years.
26075         * doc/c-tree.texi: Likewise.
26076         * doc/cfg.texi: Likewise.
26077         * doc/cpp.texi: Likewise.
26078         * doc/cppinternals.texi: Likewise.
26079         * doc/fragments.texi: Likewise.
26080         * doc/frontends.texi: Likewise.
26081         * doc/gcc.texi: Likewise.
26082         * doc/gty.texi: Likewise.
26083         * doc/hostconfig.texi: Likewise.
26084         * doc/implement-c.texi: Likewise.
26085         * doc/libgcc.texi: Likewise.
26086         * doc/loop.texi: Likewise.
26087         * doc/makefile.texi: Likewise.
26088         * doc/options.texi: Likewise.
26089         * doc/passes.texi: Likewise.
26090         * doc/rtl.texi: Likewise.
26091         * doc/sourcebuild.texi: Likewise.
26092         * doc/standards.texi: Likewise.
26093         * doc/tree-ssa.texi: Likewise.
26094         * doc/trouble.texi: Likewise.
26095
26096         * doc/extend.texi: Use @: or add comma where appropriate.
26097         * doc/invoke.texi: Likewise.
26098         * doc/tm.texi: Likewise.
26099
26100 2008-02-14  Alan Modra  <amodra@bigpond.net.au>
26101
26102         PR target/34393
26103         * config/rs6000/rs6000.md (restore_stack_block): Force operands[1]
26104         to a reg.
26105
26106 2008-02-14  Jesper Nilsson  <jesper.nilsson@axis.com>
26107
26108         * doc/md.texi (clz, ctz): Add reference.
26109         * doc/rtl.texi (clz, ctz): Likewise.
26110
26111 2008-02-13  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
26112
26113         PR other/35148
26114         * Makefile.in (gcc-vers.texi): Use abs_srcdir for the value of
26115         srcdir.
26116
26117 2008-02-13  Andreas Krebbel  <krebbel1@de.ibm.com>
26118
26119         * config/s390/s390.c (struct constant_pool): New field
26120         emit_pool_after added.
26121         (s390_mainpool_start): Set the emit_pool_after flag according
26122         to the section switch notes.
26123         (s390_mainpool_finish): Consider emit_pool_after when emitting
26124         the literal pool at the end of the function.
26125         (s390_chunkify_start): Force literal pool splits at section
26126         switch notes.
26127
26128 2008-02-13  Michael Matz  <matz@suse.de>
26129
26130         PR debug/35065
26131         * var-tracking.c (clobber_variable_part): Correctly traverse the
26132         list.
26133
26134 2008-02-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26135
26136         PR 29673
26137         * doc/invoke.texi (Debugging Options): Remove -fdump-tree-inlined.
26138         Add -fdump-ipa-inline.
26139         * tree-dump.c (dump_files): Remove tree-inlined dump.
26140         * tree-pass.h (tree_dump_index): Remove TDI_inlined.
26141
26142 2008-02-12  Richard Guenther  <rguenther@suse.de>
26143
26144         PR tree-optimization/35171
26145         * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Deal with
26146         default defs.
26147
26148 2008-02-12  Richard Guenther  <rguenther@suse.de>
26149
26150         PR middle-end/35163
26151         * fold-const.c (fold_widened_comparison): Use get_unwidened in
26152         value-preserving mode.  Disallow final truncation.
26153
26154 2008-02-12  Eric Botcazou  <ebotcazou@adacore.com>
26155
26156         PR middle-end/35136
26157         * gimplify.c (force_gimple_operand_bsi): Move SSA renaming
26158         code from here to...
26159         (force_gimple_operand): ...here.
26160
26161 2008-02-12  Jakub Jelinek  <jakub@redhat.com>
26162
26163         PR c++/35144
26164         * tree-sra.c (sra_build_assignment): fold_convert SRC if copying
26165         non-compatible pointers.
26166         (generate_element_copy): If SRC and DST are RECORD_TYPEs with
26167         different FIELD_DECLs, try harder by comparing field offsets, sizes
26168         and types.
26169
26170         PR inline-asm/35160
26171         * function.c (match_asm_constraints_1): Don't replace the same input
26172         multiple times.
26173
26174 2008-02-12  Anatoly Sokolov <aesok@post.ru>
26175
26176         * config/avr/avr.h (AVR_HAVE_RAMPZ): Define.
26177         * config/avr/avr.c (expand_prologue): Save RAMPZ register.
26178         (expand_epilogue): Restore RAMPZ register.
26179         * config/avr/avr.md (RAMPZ_ADDR): New constant.
26180
26181 2008-02-11  Kai Tietz  <kai.tietz@onevision.com>
26182
26183         * config/i386/cygwin.asm: (__alloca): Correct calling
26184         convention and alignment.
26185         (__chkstk): Force 8 byte stack alignment.
26186
26187 2008-02-11  Uros Bizjak  <ubizjak@gmail.com>
26188             Richard Guenther  <rguenther@suse.de>
26189
26190         PR tree-optimization/33992
26191         * tree-ssa-loop-im.c (rewrite_bittest): Fixup the type of
26192         the zero we compare against.
26193
26194 2008-02-10  Danny Smith  <dannysmith@users.sourceforge.net>
26195
26196         PR libfortran/35063
26197         * gthr-win32.h (__gthread_mutex_destroy_function): New function
26198         to CloseHandle after unlocking to prevent accumulation of handle
26199         count.
26200
26201 2008-02-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
26202
26203         PR middle_end/34150
26204         * pa.c (legitimize_pic_address): Add REG_EQUAL note on sets with a
26205         pic_label_operand source.  Similarly, add a REG_LABEL_OPERAND note
26206         and update LABEL_NUSES during and after reload.
26207
26208 2008-02-08  Steven Bosscher  <stevenb.gcc@gmail.com>
26209
26210         PR middle-end/34627
26211         * combine.c (simplify_if_then_else): Make sure the comparison is
26212         against const0_rtx when simplifying to (abs x) or (neg (abs X)).
26213
26214 2008-02-08  Richard Sandiford  <rsandifo@nildram.co.uk>
26215
26216         PR bootstrap/35051
26217         * double-int.h: Don't include gmp.h for GENERATOR_FILEs.
26218         (mpz_set_double_int, mpz_get_double_int): Hide from GENERATOR_FILEs.
26219         * real.h: Don't include gmp.h or mpfr.h for GENERATOR_FILEs.
26220         (real_from_mpfr, mpfr_from_real): Hide from GENERATOR_FILEs.
26221         * tree.h (get_type_static_bounds): Likewise.
26222
26223 2008-02-08  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
26224
26225         * doc/invoke.texi (Option Summary, C++ Dialect Options)
26226         (Objective-C and Objective-C++ Dialect Options, Warning Options):
26227         Make -Wfoo language annotations match what the compiler outputs.
26228
26229 2008-02-08  Sa Liu  <saliu@de.ibm.com>
26230
26231         * config/spu/spu-builtins.def: Fixed wrong parameter type in spu
26232         intrinsics spu_convts, spu_convtu, spu_convtf.
26233
26234 2008-02-08  Hans-Peter Nilsson  <hp@axis.com>
26235
26236         * doc/extend.texi (Function Attributes) <noinline>: Mention
26237         asm ("") as method to keep calls.
26238
26239 2008-02-07  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26240
26241         PR other/32754
26242         * doc/options.texi (Options): Replace references to opts.sh with
26243         optc-gen.awk.
26244         * opts-common.c: Likewise.
26245         * optc-gen.awk: Likewise.
26246
26247 2008-02-07  Andreas Krebbel  <krebbel1@de.ibm.com>
26248
26249         * config/s390/s390.h (FUNCTION_ARG_REGNO_P): Fix fprs for 64 bit.
26250
26251 2008-02-07  Richard Henderson  <rth@redhat.com>
26252
26253         PR rtl-opt/33410
26254         * config/alpha/alpha.c (alpha_emit_xfloating_compare): Use an
26255         EXPR_LIST for the REG_EQUAL instead of a comparison with a
26256         funny mode.
26257
26258 2008-02-07  Uros Bizjak  <ubizjak@gmail.com>
26259
26260         PR tree-optimization/35085
26261         * tree-ssa-reassoc.c (rewrite_expr_tree): Enable destructive update
26262         for operand entry oe2 in addition to operand entry oe3 in order to
26263         expose more opportunities for vectorizer sum reduction.
26264
26265 2008-02-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
26266
26267         PR other/35107
26268         * Makefile.in (LIBS): Remove $(GMPLIBS).
26269         (cc1-dummy, cc1): Add $(GMPLIBS).
26270
26271 2008-02-06  Jan Hubicka  <jh@suse.cz>
26272
26273         PR target/23322
26274         * i386.md (moddf_integer): Do not produce partial memory stalls for
26275         targets where it hurts.
26276
26277 2008-02-06  Uros Bizjak  <ubizjak@gmail.com>
26278
26279         PR target/35083
26280         * optabs.c (expand_float): Do not check for decimal modes when
26281         expanding unsigned integer through signed conversion.
26282
26283 2008-02-06  Nick Clifton  <nickc@redhat.com>
26284
26285         * config/stormy16/stormy16.md (eqbranchsi): Replace a match_dup
26286         inside the clobber with a match_operand and duplicated operand
26287         number in the constraint.
26288         (ineqbranchsi): Delete redundant comment.
26289
26290 2008-02-06  Ralf Corsepius  <ralf.corsepius@rtems.org>
26291
26292         * config/arm/rtems-elf.h (TARGET_OS_CPP_BUILTINS): Add
26293         builtin_define ("__USE_INIT_FINI__").
26294         * config/h8300/t-rtems (MULTILIB_OPTION,MULTILIB_DIRNAMES): Add
26295         -msx multilibs.
26296         * gthr-rtems.h: Remove __GTHREAD_MUTEX_INIT.
26297
26298 2008-02-06  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
26299
26300         PR documentation/30330
26301         * doc/invoke.texi (C++ Dialect Options)
26302         (Objective-C and Objective-C++ Dialect Options, Warning Options):
26303         For each warning option -Wfoo that allows -Wno-foo, ensure both
26304         -Wfoo and -Wno-foo are listed in the option index.  Fix index
26305         entry of -Wswitch-default, index -Wnormalized= including the
26306         `=', and -Wlarger-than-@var{len} including @var{len}.
26307
26308 2008-02-05  Uros Bizjak  <ubizjak@gmail.com>
26309
26310         * config/i386/i386.md (floatunssisf2): Use
26311         ix86_expand_convert_uns_sisf_sse also for TARGET_SSE.
26312         (floatunssi<mode>2): Rename from floatunssisf2 and floatunssidf2.
26313         Macroize expander using MODEF mode iterator.
26314
26315 2008-02-05  Diego Novillo  <dnovillo@google.com>
26316
26317         http://gcc.gnu.org/ml/gcc-patches/2008-02/msg00140.html
26318
26319         PR 33738
26320         * tree-vrp.c (vrp_evaluate_conditional): Revert fix for PR 33738.
26321
26322 2008-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
26323
26324         PR other/35070
26325         * toplev.c (print_version): Honor `indent' for GMP/MPFR warnings.
26326
26327 2008-02-05  H.J. Lu  <hongjiu.lu@intel.com>
26328
26329         PR target/35084
26330         * config/i386/i386.c (ix86_function_sseregparm): Add an arg
26331         to indicate if a message should be generated.
26332         (init_cumulative_args): Updated.
26333         (function_value_32): Likewise.
26334
26335 2008-02-05  Joseph Myers  <joseph@codesourcery.com>
26336
26337         * doc/include/texinfo.tex: Update to version 2008-02-04.16.
26338
26339 2008-02-05  Uros Bizjak  <ubizjak@gmail.com>
26340
26341         PR target/35083
26342         * config/i386/i386.md (floatunsisf2): Enable for TARGET_SSE_MATH only.
26343         Call ix86_expand_convert_uns_sisf_sse for TARGET_SSE2.
26344
26345 2008-02-04  Diego Novillo  <dnovillo@google.com>
26346
26347         http://gcc.gnu.org/ml/gcc-patches/2008-02/msg00110.html
26348
26349         PR 33738
26350         * tree-vrp.c (vrp_evaluate_conditional): With
26351         -Wtype-limits, emit a warning when comparing against a
26352         constant outside the natural range of OP0's type.
26353
26354 2008-02-04  Richard Guenther  <rguenther@suse.de>
26355
26356         PR middle-end/33631
26357         * expr.c (count_type_elements): Give for unions instead of
26358         guessing.
26359
26360 2008-02-04  Richard Guenther  <rguenther@suse.de>
26361
26362         PR middle-end/35043
26363         * gimplify.c (gimplify_init_ctor_eval): Convert array indices
26364         to TYPE_DOMAINs base type instead of using bitsizetype here.
26365
26366 2008-02-03  Jason Merrill  <jason@redhat.com>
26367
26368         * print-tree.c (print_node) [CONSTRUCTOR]: Print elements.
26369
26370 2008-02-04  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
26371
26372         PR other/29972
26373         * doc/invoke.texi (C++ Dialect Options, Optimize Options)
26374         (HPPA Options, i386 and x86-64 Options, IA-64 Options)
26375         (RS/6000 and PowerPC Options): Fix typos and markup.
26376         * doc/passes.texi (Tree-SSA passes): Likewise.
26377
26378 2008-02-02  Michael Matz  <matz@suse.de>
26379
26380         PR target/35045
26381         * postreload-gcse.c (record_last_reg_set_info_regno): Renamed
26382         from record_last_reg_set_info.
26383         (record_last_reg_set_info): Take an RTX argument, iterate over all
26384         constituent hardregs.
26385         (record_last_set_info, record_opr_changes): Change calls to
26386         new signature or to record_last_reg_set_info_regno.
26387
26388 2008-02-02  Gerald Pfeifer  <gerald@pfeifer.com>
26389
26390         * doc/extend.texi (X86 Built-in Functions): Fix grammar.
26391
26392 2008-02-01  Hans-Peter Nilsson  <hp@axis.com>
26393
26394         PR rtl-optimization/34773
26395         * reg-notes.def (EQUAL): Mention significance of combination of
26396         REG_EQUAL and REG_RETVAL.
26397         * fwprop.c (try_fwprop_subst): Don't add REG_EQUAL to an
26398         insn that has a REG_RETVAL.
26399
26400 2008-02-01  Roger Sayle  <roger@eyesopen.com>
26401
26402         PR bootstrap/33781
26403         * configure.ac (--enable-fixed-point): Disable unless explicitly
26404         requested on IRIX.
26405         * configure: Regenerate.
26406
26407 2008-02-01  Richard Guenther  <rguenther@suse.de>
26408
26409         PR other/35042
26410         * invoke.texi (-finline-limit): Remove no longer true parts
26411         of the documentation.  Note that there is no default value.
26412
26413 2008-02-01  Andrew Pinski  <pinskia@gmail.com>
26414             Mark Mitchell  <mark@codesourcery.com>
26415             Ben Elliston  <bje@au.ibm.com>
26416
26417         PR c/29326
26418         * doc/extend.texi (Other Builtins): Document.
26419
26420 2008-01-31  Tom Browder <tom.browder@gmail.com>
26421
26422         * doc/c-tree.texi (Types): Fix grammar.
26423         (Expression trees): Ditto.
26424         * doc/passes.texi (Tree-SSA passes): Ditto.
26425
26426         * doc/configterms.texi (Configure Terms): Fix typo.
26427         * doc/cpp.texi (Common Predefined Macros): Ditto.
26428         * doc/md.texi (Machine Constraints): Ditto.
26429
26430         * doc/makefile.texi (Makefile): Add comma.
26431
26432 2008-01-31  Tom Browder  <tom.browder@gmail.com>
26433             Gerald Pfeifer  <gerald@pfeifer.com>
26434
26435         * doc/sourcebuild.texi (Front End): Remove references to CVS
26436         and CVSROOT/modules.
26437         (Texinfo Manuals): Replace reference to CVS by one to SVN.
26438         (Back End): Remove reference to CVS.
26439
26440 2008-01-31  Richard Sandiford  <rsandifo@nildram.co.uk>
26441
26442         PR target/34900
26443         * config/mips/mips.c (gen_load_const_gp): New function, taking a
26444         comment from...
26445         (mips16_gp_pseudo_reg): ...here.
26446         * config/mips/mips.md (load_const_gp): Replace with...
26447         (load_const_gp_<mode>): ...this :P-based insn.
26448
26449 2008-01-31  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26450
26451         * doc/invoke.texi (-ansi): Mention explicitly corresponding -std=
26452         options. Minor fixes.
26453         (-std): Move reference to standards closer to where language
26454         standards are first mentioned.
26455
26456 2008-01-31  Richard Sandiford  <rsandifo@nildram.co.uk>
26457
26458         PR rtl-optimization/34995
26459         * reload.c (alternative_allows_const_pool_ref): Take an rtx
26460         parameter and return a bool.  If the rtx parameter is nonnull,
26461         check that it satisfies an EXTRA_MEMORY_CONSTRAINT.
26462         (find_reloads): Update call accordingly.  Pass the new operand
26463         if it needed no address reloads, otherwise pass null.
26464
26465 2008-01-30  Richard Henderson  <rth@redhat.com>
26466
26467         PR c/34993
26468         * tree.c (build_type_attribute_qual_variant): Skip TYPE_DOMAIN
26469         for unbounded arrays.
26470
26471 2008-01-30  Silvius Rus  <rus@google.com>
26472
26473         * config/i386/xmmintrin.h (_mm_prefetch): Add const to first arg.
26474
26475 2008-01-30  Jan Hubicka  <jh@suse.cz>
26476
26477         PR target/34982
26478         * i386.c (init_cumulative_args): Use real function declaration when
26479         calling locally.
26480
26481 2008-01-30  Richard Sandiford  <rsandifo@nildram.co.uk>
26482
26483         PR rtl-optimization/34998
26484         * global.c (build_insn_chain): Treat non-subreg_lowpart
26485         SUBREGs of pseudos as clobbering all the words covered by the
26486         SUBREG, not just all the bytes.
26487         * ra-conflict.c (clear_reg_in_live): Likewise.  Take the
26488         original df_ref rather than an extract parameter.
26489         (global_conflicts): Update call accordingly.
26490
26491 2008-01-30  Andreas Krebbel  <krebbel1@de.ibm.com>
26492
26493         * config/s390/fixdfdi.h (__fixunstfdi, __fixtfdi): Rearrange
26494         the overflow check to make it easier to read.
26495         (__fixtfdi): Change the type of the ll member in union
26496         long_double to UDItype_x.
26497
26498 2008-01-30  Jakub Jelinek  <jakub@redhat.com>
26499
26500         PR middle-end/34969
26501         * cgraph.h (cgraph_update_edges_for_call_stmt): New prototype.
26502         * cgraph.c (cgraph_update_edges_for_call_stmt): New function.
26503         * tree-inline.c (fold_marked_statements): Call
26504         cgraph_update_edges_for_call_stmt if folding a call statement.
26505         * cgraphunit.c (verify_cgraph_node): Set cfun to this_cfun for
26506         debug_generic_stmt calls, reset it back afterwards.
26507
26508         PR c/35017
26509         * c-decl.c (start_decl): Don't pedwarn about TREE_READONLY
26510         static decls.
26511         * c-typeck.c (build_external_ref): Don't pedwarn about
26512         static vars in current function's scope.
26513
26514 2008-01-29  Joseph Myers  <joseph@codesourcery.com>
26515
26516         * config.gcc (i[34567]86-*-nto-qnx*): Remove deprecation.
26517
26518 2008-01-29  Bernhard Fischer  <aldot@gcc.gnu.org>
26519
26520         PR c/35002
26521         * ipa-struct-reorg.c: Fix spelling.
26522         * params.def: Ditto.
26523
26524 2008-01-29  Richard Guenther  <rguenther@suse.de>
26525
26526         PR middle-end/35006
26527         * tree-inline.h (struct copy_body_data): Add remapping_type_depth
26528         field.
26529         * tree-inline.c (remap_type): Increment remapping_type_depth
26530         around remapping types.
26531         (copy_body_r): Only add referenced variables if they are referenced
26532         from code, not types.
26533
26534 2008-01-29  Douglas Gregor  <doug.gregor@gmail.com>
26535
26536         PR c++/34055
26537         PR c++/34103
26538         PR c++/34219
26539         PR c++/34606
26540         PR c++/34753
26541         PR c++/34754
26542         PR c++/34755
26543         PR c++/34919
26544         PR c++/34961
26545         * c-pretty-print.c (pp_c_type_qualifier_list): Don't try to print
26546         qualifiers for an ERROR_MARK_NODE or a NULL_TREE.
26547
26548 2008-01-28  Andy Hutchinson   <hutchinsonandy@netscape.net>
26549
26550         PR target/34412
26551         * config/avr/avr.c (expand_prologue): Use correct QI mode frame
26552         pointer for tiny stack.
26553
26554 2008-01-28  Bernhard Fischer  <aldot@gcc.gnu.org>
26555
26556         * doc/tree-ssa.texi: Add cindex PHI nodes and improve wording.
26557
26558 2008-01-28  Bernhard Fischer  <aldot@gcc.gnu.org>
26559
26560         * config/vx-common.h: Fix typo in comment.
26561
26562 2008-01-28  Ian Lance Taylor  <iant@google.com>
26563
26564         PR c++/34862
26565         PR c++/33407
26566         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Don't
26567         coalesce pointers if they have different DECL_NO_TBAA_P values.
26568         * tree-ssa-copy.c (may_propagate_copy): Don't propagate copies
26569         between variables with different DECL_NO_TBAA_P values.
26570
26571 2008-01-28  Nathan Froyd  <froydnj@codesourcery.com>
26572
26573         PR 31535
26574         * config/rs6000/rs6000.c (small_data_operand): Vectors and floats
26575         are not legitimate small data references on SPE targets.
26576
26577 2008-01-28  David Daney  <ddaney@avtrex.com>
26578
26579         * doc/install.texi (mips-*-*): Recommend binutils 2.18.
26580
26581 2008-01-28  David Daney  <ddaney@avtrex.com>
26582
26583         * doc/install.texi (--disable-libgcj-bc):  Reword documentation.
26584
26585 2008-01-27  Joseph Myers  <joseph@codesourcery.com>
26586
26587         * config.gcc (strongarm*-*, ep9312*-*, xscale*-*, parisc*-*,
26588         m680[012]0-*, *-*-beos*, *-*-kaos*, *-*-linux*aout*,
26589         *-*-linux*libc1*, *-*-solaris2.[0-6], *-*-solaris2.[0-6].*,
26590         *-*-sysv*, *-*-windiss*, alpha*-*-unicosmk*, cris-*-aout,
26591         hppa1.1-*-pro*, hppa1.1-*-osf*, hppa1.1-*-bsd*,
26592         i[34567]86-sequent-ptx4*, i[34567]86-*-nto-qnx*,
26593         i[34567]86-*-sco3.2v5*, i[34567]86-*-uwin*, powerpc-*-chorusos*,
26594         vax-*-bsd*, vax-*-ultrix*): Mark obsolete.
26595
26596 2008-01-27  Bernhard Fischer  <aldot@gcc.gnu.org>
26597
26598         * basic-block.h (condjump_equiv_p): Fix comment.
26599
26600 2008-01-27  Bernhard Fischer  <aldot@gcc.gnu.org>
26601
26602         * tree-pretty-print.c (print_generic_decl, print_generic_stmt,
26603         print_generic_stmt_indented): Fix comment.
26604
26605 2008-01-27  Bernhard Fischer  <aldot@gcc.gnu.org>
26606
26607         * configure.ac (__stack_chk_fail): Add detecion for availability
26608         of SSP in uClibc by checking if __UCLIBC_HAS_SSP__ is defined.
26609         * configure: Regenerate.
26610
26611 2008-01-26  Maxim Kuvyrkov  <maxim@codesourcery.com>
26612
26613         PR middle-end/34688
26614         * final.c (output_addr_const): Handle TRUNCATE.
26615
26616 2008-01-26  Zdenek Dvorak  <ook@ucw.cz>
26617
26618         PR target/34711
26619         * tree-ssa-loop-ivopts.c (comp_cost): New type.
26620         (zero_cost, infinite_cost): New constants.
26621         (struct cost_pair): Change type of cost to comp_cost.
26622         (struct iv_ca): Change type of cand_use_cost and cost to comp_cost.
26623         (new_cost, add_costs, sub_costs, compare_costs, infinite_cost_p):
26624         New functions.
26625         (set_use_iv_cost, force_expr_to_var_cost, force_var_cost,
26626         split_address_cost, ptr_difference_cost, difference_cost,
26627         get_computation_cost_at, get_computation_cost,
26628         determine_use_iv_cost_generic, determine_use_iv_cost_address,
26629         determine_use_iv_cost_condition, determine_use_iv_costs,
26630         cheaper_cost_pair, iv_ca_recount_cost, iv_ca_set_no_cp,
26631         iv_ca_set_cp, iv_ca_cost, iv_ca_new, iv_ca_dump, iv_ca_extend,
26632         iv_ca_narrow, iv_ca_prune, try_improve_iv_set, find_optimal_iv_set):
26633         Change type of cost to comp_cost.
26634         (determine_iv_cost): Increase cost of non-original ivs, instead
26635         of decreasing the cost of original ones.
26636         (get_address_cost): Indicate the complexity of the addressing mode
26637         in comp_cost.
26638         (try_add_cand_for): Prefer using ivs not specific to some object.
26639         * tree-flow.h (force_expr_to_var_cost): Declaration removed.
26640
26641 2008-01-26  Peter Bergner  <bergner@vnet.ibm.com>
26642             Janis Johnson  <janis187@us.ibm.com>
26643
26644         PR target/34814
26645         * doc/tm.texi (TARGET_EXPAND_TO_RTL_HOOK): Document.
26646         (TARGET_INSTANTIATE_DECLS): Likewise.
26647         * target.h (expand_to_rtl_hook): New target hook.
26648         (instantiate_decls): Likewise.
26649         * function.c (instantiate_decl): Make non-static.  Rename to...
26650         (instantiate_decl_rtl): ... this.
26651         (instantiate_expr): Use instantiate_decl_rtl.
26652         (instantiate_decls_1): Likewise.
26653         (instantiate_decls): Likewise.
26654         (instantiate_virtual_regs: Call new instantiate_decls taget hook.
26655         * function.h (instantiate_decl_rtl): Add prototype.
26656         * cfgexpand.c (target.h): New include.
26657         (tree_expand_cfg): Call new expand_to_rtl_hook target hook.
26658         * target-def.h (TARGET_EXPAND_TO_RTL_HOOK): New define.
26659         (TARGET_INSTANTIATE_DECLS): Likewise.
26660         (TARGET_INITIALIZER): New target hooks added.
26661         * config/rs6000/rs6000-protos.h (rs6000_secondary_memory_needed_rtx):
26662         New prototype.
26663         * config/rs6000/rs6000.c (tree-flow.h): New include.
26664         (machine_function): Add sdmode_stack_slot field.
26665         (rs6000_alloc_sdmode_stack_slot): New function.
26666         (rs6000_instantiate_decls): Likewise.
26667         (rs6000_secondary_memory_needed_rtx): Likewise.
26668         (rs6000_check_sdmode): Likewise.
26669         (TARGET_EXPAND_TO_RTL_HOOK): Target macro defined.
26670         (TARGET_INSTANTIATE_DECLS): Likewise.
26671         (rs6000_hard_regno_mode_ok): Allow SDmode.
26672         (num_insns_constant): Likewise.  Handle _Decimal32 constants.
26673         (rs6000_emit_move): Handle SDmode.
26674         (function_arg_advance): Likewise.
26675         (function_arg): Likewise.
26676         (rs6000_gimplify_va_arg): Likewise.  Add special handling of
26677         SDmode var args for 32-bit compiles.
26678         (rs6000_secondary_reload_class): Handle SDmode.
26679         (rs6000_output_function_epilogue): Likewise.
26680         (rs6000_function_value): Simplify if statement.
26681         (rs6000_libcall_value): Likewise.
26682         * config/rs6000/rs6000.h (SLOW_UNALIGNED_ACCESS): Handle SDmode.
26683         (SECONDARY_MEMORY_NEEDED_RTX): Add define.
26684         * config/rs6000/dfp.md (movsd): New define_expand and splitter.
26685         (movsd_hardfloat): New define_insn.
26686         (movsd_softfloat): Likewise.
26687         (movsd_store): Likewise.
26688         (movsd_load): Likewise.
26689         (extendsddd2): Likewise.
26690         (extendsdtd2): Likewise.
26691         (truncddsd2): Likewise.
26692         (movdd_hardfloat64): Fixup comment.
26693         (UNSPEC_MOVSD_LOAD): New constant.
26694         (UNSPEC_MOVSD_STORE): Likewise.
26695
26696 2008-01-26  Jakub Jelinek  <jakub@redhat.com>
26697
26698         PR c++/34965
26699         * c-pretty-print.c (pp_c_exclusive_or_expression): Handle
26700         TRUTH_XOR_EXPR.
26701         (pp_c_logical_and_expression): Handle TRUTH_AND_EXPR.
26702         (pp_c_logical_or_expression): Handle TRUTH_OR_EXPR.
26703         (pp_c_expression): Handle TRUTH_AND_EXPR, TRUTH_OR_EXPR
26704         and TRUTH_XOR_EXPR.
26705
26706 2008-01-26  David Edelsohn  <edelsohn@gnu.org>
26707
26708         PR target/34794
26709         * config.gcc: Separate AIX 5.3 from AIX 6.1.
26710         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
26711         __LONGDOUBLE128 too.
26712         * config/rs6000/aix61.h: New file.
26713
26714 2008-01-26  Richard Sandiford  <rsandifo@nildram.co.uk>
26715
26716         PR rtl-optimization/34959
26717         * optabs.c (expand_unop): In libcall notes, give ffs, clz, ctz,
26718         popcount and parity rtxes the same mode as their operand.
26719         Truncate or extend the result to the return value's mode
26720         if necessary.
26721
26722 2008-01-26  Richard Sandiford  <rsandifo@nildram.co.uk>
26723
26724         PR target/34981
26725         * config/mips/mips-protos.h (mips_expand_call): Return an rtx.
26726         * config/mips/mips.h (FIRST_PSEUDO_REGISTER): Rename FAKE_CALL_REGNO
26727         to GOT_VERSION_REGNUM.
26728         (CALL_REALLY_USED_REGISTERS): Set the GOT_VERSION_REGNUM entry to 0.
26729         (EPILOGUE_USES): Include GOT_VERSION_REGNUM if TARGET_USE_GOT.
26730         * config/mips/mips.c (mips_emit_call_insn): New function.
26731         (mips_call_tls_get_addr): Call mips_expand_call directly.
26732         (mips16_copy_fpr_return_value): Use mips_emit_call_insn rather than
26733         emit_call_insn.
26734         (mips16_build_call_stub): Likewise.  Return the call insn or null.
26735         (mips_expand_call): Update the call to mips16_build_call_stub
26736         accordingly and a remove redundant condition.  Assert that MIPS16
26737         stubs do not use lazy binding.  Use mips_emit_call_insn and return
26738         the call insn.
26739         (mips_extra_live_on_entry): Include GOT_VERSION_REGNUM if
26740         TARGET_USE_GOT.
26741         (mips_hard_regno_mode_ok_p): Allow SImode for GOT_VERSION_REGNUM.
26742         (mips_avoid_hazard): Remove hazard_set handling.
26743         * config/mips/mips.md (UNSPEC_EH_RECEIVER): Rename to...
26744         (UNSPEC_RESTORE_GP): ...this.
26745         (UNSPEC_SET_GOT_VERSION, UNSPEC_UPDATE_GOT_VERSION): New constants.
26746         (FAKE_CALL_REGNO): Rename to...
26747         (GOT_VERSION_REGNUM): ...this.
26748         (type): Add "ghost" value.  Add an associated insn reservation.
26749         (hazard_set): Remove.
26750         (exception_receiver): Rename to...
26751         (restore_gp): ...this and update the unspec identifier accordingly.
26752         (exception_receiver, nonlocal_got_receiver): New expanders.
26753         (load_call<mode>): Use GOT_VERSION_REGNUM.  Don't set
26754         FAKE_CALL_REGNO.  Remove hazard_set attribute.
26755         (set_got_version, update_got_version): New patterns.
26756
26757 2008-01-26  Danny Smith  <dannysmith@users.sourceforge.net>
26758
26759         PR target/34970
26760         * config/i386/cygming.h (ASM_OUTPUT_LABELREF): Define.
26761
26762 2008-01-25  Joseph Myers  <joseph@codesourcery.com>
26763
26764         PR other/31955
26765         * doc/install.texi2html: Generate gcc-vers.texi.
26766
26767 2008-01-25  DJ Delorie  <dj@redhat.com>
26768
26769         * config/m32c/m32c.h (ASM_PREFERRED_EH_DATA_FORMAT): Define.
26770
26771 2008-01-25  Joseph Myers  <joseph@codesourcery.com>
26772
26773         * config/c4x: Remove directory.
26774         * config.gcc (crx-*, mt-*): Mark obsolete.
26775         (c4x-*, tic4x-*, c4x-*-rtems*, tic4x-*-rtems*, c4x-*, tic4x-*,
26776         h8300-*-rtemscoff*, ns32k-*-netbsdelf*, ns32k-*-netbsd*,
26777         sh-*-rtemscoff*): Remove cases.
26778         * defaults.h (C4X_FLOAT_FORMAT): Remove.
26779         * real.c (encode_c4x_single, decode_c4x_single,
26780         encode_c4x_extended, decode_c4x_extended, c4x_single_format,
26781         c4x_extended_format): Remove.
26782         * real.h (c4x_single_format, c4x_extended_format): Remove.
26783         * doc/extend.texi (interrupt, naked): Remove mention of attributes
26784         on C4x.
26785         (Pragmas): Remove comment about c4x pragmas.
26786         * doc/install.texi (c4x): Remove target-specific instructions.
26787         * doc/invoke.texi (TMS320C3x/C4x Options): Remove.
26788         * doc/md.texi (Machine Constraints): Remove C4x documentation.
26789         * doc/tm.texi (MEMBER_TYPE_FORCES_BLK, c_register_pragma): Do not
26790         refer to C4x source files as examples.
26791         (C4X_FLOAT_FORMAT): Remove documentation.
26792
26793 2008-01-25  Bernd Schmidt  <bernd.schmidt@analog.com>
26794
26795         * config/bfin/bfin.c (override_options): Reorder tests so that
26796         flag_pic gets enabled for -msep-data.
26797
26798 2008-01-25  Richard Guenther  <rguenther@suse.de>
26799
26800         PR middle-end/32244
26801         * expr.c (expand_expr_real_1): Reduce result of LSHIFT_EXPR
26802         to its bitfield precision if required.
26803
26804 2008-01-25  Jakub Jelinek  <jakub@redhat.com>
26805
26806         PR middle-end/33880
26807         * tree-nested.c (walk_omp_for): New function.
26808         (convert_nonlocal_reference, convert_local_reference): Call
26809         walk_omp_for on OMP_FOR.
26810         (convert_call_expr): Call walk_body on OMP_FOR's
26811         OMP_FOR_PRE_INIT_BODY.
26812
26813 2008-01-25  Richard Guenther  <rguenther@suse.de>
26814
26815         PR tree-optimization/34966
26816         * tree-ssa-math-opts.c (execute_cse_sincos_1): For all but
26817         default defs and PHI_NODEs we have to insert after the
26818         defining statement.
26819
26820 2008-01-24  Nick Clifton  <nickc@redhat.com>
26821
26822         * config/stormy16/stormy16-lib2.c (MIN_UNITS_PER_WORD):
26823         Provide a default definition.
26824         (LIBGCC2_UNITS_PER_WORD): Likewise.
26825
26826         * config/stormy16/stormy16.c: Include df.h for the prototype
26827         for df_regs_ever_live_p.
26828         (xstormy16_expand_builtin_va_start): Convert the stack offset
26829         into a component_ref and then use POINTER_PLUS_EXPR to add it
26830         to the incoming_virtual_args_rtx.
26831         (xstormy16_gimplify_va_arg_expr): Rename to
26832         xstormy16_gimplify_va_arg_expr.
26833         Use POINTER_PLUS_EXPR when performing pointer arithmetic.
26834         (TARGET_GIMPLIFY_VA_ARG_EXPR): Use renamed
26835         xstormy16_gimplify_va_arg_expr.
26836         Fix up some formatting issues.
26837
26838         * config/stormy16/stormy16.c: (xstormy16_carry_plus_operand):
26839         Move to predicates.md.
26840         (xs_hi_general_operand): Likewise.
26841         (xs_hi_nonmemory_operand): Likewise.
26842         * config/stormy16/predicates.md:
26843         (xstormy16_carry_plus_operand): New predicate.
26844         (xs_hi_general_operand): New predicate.
26845         (xs_hi_nonmemory_operand): New predicate.
26846         * config/stormy16/stormy16-protos.h:
26847         (xstormy16_carry_plus_operand): Delete prototype.
26848         (xs_hi_general_operand): Likewise.
26849         (xs_hi_nonmemory_operand): Likewise.
26850
26851         * config/storm16/stormy16.md (addhi3): Remove earlyclobber
26852         modifiers as they are no longer needed and they can trigger
26853         reload spill failures.
26854
26855         * config/storm16/stormy16.md (ineqbranchsi): Replace match_dup
26856         with a match_operand in order to help reload.
26857
26858         * config/storm16/stormy16.md (movhi_internal): Replace 'r'
26859         constraint with 'e' for the 8th alternative as this version of
26860         the mov.w instruction only accepts the lower 8 registers.
26861
26862 2008-01-25  Uros Bizjak  <ubizjak@gmail.com>
26863
26864         PR target/34856
26865         * simplifx-rtx.c (simplify_const_binary_operation) [VEC_CONCAT]:
26866         Consider only CONST_INT, CONST_DOUBLE and CONST_FIXED as constant
26867         vector elements.
26868
26869 2008-01-25  Jakub Jelinek  <jakub@redhat.com>
26870
26871         PR middle-end/33333
26872         * gimplify.c (gimplify_omp_for): Gimplify OMP_FOR_PRE_BODY.
26873
26874 2008-01-25  Golovanevsky Olga  <olga@il.ibm.com>
26875
26876         * ipa-struct-reorg.c (remove_str_allocs_in_func, remove_str_allocs):
26877         New functions.
26878         (remove_structure): Update allocations list before removing structure.
26879
26880 2008-01-25  Golovanevsky Olga  <olga@il.ibm.com>
26881
26882         * ipa-struct-reorg.c (is_safe_cond_expr,
26883         create_new_stmts_for_cond_expr): Use integer_zerop function,
26884         that recognize not only zero-pointer, but zero-integer too.
26885
26886 2008-01-25  Ben Elliston  <bje@au.ibm.com>
26887
26888         PR other/22232
26889         * fixproto: Escape "." in sed expression that strips leading "./".
26890
26891 2008-01-24  H.J. Lu  <hongjiu.lu@intel.com>
26892
26893         PR driver/34904
26894         * gcc.c (SWITCH_OK): Removed.
26895         (SWITCH_LIVE): Changed to bit.
26896         (SWITCH_FALSE): Likewise.
26897         (SWITCH_IGNORE): Likewise.
26898         (switchstr): Change live_cond to unsigned int.
26899         (process_command): Replace SWITCH_OK with 0.
26900         (do_self_spec): Likewise.
26901         (set_collect_gcc_options): Check the SWITCH_IGNORE bit.
26902         (give_switch): Likewise.
26903         (used_arg): Likewise.
26904         (do_spec_1): Set the SWITCH_IGNORE bit.
26905         (check_live_switch): Check both SWITCH_LIVE and SWITCH_FALSE
26906         bits.  Set the SWITCH_LIVE bit.
26907
26908 2008-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
26909
26910         * config/s390/s390.h (MOVE_RATIO): Define new target macro.
26911
26912 2008-01-24  Richard Sandiford  <rsandifo@nildram.co.uk>
26913
26914         PR tree-optimization/34472
26915         * ipa-struct-reorg.c (safe_cond_expr_check): Change the DATA
26916         parameter to a "bool *" and set *DATA to false if there is
26917         an unsafe access.  Do not delete the structure here.
26918         (check_cond_exprs): Delete it here instead.
26919         (check_cond_exprs, exclude_cold_structs): Do not increase
26920         I when removing a structure.
26921
26922 2008-01-24  Uros Bizjak  <ubizjak@gmail.com>
26923
26924         PR target/34856
26925         * config/i386/i386.c (ix86_expand_vector_init): Consider only
26926         CONST_INT, CONST_DOUBLE and CONST_FIXED as constant vector elements.
26927
26928 2008-01-24  Jakub Jakub Jelinek  <jakub@redhat.com>
26929
26930         PR middle-end/34934
26931         * tree-stdarg.c (reachable_at_most_once): Use VEC vector instead of
26932         a fixed vector for stack.
26933
26934 2008-01-24  Ben Elliston  <bje@au.ibm.com>
26935
26936         PR c++/25701
26937         * doc/gcc.texi (Software development): Add a direntry for g++.
26938
26939 2008-01-23  Hans-Peter Nilsson  <hp@axis.com>
26940
26941         * config/cris/cris.h (CC1PLUS_SPEC, OPTIMIZATION_OPTIONS): Drop
26942         stale and straggling -fforce-addr comments above.
26943
26944         * config/cris/cris.h (CRIS_SUBTARGET_VERSION, TARGET_VERSION): Don't
26945         define.
26946         * config/cris/linux.h (CRIS_SUBTARGET_VERSION): Don't define.
26947         * config/cris/aout.h (CRIS_SUBTARGET_VERSION): Don't define.
26948
26949 2008-01-23  Michael Matz  <matz@suse.de>
26950
26951         PR debug/34895
26952         * dwarf2out.c (force_type_die): Use modified_type_die instead of
26953         gen_type_die.
26954
26955 2008-01-23  Andreas Krebbel  <krebbel1@de.ibm.com>
26956
26957         * ipa-struct-reorg.c (create_new_malloc): Use pointer type as
26958         malloc result type.
26959
26960 2008-01-23 Anatoly Sokolov <aesok@post.ru>
26961
26962         * config/avr/avr.c (avr_current_arch): New variable.
26963         (avr_arch_types): Add 'avr31' and 'avr51' entries.
26964         (avr_arch): Add 'ARCH_AVR31' and 'ARCH_AVR51'.
26965         (avr_mcu_types): Add 'avr31' and 'avr51' architectures.
26966         (avr_override_options): Init 'avr_current_arch'.
26967         (base_arch_s): Move from here...
26968         * config/avr/avr.h (base_arch_s): ... here. Add new members
26969         'have_elpm', 'have_elpmx', 'have_eijmp_eicall', 'reserved'. Rename
26970         'mega' to 'have_jmp_call'.
26971         (TARGET_CPU_CPP_BUILTINS): Define "__AVR_HAVE_JMP_CALL__",
26972         "__AVR_HAVE_RAMPZ__", "__AVR_HAVE_ELPM__" and "__AVR_HAVE_ELPMX__"
26973         macros.
26974         (LINK_SPEC, CRT_BINUTILS_SPECS, ASM_SPEC): Add 'avr31' and 'avr51'
26975         architectures.
26976         * config/avr/t-avr (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
26977         MULTILIB_MATCHES): Ditto.
26978
26979 2008-01-23  Richard Guenther  <rguenther@suse.de>
26980
26981         PR middle-end/31529
26982         * cgraphunit.c (cgraph_reset_node): Always mark the node
26983         not reachable if it is not queued already.
26984
26985 2008-01-23  Bernd Schmidt  <bernd.schmidt@analog.com>
26986
26987         * config/bfin/bfin-protos.h (WA_RETS, ENABLE_WA_RETS): New macros.
26988         * config/bfin/bfin.c (bfin_cpus): Add WA_RETS everywhere.
26989         (cputype_selected): New static variable.
26990         (bfin_handle_option): Set it if -mcpu is used.
26991         (override_option): Select default set of workarounds if no cpu type
26992         selected on the command line.
26993         (workaround_rts_anomaly): Only run if ENABLE_WA_RETS.
26994
26995         From  Michael Frysinger  <michael.frysinger@analog.com>
26996         * config/bfin/bfin-protos.h (enum bfin_cpu_type): Add
26997         BFIN_CPU_BF547, BFIN_CPU_BF523, BFIN_CPU_BF524, and BFIN_CPU_BF526.
26998
26999         * config/bfin/elf.h (LIB_SPEC): Use proper linker script
27000         for bf547, bf523, bf524, and bf526.
27001         * config/bfin/bfin.c (bfin_cpus[]): Add bf547,  bf523, bf524, and
27002         bf526.
27003         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
27004         __ADSPBF523__ for bf523, __ADSPBF524__ for bf524,
27005         __ADSPBF526__ for bf526, __ADSPBF52x__ for all three, as well as
27006         __ADSPBF547__ and __ADSPBF54x__ for bf547.
27007         * doc/invoke.texi (Blackfin Options): Document that
27008         -mcpu now accept bf547, bf523, bf524, and bf526.
27009
27010 2008-01-22  Eric Botcazou  <ebotcazou@adacore.com>
27011
27012         PR rtl-optimization/34628
27013         * combine.c (try_combine): Stop and undo after the first combination
27014         if an autoincrement side-effect on the first insn has effectively
27015         been lost.
27016
27017 2008-01-22  David Edelsohn  <edelsohn@gnu.org>
27018
27019         PR target/34529
27020         * config/rs6000/rs6000.c (rs6000_legitimate_offset_address_p):
27021         Offset addresses are not valid for Altivec or paired float modes.
27022
27023 2008-01-22  Jakub Jelinek  <jakub@redhat.com>
27024
27025         PR c++/34607
27026         * c-parser.c (c_parser_omp_for_loop): Don't call c_finish_omp_for
27027         if DECL_INITIAL (decl) is error_mark_node.
27028
27029         PR c++/34914
27030         * c-common.c (handle_vector_size_attribute): Only allow
27031         integral, scalar float and fixed point types.  Handle OFFSET_TYPE
27032         the same way as pointer, array etc. types.
27033         * tree.c (reconstruct_complex_type): Handle OFFSET_TYPE.
27034
27035         PR c++/34917
27036         * tree.c (build_type_attribute_qual_variant): Call
27037         build_qualified_type if attributes are equal, but quals are not.
27038
27039 2008-01-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
27040
27041         PR 32102
27042         * doc/invoke.texi (-Wall): -Wall enables -Wstrict-overflow=1.
27043         * flags.h (warn_strict_aliasing): Remove.
27044         (warn_strict_overflow): Remove.
27045         * opts.c (warn_strict_aliasing): Remove.
27046         (warn_strict_overflow): Remove.
27047         * c-opts.c (c_common_handle_option): -Wall only sets
27048         -Wstrict-aliasing or -Wstrict-overflow if they are uninitialized.
27049         (c_common_post_options): Give default values to -Wstrict-aliasing
27050         and -Wstrict-overflow if they are uninitialized.
27051         * common.opt (Wstrict-aliasing): Specify Var and Init.
27052         (Wstrict-overflow): Likewise.
27053
27054 2008-01-22  Kenneth Zadeck  <zadeck@naturalbridge.com>
27055
27056         PR rtl-optimization/26854
27057         PR rtl-optimization/34400
27058         PR rtl-optimization/34884
27059         * ddg.c (create_ddg_dep_from_intra_loop_link): Use
27060         DF_RD->gen.
27061         * df.h (df_changeable_flags.DF_RD_NO_TRIM): Deleted
27062         (df_rd_bb_info.expanded_lr_out): Deleted
27063         * loop_invariant.c (find_defs): Deleted DF_RD_NO_TRIM flag.
27064         * loop_iv.c (iv_analysis_loop_init): Ditto.  * df-problems.c
27065         (df_rd_free_bb_info, df_rd_alloc, df_rd_confluence_n,
27066         df_rd_bb_local_compute, df_rd_transfer_function, df_rd_free):
27067         Removed code to allocate, initialize or free expanded_lr_out.
27068         (df_rd_bb_local_compute_process_def): Restructured to make more
27069         understandable.
27070         (df_rd_confluence_n): Removed code to no apply invalidate_by_call
27071         sets if the sets are being trimmed.
27072
27073 2008-01-22  H.J. Lu  <hongjiu.lu@intel.com>
27074
27075         PR bootstrap/32287
27076         * configure.ac (ld_vers): Support GNU linker version xx.xx.*
27077         (as_vers): Likewise.
27078         * configure: Regenerated.
27079
27080 2008-01-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
27081
27082         PR middle-end/33092
27083         * tree-pass.h (pass_build_alias): New pass.
27084         * tree-ssa-alias.c (gate_build_alias): New.
27085         (pass_build_alias): New.
27086         * passes.c (init_optimization_passes): Add pass_build_alias after
27087         pass_create_structure_vars.
27088
27089 2008-01-22  Wolfgang Gellerich  <gellerich@de.ibm.com>
27090
27091         * config/s390/s390.h (S390_TDC_POSITIVE_NORMALIZED_NUMBER):
27092         Renamed to S390_TDC_POSITIVE_NORMALIZED_BFP_NUMBER.
27093         (S390_TDC_NEGATIVE_NORMALIZED_NUMBER): Renamed to
27094         S390_TDC_NEGATIVE_NORMALIZED_BFP_NUMBER.
27095         (S390_TDC_POSITIVE_DENORMALIZED_NUMBER): Renamed to
27096         S390_TDC_POSITIVE_DENORMALIZED_BFP_NUMBER.
27097         (S390_TDC_NEGATIVE_DENORMALIZED_NUMBER): Renamed to
27098         S390_TDC_NEGATIVE_DENORMALIZED_BFP_NUMBER.
27099         (S390_TDC_POSITIVE_NORMALIZED_BFP_NUMBER): New constant.
27100         (S390_TDC_NEGATIVE_NORMALIZED_BFP_NUMBER): New constant.
27101         (S390_TDC_POSITIVE_DENORMALIZED_BFP_NUMBER): New constant.
27102         (S390_TDC_NEGATIVE_DENORMALIZED_BFP_NUMBER): New constant.
27103         * config/s390/s390.md (FP_ALL): New mode iterator.
27104         (_d): New mode attribute.
27105         ("*signbit<mode>2>"): Changed mode of first operand.
27106         ("isinf<mode>2"): Changed mode of first operand.
27107         ("*TDC_insn"): Adaptation for DFP modes.
27108
27109 2008-01-22  Ben Elliston  <bje@au.ibm.com>
27110
27111         * tree.c (check_qualified_type): Improve function description.
27112
27113 2008-01-21  Jason Merrill  <jason@redhat.com>
27114
27115         PR c++/34196
27116         * tree.h (TRY_CATCH_IS_CLEANUP): New macro.
27117         * tree-eh.c (honor_protect_cleanup_actions): Strip TRY_CATCH_EXPR
27118         if it is set.
27119
27120 2008-01-21  DJ Delorie  <dj@redhat.com>
27121
27122         * doc/tm.texi (HARD_REGNO_NREGS): Note that this macro must not
27123         return zero.
27124
27125 2008-01-21  Richard Guenther  <rguenther@suse.de>
27126
27127         PR middle-end/34856
27128         * tree-cfg.c (verify_expr): Allow all invariant expressions
27129         instead of just constant class ones as reference argument.
27130         * tree-ssa-loop-im.c (for_each_index): Handle CONSTRUCTOR
27131         like any other constant.
27132         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise.
27133
27134 2008-01-21  H.J. Lu  <hongjiu.lu@intel.com>
27135
27136         * regmove.c (fixup_match_1): Update call crossed frequencies.
27137
27138 2008-01-21  Richard Guenther  <rguenther@suse.de>
27139
27140         PR c/34885
27141         * tree-inline.c (setup_one_parameter): Deal with mismatched
27142         types using a VIEW_CONVERT_EXPR.
27143
27144 2008-01-21  Alon Dayan  <alond@il.ibm.com>
27145             Olga Golovanevsky  <olga@il.ibm.com>
27146
27147         PR tree-optimization/34701
27148         * ipa-struct-reorg.c (gen_size): Fix the malloc parameter calculation
27149         when the structure size is not a power of 2.
27150
27151 2008-01-20  Kenneth Zadeck  <zadeck@naturalbridge.com>
27152
27153         * doc/install.texi: Add doc for --enable-checking=df.
27154
27155 2008-01-20  Kaz Kojima  <kkojima@gcc.gnu.org>
27156
27157         PR rtl-optimization/34808
27158         * emit-rtl.c (try_split): Handle REG_RETVAL notes.
27159
27160 2008-01-20  Richard Sandiford  <rsandifo@nildram.co.uk>
27161
27162         * global.c (find_reg): Only compute EH_RETURN_DATA_REGNO once per
27163         input.
27164
27165 2008-01-19  Kenneth Zadeck  <zadeck@naturalbridge.com>
27166
27167         PR rtl-optimization/26854
27168         PR rtl-optimization/34400
27169         * ddg.c (create_ddg_dep_from_intra_loop_link): Do not use
27170         DF_RD->gen.
27171         * df.h (df_changeable_flags.DF_RD_NO_TRIM): New.
27172         (df_rd_bb_info.expanded_lr_out): New.
27173         * loop_invariant.c (find_defs): Added DF_RD_NO_TRIM flag.
27174         * loop_iv.c (iv_analysis_loop_init): Ditto.
27175         * df-problems.c (df_rd_free_bb_info, df_rd_alloc, df_rd_confluence_n,
27176         df_rd_bb_local_compute, df_rd_transfer_function, df_rd_free):
27177         Added code to allocate, initialize or free expanded_lr_out.
27178         (df_rd_bb_local_compute_process_def): Restructured to make
27179         more understandable.
27180         (df_rd_confluence_n): Add code to do nothing with fake edges and
27181         code to no apply invalidate_by_call sets if the sets are being trimmed.
27182         (df_lr_local_finalize): Renamed to df_lr_finalize.
27183         (df_live_local_finalize): Renamed to df_live_finalize.
27184
27185 2008-01-20  Richard Sandiford  <rsandifo@nildram.co.uk>
27186
27187         PR target/34831
27188         * config/mips/mips.md (div<mode>3): Use <recip_condition> when
27189         deciding whether to use reciprocal instructions.
27190
27191 2008-01-19  Uros Bizjak  <ubizjak@gmail.com>
27192
27193         * dwarf2out.c (dwarf2out_switch_text_section): Do not call
27194         dwarf2out_note_section_used if cold_text_section is NULL.
27195
27196 2008-01-19  Jakub Jelinek  <jakub@redhat.com>
27197
27198         PR gcov-profile/34610
27199         * tree-cfg.c (make_edges): Mark both outgoing edges from
27200         OMP_CONTINUE and from OMP_FOR as EDGE_ABNORMAL.
27201         * omp-low.c (expand_omp_for): Clear EDGE_ABNORMAL bits
27202         from OMP_FOR and OMP_CONTINUE outgoing edges.
27203
27204         * tree-profile.c (tree_profiling): Return early if
27205         cfun->after_tree_profile != 0.  Set cfun->after_tree_profile
27206         at the end.
27207         * omp-low.c (expand_omp_parallel): Copy after_tree_profile
27208         from cfun to child_cfun.
27209         * function.h (struct function): Add after_tree_profile bit.
27210
27211 2008-01-19 Anatoly Sokolov <aesok@post.ru>
27212
27213         * config/avr/avr.S (_exit): Disable interrupt.
27214
27215 2008-01-18  Kenneth Zadeck  <zadeck@naturalbridge.com>
27216             Steven Bosscher  <stevenb.gcc@gmail.com>
27217
27218         PR rtl-optimization/26854
27219         PR rtl-optimization/34400
27220         * df-problems.c (df_live_scratch): New scratch bitmap.
27221         (df_live_alloc): Allocate df_live_scratch when doing df_live.
27222         (df_live_reset): Clear the proper bitmaps.
27223         (df_live_bb_local_compute): Only process the artificial defs once
27224         since the order is not important.
27225         (df_live_init): Init the df_live sets only with the variables
27226         found live by df_lr.
27227         (df_live_transfer_function): Use the df_lr sets to prune the
27228         df_live sets as they are being computed.
27229         (df_live_free): Free df_live_scratch.
27230
27231 2008-01-18  Ian Lance Taylor  <iant@google.com>
27232
27233         * common.opt: Add fmerge-debug-strings.
27234         * dwarf2out.c (DEBUG_STR_SECTION_FLAGS): Test
27235         flag_merge_debug_strings rather than flag_merge_constants.
27236         * doc/invoke.texi (Option Summary): Mention
27237         -fmerge-debug-strings.
27238         (Debugging Options): Document -fmerge-debug-strings.
27239
27240 2008-01-18  Ian Lance Taylor  <iant@google.com>
27241
27242         PR c++/33407
27243         * tree.h (DECL_IS_OPERATOR_NEW): Define.
27244         (struct tree_function_decl): Add new field operator_new_flag.
27245         * tree-inline.c (expand_call_inline): When inlining a call to
27246         operator new, force the return value to go into a variable, and
27247         set DECL_NO_TBAA_P on that variable.
27248         * c-decl.c (merge_decls): Merge DECL_IS_OPERATOR_NEW flag.
27249
27250 2008-01-18  Uros Bizjak  <ubizjak@gmail.com>
27251
27252         PR debug/34484
27253         * dwarf2out.c (dwarf2out_switch_text_section): Do not guard with
27254         DWARF2_DEBUGGING_INFO.
27255         (dwarf2out_note_section_used): Ditto.  Add prototype.
27256         (have_multiple_function_sections, text_section_used,
27257         cold_text_section_used, *cold_text_sections): Move declarations
27258         before their uses.
27259
27260 2008-01-17  Bob Wilson  <bob.wilson@acm.org>
27261
27262         * config/xtensa/unwind-dw2-xtensa.h (_Unwind_FrameState): Remove pc
27263         field and add signal_ra.
27264         * config/xtensa/unwind-dw2-xtensa.c (uw_frame_state_for): Remove
27265         assignments to frame state pc.  Move end of stack check after
27266         MD_FALLBACK_FRAME_STATE_FOR.
27267         (uw_update_context_1): Use frame state signal_regs if set, instead
27268         of checking signal_frame flag.
27269         (uw_update_context): Use frame state signal_ra if set.
27270         * config/xtensa/linux.h (MD_UNWIND_SUPPORT): Define.
27271         * config/xtensa/linux-unwind.h: New file.
27272
27273 2008-01-18  Bernhard Fischer  <aldot@gcc.gnu.org>
27274
27275         * modulo-sched.c (get_sched_window): Fix comment typo.
27276
27277 2008-01-17  Andrew MacLeod  <amacleod@redhat.com>
27278
27279         PR tree-optimization/34648
27280         * tree-ssa-sccvn.c (visit_use): Expressions which can throw are varying.
27281
27282 2008-01-17  Anatoly Sokolov <aesok@post.ru>
27283
27284         * config/avr/avr.h (LINK_SPEC): Support -mrelax and -mpmem-wrap-around.
27285         * config/avr/avr.opt (mrelax, mpmem-wrap-around): Add.
27286
27287 2008-01-17  Seongbae Park  <seongbae.park@gmail.com>
27288
27289         PR rtl-optimization/34400
27290         * df-core.c (df_worklist_dataflow_overeager,
27291         df_worklist_dataflow_doublequeue): New functions.
27292         (df_worklist_dataflow): Two different worklist solvers.
27293         * params.def (PARAM_DF_DOUBLE_QUEUE_THRESHOLD_FACTOR):
27294         New param.
27295
27296 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
27297
27298         PR testsuite/34821
27299         * doc/invoke.texi: Document the dependence on pthread for fopenmp
27300         and ftree-parallelize-loops.
27301
27302 2008-01-17  Mircea Namolaru  <namolaru@il.ibm.com>
27303
27304         PR rtl-optimization/34826
27305         * loop-doloop (doloop_modify): Update the REG_BR_PROB note.
27306
27307 2008-01-17  Andreas Krebbel  <krebbel1@de.ibm.com>
27308
27309         * global.c (find_reg): Mark the eh regs as used if necessary.
27310         * ra-conflict.c (global_conflicts): Set no_eh_reg flag.
27311         * ra.h (struct allocno): no_eh_reg field added.  Changed
27312         no_stack_reg type to bitfield.
27313
27314 2008-01-17  Eric Botcazou  <ebotcazou@adacore.com>
27315
27316         * tree.c (substitute_in_expr): Add missing 'break'.
27317
27318 2008-01-17  Richard Guenther  <rguenther@suse.de>
27319
27320         PR tree-optimization/34825
27321         * tree-ssa-math-opts.c (is_division_by): Do not recognize
27322         x / x as division to handle.
27323
27324 2008-01-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
27325
27326         * pa64-hpux.h (LIB_SPEC): Add "-lpthread" in shared links if "-mt" or
27327         "-pthread" is specified.
27328         * pa-hpux11.h (LIB_SPEC): Likewise.
27329
27330 2008-01-16  Janis Johnson  <janis187@us.ibm.com>
27331             Peter Bergner  <bergner@vnet.ibm.com>
27332
27333         PR rtl-optimization/33796
27334         * sparseset.c (sparseset_alloc): Use xcalloc rather than xmalloc.
27335
27336 2008-01-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
27337
27338         PR libgfortran/34699
27339         * pa-hpux.h (LINK_SPEC): Only search /lib/pa1.1 and /usr/lib/pa1.1 on
27340         static links.
27341         * pa-hpux10.h (LINK_SPEC): Likewise.
27342         * pa-hpux11.h (LINK_SPEC): Don't search /lib/pa1.1 and /usr/lib/pa1.1.
27343
27344 2008-01-16  Richard Guenther  <rguenther@suse.de>
27345
27346         PR middle-end/32628
27347         * fold-const.c (fold_convert_const_int_from_int): Do not
27348         set overflow if that occured only because of a sign extension
27349         change when converting from/to a sizetype with the same
27350         precision and signedness.
27351
27352 2008-01-16  Uros Bizjak  <ubizjak@gmail.com>
27353
27354         PR debug/34249
27355         * dwarf2out.c (output_call_frame_info): Move output of FDE initial
27356         location address to the correct place.  Update copyright year.
27357
27358 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
27359
27360         * lambda-code.c (lambda_transform_legal_p): Handle the case of
27361         no dependences in the dependence_relations vector.
27362
27363 2008-01-16  Jan Hubicka  <jh@suse.cz>
27364
27365         PR rtl-optimization/31396
27366         * regstat.c (regstat_bb_compute_ri): Compute FREQ_CALLS_CROSSED.
27367         * cfg.c (dump_reg_info): Print it.
27368         * regs.h (struct reg_info_t): add freq_calls_crossed.
27369         (REG_FREQ_CALLS_CROSSED): New macro.
27370         * global.c (global_alloc): Compute freq_calls_crossed for allocno.
27371         (find_reg): Update call of CALLER_SAVE_PROFITABLE.
27372         * regmove.c (optimize_reg_copy_1, optimize_reg_copy_2, fixup_match_2,
27373         regmove_optimize): Update call crossed frequencies.
27374         * local-alloc.c (struct qty): Add freq_calls_crossed.
27375         (alloc_qty): Copute freq_calls_crossed.
27376         (update_equiv_regs, combine_regs): Update REG_FREQ_CALLS_CROSSED.
27377         (find_free_reg): Update call of CALLER_SAVE_PROFITABLE.
27378         * ra.h (struct allocno): Add freq_calls_crossed.
27379
27380 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
27381
27382         * gcc.c (LINK_COMMAND_SPEC): Add includes and link options for
27383         libgomp when compiling with ftree-parallelize-loops.
27384         (GOMP_SELF_SPECS): Add -pthread for ftree-parallelize-loops.
27385
27386 2008-01-16  Richard Guenther  <rguenther@suse.de>
27387
27388         PR tree-optimization/34769
27389         * tree-data-ref.c (initialize_matrix_A): Revert fix for PR34458.
27390         * tree.c (int_cst_value): Instead make this function more
27391         permissive in what it accepts as valid input.  Document this
27392         function always sign-extends the value.
27393
27394 2008-01-16  Jakub Jelinek  <jakub@redhat.com>
27395             Richard Guenther  <rguenther@suse.de>
27396
27397         PR c/34668
27398         * gimplify.c (fold_indirect_ref_rhs): Rename to ...
27399         (gimple_fold_indirect_ref_rhs): ... this.
27400         (gimple_fold_indirect_ref): New function with foldings
27401         that preserve lvalueness.
27402         (gimplify_modify_expr_rhs): Call gimple_fold_indirect_ref_rhs.
27403         * tree-flow.h (gimple_fold_indirect_ref): Declare.
27404         * tree-inline.c (copy_body_r): Use gimple_fold_indirect_ref
27405         to fold an INDIRECT_REF, fall back to the old use of
27406         fold_indirect_ref_1.
27407
27408 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
27409
27410         * tree-data-ref.c (subscript_dependence_tester_1): Call
27411         free_conflict_function.
27412         (compute_self_dependence): Same.
27413
27414 2008-01-16  Uros Bizjak  <ubizjak@gmail.com>
27415
27416         PR debug/34249
27417         * debug.h (dwarf2out_switch_text_section): Move declaration from ...
27418         * dwarf2out.c (dwarf2out_switch_text_section): ... here.  Make
27419         function global.
27420         * final.c (final_scan_insn) [NOTE_INSN_SWITCH_TEXT_SECTIONS]:
27421         Depending on dwarf2out_do_frame, call dwarf2out_switch_text_section
27422         for DWARF2_UNWIND_INFO targets.
27423
27424 2008-01-16  Richard Guenther  <rguenther@suse.de>
27425
27426         PR c/34768
27427         * c-typeck.c (common_pointer_type): Do not merge inconsistent
27428         type qualifiers for function types.
27429
27430 2008-01-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
27431
27432         * tree-parloops.c (gen_parallel_loop): Fix ommision of declaration for
27433         loop_iterator li from previous commit.
27434
27435 2008-01-15  Sebastian Pop  <sebastian.pop@amd.com>
27436
27437         * tree-parloops.c (gen_parallel_loop): Free loop bound estimations.
27438
27439 2008-01-12  Sebastian Pop  <sebastian.pop@amd.com>
27440
27441         * tree-parloops.c (loop_has_blocks_with_irreducible_flag): New.
27442         (parallelize_loops): Don't parallelize irreducible components.
27443
27444 2008-01-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
27445
27446         PR c++/24924
27447         * c-opts (c_common_post_options): Do not enable CPP
27448         flag_pedantic_errors by default.
27449
27450 2008-01-14  Eric Botcazou  <ebotcazou@adacore.com>
27451
27452         PR rtl-optimization/31944
27453         * cse.c (remove_pseudo_from_table): New function.
27454         (merge_equiv_classes): Use above function to remove pseudo-registers.
27455         (invalidate): Likewise.
27456
27457 2008-01-13  Richard Guenther  <rguenther@suse.de>
27458
27459         PR middle-end/34601
27460         * emit-rtl.c (set_reg_attrs_for_decl_rtl): Use DECL_MODE
27461         instead of TYPE_MODE to deal with calls from expand_one_error_var.
27462
27463 2008-01-13  Uros Bizjak  <ubizjak@gmail.com>
27464
27465         * gcse.c (cprop_jump): Call validate_unshare_change instead of
27466         validate_change to unshare the source of the PC set.
27467
27468 2008-01-12  Jan Hubicka  <jh@suse.cz>
27469
27470         PR middle-end/32135
27471         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Do not construct
27472         references above array bounds.  This might trigger bounds checks for
27473         pointers to arrays.
27474
27475 2008-01-12  Sebastian Pop  <sebastian.pop@amd.com>
27476
27477         * tree-ssa-ter.c (free_temp_expr_table): Free num_in_part and
27478         new_replaceable_dependencies.
27479
27480 2008-01-12  Doug Kwan  <dougkwan@google.com>
27481
27482         * c-decl.c: (grokdeclarator): Use OPT_Wignored_qualifiers
27483         instead of OPT_Wreturn_type in warning due to ignored return type
27484         qualifiers.
27485         * c-opt.c (c_common_post_option): Add -Wignored-qualifiers to
27486         options included in -Wextra.
27487         * c.opt: New option -Wignored_qualifiers.
27488         * doc/invoke.texi (Warning Options, -Wextra): Add new option
27489         -Wignore_qualifiers.
27490         (-Wignored-qualifiers): Document.
27491         (-Wreturn-type): Remove description of functionality now handled
27492         by -Wignored-qualifiers.
27493
27494 2008-01-12  Eric Botcazou  <ebotcazou@adacore.com>
27495
27496         PR ada/33788
27497         * fold-const.c (fold_unary) <VIEW_CONVERT_EXPR>: Fold an existing
27498         NOP_EXPR if it is between integral types with the same precision.
27499
27500 2008-01-12  Jan Hubicka  <jh@suse.cz>
27501
27502         PR other/28023
27503         * invoke.texi (max-inline-recursive-depth): Fix default value.
27504
27505 2008-01-12  Zdenek Dvorak  <ook@ucw.cz>
27506
27507         * tree-parloops.c (transform_to_exit_first_loop): Cast nit to the
27508         correct type.
27509
27510 2008-01-11  Bob Wilson  <bob.wilson@acm.org>
27511
27512         * config/xtensa/xtensa.c (override_options): Set flag_shlib.
27513
27514 2008-01-11  James E. Wilson  <wilson@specifix.com>
27515
27516         PR target/26015
27517         * config/vax/elf.h (FRAME_POINTER_CFA_OFFSET): Define.
27518
27519 2008-01-11  Anatoly Sokolov <aesok@post.ru>
27520
27521         * config/avr/avr.c (expand_prologue, expand_epilogue): Don't
27522         save/restore frame pointer register and don't use 'call-prologues'
27523         optimization in function with "OS_task" attribute.
27524
27525 2008-01-11  Eric Botcazou  <ebotcazou@adacore.com>
27526
27527         PR middle-end/31309
27528         * expr.c (copy_blkmode_from_reg): Use a mode suited to the size
27529         when copying to memory.
27530
27531 2008-01-11  Steven Bosscher  <stevenb.gcc@gmail.com>
27532
27533         PR rtl-optimization/30905
27534         * cfgcleanup.c: Include dce.h
27535         (crossjumps_occured): New global variable.
27536         (try_crossjump_bb): Exit loop after finding a fallthru edge.
27537         If something changed, set crossjumps_occured to true.
27538         (try_optimize_cfg): Clear crossjumps_occured at the beginning.
27539         Don't add/remove fake edges to exit here...
27540         (cleanup_cfg): ...but do it here, when crossjumping.
27541         Run a fast DCE when successful crossjumps occured in the latest
27542         iteration of try_optimize_cfg.
27543
27544 2008-01-11  Richard Guenther  <rguenther@suse.de>
27545
27546         * tree-ssa-sccvn.c (struct vn_binary_op_s): Move hashcode near opcode.
27547         (struct vn_unary_op_s): Likewise.
27548         (vn_reference_insert): Free old reference on hash collision.
27549
27550 2008-01-10  Raksit Ashok  <raksit@google.com>
27551
27552         PR rtl-optimization/27971
27553         * combine.c (find_split_point): Split PLUS expressions which are
27554         inside a MEM rtx, and whose first operand is complex.
27555
27556 2008-01-10  DJ Delorie  <dj@redhat.com>
27557
27558         * config/m32c/m32c.c (m32c_hard_regno_nregs_1): Renamed from...
27559         (m32c_hard_regno_nregs): ...this, which is now a wrapper.
27560         (m32c_hard_regno_ok): Call the underlying function.
27561
27562 2008-01-10  Richard Guenther  <rguenther@suse.de>
27563
27564         PR middle-end/34683
27565         * tree-cfg.c (tree_merge_blocks): Do not go through the
27566         full-blown folding and stmt updating path if we just deal
27567         with virtual operands.
27568         * tree-ssa-copy.c (may_propagate_copy): Do not short-cut
27569         test for abnormal SSA_NAMEs.
27570
27571 2008-01-10  Andreas Krebbel  <krebbel1@de.ibm.com>
27572
27573         PR middle-end/34641
27574         * reload.c (push_reload): Add assertions.  All constants from
27575         reg_equiv_constant should have been used for replacing the respective
27576         pseudo earlier.
27577         (find_reloads_address): Invoke find_reloads_address_part for
27578         constant taken from the reg_equiv_constant array.
27579
27580 2008-01-10  Steven Bosscher  <stevenb.gcc@gmail.com>
27581
27582         * tree-ssa-sccvn.h (struct vn_ssa_aux): Make the most accessed
27583         field (valnum) the first in the struct.  Replace bools with
27584         unit bit fields.
27585
27586 2008-01-10  Richard Guenther  <rguenther@suse.de>
27587
27588         PR tree-optimization/34651
27589         * tree-sra.c (sra_build_assignment): Sanitize.  Use the correct
27590         types and ordering for masking and converting.
27591
27592 2008-01-09  Sebastian Pop  <sebastian.pop@amd.com>
27593
27594         PR tree-optimization/34017
27595         * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Generate code
27596         also for PHI_NODE expressions.
27597
27598 2008-01-09  Jan Hubicka  <jh@suse.cz>
27599
27600         PR tree-optimization/34708
27601         * tree-inline.c (estimate_num_insns_1): Compute cost of SWITCH_EXPR
27602         based on number of case labels.
27603         (init_inline_once): Remove switch_cost.
27604         * tree-inline.h (eni_weights_d): Remove switch_cost.
27605
27606 2008-01-09  Richard Guenther  <rguenther@suse.de>
27607         Andrew Pinski  <andrew_pinski@playstation.sony.com>
27608
27609         PR middle-end/30132
27610         * gimplify.c (gimplify_cond_expr): Do not create an addressable
27611         temporary if an rvalue is ok or an lvalue is not required.
27612
27613 2008-01-09  Richard Guenther  <rguenther@suse.de>
27614
27615         PR middle-end/34458
27616         * tree-data-ref.c (initialize_matrix_A): Use tree_low_cst,
27617         adjust return type.
27618
27619 2008-01-09  Richard Guenther  <rguenther@suse.de>
27620
27621         PR middle-end/34679
27622         * tree.c (host_integerp): Check for sizetype only if the
27623         type is an integer type.
27624
27625 2008-01-09  Steven Bosscher  <stevenb.gcc@gmail.com>
27626
27627         PR debug/26364
27628         * opts.c (decode_options): Disable inlining of functions called
27629         once if not in unit-at-a-time mode.
27630
27631 2008-01-09  Alexandre Oliva  <aoliva@redhat.com>
27632
27633         * Makefile.in (dse.o): Remove duplicate $(RECOG_H) dependency.
27634
27635 2008-01-08  Richard Guenther  <rguenther@suse.de>
27636
27637         PR middle-end/31863
27638         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Bail
27639         out early if the result will be unused.
27640
27641 2008-01-08  Uros Bizjak  <ubizjak@gmail.com>
27642
27643         PR target/34709
27644         Revert:
27645
27646         2008-01-05  Uros Bizjak  <ubizjak@gmail.com>
27647         * config/i386/i386.c (ix86_builtin_reciprocal): Remove check
27648         for TARGET_RECIP.
27649
27650 2008-01-08  Jan Sjodin  <jan.sjodin@amd.com>
27651
27652         * config/i386/i386.c (k8_cost, amdfam10_cost): Branch costs
27653         for vectorization tuned.
27654
27655 2008-01-08  Richard Guenther  <rguenther@suse.de>
27656
27657         PR tree-optimization/34683
27658         * tree-ssa-operands.c (operand_build_cmp): Export.
27659         * tree-ssa-operands.h (operand_build_cmp): Declare.
27660         * tree-vn.c (vuses_compare): Remove.
27661         (sort_vuses): Use operand_build_cmp.
27662         (sort_vuses_heap): Likewise.
27663         * tree-ssa-sccvn.c (vuses_to_vec): Use VEC_reserve, not VEC_alloc
27664         to re-use old VEC if available.  Do not sort already sorted VUSEs.
27665         (vdefs_to_vec): Do not sort already sorted VDEFs.
27666
27667 2008-01-08  Jakub Jelinek  <jakub@redhat.com>
27668
27669         PR middle-end/34694
27670         * omp-low.c (copy_var_decl): Copy also DECL_SOURCE_LOCATION.
27671
27672 2008-01-08  Uros Bizjak  <ubizjak@gmail.com>
27673
27674         PR target/34702
27675         * doc/invoke.texi (i386 and x86-64 Options) [mrecip]: Document
27676         limitations of reciprocal sequences on x86 targets.
27677
27678 2008-01-08  Richard Guenther  <rguenther@suse.de>
27679
27680         PR tree-optimization/34683
27681         * tree-flow-inline.h (var_ann): Remove overzealous asserts.
27682
27683 2008-01-07  Jakub Jelinek  <jakub@redhat.com>
27684
27685         PR target/34622
27686         * config/darwin.c (darwin_mergeable_string_section): Don't use
27687         .cstring if int_size_in_bytes != TREE_STRING_LENGTH.
27688
27689 2008-01-07  Uros Bizjak  <ubizjak@gmail.com>
27690
27691         PR target/34682
27692         * config/i386/i386.md (neg<mode>2): Rename from negsf2, negdf2 and
27693         negxf2.  Macroize expander using X87MODEF mode iterator.  Change
27694         predicates of op0 and op1 to register_operand.
27695         (abs<mode>2): Rename from abssf2, absdf2 and negxf2.  Macroize
27696         expander using X87MODEF mode iterator.  Change predicates of
27697         op0 and op1 to register_operand.
27698         ("*absneg<mode>2_mixed", "*absneg<mode>2_sse"): Rename from
27699         corresponding patterns and macroize using MODEF macro.  Change
27700         predicates of op0 and op1 to register_operand and remove
27701         "m" constraint. Disparage "r" alternative with "!".
27702         ("*absneg<mode>2_i387"): Rename from corresponding patterns and
27703         macroize using X87MODEF macro.  Change predicates of op0 and op1
27704         to register_operand and remove "m" constraint.  Disparage "r"
27705         alternative with "!".
27706         (absneg splitter with memory operands): Remove.
27707         ("*neg<mode>2_1", "*abs<mode>2_1"): Rename from corresponding
27708         patterns and macroize using X87MODEF mode iterator.
27709         * config/i386/sse.md (negv4sf2, absv4sf2, neg2vdf2, absv2df2):
27710         Change predicate of op1 to register_operand.
27711         * config/i386/i386.c (ix86_expand_fp_absneg_operator): Remove support
27712         for memory operands.
27713
27714 2008-01-07  Nathan Froyd  <froydnj@codesourcery.com>
27715
27716         * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add clause for mcpu=8548.
27717
27718 2008-01-07  Richard Guenther  <rguenther@suse.de>
27719
27720         * basic-block.h (struct edge_def): Pair dest_idx with goto_locus
27721         fields.
27722
27723 2008-01-07  Richard Guenther  <rguenther@suse.de>
27724
27725         PR tree-optimization/34683
27726         * tree-ssa-sccvn.c (vuses_to_vec): Pre-allocate the vector of
27727         VOPs of the needed size to save memory.  Use VEC_quick_push
27728         to save compile-time.
27729         (vdefs_to_vec): Likewise.
27730
27731 2008-01-07  Sa Liu  <saliu@de.ibm.com>
27732
27733         * config/spu/spu.md (divdf3): Genetate inline code for double
27734         division.  The implementation doesn't handle INF or NAN, therefore it
27735         only applies when -ffinite-math-only is given.
27736
27737 2008-01-06  Paolo Carlini  <pcarlini@suse.de>
27738
27739         PR libstdc++/34680
27740         * c-cppbuiltin.c (c_cpp_builtins): Define __GXX_RTTI, if appropriate.
27741         * doc/cpp.texi ([Common Predefined Macros]): Document.
27742
27743 2008-01-06  Uros Bizjak  <ubizjak@gmail.com>
27744
27745         * config/i386/i386.c (ix86_emit_swsqrtsf): Use negative constants in
27746         order to use commutative addition instead of subtraction.
27747
27748 2008-01-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
27749             Mircea Namolaru  <namolaru@il.ibm.com>
27750             Vladimir Yanovsky  <yanov@il.ibm.com>
27751             Revital Eres  <eres@il.ibm.com>
27752
27753         PR tree-optimization/34263
27754         * tree-outof-ssa.c (process_single_block_loop_latch,
27755         contains_tree_r): New functions.
27756         (analyze_edges_for_bb): Call process_single_block_loop_latch
27757         function to empty single-basic-block latch block if possible.
27758
27759 2008-01-05  Uros Bizjak  <ubizjak@gmail.com>
27760
27761         * config/i386/i386.c (ix86_builtin_reciprocal): Remove check
27762         for TARGET_RECIP.
27763         (ix86_emit_swsqrtsf): Do not filter out infinity for rsqrt expansion.
27764
27765 2008-01-05  Richard Sandiford  <rsandifo@nildram.co.uk>
27766
27767         * c-omp.c (check_omp_for_incr_expr): Handle CONVERT_EXPR.
27768
27769 2008-01-05  Richard Sandiford  <rsandifo@nildram.co.uk>
27770
27771         * config/mips/mips.c (mips_in_small_data_p): Reinstate size > 0 check.
27772
27773 2008-01-05  Jakub Jelinek  <jakub@redhat.com>
27774
27775         PR tree-optimization/34618
27776         * tree-outof-ssa.c (create_temp): Copy over DECL_GIMPLE_REG_P
27777         flag from T.
27778
27779 2008-01-05  Uros Bizjak  <ubizjak@gmail.com>
27780
27781         PR target/34673
27782         * config/i386/i386.c (ix86_emit_swsqrtsf): Swap input operands
27783         in the call to gen_rtx_NE.  Remove unneeded VECTOR_MODE_P check.
27784         Update copyright year.
27785
27786         * config/i386/i386.md (rsqrtsf2): Enable for TARGET_SSE_MATH.
27787         Update copyright year.
27788         * config/i386/sse.md (rsqrtv4sf2): Ditto. Unconditionally expand
27789         using NR fixup.
27790
27791 2008-01-05  Zhouyi Zhou  <zhouzhouyi@FreeBSD.org>
27792
27793         * tree-vrp.c (find_conditional_asserts): Remove redundant check that
27794         edge does not point to current bb before changing need_assert.
27795
27796 2008-01-04  Richard Guenther  <rguenther@suse.de>
27797
27798         PR middle-end/34029
27799         * tree-cfg.c (verify_expr): Do not look inside ADDR_EXPRs
27800         for verifying purposes if they are is_gimple_min_invariant.
27801
27802 2008-01-04  Aldy Hernandez  <aldyh@redhat.com>
27803
27804         PR tree-optimization/34448
27805         PR tree-optimization/34465
27806         * gimplify.c (gimplify_init_constructor): Add new parameter
27807         notify_temp_creation.  Use it.
27808         (gimplify_modify_expr_rhs): Take volatiles into account when
27809         optimizing constructors.
27810         Do not optimize constructors if gimplify_init_constructor will dump to
27811         memory.
27812         * gcc.dg/tree-ssa/pr32901.c: Tests const volatiles.
27813         * gcc.c-torture/compile/pr34448.c: New.
27814
27815 2008-01-04  Jakub Jelinek  <jakub@redhat.com>
27816
27817         PR gcov-profile/34609
27818         * tree-inline.c (declare_return_variable): Set TREE_ADDRESSABLE on
27819         return_slot if result is TREE_ADDRESSABLE.
27820
27821 2008-01-04  Richard Sandiford  <rsandifo@nildram.co.uk>
27822
27823         * config/mips/mips.md (sqrt_condition): Tweak comment.
27824         (recip_condition): Likewise.  Require TARGET_FLOAT64 for DFmode.
27825
27826 2008-01-03  Tom Tromey  <tromey@redhat.com>
27827
27828         PR c/34457
27829         * c-common.c (c_type_hash): Handle VLAs.
27830
27831 2008-01-03  Jan Hubicka  <jh@suse.cz>
27832
27833         PR tree-optimization/31081
27834         * tree-inline.c (remap_ssa_name): Initialize uninitialized SSA vars to
27835         0 when inlining and not inlining to first basic block.
27836         (remap_decl): When var is initialized to 0, don't set default_def.
27837         (expand_call_inline): Set entry_bb.
27838         * tree-inline.h (copy_body_data): Add entry_bb.
27839
27840 2008-01-03  Jakub Jelinek  <jakub@redhat.com>
27841
27842         PR c++/34619
27843         * cgraphunit.c (cgraph_build_static_cdtor): set_cfun back to NULL
27844         before returning.
27845
27846         PR tree-optimization/29484
27847         * tree-inline.c (inline_forbidden_p_2): New function.
27848         (inline_forbidden_p): Disallow inlining if some static var
27849         has an address of a local LABEL_DECL in its initializer.
27850         * doc/extend.texi (Labels as Values): Document &&foo behaviour
27851         vs. inlining.
27852
27853 2008-01-03  Sebastian Pop  <sebastian.pop@amd.com>
27854
27855         PR tree-optimization/34635
27856         * tree-data-ref.c (add_other_self_distances): Make sure that the
27857         evolution step is constant.
27858
27859 2008-01-03  Jakub Jelinek  <jakub@redhat.com>
27860
27861         PR middle-end/34608
27862         * omp-low.c (expand_omp_parallel): Purge dead EH edges in the child fn.
27863
27864 2008-01-02  Richard Sandiford  <rsandifo@nildram.co.uk>
27865
27866         * tree-sra.c (scalarize_init): Insert the generate_element_init
27867         statements after the generate_element_zero statements.
27868
27869 2008-01-02  Richard Guenther  <rguenther@suse.de>
27870
27871         PR middle-end/34093
27872         PR middle-end/31976
27873         * tree-ssa-operands.c (ssa_operand_alloc): Also allocate a buffer
27874         for very large number of operands instead of ICEing.
27875
27876 2008-01-02  Arthur Norman <acn1@cam.ac.uk>
27877
27878         PR target/34013
27879         * config/i386/i386.c (ix86_expand_prologue): Save red-zone
27880         while stack probing.
27881
27882 2008-01-01  Douglas Gregor  <doug.gregor@gmail.com>
27883
27884         * c-opts.c (sanitize_cpp_opts): Don't warn about "long long" when
27885         in C++0x mode.
27886
27887 2008-01-01  Volker Reichelt  <v.reichelt@netcologne.de>
27888
27889         PR libmudflap/26442
27890         * tree-mudflap.c (mx_register_decls): Guard warning by
27891         !DECL_ARTIFICIAL check.
27892
27893 2008-01-01  Jakub Jelinek  <jakub@redhat.com>
27894
27895         * config/i386/sse.md (sse5_pperm, sse5_pperm_pack_v2di_v4si,
27896         sse5_pperm_pack_v4si_v8hi, sse5_pperm_pack_v8hi_v16qi,
27897         sse5_perm<mode>): Fix constraints.